Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция1.doc
Скачиваний:
41
Добавлен:
10.12.2018
Размер:
526.34 Кб
Скачать

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, имеют механизмы динамического распределения памяти (ДРП), позволяющие выделять (и освобождать по завершении использования) не занятую никакой программой память для временного использования. При этом доступ к выделенным таким образом участкам памяти производится с использованием указателей.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]