Информатика (паскаль) / лаб.1 / 1_algoritmy
.docxФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ФИЛИАЛ ГОСУДАРСТВЕННОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ
(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)» в г. Смоленске
Кафедра информатики
Отчет
по лабораторной работе №1
Тема: «Линейные и разветвляющиеся алгоритмы в Pascal'е»
по курсу: «Информатика и программирование»
Студент: Асафьев М.О.
Группа: ПИЭ-12
Преподаватель: Нестеров А.П.
Вариант: 1
Смоленск, 2012
Теоретическое введение:
1. Терминология:
Алгоритм - набор инструкций, которые описывают оптимальный порядок действий ,чтоб получить результат решения задачи за конечный промежуток времени.
Блок-схема - схема, описывающая алгоритм, изображенная в виде блоков, соединенных линиями для видимости последовательности выполнения действий.
Ветвление (оператор ветвления) - конструкция ,которая обеспечивает выполнение какого-либо действия при условии истинности логического выражения.
Линейный алгоритм - такой алгоритм, в котором все операции выполняются последовательно друг за другом.
2. Виды блоков:
- блок начала-конца алгоритма.
- блок ввода-вывода данных
- арифметический блок
- условный блок
3. Условные операторы в Pascal'е:
If условие
then
begin
операторы;
end
else
begin
операторы;
end;
Также Pascal имеет условный оператор выбора : case of
Техническое задание:
1. Рассчитать площадь и периметр треугольника по значениям двух катетов, введенных с клавиатуры.
2. Сделать расчеты по двум заданным тригонометрическим формулам, с введением параметра.
3. Определить, попадет ли точка, координаты которой введены с клавиатуры в заштрихованную область или нет.
Анализ технического задания:
1. Для решения этой задачи необходимо занести в программу две формулы, по которым будут производиться вычисления.
2. Для решения этой задачи нужно так же занести в программу две формулы, по которым будут производиться вычисления.
3. Для решения этой задачи необходимо организовать условный оператор (If-then-Else), по которому будет проводиться отбор.
Блок-схема алгоритма:
Модульная структура программы:
1. Программа состоит из одного модуля - самой программы Ploshad.
2. Программа состоит из одного модуля - самой программы Rad.
3. Программа состоит из одного модуля - самой программы Elips.
Спецификация на программные модули:
1. Имя модуля
1. Ploshad.
2. Rad.
3. Elips.
2. Имя вызывающего модуля
1. нет
2. нет
3. нет
3. Входные данные
1. a - первый катет, тип: integer
b - второй катет, тип: integer
2. a - параметр, тип: real
3. a - радиус по абсциссе, тип: integer
b - радиус по ординате, тип: integer
x - абсцисса, тип: integer
y - ордината, тип: integer
4. Выходные данные
1. P - периметр треугольника, тип: real
S - площадь треугольника, тип: real
2. z1 - значение первого выражения, тип: real
z2 - значение второго выражения, тип: real
3. Программа делает вывод на основе (не)выполнения условий.
5. Выполняемая функция
1. Вывод на экран значений площади и периметра треугольника, у которого катеты вводятся с клавиатуры, а гипотенуза рассчитывается по формуле.
2. Вывод на экран двух значений, которые получаются из расчета по формулам.
3. Вывод на экран словосочетания, которое является выводом к (не)выполнению условий: "(не)принадлежит".
6. Особенности и ограничения
1. нет
2. нет
3. нет
Текст программы:
1. program ploshad;
Uses Crt;
var
a, b, S:integer;
P, x:real;
BEGIN
CLRSCR;
writeln('wwedite znachenie pervogo kateta');
readln(a);
writeln('wwedite znachenie vtorogo kateta');
readln(b);
begin
x:=sqrt(sqr(a)+sqr(b));
S:=(a*b)/2;
P:=a+b+x;
end;
writeln('ploshad treugolnika ravna ',S);
writeln('perimetr treugolnika raven ',P:2:2);
readln;
END.
2. Program rad;
Uses Crt;
var
a,z1,z2:real;
BEGIN
CLRSCR;
writeln('wwedite znachenie paremetra a');
readln(a);
begin
Z1:=cos(a)+cos(2*a)+cos(6*a)+cos(7*a);
Z2:=4*(cos(a/2))*cos((5*a)/2)*cos(4*a);
writeln('z1= ',z1:2:2);
writeln('z2= ',z2:2:2);
end
readln;
END.
3. Program elips;
Uses Crt;
var
x,y,a,b:integer;
D1:real;
BEGIN
CLRSCR;
writeln('wwedite radius po abscisse');
readln(a);
writeln('wwedite radius po ordinate');
readln(b);
writeln('wwedite abscissu');
readln(x);
writeln('wwedite ordinatu');
readln(y);
D1:=((x*x)/(a*a))+((y*y)/(b*b));
If (D1<1) and ((x>1) or (x<(-1))) then
writeln('tochka prinadlezhit')
Else
writeln('tochka ne prinadlezhit');
readln;
END.
Результаты тестирования:
1. Корректные данные
1. a=4, b=3, x=5. P=12; S=6.
2. a=30. z1= -0,55; z2= -0,5044
3. a=6, b=3, x=2, y=1. 'tochka prinadlezhit'
2. некорректные данные
1. буквенные значения - программа выдает ошибку.
2. буквенные значения - программа выдает ошибку.
3. буквенные значения - программа выдает ошибку.
3. граничные данные
1. нет
2. нет
3. нет
ВЫВОД ПО ТЕСТИРОВАНИЮ
Во всех трех программах расчеты происходят при корректных данных верно, при вводе буквы или символа, программы выдают ошибку. Граничных данных нет.
Заключение:
В процессе выполнения данной лабораторной работы я усвоил следующее:
-
повторил виды блоков.
-
вспомнил навыки при написании элементарных программ.
-
повторил написание блок-схем под элементарные программы.
-
научился работать по четко установленному плану.