
2009 г МОК, КазГАСА Информатика Заманова С.К.
Казахская головная архитектурно-строительная академия Активный раздаточный материал |
|
«Информатика» |
ФОЕНП |
3 кредита |
1-й семестр 2009 – 2010 уч. года |
Лекция №12: «Основные конструкции языка программирования Turbo-Pascal» |
Ассистент профессора Заманова Сауле Канабековна |
Краткое содержание занятия
Рассмотрены основные конструкции языка программирования Turbo Pascal
Лекцияда Turbo Pascal тілінің негізгі құрылымдары қарастырылған.
Условный оператор предполагает исполнение одного из двух действий в зависимости от истинности некоторого условия. Условный оператор может использоваться в полной или в сокращенной форме:
полная форма:
if <условие> then <оператор_1>
else <оператор_2>;
Принцип работы оператора: проверяется условие. Если условие выполняется (т.е. результат истинен), то выполняется <оператор 1>, следующий за THEN, а <оператор 2> следующий за ELSE, игнорируется. Если же условие нарушается, т.е. не истинно, то <оператор 1> игнорируется и выполняется <оператор 2>.
сокращенная форма:
if <условие> then <оператор_1>;
Ключевые слова, используемые в операторе, имеют следующий смысл: if – если, then – то, else – иначе.
Пример 1. Составить программу вычисления значения функции у в зависимости от значения х.
Program prim1;
var x, y:real;
begin read(x);
if x<pi проверка условия
then y:=sin(x) вычисляется при выполнении условия
else y:=cos(x); вычисляется при невыполнении условия
write (x,y);
end.
Составной оператор. В условном операторе после ключевых слов then и else может стоять лишь ОДИН оператор. Чтобы обойти это ограничение, используют составной оператор следующей структуры:
begin <оператор_1> ;
. . .
<оператор_n> ;
end;
Ключевые слова begin и end выполняют роль операторных скобок. Тело любой программы представляет собой один составной оператор. Составной оператор можно помещать в любом месте программы, где по правилам языка можно использовать лишь один оператор, а по условию задачи требуется несколько.
Оператор безусловного перехода имеет следующий формат:
goto <метка>;
Оператор перехода может стоять в любом месте тела программы, в том числе использоваться и в качестве оператора в условном операторе. Любой оператор в программе может быть помечен. Метка оператора ставится перед ним и отделяется от него двоеточием. Метка - это идентификатор или целое число без знака, принадлежащее интервалу [0, 9999]. Все метки, используемые в программе, должны быть описаны в разделе описания меток. Этот раздел открывается ключевым словом label и имеет следующую структуру:
label <метка_1> , ... , <метка_n>;
Оператор варианта представляет собой обобщение условного оператора и дает возможность выполнить одно из нескольких действий в зависимости от значения некоторого выражения. Формат оператора:
case <селектор варианта> of
<метки_варианта_1>:<оператор_1>;
. . .
<метки_варианта_k>:<оператор_k>
else <оператор_q>
end;
Селектор варианта - переменная или выражение любого скалярного типа, кроме типа real. Метка варианта - константа, тип которой совпадает с типом селектора варианта.
Пример 2. Составить программу: введите букву, если это буква А – то компьютер должен выдать сообщение «Здравствуй», если В – «Доброе утро!», если С – «До свидания», в остальных случаях – «Занятие окончено».
Program prim2;
var m1:CHAR описание символьной (буквенной) переменной m1
begin
readln(m1);
case m1 of сравнение введенной буквы А1 со всеми предложенными до else
‘a’, ‘A’: writeln (‘Здравствуй’);
‘b’,’B’: writeln (‘Доброе утро!‘); выполняется при совпадении
‘c’,’C’: writeln (‘До свидания‘);
else writeln (‘Занятие окончено’); выполнение при несоответствии
end конец оператора case
end.
Операторы цикла. Одним из наиболее простых средств организации повторного выполнения серии команд являются циклы. В языке Паскаль возможна организация циклов трех видов:
1. циклы с предусловием (пока – while do);
2. циклы с параметром (для – for to/downto);
3. циклы с постусловием (до – repeat until).
Каждый из трех способов организации цикла имеет свои особенности, для каждого способа есть свой круг задач, наиболее естественно решаемых именно с его помощью.
1. Оператор цикла с предусловием (цикл пока) используют в том случае, когда необходимо, чтобы вначале проверялось некоторое условие, а затем, если условие истинно, выполнялись некоторые действия. Цикл ─ "пока" служит для организации n-кратного выполнения группы операторов (тела цикла) до тех пор, пока остается истинным условие выполнения цикла. Формат оператора:
while <условие> do < тело_цикла >;
Принцип работы оператора: вычисляется значение выражения - условия. Если оно истинно, то выполняется тело цикла. В противном случае выполняется оператор, стоящий после оператора цикла "пока" (т.е. тело цикла выполняется до тех пор, пока значение условия не станет равным FALSE).
Пример 3. Вычислить сумму следующего ряда: 1 + 1/2 + 1/3 + 1/4 + ... + 1/n с использованием оператора цикла с предусловием.
program WhileSer (Input, Output);
var Sum : real;
i, n : integer;
begin Write ( 'Введите количество членов ряда : ' );
Readln ( n );
i:= n;
Sum:= 0;
while ( i >= 1 ) do
begin
Sum:= Sum + 1/i;
i:= i - 1;
end;
writeln ( 'Сумма ', n, ' членов ряда равна ', Sum );
end.
2. Оператор цикла с параметром (цикл для) используется обычно в тех случаях, когда заранее (до начала выполнения цикла) можно определить количество повторений цикла. Цикл с параметром служит для организации n-кратного выполнения тела цикла для значений параметра цикла из некоторого упорядоченного дискретного множества. Оператор цикла с параметром имеет две формы записи:
1. for <параметр> := <выражение_1> to <выражение_2> do
<тело_цикла>;
2. for <параметр> := <выражение_1> downto <выражение_2> do
<тело цикла>;
Параметр (управляющая переменная, индекс, счетчик) - переменная дискретного типа. Чаще всего используются переменные типа integer (но допустимы char и boolean). Не разрешен к применению тип real. Выражение_1 и выражение_2 (начальное и конечное значения параметра) – это константа, переменная или выражение того же типа, что и параметр цикла. Тело цикла - это оператор, следующий за ключевым словом do. Если необходимо повторить несколько операторов, то они заключаются в операторные скобки begin и end, и телом цикла становится составной оператор.
Пример 4. Использование операторов цикла с параметром.
а) Вычислить сумму следующего ряда: 1 + 1/2 + 1/3 + 1/4 + ... + 1/n. Решение с помощью цикла for…to.
program ForSer (Input, Output);
var Sum: real;
i, n : integer;
begin Writeln ( 'Введите количество членов ряда: ' );
Readln (n);
Sum:= 0;
for i:= 1 to n do
Sum := Sum + 1/i;
Writeln ( 'Сумма ', n, ' членов ряда равна ', Sum ) ;
end.
б) Вычислить значение n!. Решение с помощью цикла for … downto:
program FactN (Input, Output);
var Factorial, n, i : integer;
begin Writeln ('Введите натуральное число n: ' );
Readln (n);
Factorial:= 1;
for i := n downto 2 do
Factorial:= Factorial * i;
Writeln ( 'Факториал числа ', n, ' равен ', Factorial ) ;
end.
3. Оператор цикла с постусловием (цикл до) используется в том случае, когда целесообразно организовать повторение так, чтобы сначала выполнялась некоторая последовательность действий, а затем проверялось условие прекращения ее выполнения. Цикл - "до" служит для организации n-кратного выполнения группы операторов (тела цикла) до тех пор, пока условие завершения цикла не станет истинным. Формат оператора:
repeat
<оператор 1> ;
. . .
<оператор N> ;
until <условие> ;
Значение ключевых слов: repeat - повторять, until - до.
Пример 5. Вычислить сумму следующего ряда: 1 + 1/2 + 1/3 + 1/4 + ... + 1/n с использованием оператора цикла с постусловием.
program UntilSer (Input, Output);
var Sum : real;
i, n : integer;
begin Writeln ('Введите количество членов ряда: ');
Readln (n);
i:=n;
Sum:= 0;
repeat
Sum := Sum + 1/i;
i := i - 1;
until ( i < 1 );
Writeln ('Сумма ', N,' членов ряда равна', Sum);
end.