Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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

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

Цель работы: приобретение практических навыков в составлении алгоритмов и программ циклической структуры.

 

1. Теоретические сведения

1.1. Построение блок-схем циклических вычислительных процессов

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

 
 

Выход

Рисунок 1 - Условное изображение циклического алгоритма.

 

Например, разработаем блок-схему нахождения суммы N первых целых чисел от 0 до N − 1 (рисунок 2, рисунок 3).

 

 
 

Способ 1.

 

Рисунок 2 - Блок-схема алгоритма

 

Блок-схема любого циклического процесса независимо от многообразия сводящихся к нему задач должна содержать блок задания начального значения параметра цикла (блок 3), блок реализации необходимых вычислений (блок 5), блок изменения параметра цикла (блок 6) и блок проверки условия окончания цикла (блок 4).

Способ организации цикла зависит от условия задачи. Во многих задачах количество повторений цикла указывается (рисунок 3). Это так называемые циклы с известным количеством повторений или циклы со счетчиком.

 

 

Способ 2.

 

Рисунок 3 - Блок-схема алгоритма

 

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

Например, разработаем блок-схему нахождения значений функции f()x = sinx для значений переменной x, изменяющейся в диапазоне от a до b шагом h (рисунок 4).

 
 

Рисунок 4 – Блок-схема алгоритма

 

1.2. Операторы циклов языка Си++.

 

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

В Си++ предусматривает использование трех видов циклов:

1) цикл с параметром:

for (инициализация_цикла;

условие;

изменение_параметра)

тело_цикла

2) цикл с предусловием:

while (условие)

тело_цикла

3) цикл с постусловием:

do

тело_цикла

while (условие)

В цикле с параметром в разделе инициализация_цикла задается последовательность выражений, разделяемых запятыми. Все выражения, входящие в инициализацию цикла, вычисляются только один раз при входе в цикл. Чаще всего здесь устанавливаются начальные значения счетчиков и параметров ИКла. Затем вычисляется условие и, если оно истинно, выполняется тело цикла, после этого изменяется параметр цикла и проверяется его значение. Далее цепочка действий повторяется.

Например, нужно вычислить сумму квадратов натурального ряда чисел от 1 до n.

S= = 12 + 2 2 +... + n 2.

 

Рисунок 5 – Листинг программы с циклом со счетчиком

 

Если переменная i используется только внутри цикла, то ее описание можно внести в инициализацию цикла (в этом случае областью видимости переменной будет только тело цикла):

int sum = 0;

 

for (int i = 1; i < = 5; i++)

sum += i * i;

Если заданное условие всегда ложно, например

(i = 1; i < 1; i++)

то тело цикла не исполняется ни разу. Если заданное условие всегда истинно, например

(i = 1; i > 1; i++)

то тело цикла будет повторяться бесконечно.

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

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

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

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

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

Запишем подсчет суммы квадратов с помощью цикла while:

int i = 1;

int sum = 0;

 

while (i < = 5)

{

sum += i * i;

i++;

}

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

Например,

int i = 1;

int sum = 0;

 

do

{

sum += i * i;

i++;

}

while (i < = 5);

Для изменения хода цикла можно использовать операторы break и continue.

При использовании оператора break цикл досрочно прерывается и осуществляется выход из цикла.

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

Изменим формулировку примера вычисления суммы квадратов натурального ряда чисел от 1 до n.

S= = 12 + 2 2 +... + n 2.

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

 

Рисунок 6 – Листинг программы с циклом с предусловием

 

Рисунок 7 – Листинг программы с циклом с постусловием

 

<== предыдущая лекция | следующая лекция ==>
Сем. гречишные – Polygonaceae | забавляясь!
Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.01 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал