
- •Эвм. Различные виды обеспечения эвм. Аппаратное обеспечение эвм.
- •10) Алфавит и лексемы языка Pascal. Идентификаторы. Нотации идентификаторов.
- •11) Понятие оператора. Операторы описания. Исполняемые операторы.
- •12) Структура программы. Правила оформления программы. Комментарии.
- •13) Константы.
- •14) Переменные. Понятие. Изменение значений. Описание.
- •15) Понятие типа данных. Классификация типов данных.
- •16) Логический, целые и вещественные типы. Понятие. Основные операции и функции.
- •17) Символьный и порядковые типы данных. Понятие. Основные операции и функции.
- •18. Выражения. Приоритеты операций.
- •19. Операторы ввода-вывода. Форматированный вывод.
- •20. Условный оператор. Оператор выбора.
- •21. Циклы. Цикл с параметром. Циклы с пост и предусловием. Операторы циклов
- •Инкрементный цикл с параметром
- •Декрементный цикл с параметром
- •Оператор безусловного перехода goto
- •22. Одномерные массивы. Понятие. Описание. Инициализация. Ввод-вывод. Понятие структуры
- •Массив – однородная совокупность элементов
- •Индекс массива
- •Вычисление индекса массива Паскаля
- •Основные действия с массивами Паскаля
- •Ввод массива Паскаля
- •Вывод массива Паскаля
- •22. Одномерные массивы. Понятие. Описание. Инициализация. Ввод-вывод. Массивы
- •Описание массива
- •Нумерация
- •Описание переменных размерностей
- •Обращение к компонентам массива
- •Задание массива константой
- •23. Сортировка массивов простым выбором и «пузырек».
- •24. Многомерные массивы. Понятие. Описание. Инициализация. Ввод-вывод. Двумерные массивы Паскаля – матрицы
- •Описание двумерного массива Паскаля.
- •Основные действия с двумерными массивами Паскаля
- •Ввод двумерного массива Паскаля.
- •Вывод двумерного массива Паскаля на экран.
- •Представление двумерного массива Паскаля в памяти
- •Сколько памяти выделяется для массива?
- •25. Строки. Типы строк. Описание. Операции, процедуры и функции обработки строк.
- •Описание строк
- •Стандартные функции и процедуры обработки строк
- •26. Записи. Описание. Обработка записей. Записи с вариативной частью. Записи
- •Описание записей
- •Задание записей константой
- •Доступ к полям
- •Оперирование несколькими полями
- •Вложенные операторы with
- •Запись с вариантной частью
- •Описание записи с вариантной частью
- •27. Множества. Описание. Операции, процедуры и функции обработки множеств. Множества
- •Описание множеств
- •Множество-константа Неименованная константа
- •Нетипизированная константа
- •Типизированная константа
- •Представление множеств массивами
- •Представление множеств линейными массивами
- •28. Текстовые файлы. Доступ к данным в текстовых файлах. Работа с текстовыми файлами. Описание файлов
- •Пробельные символы
- •Работа с текстовыми файлами
- •29. Бестиповые файлы. Доступ к данным в бестиповых файлах. Работа с бестиповыми файлами. Процедуры и функции обработки бестиповых файлов.
- •Поиск в нетипизированном файле
- •Запись и чтение
- •Подпрограммы обработки директорий
- •30. Компонентные файлы файлы. Доступ к данным в компонентных файлах. Работа с компонентными файлами. Процедуры и функции обработки компонентными файлов. Типизированные файлы
- •Описание типизированных файлов
- •Назначение типизированного файла
- •Открытие и закрытие типизированного файла
- •Считывание из типизированного файла
- •Поиск в типизированном файле
- •Запись в типизированный файл
- •31. Подпрограмма. Понятие. Виды. Синтаксис. Вызов подпрограмм. Локальные и глобальные переменные. Подпрограммы
- •Вызов подпрограмм
- •Побочный эффект
- •Совпадение имен
- •32. Подпрограммы. Виды параметров. Обмен данными между подпрограммами и основной программой. Список параметров
- •Возвращаемые значения
- •Способы подстановки аргументов
- •Параметр-значение Описание
- •Механизм передачи значения
- •Параметр-переменная Описание
- •Механизм передачи значения
- •Параметр-константа Описание
- •Механизм передачи значения
- •Нетипизированные параметры
- •Явное преобразование типа
- •Совмещение в памяти
- •Открытые массивы
- •33. Модули. Синтаксис. Создание и использование модуля.
- •Подключение модулей
- •Секция реализации
- •Секция инициализации
- •Взаимодействие модулей
- •Компиляция модулей
- •34. Стандартные модули языка Pascal. Стандартные модули языка Pascal
- •35. Указатели. Виды указателей. Операции и функции обработки указателей. Статически выделяемая память
- •Разыменование
- •Присваивания
- •Сравнения
- •36. Динамические переменные. Процедуры и функции работы с динамическими переменными. Работа с динамическими переменными. Динамическое выделение памяти Типизированные указатели
- •Нетипизированные указатели
- •Динамическое освобождение памяти Типизированные указатели
- •Нетипизированные указатели
- •Процедуры работы с динамической памятью
- •37. Стек. Добавление и выборка элемента из стека. Стеки Pascal-Паскаль
- •Занесение элемента в стек
- •Извлечение элемента из стека
32. Подпрограммы. Виды параметров. Обмен данными между подпрограммами и основной программой. Список параметров
В заголовке подпрограммы (в ее объявлении) указывается список формальных параметров переменных, которые принимают значения, передаваемые в подпрограмму извне во время ее вызова. Для краткости мы далее будем опускать слово "формальный".
Поскольку внутри подпрограммы параметры рассматриваются как переменные с начальным значением, то имена локальных переменных, описываемые в разделе var (внутреннем для подпрограммы ), не могут совпадать с именами параметров этой жеподпрограммы. Подробнее о локальных и глобальных переменных мы расскажем в пункте "Разграничение контекстов ".
Список параметров может и вовсе отсутствовать:
procedure proc1;
function func1: boolean;
В этом случае подпрограмма не получает никаких переменных "извне". Упомянутый в начале лекции песенный припев как раз и является примером подпрограммы, в которую не передается никаких данных при вызове.
Однако отсутствие параметров и, как следствие, передаваемых извне значений вовсе не означает, что при каждом вызовеподпрограмма будет выполнять абсолютно одинаковые действия. Поскольку глобальные переменные видны изнутри любойподпрограммы, их значения могут неявно изменять внутреннее состояние подпрограмм. Этому очень нежелательному эффекту будет посвящен пункт " Побочный эффект ".
Если же параметры имеются, то каждый из них описывается по следующему шаблону:
[<способ_подстановки>]<имя_параметра>:<тип>;
О возможных способах подстановки значений в параметры ( <пустой>, var, const ) мы расскажем в разделе "Способы подстановки аргументов ".
Если способ подстановки и тип нескольких параметров совпадают, описание этих параметров можно объединить:
[<способ_подстановки>]<имя1>,...,<имяN>: <тип>;
Пример описания всех трех способов подстановки:
function func2(a,b:byte; var x,y,z:real; const c:char) : integer;
В заголовке подпрограммы можно указывать только простые (не составные) типы данных. Следовательно, попытка записать
procedure proc2(a: array[1..100]of char);
вызовет ошибку уже на этапе компиляции. Для того чтобы обойти это ограничение, составной тип данных нужно описать в разделе type, а при объявлении подпрограммывоспользоваться именем этого типа:
type arr = array[1..100] of char;
procedure proc2(a: arr);
function func2(var x: string): arr;
Возвращаемые значения
Основное различие между функциями и процедурами состоит в количестве возвращаемых ими значений.
Любая функция, завершив свою работу, должна вернуть основной программе (или другой вызвавшей ее подпрограмме ) ровно одно значение, причем его тип нужно явным образом указать уже при объявлении функции.
Для возвращения результата применяется специальная "переменная", имеющая имя, совпадающее с именем самой функции. Оператор присваивания значения этой "переменной" обязательно должен встречаться в теле функции хотя бы один раз.
Например:
function min(a,b: integer): integer;
begin if a>b
then min:= b
else min:= a
end;
В отличие от функций, процедуры вообще не возвращают (явным образом) никаких значений. О том, как все-таки получить результаты работы процедуры, вы узнаете из пункта " Параметр-переменная ".