:: PASCAL :: ТЕОРИЯ  
 

 

Лекция 3

 

 

Операторы языка Паскаль. Часть 2.

  Структурные операторы.  

  3) Оператор цикла  

  Оператор цикла используется для организации многократного повторения выполнения одних и тех же операторов. В языке Паскаль существует три типа оператора цикла.  

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

  Синтаксис:  

  while <условие> do  

  <оператор>;  

где    <условие> - булевское выражение;

  <оператор> - любой оператор языка Паскаль, называемый «телом цикла».  

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

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

  Замечание.  

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

  б) оператор цикла с постусловием  

  Синтаксис:  

  repeat  

  <оператор>  

  until <условие>;  

 где    <условие> - булевское выражение;

  <оператор> - любой оператор языка Паскаль.  

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

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

  Отличие циклов с предусловием и с постусловием:  

  ü при выполнении цикла с предусловием тело цикла выполняется, если условие истинно, а в цикле с постусловием повторение осуществляется, если значение условия ложно;  

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

  ü если в теле цикла с предусловием используется составной оператор, то он заключается в операторные скобки. При использовании составного оператора в теле цикла с постусловием роль операторных скобок выполняют служебные слова repeat и until.  

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

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

  1. Синтаксис:  

  for <имя перем.>:= <выражение 1> to <выражение 2> do  

  <оператор>;  

 где    <имя переменной> - идентификатор переменной целого типа, называемой параметром цикла;

  <выражение 1> и <выражение 2> - выражения, задающие начальное и конечное значения параметра цикла;  

  <оператор> - любой оператор языка Паскаль.  

  Для объяснения выполнения обозначим:  

  i – имя переменной, z1 и z2 – выражения 1 и 2 соответственно, s – оператор, образующий тело цикла.  

  Тогда цикл имеет вид:  

  for i:= z1 to z2 do s;  
  Выполнение: вычисляются значения выражений z1 и z2. Если z1>z2, то выполнение оператора цикла завершается. Если z1<=z2, то переменной i присваивается значение z1 и выполняется оператор s. Затем значение переменной I увеличивается на 1 и вычисляется значение булевского выражения i<=z2. Если это значение истинно, то вновь выполняется оператор s, берется следующее значение параметра цикла и т.д. Выполнение оператора цикла с параметром завершается тогда, когда станет ложным значение булевского выражения i<=z2.  

  2. Синтаксис:  

  for <имя перем.>:= <выражение 1> downto <выражение 2> do  

  <оператор>;  

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

  for i:= z1 downto z2 do s;  
  В этом случае z1>z2 и значение параметра цикла при каждом повторении цикла не увеличивается, а уменьшается на 1.  

  Выполнение: вычисляются значения выражений z1 и z2. Если z1<z2, то выполнение оператора цикла завершается. Если z1>=z2, то переменной i присваивается значение z1 и выполняется оператор s. Затем значение переменной i уменьшается на 1 и вычисляется значение булевского выражения i>=z2. Если это значение истинно, то вновь выполняется оператор s, берется следующее значение параметра цикла и т.д. Выполнение оператора цикла с параметром завершается тогда, когда станет ложным значение булевского выражения i>=z2.  

  Замечание.  

  После завершения выполнения оператора цикла значение параметра цикла не определено.  

  4) Примеры использования структурных операторов.  

  1. Вычислить значение факториала числа.  

Program factorial;
   uses crt;
   var n, i:integer; p:longint;
Begin
   clrscr;
   readln(n);
   p:=1;
   for i:=1 to n do
      p:=p*i;
   write(n,'!
= ', p);
End.

  2. Вычислить наибольший общий делитель двух целых чисел a и b.  

 Program NOD;
   uses crt;
   var a,b: integer;
Begin
   clrscr;
   readln(a,b);
   a1:=a;
   b1:=b;
   while a<>b do
      if a>b then a:=a-b
      else b:=b-a;
   writeln('
НОД(',a1,',',b1,') = ',a);
   readln;
End.

  3. Вычислить наименьшее из 20 целых чисел.  

 Program min_of_20;
   uses crt;
   var n, min, i: integer;
Begin
   clrscr;
   writeln('
Введите первое число');
   readln(n);
   min:=n;
   for i:=2 to 20 do
   begin
      writeln('
Введите ',i , '-е число');
      readln(n);
      if n<min then min:=n
   end;
   writeln('min = ', min);
   readln;
End.

   
::  

::


Rambler's Top100 Крапивна
 

(с)2005-2006 Web studio SEDUVAN

Hosted by uCoz