7ffc7cb1ab2101f70cd077b62dac4a54.ppt
- Количество слайдов: 30
Программирование на языке Паскаль Циклы
Циклы со счетчиком Цикл – это многократное выполнение одинаковой последовательности действий. • цикл с известным числом шагов • цикл с неизвестным числом шагов (цикл с условием) Задача. Вывести на экран квадраты и кубы целых чисел от 1 до 8 (от a до b). Особенность: одинаковые действия выполняются 8 раз.
Алгоритм (с блоком "цикл") начало блок "цикл" i : = 1, 8 конец i 2 : = i * i; i 3 : = i 2 * i; i, i 2, i 3 тело цикла
Цикл со счетчиком Увеличение переменной на 1: for <переменная> : = <начальное значение> to <конечное значение> do begin {тело цикла} end; Уменьшение переменной на 1: for <переменная> : = <начальное значение> downto <конечное значение> do begin {тело цикла} end;
Цикл со счетчиком Особенности: • переменная цикла может быть только целой (integer) • шаг изменения переменной цикла всегда равен 1 (to) или -1 (downto) • если в теле цикла только один оператор, слова begin и end можно не писать • если конечное значение меньше начального, цикл (to) не выполняется ни разу (проверка условия в начале цикла, цикл с предусловием)
Программа program qq; var i, i 2, i 3: integer; начальное значение begin переменная цикла конечное значение for i: =1 to 8 do begin i 2 : = i*i; i 3 : = i 2*i; writeln(i, i 2, i 3); end.
Цикл с уменьшением переменной Задача. Вывести на экран квадраты и кубы целых чисел от 8 до 1 (в обратном порядке). Особенность: переменная цикла должна уменьшаться. Решение: for i: =8 downto 1 do begin i 2 : = i*i; i 3 : = i 2*i; writeln(i, i 2, i 3); end;
Сколько раз выполняется цикл? a : = 1; for i: =1 to 3 do a : = a+1; a = 4 a : = 1; for i: =3 to 1 do a : = a+1; a = 1 a : = 1; for i: =1 downto 3 do a : = a+1; a = 1 a : = 1; for i: =3 downto 1 do a : = a+1; a = 4
Задачи: 1. Найдите значения функции y=2 x + 1 на отрезке [0; n]. 1. Вычислить произведение P=1*2*3*. . . *N = N! (N - факториал)
Цикл с предусловием while <условие> do begin {тело цикла} end; Особенности: • можно использовать сложные условия: while (a
Цикл с предусловием Особенности: • условие пересчитывается каждый раз при входе в цикл • если условие на входе в цикл ложно, цикл не выполняется ни разу a : = 4; b : = 6; while a > b do a : = a – b; • если условие никогда не станет ложным, программа зацикливается a : = 4; b : = 6; while a < b do d : = a + b;
Пример1: подсчет суммы натуральных чисел от 1 до 100 Program P 1; var i, sum: integer; begin sum: =0; for i: =1 to 100 do sum: =sum+i; writeln(sum); end.
Пример1: подсчет суммы натуральных чисел от 1 до 100 Program P 2; var i, sum: integer; begin sum: =0; i: =0; while i<100 do begin i: =i+1; sum: =sum+i; end; writeln('Сумма равна: ', sum); readln; end.
Сколько раз выполняется цикл? a : = 4; b : = 6; while a < b do a : = a + 1; 2 раза a = 6 a : = 4; b : = 6; while a < b do a : = a + b; 1 раз a = 10 a : = 4; b : = 6; while a > b do a : = a + 1; 0 раз a = 4 a : = 4; b : = 6; while a < b do b : = a - b; 1 раз b = -2 a : = 4; b : = 6; while a < b do a : = a - 1; зацикливание
Замена for на while и наоборот for i: =1 to 10 do begin {тело цикла} end; for i: =a downto b do begin {тело цикла} end; i : = 1; while i <= 10 do begin {тело цикла} i : = i + 1; end; i : = a; while i >= b do begin {тело цикла} i : = i - 1; end; Замена цикла for на while возможна всегда. Замена while на for возможна только тогда, когда можно заранее рассчитать число шагов цикла.
Цикл с постусловием (Repeat) Повторять что-то покане выполнилось условие Repeat Тело цикла until Условие;
Repeat(повторять), Until (до тех пор, пока). Этот оператор аналогичен оператору цикла с предусловием, но отличается от него тем, что проверка условия производится после очередного выполнения тела цикла. Это обеспечивает его выполнение хотя бы один раз. Обратите внимание на то, что данный оператор цикла предполагает наличие нескольких операторов в теле цикла, поэтому служебные слова Begin и End не нужны. Если условие не соблюдается, цикл завершается. В противном случае - тело цикла повторяется ещё раз, после чего снова проверяется соблюдение условия.
Пример1: подсчет суммы натуральных чисел от 1 до 100 Program P 3; var i, sum: integer; begin sum: =0; i: =0; repeat i: =i+1; sum: =sum+i; until i=100; writeln('Сумма равна: ', sum); readln; end.
Составить программу планирования закупки товара в магазине на сумму, не превышающую заданную величину. Program P_1; Решение Var x, k, p, s : Integer; Обозначим через x, k Begin соответствующую цену и Write. Ln('Введите Сумму'); Read. Ln(p); количество товара, через p S: =0; заданную предельную сумму, Repeat через s - общую стоимость Write. Ln('Введите цену товара и его покупки. Начальное значение количество'); общей стоимости покупки (S) Read. Ln(x, k); равно нулю. s: =s+x*k; Write. Ln('Стоимость покупки равна ', s); Until s>p; Write. Ln('Суммарная стоимость покупки превысила предельную сумму'); End.
№ 1. Составить программу для нахождения цифрового корня натурального числа. n Если мы сложим все цифры какого-либо числа, затем все цифры найденной суммы и будем повторять много раз, мы, наконец, получим однозначное число (цифру), называемое цифровым корнем данного числа. Например, цифровой корень числа 34697 равен 2 (3 + 4 + 6 + 9 + 7 = 29; 2 + 9 = 11; 1 + 1 = 2).
Решение: n Сколько переменных потребуется для решения задачи, какого типа будут эти переменные? n Всегда ли необходимо вычислять сумму цифр числа (а если введенное число является однозначным)? n Вычислим сумму цифр числа: для этого будем выделять цифры числа и увеличивать текущую сумму. Какую конструкцию необходимо использовать для этого? n В результате выполнения цикла мы получили число. Является ли оно однозначным (корнем данного числа)? Какую конструкцию необходимо использовать для нахождения корня числа?
Программа: Program P_18; Var n, k, s : Longint; Begin Writeln('Введите число'); Readln(n); s: =n; While s>=9 Do Begin k: =s; s: =0; Repeat s: =s+k Mod 10; k: =k Div 10; Until k=0; End; Writeln('цифровой корень числа ', n, ' равен ', s); End.
Решение задач Дана последовательность операторов: a : = 1; b : = 1; while a + b < 8 do Begin a : =a + 1; b : = b + 2; End; s : = a + b; Сколько раз будет повторен цикл и какими будут значения переменных a, b и s после завершения этой последовательности операторов?
Какими будут значения переменных a и b после выполнения операторов: a : = 1; b : = 1; While a <= 3 Do a : = a + 1; b : = b + 1. Определить значение переменной s после выполнения следующих операторов: s : = 0; i : = 0; While i<5 Do Inc(i); s : = s + 100 Div i; s : = 0; i : = 1; While i>1 Do Begin s : = s + 100 Div i; dec(i) End;
Дана последовательность операторов, вычисляющих факториал f числа n: k : = 1; f : = 0: While k
Выводится на экран последовательность 20 случайных чисел из промежутка [-10, 10]. Определить количество отрицательных чисел больших -5 в данной последовательности. n Program sldv; n var i, j: integer; x: real; n Begin n randomize; {процедура инициализации генератора случайных чисел} n i: =20; j: =0; n repeat n x: =random(20)-10; {генерируем случайное число} n write(x: 4: 0); {выводим это число на экран} n if (x > -5) and (x < 0) then n inc(j); {процедурой inc увеличиваем аргумент на единицу, считаем найденные числа} n dec(i); {процедурой dec уменьшаем аргумент на единицу, определяем условие выхода из цикла}until i=0; writeln; write('Количество отрицательных чисел больших -5 равно ', j); end.
Пример № 2. Определить сумму и количество цифр числа. program sum; var s, a: byte; n: longint; Begin write('n = '); readln(n); s : = 0; a : = 0; repeat s : = s + n mod 10; {Суммируем цифры} a : = a + 1; {определяем количество цифр} n : = n div 10; {Уменьшаем разряд, определяем условие выхода из цикла} until n = 0; writeln('Сумма цифр числа равна ', s); writeln('Количество цифр в числе ', a); End.
Задачи: 1. Вывести все натуральные числа от 1 до 100, кратные 3 и их количество. 2. Найти сумму положительных чисел из промежутка от А до В, кратных 4 (значения А и В вводятся с клавиатуры). 3. Найти сумму целых положительных чисел, больших 20, меньших 100, кратных 3 и заканчивающихся на 2, 4 или 8. 4. Дана последовательность произвольных чисел. Найти количество чисел, сумма которых не превышает заданное число.
Задачи на дом: n 5. Составить программу умножения натурального числа А на натуральное число В, не используя операцию умножения. 6. Найти сумму и произведение целых чисел в диапазоне [1; 150] кратные 5.
Домашнее задание: 1. Напечатать таблицу умножения от 1 до n, где n - заданное натуральное число. 2. Найти сумму чисел кратных 3 или 5 из 20 целых N чисел, а также их количество и среднее арифметическое 3. Дано натуральное число N. Вычислить произведение первых N сомножителей: P 1 = 1/2 * 3/4 * 5/6 *. . . 4. Найти все натуральные числа, удовлетворяющие условию 15 x+20 y+30 z = 270. 5. Найти количество натуральных 4 -х значных чисел, делящихся на 23


