Здавалка
Главная | Обратная связь

Оператор повтора — циклы (for, repeat, while)

Оператор присваивания в Паскале

Оператор присваивания, наиболее часто используемый оператор языка Турбо Паскаль.

Формат записи: X:=A;
где:X– имя переменной;
A -выражение;
:= -знак присваивания.

 

ЦИКЛЫ

Как вам уже давно известно, алгоритм - это “конечная последовательность точно определённых действий, приводящая к однозначному решению поставленной задачи”. Другими словами, алгоритм - это “свод конечного числа правил, задающих последовательность выполнения операций при решении какой-либо задачи”. В математической энциклопедии алгоритм определён как “точное предписание, которое задаёт вычислительный процесс (называемый в этом случае алгоритмическим), начинающийся с произвольного исходного данного (из некоторой совокупности возможных для рассматриваемого алгоритма исходных данных) и направленный на получение полностью определяемого этим исходным данным результата”. Циклом называется совокупность повторяющихся операций.

 

 


Оператор повтора — циклы (for, repeat, while)

Оператор повтора (цикла) предназначен для неоднократного повторения выполнения отдельного участка кода.

Существует три различных цикла: for, while и repeat, каждый из которых работает с постусловием (Repeat) и предусловием (For, While). Цикл с предусловием означает, что программа выполняет цикл только после проверки условия, а для цикла с постусловием условие проверяется только после выполнения цикла. Условие в цикле необходимо для его завершения. Чтобы прервать любой цикл во время выполнения, необходимо внутри него поместить функцию break (с англ. «прервать»). Однако break предназначена для остановки лишь одного цикла, следовательно, чтобы непременно остановить два вложенных цикла необходимо внутрь каждого из них поместить break.

Цикл Структура Запиь в Паскале Блок схема
  for … for i:=1to 10 do s:=s+10; … … for i:=10 to 1 do s:=s+1; …
while … while a<b do begin a:=a+1; …   var i, n: integer; begin write ('Количество знаков: '); readln (n); i := 1; while i <= n do begin write ('(*) '); i := i + 1 end; readlnend.    
Repeat … repeat a:=a+1; until a=10; …   var i, n: integer; begin write ('Количество знаков: '); readln (n); i := 1; repeat write ('(*) '); i := i + 1 until i > n; readlnend.    

Для представления структур трех циклов рассмотрим следующую таблицу, в которой каждый цикл находит сумму пяти чисел, начиная с двух:

… a:=1; s:=0; n:=0; While n<>5 do begin a:=a+1; s:=s+a; n:=n+1; end; … a:=1; s:=0; For i:=1 to 5 do begin a:=a+1; s:=s+a; n:=n+1; end; … … a:=1; s:=0; n:=0; Repeat a:=a+1; s:=s+a; n:=n+1; until n=5; …

 

При использовании циклов с параметром необходимо придерживаться следующих правил:

  1. )не рекомендуется изменять в теле цикла переменную цикла, её начальное и конечное значения (результаты выполнения такого цикла непредсказуемы);
  2. )нельзя использовать параметр цикла при определении начального и конечного значений (For I:=I-1 to I+1 do … - так нельзя);
  3. )не рекомендуется использовать без предварительного переопределения переменную цикла после его завершения (считается, что в этом случае её значение не определено).

С программированием повторяющихся операций приходится сталкиваться при решении широкого класса различных задач (например, при численном решении нелинейных уравнений).

Примеры решения задач по теме.

  • Найти квадрат нечетных чисел.
 

 

Для примера возьмем 10 чисел. Четное число должно нацело деться на 2, а у нечетного остаток будет равным 1. Поэтому функцией mod проверяем четность числа i и возводим его в квадрат функцией sqr(i).

 

 

  • Вывести на экран среднее арифметическое вводимых чисел, сколько введено чисел и их сумму.

Чтобы пользователь смог ввести неограниченное количество чисел, нам понадобится один из двух циклов: либо repeat, либо while. В данной программе мы взяли repeat. Как только пользователь введет 0, условие (until) выполнится, и программа выведет результат. Во время ввода программа высчитывает количество введенных чисел (n) и их сумму (s). Затем остается вычислить их среднее арифметическое. Для этого сумму чисел разделим на количество чисел (s/n). При делении число необязательно получится целым, поэтому назначим тип для переменной i real и выведем две цифры после запятой.

 

Найти сумму делителей числа a.

  • Program deliteli;
  • Var i1,k,a:integer;
  • Begin
  • Readln(a);
  • For i1:=1 to a-1 do
  • If a mod i1=0 then
  • K:=k+i1
  • Writeln(k);
  • Readln;end

 

Структура программ, требующих найти делители любого числа, одна и та же. Достаточно лишь перебрать все числа от единицы до самого числа. В нашем случае делители не могут быть дробными, поэтому те числа, на которые можно разделить число нацело, являются делителями числа. Затем переменной k находим их сумму.

 

Проверить, является ли число совершенным (равным сумме всех его делителей).

 

  • Выяснить, является ли введенное число неполным (делится только на себя и на единицу).

 





©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.