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

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

2. Дан текст, содержащий 30 символов. Подсчитать количество вхождений символов а и в.

program kol;

var k, l, i : integer; a : char; begin

k:= 0 ; l: = 0;

for i : = 1 то 30 do begin

read ( a);

if a = ‘ a ‘ then k: = k+1

tlse if a = ‘ b ‘ then l := l +1;

end;

readln;

writeln ( ‘ символов а-‘,k : 3,’ символов в-‘ , l : 3)

end.

Контрольные вопросы и упражнения

1. Найти значения s для следующих циклов с параметром при условии, что раздел описания переменных имеет следующий вид:

Var s, i : integer; sim : char ; l : boolean;

а) s: = 0; for i : = 5 to 7 do s : = s+1;

б) s: = 0; for i: = 10 downto 6 do s: = s+1;

в) s: =0; for sim: = ‘a’ то ‘d’ do s: = s+1;

г) s: = 0; for l : = false то true do s: = s+1;

2.Найти сумму целых положительных чисел, кратных 4, из диа-

пазона [1, 100].

3.Найти сумму целых положительных четных чисел, меньших

100.

4.Найти сумму целых положительных нечетных чисел, мень-

ших 200.

5.Найти сумму целых положительных чисел, больших 20, меньших 100 и кратных 3.

34

3.4.2. Оператор цикла WHILE

Оператор цикла с предусловием позволяет организовать цикл с неизвестным числом повторений. Общий вид записи оператора

WHILE B DO S;

где В – выражение логического типа, S – простой или составной оператор (тело цикла).

Выполнение оператора начинается с вычисления значения В. Если оно имеет значение TRUE, то выполняются операторы, входящие в тело цикла. Как только логическое выражение примет значение FALSE, выполнение операторов цикла прекращается. Если выражение булевского типа было ложно сразу при первом входе в цикл, то оператор S не выполнится ни разу. Очевидно, что один из операторов, находящихся внутри цикла должен влиять на значение выражения В, поскольку иначе цикл будет повторяться бесконечно.

Примеры

1.Вывестинаэкранпоследовательность четныхчисел от2 до12. program test1;

var k : integer; begin

k := 0;

while k <= 10 do begin

k := k +2; write (k : 4)

end

end.

2.Составить программу для вычисления и вывода на экран

функции y

2x

x 1

e x

приизменении х от -2 до 3 с шагом 0.25.

 

x

2

1

 

 

 

 

program f1; var x, y : real; begin

x := -2;

while x <= 3 do begin

35

y := (2 * x * sqrt (x + 1) – exp (-x)) / ( x * x +1); writeln (x : 6 : 1, y : 7 : 3);

x := x + 0.25

end

end.

3.Составить программу для определения наименьшего цело-

го положительного к, при котором функция

xk

становится меньше

k

 

 

заданного а.

Очевидно, что в этом примере число повторений цикла заранее не известно, оно зависит от значений x и а. Логическим выражением

xk

здесь является выражение k < a.

program f2;

var x, y, a, p : real; k : integer; begin

writeln (‘ введите х, a’); readln (x, a);

k := 1; p := x; while p / k < a do begin

p := p * x; k := k + 1 end;

writeln (k)

end.

В этой программе для сокращения вычислений выражение

xk

k

для значений k = 1, 2, … определяется как произведение p := p * x, начальное значение р равно х.

4. Дано целое число n. Подсчитать количество цифр данного числа.

program f3;

var m, n : integer;

k : integer; { счетчик цифр } begin

writeln (‘ введите целое число ‘); readln (n);

36

k := 0; m := n; while m <> 0 do

begin

k := k + 1;

m :=m div 10 { уменьшение числа на последнюю цифру }

end;

writeln (‘ количество цифр в числе n’, n, ‘ равно ‘, k)

end.

Контрольные вопросы и упражнения

1.Какое значение примет переменная f после вычисления следующих операторов:

а) i := 1; f := 2; while i < 6 do begin i := i + 1; f := f + i end; б) i :=1; f := 2; while I < 6 do begin i := i + 1; f := f * I end;

2.Сколько раз выполнится тело цикла для следующих операто-

ров?

x:= 2; f := 3; while x <= 5 do begin f := f + sqr (x); x := x +

0.25end;

3.Дана последовательность операторов:

a := 1; b := 1;

while a + b < 8 do begin a := a + 1; b := b + 2 end; s := a + b;

Сколько раз выполнится проверка логического выражения в операторе while? Определите значения переменных a, b и s после выполнения этой последовательности операторов.

3.4.3. Оператор цикла REPEAT

Оператор цикла с постусловием также не требует предварительного определения числа повторений. В отличие от оператора WHILE в операторе REPEAT условие проверяется после выполнения тела цикла.

Общий вид

REPEAT S1; S2;

. . .

37

SN

UNTIL B;

где S1, S2, . . . , SN – операторы тела цикла; В – логическое выражение.

При прочтении данного оператора ЭВМ сначала выполняет операторы тела цикла. Затем вычисляется выражение В и если оно имеет истинное значение, то осуществляется выход из цикла. Если же значение выражения В ложно, то выполнение операторов S1, S2, … , SN повторяется, а затем снова вычисляется выражение В.

Отметим, что тело цикла REPEAT может содержать произвольное число операторов без записи их в составном операторе.

Примеры

Составим программы для некоторых примеров предыдущего раздела с использованием оператора REPEAT.

1.Вывестинаэкранпоследовательность четныхчисел от2 до12. program test2;

var k : integer; begin

k := 0; repeat

k := k + 2; writeln (k : 3) until k > 10

end.

2.Составить программу для вычисления и вывода на экран

функции y

2x

x 1

e x

при изменении х от -2 до 3 с шагом 0.25.

 

x

2

1

 

 

 

 

program f2; var x, y : real; begin

x := -2; repeat

y := (2 * x * sqrt (x+1) – exp (-x)) / (x * x+1); writeln (x : 6 :1, y : 7 : 3);

x := x + 0.25 until x > 3

end.

38