ПРОГРАММИРОВАНИЕ ПРОСТЫХ АЛГОРИТМОВ
по дисциплине «Основы программирования»
Выполнил: ст-т гр. 19КП1
Иванов И.И.
Проверил: доцент каф. ИВС
Дрождин В. В.
1 Постановка задач и
Разработать программу, которая для заданных действительные числа a, b, c, d выполняет следующие действия: если a < b < c < d, то каждое число надо заменить наибольшим из них; если a ≥ b ≥ c ≥ d, то числа оставить без изменения; в противном случае все числа заменяются их квадратами.
2 Техническое задание
2.1 Требования к программе
Программа должна выполнять следующие функции:
1. при a < b < c < d каждое число заменить наибольшим из них;
2. при a ≥ b ≥ c ≥ d оставить все значения без изменения;
3. в противном случае все числа заменить их квадратами.
2.2 Порядок контроля и приёмки
Для контроля правильности работы программы должны быть разработаны тестовые наборы данных, содержащие значения a, b, c, d и результаты решения задачи. Тестовые примеры должны обеспечивать проверку всех возможных вариантов решения задачи. Если для всех тестовых заданий результаты выполнения программы совпадут с тестовыми, то программа работает правильно.
3 Описание программы
3.1 Общие сведения
Программа Laba 1 разработана в среде Lazarus на языке Object Pascal. Текст программы приведен в приложении А.
3.2 Функциональное назначение
Программа выполняет следующие функции:
1. осуществляет ввод значений a, b, c, d;
2. производит вычисления:
- при a < b < c < d заменяет каждое число наибольшим из них;
- при a ≥ b ≥ c ≥ d оставляет все значения без изменений;
- в противном случае заменяет все числа их квадратами;
3. осуществляет вывод результирующих значений a, b, c, d;
3.3 Описание логической структуры
Схема программы представлена на рисунке 1.
Рисунок 1 – Схема программы
Решение задачи начинается с ввода исходных данных a,b,c,d (блок 2). Затем проверяет, если a < b < c < d (блок 3), то заменяет каждое число наибольшим из них (блок 5), если a ≥ b ≥ c ≥ d (блок 4), оставляет все значения без изменений; в противном случае все числа заменяются их квадратами (блок 6). После выполнения вычислений осуществляется вывод результата (блок 7).
Исходные данные:
a – Edit1.Text;
b – Edit2.Text;
c – Edit3.Text;
d – Edit4.Text.
Результат вычислений:
a – Edit5.Text;
b – Edit6.Text;
c – Edit7.Text;
d – Edit8.Text.
4 Программа и методика испытаний
Для проверки правильности работы программы подготовлены тестовые наборы данных, представленные в таблице 1.
Таблица 1
№ п/п | Исходные данные a, b, c, d | Результат a, b, c, d |
1, 2, 3, 4 | 4, 4, 4, 4 | |
5, 2, 3, 4 | 25, 4, 9, 16 | |
4, 4, 3, 1 | 4, 4, 3, 1 |
При работе программы с тестовыми данными получены результаты, приведенные на рисунках Б.1 – Б.3, совпадающие с результатами тестов. Таким образом, можно сделать вывод, что программа удовлетворяет требованиям технического задания.
5 Описание применения
После запуска программы на выполнение на экране появляется незаполненная форма для решения задачи (Приложение Б). Необходимо заполнить поля a,b,c,d и нажать левой кнопкой мыши на кнопку «Вычислить». На форме в полях вывода появится результат работы программы: результирующие значения a,b,c,d (рисунки Б.1 – Б.3).
Заключение
В ходе выполнения лабораторной работы сформулировано техническое задание, разработан алгоритм решения задачи, составлена и отлажена программа решения задачи, оформлена документация на программу. Проведенные испытания показали, что программа удовлетворяет требованиям технического задания.
ТЕКСТ ПРОГРАММЫ
Приложение А
(обязательное)
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ Ta }
Ta = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
end;
var
a: Ta;
implementation
{$R *.lfm}
{ Ta }
procedure Ta.FormCreate(Sender: TObject);
begin
end;
procedure Ta.Button1Click(Sender: TObject);
Var
a,b,c,d:real;
begin
a:=strtofloat(Edit1.Text);
b:=strtofloat(Edit2.Text);
c:=strtofloat(Edit3.Text);
d:=strtofloat(Edit4.Text);
if(a<b)and(b<c)and(c<d)then
begin
a:=d;
b:=d;
c:=d;
end
else
if not((a>=b)and(b>=c)and(c>=d)) then
begin
a:=a*a;
b:=b*b;
c:=c*c;
d:=d*d;
end;
Edit5.Text:=floattostr(a);
Edit6.Text:=floattostr(b);
Edit7.Text:=floattostr(c);
Edit8.Text:=floattostr(d);
end;
end.
![]() |
РЕЗУЛЬТАТЫИСПЫТАНИЙ
Приложение Б
(обязательное)
|


Рисунок Б.1
|

Рисунок Б.2
|

Рисунок Б.3