
2к3с Языки программирования / МУ ПР 3
.pdfМинистерство образования и науки Российской Федерации Саратовский государственный технический университет им. Ю.А. Гагарина
Балаковский институт техники, технологии и управления
СИ: РАБОТА С ЦИКЛАМИ
Методические указания к выполнению практической работы по курсу
«Языки программирования» для студентов направления «Информационные системы и технологии» для всех форм обучения
Одобрено редакционно-издательским советом Балаковского института техники,
технологии и управления
Балаково 2015

ЦЕЛЬ РАБОТЫ Овладение практическими навыками разработки и реали-
зации циклических алгоритмов на языке Си
ОБЩИЕ ПОНЯТИЯ
Цикл — разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного ис-
полнения набора инструкций. Также циклом может называться любая много-
кратно исполняемая последовательность инструкций, организованная любым способом (например, с помощью условного перехода).
Последовательность инструкций, предназначенная для многократного исполнения, называется телом цикла. Однократное выполнение тела цикла называется итерацией. Выражение определяющее, будет в очередной раз вы-
полняться итерация, или цикл завершится, называется условием выхода или
условием окончания цикла (либо условием продолжения в зависимости от того,
как интерпретируется его истинность — как признак необходимости завершения или продолжения цикла). Переменная, хранящая текущий номер итерации,
называется счѐтчиком итераций цикла или просто счѐтчиком цикла. Цикл не обязательно содержит счѐтчик, счѐтчик не обязан быть один - условие выхода из цикла может зависеть от нескольких изменяемых в цикле переменных, а может определяться внешними условиями (например, наступлением определѐнного времени), в последнем случае счѐтчик может вообще не понадобиться.
Исполнение любого цикла включает первоначальную инициализацию пе-
ременных цикла, проверку условия выхода, исполнение тела цикла и обновление переменной цикла на каждой итерации. Кроме того язык программирования Си предоставляет средства для досрочного завершения цикла, то есть выхода из цикла независимо от истинности условии выхода.
Цикл с предусловием
2

Цикл с предусловием — цикл, который выполняется, пока истинно неко-
торое условие, указанное перед его началом. Это условие проверяется до выпол-
нения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). В языке программирования Си цикл с предусловием ре-
ализуется оператором while.
На рис.1 приведена блок-схема цикла с предусловием.
ложь |
условие |
истина |
действие |
Рис. 1. Блок-схема цикла с предусловием Оператор while имеет следующий формат: while(выражение)
{
тело цикла;
}
Схема выполнения оператора while следующая:
1.Вычисляется выражение.
2.Если выражение ложно, то выполнение оператора while заканчива-
ется и выполняется следующий по порядку оператор. Если выраже-
ние истинно, то выполняется тело оператора while.
3.Процесс повторяется с пункта 1.
Цикл с постусловием
Цикл с постусловием — цикл, в котором условие проверяется после вы-
полнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один
раз.
3

В трактовке условия цикла с постусловием в разных языках есть разли-
чия. В языке Си и его потомках условие такого цикла трактуется как условие продолжения (цикл завершается, когда условие ложно, такие циклы иногда называют «цикл пока»). В языке Си цикл с постусловием реализуется с помо-
щью операторов do-while.
На рис.2 приведена блок-схема цикла с предусловием.
|
действие |
|
ложь |
условие |
истина |
|
|
Рис. 2. Блок-схема цикла с постусловием Формат оператора do-while имеет следующий вид:
do
{
тело цикла;
} while(условие);
Схема выполнения оператора do-while:
1. Выполняется тело цикла (которое может быть составным операто-
ром).
2.Вычисляется выражение.
3.Если выражение ложно, то выполнение оператора do-while заканчи-
вается и выполняется следующий по порядку оператор. Если выра-
жение истинно, то выполнение оператора продолжается с пункта 1.
Цикл с заданным количеством итераций
Цикл с заданным количеством итераций (цикл со счѐтчиком) — цикл, в
4

котором некоторая переменная изменяет своѐ значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз. В языке Си реализуется опе-
ратором for, в котором указывается счѐтчик (так называемая «переменная цик-
ла»), требуемое количество проходов (или граничное значение счѐтчика) и шаг, с
которым изменяется счѐтчик.
На рис.3 приведена блок-схема цикла с заданным количеством итераций.
Нач;Кон;Шаг
действие
Рис. 3. Блок-схема цикла с заданным количеством итераций Синтаксис организации оператора цикла for:
for(выражение1; выражение2; выражение3)
{
тело цикла;
}
Выражение1 обычно используется для установления начального значения переменных, управляющих циклом. Выражение2 - это выражение, определяю-
щее условие, при котором тело цикла будет выполняться. Выражение3 опреде-
ляет изменение переменных, управляющих циклом после каждого выполнения тела цикла.
Оператор for имеет следующую схему выполнения:
Вычисляется выражение1.
Вычисляется выражение2.
Если значения выражения2 отлично от нуля (истина), выполняется опера-
5

тор, вычисляется выражение3 и осуществляется переход к пункту 2, если выра-
жение2 равно нулю (ложь), то оператор цикла завершается и управление переда-
ется на оператор, следующий за оператором for.
Пример программы вычисления факториала числа
#include <stdio.h> void main()
{
int factor, digit, count; printf(“Введите целое число:”); scanf(“%d”, &digit);
factor = 1;
for(count = 1; count < factor; count++)
{
factor *= count;
}
printf(“Факториал числа %d равен %d”, digit, factor);
}
ТЕХНОЛОГИЯ РАБОТЫ Применение цикла с заданным количеством итераций
Написать программу, которая выводит таблицу значений функции
y 2.4x 2 5x 3 в диапазоне от -2 до 2, с шагом 0,5. Рекомендуемый вид экрана
во время работы программы: |
|
x |
y |
-2 |
-22.60 |
-1.5 |
-15.90 |
-1 |
-10.40 |
-0.5 |
-6.10 |
6

0 -3.00
0.5 -1.10
1 |
-0.40 |
1.5 |
-0.90 |
2 |
-2.60 |
Составим блок схему решения данной задачи, приведенную на рисунке 4.
1 начало
2 x=-2,2,0.5
3 x
4 y 2.4x2 5x 3
5 y
6 конец
Рис. 4 – блок схема решения задачи при помощи цикла с заданным количеством итераций
В данной блок схеме:
Блок 1 – Начало алгоритма.
Блок 2 – Начало цикла с заданным количеством итераций, переменная цикла х меняется от -2 до 2 с шагом 0.5.
Блок 3 – Вывод текущего значения переменной цикла х на экран.
7
Блок 4 – Вычисление значение функции у в зависимости от текущего значения х.
Блок 5 – Вывод полученного значения функции у на экран.
Блок 6 – Конец алгоритма.
Запустить MS VS 2005 (Пуск - Microsoft Visual Studio 2005), создать но-
вый проект для этого:
1.В диалоговом окне Начальная страница (Start Page) нажать кнопку Create Project.
2.В появившемся диалоговом окне New Project выполнить следующие дей-
ствия:
В поле Name задать имя создаваемого проекта,
В поле Location установить папку для размещения файлов проекта ;
В области Project Types выбрать вариант Visual C++ Projects,
В области Templates выбрать вариант Win32 Console Application.
Нажать кнопку ОК
Ввести программный код на языке программирования СИ:
//таблица функции
#include <stdio.h> #include <conio.h>
#define |
LB -2.0 //нижняя граница диапазона изменений аргумента |
||
#define |
HB |
2.0 //верхняя граница диапазона изменений аргумента |
|
#define |
DX |
0.5 //приращение аргумента |
|
void main() |
|
|
|
{ |
|
|
|
|
float x,y; //аргумент и значение функции |
||
|
int n; //количество точек |
|
|
|
int i; // счетчик циклов |
|
|
|
n=(HB-LB)/DX+1; |
|
|
|
x=LB; |
|
|
|
printf (―---------------------------- |
\n―); |
8
printf (― |
x |
| |
y\n‖); |
|
printf (―---------------------------- |
|
|
|
\n―); |
for (i=1; i<=n; i++) |
|
|
||
{ |
|
|
|
|
y=-2.4*x*x+5*x-3; |
|
|||
printf (%6.2f |
| |
%6.2f\n‖,x,y); |
||
x+=DX; |
|
|
|
|
} |
|
|
|
|
printf (―---------------------------- |
|
|
|
\n―); |
printf (―\nДля завершения нажмите <Enter>‖); getch ();
}
Запустить программу нажатием кнопки Start или F5. Если в программном коде не обнаружено ошибок, получим искомый результат.
Применение цикла с предусловием
Составить программу, которая выводит на экран таблицу значений функции y 2x 2 5x 8 в диапазоне от -4 до 4. Шаг изменения аргумента 0,5.
Составим блок схему решения данной задачи, приведенную на рисунке 5.
9

1 начало
2 x1=-4
3x2=4
4dx=0.5
5x=x1
6 |
x<=x2 |
нет |
|
да |
|
7 |
x |
|
8 y 2x 2 5x 8
9 y
10 x+=dx
11 конец
Рис. 5 - блок схема решения задачи при помощи цикла с предусловием В данной блок схеме:
Блок 1 – начало алгоритма.
Блок 2 – определение начального значения переменной х.
10