Реализация. Паскаль унаследовал от Алгола-60 синтаксис, согласно которому в ветвях условного оператора может быть помещена только одна команда
Паскаль унаследовал от Алгола-60 синтаксис, согласно которому в ветвях условного оператора может быть помещена только одна команда. Поэтому для размещения там бо́льшего количества команд они группируются в составной оператор с помощью пары ключевых слов begin и end. Ветвь else необязательна. begin и end необходимы, только если операторов несколько, если же оператор один, то они не нужны, хотя могут и присутствовать (например, из соображений единообразия оформления кода). В примере — оператор выбора в Паскале: If условие Then begin операторы; end else begin операторы; end; C, C++ и их потомки C и C++ (а вслед за ними и Java, C#, PHP и множество других языков) имеют условный оператор, структурно аналогичный Паскалю. Отличие состоит в том, что условие должно быть записано в круглых скобках, а вместо ключевых слов begin и end используются фигурные скобки {}: if(<условие>) { <операторы> } else { <операторы> } Оператор варианта (case) Оператор варианта case приводит к выполнению оператора, ко торому предшествует константа выбора, равная значению переключа теля или диапазону выбора, в котором находится значение переклю чателя. Если такой константы выбора или такого диапазона выбора не существует и присутствует ветвь else, то выполнятся оператор, следующий за ключевым словом else. Если же ветвь else отсутству ет, то никакой оператор не выполняется. 15. Процедуры. Назначение, варианты реализации.
- исключить необходимость одинаковых кусков кода; - обеспечить однообразную обработку данных одного типа (имеющих одинаковые имена) - возможность переноса из 1ой программы в другую Процедура имеет такую же структуру, как и программа, но с двумя отличиями: • заголовок процедуры имеет другой синтаксис и включает служебное слово procedure; • описание процедуры заканчивается точкой с запятой (а не точкой). Все имена, описанные в программе до процедуры, действуют во всей программе и в любой ее подпрограмме (если они там не описаны заново). Они называются глобальными, в отличие от локальных имен, описанных в процедуре и действующих лишь в ней. Данные для обработки могут передаваться процедуре через глобальные имена или через аргументы процедуры. В процедуре каждый аргумент имеет свое имя - формальный параметр, описываемый в заголовке процедуры по схеме procedure<имя> (<список описаний формальных параметров>) Описание формальных параметров может иметь вид <список имен>: <тип> или var<список имен>: <тип> В первом случае говорят о параметрах-значениях, во втором - о параметрах-переменных. В простейшем случае заголовок процедуры может содержать только имя процедуры. Оператор вызова процедуры имеет вид <имя процедуры> (<список выражений>); Указанные выражения называют фактическими параметрами. Их список должен точно соответствовать списку описаний формальных параметров процедуры. Во время вызова процедуры каждому параметру-значению присваивается значение соответствующего фактического параметра и поэтому их обычно используют для передачи входных данных. Параметры-переменные следует использовать для представления результатов процедуры.
16. Функции. Назначение, варианты реализации.
Функция - это подпрограмма, определяющая единственное скалярное, вещественное или строковое значение. Отличия подпрограммы-функции от процедуры: • заголовок функции начинается со служебного слова function и заканчивается указанием типа значения функции: function<имя> (список описаний формальных параметров): <тип>; •раздел операторов функции должен содержать хотя бы один оператор присваивания имени функции; • обращение к функции - не оператор, а выражение вида <имя функции> (<список фактических параметров>). Функции (и процедуры) могут использовать свое имя в собственном описании, т.е. могут быть рекурсивными. Пример: составим программу, которая для заданных четырех натуральных чисел а, b, с, d напечатает наибольшие общие делители первой и второй пар чисел и сравнит их по величине. В программе определим рекурсивную функцию nod(x,y) по формулам | x, если у = 0 nod(x,y) = | nod(y.x). если х < у | nod(xmodу,у), если х > у Применяя эти формулы к числам 21 и 15, последовательно находим nod(21,15) = nod(6,15) = nod(15,6) = nod(3,6) = nod(6,3) = nod(0,3) = nod(3,0) = 3. Внимание! В теле функции обязательно должен быть хотя бы один оператор присваивания, где в левой части стоит имя функции, а в правой - ее значение. Иначе, значение не будет определено.
|