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

Особенности реализации команд повторения в языке программирования Паскаль. Описание операторов цикла и их действие. Случаи применения операторов цикла с предусловием и постусловием. Различия и особенности хорошего стиля работы с циклическими операторами.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 09.04.2013
Размер файла 42,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

КУРСОВОЙ ПРОЕКТ

По предмету: «Основы алгоритмизации и программирования»

На тему: «Оператор цикла с постусловием и предусловием»

Семей-2012.

Содержание

Задание на курсовой проект

Введение

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

1.1 Оператор WHILE

1.2 Оператор REPEAT

1.3 Оператор FOR

1.4 Различия между циклом - while и циклом - repeat

1.5 Параметры оператора цикла

1.6 Составление математических задач

Заключение

Литература

Приложение

Задание на курсовой проект

По дисциплине «Основы алгоритмизации и программирования»

Обучающийся:

Группа: Специальность: 1304000 «Вычислительная техника и программное обеспечение»

1.Тема курсовой работы «Оператор цикла с постусловием и предусловием».

2.Основное содержание:

Ш Содержание

Ш Заключение

Ш Приложение

Ш Список использованной литературы

3. Требование к оформлению

3.1 Пояснительная записка должна быть оформлена в редакторе Microsoft ® Word версии 2003,2007 в соответствии с требованиями

Пояснительная записка выполняется на листах формата А4 с применением печатающих и графических устройств вывода ЭВМ.

Шрифт Times New Roman. Размер шрифта - 14 пт, выравнивание - по ширине.

Рисунки выполняются в редакторах Word,Excel,Paintbrush.

Поля страница верхнее и нижняя границы - 2см, левая-3см, правая-1,5 см.

Абзацы в тексте начинают отступом в 1 см.

Каждый раздел пояснительной записки рекомендуется начинать с нового листа.

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

К защите курсового проекта создается презентация, содержащая главную суть курсового проекта.

В пояснительной записке должны содержаться разделы:

· Введение.

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

· Оператор WHILE.

· Оператор REPEAT.

· Оператор FOR.

· Различия между циклом - while и циклом - repeat.

· Параметры оператора цикла.

· Составление математических задач.

Введение

В языке Паскаль реализованы команды повторения в виде операторов цикла. В отличие от некоторых других языков программирования (например, Бейсик) в Паскале реализованы все три типа операторов.

BEGIN

Условие

ТЕЛО ЦИКЛА

WHILE

выполняется

не выполняется

END

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

У циклов выделяют заголовок и тело. Заголовок определяет, до каких пор или сколько раз тело цикла будет выполняться. Тело содержит выражения, которые выполняются, если в заголовке цикла выражение вернуло логическую истину (True, не ноль). После того как достигнута последняя инструкция тела, поток выполнения снова возвращается к заголовку цикла. Снова проверяется условие выполнения цикла. В зависимости от результата тело цикла либо повторяется, либо поток выполнения переходит к следующему выражению после всего цикла.

Циклом называется такая форма организации действий, при которой одна и та же последовательность действий (тело цикла) повторяется до тех пор, пока сохраняется значение некоторого логического выражения.

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

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

1.1 Оператор WHILE

Этот оператор является наиболее мощным из всех трех, реализующих циклы. Два других оператора можно выразить с его помощью. Общий этого оператора:

WHILE <Условие> DO <Тело цикла>;

Слово while читается "вайл", слово do - "ду", вся конструкция переводится так - Пока условие истинно, делай оператор.

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

Сначала компьютер проверяет истинность условия, стоящего после слова while. Если условие истинно, то выполняется оператор, стоящий после do. Затем снова проверяется истинность условия и в случае истинности снова выполняется этот оператор. И т.д. Если условие ложно, то оператор while прекращает свою работу и компьютер переходит к выполнению следующего оператора.

Оператор, стоящий после while, вполне может быть составным, поэтому тело цикла у оператора while, так же как и у оператора repeat, может состоять из многих операторов.

Из указанного описания видно, что оператор WHILE реализует базовую структуру «цикл-пока», так как здесь проверка условия идет до тела цикла. Поэтому оператор WHILE называют оператором цикла с предусловием. Между тем довольно часто встречаются такие циклические процессы, когда число повторений цикла тоже неизвестно заранее, но при некоторых значениях исходных данных предусмотренные в цикле действия вообще не должны выполняться, и даже однократное выполнение этих действий может привести к неверным или неопределенным результатам.

В заголовке цикла находится логическое выражение. Если оно возвращает true, то тело цикла выполняется, если false - то нет. Оператор while заключен в операторные (фигурные) скобки, до тех пор, пока логическое выражение <условие> не примет значение ЛОЖЬ (0). Оператор while называют оператором цикла с предусловием, так как истинность <условие> проверяется перед входом в цикл. Следовательно, возможна ситуация, когда тело цикла не выполнится ни разу, если на запрос ввести 0. Если необходимо обеспечить выполнение цикла хотя бы один раз, то удобно использовать оператор цикла с постусловием:

do <оператор> while (<условие>);

или

do {<оператор_1>; <оператор_2>;…<оператор_n>;} while(<условие>);

Здесь сначала выполняется <оператор> или группа операторов, а затем проверяется значение выражения <условие>. Повторение тела цикла (<оператор>) происходит до тех пор, пока <условие>не примет значение ложь.

Когда тело цикла было выполнено, то ход программы снова возвращается в заголовок цикла. Условие выполнения тела снова проверяется (находится значение логического выражения). Тело цикла выполнится столько раз, сколько раз логическое выражение вернет true. Поэтому очень важно в теле цикла предусмотреть изменение переменной, фигурирующей в заголовке цикла, таким образом, чтобы когда-нибудь обязательно наступала ситуация false. Иначе произойдет так называемое зацикливание, одна из самых неприятных ошибок в программировании. Оператор цикла Паскаля с предусловием можно считать наиболее универсальным - с использованием таких операторов можно задать и циклические процессы, определяемые операторами цикла с параметром и постусловием.

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

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

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

WHILE логическое выражение DO оператор

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

Пусть, например, дано вещественное число М. Требуется найти наименьшее целое неотрицательное число k, при котором 3 k> M. Эту задачу можно решить по следующему алгоритму: предварительно положить y=1 и k=0; затем в цикле домножать значение y на 3 и увеличивать значение k на 1 до тех пор, пока текущее значение y впервые окажется больше значения М. На первый взгляд, здесь можно воспользоваться оператором цикла с постусловием:

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

y:=1; k:=0;

Repeat

y:=y*3;

k:=k+1;

Until y> M;

Однако нетрудно убедиться в том, что при M<1 будет получен неправильный результат k=1, тогда как должно быть получено k=0: в этом случае предварительно сформированное значение k=0 является окончательным результатом и действия, предусмотренные в цикле, выполняться не должны.

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

While B do S,

где while (пока), do (делать, выполнять) - служебные слова, В - логическое выражение, S - оператор. Здесь оператор S выполняется ноль или более раз, но перед каждым очередным его выполнением вычисляется значение выражения В, и оператор S выполняется только в том случае, когда значение выражения В true. Выполнение оператора цикла завершается, когда выражение В впервые принимает значение false. Если это значение выражение В принимает при первом же его вычислении, то оператор S не выполнится ни разу.

В рассматриваемой нами задаче правильное значение k при любом значении М может быть получено следующим образом:

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

y:=1; k:=0;

While y<=M do

Begin

y:=y*3;

k:=k+1;

End;

1.2 Оператор REPEAT

Оператор REPEAT называют оператором цикла с постусловием, так как здесь выражение, управляющее повторным выполнением последовательности операторов, помещается после тела цикла:

REPEAT <Тело цикла> UNTIL <Условие>;

Конструкция repeat . . . . . until читается "ри'пит.....ан'тил...", а переводится "повторяй......до тех пор, пока не станет больше".

Из общего вида оператора видно, что в этом операторе не обязательно использовать для тела цикла операторные скобки. Здесь ключевые слова REPEAT и UNTIL сами играют роль этих скобок.

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

В этом операторе тело цикла выполняется до тех пор, пока ложно условие, стоящее после UNTIL. Условием выхода из цикла является истинность выражения. Мы видим, что это есть форма «цикла-до». В цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while, здесь всё наоборот: в случае true происходит выход из цикла, в случае false - его повторение. Заметим, что оператор цикла с постусловием является более общим, чем оператор цикла с параметром -- любой циклический процесс, задаваемый с помощью цикла с параметром можно представить в виде цикла с постусловием. Таким образом, для программирования цикла достаточно определить условие, управляющее числом его повторений и описать операторы, образующие тело цикла. С этой точки зрения, теоретически возможны всего два вида циклов проверка условия либо предшествует выполнению тела цикла, либо происходит после него. В цикле с предусловием сначала проверяется условие, затем, в зависимости от того, истинно оно или ложно, либо выполняется тело цикла, либо следует переход к оператору, следующему за телом цикла. После завершения тела цикла управление вновь передается на проверку условия. Естественно, предполагается, что в теле цикла было обеспечено некоторое изменение входящих в условие переменных в противном случае произойдет зацикливание и программа "зависнет".

Рассмотрим теперь математическую задачу. Пусть нам необходимо вычислить сумму первых членов гармонического ряда, удовлетворяющих условию 1/i>= e, где 0< e<1, а i=1,2,3…...Эту задачу можно решить по следующему алгоритму: положить предварительно y=0 и i=0, а затем в цикле увеличивать i на 1, к значению y добавлять очередное слагаемое 1/ i до тех пор, пока текущее значение 1/ i впервые окажется больше заданного значения 0< e<1.

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

Для задания таких вычислительных процессов и служит оператор цикла Паскаля с постусловием. Этот оператор имеет вид:

Repeat S1; S2;…; Si until B,

где repeat (повторять) и until (до) - служебные слова, через Si обозначен любой оператор Паскаля, а через В - логическое выражение.

При выполнении этого оператора цикла последовательность операторов, находящихся между словами repeat и until, выполнится один или более раз. Этот процесс завершается, когда после очередного выполнения заданной последовательности операторов логическое выражение В примет (впервые) значение true. Таким образом, с помощью логического выражения В задается условие завершения выполнения оператора цикла. Поскольку в данном случае проверка условия производится после выполнения последовательности операторов (тела цикла), этот оператор цикла и называется оператором цикла с постусловием.

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

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

readln(e);

i:=0;

y:=0;

Repeat

i:=i+1;

y:=y+1/i;

Until 1/i<e;

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

1.3 Оператор FOR

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

FOR <Переменная>:= <Выражение 1> TO <Выражение 2> DO;

FOR<Переменная>:=<Выражение1>DOWNTO<Выражение1>DO;

Здесь «Переменная» есть параметр цикла, «Выражение 1» - начальное значение параметра, «Выражение 2» - его конечное значение. В качестве управляющей переменной должна быть переменная, объявленная локальной в блоке, который содержит данный оператор FOR. Управляющая переменная должна иметь ординальный тип. Начальное и конечное значения имеют тип, совместимый с типом параметра цикла.

Слово for читается "фо", переводится "для". Слово to читается "ту", переводится "до". Слово do читается "ду", переводится "делай".

Когда начинает выполняться оператор FOR, начальное и конечное значения определяются один раз, и эти значения сохраняются на протяжении всего выполнения оператора.

Оператор, который содержится в теле цикла, выполняется один раз для каждого значения управляющей переменной в диапазоне между начальным и конечным значениями. Управляющая переменная всегда инициализируется начальным значением. Она принимает все свои значения из диапазона с шагом 1, если TO, и с шагом -1, если DOWNTO.

В случае TO, если начальное значение превышает конечное, тело цикла не выполняется.

Для случая DOWNTO это имеет место, когда начальное значение меньше, чем конечное. Отсюда заключаем, что оператор цикла FOR реализует, как и WHILE, схему цикла «пока» - проверка условия повторения цикла идет до тела цикла. . Рассмотрим детально работу этого оператора.

1. Выполняется поле <инициализация>. Оно служит для присваивания начальных значений переменным, используемым в цикле.

2. Проверяется значение <условие>, если ЛОЖЬ, то завершается выполнение цикла.

3. Выполняется тело цикла (<оператор> или группа операторов).

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

5. Далее возвращаемся к пункту 2.

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

На параметр цикла (i) в операторе for накладываются следующие ограничения:

1) в качестве параметра может использоваться только целочисленная переменная без индекса;

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

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

4) после завершения цикла значение его параметра становится неопределенным, если только цикл не был прерван оператором перехода.

Выполнение оператора for начинается с присваивания его параметру цикла его начального значения m1; затем:

1) значение параметра (назовём его текущим и обозначим it) сравнивается с его конечным значением m2;

2) если it ? m2, выполняется тело цикла, после чего присходит возврат к оператору for и увеличение параметра на 1; если it > m2, тело цикла в очередной раз не выполняется, а следует переход на оператор, расположенный за циклом.

1.4 Различия между циклом - while и циклом - repeat.

программирование цикл оператор паскаль

Отметим различия и особенности хорошего стиля работы с рассмотренными циклическими операторами.

Цикл с предусловием While (пока условие истинно)

Цикл с постусловием Repeat (до истинности условия)

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

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

3. Цикл работает пока условие истинно (пока True)

3. Цикл работает пока условие ложно (пока False)

4. Цикл завершается, когда условие становится ложным (до False)

4. Цикл завершается, когда условие становится истинным (до True)

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

5. Цикл обязательно выполнится как минимум один раз

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

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

Цикл со счетчиком (с параметром) For

· Начальная установка переменной счетчика цикла до заголовка не требуется

· Изменение в теле цикла значений переменных, стоящих в заголовке не допускается

· Количество итераций цикла неизменно и точно определяется значениями нижней и верхней границ и шага приращения

· Нормальный ход работы цикла может быть нарушен оператором goto или процедурами Break и Continue

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

1. Оператор, находящийся в цикле while, повторяется до тех пор, пока условие удовлетворено (т.е. истинно). Последовательность операторов, находящихся в цикле repeat, повторяется до тех пор, пока условие не удовлетворено(т.е.ложно). Следовательно, в цикле while используется условие продолжения цикла, а в цикле repeat - условие окончания цикла.

2. В цикле while повторяется один оператор (несколько операторов надо объединять в составной оператор с помощью операторных скобок begin ... end), а в цикле repeat можно повторять несколько операторов без операторных скобок.

3. В цикле while сначала проверяется условие, а после этого в зависимости от значения условия выполняется или не выполняется оператор или группа операторов после слова do.

4. В операторе repeat проверка условия выхода из цикла производится в конце, а не в начале цикла, поэтому тело цикла выполняется хотя бы один раз.

5. В операторе repeat условие выхода из цикла удовлетворяется, если логическое выражение L истинно, а в операторе while - если ложно.

6. Тело цикла, организованного с помощью оператора while, может содержать только один оператор (в том числе и составной), в то время как между словами repeat и until их можно разместить несколько.

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

1.5 Параметры оператора цикла

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

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

Пример кода программы для суммирования первых n членов гармонического ряда

Readln(n);

Y:= 0;

For i:= 1 to n do y:= y+1/i;

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

For V:= E1 downto E2 do S,

где downto (уменьшаясь к) - служебное слово, а все остальные слова и выражения имеют прежний смысл. Изменение параметра цикла от большего значения к меньшему происходит при выполнении присваивания V:=pred(V). Заметим, что начальное значение может быть меньше конечного значения. В этом случае оператор S не выполнится ни разу. Значение параметра цикла по завершении выполнения такого цикла так же считается неопределенным.

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

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

Пример кода программы цикла Паскаля

Readln(n);

Readln(x);

Y:= 1;

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

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

Арифметический оператор цикла Паскаля с произвольным шагом

Естественным усложнением простого арифметического цикла Паскаля, является цикл, в котором параметр цикла изменяется не на 1, а на произвольную величину - шаг приращения. При этом в процессе выполнения цикла шаг изменяется по заданному закону. Стандартные операторы для реализации такого цикла есть в Форте, в других языках их приходится организовывать из простейшего арифметического цикла.

Итерационные операторы цикла Паскаля

Итерационные циклы отличаются от циклов с параметром тем, что в них заранее неизвестно число повторений.

Пусть мы отправляемся за грибами и возвращаемся домой, когда корзина наполнится. Все грибники делятся на 2 категории:

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

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

Отсюда получаются два варианта реализации итерационных циклов:

с предусловием и с постусловием.

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

Какой алгоритм выбрать? Это зависит от конкретной задачи.

Если, сделав шаг без проверки, можно свалиться в яму, то лучше проверка вначале (как слепой с палочкой). Ну, а если шаг без проверки вас не пугает, то можно отложить ее до завершения шага.

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

Для удобства реализации циклических структур на Паскале в последних версиях языка введены операторы break и continue, применяемые внутри циклов. Они расширяют возможности использования циклов и улучшают структуру программы.

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

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

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

Повторяемый блок вычислений называют телом цикла. В теле цикла должно быть обеспечено изменение значения счетчика, чтобы он мог завершиться. Если тело цикла состоит более чем из одного оператора, оно заключается в операторные скобки begin... end;. Однократное выполнение тела цикла называют его шагом.

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

1.6 Составление математических задач.

№1. Составим с использованием оператора repeat программу решения задачи о печати чисел 3 5 7 9

ВАРИАНТ С REPEAT.

VAR f : Integer; BEGIN Write('Начало счета '); f:=3; repeat

Write(f,' '); f:=f+2; until f>9;

Write(' Конец счета') END.

ВАРИАНТ С WHILE.

VAR f : Integer;

BEGIN

Write('Начало счета ');

f:=3;

while f<=9 do

begin

Write(f,' ');

f:=f+2;

end;

Write(' Конец счета')

END.

№2. 200 раз напечатать слово ФУТБОЛ.

VAR i : Integer; BEGIN for i:=1 to 200 do

WriteLn('ФУТБОЛ') END.

№3. Компьютер предлагает человеку ввести слово, после чего распечатывает это слово, снабдив его восклицательным знаком. Затем снова предлагает ввести слово и так до тех пор, пока человек не введет слово "Хватит". Распечатав его с восклицательным знаком, компьютер отвечает "Хватит так хватит" и заканчивает работу.

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

VAR Slovo : String;

BEGIN

repeat

WriteLn('Введите слово');

ReadLn(Slovo);

WriteLn(Slovo, '!')

until Slovo='Хватит';

WriteLn('Хватит так хватит')

END.

№4. Составить программу, которая определяет является ли данное число n простым.

Program Problem3; uses WinCrt; var n, d, k : integer; begin write("Введите натуральное число большее 2 "); readln(n); d := 2; k := 0; repeat if n mod d =0 then k := k + 1; d := d + 1 until d > n div 2; if k = 0 then writeln("Число ", n, " является простым") else writeln("Число ", n, " составное") end.

Составить программу вставки знаков * с помощью операторов цикла

1. var

i, n: integer;

begin

write ('Количество знаков:5 ');

readln (n);

i := 1;

while i <= n do begin

write ('(*) ');

i := i + 1

end;

readln

end.

2. var

i, n: integer;

begin

write ('Количество знаков: ');

readln (n);

i := 1;

repeat

write ('(*) ');

i := i + 1

until i > n;

readln

end.

3.var

i, n: integer;

begin

write ('Количество знаков: ');

readln (n);

for i := 1 to n do

write ('(*) ');

readln

end.

Заключение

Для всех операторов цикла характерна следующая особенность. Повторяющиеся вычисления записываются всего один раз. Вход в цикл возможен только через его начало. Переменные оператора цикла должны быть определены до входа в циклическую часть. Необходимо предусмотреть выход из цикла: или по естественному его окончанию, или по оператору перехода. Если этого не предусмотреть, то циклические вычисления будут повторяться бесконечно. В этом случае говорят что произошло “зацикливание” программы. В разделе описаний переменная n для целого числа, p - для цифр числа, i - счетчик цифр. В разделе операторов с помощью оператора write выводится на экран запрос для пользователя о вводе целого числа. Оператор readln заносит его значение в память и присваивает переменной n. Счетчику i устанавливается первоначальное значение 1. В операторе while записывается условие (пока n не равно 0), при котором цикл будет выполняться. Так как в цикле несколько операторов, то используются операторные скобки begin ... end. Надо сразу заметить, что в отличии от цикла while ... do, в цикле repeat ... until ... операторные скобки begin ... end могут не использоваться, хотя и использование их вреда не принесет. Можно сказать другими словами, что оператор цикла repeat ... until. ... не требует операторных скобок begin ... end.

Для оператора цикла с предусловием проверяется значение логического выражения, если оно имеет значение True, то операторы, входящие в цикл, выполняются, в противном случае осуществляется выполнение оператора, следующего за циклом.

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

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

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

Цикл не обязательно содержит счётчик, счётчик не обязан быть один -- условие выхода из цикла может зависеть от нескольких изменяемых в цикле переменных, а может определяться внешними условиями (например, наступлением определённого времени), в последнем случае счётчик может вообще не понадобиться. В Паскале считается, что при нормальном завершении выполнения оператора цикла значение параметра цикла не определено.

Литература

1. Методика преподавания информатики: Учеб. Пособие для студ. Пед. вузов / М.П. Лапчик, И.Г. Семакин. Е.К. Хеннер; Под общей ред. М.П. Лапчик. - М.:-Издательский центр «Академия», 2001.

2. Попов В.Б. Turbo Pascal для школьников: Учеб. Пособие.- 3-е доп. изд. - М.: Финансы и статистика, 2002.

3. Информатика. Задачник - практикум в 2т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Том 1. - М.: Бином. Лаборатория Знаний, 2002.

4. Культин Н. Б. Turbo Pascal в задачах и примерах. - СПб.: БХВ-Петербург, 2002.

5. Рапаков Г.Г., Ржеуцкая С.Ю. Turbo Pascal для студентов и школьников. - СПб.: БХВ-Петербург, 2004.

6. Фигурнов В.Э. IBM PC для пользователя. Изд. 6-е, М., 1995 г.

7. Фаронов В. В., Турбо Паскаль 7.0., Учебное пособие. - М.: «Нолидж», 1999 г.

8. Острейковский В.А. Информатика. -М.: «Высшая школа», 2000 г.

9. О.В.Максимова, В.И. Невзорова, «ИНФОРМАЦИОННЫЕ

ТЕХНОЛОГИИ.

10. Балапанов Е.К. Информатикадан 30 саба?. Алматы, 2000

11. Фигурнов В.Э. «IBM PC для пользователя».

12. www.allbest.ru.

13. www.wikipedia.org.

14. www.profi-info.ru.

15. www.5fan.ru.

16. www.shatalov.su.

17. www.bibliofond.ru.

18. www.books.dore.ru.

Приложение

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

Оператор WHILE

WHILE <Условие> DO <Тело цикла>;

Оператор REPEAT

REPEAT <Тело цикла> UNTIL <Условие>;

Оператор FOR

FOR <Переменная>:= <Выражение 1> TO <Выражение 2> DO;

FOR<Переменная>:=<Выражение1>DOWNTO<Выражение1>DO;

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

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

Readln(n); i:=0; y:=0; Repeat i:=i+1; y:=y+1/i; Until i>n;

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

y:=1; k:=0; While y<=M do Begin y:=y*3; k:=k+1; End;

Цикл с предусловием While (пока условие истинно)

Цикл с постусловием Repeat (до истинности условия)

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

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

3. Цикл работает пока условие истинно (пока True)

3. Цикл работает пока условие ложно (пока False)

4. Цикл завершается, когда условие становится ложным (до False)

4. Цикл завершается, когда условие становится истинным (до True)

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

5. Цикл обязательно выполнится как минимум один раз

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

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

Цикл со счетчиком (с параметром) For

· Начальная установка переменной счетчика цикла до заголовка не требуется

· Изменение в теле цикла значений переменных, стоящих в заголовке не допускается

· Количество итераций цикла неизменно и точно определяется значениями нижней и верхней границ и шага приращения

· Нормальный ход работы цикла может быть нарушен оператором goto или процедурами Break и Continue

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

Для удобства реализации циклических структур на Паскале в последних версиях языка введены операторы break и continue, применяемые внутри циклов.

Размещено на Allbest.ru

...

Подобные документы

  • Изучение циклических операторов: оператора цикла, управляемого счетчиком, оператора цикла с предусловием и постусловием. Минимизированные функции, текст программы. Алгоритм работы приложения по нахождению функции с помощью операторов break и continue.

    лабораторная работа [474,2 K], добавлен 23.11.2014

  • Применение циклической управляющией структуры для организации многократного выполнения некоторого оператора. Конструкция цикла: заголовок и тело, и алгоритм выполнения операторов while, do while и for. Отличия циклов с постусловием и предусловием.

    контрольная работа [65,8 K], добавлен 30.12.2010

  • Характеристики операторов языка Си. Операторы безусловного и условного перехода: if, if-else, if-else if. Оператор переключатель switch. Оператор цикла с предусловием while, постусловием do-while. Упрощение логических выражений, взаимозаменяемость циклов.

    лабораторная работа [30,0 K], добавлен 06.07.2009

  • Операторы цикла, присутствующие в языках программирования. Простой арифметический оператор цикла Паскаля, управление циклом с помощью переменной порядкового типа. Арифметический оператор цикла Паскаля с произвольным шагом, оператор цикла с предусловием.

    реферат [59,5 K], добавлен 01.04.2010

  • Решение задач, прямо связанных с применением циклов и массивов. Условия применения различных видов циклической структуры. Операторы цикла с предусловием while, постусловием do-while и for. Особенности работы с одномерными и двумерными массивами.

    курсовая работа [1,1 M], добавлен 31.08.2019

  • Система программирования Турбо Паскаль. Главные особенности языка С++. Составной и условный оператор в Паскале, алгоритм работы. Метка в Турбо Паскале. Счетный оператор цикла FOR. Описание логической структуры. Свойства функции PieSlice и initgraph.

    курсовая работа [20,8 K], добавлен 23.12.2010

  • Составление алгоритмов и программ для вычисления значений неизвестных: программирование формул; операторы ввода и вывода; условный оператор; цикл с предусловием и с постусловием, с заданным числом повторений; графические средства; тестирование программы.

    курсовая работа [1,5 M], добавлен 13.03.2011

  • Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.

    реферат [64,0 K], добавлен 20.03.2016

  • Основы синтаксиса, переменные, константы. Оператор if и switch. Цикл с предусловием while и постусловием do-while. Операторы передачи управления и включения. Формы в HTML-документах. Обработка запросов с помощью РНР. Передача параметров по ссылке.

    методичка [44,2 K], добавлен 29.10.2013

  • Рассмотрение принципов работы операторов, реализующих циклические алгоритмы: while (выполнение условия, пока заданное выражение истинное), do-while, for, break (прекращение работы из-за обнаружения ошибки), continue (пропуск "оставшейся" части итерации).

    лабораторная работа [54,2 K], добавлен 15.07.2010

  • История развития программы Паскаль. Типы переменных. Значение переменной для прекращения вычислений. Использование операторов цикла, процедур и функций. Ввод значений М-конца цикла и произведение вычислений по расчётной формуле. Форматированный вывод.

    контрольная работа [45,9 K], добавлен 13.07.2013

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

    презентация [139,7 K], добавлен 26.07.2013

  • Разновидности управляющей конструкции в высокоуровневых языках программирования. Организация многократного исполнения набора инструкций. Основные виды циклических конструкций. Арифметический оператор цикла Pascal с произвольным шагом и с постусловием.

    курсовая работа [38,4 K], добавлен 18.03.2013

  • Понятие и характеристика операторов ввода и вывода информации, случаи их применяется в программах и основные виды: составной оператор Begin ... end, условный оператор If. Суть операторов безусловного перехода и циклических процессов, примеры применения.

    реферат [27,9 K], добавлен 03.03.2010

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

    курсовая работа [518,8 K], добавлен 07.03.2014

  • Принцип работы основных операторов языка программирования Turbo-Paskal: оператор присваивания, выбора Case, безусловного перехода, цикла, уловный, составной. Формальное описание и вызов функции и процедуры. Требования к списку фактических параметров.

    реферат [261,8 K], добавлен 09.02.2011

  • Изучение приемов использования операторов ветвления и операторов циклов в С. Управляющие структуры или операторы управления: их значение для управления последовательностью вычислений в программе. Блоки и составные операторы. Универсальный оператор цикла.

    лабораторная работа [17,7 K], добавлен 06.08.2010

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

    курсовая работа [400,6 K], добавлен 10.11.2016

  • Характерные черты программирования на алгоритмическом языке СИ (алфавит, операции, специфика операторов, комментарии и другие элементы). Аналитический обзор и рассмотрение примеров программ, иллюстрирующих особенности применения основных операторов СИ.

    презентация [251,0 K], добавлен 26.07.2013

  • Описание особенностей программирования циклических алгоритмов на С/С++. Использование операторов цикла для организации повтора в программе определенных действий. Создание и реализация программы приближенного вычисления интеграла методом трапеций.

    лабораторная работа [86,3 K], добавлен 25.03.2019

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.