Материал: Паскаль. типы данных, операторы. методические указания для самостоятельной работы по дисциплине «Информатика». Кононов А.Д., Кононов А.А

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

няться следующие правила:

а) селектор должен относиться к одному из целочисленных (находящихся в диапазоне – 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