няться следующие правила:
а) селектор должен относиться к одному из целочисленных (находящихся в диапазоне – 32768 … 32767), логическому, символьному или пользовательскому типу;
б) список констант выбора состоит из произвольного количества значений или диапазонов, отделённых друг от друга запятыми;
в) все константы выбора должны иметь тип, совместимый с типом селектора;
г) все константы должны быть уникальны, диапазоны не должны пересекаться.
Примеры
1. Программа, которая в зависимости от номера месяца выдаёт сообщение о времени года
program seasons; var k: integer; begin
writeln (‘ введите номер месяца ‘); read ( k );
case k of
1, 2, 12 : writeln (‘ зима ’); 3, 4, 5 : writeln (‘ весна ’); 6, 7, 8 : writeln (‘ лето ‘); 9, 10, 11: writeln (‘ осень ’ ) end
end.
2. Селектор интервального типа case f of
1 .. 10 : writeln (‘ число’, f:4, ‘в интервале [1 .. 10]’); 11 .. 20 : writeln (‘ число’, f:4, ‘в интервале [11..20]’); 21 .. 30 : writeln (‘ число’, f:4, ‘в интервале [21..30]’) else writeln (‘ число’, f:4, ‘ вне интервала [1 .. 30]’) end;
3. Селектор символьного типа var ch : char;
. . . . . . . . . . .
begin
29
. . . . . . . . . . .
readln (ch); case ch of
‘n’, ‘N’ : writeln (‘ Нет’); ‘y’, ‘Y’ : writeln (‘ Да ‘)
end;
. . . . . . . . . . . . . . .
4.Дан текст, содержащий только три буквы a, b, с и оканчивающийся точкой. Подсчитать количество вхождений каждой буквы. Написать программу с оператором CASE.
program variant;
var s : char; k1, k2, k3 : integer; begin
readln;
write ( ‘ => ‘); k1:=0; k2:=0; k3:=0; repeat
read (s); case s of ‘ . ‘ : ;
‘ a ‘ : k1:= k1 + 1; ‘ b ‘ : k2:=k2 + 1; ‘ c ‘ : k3:=k3 + 1 end
until s = ‘ . ‘;
writeln (‘ букв а - ‘, k1 : 3,’ букв b – ‘, k2 : 3,’ букв с – ‘, k3 : 3) end.
5.Селектор с явным описанием перечисляемого типа
var oper : ( plus, minus, mult );
. . . . . . . . . . . . . . . . . . . . . . . . .
begin
. . . . . . . . . . . . . . . . . . . . . . . . .
case oper of plus : x:=x + y; minus : x:=x – y; mult : x:=x * y end;
30
3.4. Операторы цикла
Циклы – многократно повторяемые этапы вычислений, позволяющие выполнять группу операторов при изменении одного или нескольких параметров одновременно. В зависимости от постановки задачи различаются два основных типа: циклы с известным числом повторений и итерационные циклы. По структуре циклы делятся на простые (не содержат в себе других циклов) и сложные (содержащие в себе один или несколько циклов). Программы циклической структуры могут быть организованы с помощью условных операторов и операторов перехода. Однако в языке Паскаль имеются специальные операторы цикла: с параметром (FOR), с предусловием (WHILE) и с постусловием (REPEAT).
3.4.1. Оператор цикла FOR
Если число повторений цикла заранее известно, то чаще всего применяется оператор цикла с параметром. Общий вид
FOR I := M1 TO M2 DO S,
где I – параметр цикла (переменная порядкового типа);
M1 и M2 – выражения того же типа, что и параметр цикла, означающие соответственно начальное и конечное значения параметра цикла;
S – произвольный оператор (простой или составной).
При прочтении данного оператора ЭВМ присваивает параметру цикла I начальное значение М1
I := M1;
затем I сравнивается со своим конечным значением М2, то есть проверяется условие
I <= M2.
Если это условие выполняется, то выполняется оператор S, затем параметр цикла получает новое значение
I := SUCC(I),
и цикл повторяется. В противном случае оператор цикла FOR завершает свою работу.
Если параметр цикла целого типа, то при очередном повторе его значение увеличивается на единицу.
31
Примеры
1.Вычислить значения функции y = xi для I = 1,2, …, 10. program cvp1;
var x,y : real; I : byte; begin
write (‘ введите х’); readln (x);
y := 1;
for I := 1 to 10 do begin
y := y * x;
writeln ( ‘ y=’,y : 8 : 3);
end
end.
Отметим, что параметром цикла может быть любой порядковый тип, например, символьный.
2. Вывести на экран последовательность латинских букв a, b, c, …, z. Несложная программа может иметь вид:
program ch1; var i, j, k : integer; begin
i := ord (‘a’); j := ord (‘z’);
for k := i to j do write (chr (k), ‘ ‘)
end.
Здесь возможна и более изящная реализация: program ch2;
var c : char; begin
for c := ‘a’ to ‘z’ do write ( c, ‘ ‘)
end.
Существует еще одна форма счетного оператора цикла FOR FOR I := M1 DOWNTO M2 DO S;
Замена зарезервированного слова TO на DOWNTO означает, что параметр цикла на очередном повторе принимает новое значение согласно выражению
I := PRED (I);
а управляющее условие приобретает вид
I >= M2
32
Цикл завершается, как только I < M2. Если параметр цикла целого типа, то при очередном повторе его значение уменьшится на единицу.
Таким образом, задать в операторе цикла FOR шаг изменения параметра цикла, отличный от +1 или -1, нельзя.
Для оператора FOR существуют следующие ограничения.
1.Начальное и конечное значения параметра цикла изменять внутри цикла нельзя.
2.Войти в цикл можно только через его начало (заголовок цикла), а выйти – либо по завершении циклической процедуры, либо при выполнении оператора перехода по метке, расположенной вне данного цикла.
Итак, оператор FOR следует использовать в тех случаях, когда заранее известно число повторений или его можно подсчитать. Например, при изменении значения переменной от хн до хк с шагом h количество повторений n подсчитывается по формуле
n = [xk xн ] 1. h
Квадратные скобки указывают на то, что результат округляется до целой части путем отбрасывания дробной.
Примеры
|
2 |
x |
|
|
1. Протабулировать функцию y = tg |
|
|
1 |
в интервале [ xн, хк ] с |
|
2 |
|||
|
|
|
|
|
шагом ∆х = h
program cvp2;
var xn, xk, h, y : real; i, n : integer; begin
writeln (‘ введите xn, xk, h’); readln (xn, xk, h);
x: = xn;
n: = trunc ((xk – xn)/h) + 1; begin
y := sqr( sin ( x/2)/ cos ( x/2 )) +1; writeln ( x: 10 : 2, y : 16 : 2);
x: = x+h
end end.
33
| 05_Холера |
| 10.4. Исследование регистров |
| 1112 |
| 12 |
| 1285 |
| 1560 |
| 1568 |
| 1604248853606027 |
| 1673 |
| 17 |