- •Основы программирования
- •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.3. Механизмы управления данными
Механизмы управления данными в общем случае делятся на три глубинно взаимосвязанных части: механизмы размещения данных в памяти, механизмы доступа к ним и механизмы пересылки. При этом если последние практически неотличимы в различных ЯП (как следствие простоты), то первые и вторые могут кардинально различаться как в синтаксисе, так и в реализации. Поэтому имеет смысл остановиться лишь на наиболее общих их чертах.
6.3.1. Механизмы пересылки данных
Предоставляют программисту возможность перенести значение каким-либо образом размещенных в памяти данных в другие (тоже размещенные) данные. Попросту говоря позволяет присваивать одним переменным значение других переменных. Реализуются с помощью либо оператора (Pascal), либо операции (C++). Стоит отметить, что перемещение самих данных (изменение месторасположения переменных) не реализовано практически ни в одном ЯП.
a:= b; {Pascal} a=b=c=d; //С++
Первый из приведенных примеров демонстрирует реализацию с помощью оператора, второй - с помощью операции (напомним, что операция обладает результатом).
6.3.2. Механизмы размещения данных
Не вдаваясь в подробности доступа к элементам данных вплоть до следующего пункта рассмотрим наиболее распространенные типы данных и структуры из них. В синтаксисе каждого ЯП определяется некоторое множество стандартных типов данных, механизмы обработки которых "встроены" в язык. Это, как правило, несколько целочисленных типов, парочка типов чисел с ПТ, символьный и логический типы, и, наконец, тип "слово". Назначение каждого из них ясно из соответствующих им названий.
var a: byte; {Pacal} float c; // C++
Однако, как это ни печально, для эффективного программирования такого набора явно недостаточно. Поэтому практически каждый ЯП позволяет размещать в памяти (и производить некоторые манипуляции) группы из нескольких элементов стандартных типов, причем как однотипных, так и разнородных. Набор однотипных элементов называют массивом. Совокупность разнотипных элементов называют структурой либо записью.
struct Point { int x,y; char color;} //C++ D: Array[2..5] Of Word; {Pascal}
Почти во всех ЯП как с записью, так и с массивом (как со структурами данных) может быть (а может и не быть) сопоставлен идентификатор типа. Как с массивом, так и со структурой можно сопоставить множество различных механизмов обработки, однако для каждого ЯП набор таких механизмов различен.
Как правило, для размещения данных в памяти (точнее - для указания компилятору, что под данные необходимо отвести место) достаточно лишь указать (в соответствии с синтаксисом языка) идентификатор переменной и идентификатор присваиваемого этой переменной типа. Остальное - забота компилятора.
Различные языки программирования могут позволять (FoxPro, C++) или не позволять (Pascal) размещать переменные в процессе выполнения программы. Однако, большинство ЯП, в том числе и Pascal, имеют механизмы динамического распределения памяти (ДРП), позволяющие выделять (и освобождать по завершении использования) не занятую никакой программой память для временного использования. При этом доступ к выделенным таким образом участкам памяти производится с использованием указателей.