Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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

Цикл с выходом

В этой разновидности цикла условие выхода проверяется внутри тела цикла, а не в его начале или конце. Такой вид цикла целесообразно применять в том случае, когда проверка условия в начале или конце приводят к ситуации, которую иногда называют “полтора цикла”. Элементы такой ситуации имеют место в программе, приведенной в пункте 1.31. В этой программе имеются вызовы функций printf() и scanf() до входа в цикл, затем такие же вызовы этих функций находятся в конце тела цикла. Такое дублирование кода может привести к ошибкам при модификации текста программы в процессе ее эксплуатации. При модификации текста программист может забыть о необходимости согласованного изменения двух идентичных фрагментов кода, что и может оказаться источником ошибок.

Циклы с выходом реализованы только в Visual Basic. В языке Си такие циклы можно построить, используя циклические инструкции for и while и инструкцию break. Для этого достаточно организовать “бесконечный” цикл, В теле этого цикла расположить инструкцию if, которая совместно с инструкцией break позволила бы в требуемый момент завершить выполнение цикла.

Модифицируем программу, приведенной в пункте 1.31, заменив использованный в ней цикл циклом с выходом.

 

/* Файл summa2_2.c */
/* Модернизированный вариант решения задачи, приведенной в
пункте 1.31. В новом варианте используется цикл с выходом

*/
#include<stdio.h>
int main(void)
{
double x, summa = 0;
while (1)
{
printf(“Введите положительное число (для завершения “
“вычислений введите отрицательное число)”);
scanf(“%lf”, &x);
if (x <= 0)
break;
summa += x;
}

printf(“summa=%10.3f\n”, summa);
return 0;
}

 

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

Цикл, в теле которого находится один или несколько других циклов называется внешним. Цикл, находящийся в теле другого цикла, называется внутренним.

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

Постановка задачи.

Вычислить значение суммы следующего вида

 

 

Решение

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

Из соотношений, приведенных выше, следует, что для вычисления искомой суммы s необходимо организовать два циклических вычислительных процесса. Первый из них предназначен для накопления суммы s, а второй – для вычисления очередного слагаемого ak этой суммы.

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

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

 

#include<stdio.h>
#include<conio.h>

int main(void)
{
int k, j, n;
long s, p;
printf(“n=”);
scanf(“%d”,&n);

s = 0; /* Инициализация внешнего цикла */
for (k = 1; k <= n; k++) /* Заголовок внешнего цикла */
{ /* Начало тела внешнего цикла */
p = 1; /* Инициализация внутреннего цикла*/
for (j = k; j <= k * k; j++)/*Заголовок внутреннего цикла*/
p *= j; /*Тело внутреннего цикла*/
s += p;
} /*Конец тела внешнего цикла*/

printf(“Сумма = %d\n”, s)

getch();
return 0;
}

 

<== предыдущая лекция | следующая лекция ==>
Решение. Последовательность целых чисел ai (i = 1,2, ) формируется в соответствии со следующим правилом: | Объявления и определения (расширенное рассмотрение)
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 581; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.