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;

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


 

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

66538. Управление службой каталога в Windows-сети 20.7 KB
  Определены роли пользователей – оператор станции ввода, оператор станции обработки, оператор станции хранения. Для демонстрации ограничений, задаваемых для разных ролей, операторам станции ввода добавлен запрет на чтение ветки...
66539. Исследование мостовых соединений 201 KB
  Оборудование: Беспроводные адаптеры (типа DWL-G132) – по одному на пользователя Точки доступа (типа DWL-2100AP) – 2 штуки Точки доступа (типа DWL-3200AP) – 2 штуки Цель работы: Изучение дополнительных режимов работы WDS и WDS with AP.
66540. Моделі та методи обробки нечітких знань. Нечіткі множини 31.77 KB
  При розробці інтелектуальних систем знання про конкретну предметну область, для якої створюється система, рідко бувають повними й абсолютно достовірними. Навіть кількісні дані, отримані шляхом досить точних експериментів
66541. ДОСЛІДЖЕННЯ ЛІНІЙНОГО РОЗГАЛУЖЕНОГО ЕЛЕКТРИЧНОГО КОЛА СИНУСОЇДНОГО СТРУМУ 600 KB
  Експериментально визначити параметри резистора R, котушки індуктивності (індуктивність L, резистивний опір Rк) та конденсатора С в колі синусоїдного струму. Експериментально дослідити явище резонансу струмів, фазові й енергетичні співвідношення в колі з паралельним з'єднанням котушки індуктивності (з індуктивністю L і резистивним опором
66543. Тестування, логічна організація та форматування HDD 1.57 MB
  Натискаємо клавішу P англ і вибираємо потрібний канал вибір здійснюється стрілочками якщо ви не знаєте який у вас диск вибирайте по черзі. Натискаємо Enter і F2. Якщо не з'явився натискаємо знову P і вибираємо інший канал.
66544. Освоение технологии структурного программирования и применения стандартных методов работы с одномерными массивами при разработке и создании программы на языке Турбо Паскаль 224 KB
  Освоение методов структурного программирования при разработке и создании программы на языке Турбо Паскаль для обработки одномерных массивов. Теоретические сведения Массив это регулярная структура последовательность однотипных данных объявляемых специальной конструкцией языка...
66545. Многопоточность. Межпроцессорные взаимодействия 49 KB
  Два дочерних процесса выполняют некоторые циклы работ, передавая после окончания очередного цикла через очереди сообщений родительскому процессу очередные четыре строки некоторого стихотворения, при этом первый процесс передает нечетные четверостишья, второй - четные.
66546. МНОГОПОТОЧНОСТЬ. МЕЖПРОЦЕССНЫЕ ВЗАИМОДЕЙСТВИЯ 64.6 KB
  Написать программу, создающую два потока, которые выполняются в одном адресном пространстве (в одном процессе). Их разделяемый ресурс - целочисленный массив, который содержит данные совместного использования. Потоки должны обрабатывать массив поочередно.