
- •Язык программирования паскаль
- •I. Общая характеристика языков программирования
- •1.1. Языки программирования
- •1.2. Трансляторы
- •1.3. История создания языков
- •1.4. Базовые структуры языков программирования
- •II. Описание языка паскаль
- •2.1. Основные объекты языка
- •Лексемы
- •Разделители
- •2.2. Структура Паскаль - программы
- •Синтаксическая диаграмма паскаль – программы
- •2.3. Типизация данных
- •Синтаксическая диаграмма
- •2.4. Объявление данных
- •Синтаксическая диаграмма:
- •Синтаксическая диаграмма
- •III. Простые операторы. Ввод/вывод данных
- •3.1. Оператор присваивания и выражения
- •3.2. Операторы процедур. Ввод/вывод информации
- •3.2.1. Процедуры ввода read и readln
- •Общая форма записи
- •3.2.2. Процедуры вывода write и writeln
- •Синтаксическая диаграмма оператора write
- •Синтаксическая диаграмма формата вывода
- •IV. Структурные операторы. Организация ветвлений и циклов
- •4.1. Составной и пустой операторы
- •Синтаксическая диаграмма
- •Синтаксическая диаграмма
- •4.2. Организация ветвлений. Операторы выбора
- •4.2.1. Оператор ветвления if
- •4.2.2. Оператор варианта case
- •4.3. Организация циклов. Операторы повторения
- •4.3.1. Оператор while
- •Синтаксическая диаграмма
- •4.3.2. Оператор repeat
- •Синтаксическая диаграмма
- •4.3.3. Оператор for
- •Синтаксическая диаграмма
- •V. Организация подпрограмм. Процедуры и функции
- •5.1. Процедуры и их типизация
- •5.1.1. Встроенные процедуры
- •5.1.2. Процедуры пользователя
- •Общий вид паскаль-программы
- •5.1.3. Процедуры без параметров
- •5.1.4. Фактические и формальные параметры
- •5.1.5. Локальные и глобальные переменные
- •5.1.6. Процедуры с параметрами-значениями
- •5.1.7. Процедуры с параметрами-переменными
- •5.1.8. Комбинированные процедуры
- •Диаграмма заголовка
- •5.2. Функции пользователя. Рекурсивные функции
- •5.2.1. Определение функции
- •Синтаксическая диаграмма
- •5.2.2. Функции пользователя
- •5.2.3. Рекурсивные функции
- •5.3 Модульное программирование
- •VI. Массивы. Данные типа array
- •Синтаксическая диаграмма
- •6.1 Одномерные массивы
- •6.2. Многомерные массивы
- •6.3. Способы работы с массивами
- •VII. Обработка литерных величин. Данные типа char и string
- •7.1. Тип данных char
- •7.2. Массивы литер
- •7.3. Тип данных string
- •Синтаксическая диаграмма
- •7.4. Строковые функции и процедуры
- •IIX. Комбинированный тип - записи. Данные типа record
- •8.1. Определение типа record
- •Синтаксическая диаграмма
- •8.2. Оператор with
- •Синтаксическая диаграмма
- •IX. Файловый тип
- •9.1. Определение и описание файла
- •9.2. Типы файлов. Процедуры работы с файлами
- •9.3. Буферная переменная
- •9.4. Основные приемы работы с файлами
- •9.5. Текстовые файлы
- •Литература
3.2. Операторы процедур. Ввод/вывод информации
Оператор процедуры определяет активизацию процедуры, обозначенную с помощью идентификатора (имени) процедуры. Другими словами, с помощью операторов этого типа осуществляется вызов процедур с указанием в них входных и выходных параметров (подробнее об этом будет сказано в разделе "Процедуры"). Мы начнем знакомство с операторами-процедурами на базе организации ввода/вывода данных в языке Паскаль.
Для организации ввода и вывода данных используются следующие встроенные (машинные) процедуры: READ, WRITE, READLN, WRITELN.
3.2.1. Процедуры ввода read и readln
Процедура READ вызывается с помощью соответствующего оператора процедуры, который описывается в виде следующей синтаксической диаграммы:
Общая форма записи
READ (X,Y, ... , Z),
где X,Y, ... , Z - переменные, называемые списком ввода.
При выполнении процедуры READ работа программы приостанавливается, ЭВМ ждет ввода информации. Пользователь должен с клавиатуры ввести значения переменных, указанных в списке, отделяя их одним пробелом. Ввод завершается нажатием клавиши ENTER. Можно нажимать клавишу ввода и после набора каждого элемента ввода. В этом случае каждое нажатие клавиши ENTER осуществляет присваивание очередной переменной списка ввода ее значения, набранного с клавиатуры. По завершению ввода программа возобновляет свою работу.
Для лучшего понимания работы данной процедуры и ее умелого использования при задании значений нескольких переменных необходимо знать, что при вводе значений с клавиатуры они сначала идут в буфер клавиатуры, а потом считываются в переменные. При считывании буфер очищается по принципу очереди (первым зашел - первым вышел). Это означает, что при вводе сразу нескольких констант и последующем нажатии клавиши ENTER из буфера клавиатуры будет считано столько констант, сколько переменных в операторе READ, а остальные останутся в буфере. При следующем операторе READ остановки работы ЭВМ не будет, и его переменные получат свои значения из буфера (если только в нем достаточно констант для всех переменных).
Например, пусть имеется фрагмент программы, включающий в себя два оператора READ:
......................
READ (A,B,C);
…………….
READ (D,E);
…………….
и пусть по первому оператору на клавиатуре набраны 5 констант. Тогда при работе второго READ останова работы программы не будет, и переменные C и D получат значения последних двух ранее введенных констант. Если же ввести 4 константы, то второй оператор READ затребует еще одну константу с клавиатуры.
Вызов процедуры READLN имеет тот же синтаксис, что и оператор READ, однако ее работа отличается от работы первой процедуры. При однократном вводе констант отличий нет, а при одноразовом вводе нескольких констант происходит очистка буфера клавиатуры. Так, если в нашем примере заменить первый READ на READLN, и тоже ввести сразу 5 констант, то второй оператор READ произведет остановку работы программы и затребует повторного ввода последних двух значений для переменных D и E. Заметим также, что оператор READLN используется преимущественно при вводе текстовых констант.