Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование лекции.doc
Скачиваний:
49
Добавлен:
12.11.2019
Размер:
5.53 Mб
Скачать

2.2. Упреждающее объявление процедур и функций (forward)

Для реализации алгоритмов с косвенной рекурсией в языке Delphi предусмотрена специальная директива предварительного описания подпрограмм forward. Предварительное описание состоит из заголовка подпрограммы и следующего за ним зарезервированного слова forward, например:

procedure Proc; forward;

function Func(X: Integer): Boolean; forward;

Заметим, что после такого первичного описания в полном описании процедуры или функции можно не указывать список формальных параметров и тип возвращаемого значения (для функции). Например:

procedure Proc2(<формальные параметры>); forward;

procedure Proc1;

begin

...

Proc2(<фактические параметры>);

...

end;

procedure Proc2; // Список формальных параметров опущен

begin

...

Proc1;

...

end;

begin

...

Proc1;

... end;

3.Концепция типа данных

3.1. Абстракции в обработке информации

Компьютер представляет собой устройство для хранения и переработки информации. Информация же, как правило, описывает тот или иной реальный объект, существующий независимо от компьютера. Описание объекта называется абстракцией (Рис. 4 .1).

Рис. 4.1. Компьютер работает с абстракциями реального мира.

Часто вместо более общего понятия информации приходится слышать такой термин, как данные.

Данные – это упрощенное представление реальных явлений.

Следует отметить, что, скажем, чертеж звездолета или текст фантастического романа с точки зрения обработки данных – вполне реальные объекты. Под реальностью в данном случае понимается не смысловое содержание информации, а то, что она описывает реально существующие объекты. В рассматриваемом примере компьютер воспринимает не чертеж звездолета, а набор координат отрезков и дуг, из которых этот чертеж состоит, не текст романа, а набор кодов букв и т.д. Понимать смысл информации машины пока не научились.

Почему данные всегда упрощают описание реального объекта? Потому что учесть все свойства объекта не только невозможно, но и не нужно. Представьте себе, что вам нужно рассчитать силу, с которой Земля притягивает гирю массы m. Если не прибегать к упрощению, то нужно будет учесть и нерегулярность формы самой Земли, а также силы притяжения Солнца, планет, всех звезд во Вселенной – явно абсурдная задача. Поэтому нужно вовремя остановиться и выделить в огромном массиве информации те и только те данные, которые нам нужны.

Абстрагирование – удаление несущественной информации.

Пусть необходимо создать базу данных студентов университета. Очевидно, что для функционирования учебного заведения важно знать фамилию, имя, отчество студента, учебную группу, год поступления, оценки (от них же зависит стипендия!). А вот рост, цвет глаз, вес студентов декану или зав. кафедрой совершенно не интересны (Рис. 4 .2). К тому же на их хранение и обработку будут тратиться лишняя память и время компьютеров.

Рис. 4.2. Необходимая и избыточная информация.

Таким образом, уровень абстрагирования зависит от:

    1. Решаемой задачи.

    2. Возможностей аппаратного и программного обеспечения.

Второе ограничение говорит о том, что в ряде случаев технические возможности имеющейся техники не позволяют решить в принципе поддающиеся решению задачи. Например, на производстве ежедневно решаются задачи оптимизации раскроя листовых материалов. Нахождение оптимального размещения деталей, особенно криволинейных, на листе – очень сложная задача, требующая огромного объема вычислений. Если имеющийся компьютер работает слишком медленно, карта раскроя не будет получена до начала следующей смены и задача, в принципе решаемая, решена не будет.

Если мы рассмотрим тот или иной язык программирования, то мы увидим, что и в нем присутствуют абстракции. В языках программирования высокого уровня предусмотрены абстракции для чисел, текстовых строк, логических значений и пр. Вспомним Паскаль:

VAR a:REAL; b:INTEGER; c:STRING;

Переменная в программе – не что иное, как абстрактное представление свойства реального объекта.