Автор: Рохманько Ирина Львовна
Должность: преподаватель дисциплин общепрофессионального цикла
Учебное заведение: ФГАОУ ВО "Санкт-Петербургский государственный университет аэрокосмического приборостроения", факультет СПО
Населённый пункт: г. Санкт-Петербург
Наименование материала: METOДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ
Тема: Составление программ циклической структуры
Раздел: среднее профессиональное
1
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«Санкт-Петербургский государственный университет аэрокосмического приборостроения»
Факультет среднего профессионального образования
METOДИЧЕСКИЕ УКАЗАНИЯ
ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ
по дисциплине
ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
по теме «Составление программ циклической структуры»
по специальности:
09.02.06 «Сетевое и системное администрирование»
Санкт-Петербург
2022 г.
2
Лабораторная работа
Составление алгоритма и отладка программ циклического типа
Цель работы:
1.
Овладеть синтаксисом различных вариантов реализации циклических процессов на
языке С/С++;
2.
Научиться отлаживать циклические программы в среде программирования (Visual
C++, online компиляторе);
3.
Осуществить ввод исходных данных и вывод результатов решения задач с помощью
функций ввода/вывода в стиле С и с использованием объектно-ориентированных
средств ввода/вывода.
Теоретические положения
В циклических алгоритмах выполняются повторяющиеся вычисления и действия.
Управление циклом осуществляется с помощью переменной, называемой параметром
цикла. Циклы могут быть одиночными и вложенными, причем глубина вложения не
ограничена.
В языке С/С++ для реализации циклических процессов используется три вида операторов
организации цикла:
1.
while,
2.
do…while,
3.
for
а) Оператор цикла с предусловием (while)
Этот оператор, который используется, когда требуется проверить необходимость
выполнения цикла, имеет вид
где while (пока) – ключевое слово;
выражение – условие выполнения цикла (в виде логического или арифметического
выражения сравнимого с нулем).
оператор тела цикла- это либо одиночный или пустой оператор, за которыми
ставится точка с запятой (;), либо составной оператор, заключенный в
операторные скобки { }, за которым точка с запятой не ставится.
Работа оператора
while:
Если
выражение
не равно нулю (истинно), то выполняется
оператор тела цикла
.
В противном случае оператор цикла либо не выполняется вообще, либо заканчивается и
управление передается следующему за ним оператору;
while (выражение)
оператор тела цикла;
while (выражение)
{
оператор 1;
. . .
оператор n;
}
3
б) Оператор цикла с постусловием (do while )
Этот оператор используется в тех случаях, когда тело цикла должно выполнятся хотя
бы один раз.
/* точка с запятой обязательна */
где
do
(выполнить),
while
(пока) – ключевые слова;
оператор
(тело цикла) – одиночный или составной оператор, заключенный в {};
выражение
(условие цикла) – допустимое в С выражение, сравнимое с нулем: если оно
равно 0, то цикл продолжается, а если не равно 0,
то
цикл
завершается
с
передачей
управления
следующему оператору.
в) Оператор цикла с параметром (for)
/* заголовок оператора цикла */
где
for (
для) – ключевое слово;
инициатор –
одно или несколько выражений, задающих начальное значение
переменным оператора цикла;
условие –
выражение сравнимое с нулем, определяющее условие выполнения цикла;
модификатор –
одно или несколько выражений, изменяющих переменные
оператора цикла;
оператор тела цикла
– одиночный, составной или пустой оператор, выполняющий
действия в цикле.
Работа оператора
for:
1.
В
инициаторе
параметру цикла и, возможно, другим переменным задаются начальные
значения;
2.
Вычисляется выражение
условия
. Если его значение не равно 0 (истинно), то
выполняется
оператор тела цикла
, иначе при значении равном 0 (ложно) управление
передается следующему оператору.
3.
В
модификаторе
изменяются значение параметра цикла и, возможно, других
переменных для следующего цикла.
Прерывание цикла
Оператор
goto
позволяет выйти за пределы операторов циклов любой глубины
вложения в любое место программы
Оператор
break
(прерывать) вызывает завершение самого внутреннего включающего
его оператора цикла по схеме:
do
{
оператор тела цикла
}
while (выражение)
;
for (инициатор; условие; модификатор)
оператор тела цикла
4
while(выражение)
{...;
if (условие выхода)
break ;
/* прерывание цикла */
. . .
}
следующий оператор;
Оператор
continue
(продолжить) позволяет пропустить оставшуюся часть тела
цикла до закрывающей скобки ( } ) и начать новую итерацию цикла, то есть он не передает
управление за пределы оператора цикла, в котором он находится, согласно схеме:
while
(
выражение
)
{ . . . ;
if
(
условие прерывания
)
continue;
/*прерывание текущей итерации цикла */
операторы
;
}
Пример: Вывести на экран таблицу значений функции
F(x,y) =
𝒆
𝐱
𝒙
𝟐
+
𝒚
𝟐
−
𝟏
При
x= 0,( шаг 0.25),2; y=0,(шаг 0.1),1
начало
setlocale(LC_ALL
, Rusian
Вывод
x y f
x=0
x
Y=0
z=pow(x,2)+
pow(y,2)-1
Z=0
Деление
на 0
f=exp(x)/z
1
Деление
на 0
1
y+=0.1
y
x+=0.25
да
нет
да
конец
5
Текст программы:
// в стиле С
#include<stdio.h>
#include<windows.h>
#include<math.h>
int main()
{
double f, x, y, z;
printf("x y f\n");
for (x = 0; x <= 2; x += 0.25)
{
y = 0;
do {
z = pow(x, 2) + pow(y, 2) - 1;
if (z == 0) printf("delenie na null\n");
else
{
f = exp(x) / z;
printf("%5.2f|%5.2f|%5.2f\n", x, y, f);
}
y += 0.1;
} while (y <= 1);
}
system("pause"); //задержка экрана
return 0;
}
// в стиле С++
#include<iostream>
#include<windows.h>
#include<math.h>
using namespace std;
int main()
{
double f, x, y, z;
setlocale(LC_ALL, "Rusian"); //подключение кирилицы
cout << "x y f\n";
x = 0;
while (x <= 2)
{
y = 0;
do {
z = pow(x, 2) + pow(y, 2) - 1;
if (z == 0)
cout << "delenie na null\n";
else
{
f = exp(x) / z;
cout << x << "\t "<< y << "\t "<< f << endl;
}
y += 0.1;
} while (y <= 1);
x += 0.25;
}
system("pause"); //задержка экрана
return 0;
}
6
Результаты решения задачи
. . . .
Порядок выполнения работы
1.
Запустите интегрированную среду разработки (IDE)- например, MS Visual Studio,
XCode, online компилятор . или другую.
2.
Создайте файл кода (расширение .cрp);
3.
Запустите программу на выполнение. Если появились сообщения об ошибках,
исправьте их и повторно запустите программу на выполнение
4.
Введите исходные данные, чтобы пройти по каждой ветви решения
5.
Оформите отчет по лабораторной работе
7
Содержание отчета:
1.
Название работы
2.
Цель работы
3.
Условие задачи
4.
Блок-схема алгоритма
5.
Текст программы
6.
Исходные данные
7. Результат решения
Контрольные вопросы:
1.
Чем отличаются циклы с предусловием от циклов с постусловием?
2.
Опишите последовательность функционирования циклов while и do while.
3.
Опишите схему работы оператора for. К какому типу он относится?
4.
Что такое неполный цикл for?
5.
Сколько раз символ «;» должен обязательно содержаться внутри заголовка
неполного оператора for
? Полного?
6.
Как будет работать цикл с заголовком for (i=1; ; i++) ?
7.
Для какого из двух циклов
while(1) i++;
while (0) i++;
тело цикла не будет выполнено ни одного раза? Как будет работать второй из этих
циклов, если i имеет тип float? Тип int?
8.
Цикл for (i=1;i<10 ; i++); не содержит тела цикла. Будет ли работать такой
цикл? Что получится в результате?
9.
Какие циклы называются вложенными?
Индивидуальные задания:
Дана функция y = f(x, a) . Вводятся начальные значения параметров циклов х1 и а1,
конечные значения параметров циклов х2 и а2, в шаги изменения параметров циклов х3 и а3
( тип double). Выражение для вычисления функции задать самостоятельно.
Разработать два текста программы, используя все операторы цикла
Вариант №1
Вывести положительные целые значения функции, попадающие в интервал [-5, +100].
Вариант №2
Вывести для каждого х отрицательные значения функции кратные числу В сложить.
Вариант №3
Для каждого а найти произведение всех четных значений функции.
Вариант №4
Найти отношение максимального значения функции к сумме всех значений функции.
8
Вариант №5
Найти отношение количества положительных значений функции к среднему
арифметическому четных значений функции
Вариант №6
Найти отношение количества всех к сумме нечетных значений функции Вариант №7
Вариант №7
Для каждого значения а вывести все значения функции, попадающие в интервал [C, D]. .
Вариант №8
Определить каких значений функции больше и на сколько: четных положительных или
нечетных отрицательных.
Вариант №9
Найти минимальное положительное значение функции
Вариант №10
Найти максимальное отрицательное значение функции
Вариант №11
Для каждого значения a найти отношение максимального значения функции к количеству
четных значений
Вариант №12
Найти и вывести все значения аргумента x, при которых значение функции y принимает
четное значение.
Вариант №13
Найти и вывести все значения аргументов x и а , при которых значение функции y
принимает максимальное значение.
Вариант №14
Для каждого х четные значения функции сложить, отрицательные - вывести.
Вариант №15
Найти отношение максимального значения функции к сумме отрицательных значений
функции.
Вариант №16
Найти отношение минимального значения функции к произведению отрицательных
значений функции
Вариант №17
Определить что больше и на сколько: сумма всех значений функции или максимальное
значение функции.
9
Вариант №18
Определить что больше и на сколько: количество значений функции > A или количество
значений функции < D.
Вариант №19
Найти среднее геометрическое четных значений функции.
Вариант №20
Для каждого значения а вывести целые положительные значения функции
Вариант №21
Вывести все значения аргументов х и а, при которых значение функции = С.
Вариант №22
Вывести все значения аргументов х и а, при которых значение функции попадает в интервал
[ С, D]
Вариант №23
Для каждого а найти произведение четных значений функции.
Вариант №24
Вывести все значения функции, превышающие среднее арифметическое всех значений
функции
Вариант №25
Для каждого х найти среднее арифметическое значение функции кратных числу С.
Вариант №26
Для каждого х найти максимальное нечетное значение функции.
Вариант №27
Для каждого а найти произведение положительных значений функции и сумму
отрицательных значений функций.
Вариант №28
Для каждого х вывести все значения функции и аргументов а , при которых у > С.
Вариант №29
Для каждого a найти среднее геометрическое нечетных значений функции.
Вариант №30
Для каждого x найти отношение среднего арифметического положительных значений
функции к количеству отрицательных значений функции.
Вариант №31
Для каждого х определить каких значений функции больше: четных или нечетных.
Вариант №32
Вывести значение функции , ближайшее по значению к максимальному
10
Вариант №33
Вывести значения аргументов х и а при которых функция принимает четное отрицательное
значение
Вариант №34
Для каждого а определить каких значений больше и на сколько: целых или нечетных.
Вариант №35
Для каждого х найти отношение количества положительных значений функции к
количеству нечетных отрицательных.