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
| 05_Холера |
| 10.4. Исследование регистров |
| 1112 |
| 12 |
| 1285 |
| 1560 |
| 1568 |
| 1604248853606027 |
| 1673 |
| 17 |