Стандартные процедуры ввода
РЕАЛИЗАЦИЯ ЛИНЕЙНЫХ АЛГОРИТМОВ
Линейными алгоритмами называются такие алгоритмы, при исполнении которых выполняются все действия подряд от начала до конца алгоритма.
Формально для реализации линейных алгоритмов используются четыре оператора:
- оператор присваивания;
- оператор обращения к процедуре;
- составной оператор;
- пустой оператор.
IV.2.1. Оператор присваивания
Назначение
Структурно оператор присваивания представляет собой одно строго определенное действие по занесению в оперативную память вычисленного значения. На схемах алгоритма этому оператору соответствует элемент "процесс" (рис. 11.1)
Рис. 11.1. –Элемент "процесс"
Синтаксис
Синтаксис оператора присваивания определяется диаграммой на рис. 11.2.
Рис. 11.2. –Синтаксис оператора присваивания
Синтаксическим ограничением является следующее условие:
тип переменной и тип результата вычисления выражения должны быть одинаковыми (говорят, переменная и выражение однотипны).
Исключение из этого ограничения допускает, что
- переменная любого вещественного типа, а выражение дает результат любого целого типа (в этом случае результат вычисления выражения преобразуется к типу переменной);
- одна из составных частей оператора присваивания (переменная или результат) является типом диапазон, а вторая – базовым типом, на основании которого построен этот тип диапазон;
- обе части оператора присваивания являются типами диапазонами, построенными на одном и том же базовом типе.
Семантика
Семантика оператора присваивания (в алгоритмических языках семантика, т.е. смысловая нагрузка оператора это правила исполнения этого оператора):
1) вычисляется выражение, стоящее в правой части оператора присваивания (после знака := );
2) полученный результат записывается в оперативную память под именем, указанным в левой части оператора.
Например, в алгоритме описана целочисленная переменная I:
VAR I: INTEGER;
По этому описанию в свободном участке оперативной памяти выделяется участок (рис. 11.3), достаточный для хранения целочисленной переменной (2 байта). Этому участку дается имя I. Содержимое участка памяти с именем I неопределенное (может быть любым):
| ОП
|
|
| .
.
| .
| I
| ?
| } Под данное типа INTEGER
|
| .
.
|
| Рис. 11.3. –Распределение памяти
При выполнении оператора
I:=4
происходят следующие действия:
- - вычисляется значение выражения в правой части оператора присваивания. В данном примере это выражение относится к арифметическим выражениям (состоит из константы численного типа). Значение выражения определяется константой 4;
- - полученное значение записывается в память под именем I :
Рис. 11.4. –Результат выполнения оператора присваивания I:=4
Допустим, затем выполняется оператор
I:=I+1.
Здесь
- - вычисляется значение выражения в правой части оператора присваивания I+1. Из памяти извлекается значение 4 и к нему добавляется 1. Получается значение 5;
- - полученное значение записывается в память под именем I :
Рис. 11.5. –Результат выполнения оператора присваивания I:=I+4
IV.2.2. Оператор обращения к процедуре
Процедура – это разновидность подпрограмм, то есть специальным образом реализованный на языке программирования вспомогательный алгоритм.
Назначение
Обращение к процедуре - есть использование процедуры, т.е. запуск ее на выполнение. С точки зрения использования процедуры важны не знания о действиях, которые входят в состав процедуры, а информация о
- назначении процедуры;
- имени процедуры;
- перечне входных и выходных данных (этот перечень называется списком формальных параметров).
Эта информация может быть почерпнута из документации на программное обеспечение (при использовании стандартных или библиотечных процедур) или из раздела описаний собственных процедур и функций (если программист сам писал текст процедуры).
Для обращения к процедуре необходимо указать имя вызываемой процедуры и задать входные и выходные параметры, над которыми и производятся действия при данном запуске процедуры на выполнение. В этом случае говорят, что необходимо задать список фактических параметров. Обратите внимание, перечень входных и выходных параметров указанных в описании процедуры называется списком формальных параметров.
Изображение обращения к процедуре (вызов процедуры) в схемах алгоритма приведено на рис. 11.6.
Рис. 11.6. –Элемент "предопределенный процесс"
На этом рисунке ИП - имя вызываемой процедуры, СФАП - список фактических параметров, перечисленных через запятую.
Для обращения к процедурам ввода-вывода есть специальные элементы схем алгоритмов.
При обращении к процедуре список фактических параметров должен соответствовать списку формальных параметров по
- - количеству,
- - порядку следования,
- - типу и виду каждого параметра.
Разберем это соответствие на простом примере.
Допустим, имеется процедура, назначение которой: вычисление площади треугольника по трем заданным сторонам.
Имя этой процедуры: РLTR;
Список формальных параметров следующий:
первый параметр - входной, первая сторона треугольника, типа REAL;
второй параметр - входной, вторая сторона треугольника, типа REAL;
третий параметр - входной, третья сторона треугольника, типа REAL;
четвертый параметр - выходной, площадь треугольника, типа REAL.
И нам необходимо вычислить площадь прямоугольника со сторонами 5.7, 2.9 и 3.0.
Для этого обратимся к процедуре РLTR со следующим списком фактических параметров:
первый параметр - число 5.7 типа REAL;
второй параметр - число 2.9 типа REAL;
третий параметр - число 3.0 типа REAL;
четвертый параметр - имя переменной, куда должен быть помещен результат вычисления, например, переменная S типа REAL.
Этот вызов в схеме алгоритма приведен на рис. 11.7.
Рис. 11.7. –Вызов процедуры PLTR
Задав такой список фактических параметров, мы выполнили требования его соответствия списку формальных параметров:
q по количеству - 3 параметра;
q по порядку следования
o первый параметр - входной параметр, задающий размер первой стороны треугольника;
o второй – входной параметр, задающий размер второй стороны треугольника;
o третий - входной параметр, задающий размер третьей стороны треугольника;
o четвертый - выходной параметр, задающий переменную, в которую должен быть помещен результат вычисления;
q по типу каждого фактического параметра, соответствующему типу формального параметра (в нашем примере все типа REAL).
Для соответствия по виду определим, какие виды параметров бывают.
Различают три вида параметров:
- - параметры-значения;
- - параметры-переменные;
- - параметры-константы.
Последний вид параметров определен только в Турбо Паскале.
Эта классификация определяется назначением и соответствием фактических параметров формальным.
Параметр называется параметром-значением, если на месте формального параметра при обращении к подпрограмме в качестве фактического параметра должно выступать конкретное значение, то есть фактическим параметром может быть выражение. В этом случае фактическое выражение в начале вычисляется, а затем полученное значение передается в подпрограмму. Параметры значения - это только входные данные подпрограммы простого, строкового типа или ссылочного типа.
Параметр называется параметром-переменной, если на месте формального параметра при обращении к подпрограмме в качестве фактического параметра может выступать только переменная, задающая участок оперативной памяти, с которым работает подпрограмма. Параметры-переменные - это всегда выходные данные подпрограммы, либо входные сложного (структурированного) типа.
Параметр-константа означает, что на месте формального параметра такого вида при вызове подпрограммы может стоять только имя переменной, существующей в блоке, из которого вызывается подпрограмма. Параметры-константы это входные данные сложного типа (кроме строкового и ссылочного), так как в процессе выполнения подпрограммы изменять значения этих переменных невозможно.
В нашем примере первый параметр - параметр-значение, т.к. фактическим параметром, в принципе, может быть любое арифметическое выражение, дающее вещественный результат (у нас 5.7). Второй и третий параметры (у нас значения 2.9 и 3.0) также параметры-значения. А четвертый параметр - параметр-переменная, т.к. это выходной параметр, и он должен задавать участок оперативной памяти, в который помещается результат работы процедуры.
Синтаксис
Правописание оператора обращения к процедуре определяется синтаксической диаграммой, изображенной на рис. 11.8.
Рис. 11.8. –Синтаксис оператора обращения к процедуре
Здесь список фактических параметров заключается в круглые скобки. Для процедур, не имеющих формальных параметров, при обращении к ним список фактических отсутствует. Список фактических параметров должен соответствовать списку формальных параметров по
- - количеству параметров;
- - порядку следования параметров;
- - типу каждого параметра;
- - виду каждого параметра.
Для приведенного выше примера оператор обращения к процедуре имеет следующий вид:
PLTR(5.7,2.9,3.0,S)
Семантика
Семантика оператора обращения к процедуре:
1) в процедуру передаются фактические параметры (для параметров-переменных - имена фактических переменных, для параметров-значений - значения фактических выражений, для параметров-констант - имена фактических переменных);
2) над переданными параметрами выполняются операторы, входящие в процедуру;
3) после выполнения процедуры следующим выполняется оператор, стоящий за оператором обращения к процедуре.
Стандартные процедуры ввода-вывода (основные положения)
Ни одна программа не существует сама для себя - она должна обмениваться информацией с внешним миром. Существует набор стандартных процедур, которые вводят информацию со стандартных устройств ввода и выводят информацию на стандартные устройства вывода. Для ПЭВМ стандартным устройством ввода является клавиатура, а вывода - экран дисплея.
Обращение к стандартным процедурам ввода-вывода на схемах алгоритма изображается с помощью элемента ввод-вывод (рис. 11.9)
Рис. 11.9. –Элемент "ввод-вывод"
Стандартные процедуры ввода
Назначение: ввод информации с помощью клавиатуры ПЭВМ с одновременным отображением на экране дисплея. Можно вводить данные любого целого, любого вещественного, литерного (СHAR) и строкового (STRING) типов. Эти данные помещаются в оперативную память.
Имя: существуют две процедуры READ и READLN.
Список формальных параметров:
- - количество параметров определяет программист;
- - порядок следования параметров определяет программист;
- - параметры могут быть любого целого, любого вещественного, литерного (СHAR) и строкового (STRING) типов;
- - все параметры - только параметры-переменные.
При выполнении процедур ввода информация, заданная соответствующими значениями (при наборе числовой информации одно значение отделяется от другого пробелом или нажатием клавиши ввод; заканчивается набор информации нажатием клавиши ввод), записывается в оперативную память под именами, указанными в качестве фактических параметров. Причем набранные значения по форме записи должны соответствовать типам фактических параметров и принадлежать множествам значений этих типов. Отличие между процедурами READ и READLN заключается в том, что процедура READLN обрабатывает дополнительно специальный код, о назначении которого будем говорить при изучении файлов (до этого времени в программах будем пользоваться только процедурой READLN).
Порядок выполнения обращения к процедуре READLN:
1) ЭВМ ожидает от пользователя столько значений, сколько фактических переменных указано в обращении к процедуре;
2) человек набирает на клавиатуре значения, отделяя одно цифровое значение от другого пробелом или нажатием клавиши ENTER. Заканчивается набор значений нажатием клавиши ENTER.
3) ЭВМ заносит полученные значения в оперативную память под именем фактических параметров: первое значение – под именем первой переменной, второе – под именем второй и т.д.
Примечания:
- если набранное на клавиатуре по форме или по значению не соответствует типу переменной, являющейся фактическим параметром, то возникает ошибка ввода-вывода или ошибка переполнения.
- если процедура READLN используется без фактических параметров, то ЭВМ ожидает только нажатия клавиши ENTER.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|