Основные конструкции языка программирования
Мы уже затрагивали некоторые конструкции, когда изучали логические типы.
Наиболее распространенными конструкциями являются условия и циклы.
Циклы
Задача: необходимо вывести последовательность нечетных чисел: 1, 3, 5, 7, заканчивая на 99 (последнее число)
Давайте подумаем, как это можно сделать на Kotlin’е.
Сначала определимся с алгоритмом:
- Берем первое число 1
- Выводим число
- Берем следующее
- Проверяем, если число меньше 100, то возвращаемся на 2 шаг, в противном случае завершаем выполнение программы
// шаг первый: берем первое число var number = 1 while (number < 100) < // шаг четвертый: проверка // шаг второй: выводим число println(number + " ") // шаг третий: берем следующее number += 2 // >
Ничего страшного в этом нет, код на конкретном языке программирования может отличаться от алгоритма.
В данном случае мы используем конструкцию с while для которой нужно указывать условие в самом начале.
Та дам! Мы рассмотрели циклы!
Чтобы вам стало понятнее, давайте выведем ваше имя 1000 раз для простоты:
var number = 1 while (number
Можно еще проще написать с помощью конструкции for :
Условия
Задача следующая: У нас есть определенное количество денег, если денег больше 120 рублей мы купим шоколадку Milka иначе ничего покупать не будем
val money = 130 if (money > 120) < println("купить шоколадку Milka") >else
Запустите в Kotlin Playground или в IntelliJ IDEA:
Попробуйте поменять значение переменной money
Заключение
Как уже было отмечено, циклы и условия самые распространенные конструкции, которые вы будете часто использовать в программировании.
Если вы запутались и считаете, что все это слишком сложно, не огорчайтесь.
Попробуйте понять на следующем примере:
У нас есть мобильное приложение “список дел”.
Начнем с того, что пользователь может создать 5, 10 и больше элементов в списке и поэтому нам нужно использовать цикл, чтобы пройтись по всем элементам и вывести их на экран.
Далее, у нас могут быть два списка: в первом: текущие дела, во втором: уже выполненные, поэтому нам нужно добавить условия, которое будет проверять выполнено дело или нет.
Надеюсь, у вас появилась общая картина в голове.
- Цикл — повторение кода определенное количество раз, также бывают бесконечные циклы, которые никогда не завершаются
- Условие — выполнение кода в зависимости от определенного условия
Тема 6 Основные конструкции языков программирования
Синтаксис и семантика высокоуровневых языков программирования. Концепция типов данных. Константы и переменные, скалярные и составные типы данных, контроль типов и преобразование типов, операции.
Основная абстракция в структурном подходе – подпрограммы (процедуры и функции), построение и использование. Подпрограммы (описание и вызов). Подпрограммы без параметров. Способы обмена данными с подпрограммами. Параметры-значения, параметры-переменные. Передача в качестве параметра имени функции. Побочные эффекты при вызове функции.
Тема 7 Операторы языка программирования
Операторы: присваивание, ввод, вывод. Простейшие программы. Выражения в языке: арифметические и логические.
Организация повторений работы программы. Составной и условный операторы. Оператор выбора.
Простейшие циклы. Циклы с итерациями и циклы в циклах. Примеры использования языковых конструкций.
Тема 8 Структуры данных
Основные структуры данных: массивы, записи, строки и их представление данных в памяти. Основные классы памяти; управление динамической памятью. Представление и реализация списков, стеков, очередей, хеш-таблиц, графов и деревьев.
Организация работы с файлами. Определение и типы файлов. Встроенные языковые средства для работы с файлами разных типов. Последовательный и прямой доступ к компонентам файлов.
Раздел 3 Алгоритмические методы решения вычислительных задач
Тема 9 Алгоритмическое решение задач сортировки
Организация сортировки в динамических структурах данных. Способы сортировки на разных расстояниях и в разных направлениях: быстрая сортировка, шейкер-сортировка. Поразрядная сортировка.
Тема 10 Алгоритмическое решение задач поиска
Задача поиска в больших массивах данных. Последовательный, ускоренный поиск, метод транспозиции. Хеш-функция. Организация таблиц методом хеширования. Редактирование хеш-таблиц.
Лабораторная работа № 3: Разработка алгоритмов и программ сортировки и поиска данных
Тема 11 Программирование рекурсивных алгоритмов
Понятие рекурсии. Виды рекурсии (прямая и косвенная). Механизм рекурсии. Использование рекурсии для записи решений. Древовидные структуры. Бинарное дерево. Правила обходов деревьев: инфиксная форма, префиксная форма, постфиксная форма. Особенности использования рекурсии для построения дерева. Сортировка и поиск с помощью дерева.
Тема 12 Объектно-ориентированное программирование
Объектно-ориентированная разработка; инкапсуляция и информационное упрятывание; отделение описания интерфейса от реализации; классы, подклассы и наследование; полиморфизм; иерархия классов; пакеты классов и протоколы взаимодействия; программирование на основе шаблонов.
Лабораторная работа № 4: Объектно-ориентированная методология разработки программ
Тема 13 Событийно-управляемое, параллельное и распределенное программирование
Методы обработки и распространение событий; управление параллелизмом с помощью механизма обработки событий; обработка исключений. Методы программирования сетевых приложений.
1.5 Темы практических занятий
Выполнение практических работ программой курса не предусмотрено.
1.6 Темы лабораторных работ
Лабораторные работы предназначены для приобретения практических навыков в работе по разработке алгоритмов и программ.
Цель и содержание лабораторной работы
Лабораторная работа № 1: Проектирование базовых структур алгоритмов
Разработка блок-схем решения различных задач
Блок схемы. Практические навыки разработки алгоритмов. Отчет.
Лабораторная работа № 2: Освоение средств разработки программ
Изучение основных методов и инструментов разработки программного обеспечения.
Практические навыки разработки программ. Отчет.
Лабораторная работа № 3: Разработка алгоритмов и программ сортировки и поиска данных
Изучение алгоритмов сортировки и поиска данных.
Блок-схемы. Тексты программ. Практические навыки. Отчет.
Лабораторная работа № 4: Объектно-ориентированная методология разработки программ
Изучение основ объектно-оринтированной разработки программного обеспечения
Тексты программ. Практические навыки. Отчет.
Для выполнения лабораторных работ предусмотрены Методические указания к лабораторным работам по дисциплине «Программирование и основы алгоритмов»
1. Классификация и обзор языков программирования.
Язык программирования— формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнения.
Классификация языков программирования: 1)Языки низкого уровня (машинно-ориентированные языки, в них входят машинные коды и язык Ассемблер) 2)Языки высокого уровня (алгоритмические языки, вместо команды ассемблера языки высокого уровня позволяют написать нормальное математическое выражение со знаком «+», например а=с-р
Каждый язык программирования предназначен для решения определенного класса задач:
Фортран — старейший язык программирования, предназначен для решения математических задач.Кобол – для решения экономических задач.Бейсик, Паскаль – для обучения Джава— язык сетевого программирования
Для системного программирования наиболее подходят языки С, С++ и Ассемблер. С и язык разработанный для написания операционной системы Юникс.
Системы программирования- это комплексы программ и прочих средств, предназначенных для разработки и эксплуатации на конкретном языке программирования для конкретного вида ЭВМ.
Система программирования включает в себя: 1)Текстовый редактор-текст программы, написанный на конкретном алгоритмическом языке. 2)Программа- отладчик- отладка исходного текста программы(поиск и устранение ошибок) 3)Транслятор – программа на машинно-ориентированном языке,существляет автоматический перевод текстов программы с входного языка на язык машины.4)Компоновщик(редактор связей) – объединяет оттранслированные модули в единые загрузочные, готовые к выполнению 5)Программа, обеспечивающая запуск программы+ библиотека подпрограмм+ Помощь
Выделяют два вида трансляторов: Интерпретаторы и компиляторы. Интерпретатор- переводит на язык машинных кодов поочередно каждый оператор исходной программы, проверяет правильность записи оператора и немедленно выполняет его. В отличие от интерпретатора компилятор осуществляет перевод на машинный язык всей исходной программы. Преимуществом компиляторов по сравнению с интерпретаторами является быстродействие, а недостатком- громоздкость
2. Основные синтаксические конструкции языков программирования. Типы данных.
Идентификаторы— имена объектов и конструкций программы (меток, констант, типов, переменных, типов, процедур, функций, объектов, модулей, программ, полей в записях и т.д.).Имя может иметь любую длину, однако различимыми являются только первые 63 символа.Имя состоит из буквы, за которой могут следовать буквы, цифры или символ подчеркивания. (Имя может начинаться с символа подчеркивания, но этого не желательно делатель т.к. с него начинаются большинство системных программ).Нельзя в качестве имен использовать ключевые слова, и стандартные имена, которые служат для обозначения некоторых констант, типов, процедур, функций, файлов и др. объектов. Эти имена распознаются компилятором без их дополнительного описания в программе.
Константа — это фиксированное значение, которое не может быть изменено программой. Константа может относиться к любому базовому типу. Способ представления константы определяется ее типом. Символьные константы заключаются в одинарные кавычки. Например, ‘а’ и ‘%’ — это символьные константы. Они используются для представления символов языков, имеющих в своем алфавите много букв. Целые константы определяются как числа без дробной части. Например, 10 и -100 — это целые константы. Константы в плавающем формате записываются как числа с десятичной точкой, например, 11.123. Допускается также экспоненциальное представление чисел (в виде мантиссы и порядка): 111.23е— 1.
Переменная— это область памяти, в которой находятся данные, которыми оперирует программа. Когда программа манипулирует с данными, она, фактически, оперирует содержимым ячеек памяти, т. е. переменными.Чтобы программа могла обратиться к переменной (области памяти), например, для того, чтобы получить исходные данные для расчета по формуле или сохранить результат, переменная должна иметь имя. Имя переменной придумывает программист.В качестве имени переменной можно использовать последовательность из букв латинского алфавита, цифр и некоторых специальных символов. Первым символом в имени переменной должна быть буква. Пробел в имени переменной использовать нельзя.
Тип данных— это описание, определяющее свойства и порядок обработки данных. Например, фраза «переменнаяstимеет тип данных «строка»» означает, что в этой переменной может содержаться любое число символов, а операция сложения строк представляет собой последовательное соединение слагаемых строк в одну.
Типы данных: Переменные типа integerмогут быть связаны только с целыми значениями обычно в диапазоне от -32768 до 32767. В Pascal есть другие целочисленные типы.
Переменные типа realхранят вещественные (дробные) числа.
Переменная булевского(логического) типа может принимать только два значения —true(1, правда) илиfalse(0, ложь).
Символьный тип (char)может принимать значения из определенной упорядоченной последовательности символов.
Интервальный типопределяется пользователем и формируется только из порядковых типов. Представляет собой подмножество значений в конкретном диапазоне.
Можно создать собственный тип данных простым перечислением значений, которые может принимать переменная данного типа. Это так называемый перечисляемый тип данных.
Все вышеописанное – это простые типы данных. Но бывают и более сложные, структурированные, которые базируются на простых типах.
Массив– это структура, занимающая в памяти единую область и состоящая из фиксированного числа компонентов одного типа.
Строкипредставляет собой последовательность символов. Причем количество этих символов не может быть больше 255 включительно. Такое ограничение характерная черта Pascal.
Запись– это структура, состоящая из фиксированного числа компонент, называемых полями. В разных полях данные могут иметь разный тип.
Множествапредставляют собой совокупность любого числа элементов, но одного и того же перечисляемого типа.
Файлыдля Pascal представляют собой последовательности однотипных данных, которые хранятся на устройствах внешней памяти (кстати, жесткий диск – это тоже внешняя память).
Понятие такого типа данных как указательсвязано с динамическим хранением данных в памяти компьютера. Часто использование динамических типов данных является более эффективным в программирование, чем статических.
К стандартным относятся целые, действительные, логические, символьный и адресный типы. Целый тип
Диапазон допустимых значений
Отводимая память, в байтах