- •Часть 1
- •Предмет и задачи информатики
- •История эвм
- •Состав вычислительной системы
- •Аппаратное обеспечение
- •Программное обеспечение
- •Операционная система
- •Кодирование Двоичный код
- •Кодирование чисел
- •Кодирование текстовых данных
- •Кодирование графических данных
- •Представление цвета в машинной графике
- •Кодирование звуковой информации
- •Прикладное программное обеспечение Системы обработки текстов
- •Интегрированный пакет Microsoft Office
- •Текстовый процессорWord
- •Создание в документе листа Microsoft Excel
- •О рисунках и других графических объектах
- •Закрепление областей листа
- •Скрытие и отображение столбцов и строк
- •Выделение фрагментов документа
- •Ввод данных с клавиатуры
- •Ввод текста
- •Ввод чисел
- •Ввод формул с клавиатуры
- •Установка границ ячеек
- •Работа с диаграммами
- •Работа с базами данных Основные понятия
- •Объекты базы данных
- •Запросы
- •Страницы
- •Макросы и модули
- •Безопасность баз данных
- •Технологии программирования
- •Алгоритм, программа
- •Интегрированная среда разработки приложений в Delphi
- •Стандарт и диалекты языка
- •Основы Паскаля
- •Основные понятия языка Алфавит
- •Имена и идентификаторы
- •Программные элементы
- •Описания
- •Раздел констант
- •Типизированные константы
- •Переменные
- •Функции и процедуры
- •Правила записи текста программы
- •Концепция данных
- •Основные типы данных Целые типы
- •Битовые операции
- •Вещественные типы
- •Тип дата-время
- •Символьные типы
- •Логические типы
- •Выражения
- •Оператор присваивания
- •Составной оператор
- •Раздел меток
- •Оператор перехода
- •Пустой оператор
- •Раздел типов
- •Условный оператор
- •Перечислимые типы (перечни)
- •Оператор варианта
- •Ограниченные типы
- •Операторы цикла
- •Операторы цикла с параметром
- •Оператор цикла с постусловием
- •Оператор цикла с предусловием
- •Регулярные типы (массивы)
- •Многомерные массивы
- •Комбинированные типы (записи)
- •Оператор присоединения
- •Подпрограммы
- •Подпрограммы-процедуры
- •Подпрограммы-функции
- •Формальные и фактические параметры
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •ПроцедураExit
- •Процедурные типы
- •Множественные типы
- •Оглавление
- •Часть 1
Оператор присоединения
Для работы с записями используют оператор присоединения
<оператор присоединения>::=<заголовок><оператор>
<заголовок>::=with<список переменных-записей>do
<список переменных-записей>::=<переменная-запись>
{,<переменная-запись>}
В простейшем случае оператор присоединения имеет вид
with R do S
Здесь withиdo– служебные слова,R– переменная комбинированного типа, а S– любой оператор.
Смысл использования этого оператора в том, что внутри S компоненты переменной R можно обозначать идентификатором полей. Например, вместо R.p:=2 в операторе S можно записать p:=2 (если у переменной R есть поле p). Это позволяет сократить размер программы.
В общем случае оператор присоединения имеет вид
with R1,R2,… Rn do S,
что полностью эквивалентно выражению
with R1 do with R2,R3, …Rn do S.
Идентификатор поля в таком операторе обозначает компоненту переменной комбинированного типа из ближайшего объемлющего оператора присоединения, в котором указана переменная с таким полем. Следовательно, если две переменные из списка R1,…Rn имеют поля, обозначенные одним и тем же идентификатором, то внутри оператора присоединения этот идентификатор обозначает поле той переменной, которая указана в списке позже.
При определении комбинированного типа имена отдельных полей могут совпадать с именами переменных. Неопределенности не возникает, т.к., например, R.A и A записываются по-разному. При использовании оператора присоединения, когда имя переменной-записи R опускается, может возникнуть конфликт. В Паскале этот конфликт разрешается так: предпочтение отдается именам полей записи, т.е. считается, что внутри оператора присоединения соответствующий идентификатор обозначает имя поля, а не имя переменной.
Пример.
Пусть имеются описания
varR2:recordA,B,C:integerend;
A: integer;
R3: record
A,D: integer;
B: record C,E: integer end
end;
Тогда оператор присоединения
withR3,B,R2do
begin
A:=1; B:=2; C:=3; D:=4; E:=5
end
эквивалентен составному оператору
begin R2.A:=1; R2.B:=2; R2.C:=3; R3.D:=4; R3.B.E:=5 end.
Подпрограммы
В программировании весьма типичной является такая ситуация, когда в разных местах программы приходится по сути дела выполнять один и тот же частичный алгоритм, который имеет достаточно самостоятельное значение, т.е. предназначен для решения некоторой подзадачи, выделенной из основной задачи. Если этот частичный алгоритм достаточно сложен и представляется достаточно большим фрагментом программы, то было бы явно нерационально выписывать его несколько раз.
Для обеспечения компактности и повышения наглядности программы Паскаль позволяет выделить любой частичный алгоритм из текста программы (вернее из раздела операторов) и записать его только один раз, представив в качестве самостоятельного программного объекта, называемого подпрограммой. Подпрограмма выполняет некоторую логически завершенную последовательность действий.
С математической же точки зрения любая подструктура– это замкнутая часть целого, которую можно рассматривать как самостоятельнуюструктуру: подмножество является множеством, подгруппа – группой, подалгебра – алгеброй, подпространство – пространством и т.д.
Таким образом, подпрограмма – это в первую очередь программа. Со всеми полагающимися полноценной программе атрибутами: именем, разделами описания меток (label), констант (const), типов (type), переменных (var) и даже со своими (вложенными) функциями и процедурами.Подпрограммы подразделяются на процедуры и функции.
Процедура– подпрограмма, которая выполняет какие-то действия, и которую можно вызвать из другого места программы. После выполнения процедуры выполнение программы продолжается с того места, откуда она была вызвана. Отличие функций от процедур в том, что они не просто выполняют какие-то действия и расчеты, но и могут возвращать результат определенного типа. Поскольку они возвращают результат, необходимо указать тип этого результата.
В программных модулях и библиотеках имеются встроенные подпрограммы. Подпрограммы может создавать и сам программист.