Задание 2. Дана последовательность операторов. Сколько раз будет повторен цикл и какими будут значения переменных a, b, s?
a:=1;
b:=2;
while a+b<8 do
begin
a:=a+1;
b:=b+2;
end;
s:=a+b
Ответ: 2 раза будет повторен цикл, a=3, b=6, s=9.
Задание 3. Требовалось написать программу вычисления факториала. Программист написал его неправильно. Ниже представлена программа, в которой содержатся ошибки. Найдите ошибки и внесите исправления.
Задание 4. Проанализируйте следующий цикл. В чём его особенность?
Значение переменной «c» будет типом boolean, то есть значение будет true или false. Выражение c:=a=b проверяет равенство «a» и «b» и будет делать проверку, пока a < b. В этом случае программа зациклится.
Задание 5. Запишите на языке Паскаль программы решения задач № 26-30 из параграфа 2. Используйте оператор while.
Ответ: 4 раза будет повторен цикл, a=5, b=16, s=21.
Задание 7. Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введен ноль) и подсчет суммы и среднего арифметического введенных положительных чисел. Используйте оператор repeat.
а) используя оператор repeat:
program z9_a;
var a,b,с: integer;
begin
write(‘Введите два числа: ‘);
readln(a, b);
if a < b then с := a + 1 else с := b + 1;
repeat с := с — 1
until (a mod с = 0) and (b mod с = 0);
write(‘NOD = ‘, с)
end.
б) используя оператор while:
Задание 10. Сколько раз будет выполнен цикл?
а) for i
а) 16 раз
б) 6 раз
в) 3 раза
г) 1 раз
д) 3 раза
Задание 11. Напишите программу, которая 10 раз выводит на экран ваши имя и фамилию.
program z11;
var a, b: string; i: integer;
begin
write(‘Введите имя: ‘);
readln(a);
write(‘Введите фамилию: ‘);
readln(b);
for i:=0 to 9 do
writeln (a,’ ‘,b);
end.
Задание 12. Напишите программу, выводящую на экран изображение шахматной доски, где черные клетки изображаются звёздочками, а белые – пробелами.
program z11;
var a, b: string; i, k, n: integer;
begin
a:=’*’;
b:=’ ‘;
for i:=0 to 3 do begin
for k:=0 to 3 do
write (b,a);
writeln;
for n:=0 to 3 do
write (a,b);
writeln;
end;
end.
А) первых n натуральных чисел;
б) квадратов первых n натуральных чисел;
в) всех чётных чисел в диапазоне от 1 до n;
г) всех двузначных чисел.
program z13;
var i, z1, z2, z3, z4, n: integer;
BEGIN
write(‘Введите n: ‘);
readln(n);
z1 := 0;
z2 := 0;
z3 := 0;
z4 := 0;
for i := 1 to n do
begin
z1 := z1 + i;
z2 := z2 + sqr(i);
if i mod 2 = 0 then z3 := z3 + i;
end;
for i := 10 to 99 do z4 := z4 + i;
writeln(‘Сумма первых n натуральных чисел: ‘, z1);
writeln(‘Сумма квадратов первых n натуральных чисел: ‘, z2);
writeln(‘Сумма всех четных чисел: ‘, z3);
writeln(‘Сумма всех двухзначных чисел: ‘, z4);
END.
Задание 14. Напишите программу, которая генерирует 10 случайных чисел в диапазоне от 1 до 20, выводит эти числа на экран и вычисляет их среднее арифметическое.
program z13;
var i, s, d: integer; sr: real;
BEGIN
s:=0;
for i:=1 to 10 do begin
d:= random(20)+1;
writeln(i, ‘ число: ‘, d);
s:=s+d
end;
sr:=s/i;
writeln(‘Среднее арифметическое: ‘, sr)
END.
Задание 15. Запишите на языке Паскаль программы решения задач 33 и 34 из параграфа 2. Используйте оператор for.
program z15_1;
var i, a, b, k: integer;
BEGIN
write(‘Введите первый множитель: ‘);
readln (a);
write(‘Введите второй множитель: ‘);
readln (b);
k:=0;
for i:=1 to b do begin
k:=k+a;
end;
writeln(a, ‘*’, b, ‘=’, k)
END.
В программе мы вводим изначальную численность населения. Далее она считает количество населения в каждый год и итогом будет количество населения через три года.
program z15_2;
var i: integer; k, a: real;
BEGIN
write(‘Введите население города: ‘);
readln (a);
k:=0;
for i:=1 to 3 do begin
a:=1.05*a;
writeln(i, ‘ год: ‘, a, ‘ человек’)
end;
writeln(‘Численность населения через 3 года: ‘, a)
END.
Задание 16. Напишите программу, которая выводит на экран таблицу степеней двойки (от нулевой до десятой).
Десятую степень не добавили в цикл, она отрабатывает после цикла и выводит эту степень ровно по вертикали.
program z16;
var i, k, a: integer;
BEGIN
a:=2;
k:=1;
writeln(‘Таблица степеней двойки:’);
writeln(‘0 1′);
for i:=1 to 9 do begin
k:=k*a;
writeln(i,’ ‘,k);
end;
k:=k*a;
writeln(’10 ‘,k);
END.
Задание 17. Напишите программу, которая выводит на экран таблицу умножения на n (n – целое число от 2 до 10, вводимое с клавиатуры).
Рассмотренные операторы:
repeat until
while do
for 1 to n do
Я думаю, что циклы «repeat until» и «while do» могут заменить другие циклы. Цикл «for» не сможет заменить других, так как в этом цикле происходит известное количество повторений. А в двух других разница в том, что цикл «repeat until» сначала выполняется тело цикла и потом проверяется условие, а с циклом «while do» наоборот.
Решение заданий из учебника Информатика 8 класс Босова, параграф 3.5 Программирование циклических алгоритмов. Программирование циклов с заданным условием продолжения работы, с заданным условием окончания работы, с фиксированным числом повторений, различные варианты программирования циклического алгоритма.