бИСТ-223_Гладченко и Самойленко_Лр1. Отчет по лабораторной работе 1 по дисциплине Объектноориентированное программирование Тема Базовые конструкции языка С. Управляющие конструкции
Скачать 371.23 Kb.
|
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» Факультет информационных технологий и компьютерной безопасности(факультет) Кафедра Систем автоматизированного проектирования и информационных системОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 1по дисциплине Объектно-ориентированное программирование Тема «Базовые конструкции языка С++. Управляющие конструкции» Выполнили студенты группы ИСТ-2023 Д.С. Самойленко Подпись, дата Инициалы, фамилия Е.С. Гладченко Подпись, дата Инициалы, фамилия Принял Б.Н. ТишуковПодпись, дата Инициалы, фамилия Защищена ___________________ Оценка_____________________________ дата 2023 Лабораторная работа № 1 «Базовые конструкции языка С++. Управляющие конструкции» 1. Цель работы Изучение базовых конструкций языка С++ и управляющих конструкций и применение их на практике. 2. Задание на лабораторную работу Вариант 1 Задание 1 Найти значение алгебраического выражения, соответствующего варианту задания. Вывести результаты на печать. Все результаты выводить в развернутом виде (например: «Сумма чисел А и B равна 3.7854»). Значения вводимых величин должны иметь не менее четырех значащих цифр и задаются студентом самостоятельно. Задание 2 Составить программу вычисления функции F(x), разложенной в ряд, сходящийся в заданной области. Вычисления проводить до тех пор, пока модуль разности между последующим и предыдущим членами ряда не будет меньше или равен ε. Значение ε задается константой и для всех вариантов составляет 0,001. Решить задачу для различных значений х. При решении задач массивы не использовать. Специальные функции для возведения в степень не использовать. Задание 3 В задании всего 2 варианта: вариант 1 выполняют те, у кого основной вариант нечетный, вариант 2 выполняют те, у кого основной вариант четный. Каждый вариант содержит 15 задач, содержащих те или иные ошибки (логические, ошибки синтаксиса и т.п.). Задача состоит в следующем: используя средства отладчика среды, обнаружить все ошибки и сделать программу работоспособной (т.е. выполняющей то, что от нее требуется). Для отчета по данному заданию необходимо: - показать работающие программы; - код программ должен быть структурированным; - к каждой программе необходимо составить список обнаруженных ошибок (согласно сообщениям отладчика), а также пояснения того, как вы исправляли эти ошибки. Задание 4 3. Ход выполнения 1. Задание 1 Для выполнения этого задания создаем функцию task_1 в которой будут происходить вычисления. В функции main запрашиваем у пользователя переменные “a” и “b” типа float поскольку получаемый результат может быть нецелочисленный. После чего передаем эти две переменные в функцию task_1. Как было сказано ранее в функции производятся все вычисления разбитые на несколько действий, после чего возвращается общий результат вычислений. Далее, мы выводим этот результат в функции main. Рис.1 – Задание 1, часть кода в функции main Рис.2 – Задание 1, функция task_1 2. Задание 2 Для выполнения второго задания также создаем отдельную функцию task_2. В функции main запрашиваем “x”. В функции task_2 создаем переменную равную первому члену ряда и вторую переменную ряду. Вычисления происходят в цикле while с проверкой модуля разности между последующим и предыдущим членами ряда, который не должен быть больше либо равен константе ε. В теле цикла мы возносим переменную х в степень, а в переменную sum заносим сумму из членов ряда. Рис.3 – Задание 2, код в функции main Рис.4 – Задание 2, функция task_2 3. Задание 3 Задача 1
Список исправленных ошибок: Int - надо писать с маленькой, присвоить j значение 1, чтобы найти все делители с 1; стрелки в “cout” в другую сторону, двойные кавычки и надо писать с маленькой буквы; стрелки в “cin” в другую сторону и надо писать с маленькой буквы; “while” надо писать с маленькой буквы и условие в скобках; добавить скобки для условия “if”, заменить: / на %, i на j , <> на !=, and на &&, = на ==; стрелки в “cout” в другую сторону; добавить “++j”, чтобы менялось значение нат. делителей, иначе цикл будет бесконечным; Задача 2
Список исправленных ошибок: переменную “i” нужно объявить отдельно; выводить сообщения и считывать нужно отдельно; для цикла “if” добавить фигурную скобку, Else правильно писать с маленькой буквы else и также добавить фигурную скобку; условие в while в круглых скобках, а тело цикла в фигурных скобках, и добавить условие “=<”; оформить вывод “cout” по правилам c++; Задача 3
Список исправленных ошибок: добавить объявление переменных “n” и “y” равный 1; с помощью “cout” и “cin” запросить у пользователя переменную “n”; условие оператора “if” в круглых скобках, <> заменить на !=; в условии цикла “for” добавить обьявление переменной i, изменить на i <= n; во втором цикле “for” сделать такие же изменения и в теле цикла переменную “i” записать с маленькой буквы; Задача 4
Список исправленных ошибок: объявить переменную “rezs” с новой строки; отдельно запросить переменные “n” и “x”; добавить условие “for”, иначе цикл будет бесконечным; также изменить условие второго оператора “for”, а в теле цикла заменить := на = ; изменить конечный вывод убрав :8:3; Задача 5
Список исправленных ошибок: объявить переменные i, j, n ,s типа float, а не int поскольку результат может быть не целое число и добавить переменные “rez” и “rezs” добавить вывод запрашиваемой переменной с помощью cout << "n: "; в операторе for добавить условие i <= n и i++,иначе цикл будет не рабочим, также добавить условие и во втором операторе “for”: j <= i; j++; заменить s:=1/(i+2*j) на s = 1 / (i + 2 * j), потому что в си++ не существует “:=” ; добавить в тело цикла for суммирование результатов; поменять вывод переменной “s” на вывод результатов; Задача 6
Список исправленных ошибок: правильно объявить переменные “fac” и “s” добавив тип данных и объявить переменные “zn”, “rez = 0” типа float, переменные “k” и “n” типа int; для первого и второго цикла “for” добавить условие и шаг цикла; после второго цикла “for” заменить строку s=s+zn на rez += zn для корректного счета результата; в конце работы программы вывести переменную rez; Задача 7
Список исправленных ошибок: переменную I нужно обьявить с маленькой буквы, переменную s нужно объявить отдельно с типом float по правилам c++; Требуется правильно написать cout, также cin с маленькой буквы; Добавить условие и шаг табуляции для цикла for, заменить несуществующую функцию sqr на pow для возведения в степень, а так же сделать правильным сам пример; изменить условие для оператора if для проверки на утроенность и нечетность; в теле цикла заменить выражение K=s %3 на k += s для корректного счета результата: в конце программы вывести переменную k; 4. Задание 4 Для выполнения 4 задания нам понадобится лишь один условный оператор “if” с помощью которого мы будем проверять меньше ли число 0 (если да, умножаем на минус 1) или нет (не изменяем число). Рис.5 – Задание 4, часть кода в main Рис.6 – функция для нахождения модуля Так же было реализовано меню с помощью оператора switch (возможность выбора номера нужной задачи для ее проверки преподавателем). Рис. 7 – часть кода меню Вывод В ходе выполнения лабораторной работы номер 1 мы изучили базовые конструкции языка С++ и управляющие конструкции. Научились считать алгебраические выражения, находить и исправлять ошибки в коде, пользоваться циклами и т.д. Приложение А Листинг программного кода языка C++ #include using namespace std; float task_1(float a, float b); // Объявление функции 1 задания (алгебраическое выражение) double task_2(double x); // Объявление функции 2 задания (вычисление функции) float task_4(float numb); // Объявление функции 4 задания (модуль числа) int main() { setlocale(LC_ALL, "RUS"); int change = 0; cout << "Здравствуйте, эта программа выполнена студентами бИСТ-223 Самойленко Д. и Гладченко Е." << endl << "и является первой лабораторной работой по дисциплине ООП" << endl; while(change != 4) { cout << "\nПожалуйста, выберите пункт из списка: " << endl; cout << "1. Задание 1" << endl; cout << "2. Задание 2" << endl; cout << "3. Задание 4" << endl; cout << "4. Завершение работы программы" << endl; cin >> change; switch(change) { case 1: float a, b, result; cout << "\nВведите a: "; cin >> a; cout << "Введите b: "; cin >> b; result = task_1(a, b); cout << "\nВыражение sin(a + b^3) * корень(e^(a^2-9,4)/(a+b)^3 = " << result << endl; break; case 2: double x, sum; cout << "Введите значение х: "; cin >> x; sum = task_2(x); cout << "\nФункция F(x) = " << sum << endl; break; case 3: float numb; cout << "Введите число: "; cin >> numb; cout << "\nМодуль введенего числа = " << task_4(numb) << endl; break; case 4: cout << "До свидания!" << endl; break; } } } float task_1(float a, float b) { float sinus_squared = pow(sin(a + pow(b, 3)), 2); float pod_kornem = exp(pow(a, 2) - 9.4) / pow((a + b), 3); float koren = sqrtf(pod_kornem); float resultat = sinus_squared * koren; return resultat; } double task_2(double x) { const double e = 0.001; double d = 1.00; double d_sled = -x; double sum = d; while (fabs(d_sled - d) >= e) { d *= -x; d_sled *= -x; sum += d; } return sum; } float task_4(float numb) { if(numb > 0) { numb = numb; } else { numb = (-1) * numb; } return numb; } |