Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PASCAL.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
186.79 Кб
Скачать

Оператор цикла с параметром

FOR ... DO (для…)

Оператор цикла с параметром используется именно в таких случаях, когда необходимо организовать цикл с заданным числом повторений

for <параметр_цикла>:=<начальное_знач> to <конечное_знач> do <оператор>;

for <параметр_цикла>:=<конечное_знач> downto <начальное_зна.> do <оператор>;

Оператор, представляющий собой тело цикла, может быть простым или составным.

Параметр цикла, а также диапазон его изменения могут быть только целочисленного или перечислимого типа.

Параметр описывается совместно с другими переменными.

Шаг цикла for всегда постоянный и равен '1' или '-1'.

  1. Выполнение цикла начинается с присвоения параметру стартового значения.

  2. Затем следует проверка, превосходит ли параметр конечное значение.

  3. Если результат проверки утвердительный, то цикл считается завершенным, и управление передается следующему за телом цикла оператору.

  4. В противном случае выполняется тело цикла, и параметр меняет свое значение на следующее согласно заголовку цикла.

  5. Далее снова производится проверка значения параметра цикла, и алгоритм повторяется.

ЗАДАЧИ

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 подразумевается такой алгоритм: пока условие истинно, выполняются операторы тела цикла.

Само условие может быть логической константой, переменной или логическим выражением.

При написании циклов с предусловием следует помнить следующее.

  1. чтобы цикл имел шанс когда-нибудь закончиться, содержимое его тела должно обязательно влиять на условие цикла.

  2. условие должно состоять из корректных выражений и значений, определенных еще до первого выполнения тела цикла.

Если условие цикла ложно цикл не выполнится ни разу!

Вывод цифр числа на экран

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]