Оператор
цикла с параметром
Ты узнаешь:
Ø
определение цикла;
Ø
правила записи оператора
цикла For ….
Ты научишься:
Ø
записывать циклические
алгоритмы, не допуская двусмысленности записи;
Ø
применять циклы при
решении задач.
__________ Коротко о главном ________________________
.
Базовая структура цикл. Обеспечивает многократное выполнение
некоторой совокупности действий, которая называется телом цикла.
Цикл типа для.
Предписывает выполнять тело цикла для всех
значений некоторой переменной (параметра цикла) в заданном диапазоне.
|
нц
для i от i1 до i2
тело цикла (последовательность действий)
кц
|
|
Примеры решения задач с использованием оператора цикла
Пример 1.
Дано
четырёхзначное число n, выбросить из записи числа n цифры 0 и 5, оставив
прежним порядок остальных цифр. Например, из числа 1509 должно получиться 19.
program pr1;
var i,n,a,m,b,q: integer;
Begin
writeln('введите n');
readln(n); m:=n; a:=0; q:=1;
for i:=1 to 4 do
begin
b:=m mod 10;
if (b<>0) and (b<>5) then
begin
a:=a+b*q; q:=q*10
end;
m:=m div 10;
end;
writeln('a=',a);
readln;
end.
Пример 2.
Натуральное
число из n цифр является числом Армстронга, если сумма его
цифр,
возведённых в n степень, равна самому числу. Например:
153=1*1*1+5*5*5+3*3*3.
Получить все числа Армстронга, состоящие из трёх и
четырёх цифр.
program
pr1;
var i,m,a1,a2,a3,a4: integer;
Begin
for i:=100 to 999 do
begin
m:=i;
a3:=m mod 10; m:=m div 10;
a2:=m mod 10; a1:=m div 10;
if a3*a3*a3+a2*a2*a2+a1*a1*a1=i
then writeln('a=',i);
end;
for i:=1000 to 9999 do
begin
m:=i;
a4:=m mod 10; m:=m div 10;
a3:=m mod 10; m:=m div 10;
a2:=m mod 10; a1:=m div 10;
if a4*a4*a4*a4+a3*a3*a3*a3+a2*a2*a2*a2+a1*a1*a1*a1=i
then writeln('a=',i);
end;
readln;
end.
Пример 3.
Среди
четырёхзначных чисел выбрать те, у которых все четыре цифры различны
program pr1;
var i,k,n,a1,a2,a3,a4,m: integer;
Begin
writeln('введите n, k');
readln(n,k);
for i:=1000 to 9999 do
begin
m:=i;
a4:=m mod 10; m:=m div 10;
a3:=m mod 10; m:=m div 10;
a2:=m mod 10; a1:=m div 10;
if (a1<>a2) and (a1<>a3) and (a1<>a4) and (a2<>a3)
and (a2<>a4) and (a3<>a4)
then writeln(i:5);
end;
readln;
end.
Пример 4.
Даны
натуральные числа n,k (n,k?9999). Из чисел от n до k выбрать те, запись которых
содержит ровно три одинаковые цифры. Например, числа 6766,5444, 0060, 0006
содержат ровно три одинаковые цифры.
program
pr1;
var i,k,n,a1,a2,a3,a4,m: integer;
Begin
writeln(введите n, k');
readln(n,k);
for i:=n to k do
begin
m:=i;
a4:=m mod 10; m:=m div 10;
a3:=m mod 10; m:=m div 10;
a2:=m mod 10; a1:=m div 10;
if (a1=a2) and (a1=a3) and (a1<>a4) or
(a1=a2) and (a1=a4) and (a1<>a3) or
(a1=a3) and (a1=a4) and (a1<>a2) or
(a2=a3) and (a2=a4) and (a1<>a2)
then writeln(i:5);
end;
readln;
end.
s ______ Вопросы и
задания ________________________
Ø
В каких
случаях используется оператор цикла с параметром? Как он оформляется? Как он
работает (что происходит при его выполнении) ? Нарисовать графическую схему
выполнения.
Ø Что такое тело цикла?
Ø
Может ли
тело оператора цикла с параметром не выполниться ни разу?
Ø
Как
должен быть оформлен оператор цикла с параметром, чтобы тело цикла выполнялось
при уменьшающихся значениях параметра цикла? Как он будет работать (что будет
происходить при его выполнении) ? Нарисовать графическую схему выполнения.
Ø
Чему
равно количество повторений тела оператора цикла с параметром, если параметр
цикла принимает:
а) все целые значения от 1 до 10;
б) все целые значения от А до В;
в) все нечетные значения от 1 до 20;
г) все нечетные значения от 1 до М;
д) все значения от 10 до 100 с шагом 7;
е) все значения от 1,5 до 10,3 с шагом 0,4;
ж) все значения от А до В с шагом 5?
Можно ли' в теле цикла с параметром не использовать величину—параметр цикла?
1. Напечатать ряд чисел 20 в
виде: 20 20 20 20 20 20 20 20 20 20.
2. Составить программу вывода
любого числа любое заданное число раз в виде, аналогичном показанному в
предыдущей задаче.
3.
Напечатать
"столбиком":
а)
все целые числа от 20 до 35;
б) квадраты всех целых чисел от 10 до
В (значение В вводится с клавиатуры; В > 10);
в) третьи степени всех целых чисел от
А до 50 (значение А вводится с клавиатуры; А < 50);
г) все целые числа от А до В
(значения А и В вводятся с клавиатуры; В > А).
__________
Проверь себя ___________________________
Оператор цикла For…
Тест
1
1.В следующем
фрагменте программы
for
i:=-2 to 2 do ...
тело цикла будет
выполнено:
а) 3
раза;
|
б) 0
раз;
|
в) 4
раза;
|
г) 5 раз;
|
д) 6
раз.
|
2.В следующем
фрагменте программы
for
i:=10 to 20 do ...
тело цикла будет
выполнено:
а) 20
раз;
|
б) 0
раз;
|
в) 10
раз;
|
г) 11
раз;
|
д) 21
раз.
|
3.В следующем
фрагменте программы
for
i:=30 to 20 do ...
тело цикла будет
выполнено:
а) 20
раз;
|
б) 0
раз;
|
в) 10
раз;
|
г) 21
раз;
|
д) 11
раз.
|
4.В следующем
фрагменте программы
k:=5; r:=15;
for i:=k+1 to r-1 do ...
тело цикла будет
выполнено:
а)
12раз;
|
б) 0 раз;
|
в) 13
раз;
|
г) 9
раз;
|
д) 10
раз.
|
5.В следующем
фрагменте программы
a:=7; с:=a;
for i:=a to с do ...;
тело цикла будет
выполнено:
а) 3
раза;
|
б) 0
раз;
|
в) 7
раз;
|
г) 2
раза;
|
д) 1
раз.
|
6.В следующем
фрагменте программы
k:=2; r:=15;
for i:=k+1 to (r div k) do
...
тело цикла будет
выполнено:
а) 5
раз;
|
б) 0
раз;
|
в) 7
раз;
|
г) 2
раза;
|
д) 6
раз.
|
7.После выполнения
следующих операторов
s1:=1; n1:=7;
for i:=2 to n1 do s1:=s1+100
div i;
writeln('s1=',s1);
значение
переменной S1 равно:
а) 158;
|
б) 11;
|
в) 10;
|
г) 12;
|
д) 159.
|
8.В результате
выполнения фрагмента программы
a:=5; b:=1;
for i:=1 to 4 do
b:=b+(a mod i);
writeln
(b);
значения
переменных а и в соответственно равны:
а) 5, 5;
|
б) 5,
10;
|
в) 6, 5;
|
г) 5, 4;
|
д) 1, 5.
|
9.После выполнения
следующих операторов
s=1;
for k:=2 to 22 do
if k mod 2=0 then s:=s+1;
значение
переменной s равно:
а) 10;
|
б) 20;
|
в) 12;
|
г) 11;
|
д) 21.
|
10.Вычислить
значение выражения
(a>5) and
(b>5) and (a<20) and (b<30)
при a=10, b=20 :
а) true;
б) false.
11.Вычислить
значение выражения
not(a<15) or not(b<30)
при a=20, b=10 :
а) false;
б) true.
12.Вычислить
значение выражения
c or d and
(b=20)
при b=20, c=true,
d=false :
а) true;
б) false.
Оператор цикла For… Тест 2
1.В
следующем фрагменте программы
for i:=-1 to 1 do ...
тело
цикла будет выполнено:
а) 2 раза;
б) 0 раз;
в) 3 раза;
г) 4 раза;
д) 1 раз.
2.В
следующем фрагменте программы
for i:=20 to 30 do ...
тело
цикла будет выполнено:
а) 20 раз;
б) 0 раз;
в) 10 раз;
г) 21 раз;
д) 11 раз.
3.В
следующем фрагменте программы
for i:=20 to 10 do ...
тело
цикла будет выполнено:
а) 20 раз;
б) 0 раз;
в) 10 раз;
г) 11 раз;
д) 21 раз.
4.В
следующем фрагменте программы
k:=5;
r:=15;
for i:=k-1 to r+1 do ...
тело
цикла будет выполнено:
а) 3 раза;
б) 0 раз;
в) 13 раз;
г) 9 раз;
д) 12 раз.
5.В
следующем фрагменте программы
a:=5;
b:=a;
for i:=a to b do ...;
тело
цикла будет выполнено:
а) 5 раз;
б) 0 раз;
в) 1 раз;
г) 2 раза;
д) 4 раза.
6.В
следующем фрагменте программы
k:=3;
r:=22;
for i:=k+1 to (r div k) do ...
тело
цикла будет выполнено:
а) 3 раза;
б) 0 раз;
в) 7 раз;
г) 4 раза;
д) 5 раз.
7.После
выполнения следующих операторов
s:=0;
n:=10;
for i:=2 to n do s:=s+100 div i;
writeln('s=',s);
значение
переменной S равно:
а) 191;
б) 50;
в) 190;
г) 12;
д) 130.
8.В
результате выполнения фрагмента программы
a:=5;
b:=1;
for i:=1 to 7 do b:=b+(a mod i);
writeln
(b);
значения
переменных а и в соответственно равны:
а) 5, 5;
б) 5, 10;
в) 6, 5;
г) 5, 15;
д) 1, 5.
9.После
выполнения следующих операторов
s=0;
for
k:=2 to 22 do
if k mod 2=0 then s:=s+1;
значение
переменной s равно:
а) 11;
б) 20;
в) 10;
г) 12;
д) 21.
10.Вычислить
значение выражения
(a>5)
and (b>5) and (a<20) and (b<30)
при a=20, b=10:
а) true;
б) false.
11.Вычислить
значение выражения
not(a<15) or not(b<30)
при a=10, b=20:
а) true;
б) false.
12.Вычислить
значение выражения
c or d and (b=20)
при b=21, c=true,
d=false:
а) true;
б) false.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.