Практическая работа состоит в разработке программы с применением последовательного программного конструктива. Исходные данные должны быть заданы с клавиатуры, и результат обработки информации должен быть представлен на дисплее. Составить схемы программы и работы системы.
Задача для практической работы – определить площадь сегмента круга S, отсекаемого хордой AC по формуле: 𝑆 = 12*R2*π ∙ α180-sina
Коэффициенты уравнения α, R должны вводиться с клавиатуры пользователем. Исходные данные и результат должны быть сохранены на носителе с прямым доступом.
Решение
1.1 Анализ требований
1.1.1 Описание метода решения
Решение линейного уравнения заключается в вычислении значения переменной: S ←12*R2*π ∙ α180-sina.
1.1.2 Описание структуры данных
В решении задачи будут использованы 4 переменныx: S, a, R, π. Значениями переменных будут положительные вещественные числа. π=3.14
1.1.3 Требования к вводу исходных данных и представления результата
Исходные данные a, R для решения задачи должны быть введены с клавиатуры в результате диалога исполнителя с пользователем. В диалоге исполнитель должен выводить следующие сообщения: “Задайте a:”, “Задайте R:”, “S = ”. Результат должен быть выведен на дисплей с точностью до трёх знаков после запятой.
1.1.4 Требование к корректности данных
При некорректном вводе значений переменных a, R, программа должна выводить сообщения о задании недопустимых данных: ввод символов при задании значений переменных a, R.
1.2 Проектирование
При проектировании будут реализованы решения для выполнения требований п. 1.4 данного примера.
1.2.1 Декомпозиция задачи
Задача может быть выполнена в ходе последовательного решения трех подзадач: ввод исходных данных, обработка данных (вычисление), вывод результата, то есть выполнения трех предопределенных процессов (рис. 4)
Процесс “InputData” предназначен для ввода данных, процесс “Processing” осуществляет обработку информации, процесс “OutputData” выполняет вывод результата. В этих процессах применяют команды и функции языка программирования.
1.2.2 Детализация процессов
Каждый процесс состоит из последовательных действий исполнителя и пользователя:
– Алгоритм процесса InputData:
Описание псевдокодом Схема процесса
Алгоритм Процесс InputData
Вещественные: a, R
Начало
Вывести сообщение: “Задайте a:”
Задать значение a
Вывести сообщение: “Задайте R:”
Задать значение R
Конец 9302752546856конец
0конец
13322302339211007296152035939Задать R
00Задать R
13227051826131007296151540381Задайте R:
00Задайте R:
88265044450начало
0начало
13205511323091007157841027430Задать a
00Задать a
132055282215900723430526415Задайте а:
00Задайте а:
131279333210500
– Алгоритм процесса Processing:
Описание псевдокодом Схема процесса
Алгоритм Процесс Processing
Вещественные: a, R, π =3.14, S
Начало
Вычислить S ← 12*R2*π ∙ α180-sina
Конец 89180544313S ← 1/2*R^2*(π ∙ α)/180-sina
00S ← 1/2*R^2*(π ∙ α)/180-sina
10020301119505конец
0конец
13989059093200097790053975начало
0начало
138938034925000
– Алгоритм процесса OutputData:
Описание псевдокодом Схема процесса
Алгоритм Процесс OutputData
Вещественные: S
Начало
Вывести сообщение: “S=”
Вывести значение S
Конец 772130548005Вывести “S=”
00Вывести “S=”
9855201547495конец
0конец
95377044450начало
0начало
7296161051560Вывести S
00Вывести S
1389380134556500137033083121500136080533591500
1.2.3 Алгоритм решения задачи
Последовательность выполнения процессов будет реализована по алгоритму:
Описание псевдокодом Схема процесса
Алгоритм Общий вид решения задачи
Вещественные a, R, r, S
Начало
Выполнить процесс InputData
Выполнить процесс Processing
Выполнить процесс OutputData
Конец 13995401960245009201151618615OutputData
00OutputData
10020302164080конец
0конец
96202541275начало
0начало
87527816230040013841621406166001381428869398009150351081819Processing
00Processing
86732710743650087480953467000920115542290InputData
00InputData
137985533147000
Для составления схемы программы объединим алгоритмы процессов:
Описание псевдокодом Схема процесса
Алгоритм Решение линейного уравнения
Вещественные: a, R, π=3.14, S
Начало
Вывести сообщение: “Задайте a:”
Задать значение a
Вывести сообщение: “Задайте R:”
Задать значение R
Вычислить S ← 12*R2*π ∙ α180-sina
Вывести сообщение: “S=”
Вывести значение S
Конец
87757044450начало
0начало
537845400812000518795345567000509270464820001330960485457500133096043497500013322303854450006369053482975S ← 1/2*R^2*(π ∙ α)/180-sina
00S ← 1/2*R^2*(π ∙ α)/180-sina
13205511323091007157841027430Задать a
00Задать a
132055282215900723430526415Задайте а:
00Задайте а:
131279333210500
1
253412413972900254031313972900
Процесс
222186516501002InputData
25328544351200
729615681990Задать R
00Задать R
729615177165Задайте R:
00Задайте R:
3
132270513004600
4
124053215049500
253454114062900254031313972900
Процесс
222194817642005Processing
25328544351200
725569124164 “S=”
00 “S=”
2534541140629002540313139729006
Процесс
726440116427Вывести S
00Вывести S
22547061308100OutputData
253285443512007
954715134753конец
0конец
Номер символа Описание
1 Вывод сообщения: “Задайте a:”
2 Задание a
3 Вывод сообщения: “Задайте R:”
4 Задание R
5 Вычисление S
6 Вывод сообщения: “S=”
7 Вывод значения результата S
Описание символов схемы программы
1.2.4 Схема работы системы
Схема работы системы отображает использование функциональных частей (клавиатура, оперативное запоминающее устройство, дисплей) исполнителя (системы обработки информации) при выполнении программы:
Схема работы системы Описание действий
Номер действия Описание действий
1 Считывание сообщения из ОЗУ и передача на дисплей
2 Вывод значения а, запись значения в ОЗУ и передача на дисплей
3 Считывание сообщения из ОЗУ и передача на дисплей
4 Вывод значения R, запись значения в ОЗУ и передача на дисплей
5 Считывание значений а, R, вычисление значения S, запись значения S в ОЗУ
6 Считывание сообщения из ОЗУ и передача на дисплей
7 Считывание значения S из ОЗУ и передача на дисплей
1.3 Кодирование
Исходный код на языке Си:
#include <iostream>
#include <Windows.h>
#include <math.h>
using namespace std;
float a, R, S; // Объявление глобальных чисел
const double pi = 3.14;
void InputData() // функция процесса ввода данных
{
cout << "Задайте a:" << endl; // вывод сообщения
cin >> a; // задание значения переменной a
cout << "Задайте R:" << endl; // вывод сообщения
cin >> R; // задание значения R
}
int Processing() // функция процесса обработки данных
{
S = 0.5 * pow(R, 2) + (pi * a) / 180 - sin(a); // вычисление
return S;
}
void OutputData() // функция процесса вывода результата
{
cout << fixed; // вывод числа с плавающей точкой в фиксированной форме
cout.precision(3); // задание количества знаков после запятой
cout << "S =" << S; // вывод результата
}
int main() // основная функция
{
setlocale(LC_ALL, "Rus");
InputData(); // вызов предопределенного процесса ввода данных
Processing(); // вызов предопределенного процесса обработки
OutputData(); // вызов предопределенного процесса вывода данных
return 0;
}
1.4 Методика тестирования
1.4.1 Требования к программе
При тестировании будет проверено выполнение программой требований п