Циклы. Циклические программы
Разновидности управляющей конструкции в высокоуровневых языках программирования. Организация многократного исполнения набора инструкций. Основные виды циклических конструкций. Арифметический оператор цикла Pascal с произвольным шагом и с постусловием.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 18.03.2013 |
Размер файла | 38,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
КГКП «БИЗНЕС - КОЛЛЕДЖ»
Задание
на курсовой проект по дисциплине «Основы алгоритмизации и программирования»
Обучающийся_ _________________________
Группа:_31программист Специальность: 1304000 «Вычислительная техника и программное обеспечение».
Консультант____
1.Тема курсовой работы «Циклы. Циклические программы».
2.Основное содержание:
Ш Содержание
Ш Заключение
Ш Приложение
Ш Список использованной литературы
3. Требование к оформлению
3.1 Пояснительная записка должна быть оформлена в редакторе Microsoft ® Word версии 2003,2007 в соответствии с требованиями
Пояснительная записка выполняется на листах формата А4 с применением печатающих и графических устройств вывода ЭВМ.
Шрифт Times New Roman. Размер шрифта - 14 пт, выравнивание - по ширине.
Рисунки выполняются в редакторах Word,Excel,Paintbrush.
Поля страница верхнее и нижняя границы - 2см, левая-3см, правая-1,5 см.
Абзацы в тексте начинают отступом в 1 см.
Каждый раздел пояснительной записки рекомендуется начинать с нового листа.
Разделы и подразделы должны иметь заголовки. Пункты, как правило, заголовков не имеют. Заголовки должны четка и кратко отражать содержание разделов и подразделов. Заголовки выполняют с прописной буквы без точки в конце, не подчеркивая. Переносы слов в заголовках не допускаются. Если заголовок состоит из двух предложений, их разделяют точкой.
К защите курсового проекта создается презентация, содержащая главную суть курсового проекта.
В пояснительной записке должны содержаться разделы:
ь Введение.
ь Циклы. Циклические программы.
ь Цикл for.
ь Цикл repeat.
ь Цикл while.
ь Программирование. Циклы Pascal-Паскаль.
ь Простой арифметический оператор цикла Паскаля (цикл с параметром).
ь Арифметический оператор цикла Паскаля с произвольным шагом.
ь Оператор цикла Паскаля с предусловием.
ь Оператор цикла Паскаля с постусловием.
ь Математические задачи.
Дата выдачи _ Дата окончания____________________
Руководитель __ __________
1. Введение
Цикл -- разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Также циклом может называться любая многократно исполняемая последовательность инструкций, организованная любым способом (например, с помощью условного перехода).
Исполнение любого цикла включает первоначальную инициализацию переменных цикла, проверку условия выхода, исполнение тела цикла и обновление переменной цикла на каждой итерации. Кроме того, большинство языков программирования предоставляют средства для досрочного управления циклом, например, операторы завершения цикла, то есть выхода из цикла независимо от истинности условия выхода.
Для устранения возникающих трудностей служат операторы цикла. Они позволяют повторять выполнение отдельных частей программы. Можно выделить четыре оператора цикла, присутствующих в том или ином виде во всех языках программирования: простой арифметический оператор цикла (цикл с параметром с шагом 1), сложный арифметический оператор цикла (цикл с параметром произвольного шага), итерационный оператор цикла с предусловием, итерационный оператор цикла с постусловием.
В ходе выполнения цикла может возникнуть условие, при котором необходимо пропустить все или некоторые действия, предусмотренные в цикле, не прекращая работу цикла совсем. Для этого используется оператор continue, который передает управление в ту точку программы, где проверяется условие продолжения или прекращения цикла.
Циклический вычислительный процесс (ЦВП) характеризуется повторением одних и тех же вычислений над некоторым набором данных. Числом повторений цикла управляет специальная переменная, называемая его счетчиком или управляющей переменной цикла. На счетчик накладывается условие, определяющее, до каких пор следует выполнять цикл.
Повторяемый блок вычислений называют телом цикла. В теле цикла должно быть обеспечено изменение значения счетчика, чтобы он мог завершиться. Если тело цикла состоит более чем из одного оператора, оно заключается в операторные скобки begin... end;. Однократное выполнение тела цикла называют его шагом.
Таким образом, для программирования цикла достаточно определить условие, управляющее числом его повторений и описать операторы, образующие тело цикла. С этой точки зрения, теоретически возможны всего два вида циклов -- проверка условия либо предшествует выполнению тела цикла, либо происходит после него.
Если в цикле находится всего один оператор, операторные скобки, показывающие начало и конец тела цикла, можно не писать.
2. Циклы. Циклические программы
При решении задач может возникнуть необходимость повторить одни и те же действия несколько или множество раз. В программировании блоки кода, которые требуется повторять не единожды, оборачиваются в специальные конструкции - циклы. У циклов выделяют заголовок и тело. Заголовок определяет, до каких пор или сколько раз тело цикла будет выполняться. Тело содержит выражения, которые выполняются, если в заголовке цикла выражение вернуло логическую истину (True, не ноль). После того как достигнута последняя инструкция тела, поток выполнения снова возвращается к заголовку цикла. Снова проверяется условие выполнения цикла. В зависимости от результата тело цикла либо повторяется, либо поток выполнения переходит к следующему выражению после всего цикла.
Повторяемый блок вычислений называют телом цикла. В теле цикла должно быть обеспечено изменение значения счетчика, чтобы он мог завершиться. Если тело цикла состоит более чем из одного оператора, оно заключается в операторные скобки begin... end;. Однократное выполнение тела цикла называют его шагом.
В языке программирования Паскаль существует три вида циклических конструкций.
2.1 Цикл for
Часто цикл for называют циклом со счетчиком. Этот цикл используется, когда число повторений не связано с тем, что происходит в теле цикла. Т.е. количество повторений может быть вычислено заранее (хотя оно не вычисляется).
В заголовке цикла указываются два значения. Первое значение присваивается так называемой переменной-счетчику, от этого значения начинается отсчет количества итераций (повторений). Отсчет идет всегда с шагом равным единице. Второе значение указывает, при каком значении счетчика цикл должен остановиться. Другими словами, количество итераций цикла определяется разностью между вторым и первым значением плюс единица. В Pascal тело цикла не должно содержать выражений, изменяющих счетчик.
Цикл for существует в двух формах:
for счетчик:=значение to конечное_значение do
тело_цикла;
for счетчик:=значение downto конечное_значение do
тело_цикла;
Счетчик - это переменная любого из перечисляемых типов (целого, булевого, символьного, диапазонного, перечисления). Начальные и конечные значения могут быть представлены не только значениями, но и выражениями, возвращающими совместимые с типом счетчика типы данных. Если между начальным и конечным выражением указано служебное слово to, то на каждом шаге цикла значение параметра будет увеличиваться на единицу. Если же указано downto, то значение параметра будет уменьшаться на единицу.
Количество итераций цикла for известно именно до его выполнения, но не до выполнения всей программы. Так в примере ниже, количество выполнений цикла определяется пользователем. Значение присваивается переменной, а затем используется в заголовке цикла. Но когда оно используется, циклу уже точно известно, сколько раз надо выполниться.
var
i, n: integer;
begin
write ('Количество знаков: ');
readln (n);
for i := 1 to n do
write ('(*) ');
readln
end.
2.2 Цикл while
Цикл while является циклом с предусловием. В заголовке цикла находится логическое выражение. Если оно возвращает true, то тело цикла выполняется, если false - то нет.
Когда тело цикла было выполнено, то ход программы снова возвращается в заголовок цикла. Условие выполнения тела снова проверяется (находится значение логического выражения). Тело цикла выполнится столько раз, сколько раз логическое выражение вернет true. Поэтому очень важно в теле цикла предусмотреть изменение переменной, фигурирующей в заголовке цикла, таким образом, чтобы когда-нибудь обязательно наступала ситуация false. Иначе произойдет так называемое зацикливание, одна из самых неприятных ошибок в программировании.
var
i, n: integer;
begin
write ('Количество знаков: ');
readln (n);
i := 1;
while i <= n do begin
write ('(*) ');
i := i + 1
end;
readln
end.
2.3 Цикл repeat
Цикл while может не выполниться ни разу, если логическое выражение в заголовке сразу вернуло false. Однако такая ситуация не всегда может быть приемлемой. Бывает, что тело цикла должно выполниться хотя бы один раз, не зависимо оттого, что вернет логическое выражение. В таком случае используется цикл repeat - цикл с постусловием.
В цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while, здесь всё наоборот: в случае true происходит выход из цикла, в случае false - его повторение.
var
i, n: integer;
begin
write ('Количество знаков: ');
readln (n);
i := 1;
repeat
write ('(*) ');
i := i + 1
until i > n;
readln
end.
Большинство языков программирования предоставляют средства для досрочного управления циклом, например, операторы завершения цикла, то есть выхода из цикла независимо от истинности условия выхода
Таким образом, для программирования цикла достаточно определить условие, управляющее числом его повторений и описать операторы, образующие тело цикла. С этой точки зрения, теоретически возможны всего два вида циклов проверка условия либо предшествует выполнению тела цикла, либо происходит после него. В цикле с предусловием сначала проверяется условие, затем, в зависимости от того, истинно оно или ложно, либо выполняется тело цикла, либо следует переход к оператору, следующему за телом цикла. После завершения тела цикла управление вновь передается на проверку условия. Естественно, предполагается, что в теле цикла было обеспечено некоторое изменение входящих в условие переменных в противном случае произойдет зацикливание и программа "зависнет".
Для цикла с постусловием сначала выполняется тело цикла, затем управление передается на проверку условия. В зависимости от истинности или ложности условия, тело цикла выполняется повторно или же происходит переход к оператору, следующему за телом цикла. Всё, сказанное о возможном зацикливании для цикла с предусловием, справедливо и для цикла с постусловием.
Исходя из приведенных блок-схем, очевидно основное различие двух циклов: цикл с постусловием гарантированно выполняется хотя бы раз, а цикл с предусловием может не выполняться ни разу, если условие сразу же окажется ложным.
В языке Паскаль реализованы оба вида циклов. Цикл с предусловием имеет следующий общий вид:
while логическое_выражение do begin {операторы тела цикла} end;
Работу цикла можно описать словами: "пока логическое выражение истинно, повторяется тело цикла".
Логическое выражение строится по правилам, изученным в гл. 7. Тело цикла могут образовывать любые операторы Паскаля. Если в цикле находится всего один оператор, операторные скобки, показывающие начало и конец тела цикла, можно не писать.
Общая запись цикла с постусловием следующая:
Repeat {операторы тела цикла} until логическое_выражение;
Работает цикл с постусловием следующим образом: "тело цикла повторяется до тех пор, пока логическое выражение не станет истинным". Обратите внимание, что, в отличие от while, цикл repeat в Паскале работает, пока условие ложно. Это отличие подчеркивается использованием ключевого слова until ("до тех пор, пока не") вместо while ("до тех пор, пока"). Кроме того, в виде исключения, тело цикла repeat, даже если оно состоит из нескольких операторов, можно не заключать в операторные скобки.
Довольно часто циклы взаимозаменяемы. Представим, например, что для каждого из значений переменной x=1, 2,...,20, нужно выполнить некоторый расчет (математически этот закон изменения x можно записать как или ). Это можно сделать как в цикле
while:
x:=1;
while x<=20 do begin
{операторы расчета}
x:=x+1;
end;
так и с помощью
repeat:
x:=1;
repeat
{операторы расчета}
x:=x+1;
until x>20;
3. Программирование. Циклы Pascal-Паскаль
3.1 Циклы Pascal-Паскаль
В Паскале - три оператора цикла: repeat, while и for. При решении подавляющего большинства задач (в том числе и весьма несложных) в программе практически невозможно задать в явном виде все операции, которые необходимо выполнить. В самом деле, пусть необходимо вычислить сумму первых n членов гармонического ряда:
Y= 1+ 1/2+ 1/3 + …+ 1/ n
Очевидно, что с использованием только рассмотренных выше типов операторов можно составить программу лишь для фиксированного значения n. Например, при n=5 требуемые вычисления можно задать с помощью оператора присваивания вида:
Y:= 1+1/2+1/3+1/4+1/5
Если же значение n не фиксируется, а является исходным данным, вводимым в процессе выполнения программы (и даже константой, описанной в программе), то аналогичный оператор присваивания записать невозможно. Ибо запись вида Y:= 1+1/2+1/3+…+1/ n в языках программирования недопустима.
Для устранения возникающих трудностей служат операторы цикла. Они позволяют повторять выполнение отдельных частей программы. Можно выделить четыре ператора цикла, присутствующих в том или ином виде во всех языках программирования: простой арифметический оператор цикла (цикл с параметром с шагом 1), сложный арифметический оператор цикла (цикл с параметром произвольного шага), итерационный оператор цикла с предусловием, итерационный оператор цикла с постусловием.
3.2. Простой арифметический оператор цикла Паскаля (цикл с параметром)
Вернемся к рассмотренной выше задаче вычисления суммы первых n членов гармонического ряда, правила которой невозможно задать в виде арифметического выражения, если значение n заранее не фиксировано.
На самом деле вычисление этой суммы можно осуществить по очень простому и компактному алгоритму: предварительно положим y=0 (с помощью оператора присваивания y:=0), а затем выполним оператор присваивания y:= y+1/ i для последовательных значений i= 1,2,…, n. При каждом очередном выполнении этого оператора к текущему значению y будет прибавляться очередное слагаемое. Как видно, в этом случае процесс вычислений будет носить циклический характер: оператор y:= y+1/i должен выполняться многократно, т.е. циклически, при различных значениях i.
Этот пример циклического вычислительного процесса является весьма типичным; его характерные особенности состоят в том, что
· число повторений цикла известно к началу его выполнения (в данном случае оно равно значению n, которое предполагается заданным к этому времени);
· управление циклом осуществляется с помощью переменной порядкового типа, которая в этом циклическом процессе принимает последовательные значения от заданного начального до заданного конечного значений (в нашем случае - это целочисленная переменная i, принимающая последовательные значения от 1 до n).
Для компактного задания подобного рода вычислительных процессов и служит оператор цикла с параметром. Чаще всего используется следующий вид этого оператора В Паскале:
For V:= E1 to E2 do S,
где for (для), to (увеличиваясь к) и do (выполнять, делать) - служебные слова, V - переменная порядкового типа, называемая параметром цикла, Е1 и Е2 - выражения того же типа, что и параметр цикла, S - оператор, который и выполняется многократно в цикле, называемый телом цикла.
Заметим, что в Паскале после do должен стоять один оператор, если необходимо выполнить несколько действий, то они должны быть объединены в один составной оператор путем заключения в операторные скобки.
Этот оператор цикла Паскаля предусматривает присваивание параметру цикла V последовательных значений от начального значения, равного значению выражения Е1, до конечного значения, равного значению выражения Е2, т.е. при каждом повторении выполняется оператор присваивания V:= succ( V), и выполнение оператора S при каждом значении параметра цикла V. При этом значения выражений Е1 и Е2 вычисляются один раз, при входе в оператор цикла, а значение параметра цикла V не должно изменяться в результате выполнения оператора S. Если заданное конечное значение меньше начального значения (что допустимо), то оператор S не выполняется ни разу.
В Паскале считается, что при нормальном завершении выполнения оператора цикла значение параметра цикла не определено.
С использованием оператора цикла с параметром алгоритм вычисления суммы первых 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) выполнилось нужное число раз.
программирование цикл шаг pascal
3.3 Арифметический оператор цикла Паскаля с произвольным шагом
Естественным усложнением простого арифметического цикла Паскаля, является цикл, в котором параметр цикла изменяется не на 1, а на произвольную величину - шаг приращения. При этом в процессе выполнения цикла шаг изменяется по заданному закону. Стандартные операторы для реализации такого цикла есть в Форте, в других языках их приходится организовывать из простейшего арифметического цикла.
Итерационные операторы цикла Паскаля
Итерационные циклы отличаются от циклов с параметром тем, что в них заранее неизвестно число повторений.
Пусть мы отправляемся за грибами и возвращаемся домой, когда корзина наполнится. Все грибники делятся на 2 категории:
· Смотрят, есть ли место в корзине, а уже потом срывают грибы, если их можно поместить в корзину. (Правда, в жизни таких грибников встречать не приходилось)
· Сначала срывают грибы, а уже потом думают, как их положить в корзину.
Отсюда получаются два варианта реализации итерационных циклов:
с предусловием и с постусловием.
В цикле с предусловием сначала проверяется условие, а потом делается шаг. Грибник придет с полной или почти полной корзиной. В цикле с постусловием - сначала шаг, а потом проверка. Как всякий нормальный грибник, этот принесет полную или слегка переполненную корзину.
Какой алгоритм выбрать? Это зависит от конкретной задачи.
Если, сделав шаг без проверки, можно свалиться в яму, то лучше проверка вначале (как слепой с палочкой). Ну, а если шаг без проверки вас не пугает, то можно отложить ее до завершения шага.
Нужно также проанализировать событие, которого мы ожидаем. Если оно может случиться до первого шага, то нужен цикл с предусловием. А если событие не может случиться до первого шага, то нужен цикл с постусловием.
3.4. Оператор цикла Паскаля с постусловием
Рассмотрим теперь математическую задачу. Пусть нам необходимо вычислить сумму первых членов гармонического ряда, удовлетворяющих условию 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;
Заметим, что оператор цикла с постусловием является более общим, чем оператор цикла с параметром -- любой циклический процесс, задаваемый с помощью цикла с параметром можно представить в виде цикла с постусловием. Обратное утверждение неверно. Например, задача о суммировании первых n членов гармонического ряда, рассмотренная ранее, с оператором цикла с постусловием будет выглядеть так:
Пример кода оператора цикла Паскаля с постусловием
Readln(n);
i:=0;
y:=0;
Repeat
i:=i+1;
y:=y+1/i;
Until i>n;
Работает цикл с постусловием следующим образом: "тело цикла повторяется до тех пор, пока логическое выражение не станет истинным". Обратите внимание, что, в отличие от while, цикл repeat в Паскале работает, пока условие ложно. Это отличие подчеркивается использованием ключевого слова until ("до тех пор, пока не") вместо while ("до тех пор, пока"). Кроме того, в виде исключения, тело цикла repeat, даже если оно состоит из нескольких операторов, можно не заключать в операторные скобки.
Довольно часто циклы взаимозаменяемы. Представим, например, что для каждого из значений переменной x=1, 2,...,20, нужно выполнить некоторый расчет (математически этот закон изменения x можно записать как или ). Это можно сделать как в цикле while:
x:=1;
while x<=20 do begin
{операторы расчета}
x:=x+1;
end;
так и с помощью repeat:
x:=1;
repeat
{операторы расчета}
x:=x+1;
until x>20;
3.5. Оператор цикла Паскаля с предусловием
В случае оператора цикла Паскаля с постусловием входящая в него последовательность операторов заведомо будет выполняться хотя бы один раз. Между тем довольно часто встречаются такие циклические процессы, когда число повторений цикла тоже неизвестно заранее, но при некоторых значениях исходных данных предусмотренные в цикле действия вообще не должны выполняться, и даже однократное выполнение этих действий может привести к неверным или неопределенным результатам.
Пусть, например, дано вещественное число М. Требуется найти наименьшее целое неотрицательное число 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;
Оператор цикла Паскаля с предусловием можно считать наиболее универсальным - с использованием таких операторов можно задать и циклические процессы, определяемые операторами цикла с параметром и постусловием.
Отметим отличия и особенности хорошего стиля работы с рассмотренными циклическими операторами.
Цикл с предусловием While (пока условие истинно) |
Цикл с постусловием Repeat (до истинности условия) |
|
1. До начала цикла должны быть сделаны начальные установки переменных, управляющих условием цикла, для корректного входа в цикл |
||
2. В теле цикла должны присутствовать операторы, изменяющие переменные условия так, чтобы цикл через некоторое число итераций завершился |
||
3. Цикл работает пока условие истинно (пока True) |
3. Цикл работает пока условие ложно (пока False) |
|
4. Цикл завершается, когда условие становится ложным (до False) |
4. Цикл завершается, когда условие становится истинным (до True) |
|
5. Цикл может не выполниться ни разу, если исходное значение условия при входе в цикл False |
5. Цикл обязательно выполнится как минимум один раз |
|
6. Если в теле цикла требуется выполнить более одного оператора, то необходимо использовать составной оператор |
6. Независимо от количества операторов в теле цикла, использование составного оператора не требуется |
|
Цикл со счетчиком (с параметром) For |
||
· Начальная установка переменной счетчика цикла до заголовка не требуется |
||
· Изменение в теле цикла значений переменных, стоящих в заголовке не допускается |
||
· Количество итераций цикла неизменно и точно определяется значениями нижней и верхней границ и шага приращения |
||
· Нормальный ход работы цикла может быть нарушен оператором goto или процедурами Break и Continue |
||
· Цикл может не выполниться ни разу, если шаг цикла будет изменять значение счетчика от нижней границы в направлении, противоположном верхней границе |
Оператор, который выполняется в цикле, сам может быть циклом. Это относится ко всем видам циклов. В результате мы получаем вложенные циклы. Механизм работы вложенных циклов удобнее всего рассмотреть на примере вложенных циклов с параметром. Пусть нам нужно описать работу электронных часов, начиная с момента времени 0 часов, 0 минут, 0 секунд. Значение минут станет равным 1 только после того, как секунды «пробегут» все последовательные значения от 0 до 59. Часы изменят свое значение на 1 только после того, как минуты «пробегут» все последовательные значения от 0 до 59. Таким образом, вывод всех значений времени от начала суток до конца суток может быть представлен следующим фрагментом программы:
For h:=0 to 23 do
For m:=0 to 59 do
For s:=0 to 59 do
Writeln(h,':',m,':',s);
Для удобства реализации циклических структур на Паскале в последних версиях языка введены операторы break и continue, применяемые внутри циклов. Они расширяют возможности использования циклов и улучшают структуру программы.
В процессе выполнения тела цикла до полного завершения цикла могут возникнуть дополнительные условия, требующие завершения цикла. В этом случае цикл может быть прекращен оператором break.
В ходе выполнения цикла может возникнуть условие, при котором необходимо пропустить все или некоторые действия, предусмотренные в цикле, не прекращая работу цикла совсем. Для этого используется оператор continue, который передает управление в ту точку программы, где проверяется условие продолжения или прекращения цикла.
Следует запомнить и то, что для обоих вариантов записи цикла с параметром справедливо: если начальное и конечное значения равны, то тело цикла (оператор 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;
3.6 Математические задачи
Задача 1. При помощи цикла напечатать на экране:
Начало счета 3 5 7 9 Конец счета.
LABEL m;
VAR f : Integer;
BEGIN
Write('Начало счета ');
f:=3;
m: Write(f,' ');
f:=f+2;
if f<=9 then goto m;
Write(' Конец счета')
END.
Задача 2. 200 раз напечатать слово ФУТБОЛ.
LABEL m1,m2;
VAR i : Integer;
BEGIN i:=1;
m1: if i>200 then goto m2;
WriteLn('ФУТБОЛ');
i:=i+1;
goto m1;
m2:
END.
Задача 3. Самая простая
LABEL m1;
BEGIN
m1: Write ('Это ');
Write ('сделал ');
Write ('Баука');
Write ('Назира Балтабековна ');
goto m1
END.
4. Приложения
Приложение 1
Uses crt;
var i: integer;
begin
clrscr;
for i:=1 to 10 do begin
write(i*i*i,' ');
end;
readln;
end.
Приложение 2
Uses crt;
const n=10;
var A: array [1..n] of integer;
i: integer;
begin
clrscr;
randomize;
for i:=1 to n do begin
a[i]:=random(61)-30;
write(a[i],' ');
end;
writeln;
for i:=1 to n do begin
if a[i]<0 then begin
write('a[',i,']:=',a[i],' ');
end;
end;
readln;
end.
Приложение 3
uses crt;
Var matrix : array[1..25,1..25] of integer;
n,i,j,k : integer;
begin
clrscr;
randomize;
write('enter n = '); readln(n);
for i:=1 to n do
for j:=1 to n do begin
matrix[i,j]:=random(61)-30;
end;
k:=0;
for i:= 1 to n do
for j:= 1 to n do
if i < j then begin
if matrix[i,j]<0 then inc(k);
end;
for j:= 1 to n do begin
for i:= 1 to n do
write(matrix[i,j]:3);
writeln;
end;
writeln('Vsego ',k,' nechetnux elementov');
readln;
end.
Приложение 4
uses crt;
Var x : array[1..4,1..4] of integer;
y :array[1..n] of integer;
min, max, i: integer;
a, b: integer;
begin
clrscr;
write('Vvedite razmernost n = '); readln(n);
for a:=1 to n do begin
for b:=1 to n do
x[a,b]:=(2*a-b)*(3*a+2*b);
end;
min:=x[1,1];
max:=x[1,1];
for i:= 1 to n do begin
for j:= 1 to n do
if x[a,b]<min then min:=x[a,b];
y[j]:=min;
inc(j);
min:=x[1,1];
end;
for i:=1 to n do writeln(y[i]);
writeln;
for a:=1 to n do begin
for b:=1 to n do
write(x[a,b]:3);
writeln;
end;
readln;
end.
Естественным усложнением простого арифметического цикла Паскаля, является цикл, в котором параметр цикла изменяется не на 1, а на произвольную величину - шаг приращения.
Цикл с предусловием While (пока условие истинно) |
Цикл с постусловием Repeat (до истинности условия) |
|
2. До начала цикла должны быть сделаны начальные установки переменных, управляющих условием цикла, для корректного входа в цикл |
||
3. В теле цикла должны присутствовать операторы, изменяющие переменные условия так, чтобы цикл через некоторое число итераций завершился |
||
4. Цикл работает пока условие истинно (пока True) |
4. Цикл работает пока условие ложно (пока False) |
|
5. Цикл завершается, когда условие становится ложным (до False) |
5. Цикл завершается, когда условие становится истинным (до True) |
|
6. Цикл может не выполниться ни разу, если исходное значение условия при входе в цикл False |
6. Цикл обязательно выполнится как минимум один раз |
|
7. Если в теле цикла требуется выполнить более одного оператора, то необходимо использовать составной оператор |
7. Независимо от количества операторов в теле цикла, использование составного оператора не требуется |
|
Цикл со счетчиком (с параметром) For |
||
· Начальная установка переменной счетчика цикла до заголовка не требуется |
||
· Изменение в теле цикла значений переменных, стоящих в заголовке не допускается |
||
· Количество итераций цикла неизменно и точно определяется значениями нижней и верхней границ и шага приращения |
||
· Нормальный ход работы цикла может быть нарушен оператором goto или процедурами Break и Continue |
||
· Цикл может не выполниться ни разу, если шаг цикла будет изменять значение счетчика от нижней границы в направлении, противоположном верхней границе |
Последовательность инструкций, предназначенная для многократного исполнения, называется телом цикла. Единичное выполнение тела цикла называется итерацией. Выражение определяющее, будет в очередной раз выполняться итерация, или цикл завершится, называется условием выхода или условием окончания цикла (либо условием продолжения в зависимости от того, как интерпретируется его истинность -- как признак необходимости завершения или продолжения цикла). Переменная, хранящая текущий номер итерации, называется счётчиком итераций цикла или просто счётчиком цикла. Цикл не обязательно содержит счётчик, счётчик не обязан быть один -- условие выхода из цикла может зависеть от нескольких изменяемых в цикле переменных, а может определяться внешними условиями (например, наступлением определённого времени), в последнем случае счётчик может вообще не понадобиться.
5. Заключение
Оказывается программирования цикла достаточно определить условие, управляющее числом его повторений и описать операторы, образующие тело цикла. Циклический вычислительный процессы характеризуется повторением одних и тех же вычислений над некоторым набором данных. Так же цикл с постусловием гарантированно выполняется хотя бы раз, а цикл с предусловием может не выполняться ни разу, если условие сразу же окажется ложным. Для удобства реализации циклических структур на Паскале в последних версиях языка введены операторы break и continue, применяемые внутри циклов. В процессе выполнения тела цикла до полного завершения цикла могут возникнуть дополнительные условия, требующие завершения цикла, и может быть прекращен оператором break.
Оператор, который выполняется в цикле, сам может быть циклом. Это относится ко всем видам циклов. Естественным усложнением простого арифметического цикла Паскаля, является цикл, в котором параметр цикла изменяется не на 1, а на произвольную величину. Для устранения возникающих трудностей служат операторы цикла.
Имеются четыре оператора цикла, присутствующих в том или ином виде во всех языках программирования: простой арифметический оператор цикла (цикл с параметром с шагом 1), сложный арифметический оператор цикла (цикл с параметром произвольного шага), итерационный оператор цикла с предусловием, итерационный оператор цикла с постусловием. число повторений этого цикла заранее не известно. Пересечение циклов недопустимо! Имена параметров вложенных циклов должны быть различны. С каждым новым циклом значение параметра возрастает на величину шага, до тех пор, пока значение параметра не достигнет конечного значения. После чего цикл прекращается. Начальное значение параметра должно быть меньше конечного, если только шаг не является отрицательным. Особенности: переменная цикла может быть только целой (integer), шаг изменения переменной цикла всегда равен 1 (to) или -1 (downto), если в теле цикла только один оператор, слова begin и end можно не писать, если конечное значение меньше начального, цикл (to) не выполняется ни разу (проверка условия в начале цикла, цикл с предусловием), в теле цикла не разрешается изменять переменную цикла. Оператор цикла с постусловием является более общим, чем оператор цикла с параметром -- любой циклический процесс, задаваемый с помощью цикла с параметром можно представить в виде цикла с постусловием. До начала цикла должны быть сделаны начальные установки переменных, управляющих условием цикла, для корректного входа в цикл. В теле цикла должны присутствовать операторы, изменяющие переменные условия так, чтобы цикл через некоторое число итераций завершился.
Программирования цикла достаточно определить условие, управляющее числом его повторений и описать операторы, образующие тело цикла.
6. Список литературы
1. Гудман С, Хидетниеми С. Введение в разработку и анализ алгоритмов. М., 1981.
2. Ульман Дж. Базы данных на Паскале. М., 1990.
3. Доналд Алкок. Язык Паскаль в иллюстрациях. М., 1991.
4. Джонстон. Учитесь программировать. М., 1989.
5. Лингер Р., Миллс X., Уитт Б. Теория и практика структурного программирования.
6. Карпиленко Е.В., Основы программирования, Ростов н/Д, Феникс, 2007.-317
7. О.В.Максимова, В.И. Невзорова, «ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ.
8. Балапанов Е.К. Информатикадан 30 саба?. Алматы, 2000
9. Фигурнов В.Э. «IBM PC для пользователя»
10. Ефимова О, Морозов В, Шафрин Ю. «Курс компьютерной технологии» 1-2 том
11. Семинович С.В, Евсеев Г.А. «Практическая информатика»
12. И.Г.Семакин, А.П.Шестаков «Основы программирования»
13. http://www.google.kz
Размещено на Allbest.ru
Подобные документы
Операторы цикла, присутствующие в языках программирования. Простой арифметический оператор цикла Паскаля, управление циклом с помощью переменной порядкового типа. Арифметический оператор цикла Паскаля с произвольным шагом, оператор цикла с предусловием.
реферат [59,5 K], добавлен 01.04.2010Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.
реферат [64,0 K], добавлен 20.03.2016История развития языка программирования Pascal, его основные концепции. Вычисления в математических задачах. Изменение порядка выполнения инструкций программы. Выполнение оператора цикла. Логические выражения, линейные алгоритмы, условные операторы.
методичка [847,6 K], добавлен 10.01.2013Изучение циклических операторов: оператора цикла, управляемого счетчиком, оператора цикла с предусловием и постусловием. Минимизированные функции, текст программы. Алгоритм работы приложения по нахождению функции с помощью операторов break и continue.
лабораторная работа [474,2 K], добавлен 23.11.2014Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.
курсовая работа [345,6 K], добавлен 13.11.2009Применение циклической управляющией структуры для организации многократного выполнения некоторого оператора. Конструкция цикла: заголовок и тело, и алгоритм выполнения операторов while, do while и for. Отличия циклов с постусловием и предусловием.
контрольная работа [65,8 K], добавлен 30.12.2010Построение ветвящихся процессов на примере табулирования функции на заданном промежутке. Построение блок-схемы, применение операторов цикла и условного перехода, математических функций и констант. Создание алгоритма и листинг программы на языке Pascal.
лабораторная работа [154,1 K], добавлен 07.02.2012Примеры динамического построения html-страницы при помощи JavaScript. Использование цикла For, когда заранее известно, сколько раз должны повториться циклические действия. Выполнение циклических операторов входа и выхода, прерывание текущей итерации.
лабораторная работа [52,4 K], добавлен 19.09.2019Описание особенностей программирования циклических алгоритмов на С/С++. Использование операторов цикла для организации повтора в программе определенных действий. Создание и реализация программы приближенного вычисления интеграла методом трапеций.
лабораторная работа [86,3 K], добавлен 25.03.2019Характеристика базовых конструкций языков программирования. Изучение истории их развития и классификации. Определение основных понятий языков программирования. Описание основных операторов, которые используются в языках программирования высокого уровня.
курсовая работа [400,6 K], добавлен 10.11.2016