шаблоны сайт визитка joomla
Скачать шаблоны Joomla 3.5 бесплатно
Вы находитесь здесь:Главная»Учебные материалы»Pascal»Pascal. Циклы

Pascal. Циклы

Что такое циклы?

При решении задач может возникнуть необходимость повторить одни и те же действия несколько или множество раз.  Цикл – это многократные повторяемые действия (многократно повторяющийся алгоритм или его часть).  Рассмотрим три основных вида циклов:

  • цикл с параметром
  • цикл с предусловием
  • цикл с постусловием

Циклы с параметром (for)

Часто цикл for по-другому называют циклом со счетчиком. Он используется, когда мы точно знаем, сколько раз нам нужно повторить действия.  Пример: присесть 15 раз - считаем каждое приседание и приседаем до тех пор, пока не насчитаем 15.

For i:=A to B do S;

где i – счетчик цикла, является переменной порядкового типа данных. А – начальное значение, В – конечное значение счетчика цикла. S – тело цикла (повторяющиеся действия).

Циклы с предусловием (while)

Во многих случаях циклические действия необходимо выполнять до тех пор, пока не будет достигнут определенный результат (условие). В этом случае используют другие разновидности циклов: цикл с предусловием и цикл с постусловием. Циклы с предусловием - когда условие проверяется перед началом действий.

while

На языке Pascal это выглядит так:  While <условие> do begin ... end.

Циклы с постусловием (repeat ... until)

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

repeat

Примеры задач на циклы:

Задача 1. Дано натуральное число. Вывести на экран все натуральные числа до заданного включительно.

program FromOneToN;
var
 i, n: word;
begin
  readln(n);
  for i := 1 to n do begin
     write(i, ' ')
  end
end.

 

Задача 2.  Дано натуральное число. Найти его наибольший нетривиальный делитель или вывести единицу, если такового нет.

program GreatestDiv;
var
 i, n: word;
begin
  readln(n);
  for i := n div 2 downto 1 do begin
    if n mod i = 0 then begin
       writeln(i);
       break
    end
  end
end.

 

Задача 3. Дано натуральное число n. Проверить, является ли оно счастливым билетом.

program HappyTicket;
var
  n, a: longint;
  left, right, digits, i: byte;
begin
  readln(n);
  a := n;
  digits := 0;  
  while a <> 0 do begin
     a := a div 10;
     inc(digits)
  end;
  left := 0;
  right := 0;
  for i := 1 to digits div 2 do begin
     right := right + n mod 10;
     n := n div 10
  end;
  if odd(digits) then n := n div 10;
  for i := 1 to digits div 2 do begin
     left:= left + n mod 10;
     n := n div 10
  end;
  writeln(left = right)
end.

 

Задача 4. Дано натуральное число n. Проверить, представляет ли оно собой натуральную степень числа 2

program PowerOfTwo;
var
 n: integer;
begin
  readln(n);
  while n > 1 do begin
    if n mod 2 = 1 then break;
    n := n div 2
  end;
  writeln(n = 1)
end.

 

Задача 5. Дана последовательность натуральных чисел, ограниченная вводом нуля. Вывести на количество простых членов этой последовательности.

program NumOfPrimes;
var
  a, i, s, count: word;
begin
  read(a);
  count := 0;
  while a <> 0 do begin
     s := 0;
     for i := 1 to a do begin
        if a mod i = 0 then inc(s)
     end;
     if s = 2 then inc(count);
     read(a)
  end;
  writeln(count)
end.

 

Задача 6. Пары неотрицательных вещественных чисел вводятся с клавиатуры. Посчитать произведение для каждой пары и сумму всех чисел.

program cycle_repeat;
var 
  x,y,sum:real;
  otv:char;
begin
  sum:=0;
  repeat
     write('Введите числа x,y > 0 ');
     readln(x,y);
     writeln('Их произведение = ',x*y:8:3);
     sum:=sum+x+y;
     write('Завершить программу (Д/Н)? ');
     readln(otv);
  until (otv='Д') or (otv='д');
  writeln('Общая сумма = ',sum:8:3);
  readln
end.
 

Задача 7. Составить программу планирования закупки товара в магазине на сумму, не превышающую заданную величину.

Program E_10;
Var
 x, k, p, s : Integer;
Begin
  WriteLn('Введите цену товара и его количество');
  ReadLn(x,k);
  s:=s+x*k; 
  WriteLn('Стоимость покупки равна ',s);
  Until s>p; 
  WriteLn('Суммарная стоимость покупки превысила предельную сумму');
End.
 

Задача 8. Дано натуральное n (которое также может быть равно 0). Вывести на экран сумму чисел Фибоначчи до n-ного включительно. Например, при n = 3 нам необходимо получить сумму 0-го, 1-го, 2-го и 3-го членов последовательности.

program FibonacciNumbersSum;
var
  fib0, fib1, fib, sum: integer;
  i, n: byte;
begin
  readln(n);
  fib0 := 0;
  fib1 := 1;
  if n = 0 then sum := 0 else sum := 1;
  for i := 2 to n do begin
     fib := fib1 + fib0;
     sum := sum + fib;
     fib0 := fib1;
     fib1 := fib
  end;
  writeln(sum)
end.

 

Задача 9.  Дано натуральное число n (которое также может быть равно нулю). Вычислить n!    Примечание: n! (факториал числа n, читается «эн факториал») – произведение всех натуральных чисел до nвключительно.

program Factorial;
var
  i, n: byte;
  fact: integer;
begin
  readln(n);
  fact := 1;
  for i := 1 to n do begin
     fact := fact * i
  end;
  writeln(fact)
end.

 

Задача 10. Дано натуральное число n. Вывести на экран решения всех квадратных уравнений вида x2 + 2ax – 3 = 0 для всех a от 1 до n.

program MyQuadraticEquation;
var
  a, n: word;
  x1, x2: real;
begin
  readln(n);
  for a := 1 to n do begin
     x1 := sqrt(a * a + 3) - a;
     x2 := -a - sqrt(a * a + 3);
     writeln('a = ', a, ', x1 = ', x1:4:2, ', x2 = ', x2:4:2)
  end
end.

 

Задача 11. Даны два натуральных числа. Найти их наибольший общий делитель.

program GreatestCommonDiv;
var
  m, n: word;
begin
  readln(m, n);
  while m <> n do begin
      if m > n then begin
      m := m - n
      end
      else begin
          n := n - m
     end
  end;
  writeln(m)
end.

 

Задача 12. Даны два натуральных числа. Найти их наименьшее общее кратное. 

program LeastCommonMult;
var
  m, n, prod: word;
begin
  readln(m, n);
  prod := m * n;
  while m <> n do begin
    if m > n then begin
       m := m - n
    end
    else begin
       n := n - m
    end
  end;
  writeln(prod div m)
end.

Похожие материалы (по тегу)

Новости о нас

КАЖДУЮ ПЯТНИЦУ - бесплатное занятие по 3D-моделированию с 16:40 до 18:10. Только для учащихся нашего технопарка! Подробнее
 Региональный отборочный фестиваль "Робофест-Стерлитамак 2018" состоится 25-26 января в г.... Подробнее
В сезоне 2017/18 фестиваля «РобоФест Стерлитамак 2018» Региональный учебно-тренировочный сбор... Подробнее
ВНИМАНИЕ учащимся! Объявляем конкурс рисунков на тему "Робот моей мечты", который пройдет по двум... Подробнее
В нашем технопарке Толтек СФ БашГУ пройдут открытые ОТБОРОЧНЫЕ СОРЕВНОВАНИЯ для ВСЕХ возрастов и... Подробнее

Наши партнеры

 TZOyoOCZ8y0 logotip novy SF BashGU  utv logo  CityMoll  VolnoeDelo