Программирование циклических алгоритмов

Автор работы: Пользователь скрыл имя, 11 Декабря 2011 в 20:09, лабораторная работа

Краткое описание

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

Вложенные файлы: 1 файл

20111102200853.docx

— 143.99 Кб (Скачать файл)

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

     ПРОГРАММИРОВАНИЕ  ЦИКЛИЧЕСКИХ АЛГОРИТМОВ. 

Цель  работы:

     Познакомиться с операторами цикла, научиться  составлять программы  с использованием операторов повторения.

5.1 Оператор цикла  FOR

Общие сведения:

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

Существует два варианта оператора:

  1. for <переменная>:=<нач. значение> to <кон. значение> do<оператор>;

где переменная - переменная порядкового типа, причем она последовательно принимает значения от начального до конечного с шагом 1.

  1. for <переменная>:=<нач. значение> downto <кон. значение> do <оператор>;

где переменная принимает последовательно убывающие значения с шагом -1. 

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

     I – параметр цикла

     N – начальное значение параметра 

     К – конечное значение параметра 

     Выполняется следующим образом:

  1. Параметру присваивается начальное значение N;
  2. Проверка: Если значение параметра не больше (не меньше) конечного значения K, то переход на п.3 иначе п.6.
  3. Выполняется тело цикла
  4. Параметр цикла увеличивается (уменьшается) на 1
  5. Переход на п.2
  6. Выход из цикла

     Нельзя  изменять параметр в теле цикла. При  использовании кратных (вложенных) циклов применять разные переменные в качестве параметров. Определять до цикла значения всех используемых в нем переменных. Не ставить точку  с запятой после do. 
 
 

Пример №1

Наводнение продолжалось ровно сутки. В первый час вода в реке поднялась на 1 дюйм, во второй - на 2, в третий - на 3, и т.д. На сколько дюймов поднимется уровень воды за сутки? (Дана программа вычисления  суммы 24 членов ряда: 1+2+3+...+24): 

     var  k,s: integer;

           begin

                  s:=0;

                  for k:= 1 to 24 do

                     s:=s+k;

                    writeln('сумма=', s);

       end.

Пример №2

Вывести на экран натуральные числа от 1 до 9 в обратном порядке.  

     Program z;

     Var i:integer;

     Begin

     For i:=9 downto 1 do

     Writeln(i);  

     End.

     Параметр цикла может и не использоваться в теле цикла, так что основное его назначение – это управление числом повторений цикла. Например, значение y= x n, где n>=0 – целое, можно вычислить по следующему алгоритму: предварительно положить y=1, а затем n раз домножить это значение на x: 

Пример №3

     Readln(n);

      Readln(x);

      Y:= 1;

      For i:= 1 to n do y:= y*x;

     Как видно, здесь параметр цикла i служит лишь для того, чтобы тело цикла (оператор y:= y* x) выполнилось нужное число раз.

     Если  необходимо последовательно выполнять  несколько операторов в теле цикла, их следует объединить в составной  оператор с помощью операторных  скобок BEGIN...END. 

Порядок выполнения работы:

  1. Изучить описание лабораторной работы.
  2. Разобрать примеры программ
  3. Решить задачу по индивидуальному варианту (номер варианта совпадает с номером в списке журнала
  4. Продемонстрировать результаты выполнения работы преподавателю.

Варианты  заданий:

  1. Вывести на экран все простые числа в диапазоне от 2 до N. Протестировать программу для N=100.
  2. Вводятся 10 чисел, посчитать среди них количество положительных.
  3. Даны два целых числа A и B (A < B). Вывести в порядке убывания все целые числа, расположенные между A и B (не включая числа A и B), а также количество N этих чисел.
  4. Вывести на экран таблицу перевода из градусов по шкале Цельсия в градусы по Фаренгейту для значений от 15°С до 30°С с шагом в 1°С. Перевод осуществляется по формуле: F=C*1.8+32.
  5. Дано вещественное число — цена 1 кг конфет. Вывести стоимость 1, 2, ... , 10 кг конфет.
  6. Даны два целых числа A и B (A < B). Найти сумму квадратов всех целых чисел от A до B включительно
  7. Вычислите: 99-98+97-96+95-94+....+5-4+3-2+1.
  8. Даны два целых числа A и B (A < B). Найти произведение всех целых чисел от A до B включительно.

512  рыцарей собрались  на турнир,

Чтоб  самого достойного узнал  волшебный мир,

Они сразились по двое и до исхода дня

Из  каждой пары рыцарей  один упал с коня.

И если будут рыцари все так же продолжать,

То  сколько дней осталось им друг с другом воевать?

  1. Наловил дед рыбы полный воз. Рыба – крупные лещи. Едет домой  и видит, лисичка свернулась калачиком, лежит на дороге. Дед – с воза, подошел, а лисичка не шелохнется. Дед решил, что лиса мертвая: «Вот славная находка! Будет старухе воротник на шубу». Взял он лису положил на воз, а сам пошел впереди.  А лисица улучила время и стала выбрасывать из воза все по рыбке да по рыбке. Сначала лиса действовала осторожно, а затем смелее. В  первую минуту она выбросила 1 леща, во вторую – 2, в третью – 4 и т.д., через 7 минут она выбросила всю рыбу, и сама потихоньку удрала. Сколько лещей досталось лисе?
  2. Дано вещественное число — цена 1 кг конфет. Вывести стоимость 0.1, 0.2, ... , 1 кг конфет.
  3. В 1626 году индейцы продали остров Манхеттен за 20 долларов. Если бы эти деньги были помещены в банк на текущий счет  и ежегодный прирост составлял бы 4%, какова была бы стоимость капитала в 2003 году?
  4. Дано вещественное число — цена 1 кг конфет. Вывести стоимость 1.2, 1.4, ... , 2 кг конфет.
  5. Даны целые числа K и N (N > 0). Вывести N раз число K.
  6. Вывести целые числа и их квадраты от 1 до 20;
  7. Готовясь к соревнованиям, лыжник в первый день побежал 10 км, затем каждый день увеличивал расстояние на 10%. Сколько километров пробежал он за неделю тренировок? На какой день он пробежал больше 15 км?
  8. Напечатать буквы от 'Z' до 'A'.
  9. Найти сумму чисел от 100 до 200, кратных 17. Подсчитать количество таких чисел.
  10. На день рождения к Алле Пугачевой пришли гости. Первый гость подарил ей 5 роз, а каждый последующий дарил на 5 роз больше. Сколько певице подарили цветов, если последний гость подарил ей 100 роз?
  11. Даны два целых числа A и B (A < B). Вывести в порядке убывания все целые числа, расположенные между A и B (не включая числа A и B), а также количество N этих чисел.
  12. Даны два целых числа A и B (A < B). Вывести в порядке возрастания все целые числа, расположенные между A и B (включая сами числа A и B), а также количество N этих чисел.
  13. Гражданин 1 марта открыл счет в банке, вложив 1000 руб. Через каждый месяц размер вклада увеличивается на 2% от имеющейся суммы. Определить прирост суммы вклада за 1,2,...,6 месяц.
  14. Даны два целых числа A и B (A < B). Найти сумму всех целых чисел от A до B включительно.
  15. Дано целое число N (> 0). Найти произведение 1.1 · 1.2 · 1.3 · ... (N сомножителей).
  16. Дано вещественное число A и целое число N (> 0). Используя один цикл, найти сумму 1+ A + A2 + A3 + ... + AN .
  17. Найти произведение первых k натуральных чисел, кратных трём.
  18. Вывести целые числа и их квадраты от 20 до 1.
  19. Однажды умный бедняк попросил у скупого богача приюта на две недели, причем сказал: ’За  это я заплачу тебе в первый день 1 рубль, во второй – 2, в третий -3 и т.д., но ты будешь мне подавать милостыню: в первый день 1 копейку, во второй –2, в третий–4  и т.д. увеличивая милостыню каждый день вдвое. Богач с радостью согласился. Сколько барыша принесла эта сделка богачу? 
  20. Найти сумму чисел от 100 до 200, кратных 3. Подсчитать среднее геометрическое этих чисел
  21. Дано вещественное число A и целое число N (> 0). Найти A в степени N: AN = A·A· ... ·A (числа A перемножаются N раз).
  22. Найти сумму чисел от 1 до 200, кратных 7. Подсчитать среднее арифметическое этих чисел.
 
 

5.2 ОПЕРАТОР ПОВТОРА WHILE

цикл  с предусловием (цикл ПОКА) 

Оператор повтора while состоит из заголовка и тела цикла. Ключевые слова while и do обозначают "до тех пор, пока" и "выполняй" соответственно. 

     while <Условие выполнения цикла> do

           { Инструкции }

         end;  

     В операторе while проверка <Условие выполнения цикла> производится в самом начале оператора — если значение условия равно true (истина), то выполняются инструкции цикла, находящиеся между begin и end и снова вычисляется выражение <Условие выполнения цикла>. Так продолжается до тех пор, пока значение <Условие выполнения цикла> не станет равно false (ложь).  

Пример №1

Рассмотрим фрагмент программы суммирования чисел от 1 до 10.

     

      s:= 0; i:= 1;

         while i<=10 do { находим сумму чисел от 1 до 10 }

           begin

             s:=s+1;

             i:=i+1; { изменение переменной управления циклом }

           end;

          … 

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

Пример №2

Найти  сумму цифр в записи данного натурального числа;

      Program SUM;

       Var a,b,s,k:Integer;

     Begin

         Readln(a);

         s:=0;

         While a<>0 do

           begin

              b:=b mod 10;

              s:=s+b;

              a:=trunc(a/10);    { a := a div 10 }

           end;

        Writeln(s);

     End.

     Следует знать:

     • число повторений операторов (инструкций) цикла while определяется в ходе работы программы и, как правило, заранее  неизвестно;

     • после слова while записывается условие  продолжения выполнения инструкций цикла, в этом отличие цикла while от цикла repeat;

     • условие — это выражение логического  типа: простое выражение отношения  или сложное выражение отношения (логическое выражение), которое может  принимать одно из двух значений: true или false;

     • для успешного завершения цикла while в его теле обязательно должны присутствовать инструкции, оказывающие  влияние на условие выполнения инструкций цикла;

     • цикл while — это цикл с предусловием, т. е. инструкции тела цикла вообще могут  быть не выполнены, если проверяемое  условие ложно с самого начала;

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

     • цикл while обычно применяется в тех  же задачах, что и repeat (в зависимости  от личного вкуса программиста). Удобнее всего использовать его  в тех случаях, когда возможны ситуации невыполнения цикла;

     • в операторе цикла while точка с  запятой никогда не ставится после  зарезервированного слова do.Общие сведения: 

5.3 ОПЕРАТОР ПОВТОРА REРЕАТ

цикл  с постусловием (цикл ДО) 

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

rереаt состоит из заголовка (rереаt), тела и условия окончания (until). Ключевые слова rереаt, until обозначают "повторяй" и "пока" соответственно. 

      repeat

           { Инструкции )

         until <Условие выхода из цикла>;  

     Вначале выполняется тело цикла — инструкции, которые находятся между rереаt и until, затем проверяется значение условия выхода из цикла. В том  случае, если оно равно falsе (ложь), т. е. не выполняется — инструкции цикла  повторяются еще раз. Так продолжается до тех пор, пока условие не станет true (истина).  
 

Пример №2

Информация о работе Программирование циклических алгоритмов