Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык Си. Лабораторные работы / Справочник. Часть 2 (СПбГУТ).doc
Скачиваний:
47
Добавлен:
10.09.2019
Размер:
801.79 Кб
Скачать

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

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

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

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

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

Решение. Перепишем исходное выражение в следующем виде:

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

#include<stdio.h> int main(void) { int k, j, n; long s, p; printf(“%s”, “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(“Сумма = %ld\n”, s);

getchar(); return 0; }

1.34. Перечисление

Это производный тип. Перечисления определяются с помощью ключевого слова enum и списка целочисленных символических констант, значения которых могут устанавливаться автоматически. Начальное значение в перечислении принимается равным 0 (если не задано иным образом) и увеличивается с шагом 1. Кроме этих двух обязательных элементов могут присутствовать два необязательных. Первый из них тег, позволяющий отличить один тип перечисления от другого, и второй - список переменных, имеющих объявленный тип. Например, перечисление

enum day_week {MON, TUE, WED, THU, FRI, SUT, SUN} next_day;

В примере присутствую все возможные элементы объявления: enum – ключевое слово, day_week – тег, в фигурных скобках – список из семи целочисленных констант и наконец, next_day – переменная типа enum day_week. Значением константы MON является 0, значением TRU – 1 и т. д. Заменим, что любой константе в определении можно задать ее значение. Например, если в рассматриваемом примере вместо MON написать MON = 1, то значения всех других констант увеличатся на 1.

Для ссылок на тип для перечисления надо в начале написать ключевое слово enum, а затем написать его тег. Например, ниже приведено определение переменной our_day, имеющей тип enum day_week.

enum day_week our_day;

Применение перечислений позволяет повысить читабельности программы. Другое применение объявление символических констант. Например,

enum{MAXSIZE = 50};

double x[MAXSIZE];

1.35. Функция

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