Оператор цикла с параметром
FOR ... DO (для…)
Оператор цикла с параметром используется именно в таких случаях, когда необходимо организовать цикл с заданным числом повторений
for <параметр_цикла>:=<начальное_знач> to <конечное_знач> do <оператор>;
for <параметр_цикла>:=<конечное_знач> downto <начальное_зна.> do <оператор>;
Оператор, представляющий собой тело цикла, может быть простым или составным.
Параметр цикла, а также диапазон его изменения могут быть только целочисленного или перечислимого типа.
Параметр описывается совместно с другими переменными.
Шаг цикла for всегда постоянный и равен '1' или '-1'.
Выполнение цикла начинается с присвоения параметру стартового значения.
Затем следует проверка, превосходит ли параметр конечное значение.
Если результат проверки утвердительный, то цикл считается завершенным, и управление передается следующему за телом цикла оператору.
В противном случае выполняется тело цикла, и параметр меняет свое значение на следующее согласно заголовку цикла.
Далее снова производится проверка значения параметра цикла, и алгоритм повторяется.
ЗАДАЧИ
1. Вывести числа от 1 до 10.
for i:=1 to 10 do write (i);
2. Вывести числа от 10 до 1.
for i:=10 downto 1 do write (i);
3. Вывести латинский алфавит от а до z.
var с:char; for c:='A' to 'Z' do write(c);
4. Вывести все четные двузначные числа.
5. Даны целые числа K и N. Вывести N раз число K.
6. Найти все двузначные числа, в которых есть цифра N.
Просуммировать все целые числа от 1 до 100.
Буратино подарили три яблока. Два он съел. Сколько яблок осталось у Буратино? Ответ «одно» неправильный. Неизвестно, сколько осталось, так как не сказано, сколько яблок было у него до того, как ему подарили три новых. Мораль: не забывайте обнулить переменные.
s := 0; //Обнуление переменной for i:=1 to 100 do s:=s+i; //Прибавление очередного элемента суммы |
Произведение всех целых чисел от 1 до n
readln(n);
p:=1;
for k:=2 to n do
p:=p*k;
writeln(p);
Найти все трехзначные целые числа в десятичной записи которых есть цифра 7
for i :=1 to 100 do
if ((i mod 10)=7) or ((i div 10)=7) then
writeln(i);
Из чисел от 10 до 99 вывести те, сумма цифр которых равна n(0<n<=18)
Var ab,n,a,b,s : Integer;
Begin
Readln(n);
For ab:=10 To 99 Do
Begin
s:= ab Div 10+ ab Mod 10;
If s=n Then Writeln(ab); {
End;
Readln;
End.
Вывести среднее арифметическое чисел от 1 до 10
Var i:integer;
s,a:real;
begin
s:=0;
for i:=1 to 10 do
begin
readln(a);
s:=s+a;
end;
s:=s/10;
writeln(s);
readln;
end.
Даны два целых числа A и B (A < B). Вывести в порядке возрастания все целые числа, расположенные между A и B (в том числе A и B), a также количество N этих чисел.
|
readln(a,b); k:=0; for i:=A to B do begin writeln(i); k:=k+1; writeln(k); end; end.
|
Даны два целых числа A и B (A < B). Найти сумму всех целых чисел от A до B включительно.
|
Begin Readln(a,b); For i:=A to B do s:=s+i; End.
|
Ввести N различных чисел. Найти среднее арифметическое всех чисел.
|
Var s , n,i,a:integer; sr:real; Begin Readln(n); For i:=1 to N do Begin Readln(a); s:=s+a; end; sr:= s/n; Writeln(sr:4:2); End.
|
Ввести N различных чисел. Найти количество положительных чисел
Var a,n,i,k:integer;
Begin
Readln(n);
k:=0;
For i:=1 to N do
Begin
readln(a);
if a>0 then k:=k+1;
end;
Writeln(k);
End.
ОПЕРАТОР ЦИКЛА С ПРЕДУСЛОВИЕМ WHILE ... DO (пока…)
Оператор while ... do предназначен для реализации циклов с предусловием.
Условие выполнения тела цикла while проверяется до начала каждого шага. Поэтому если условие сразу не выполняется, то тело цикла игнорируется, и управление передается оператору, стоящему сразу за телом цикла.
while <условие> do <оператор>
В цикле while подразумевается такой алгоритм: пока условие истинно, выполняются операторы тела цикла.
Само условие может быть логической константой, переменной или логическим выражением.
При написании циклов с предусловием следует помнить следующее.
чтобы цикл имел шанс когда-нибудь закончиться, содержимое его тела должно обязательно влиять на условие цикла.
условие должно состоять из корректных выражений и значений, определенных еще до первого выполнения тела цикла.
Если условие цикла ложно цикл не выполнится ни разу!
Вывод цифр числа на экран
var a,s : longint;
begin
readln(a);
while a>=0 do// пока a>=0 выполнять цикл
begin
b:= a mod 10;//крайняя справа цифра
write(b);//вывод числа
a:=a div 10;//уменьшаем число на разряд
end;
readln;
end.
Нахождение суммы цифр числа
var a,s : longint;
begin,
readln(a);
s:=0;
while a>=0 do
begin
s:=s +( a mod 10);// предыдущее значение + крайняя справа цифра
a:=a div 10;//уменьшаем число на разряд
end;
write(s);//вывод суммы
readln;
end.
Дана непустая последовательность натуральных чисел, за которой следует 0. Составить программу поиска в данной непустой последовательности порядкового номера наименьшего элемента.
x, i - очередной член последовательности и его номер;
min, k - минимальный член последовательности и его номер.
Считывание членов последовательности производится до тех пор, пока не будет введен 0, то есть пока x<>0. Начальное значение минимума определяется значением первого члена последовательности.
Очередное вводимое число требуется сравнивать с текущим значением минимума, и если текущее значение min окажется больше очередного члена последовательности, то его нужно изменить.
Var x, i, min, k : Integer;
Begin
Read(x); // первый член последовательности
k:=1;
min:=x; i:=1;
While x<>0 Do
Begin
If x<min Then
Begin
min:=x;
k:=i
End;
Read(x); // i элемент последовательности
i:=i+1;
End;
Writeln(k); //номер минимального элемента
End.
ОПЕРАТОР ЦИКЛА С ПОСТУСЛОВИЕМ REPEAT ... UNTIL (повторять…)
Цикл с постусловием всегда будет выполнен хотя бы один раз!
В цикле repeat действует алгоритм: выполняется тело цикла, пока не станет истинным условие, то есть пока условие ложно, выполнять цикл.
repeat
begin
<условие>;
end;
until <оператор>;
ЗАДАЧА. Дана непустая последовательность натуральных чисел, которая заканчивается 0.
Вычислить сумму положительных элементов последовательности.
Var a,s:integer;
begin
readln(a);
s:=0;
while a<>0 do
begin
if (a>0) then s:=s+a;
readln(a);
end;
writeln(s);
end.
Var a,s:integer;
begin
readln(a);
s:=0;
repeat
begin
if (a>0) then s:=s+a;
readln(a);
end;
until a=0;
writeln(s);
end.
ЗАДАЧА. Используя все три цикла, написать программу, выводящую таблицу умножения на 9.
FOR … DO
var i, p: integer;
begin
for i:=1 to 10 do
begin
p:=9*i;
writeln('9x',i,'=',p);
end; end.
WHILE
var i, p, z:integer;
begin
i:=0;
while i<>10 do
begin
i:=i+1;
p:=9*i;
writeln ('9x',i,'=',p);
end; end.
REPEAT
var i, p, z: integer;
begin
i:=0;
begin
repeat
i:=i+1;
p:=9*i;
writeln ('9x',i,'=',p);
until i>9;
end; end.
Составить программу планирования закупки товара в магазине на сумму, не превышающую заданную величину.
Var x, k, p, s : Integer;
Begin
S:=0;
Repeat
WriteLn('Введите цену товара и его количество');
ReadLn(x,k);
s:=s+x*k;
WriteLn('Стоимость покупки равна ',s);
Until s>p;
WriteLn('Суммарная стоимость покупки превысила предельную сумму');
End.
