Добавлен: 01.04.2023
Просмотров: 333
Скачиваний: 2
СОДЕРЖАНИЕ
1 Основные элементы языка программирования Pascal
1.1 Алфавит, данные и выражения языка Pascal
1.2. Стандартные простые типы данных и структура программы на языке Pascal
2. Операторы языка программирования Pascal, подпрограммы и сложные типы данных
2.1. Операторы языка программирования Pascal
Формат использования: <идентификатор>: = <выражение>;
Требования к выполнению:
– переменная и выражение должны быть одного и того же типа;
– выполняется присваивание любых типов данных (кроме файловых).
Выполнение: оператор присваивания заменяет значение переменной из левой части на значение выражения из правой части. В Таблице 5 отображены варианты использования оператора присваивания
Таблица 5
Варианты использования оператора присваивания
|
Пример использования |
Пояснения |
|
S := dl * h; |
Произведение значений dl и h присваивается переменной S |
|
Sum := Sum + x |
Значение переменной Sum увеличивается на x |
|
Flag := true; |
Значению переменной Flag присваивается true (истина) |
Источник: Химич А. В. Сравнительный анализ языков программирования: Паскаль, С++, PYTHON / А. В. Химич // Молодежный научный форум. – 2018. – С. 138.
Для организации ввода значений переменных в сообщениях не нужно указывать сами имена переменных ввода. Обязательным считается указание единиц измерения значений, если они заданы. Для пользователя неважно, как именуются в программе те или иные переменные [1].
Пустой оператор чаще всего служит для организации выхода из середины программы или составного оператора.
Требования к выполнению:
– оператор может располагаться в любой части программы, где позволяет синтаксис языка и может быть помечен меткой;
– в качестве пустого оператора обычно ставится разделитель точка с запятой [11, C. 71].
Выполнение: пустой оператор не выполняет никаких действий.
Значения переменных, связанные в выражение, должны быть определены до выполнения оператора присваивания.
Программирование ветвящихся процессов обработки информации реализуется через использование структурных операторов, которые в своей структуре объединяют другие операторы. К ним относятся операторы: составной, условный, выбора и безусловного перехода [2].
Составной оператор определяет порядок выполнения операторов, перечисленных внутри скобок.
Формат использования: begin <оператор1>; … <оператор N> end;
Требования к выполнению:
– символ точка с запятой можно рассматривать как признак следования: т. е. выполнение следующего оператора должно начаться сразу же после того, как закончится выполнение предыдущего;
– end тоже можно рассматривать как разделитель (точка с запятой) и поэтому перед end точка с запятой не ставится;
– символы begin ... end. называют операторными скобками. Операторные скобки позволяют сделать программу более наглядной за счет выделения некоторых участков, имеющих возможно большую длину [7, C. 83].
Выполнение: составной оператор объединяет операторы, перечисленные внутри скобок, в единый объект обработки – блок.
Условный оператор позволяет выполнять то или иное действие в зависимости от результата проверки логического условия.
Формат использования: оператор проверки условия имеет две формы:
– полная форма: if <условие> then <оператор 1> else <оператор 2>;
– неполная форма: if <условие> then <оператор 1> [3, C. 92];
Требования к выполнению:
– <условие> должно быть логическим выражением;
– сложные условия задаются с помощью операций отношения: <,>, <>, <=,> = и могут соединяться между собой логическими операциями: and, or, not, которые обязательно заключаются в круглые скобки (см. таблицу 3);
– если в логическом условии указывается только имя переменной логического типа или ее отрицание, то проверяется значение этой переменной на истинность;
– в качестве <оператор 1> и <оператор 2> могут быть любые операторы, в том числе составной оператор [7, C. 62].
Выполнение условного оператора полной формы состоит в следующем: вычисляется значение логического условия. Если это значение истина (true), то выполняется <оператор 1>, иначе выполняется <оператор 2> и выполнение условного оператора заканчивается. Условный оператор неполной формы выполняется аналогично, только в качестве <оператор 2> взят пустой оператор. Варианты использования условного оператора отображены в Таблице 6.
При вычислении значения арифметического выражения необходимо предусмотреть проверку входных значений переменных, иначе это может привести к ошибочным (аварийным) ситуациям. Например, ошибка «деление на 0».
Оператор безусловного перехода изменяет порядок выполнения программы: управление передается оператору, помеченному меткой. Формат использования: goto <имя метки> [4, C. 69];
Применение оператора безусловного перехода обычно приводит к нарушению принципов структурного программирования, что усложняет чтение и отладку программ. У программистов считается «признаком дурного тона» использование этого оператора и вызывает подозрения о должной неподготовленности пользователя.
Таблица 6
Варианты использования условного оператора
|
Пример использования |
Пояснения |
|
If not A then x:=1 else x:= 0; |
Если отрицание значения логической переменной А равно истина, то x = 1, иначе x = 0 |
|
If (x < 0) and (y <> 1) then z:=abs (x) / (y – 1); |
Если x < 0 и y <> 1, то z присваивается значение выражения: abs (x) / (y – 1); |
|
If x mod 2 = 0 then write (x, ‘– четное’) else write (x, ‘– нечетное’); |
Если остаток от деления x на 2 равен 0, то выводится сообщение: «x – четное», иначе выводится сообщение: «x – нечетное» |
Источник: Авдеюк О. А. Информатика и программирование: основы программирования на языке Паскаль / О. А. Авдеюк, Л. Г. Акулов, В. Ю. Наумов; ВолгГТУ. – 2-изд., испр. – Волгоград, 2018. – С. 96.
Вместо использования оператора безусловного перехода для организации ветвящихся процессов примените условный оператор, а для организации циклов, замените его циклами с условиями [3].
Оператор выбора осуществляет переход на некоторое действие в зависимости от значения выражения и является общим случаем организации ветвления, нежели условный оператор.
Формат использования: case <выражение> of
<метка 1>: <оператор 1>;
<метка 2>, <метка 5>: <оператор 2>;
…
<метка N>: <оператор N>;
else <оператор N+1>
end [4, C. 93];
Требования к выполнению:
– <выражение> является выражением того же скалярного типа, что и метки;
– <метка 1>, …, <метка N> обязательно являются константами одного и того же скалярного типа, причем разного значения;
– если по разным значениям меток выполняются одни и те же действия, то можно упростить вид оператора, перечисляя данные метки через запятую;
– в качестве <оператор> может использоваться составной оператор, в т. ч. снова оператор выбора [18, C. 62].
Выполнение оператора выбора сводится к вычислению значения выражения <идентификатор> и если обнаруживается совпадение с i-той меткой, то выполняется i-тый оператор, иначе выполняется <оператор N+1>. Оператор цикла с параметром (безусловный цикл) позволяет повторять некоторое действие заданное число раз (тело цикла) [22].
Формат использования:
форма 1:
for <параметр цикла>:= <начальное значение> to <конечное значение> do <оператор>;
форма 2:
for <параметр цикла>:=< конечное значение> downto <начал-е значение> do оператор>;
Требования к выполнению:
– войти в цикл можно только через его начало; начальное значение параметра цикла не должно превышать конечного, если используется форма 1 и наоборот, начальное значение превышает конечное, если используется форма 2;
– переменная-параметр цикла должна быть описана как переменная целого типа;
– начальное и конечное значения параметра цикла могут быть переменными, тогда их значения определяются заранее, причем переменные должны быть того же типа, что и переменная-параметр;
– в качестве <оператор> может использоваться составной оператор, если циклически повторяется серия действий;
– прервать выполнение цикла можно двумя способами: либо увеличить значение параметра цикла до конечного, либо использовать процедуру break [2, C. 96].
Невозможно задать в языке Pascal шаг выполнения цикла, отличный от 1 или -1.
Выполнение: переменной-параметру присваивается начальное значение; если начальное значение не превышает конечного, то выполняется тело цикла. Каждый раз значение параметра цикла увеличивается на 1. Условием завершения цикла можно считать значение параметра, превышающее конечное значение на единицу [4].
Если начальное значение превышает или равно конечному значению, то выполняется тело цикла. Каждый раз значение параметра цикла уменьшается на 1. Условием завершения цикла можно считать значение параметра, на единицу меньше конечного значения.
Следует помнить о трех запретах при обращении к циклу с параметром:
– нельзя изменять параметр цикла в его теле, это может привести к досрочному выходу из цикла;
– нежелательно досрочно выходить из цикла с параметром;
– нельзя использовать значение параметра цикла после выхода из цикла, т. к. значение его не определено [6, C. 21].
Оператор цикла с предусловием в зависимости от результата проверки логического условия может осуществлять повтор действия.
Формат использования: while <условие> do <оператор>;
Требования к выполнению:
– <условие> должно быть логическим выражением;
– <условие> проверяется после исполнения каждой итерации;
– в качестве <оператор> может использоваться составной оператор, если циклически повторяется серия действий;
– <оператор> может ни разу не выполнится, если <условие> окажется ложным на первой итерации исполнения [11, C. 102].
Выполнение: пока значение выражения <условие> остается истина, происходит выполнение тела цикла, иначе цикл завершается, т. е. признак завершения работы оператора цикла с предусловием, когда значение выражения <условие> – ложь [2].
Оператор цикла с постусловием осуществляет повтор действия в зависимости от результата проверки логического условия.
Формат использования: repeat <оператор> until <условие>;
Требования к выполнению:
– <условие> должно быть логическим выражением;
– <условие> проверяется после каждой итерации исполнения;
– в качестве <оператор> может использоваться составной оператор;
– цикл с постусловием выполняется до тех пор, пока условие не станет истинным; – тело цикла выполнится обязательно хотя бы один раз [14, C. 112].
Выполнение тела цикла происходит до тех пор, пока значение выражения <условие> остается ложью, иначе цикл завершается, т. е. когда значение <условие> станет истина.
В программы необходимо вносить участки защиты от неправильно введенных данных.
Часто оператор цикла с постусловием применяют для проверки корректности ввода данных. Например, контроль ввода времени суток можно осуществить следующим образом: repeat
writeln ('Введите часы и минуты через точку');
readln (time);
x:= trunc (time); y:= frac (time) until (x < 24) or (x > 0) or (y < 0.59) or (y > 0) ; В этом примере, пока не будет корректно введено реальное время суток, будет повторяться цикл с запросом ввода [11, C. 85].
2.2. Подпрограммы
Использование стандартных процедур и функций не требует предварительного описания и дает ряд преимуществ, обеспечивая возможность:
– создания программ как отдельных отлаженных блоков, создаваемых разными пользователями с последующим объединением;
– экономии оперативной памяти ПК за счет однократного занесения подпрограммы в память и впоследствии многократного вызова;
– локализации в конкретной подпрограмме процесса поиска и исправления ошибок [13, C. 72].
Все переменные, используемые подпрограммами, могут быть либо глобальными, описанными в основной программе и доступными всем подпрограммам, либо локальными, описанными внутри подпрограммы и доступными только ей самой [21, C. 19].
Язык Pascal допускает любой уровень вложенности подпрограмм.
Считается недопустимым изменять содержимое глобальных переменных в подпрограммах, поскольку отследить содержимое таких переменных становится довольно сложно. В этом случае говорят о побочном эффекте, который приводит к нарушению принципов структурированности программы [2].
Рассмотрим на примерах программ primer_1 и primer_2 использование локальных и глобальных переменных посредством изменения значения переменной логического типа, примеры представлены в Таблице 7.
Поскольку значения логических переменных выводить нельзя, вывод значения переменной x организован через печать символьных имен значений (‘true’ / ’false’) [3].
Вызов подпрограмм осуществляется из основной программы, при этом выполнение основной программы приостанавливается, и управление передается в подпрограмму и возвращается по окончании работы подпрограммы [1, C. 152].
Таблица 7
Использование локальных и глобальных переменных посредством изменения значения переменной логического типа на примерах программ