У вас вопросы?
У нас ответы:) SamZan.net

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

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 29.12.2024

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

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

с известным числом повторений.

При выполнении работы необходимо знать:

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

Теоретический минимум:

  1.  Структуры циклических алгоритмов.

Алгоритмы циклической структуры бывают нескольких видов.

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

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


Структура цикла с известным числом повторений:

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

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


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

Для многократного повторения одних и тех же действий в Turbo Pascal предусмотрены три оператора цикла. Если число повторений цикла (или итераций) заранее не известно, но известно условие завершения цикла, в таких случаях применяются операторы REPEAT  и WHILE. Если число повторений известно, то используется оператор FOR.

Оператор цикла FOR, известный как оператор цикла с параметром, выглядит так:

for i=a to b do s;

При выполнении этого оператора сначала вычисляется некоторое начальное значение а, которое присваивается переменной i, называемой параметром цикла. Затем вычисляется конечное значение b и проверяется, имеет ли место равенство i=b. Если равенства нет, выполняется оператор s, который может быть составным, и переменная i увеличивается на единицу. После этого проверка, не равен ли параметр конечному значению, а также выполнение оператора s и увеличение переменной i на единицу выполняются циклически до тех пор, пока не будет получено равенство i=b.

Параметр цикла i, а также начальное и конечное значения и b) могут принадлежать любому порядковому типу (например, Integer или Char). (Но при этом все они должны быть одного типа.) Если начальное значение превышает конечное значение или равно ему с самого начала, оператор s не выполнится ни разу.


Оператор цикла
FOR имеет такие особенности:

  •  в теле цикла запрещается явно изменять значение параметра цикла (с помощью оператора присваивания, например);
  •  по завершении работы оператора цикла FOR, значение параметра (i) считается неопределенным.

Возможна и другая форма оператора цикла с параметром:

          for i=a downto b do  s;

Здесь, чтобы выполнялся оператор s, начальное значение а должно превышать конечное значение b. Кроме того, в этом случае параметр i с каждым циклом уменьшается на единицу, пока не становится равным конечному значению b.

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

  1.  Оператор циклаWHILE.

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

while p do s;


Работа оператора определяется следующей схемой:

При выполнении этого оператора сначала вычисляется некоторое логическое выражение р (условие), принадлежащее типу Boolean, в случае истинности которого выполняется оператор s (являющийся, как правило, составным). После этого вычисление условия, его проверка и выполнение оператора s повторяются до тех пор, пока выражение р не становится равным FALSE. Затем управление передается следующему (после WHILE) оператору программы.

Если условие р равно FALSE с самого начала, оператор s, который называется телом цикла, не выполнится ни разу. Если условие р тождественно TRUE (while true do s), цикл будет бесконечным. Очевидно, для того чтобы тело цикла выполнилось всего несколько раз (чтобы количество итераций было больше нуля, но меньше бесконечности), значение условия должно каждый раз преобразовываться в теле цикла.

Для того чтобы понять разницу между операторами цикла WHILE и FOR, рассмотрим соответствующие фрагменты программ, выводящие на экран строки звездочек.

Цикл WHILE                                        Цикл FOR

Line:=l;                                            for  Line=l   to  n do

while Line<n do                                 WriteLn(‘**********’);

  begin

WriteLn(‘**********’);

Line:= Line+1

end;

Если переменная Line объявлена (в разделе описания переменных) как принадлежащая типу Integer, оператор FOR выведет на экран п строк звездочек. Реализация задачи с помощью оператора FOR выглядит проще, поскольку здесь нет нужды в операторе присваивания Line : =1 и Line : = Line+1.

  1.  Оператор цикла REPEAT.

Оператор цикла REPEAT, известный как оператор цикла с постусловием, имеет такой вид:

repeat  S  until  P;


Работа оператора определяется следующей схемой:

При выполнении этого оператора сначала выполняется тело цикла (S), затем вычисляется некоторое логическое выражение P (условие), принадлежащее типу Boolean, в случае ложности которого вновь выполняется тело цикла. Затем выполнение тела цикла, вычисление условия P  и его проверка повторяются до тех пор, пока выражение P не становится равным TRUE. После этого управление передаётся следующему (за REPEAT) оператору в программе.

Оператор REPEAT отличается от оператора WHILE, во-первых, тем, что здесь условие проверяется после выполнения тела цикла. Иными словами, гарантируется хотя бы однократное его выполнение. Во-вторых, оператор REPEAT выполняется до тех пор, пока условие равно FALSE, и управление передается следующему (за REPEAT) оператору, когда условие становится равным TRUE (для оператора WHILE имеет место обратная зависимость).

Даже если условие р равно TRUE с самого начала, тело цикла выполнится хотя бы раз. Если условие р тождественно FALSE (repeat s until false), цикл будет бесконечным.

Для того чтобы понять разницу между операторами цикла WHILE и REPEAT, рассмотрим соответствующие фрагменты программ, вычисляющих степени числа 3 в диапазоне между 1 и 300.

Цикл WHILE                                            Цикл REPEAT    

a:=3:                                                           a:=3;

while a<300  do                                          repeat

  begin                                                          WritteLn (a);

  WritteLn (a);                                            a:=a*3

  a:=a*3                                                         until  a>=300;

end;

Прежде всего бросается в глаза, что условия повторения цикла для двух случаев противоположны. Это объясняется тем, что в операторе WHILE цикл выполняется, пока условие не примет значение FALSE, а в операторе REPEAT – пока условие не примет значение TRUE.

Так же следует обратить внимание на то, что тело цикла REPEAT не требуется заключать в операторные скобки BEGINEND. Если в операторе WHILE после ключевого слова DO выполняется единственный оператор (и если требуется циклически выполнять несколько действий, приходится несколько операторов объединять в составной оператор), то в операторе REPEAT между ключевыми словами REPEAT и UNTIL  можно ввести любое количество операторов, без необходимости заключать их в операторные скобки.

Наконец в операторе REPEAT  после последнего оператора в теле цикла нет точки с запятой. Это ещё одна особенность оператора REPEAT—перед ключевым словом UNTIL точка с запятой необязательна.

  1.  
    Вложенные циклы

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

  1.  Оператор перехода

Оператор перехода имеет вид:     

goto p;

где p— метка, которой помечен некоторый иной оператор в программе. В данном случае речь идет о переходе на метку, указанную после оператора.

Оператор перехода предназначен для передачи управления в другую точку программы (т.е. для нарушения естественного порядка выполнения операторов).

Например:

goto 11;

...

11: WriteLn (a) ;

В Turbo Pascal допускается использовать в качестве меток как числа (от 1 до 9999), так и идентификаторы.

После оператора GOTO должна быть указана единственная метка, и такой же меткой обязательно должен быть помечен один (и только один) из операторов программы. Однако один и тот же оператор может помечаться несколькими метками. Иными словами, каждый оператор перехода передает управление в одну (и только в одну) точку программы, однако возможна передача управления из разных точек программы в одну.

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

label  1, 2, new;

Злоупотреблять использованием операторов GOTO не рекомендуется, поскольку в результате получаются малопонятные программы. Тем более что без оператора GOTO, как правило, можно обойтись, применив другие средства Turbo Pascal.

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


Задача 5.

Найти сумму ряда:   

Математическая формулировка задачи:

Сумму ряда можно определить при помощи цикла. Для этого обозначим знаменатели дробей переменной i. Эта переменная будет счетчиком цикла. Она имеет начальное значение 2 и конечное значение 100 (так как знаменатель первой дроби равен 2, а последней дроби равен 100). В цикле значение переменной i будет увеличиваться на 1 на каждом проходе. При помощи переменной i на каждом проходе цикла получаем очередной элемент ряда el:=1/i. Будем добавлять текущий элемент каждый раз к предыдущей сумме, то есть на каждом проходе цикла сумма станет увеличиваться на очередное значение el. Так постепенно накопится вся сумма.


Текст программы:

Program Ex_5;

Uses Crt;

Var 

    S: real;        { сумма }

    El: real;      { элемент ряда }

    i: integer;    { знаменатели дробей }

Begin

    ClrScr;

    S:=0;

    For i:=2 to 100 do

        begin

        el:=1/i;

        S:=S+el;

        End;

    Writeln(‘S=’,S);

Readln;

End.

PAGE  52




1. Контрольная работа по дисциплине Налоги и налогообложение Вариант 6
2. бумажное производство ЦБП; мебельное производство
3. Прощание с начальной школой подготовила учитель начальных классов Галкина Елена Ко
4. на тему- Реактивное движение
5. Разработка производственной программы цеха машиностроительного предприятия
6. Гарантии наториата
7. Илья Муромец и Соловейразбойник Добрыня и змей Алеша Попович и Тугарин Садко только в стихах
8. а Гравець Витрати Вигоди Чисті вигоди
9. Геном человека
10. Тяньши Из книги А
11. Вариант 1 Унифицированная форма Т7Утверждена Постановлением Госкомстата Россииот 05
12. Демократия Сложность определения и недостатки ее практических форм
13. Контрольная работа предоставляется преподавателю на проверку на одном из электронных носителей CDR CDRW и на
14. UNIPHRM firm фирма УНИФАРМ КОРОЛЬ ПРУССИИ
15. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата ветеринарних наук
16. сельскохозяйственное производство
17. Сервисная деятельность 1 Предпосылки возникновение сервисной деятельности
18. Чума собак
19. темам Все звенья ЛЦ Логистическая цепь должны работать как единый слаженный механизм
20. 072008 N 342 Зареєстровано в Міністерстві