- •Программирование на языке Паскаль
- •Содержание
- •Оформление лабораторных работ
- •Линейный алгоритм
- •Экранные меню и циклы Постановка задачи
- •Математическая модель
- •Описание алгоритма
- •Текст программы
- •Процедуры и функции Постановка задачи
- •Математическая модель
- •Описание алгоритма
- •Текст программы
- •Работа с файлами и алгоритмы сортировки Постановка задачи
- •| Фамилия |Дни| Оклад | Зарплата |
- •|Петров | 15| 6300.00| 3937.50| |Иванов | 24| 5600.00| 5600.00|
- •|Итого | 23687.50|
- •Математическая модель
- •Описание алгоритма
- •Текст программы
- •Inc(Cmp); {Подсчет количества сравнений}
- •Inc(Cmp); {Подсчет количества сравнений}
- •Визуальное программирование Постановка задачи
- •Математическая модель
- •Библиографический список
Экранные меню и циклы Постановка задачи
Основная задача.
Организовать экранное меню из трех пунктов (расчет площади прямоугольника, треугольника и круга). По выбранному номеру пункта выполнить расчет площади соответствующей фигуры с проверкой корректности ввода данных и возможности вычислений.
Дополнительные задачи.
1. Добавить в меню четвертый пункт – «Выход» – и организовать внешний цикл WHILEдля выполнения программы, пока не будет выбран соответствующий пункт меню.
2. Добавить в каждое вычисление площади вопрос «Продолжить вычисление (Y/N) ?» и циклREPEAT, который должен выполняться, пока не будет введено «N».
Математическая модель
, гдеp– полупериметр,.
Описание алгоритма
Алгоритм Lab3.
А. Начать исполнение.
1. Присвоить переменной Loopзначение "истина".
2. Пока Loopимеет значение "истина", повторять:
А. Вывести на экран меню: "1 – Расчет площади прямоугольника 2 – Расчет площади треугольника 3 – Расчет площади круга".
Б. Вывести сообщение "Выберите пункт меню".
В. Ввести n.
Г. Исследовать n:
1. Если n=1, то:
А. Повторять:
1. Вывести сообщение "Введите стороны прямоугольника".
2. Ввести a,b.
3. Если a≤0, илиb≤0,
А. то вывести сообщение "Некорректный ввод".
Б. иначе вывести "Площадь прямоугольника равна ", ab.
4. Вывести сообщение "Продолжить вычисления (Y/N) ?".
5. Ввести символ ot.
Б. Конец цикла при условии ot='N'.
2. Если n=2, то:
А. Повторять:
1. Вывести сообщение "Введите стороны треугольника".
2. Ввести a,b,c.
3. Если a≤0, илиb≤0, или с≤0,
А. то вывести "Некорректный ввод".
Б. иначе:
1. Если a+b≤c, илиa+c≤b, илиb+c≤a,
А. то вывести "Некорректный ввод".
Б. иначе:
1. Рассчитать полупериметр .
2. Вывести "Площадь треугольника равна ", .
4. Вывести сообщение "Продолжить вычисления (Y/N) ?".
5. Ввести символ ot.
Б. Конец цикла при условии ot='N'.
3. Если n=3, то:
А. Повторять:
1. Вывести сообщение "Введите радиус круга".
2. Ввести r.
3. Если r≤0,
А. то вывести сообщение "Некорректный ввод".
Б. иначе вывести "Площадь круга равна ", πr2.
4. Вывести сообщение "Продолжить вычисления (Y/N) ?".
5. Ввести символ ot.
Б. Конец цикла при условии ot='N'.
4. Если n=4, то присвоить переменнойLoopзначение "ложь".
3. Конец цикла.
Б. Закончить исполнение.
Текст программы
programLab3;
{$APPTYPE CONSOLE}
uses SysUtils;
var
Loop:Boolean;
n:Integer;
a,b,c,p,r:Real;
ch:Char;
begin
Loop:=True;
while Loop do
begin
Writeln(' Меню:');
Writeln('1. Расчет площади прямоугольника');
Writeln('2. Расчет площади треугольника');
Writeln('3. Расчет площади круга');
Writeln('4. Выход из программы');
Write('Выберите пункт меню: ');
Readln(n);
case n of
1:begin
repeat
Write('Введите стороны прямоугольника: ');
Readln(a,b);
if (a<=0) or (b<=0) then
Writeln('Некорректный ввод')
else
Writeln('Площадь прямоугольника равна ',a*b);
Write('Продолжить вычисления (Y/N) ?');
Readln(ch);
until UpCase(ch)='N';
end;
2:begin
repeat
Write('Введите стороны треугольника: ');
Readln(a,b,c);
if (a<=0) or (b<=0) or (c<=0) then
Writeln('Некорректный ввод')
else
if (a+b<=c) or (a+c<=b) or (b+c<=a) then
Writeln('Вычисление невозможно')
else
begin
p:=(a+b+c)/2;
Writeln('Площадь треугольника равна ',Sqrt(p*(p-a)*(p-b)*(p-c)));
end;
Write('Продолжить вычисления (Y/N) ?');
Readln(ch);
until UpCase(ch)='N';
end;
3:begin
repeat
Write('Введите радиус круга: ');
Readln(r);
if r<=0 then
Writeln('Некорректный ввод')
else
Writeln('Площадь круга равна ',Pi*Sqr(r));
Write('Продолжить вычисления (Y/N) ?');
Readln(ch);
until UpCase(ch)='N';
end;
4:Loop:=False;
end;
end;
end.
Тест
Для каждого пункта меню необходимо выполнить несколько тестов с отрицательными числами, неправильными треугольниками и т.д. Примеры таблиц тестов приведены ниже.
Пункт 1 – «Площадь прямоугольника»
a |
b |
Расчетная площадь |
Результат работы программы |
-3 |
5 |
Некорректный ввод |
… |
5 |
8 |
40 |
… |
… |
… |
… |
… |
Пункт 2 – «Площадь треугольника»
a |
b |
c |
Расчетная площадь |
Результат работы программы |
-1 |
2 |
3 |
Некорректный ввод |
… |
2 |
5 |
10 |
Вычисление невозможно |
… |
3 |
4 |
5 |
6 |
… |
5 |
12 |
13 |
30 |
… |
… |
… |
… |
… |
… |
Пункт 3 – «Площадь круга»
r |
Расчетная площадь |
Результат работы программы |
-2 |
Некорректный ввод |
… |
10 |
314.1592653 |
… |
… |
… |
… |