Для проверки правильности алгоритма заполним трассировочную таблицу.
Шаг | Операция | Р | i | Проверка условия |
P:=1 | 1 | |||
i:=1; | 1 | 1 | ||
i P:=P*I i:=i+1 | 1 | 1 | 1 | |
i P:=P*I i:=i+1 | 2 | 2 | 2 | |
i P:=P*I i:=i+1 | 6 | 3 | 3 | |
i P:=P*I i:=i+1 | 24 | 4 | 4 | |
i P:=P*I i:=i+1 | 120 | 5 | 5 | |
i P:=P*I i:=i+1 | 6 |
Проверка условия происходит в несколько шагов: проверка условия и выполнение команд на одной из ветвей. Поэтому в трассировочной таблице записываются не команды алгоритма, а отдельные операции, выполняемые компьютером на каждом шаге.
Шаг первый: Р присваивается значение один.
Шаг второй: i присваивается значение один.
ИНФОРМАТИКА 8 класс : Представление целых чисел
Шаг третий: при i равном единице проверяем условие один меньше или равен пяти, да, условие истинно, значит Р присваивается значение один умноженное на один, будет два. Для i: один плюс один, будет два.
Шаг четвертый:при i равном двум проверяем условие два меньше или равен пяти, да, условие истинно, значит Р присваивается значение 2 умноженное на один, будет 2. Для i: два плюс один, будет три.
Шаг пятый:при i равном трем проверяем условие три меньше или равен пяти, да, условие истинно, значит Р присваивается значение два умноженное на три, будет шесть. Для i: три плюс один, будет четыре.
Шаг шестой:при i равном четырем проверяем условие четыре меньше или равен пяти, да, условие истинно, значит Р присваивается значение шесть умноженное на четыре, будет двадцать четыре. Для i: четыре плюс один, будет пять.
Шаг седьмой:при i равном пяти проверяем условие пять меньше или равен пяти, да ,условие истинно, значит Р присваивается значение двадцать четыре умноженное на пять, будет сто двадцать. Для i: пять плюс один, будет шесть.
Шаг восьмой:при i равном шести проверяем условие шесть меньше или равен пяти, нет, условие ложно, тогда мы выходим из цикла, а в результате получаем последнее значение равное сто двадцати.
Для цикла с постусловием построим блок-схему и трассировочную таблицу. (.16)
В результате получаем последнее значение равное сто двадцати на седьмом шаге
И для Цикла с параметром построим блок-схему и трассировочную таблицу. (.17)
В результате получаем последнее значение равное сто двадцати на шестом шаге
Задача:
Вывести на экран числа от 1 до 5 в:
- прямом порядке;
- обратном порядке.
Математическая модель:
Блок-схема и программа решения задачи представлена для чисел в прямом порядке и обратном порядке.
Подведение итогов урока
И так мы рассмотрели следующие вопросы:
- Алгоритмическая структура цикл;
- Виды алгоритмических структур:
- Цикл с предусловием;
- Цикл с послеусловием;
- Цикл с параметром;
Cамостоятельная работа:
24 Цикл for. Обход элементов функции range Python
- Составьте программу, по которой компьютер десять раз запросит ввод любых чисел и в результате выведет среднее арифметическое значение введенных чисел (массив не использовать). Сделайте три варианта программы, используя операторы цикла While, Repeat, For.
- Составьте программу, по которой компьютер десять раз запросит ввод целых чисел и в результате сообщит, сколько среди введенных чисел четных и сколько нечетных.
Источник: helpiks.su
Составьте программу,по которой компьютер десять раз запросит ввод любых чисел и в результате выведет
среднее арифметическое значение введенных чисел (массив не использовать).Сделайте три варианта программы,используя операторы While,Repeat ,For.
Ответы на вопрос
Отвечает Юркевич Ирина.
Программа может выглядеть так:
uses Crt;
const n=10;
var a, i, Sum: integer;
Sred: real;
begin
ClrScr;
Sum:=0;
i:=1;
While i begin
Write (‘a = ‘);
ReadLn(a);
Sum:=Sum+a;
i:=i+1;
end;
Sred:=Sum/n;
Writeln(‘Sred = ‘, Sred:6:2);
WriteLn;
Sum:=0;
i:=1;
repeat
Write (‘a = ‘);
ReadLn(a);
Sum:=Sum+a;
i:=i+1;
until i>n;
Sred:=Sum/n;
Writeln(‘Sred = ‘, Sred:6:2);
WriteLn;
Sum:=0;
for i:=1 to n do
begin
Write (‘a = ‘);
ReadLn(a);
Sum:=Sum+a;
end;
Sred:=Sum/n;
Writeln(‘Sred = ‘, Sred:6:2);
ReadLn;
end.
Источник: uznavalka.pro
Ответы по параграфу 3.5 Программирование циклических алгоритмов
Учебник по Информатике 8 класс Босова
Задание 2. Дана последовательность операторов. Сколько раз будет повторен цикл и какими будут значения переменных a, b, s?
a:=1; b:=2; while a+bdo 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
Задание 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 ado begin a:=a+(a+4); n:=n+1; end; writeln (n, ‘ слагаемых’); END.
program z28; var m,k: longint; begin write(‘Введите число: ‘); readln(m); k:=0; while m<>0 do begin k:=k+1; m:=m div 10; end; writeln(‘Кол-во цифр: ‘,k); end. program z29; var m, d: real; n:integer; begin m:=10000; d:=2*m; n:=0; while mdo begin m:=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 mend.
Задание 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; begin repeat readln (m); if m>s then s:=m; until m=0; writeln(‘Наибольшее число: ‘, s) end.
Задание 9. Напишите программы вычисления наибольшего общего делителя НОД двух целых чисел:
а) используя оператор 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:
program z9_b; var a,b: integer; begin writeln(‘Введите два числа: ‘); readln(a, b); while a <> b do if a > b then a := a — b else b := 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; 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.
Задание 13. Напишите программу, которая вычисляет сумму:
а) первых 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.4. Используйте оператор 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, вводимое с клавиатуры).
program z17; var i, k, n: integer; BEGIN write(‘Введите 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 Программирование циклических алгоритмов. Программирование циклов с заданным условием продолжения работы, с заданным условием окончания работы, с фиксированным числом повторений, различные варианты программирования циклического алгоритма.
Источник: 5urokov.ru