- •Федеральное агентство по образованию
- •Государственное образовательное учреждение высшего профессионального образования
- •«Орловский государственный технический
- •Университет»
- •Учебно-научно-исследовательский институт информационных технологий
- •Печатается по решению редакционно-издательского совета ОрелГту орел 2010
- •302030, Г. Орел, ул. Московская, 65
- •1 Цель проведения лабораторных работ
- •2 Подготовка к выполнению лабораторных работ
- •3 Основные операторы языка паскаль
- •3.1 Среда turbo pascal
- •3.2 Операторы turbo pascal
- •3.2.1 Условный оператор
- •3.2.2 Оператор варианта
- •3.2.3 Операторы цикла
- •3.2.3.1 Оператор цикла с параметром
- •3.2.3.2 Оператор цикла с предусловием
- •3.2.3.3 Оператор цикла с постусловием
- •4 Основные процедуры графического модуля
- •5 Объектно-ориентированная модель turbo pascal
- •5.1 Основные концепции ооп
- •5.1.1 Абстрактные типы данных. Инкапсуляция
- •5.1.2 Классы
- •5.1.3 Наследование
- •5.1.4 Полиморфизм. Раннее и позднее связывание
- •5.2 Динамические объекты
- •6 Задания к лабораторным работам
- •7 Контрольные вопросы
- •8 Содержание отчета
- •9 Список литературы
3.2.2 Оператор варианта
Данный оператор является обобщением условного оператора для случая произвольного числа альтернатив. Он сопоставляет различным значениям некоторого выражения соответствующие им операторы.
Пример.
…
case CurColor of
Red: X:=X+2;
Yellow: X:=Y-2;
Green: X:=Y
end;
…
CurColor – в примере это переменная перечислимого типа. Сначала вычисляется текущее значение переменной CurColor. Затем это значение сопоставляется (сравнивается) с константами, записанными перед операторами. При совпадении значения переменной с одной из констант будет выполнен оператор, помеченный данной константой. На этом выполнение оператора будет завершено. Если значение переменной CurColor не совпадает ни с одной из констант, то данный оператор не выполняет никаких действий. Для того, чтобы задать некоторые действия для случая такого несовпадения, можно использовать альтернативу else:
Пример.
…
case (K+1)*2 of
2: Add(A,B);
4: Multiply(A,B);
0: Subtract(A,B)
else
writeln(‘ошибка!’)
end;
…
Кроме одиночных констант в альтернативах оператора варианта могут быть заданы списки и/или диапазоны значений, которые в этом случае разделяются символом «,».
Пример.
…
case Switch of
1..2: begin Proc1; Proc2; Proc3 end;
3,4,10..20: Proc4;
5,6: Proc5;
else
Proc6;
Proc7;
end;
…
При использовании оператора варианта должны выполняться следующие правила:
1. Значения выражения-«переключателя», записанного после служебного слова case, должно принадлежать упорядоченному типу и иметь размер 1 байт или 1 слово.
2. Все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом выражения.
3. Все константы в альтернативах должны быть уникальны в пределах оператора варианта (то есть повторения констант в альтернативах не допускается); диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах.
При необходимости задания нескольких операторов для каких-либо из альтернатив, следует сгруппировать их в составной оператор, в то время как ветвь else допускает последовательность операторов, разделенных символом «;».
3.2.3 Операторы цикла
Задают повторяющееся выполнение некоторых операторов.
3.2.3.1 Оператор цикла с параметром
Предусматривает повторное выполнение некоторого оператора с одновременным автоматическим изменением значения, присваиваемого управляющей переменной (параметру) этого цикла. Управляющая переменная должна быть упорядоченного типа и начальное и конечное ее значения должны быть совместимы с упорядоченным типом. Начальное и конечное значения вычисляются один раз (это выражения), и параметр цикла не должен изменяться внутри цикла с параметром. Если при спецификации to (downto) начальное значение больше (меньше) конечного значения, то цикл не выполняется. При нормальном выходе из цикла с параметром значение параметра остается неопределенным.
Пример {вычисление h(n)=1+1/2+1/3+…+1/n}
Program exfor;
var n,i: integer;
H: real;
begin
read(n); write(n);
h:=0;
for i:=n downto 1 do
h:=h+1/i; n:=n-1;
writeln(h)
end.