Программирование курсовая. Приложение Калькулятор
Скачать 334 Kb.
|
МИНОБРНАУКИ РОССИИ Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина) Кафедра информационной безопасности Курсовая РАБОТА по дисциплине «Программирование» Тема: Приложение «Калькулятор»
Санкт-Петербург 2021 ЗАДАНИЕ на курсовую работу
Аннотация Курсовая работа посвящена разработке консольного приложения «Калькулятор». Приложение разработано на языке программирования С. По итогам работы была создана программа, способная выполнять основные арифметические действия (сложение, вычитание, умножение, деление). Программа протестирована на некорректный ввод пользователя. Summary Course work is devoted to the development of the console application "Calculator". The application was developed in the C programming language. As a result of the work, a program was created that can perform basic arithmetic operations (addition, subtraction, multiplication, division). The program has been tested for incorrect user input. содержание
введение Целью курсовой работы является разработка приложения «Калькулятор» для выполнения простых расчетов с использованием основных арифметических операций (сложение, вычитание, умножение, деление). В связи с поставленной целью необходимо решить следующие задачи: Выбрать язык программирования; Выбрать тип интерфейса приложения; Определить алгоритм программы; Реализовать проверку ошибок. Основной метод решения задач – практическая работа, изучение теоретического материала. 1. Теоретическая часть Сведения о программном калькуляторе Программный калькулятор - это тип компьютерной программы, которая выполняет математические вычисления на основе входных данных из внешнего источника, имитируя работу других типов калькуляторов, таких как механические и электронные калькуляторы. Программный калькулятор полностью зависит от компьютерного кода, который составляет его программу для управления его функциями, а не от ряда механических операций или электронных схем. Каждый программный калькулятор требует, чтобы компьютер запускал программу для работы. Язык программирования «C» Си (англ. C) — компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи как развитие языка Би. Первоначально был разработан для реализации операционной системы UNIX, но впоследствии был перенесён на множество других платформ. Согласно дизайну языка, его конструкции близко сопоставляются типичным машинным инструкциям, благодаря чему он нашёл применение в проектах, для которых был свойственен язык ассемблера, в том числе как в операционных системах, так и в различном прикладном программном обеспечении для множества устройств — от суперкомпьютеров до встраиваемых систем. Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования, как C++, C#, Java и Objective-C. 2. Реализация программы 2.1. Язык программирования Для выполнения курсовой работы я выбрал язык программирования C. 2.2. Программное обеспечение Курсовая работа выполнялась на операционной системе «Windows 10» в интегрированной среде разработки «Visual Studio 2019» и с помощью компилятора «MSVC». 2.3. Реализованные функции Функция solve. Функция solve выполняет основные вычисления программы. Исходный код функции solve находится в файле main.c Объявление функции: float solve(float f, float s, char* op); Тип функции: float. Аргументы функции: f – переменная типа float, 1 число, введенное пользователем; s – переменная типа float, 1 число, введенное пользователем; op – указатель на строку, которая является оператором. Возвращаемое функцией значение: -1 – функция завершилась с ошибкой; 0 – пользователь ввел оператор, отвечающий за прерывание работы программы; 1 – функция завершилась без ошибок. Функция main. Функция main является начальной точкой выполнения программы. Исходный код функции main находится в файле main.c Объявление функции: int main(); Тип функции: int. Аргументы функции отсутствуют. Возвращаемое функцией значение: -1 – функция завершилась с ошибкой вызова функции printf; 0 – функция завершилась без ошибок. 3. Результаты тестирования программы 3.1. Выполнение программы при корректном вводе пользователя В начале исполнения программы пользователю необходимо выбрать операцию для использования (см. рисунок 1). Рисунок 1 – Выбор оператора Далее пользователю нужно написать в консоль числа, к которым применится введенная ранее математическая операция. Если был введен оператор «q», то программа завершит свою работу (см. рисунок 2). Рисунок 2 – Ввод 2 чисел На следующем этапе выводится результат вычисления и начинается цикл повторного выполнения программы с самого начала (см. рисунок 3). Рисунок 3 – Результат вычисления 3.2. Обработка ошибок, возникающих при некорректном вводе пользователя При попытке ввода оператора, который не входит в список определенных, программа выдаст сообщение об ошибке и начнет выполнение заново (см. рисунок 4). Рисунок 4 – Ошибка ввода оператора Также оператор чувствителен к пробелам, например, если ввести « +», то программа сообщит об ошибке (см. рисунок 5). Рисунок 5 – Некорректный ввод оператора Программа также обрабатывает ошибки при вводе чисел. При попытке ввода только 1 числа, пользователь получает сообщение о некорректном вводе (см. рисунок 6). Рисунок 6 – Некорректный ввод чисел При попытке ввода букв и других посторонних символов, не имеющих ничего общего с цифрами, программа выдает сообщение об ошибке ввода (см. рисунок 7). Рисунок 7 – Использование букв при вводе чисел 3.3. Обработка ошибок, не связанных с вводом пользователя При отсутствии стандартного устройства ввода и вывода или при других случаях, в которых функция printf возвращает отрицательное значение, программа немедленно завершает работу. заключение В ходе выполнения курсовой работы разработано приложение «Калькулятор» для выполнения простых расчетов с использованием основных арифметических операций (сложение, вычитание, умножение, деление). Для достижения цели были выполнены задачи: определен язык программирования, тип интерфейса приложения, алгоритм программы, проведена проверка программы, в том числе при условии ошибки пользователя. Руководство пользователя составлено так, чтобы его мог использовать рядовой пользователь, не обладающий знаниями в сферах информационных технологий и программирования. список использованных источников Бент Кент. Экстремальное программирование. Разработка через тестирование. Питер, 2020. 224 с. Дональд Э. Кнут. Искусство программирования. Вильямс, 2019. 832 с. Скиена Стивен С. Алгоритмы. Руководство по разработке. БХВ –Петербург, 2018. 720 с. Шень А. Программирование. Теоремы и задачи. Учебное пособие. МЦНМО, 2021. 320 с. Архитектура корпоративных программных приложений / Фаулер Мартин, Райс Дейвид. Вильямс, 2007. 544 с. Язык программирования С / Керниган Брайан, Ритчи Деннис. Вильямс, 2019. 288 с. Искусство тестирования программ / Гленофорд Майерс, Баджетт Том, Сандлер Кори. Вильямс, 2020. 272 с. Программный калькулятор – Software Calculator: [Электронный ресурс] // Hrwiki. URL: https://hrwiki.ru/wiki/Software_calculator. (дата обращения 20.12.2021). Си (язык программирования): [Электронный ресурс] // Википедия. URL: https://ru.wikipedia.org/wiki/%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F). (дата обращения 20.12.2021). Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина): [Электронный ресурс]. URL: https://etu.ru (дата обращения 20.12.2021). приложение 1. руководство пользователя Приложение «Калькулятор» позволяет выполнять вычисление с помощью базовых математический операций. Программа поддерживает следующие действия: Умножение; Деление; Сложение; Вычитание. Минимальные системные требования: Процессор с частотой не менее 1 ГГц; 1 ГБ оперативной памяти; 16 ГБ свободного места на диске; Видеоадаптер, поддерживающий DirectX 9. Для установки программы необходимо перенести исполняемый файл программы в директорию, созданную пользователем. Для запуска программы необходимо запустить исполняемый файл. Программы разделена на следующие этапы: Ввод желаемого оператора Ввод чисел Получение результата На первом этапе пользователю нужно ввести математическую операцию, желаемую для использования (см. рисунок 8). Рисунок 8 – Ввод оператора На втором этапе пользователю нужно ввести 2 числа, к которым будет применена операция, введенная на 1 этапе (см. рисунок 9). Рисунок 9 – Ввод чисел На третьем этапе пользователь получает результат вычисления (см. рисунок 10). Рисунок 10 – Результат вычисления ПРИЛОЖЕНИЕ 2. БЛОК-СХЕМА АЛГОРИТМА Рисунок 11– Блок-схема алгоритма ПРИЛОЖЕНИЕ 3. ИСХОДНЫЙ КОД ПРОГРАММЫ Файл main.c: #include #include #include #define _CRT_SECURE_NO_WARNINGS #define SIZE 5 float solve(float f, float s, char* op) { if(op==NULL){ return -1; } float res; if (strcmp(op, "+") == 0) { res = f + s; if(printf("%f\n", res)<0){ return -1; }; return 1; } else if (strcmp(op, "-") == 0) { res = f - s; if(printf("%f\n", res)<0){ return -1; }; return 1; } else if (strcmp(op, "*") == 0) { res = f * s; if(printf("%f\n", res)<0){ return -1; }; return 1; } else if (strcmp(op, "/") == 0) { if (s == 0) { if(printf("error division by zero\n")<0){ return -1; }; return -1; } else { res = f / s; if(printf("%f\n", res)<0){ return -1; }; return 1; } } return -1; }; int main(void) { const char* list[SIZE] = { "+","-","/","*","q" }; do { float f, s, res; char op[5]; int flag = 0; int errorflag = 0; int ch; if (printf("Enter op(+,-,/,*,q): ") < 0) { return -1; }; if (!fgets(op, sizeof(op), stdin)) { printf("error,non-valid operator\n"); continue; } if (!strchr(op, '\n')) { errorflag = 1; while ((ch = getchar()) != '\n' && ch != EOF); } if (errorflag) { printf("invalid input\n"); continue; } op[strlen(op) - 1] = 0; for (int i = 0; i < SIZE; i++) { if (strcmp(op, list[i]) == 0) { flag = 1; break; } } if (strcmp(op, "q") == 0) { return 0; } if (!flag) { printf("non-valid operator\n"); continue; } char line[256]; if (printf("Enter 2 numbers: ") < 0) { return -1; }; if (!fgets(line, sizeof line, stdin)) { printf("error\n"); continue; } if (!strchr(line, '\n')) { errorflag = 1; while ((ch = getchar()) != '\n' && ch != EOF); } if (errorflag) { printf("invalid input\n"); continue; } line[strlen(line) - 1] = 0; int bufPos; if (sscanf(line, "%f %f %n", &f, &s, &bufPos) < 2 || line[bufPos] != '\0') { printf("error non valid numbers\n"); continue; } if(solve(f, s, op)==-1){ printf(“Error\n”); return -1; }; } while (1); } |