
- •Тема 2.2. Основные понятия языка программирования высокого уровня Free Pascal
- •Системы программирования
- •Интегрированная среда разработки FreePascal
- •Введение в язык Паскаль Характеристика языка программирования Паскаль
- •Основные понятия технологии программирования
- •Алфавит языка Паскаль
- •Структура программы на Паскале
- •Типы данных
- •Стандартные типы данных
- •Структуры данных
- •Строковый тип
- •Структурированные переменные
- •Представление основных структур программирования на языке Паскаль Операции и выражения
- •Арифметические операции и выражения
- •Логические операции
- •Оператор присваивания
- •Составной оператор
- •Условный оператор
- •Процедура write
- •Процедура ввода
- •Оператор выбора
- •Операторы повторений
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Метки и операторы перехода
- •Работа с массивами
- •Операции над строками
- •Функция Length
- •Функция Upcase
- •Функция Сopy
- •Функция Pos
- •Процедуры Insert и Delete
- •Процедура Str
- •Процедура val
- •Практические примеры работы со строковыми данными
- •Оператор присоединения with
- •Процедуры и функции Паскаля
- •Формальные и фактические параметры
- •Типизированные константы
- •Interface
- •Implementation
- •Interface
- •Interface
- •Implementation
- •Файловый тип данных Типизированные файлы
- •Текстовые файлы
Составной оператор
Составной оператор– это последовательность произвольных операторов программы, заключенная в операторные скобки – зарезервированные слова begin ... end. Операторы разделяются точкой с запятой ;.
Исполняемая часть программы является составным оператором такого рода.
Составной оператор служит, в первую очередь, для того, чтобы несколько операторов синтаксически объединить в один. Это часто требуется там, где нужно выполнить несколько операторов, когда допустим лишь один. Понятие составного оператора позволяет с помощью команд begin и end объединить несколько операторов и рассматривать их с точки зрения синтаксиса как один оператор. На характер операторов, входящих в составной оператор, не накладывается никаких ограничений. Среди них могут быть и другие составные операторы.
begin
.........
begin
............
begin
............
............
............
end;
............
end;
............
end;
При исполнении операторов точка с запятой служит разделителем для двух операторов. Точкой с запятой перед заключительным end можно пренебречь.
begin begin
read(i); read(i);
write(i); write(i)
end. end.
Обе записи верны, поскольку можно считать, что между write(i); и end находится пустой оператор. Пустой оператор– оператор, который не выполняет никаких операций и ничего не изменяет в данных и в программе. Пустому оператору соответствует отсутствие записи на том месте, где по правилам должен быть какой-нибудь оператор. После него можно ставить символ точки с запятой, например:
A := B;
R := 2;
;
K := 7.2;
У начинающих программистов часто возникает вопрос: где правильно поставить знак точки с запятой? Чтобы на него ответить, обратимся к обычному естественному языку. В любом перечне элементов между ними ставится запятая, например:
А, В, С, Д.
Если эти элементы объединить в одну группу, заключив их в круглые скобки (А, В, С, Д), то запятая ставится опять-таки между элементами: после открывающей и перед закрывающей скобками запятая не указывается. Если эта группа элементов входит в состав другой группы, то запятая ставится и между группами, например:
((А, В, С, Д), (К, М), Е, (Х, У))
Подобная система введена и в языке Паскаль, только в нем роль круглых скобок выполняют операторные скобки BEGIN – END, вместо запятой ставится точка с запятой, а вместо элементов – операторы.
Условный оператор
Условный оператор позволяет проверить некоторое условие и в зависимости от результата выполнить то или иное действие. С помощью этого оператора программируются алгоритмы разветвляющейся структуры.
Структура условного оператора:
IF <условие> THEN <оператор1> ELSE <оператор2>,
где IF, THEN, ELSE – зарезервированные слова (если, то, иначе);
<условие> – произвольное выражение логического типа;
<оператор1>,<оператор2> – любые операторы языка.
Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение <условие>. Если результат есть TRUE (истина), то выполняется <оператор1>, а <оператор2> пропускается; если результат есть FALSE (ложь), наоборот, <оператор1> пропускается, а выполняется <оператор2>. Например:
var
x, y, max : real;
.................
if x > max
then y := max
else
y := x;
Этот условный оператор читается: если условие x > max выполняется, то y := max, иначе y := x.
Часть ELSE <оператор2>условного оператораможет быть опущена. Тогда при значении TRUE условного выражения выполняется <оператор1>, в противном случае этот оператор пропускается.
Если требуется выполнить после then или else несколько операторов, они обрамляются командами begin и end, образуя тем самым составной оператор. Перед else никогда не ставится точка с запятой (поскольку это еще не конец оператора if).
Задача. Пусть задана функция
Y=0, если x<=0
Y=X3, если x>0
Написать программу вычисления значения Y по значению X.
Программа может выглядеть так:
program task2; {заголовок программы}
var x, y : real; {описание переменных}
begin {начало исполняемой части}
readln(x);
if x <= 0 then y:= 0 else y := x*x*x;
write(y)
end. { конец исполняемой части }
<Оператор1> и <Оператор2> по определению любой оператор языка, следовательно и условный.
Задача. Пусть значение Y зависит от значения X.
Сocтавить программу вычисления значения Y по значению X.
Программа
program task;
var x, y : real;
begin
read(x);
if x < 2 then
y := x
else
if x < 3 then
y := 2
else
y := –x+5;
write(y)
end.
Если удовлетворено условие х < 2, то y получит значение, равное значению х, это значение затем будет выведено. Если условие х < 2 не удовлетворяется, то значение y будет определено выполнением условного оператора
if x < 3 then y := 2 else y := –x + 5
Если else отсутствует, а после оператора then вновь стоит оператор if, то возникает неоднозначность трактовки условий. Эта неоднозначность решается следующим образом: любая встретившаяся часть else соответствует ближайшей к ней “сверху” части then условного оператора. Приведенное высказывание понимается так
if <условие1> then
begin
if < условие2> then
< оператор1>
else
< оператор2>
end
Задача. Написать программу вычисления функции Z
Программа
program task4;
var X, Z : real;
begin
readln (x);
if x < 1 then
Z := sin(x)
else
if x < 2 then
Z := cos(x)
else
Z := cos(x)/2;
write (‘Z= ‘, Z:5:3)
end.
Для того чтобы выделить три ветви решения, достаточно двух условных операторов if x< 1 then Z := sin(x) else <условный оператор 2>.
<Условный оператор 2>: if x<2 then Z := cos(x) else Z:=sin(x)/2.
Следует обратить внимание на оператор (будем условно называть так процедуру в этом случае) вывода write. В операторе write (‘Z= ‘, Z:5:3) дана команда на вывод константы ‘Z= ‘ и переменной Z с форматом вывода: пять позиций на все число, из них три на дробную часть.