Ответы 3.5 Программирование циклических алгоритмов, ГДЗ учебник информатика 8 класс Босова



Задание 2. Дана последовательность операторов. Сколько раз будет повторен цикл и какими будут значения переменных a, b, s?

a:=1;b:=2;while a+b<8 dobegin 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.4. Используйте оператор while.

program z26;var a, b, c: real; n: integer;BEGIN readln(a, b, c); n:=0;while a>c do begin a:=a+0.15*a-b; n:=n+1;end;writeln ('В течение ', n, ' лет');END.program z27;var a, b, n: integer;BEGIN write('Сумма слагаемых первых членов последовательности: '); readln(b); a:=5; n:=1;while a<b do begin a:=a+(a+4); n:=n+1;end;writeln (n, ' слагаемых');END.program z28;var m,k: longint;beginwrite('Введите число: ');readln(m);k:=0;while m<>0 do begink:=k+1;m:=m div 10;end;writeln('Кол-во цифр: ',k);end.program z29;var m, d: real; n:integer;beginm:=10000;d:=2*m;n:=0;while m<d do beginm:=m*1.05; //Подсчитываем количество рублей через годn:=n+1; //Считаем количество летend;writeln('Сумма увеличится в два раза через ',n, ' лет');end.program z30;var m, t, X: real;begin write('Введите количество амёб: '); readln(X);m:=1;t:=0;while m<X do beginm:=m*2; t:=t+3;end;writeln('Пройдет ',t, ' часов');end.

Задание 6. Дана последовательность операторов. Сколько раз будет повторен цикл и какими будут значения переменных a, b, s?

a:=1;b:=1;repeat a:=a+1; b:=b*2;until b>8;s:=a+b
Ответ: 4 раза будет повторен цикл, a=5, b=16, s=21.

Задание 7. Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введен ноль) и подсчет суммы и среднего арифметического введенных положительных чисел. Используйте оператор repeat.

program z_7;var m, n: integer; s: real;begin n:=0; s:=0;repeat readln (m); if m>0 then begin n:=n+1; s:=s+m end;until m=0;writeln('Сумма положительных чисел: ', s);s:=s/n;writeln('Среднее арифметическое положительных чисел: ', s)end.

Задание 8. Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введен ноль) и определение максимального (наибольшего) из введённых чисел. Используйте оператор repeat.

program z_8;var m, s: integer;beginrepeat readln (m); if m>s then s:=m;until m=0;writeln('Наибольшее число: ', s)end.

Задание 9. Напишите программы вычисления наибольшего общего делителя НОД двух целых чисел:

а) используя оператор repeat:program z9_a;var a,b,с: integer;beginwrite('Введите два числа: ');readln(a, b);if a < b then с := a + 1 else с := b + 1;repeat с := с - 1until (a mod с = 0) and (b mod с = 0);write('NOD = ', с)end.
б) используя оператор while:program z9_b;var a,b: integer;beginwriteln('Введите два числа: ');readln(a, b);while a <> b doif a > b thena := a - belseb := b - a;writeln('NOD = ', a);end.

Задание 10. Сколько раз будет выполнен цикл?
а) for i:=0 to 15 do s:=s+1;
б) for i:=10 to 15 do s:=s+1;
в) for i:=-l to 1 do s:=s+1;
г) for i:=10 to 10 do s:=s+1;
д) k:=5; for i:=k-1 to k+1 do s:=s+1;

а) 16 раз
б) 6 раз
в) 3 раза
г) 1 раз
д) 3 раза

Задание 11. Напишите программу, которая 10 раз выводит на экран ваши имя и фамилию.

program z11;var a, b: string; i: integer;beginwrite('Введите имя: ');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;begina:='*';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.

Задание 13. Напишите программу, которая вычисляет сумму:
а) первых n натуральных чисел;
б) квадратов первых n натуральных чисел;
в) всех чётных чисел в диапазоне от 1 до n;
г) всех двузначных чисел.

program z13;var i, z1, z2, z3, z4, n: integer;BEGINwrite('Введите 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.4. Используйте оператор for.

program z15_1;var i, a, b, k: integer;BEGINwrite('Введите первый множитель: ');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;BEGINwrite('Введите население города: ');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, вводимое с клавиатуры).

program z17;var i, k, n: integer;BEGINwrite('Введите n>>');readln(n);for i:=2 to 10 do begin k:=n*i; writeln(n,' * ',i,' = ',k) end;END.

Задание 18. Какой из трёх рассмотренных операторов цикла является, по вашему мнению, основным, т.е. таким, что им можно заменить два других?

Рассмотренные операторы:
repeat until
while do
for 1 to n do

Я думаю, что циклы "repeat until" и "while do" могут заменить другие циклы. Цикл "for" не сможет заменить других, так как в этом цикле происходит известное количество повторений. А в двух других разница в том, что цикл "repeat until" сначала выполняется тело цикла и потом проверяется условие, а с циклом "while do" наоборот.Решение заданий из учебника Информатика 8 класс Босова, параграф 3.5 Программирование циклических алгоритмов. Программирование циклов с заданным условием продолжения работы, с заданным условием окончания работы, с фиксированным числом повторений, различные варианты программирования циклического алгоритма.