- •Основы программирования
- •1. Программное обеспечение персонального компьютера
- •1.1. Системное программное обеспечение
- •1.2. Прикладное программное обеспечение
- •1.3. Инструментальные средства
- •2. Основные этапы решения задач на компьютере
- •1. Описание алгоритма с помощью естественного языка.
- •2. Описание алгоритма с помощью блок-схемы.
- •3. Описание алгоритма с помощью алгоритмических языков.
- •Основные алгоритмические структуры
- •3. Как вызвать программу?
- •4. Языки программирования
- •4.1. Эволюция языков программирования
- •4.1.1. Движущие силы эволюции яп
- •4.1.2. История развития яп
- •4.1.3. Классификация яп
- •4.1.4. Тенденции развития яп
- •4.2. Трансляторы
- •4.3. Язык программирования Паскаль
- •4.3.1. Использование среды программирования Турбо Паскаль
- •5. Основные элементы программирования
- •6. Общая структура языков программирования введение
- •6.1. Синтаксис
- •6.2. Алгоритмические механизмы (управляюшие структуры)
- •6.2.1. Оператор условия
- •6.2.2. Оператор множественного выбора
- •6.2.3. Параметрический цикл
- •6.2.4. Операторы цикла с условием
- •6.2.5. Оператор безусловного перехода
- •6.3. Механизмы управления данными
- •6.3.1. Механизмы пересылки данных
- •6.3.2. Механизмы размещения данных
- •6.3.3. Механизмы доступа к данным
- •6.4. Интерфейсные механизмы
- •6.5. Механизмы управления аппаратурой
- •6.6. Механизмы структуризации
- •7. Типы и структуры данных
- •7.1. Понятие типа данных
- •7.1.1. Встроенные типы данных
- •7.1.2. Уточняемые типы данных
- •7.1.3. Перечисляемые типы данных
- •7.1.4. Конструируемые типы данных
- •7.1.4.1. Массивы
- •7.1.4.2. Записи
- •7.1.4.3. Записи с вариантами
- •7.1.4.4. Множества
- •7.1.5. Указатели
- •7.1.6. Динамическое распределение памяти и списки
- •7.1.7. Абстрактные (определяемые пользователями) типы данных
- •7.1.7.1. Представление типа
- •7.1.7.2. Реализация типа
- •7.1.7.3. Инкапсуляция
- •7.1.7.4. Наследование типов
- •7.1.7.5. Разновидности полиморфизма
- •7.1.8. Типы и структуры данных, применяемые в реляционных базах данных
- •7.1.9. Типы и структуры данных, применяемые в объектно-реляционных базах данных
- •7.1.9.1. Строчные типы данных
- •7.1.9.2. Наследование таблиц и семантика включения
- •7.1.9.3. Типы коллекций
- •7.1.9.4. Объектные типы данных
6.1. Синтаксис
Каждый язык (не только программирования) характеризуется алфавитом - набором букв, допустимых к использованию, и синтаксисом - набором правил, по которым эти символы следует записывать. Большинство ЯП в качестве алфавита используют латинский алфавит, дополненный арабскими цифрами и всякого рода разделителями вроде скобок, знаков арифметических операций, запятых, etc.
Наиболее общим в синтаксисах ЯП является выделение среди всех лексем (минимальных единиц языка, имеющих самостоятельный смысл) служебных (зарезервированных) слов и правила записи операторов - "предложений" из лексем.
Кроме того, среди лексем выделяются символы операций (как правило они состоят из одной-двух букв). Особенностью операции (и главным ее отличием от оператора) является наличие результата. Как правило операции выступают в роли связок между какими либо значениями (результатами других операций или функций, значениями, возвращаемыми функциями). Приоритет операций, устанавливающий порядок их выполнения, является частью синтаксиса ЯП и для (бинарных) арифметических операций совпадает с общепринятым. Порядок выполнения операций определяется их приоритетом, порядком записи и скобками.
Синтаксические правила наиболее распространенных алгоритмических ЯП различаются лишь в деталях.
6.2. Алгоритмические механизмы (управляюшие структуры)
Естественно, что основными механизмами любого ЯП являются механизмы управления данными и процессом выполнения операторов. Рассмотрим последние.
Давно доказано, что для реализации алгоритма любой сложности достаточно совсем небольшого набора средств (к примеру условного оператора и оператора перехода или оператора цикла с условием и оператора переходов). Однако, ограничить язык наличием какого бы то ни было "алгоритмического минимума" нецелесообразно с точки зрения эффективности реализации большинства алгоритмов (каждый может проверить это, попытавшись нарисовать блок-схему некоторого циклического алгоритма с использованием только условных вершин для ветвления, даже не пытаясь реализовать его на каком либо ЯП). Даже максимально редуцированные языки - ассемблеры - обладают помимо условных операторов операторами параметрических циклов. Поэтому в большинство ЯП включается примерно следующий джентльменский набор операторов изменения порядка следования операторов.
6.2.1. Оператор условия
Необходимость его присутствия в языке очевидна. Предоставляет возможность выполнить то или иное действие в зависимости от истинности некоторого логического условия (ЛУ). Практически во всех языках называется if.
Условный оператор практически всегда имеет две формы - усеченную, когда указывается лишь действие, выполняемое при истинности ЛУ, и полную когда указываются действия выполняемые при обоих значениях ЛУ. Типичный пример
if (a=4) a=a+1; else a=b-2; //C++
6.2.2. Оператор множественного выбора
Некоторые алгоритмы требуют выполнения более двух различных действий в зависимости от некоторого условия (всегда не логического; к примеру от значения некоторой переменной), то есть ветвления более чем на 2 ветки. Реализация такого ветвления с помощью условного оператора нецелесообразна (кто не верит - пусть нарисует). Как следствие в большинство ЯП включен оператор множественного выбора.
Суть его, как правило, в следующем. Некоторое выражение (как правило это просто переменная), которое к моменту выполнения оператора может принимать несколько различных значений, сравнивается с одним из заранее определенных программистом значений, и в случае совпадения выполняется соответствующий оператор.
case c of 3: c: =8; 4: c:= b-3; else b:= 4; end; {Pascal}