Вы находитесь на странице: 1из 13

Министерство науки и высшего образования Российской Федерации

ФГАОУ ВО «Севастопольский государственный университет»


Институт радиоэлектроники и информационной безопасности

Кафедра «Радиоэлектроника и телекоммуникации»

ОТЧЁТ
по контрольной работе №1
«Табулирование арифметических выражений»
по дисциплине
«Программирование»

Выполнил: студент гр. РС/с-19-1-о


Зуев О. Д.
Вариант: M6N8
Защитил с оценкой: ______
Принял: ст. пр. Дурманов М.А.

Севастополь
2020
СОДЕРЖАНИЕ

1. Описание контрольной работы 3


1.1. Цель работы 3
1.2. Текст индивидуального задания 3
1.3. Теоретические сведения 4
2. Выполнение контрольной работы 7
2.3. Математическое обоснование задачи 7
2.2. Графическое решение задачи 7
2.3. Структурная схема алгоритма работы программы 8
2.4. Текст программы 9
2.5. Таблица переменных 11
2.6. Результаты выполнения программы 12
Выводы 13

2
1.ОПИСАНИЕ ЛАБОРАТОРНОЙ РАБОТЫ
1.1. Цель работы
Изучить разветвляющиеся и циклические алгоритмы.
Получить практические навыки составления программ на языке C/C++,
реализующих алгоритмы вычисления табулированных значений функции.
1.2. Текст индивидуального задания
Разработать структурную схему алгоритма и написать на языке C/C++
программу для вычисления табулированных значений функции y = f(x) на
интервале от начального значения аргумента xн до конечного значения xк с
шагом dx .
Предусмотреть в программе вывод значений аргумента и функции в
виде таблицы, а также ввод начального, конечного значения аргумента и шаг
изменения аргумента. Результаты вычислений следует выводить на экран в
формате с фиксированной точкой.
Номер варианта выбирается в соответствии с предпоследней M и
последней N цифрами номера индивидуального плана студента (зачетной
книжки).
Таблица 1.1 — Исходные данные для выполнения задания

3
1.3. Теоретические сведения
1.3.1. Линейный алгоритм
Линейный алгоритм – описание действий, которые выполняются однократно
в заданном порядке. Исполнитель выполняет действия последовательно, одно
за другим в том порядке в котором они следуют. Блок-схема линейного
алгоритма:

Рис.1.1—Структура следования

1.3.2. Циклический алгоритм


Циклический алгоритм – описание действий, которые должны
повторяться указанное число раз или пока не выполнено заданное условие.
Перечень повторяющихся действий называют телом цикла.
Циклические алгоритмы бывают двух типов:
 Циклы со счетчиком, в которых какие-то действия выполняются
определенное число раз;
 Циклы с условием, в которых тело цикла выполняется, в зависимости от
какого-либо условия. Различают циклы с предусловием и постусловием.

4
Рис.1.2—Структура цикла

В общем случае схема циклического алгоритма с условием будет


выглядеть так:

Рис.1.3—Структура цикла с условием

При составлении циклических алгоритмов важно думать о том, чтобы


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

1.3.1. Разветвляющийся алгоритм


Разветвляющийся алгоритм - алгоритм, в котором в зависимости от
условия выполняется либо одна, либо другая последовательность действий.
Условие – это высказывание, которое может быть либо истинно, либо
ложно.

5
a) б)

Рис.1.4 — Структура ветвления: а)  неполная ;б) — полная

6
2.ВЫПОЛНЕНИЕ КОНТРОЛЬНОЙ РАБОТЫ
2.1. Математическое обоснование задачи
Область определения функции : X∈¿ -2.5;1.5)
Область значений функций :Y∈ R
Интервал: [-3.5;6.1] с шагом 0.42
2.2. Графическое решение задачи

Рисунок 2.1 — Графическое решение задачи в Mathcad

7
2.3. Структурная схема алгоритма работы программы

Структурная схема алгоритма решения задачи представлена на рис. 2.1.

Начало 1

Ввод a, b, x,
valid
y, xn, xk, dx
Нет
Да

Ввод
Вывод y Нет решений
таблицы

for (x = xn; Вывод


Нет
x<=xk; x += dx) таблицы

Да

valid=true
Конец

x<=a Нет

Да

y =5-3*pow(x,0.5); a<x<=b Нет x>b

Да

y=1/
1 x<-sqrt(2)&&0<x<sqrt(2)
(pow(cos(x),2))

Да Нет

valid=false y = sqrt(2*x+7) 1

8 Рисунок 2.2 —Схема алгоритма решения задачи


2.4. Текст программы

#include<iostream>// подключение библиотеки стандартных объектов и


операций с потоками ввода-вывода средствами языка С++
#include<iomanip>// подключение библиотеки средств манипулирования
потоками
#include<math.h>// подключение библиотеки математических функций
#include<conio.h>// подключение библиотеки управления вводом-выводом
средствами консоли MSDOS
using namespace std;// использование пространства имен std
int main() {
setlocale(LC_ALL, "rus");
float a,// параметр а
b,// параметр b
x,// аргумент х
y,// значение функции y
xn,// начальное значение аргумента х
xk,// конечное значение аргумента х
dx;// шаг
bool valid;// флаг, отображающий принадлежность аргумента области
допустимых значений (ОДЗ)
system("cls");// очистка экрана
// ввод значений параметров а, b, хn, xk, dx
cout << "Введите параметр а: ", cin >> a;
cout << "Введите параметр b: ", cin >> b;
cout << "Введите хn: ", cin >> xn;
cout << "Введите хk: ", cin >> xk;
cout << "Введите шаг dx: ", cin >> dx;
// вывод заголовка и шапки таблицы
cout << "Таблица значений функции y = f(x)" << endl
9
<< "____________________________" << endl
<< "| x | y = f(x) |" << endl
<< "|___________|______________|" << endl;
// табулирование функции y
cout.precision(3), cout.setf(ios::showpoint);
cout.setf(ios::left, ios::adjustfield);
cout.setf(ios::fixed, ios::floatfield);
for (x = xn; x <= xk; x += dx) {// вывод строки таблицы
cout << "| " << setw(10) << x << '|'; // вывод аргумента х
cout << " " << setw(12);
valid = true;
// вычисление значения функции y
if (x < a)//x < a
{
if ((3.4*pow(x,2)-1)>0) //ОДЗ
valid=false;
else
y=pow((3.4*pow(x,2)-1),0.5);
}
else if (x >= a&&x <= b) //a <= x <= b
y=abs(1.5*x-7)-2;
else // x >= b

y=cos(pow(x,2))-sin(pow(x,-2)*x);
if (valid) {
cout << y ;// вывод значения функции y
}
else {

10
cout << "Нет решений ";// вывод сообщения о выходе
аргумента из ОДЗ
}
cout << " | " << endl;
}
cout << "|___________|______________|" << endl;
cout<<"Нажмите любую клавишу...";
system("pause");
return 0;
}
2.5. Таблица переменных

В программе использованы переменные, представленные в таблице 2.3.

Таблица 2.1 — Используемые переменные

Переменная Тип Значение


a Float Точка границы
b Float Точка границы
x Float Значение аргумента
y Float Значение функции
xn Float Начальное значение аргумента
xk Float Конечное значение аргумента
dx Float Шаг

11
2.6. Результаты выполнения программы
Результаты выполнения программы представлены на рисунке 2.5.

Рисунок 2.3 —Результат выполнения программы

12
ВЫВОДЫ
В данной контрольной работе я исследовал эффективности применения
различных видов циклов в задаче табулирования функции, а также получил
практические навыки составления программы на языке C++.
После проверки программы, компилятор ошибок не показал. В ходе
выполнения была получена таблица значений, ее можно найти в отчете под
номером 2.1.
После проверки решения задачи в MathСAD, полученные координаты
совпали с расчетами, что свидетельствует о правильности работы
программы.

13