Файл: Отчет по дисциплине Технологии программирования.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 05.12.2023

Просмотров: 30

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


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

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ

УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ ИМ. Р.Е. АЛЕКСЕЕВА»

(НГТУ)

ДЗЕРЖИНСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ
Кафедра Автоматизация, энергетика, математика и информационные системы


ОТЧЕТ

по дисциплине «Технологии программирования»

к лабораторной работе №1

Тема: «Линейные, разветвляющиеся и циклические алгоритмы»

Выполнил:

Студент гр. № группа 21ИСТ

Колотова Валерия Александровна

22.11.22

Проверил:

____________________(оценка)

___________________ (дата)

Ст. преподаватель каф. АЭМИС

___________/Кулигина Н.О./
Дзержинск, 2022




Содержани

1Линейные алгоритмы 3

1.1Описание работы 3

1.1.1Задание 3

1.1.2Библиотеки 3

1.1.3Переменные 4

1.1.4Функции 4

1.2Код программы 5

1.3Скриншоты работы программ: 6

1.4Вывод 6

2Разветвляющиеся алгоритмы 7

2.1Описание работы 7

2.1.1Задание 7

2.1.2Библиотеки 7

2.1.3Переменные 7

2.1.4Функции 7

2.2Код программы 8

2.3Скриншоты работы программ: 9

2.4Выводы 9

3Циклические алгоритмы 10

3.1Описание работы 10

3.1.1Задание 10

3.1.2Библиотеки 10

1.1.1Переменные 10

3.1.3Функции 11

3.2Код программы 11

3.3Скриншоты работы программ: 16

3.4Выводы 17

1 Линейные алгоритмы 3

1.1 Описание работы 3

1.1.1 Задание 3

1.1.2 Библиотеки 3

1.1.3 Переменные 3

1.1.4 Функции 4

1.2 Код программы 5

1.3 Скриншоты работы программ: 6

1.4 Вывод 6

2 Разветвляющиеся алгоритмы 7

2.1 Описание работы 7

2.1.1 Задание 7

2.1.2 Библиотеки 7

2.1.3 Переменные 7

2.1.4 Функции 7

2.2 Код программы 8

2.3 Скриншоты работы программ: 9

2.4 Выводы 9

3 Циклические алгоритмы 10

3.1 Описание работы 10

3.1.1 Задание 10

3.1.2 Библиотеки 10

3.1.1 Переменные 10

3.1.2 Функции 11

3.2 Код программы 11

3.3 Скриншоты работы программ: 16

3.4 Выводы 17

  1. Л инейные алгоритмы




    1. Описание работы

      1. Задание


Посчитать значение функции. Вывести данные в файл и посчитать значения аргумента в 16-й, 8-й и 10-й системах счисления.


      1. Библиотеки


- объявляет объекты, управляющие чтением из стандартных потоков и записью в них.

- выполняет простых математических операций.

- включает набор классов, методов и функций, которые предоставляют интерфейс для чтения/записи данных из/в файл.

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

- содержит типы и функции для работы с датой и временем.

      1. Переменные


x_1 – переменная куда заносится аргумент.

y0, y2, y3, y4, dop_x, y – переменные типа double для упрощения подсчета значения функции.

ch – переменная для подсчета аргумента в различных системах счисления.

      1. Функции


rand - создает псевдослучайное число.

srand - задает начальное начальное значение для генератора псевдослучайных чисел, используемого rand функцией.

abs - вычисляет модуль аргумента.

pow(x,y) - вычисляет значение x, возведенное в степень y.

sin – вычисляет синус аргумента
    1. К од программы


#include

#include

#include

#include

#include

using namespace std;
int main() {

setlocale(LC_ALL, "Russian");

ofstream fout("lab1.txt");

srand(time(NULL));

int x_1 = rand();

cout << "Введите значение x = ";

fout << "Введите значение x = ";

cout << x_1 << endl;

fout << x_1 << endl;

double y0, y2, y3, y4, dop_x;

dop_x = (abs(x_1) / 2);

y0 = pow(sin(dop_x), 2);

y2 = 3 ^ (1 / (x_1 - 1));

y3 = (x_1 ^ 4 - 16) ^ (1 / 6);

y4 = (1 - log(x_1));

double y = ((y0 + y2) / (y3)) * y4;


fout << "y = ";

fout << y << endl;

cout << "y = ";

cout << y << endl;

int ch = (int) x_1;

cout << "x в 16-ой системе: ";

cout << hex << ch << endl;

fout << "x в 16-ой системе: ";

fout << hex << ch << endl;

cout << "x в 8-ой системе: ";

cout << oct << ch << endl;

f out << "x в 8-ой системе: ";

fout << oct << ch << endl;

cout << "x в 10-ой системе: ";

cout << dec << ch << endl;

fout << "x в 10-ой системе: ";

fout << dec << ch << endl;

}
    1. Скриншоты работы программ:



Рисунок 1 – скриншот выполнения программы (допустимое значение)


Рисунок 2 – скриншот выполнения программы (вывод в файл)


Рисунок 3 – скриншот выполнения программы (недопустимое значение)
    1. Вывод


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


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

    1. Описание работы

      1. Задание


Посчитать значение функции в заданном интервале, вывести данные в файл.

      1. Библиотеки


- объявляет объекты, управляющие чтением из стандартных потоков и записью в них.

- выполняет простых математических операций.

- включает набор классов, методов и функций, которые предоставляют интерфейс для чтения/записи данных из/в файл.

      1. Переменные


a – переменная для значения a типа double (определяется пользователем).

x – переменная для значения x типа double (определяется пользователем).

y1, y2, y3, y4 – переменная для подсчета значения функции типа double.

      1. Функции


pow(x,y) - вычисляет значение x, возведенное в степень y.

tan – вычисляет тангенс.

sqrt – вычисляет квадратный корень.

sin – вычисляет синус.


    1. К од программы


#include

#include

#include
using namespace std;
int main()

{

ofstream fout("lab2.txt");

setlocale(LC_ALL, "Rus");

double a;

cout << "Введите a: " << endl;

fout << "Введите a: ";

cin >> a;

fout << a << endl;

cout << "Введите x: " << endl;

fout << "Введите x:";

double x;

cin >> x;

fout << x << endl;
double y1 = tan(a + x);

double y2 = (-pow(1, -x)) * a;

double y3 = sqrt((pow(x, 2) - 5));

double y4 = sin(2 * x);
if (x <= a)

cout << "y = " << y1 << endl;

fout << "y = " << y1 << endl;

if (x > 0)

cout << "y = " << y2 << endl;

fout << "y = " << y2 << endl;

if ((x >= 2 * a) & (x <= pow(a, 2)))

cout << "y = " << y3 << endl;

fout << "y = " << y3 << endl;

if (x <= a + 10)

cout << "y = " << y4 << endl;

fout << "y = " << y4 << endl;

}
    1. С криншоты работы программ:




Рис. 1 – скриншот выполнения программы (допустимое значение)



Рис. 2 – скриншот выполнения программы (вывод в файл)


    1. Выводы


Я научилась работать с базовыми алгоритмами с условиями.


  1. Ц иклические алгоритмы

    1. Описание работы

      1. Задание


Разработать программу и алгоритм по вычислению заданного выражения



Рисунок 1 – задание.
с помощью трех циклов:

  • Цикла с предусловием

while (условие)

тело цикла

  • Цикла с постусловием

do

тело цикла

while (условие);

  • Цикла итерационным

for (инициализация; условие; изменение управляющей переменной)

тело цикла

Т.е. необходимо выполнить одно и то же задание тремя способами и получить соответственно три одинаковых результата.

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

Размерность массива вводит пользователь (параметр n). Обязательно осуществить проверку на допустимость значения n, исходя из условий задачи (границы сумм и произведений)

Результаты выполнения программы выдать на экран и в файл.


      1. Библиотеки


- объявляет объекты, управляющие чтением из стандартных потоков и записью в них.

- включает набор классов, методов и функций, которые предоставляют интерфейс для чтения/записи данных из/в файл.

- содержит типы и функции для работы с датой и временем.
      1. Переменные


n – переменная куда заносится размер массивов arr_a и arr_b.

sum1, sum2, sum3, mult, final – переменные типа int для разделения подсчета сумм и произведений по циклам.

a rr_a, arr_b – массивы размера n с рандомно сгенерированными значениями.

      1. Функции


rand - создает псевдослучайное число.

srand - задает начальное начальное значение для генератора псевдослучайных чисел, используемого rand функцией.
    1. Код программы


#include

#include

#include

using namespace std;
int main()

{

ofstream fout("lab3.txt");

setlocale(LC_ALL, "Rus");

int n;

cout << "Введите размерность массива:";

fout << "Введите размерность массива:";

cin >> n;

if (n <= 2)

cout << "Размер массива должен превышать 2";

else

{

fout << n;

srand(time(NULL));

int* arr_a = new int[n];

int* arr_b = new int[n];

for (int i = 0; i < n; i++)

{

arr_a[i] = rand() % 60;

arr_b[i] = rand() % 60;

}

cout << "Массив a:" << endl;

fout << "Массив a:" << endl;

for (int i = 0; i < n; i++)

{

cout << arr_a[i] << " ";

fout << arr_a[i] << " ";

}

cout << endl;

cout << "Массив b:" << endl;

f out << "Массив b:" << endl;

for (int i = 0; i < n; i++)

{

cout << arr_b[i] << " ";

fout << arr_b[i] << " ";

}

cout << endl;

fout << endl;
int sum1 = 0;

int sum2 = 0;

int sum3 = 0;

int mult = 1;

int final = 0;

//while

int i = 3;

while (i < n)

{

if (arr_a[i] - arr_b[i] == 0)

{

mult = 0;

}
else

{

mult *= (arr_a[i] - arr_b[i]);

i++;

}

}
i = 1;

while (i < n - 2)

{

if (i - 2 < 0)

{

i++;

}

else

{

sum1 = sum1 + arr_a[i - 2];

i++;

}
}

i = 1;

while (i < n - 2)

{

if (i + 1 < n)

{

sum2 = sum2 + (arr_a[i] / arr_b[i + 1]);

i++;

}

else

{

break;

}

}
i = 1;

while (i < n - 2)

{

sum3 += sum2 += sum1;

i++;

}

final = sum3 + mult;

cout << "Цикл while: " << final << endl;

fout << "Цикл while: " << final << endl;
sum1 = 0;

sum2 = 0;

sum3 = 0;

mult = 1;

final = 0;
//for

for (int i = 3; i < n; i++)

{

if (arr_a[i] - arr_b[i] == 0)

{

mult = 0;

}
else

{

mult *= (arr_a[i] - arr_b[i]);




}

}


for (int i = 1; i < n - 2; i++)

{

if (i - 2 < 0)

{

continue;

}

else

{

sum1 = sum1 + arr_a[i - 2];

}
}

for (int i = 1; i < n - 2; i++)

{

if (i + 1 < n)

{

sum2 = sum2 + (arr_a[i] / arr_b[i + 1]);

}

else

{

break;

}

}


for (i = 1; i < n - 2; i++)

{

sum3 += sum2 += sum1;

}

final = sum3 + mult;

cout << "Цикл for: " << final << endl;

fout << "Цикл for: " << final << endl;
sum1 = 0;

sum2 = 0;

sum3 = 0;

mult = 1;

final = 0;
//do while

int k = 3;

do {

if (arr_a[k] - arr_b[k] == 0)

{

mult = 0;

}
else

{

mult *= (arr_a[k] - arr_b[k]);

k++;

}

} while (k < n);
k = 1;

do {

if (k - 2 < 0)

{

k++;

}

else

{

sum1 = sum1 + arr_a[k - 2];

k++;

}
} while (k < n - 2);
k = 1;

do {

if (k + 1 < n)

{

sum2 = sum2 + (arr_a[k] / arr_b[k + 1]);

k++;

}

else

{

break;

}

} while (k < n - 2);

k = 1;

do {

sum3 += sum2 += sum1;

k++;

} while (k < n - 2);


final = sum3 + mult;

cout << "Цикл do while: " << final << endl;

fout << "Цикл do while: " << final << endl;

}

}

    1. Скриншоты работы программ:




. Рисунок 1 – скриншот выполнения программы (допустимое значение)



Рисунок 2 – скриншот выполнения программы (вывод в файл)


Рисунок 3 – скриншот выполнения программы (недопустимое значение)

    1. Выводы


Я научилась писать программу и алгоритм по вычислению заданного выражения с помощью трех циклов: while, for, do while. Также, я научилась производить ввод значений с помощью динамических одномерных массивов, заполненных случайными числами, чтобы размерность массива вводил пользователь.