50080

Циклические программы

Лабораторная работа

Информатика, кибернетика и программирование

Операторов цикла в Паскале три: for repet while. Оператор For Оператор состоит из заголовка в котором определяется порядок изменения переменной параметра цикла и тела цикла являющегося многократно повторяющимся алгоритмом. Общий вид оператора: For параметр цикла : = начальное значение to конечное значение do оператор; {тело цикла}. Этот оператор применяется если начальное значение конечного значения; For параметр цикла:= начальное значение downto конечное значение do оператор; применяется если начальное значение конечного значения.

Русский

2014-01-15

47.5 KB

8 чел.

PAGE  3

Лабораторная работа № 7

Циклические программы

Наиболее часто в практике программирования встречаются циклические программы. В циклических программах какой-либо алгоритм повторяется многократно, при этом один из параметров изменяется. Операторов цикла в Паскале три: for, repeat, while.

Оператор For

Оператор состоит из заголовка, в котором определяется порядок изменения переменной параметра цикла и тела цикла, являющегося многократно повторяющимся алгоритмом.

Общий вид оператора:

For – <параметр цикла>: = <начальное значение> to <конечное значение> do оператор; {тело цикла}.

Этот оператор применяется, если начальное значение < конечного значения;

For – параметр цикла:= начальное значение downto конечное значение do оператор; применяется, если начальное значение > конечного значения.

Пример: найти сумму квадратов целых чисел от 8 до 24.

Program Prim;

Var     i,s:integer;

BEGIN   s:=0;

for i:= 8 to 24 do

s:=s+sqr(i);  

writeln('s=',s);  

END.

Работа программы. В разделе Var выделяется ячейка памяти с именем i и s для хранения величин. Поскольку в S мы должны накапливать сумму, то вначале занесем в S ноль. Затем заголовок цикла присваивает i=8. далее выполняется тело цикла: извлекается содержимое ячейки S (а там у нас 0) и к этому содержимому прибавляется sgr(i), т.е. i2=82. Результат присваивается ячейке S, т.е. в S теперь 82.

Проверяется, не стал ли параметр цикла больше конечного значения параметра 24. Это не произошло, поэтому i присваивается следующее значение равное 9 и вновь выполняется тело цикла, т.е. S:=82+92. Можно сказать так: S присвоить тому S, которое было раньше, + следующее i2. Так как цикл еще не закончился, то i станет равным 10, а S присвоится тому S, которое было раньше, т.е. 82+92, и к нему прибавится еще текущее i2, т.е. 102. Этот процесс повторяется до тех пор, пока параметр цикла не станет равным 24. Тогда в последний раз 242 прибавляется к накапливаемой сумме.

Итак:  выполнение цикла значения i  значения S

  1   8   82

   2   9  82+92

   3   10   82+92+102

При i=25 происходит выход из цикла и переход к оператору writeln ('S=' ,S);

Правила применения оператора цикла For

  1.  Тело цикла – всегда один оператор. Если нужно, чтобы тело цикла состояло из нескольких операторов, то их объединяют в один с помощью операторных скобок begin, end.

For i:=l to n do

Begin

S:=S+sin(x)/cos(x);

x=x+0.01;

writeln('S=' ,S)

end.

Операторы, взятые в операторные скобки begin, end, считаются одним составным оператором.

  1.  Начальное и конечное значения параметра цикла в общем случае являются выражениями. Тип этих выражений и тип параметра цикла должны совпадать. Здесь допускается применение любых типов, которые упорядочены с каким-либо фиксированным шагом, это может быть любой скалярный тип, кроме вещественного, т.е. байтовый, целый, символьный, перечисляемый, интервальный, булевский. На практике чаще всего применяют целочисленный тип.
  2.  В теле цикла параметр цикла не должен изменяться.
  3.  Нельзя с помощью оператора перехода goto войти в тело цикла, минуя заголовок.
  4.  Выйти из тела цикла в программу можно по if..goto, не дожидаясь полного перебора параметров цикла.

 

Оператор Repeat.

Общий вид. В отличие от for, оператор repeat (а также while) применяют тогда, когда неизвестно точно, сколько раз будет выполняться тело цикла. Общий вид оператора

Repeat

оператор;

оператор;

 – – – – – – – –

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

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

Явного перебора параметров в Repeat не предусмотрено, поэтому изменение параметров осуществляется в теле цикла. Здесь же необходимо позаботиться, чтобы рано или поздно булевское выражение стало истиной.

Замечания:

  1.  Тело оператора repeat выполняется по меньшей мере один раз. Оператор repeat еще называют циклом с послеусловием.
  2.  Перед until ';' не ставится.

Пример: найти сумму четных чисел в интервале от 0 до 100.

Program Prim;

Var i,s:integer;

BEGIN   i:=0;    s:=0;

Repeat

i:=i+2;  s:=s+i

until i>100;

writeln('s=',s);

END.

Оператор While

While – оператор цикла с предусловием.

Общий вид оператора: While  <булевское выражение> do

тело цикла.

Работа оператора. Вначале вычисляется булевское выражение, и если оно истинно, то выполняется тело цикла; если оно ложно, то происходит выход из цикла.

Тело цикла – один оператор, как правило, составной. Мы должны позаботиться о том, чтобы булевское выражение в теле цикла на каком-то этапе стало ложным, иначе цикл никогда не закончится. Цикл можно сделать умышленно бесконечным, написав: while true do оператор;

Пример: найти сумму четных чисел в интервале от 0 до 100.

Program Prim;

Var i,s:integer;

BEGIN  

i:=0; s:=0;

while i<100 do

Begin  i:=i+2;   s:=s+i; end;

writeln('s=',s);

END.

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

Program Prim;

Var

i,j:integer;

  BEGIN

for i:=1 to 5 do

   Begin       

   writeln;

       for j:=20 to 23 do

            write('i=',i,' j=',j);

     end;

END.

Для цикла

for i:=1 to 5 do

телом цикла является

begin for j:=20 to 23 do

write('  i= ', i, ' ,  j = ', j);

writeln;     

end;

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


 

А также другие работы, которые могут Вас заинтересовать

67746. Разработка малярного отделения АТП на 411 автомобилей МАЗ-53371 3.09 MB
  Малярные работы являются завершающими при ремонте кузова автомобиля, потому в малярный участок автомобили поступают после выполнения всех видов работ. При организации работы в малярном участке наибольшее число рабочих мест создается для подготовки автомобиля к окраске.
67748. Проектирование систем отопления и вентиляции жилого дома в г.Троицкое 2.45 MB
  Цель: рассчитать толщину утепляющего слоя, термическое сопротивление ограждения и коэффициент теплопередачи. Теплотехнический расчет выполняется для наружной стены, подвального, чердачного перекрытий, наружной входной двери. Теплотехнический расчет наружной стены Определяем градусо-сутки отопительного...
67749. АРИФМЕТИКА МНОГОЧЛЕНОВ 461 KB
  Множество всех многочленов от одной переменной над полем образует коммутативное кольцо с единицей. В кольце многочленов имеет место алгоритм деления с остатком аналогичный тому который имеет место для целых чисел. Если для многочленов и в кольце существуют такие многочлены и что многочлен можно представить...
67750. Програмування в Mathcad. Освоєння основ програмування в Mathcad 59.5 KB
  Привести тестові приклади для розроблених програм Елементи вектору можуть бути дійсними або комплексними Знайти елемент вектору максимальний мінімальнний з максимальним значенням дійсної частини з мінімальним значення уявної частини максимальний по модулю...
67751. АРИФМЕТИКА ОСТАТКОВ 524 KB
  Для произвольного приведённого многочлена ненулевой степени над полем кольцом многочленов по модулю называется множество всех многочленов над этим полем, степени которых не превышают степень самого многочлена, с операциями сложения и умножения многочленов по модулю.
67753. ШИФРИ ЗАМІНИ І ПЕРЕСТАНОВКИ 118 KB
  Шифр заміни шифр підстановки метод шифрування при якому кожен елемент початкового тексту взаємнооднозначно замінюється одним або декількома знаками деякого алфавіту. Шифр простої заміни замінює кожен знак вхідного алфавіту на деякий знак з того ж алфавіту Результат заміни не залежить від розташування...