Примеры программ с циклами - Основы программирования на языке PascalABC.NET

Перейти к контенту

Главное меню:

Примеры программ с циклами

Циклы
Задача 1. Составить программу, выводящую на экран значения квадратов натуральных чисел от 1 до 9.

Алгоритм. В переменной i будут сами числа, в переменной i2 – квадраты этих чисел. Так здесь нужно 9 раз повторять одни и те же команды, то удобнее использовать цикл с параметром, хотя можно воспользоваться и другими типами циклов.
Цикл-ПОКАЦикл-ДОЦикл-ДЛЯ



Program Cikl1;
Var i, i2: integer;
Begin
i := 1;
while i<=9 do
  begin
  i2 := i*i;
  writeln(i:4,i2:4);
  i := i+1;
  end;
End.
Program Cikl2;
Var i, i2: integer;
Begin
i := 1;
repeat
  i2 := i*i;
  writeln(i:4,i2:4);
  i := i+1;
until i>9;
End.
Program Cikl3;
Var i, i2: integer;
Begin
for i:=1 to 9 do
  begin
  i2 := i*i;
  writeln(i:4,i2:4);
  end;
End.

для копирования в среду 
WDE PascalABC.NET


для копирования в среду 
WDE PascalABC.NET


для копирования в среду 
WDE PascalABC.NET
  Пример выполнения программы:


Задача 2. Составить программу для вычисления суммы ряда слагаемых для заданного n:
s = 1 + 4 + 9 + 16 + … + n2
Алгоритм. Видно, что каждое следующее слагаемое является квадратом порядкового номера слагаемого: 
s = 12 + 22 + 32 + … + i2 + … +n2
В цикле будем «накапливать» сумму, прибавляя к текущему значению суммы очередное слагаемое под номером i, который меняется от 1 до n через единицу. Перед началом цикла значение суммы должно быть равно 0. Количество повторений известно, поэтому удобней применить цикл с параметром.

Program Summa_kvadr;
Var n, i, s: integer;
Begin
write ('Введите n: '); readln (n);
s:=0;            //начальное значение суммы
for i:=1 to n do //для i от 1 до n повторять
    s:=s+i*i;    //добавляем квадрат к сумме
writeln ('s=', s); //сумма квадратов чисел
End.
Текст программы в формате .txt для копирования в среду WDE PascalABC.NET
Пример выполнения программы:
 
Задача 3. Составить программу для нахождения факториала числа k. Факториал числа k вычисляется как произведение натуральных чисел от 1до k, обозначается k!, читается «k факториал».
k! = 1 · 2 · 3 · … · k

Алгоритм. Обозначим произведение переменной p и присвоим ему начальное значение 1. В цикле будем «накапливать» произведение, умножая его на очередной множитель i, который меняется от 1 до k через единицу. Количество повторений известно, поэтому удобней применить цикл с параметром.

Так как факториал очень быстро растёт, то уже при k=13 произойдёт переполнение ячеек памяти, выделенных для переменной целого типа, и программа выдаст неверный результат. Об этом надо предупредить пользователя.

Program Factorial;
Var k, i, p: integer;
Begin
write ('Введите k (не более 12): ');
readln (k);
p:=1;  //начальное значение произведения
for i:=1 to k do //для i от 1 до k повторять
    p:=p*i;  //добавляем очередной множитель
writeln (k, '!=', p); //факториал числа
End.
Текст программы в формате .txt для копирования в среду WDE PascalABC.NET
Пример выполнения программы:
 

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

Program Factorial;
Var k, i, p: integer;
Begin
//проверка правильности данных
repeat           //повторять:
  write ('Введите k (не более 12): ');
  readln(k);     //ввод k
until k<=12;     //до k<=12
p:=1;  //начальное значение произведения
for i:=1 to k do //для i от 1 до k повторять
    p:=p*i;  //добавляем очередной множитель
writeln (k, '!=', p); //факториал числа
End.
Текст программы в формате .txt для копирования в среду WDE PascalABC.NET
Пример выполнения программы:
 
 
Задача 4. Банк принимает вклады под 10% годовых. На счет  положена сумма 10000 рублей. Составьте программу, определяющую, какая сумма будет на счету через 5 лет?

Алгоритм. Нужно 5 раз вычислять сумму вклада по прошествии года, добавляя 10% от предыдущей суммы, и выводить на экран текущую сумму вклада. Так как количество повторов чётко определено, лучше использовать цикл с параметром.

Program Vklad1;
Var g: integer; s: real;
Begin
s:=10000;  //начальный вклад
writeln ('Начальная сумма ', s);
//цикл для g от 1 до 5
for g:=1 to 5 do
  begin
  s:=s+0.1*s; //добавление 10%
  writeln (g, ' год сумма ', s);
  end;
End.
Текст программы в формате .txt для копирования в среду WDE PascalABC.NET
Пример выполнения программы:

Задача 5. Банк принимает вклады под 10% годовых. На счет  положена сумма 10000 рублей. Составьте программу, определяющую, через сколько лет сумма вклада увеличится более, чем в два раза?

Алгоритм. Будем в цикле вычислять сумму вклада по прошествии года, добавляя 10% от предыдущей суммы, и выводить на экран текущую сумму вклада. Так как количество повторов не известно, воспользуемся циклом с предусловием. Цикл будет повторяться, пока сумма не превышает 20000.

Program Vklad2;
Var g: integer; s: real;
Begin
g:=0;      //счетчик годов
s:=10000;  //начальный вклад
writeln ('Начальная сумма ', s);
//цикл пока сумма <=20000
while s<=20000 do
  begin
  g:=g+1;       //следующий год
  s:=s+0.1*s;   //добавление 10%
  writeln (g, ' год сумма ', s:8:2);
  end;
End.
Текст программы в формате .txt для копирования в среду WDE PascalABC.NET
Пример выполнения программы:

Задача 6. Составить программу для определения наибольшего общего делителя (НОД) двух натуральных чисел. НОД – это самое большое натуральное число, на которое оба числа делятся нацело.

Алгоритм. Воспользуемся известным алгоритмом Евклида, который состоит в следующем. Пока числа не равны, заменить большее число разностью большего и меньшего из чисел и так далее. Когда числа станут равны, взять любое из них в качестве ответа. Структура алгоритма – цикл-ПОКА с вложенным ветвлением.

Program NOD;
Var a, b: integer;
Begin
write ('Введите два натуральных числа: ');
readln (a, b);
while a<>b do    //пока числа не равны
  if a>b then    //заменить большее число
     a:=a-b      //разностью
  else           //большего и меньшего
     b:=b-a;
writeln ('НОД этих чисел = ', a)
End.
Текст программы в формате .txt для копирования в среду WDE PascalABC.NET
Пример выполнения программы:

 
Назад к содержимому | Назад к главному меню