
Цикл с параметром
Цикл с параметром наиболее часто встречающийся цикл в любом языке программирования. Этот цикл применяется тогда, когда заранее известно условие и число повторений цикла. Используется, когда известно, сколько раз выполняется циклическая часть программы.
for <параметр цикла>:=<начало> to/downto <конец> do <оператор>;
для до делать
параметр цикла - числовая переменная типа integer
начало, конец - арифметическое выражение
to - используется когда начало меньше конца
downto - используется когда начало больше конца
оператор - тело цикла, любой оператор, в том числе и составной
Принцип работы:
-
Параметру присваивается значение начало
-
Выполняется оператор - тело цикла.
-
Затем параметр сравнивается с концом.
-
Если параметр больше/меньше конца, то начинает работать следующий оператор за оператором цикла, в противном случае к параметру прибавляется/отнимается единица.
-
Снова выполняется оператор.
-
Так продолжается пока параметр не станет больше/меньше конца.
Применение цикла с параметром на конкретных примерах.
Пример 1. Сто раз написать свое имя на экране в строчку
Программа:
Program Z_1;
Var i: integer;
Begin
For i: = 1 to 100 do
Write (‘Имя ’);
Readln
End.
Пример 2. Вывести на экран таблицу перевода из градусов по шкале Цельсия в градусы по Фаренгейту, для значений от 15 до 30, шаг 1 градус. Формула перевода из Цельсия в Фаренгейты F=(c*1.8)+32.
Program Z_2;
Var c: integer;
F: real;
Begin
For c: = 15 to 30 do
begin
f:= (c*1.8) +32;
writeln (c,’ ‘,f);
end;
Readln
End.
Пример 3. Написать программу, которая выводит таблицу квадратов первых пяти целых положительных нечетных чисел в обратном порядке
Program Z_3;
Var x,y,i: integer;
Begin
Writeln (‘таблица квадратов нечетных чисел’);
Writeln (‘-------------------------‘);
Writeln (‘число’, ,’квадрат числа’);
Writeln (‘-------------------------‘);
For i: = 5 downto 1 do
begin
y:= sqr (x)
writeln (x,y,);
end;
Writeln (‘-------------------------‘);
Readln
End.
Пример 4. Подсчитайте число и сумму положительных, число и произведение отрицательных элементов заданного массива A(N).
Решение:
Program B1;
var i,N,Kpol,Kotr: integer;
Spol, Potr: real;
a:array[1..20] of real;
Begin write('N='); readln(N);
for i:=1 to N do
begin write('a[',i,']=');
readln(a[i])
end;
Kpol:=0; Spol:=0; Kotr:=0; Potr:=1;
for i:=1 to N do
begin
if a[i]>0 then begin Kpol:=Kpol+1; Spol:=Spol+a[i] end;
if a[i]<0 then begin Kotr:=Kotr+1; Potr:=Potr*a[i] end;
end;
writeln('Количество положительных=',Kpol);
writeln('Сумма положительных=',Spol:7:2);
writeln('Количество отрицательных=',Kotr);
writeln('Произведение отрицательных=',Potr:7:2);
End.
Пример 5. Заданные векторы X(N) и Y(N) преобразуйте по правилу: большее из xi и yi примите в качестве нового значения xi, а меньшее — в качестве нового значения yi .
Решение:
Program B2;
Var x,y:array[1..20] of real;
tmp:real;
i,n: integer;
Begin
write('n=?'); readln(n);
for i:=1 to n do
begin
write('x[',i,']=?'); readln(x[i]);
end;
for i:=1 to n do
begin
write('y[',i,']=?'); readln(y[i]);
end;
Writeln ('Maccив X:');
for i:=1 to n do write(x[i]:5:2);18
writeln;
Writeln ('Maccив Y:');
for i:=1 to n do write(y[i]:5:2);
writeln;
{Обработка}
For i:=1 to n do
if x[i]<y[i] then begin tmp:=x[i]; x[i]:=y[i]; y[i]:=tmp end;
writeln('Результат:');
Writeln ('Maccив X:');
for i:=1 to n do write(x[i]:5:2);
writeln;
Writeln ('Maccив Y:');
for i:=1 to n do write(y[i]:5:2);
writeln;
end.
Пример 6. Элементы заданного массива B(N) перепишите в новый массив A(N) в обратном порядке.
Решение:
Program B3;
Var a,b:array[1..20] of real;
i,n: integer;
Begin
write('n=?'); readln(n);
for i:=1 to n do
begin
write('b[',i,']=?'); readln(b[i]);
end;
Writeln ('Maccив B:');
for i:=1 to n do write(b[i]:5:2);
writeln;
{Заполнение массива A}
for i:=1 to n do a[n+1-i]:=b[i];
Writeln ('Maccив A:');
for i:=1 to n do write(a[i]:5:2);
writeln;
end.
Пример 7. Из заданного вектора A(3N) получите вектор B(N), очередная компонента которого равна среднему арифметическому очередной тройки компонент вектора А.
Решение:
Program B4;
Var a,b:array[1..100] of real;
i,n,k: integer;
Begin 19
write('n=?'); readln(n);
for i:=1 to 3*n do
begin
write('a[',i,']=?'); readln(a[i]);
end;
Writeln ('Maccив a:');
for i:=1 to 3*n do write(a[i]:7:2);
writeln;
{Заполнение массива B}
k:=1;
for i:=1 to n do
begin
b[i]:=(a[k]+a[k+1]+a[k+2])/3;
k:=k+3
end;
Writeln ('Maccив B:');
for i:=1 to n do write(b[i]:7:2);
writeln;
end.
Пример 8. В заданном массиве Х(N) замените нулями все отрицательные компоненты, непосредственно предшествующие его максимальной компоненте (первой по порядку, если их несколько).
Решение
Program B5_2;
Var x:array[1..50] of real;
i,k,n: integer;
max:real;
Begin
write('n=?'); readln(n);
for i:=1 to n do
begin
write('x[',i,']=?'); readln(x[i]);
end;
Writeln ('Maccив x:');
for i:=1 to n do write(x[i]:5:2);
writeln;
k:=1; max:=x[1];
for i:=2 to n do
if x[i]>max then
begin
max:=x[i]; k:=i
end;
for i:=1 to k-1 do x[i]:=0;
Writeln ('Результат:');
for i:=1 to n do write(x[i]:5:2);
writeln;
end.
Пример 9. Вычислите значения
а) sin x + sin2x + ... + sinnx ;
б) sin x+ sin x2+ ...+ sin xn;
в) sin x+ sin sin x+ ...+ sin sin...sin x (n раз).
Решение a):
Program B6_a;
Var i,n:integer;
x,P,S:real;
Begin
Write('n=?'); readln(n);
Write('x=?'); readln(x);
S:=0; P:=1;
For i:=1 to n do
begin
P:=P*sin(x);
S:=S+P
end;
Writeln(S:7:2);
readln
End.
Решение б):
Program B6_b;
Var i,n:integer;
x,P,S:real;
Begin
Write('n=?'); readln(n);
Write('x=?'); readln(x);
S:=0; P:=1;
For i:=1 to n do
begin
P:=P*x;
S:=S+sin(P)
end;
Writeln(S:7:2);
End.
Решение в):
Program B6_в;
Var n,i:integer;
x,s,p:real;
Begin
Write ('x='); Readln(x);
Write ('n='); Readln(n);
S:=0;
P:=1;
For i:=1 to n do
Begin
P:=sin(p);
S:=s+p;
End;
Write(s:5:2);
End.
Пример 10. Вычислите сумму квадратов всех элементов заданного массива X(N), за исключением эле-
ментов, кратных пяти.
Решение:
Program B7;
Type Mas=Array[1..50] of integer;
Var x: Mas;
i,n,s:integer;
Begin
write('n=?'); readln(n);
for i:=1 to n do
begin
write('x[',i,']='); readln(x[i]);
end;
s:=0;
for i:=1 to n do
if x[i] mod 5 <> 0 then s:=s+x[i]*x[i];
writeln('s=',s);
End.
-
Проверить, является ли целое число простым.
-
Написать программу, которая выводит на экран табл. умножения, например на 7.
-
Написать программу, которая выводит табличные значения функции у=|x|+2. Диапазон изменения аргумента от – 4 до 4, приращение аргумента - 0.5
-
Написать программу, которая определяет максимальное число из введенной последовательности положительных чисел. Завершение ввода – 0.
-
Написать программу, которая позволяет найти наибольший общий делитель двух целых чисел
-
Написать программу, которая позволяет найти наименьшее общее кратное двух целых чисел
* Написать программу, которая выводит табличные значения функции у=х2+2. Диапазон изменения аргумента от – 4 до 4, приращение аргумента 1.