Программирование на Pascal / Delphi / Лабораторная работа1 / Лаб.раб. 2
.doc
Министерство образования РФ.
Филиал Московского Государственного Индустриального
Университета в г. Вязьма.
Отчёт по лабораторной работе № 2.
Дисциплина: «Прикладная информатика в экономике»
Тема: «Разработка алгоритмов вычислительных процессов»
Группа: 03ИД1
Студент: Афанасьев Виктор Валерьевич.
Преподаватель: Соколова Наталья Валентиновна.
2003г.
Цель: разработать алгоритм решения задания согласно полученному варианту и разработать блок-схему разработанного алгоритма средствами редактора MS Word.
Задание: ввести значения четырёх чисел х1, х2, х3, х4. Вычислить значение переменной y1, y2, y3, y4, z, при условии, что Y1:=1/sqr(8*x1-x4), Y2:=(2*x1+5*x2)/ln(4*x1-x2), Y3:=ln(5*x3-11)+e^(12*x1+x4),
Y4:=(cos(x3)-5*sin(x4)/sqr(2*cos(x3)-sin(x4)), z:=ln(y1+y2+y3+y4)
Краткие теоретические сведения.
Структура программы на Турбо Паскаль
Программа на языке Паскаль состоит из заголовка, разделов описаний и раздела операторов. Заголовок программы содержит имя программы, например:
Program PRIM;
Описания могут включать в себя:
-
раздел подключаемых библиотек (модулей);
-
раздел описания меток;
-
раздел описания констант;
-
раздел описания типов;
-
раздел описания переменных;
-
раздел описания процедур и функций.
Раздел операторов представляет собой составной оператор, который содержит между служебными словами
begin.......end
последовательность операторов. Операторы отделяются друг от друга символом ;. Текст программы заканчивается символом точка.
Кроме описаний и операторов Паскаль - программа может содержать комментарии, которые представляют собой произвольную последовательность символов, расположенную между открывающей скобкой комментариев { и закрывающей скобкой комментариев }.
Операторы ввода и вывода
Ввод данных:
Для ввода исходных данных чаще всего используется процедура ReadLn:
ReadLn(A1,A2,...AK);
Процедура производит чтение К значений исходных данных и присваивает эти значения переменным А1, А2, ..., АК.
При вводе исходных данных происходит преобразование из внешней формы представления во внутреннюю, определяемую типом переменных. Переменные, образующие список ввода, могут принадлежать либо к целому, либо к действительному, либо к символьному типам. Чтение исходных данных логического типа в языке Паскаль недопустимо.
Значения исходных данных могут отделяться друг от друга пробелами и нажатием клавиш табуляции и Enter.
Не допускается разделение вводимых чисел запятыми!
Вывод данных:
Для вывода результатов работы программы на экран используются процедуры:
Write(A1,A2,...AK);
WriteLn(A1,A2,...AK);
Первый из этих операторов производит вывод значений переменных А1, А2,...,АК в строку экрана. Второй оператор, в отличие от первого, не только производит вывод данных на экран, но и производит переход к началу следующей экранной строки. Если процедура writeln используется без параметров, то она просто производит пропуск строки и переход к началу следующей строки.
Оператор условного перехода
Оператор условного перехода в Турбо Паскаль имеет вид:
if условие then оператор 1 else оператор 2;
условие - это логическое выражение, в зависимости от которого выбирается одна из двух альтернативных ветвей алгоритма. Если значение условия истинно (TRUE), то будет выполняться оператор 1, записанный после ключевого слова then. В противном случае будет выполнен оператор 2, следующий за словом else, при этом оператор 1 пропускается. После выполнения указанных операторов программа переходит к выполеннию команды, стоящей непосредственно после оператора if.
Необходимо помнить, что перед ключевым словом else точка с запятой никогда не ставится!
else - часть в операторе if может отсутствовать:
if условие then оператор 1;
Тогда в случае невыполнения логического условия управление сразу передается оператору, стоящему в программе после конструкции if.
Типы данных
Идентификатор |
Длина (байт) |
Диапазон значений |
Операции |
Целые типы |
|||
integer |
2 |
-32768..32767 |
+, -, /, *, Div, Mod, >=, <=, =, <>, <, > |
byte |
1 |
0..255 |
+, -, /, *, Div, Mod, >=, <=, =, <>, <, > |
word |
2 |
0..65535 |
+, -, /, *, Div, Mod, >=, <=, =, <>, <, > |
shortint |
1 |
-128..127 |
+, -, /, *, Div, Mod, >=, <=, =, <>, <, > |
longint |
4 |
-2147483648..2147483647 |
+, -, /, *, Div, Mod, >=, <=, =, <>, <, > |
Вещественные типы |
|||
real |
6 |
2,9x10-39 - 1,7x1038 |
+, -, /, *, >=, <=, =, <>, <, > |
single |
4 |
1,5x10-45 - 3,4x1038 |
+, -, /, *, >=, <=, =, <>, <, > |
double |
8 |
5x10-324 - 1,7x10308 |
+, -, /, *, >=, <=, =, <>, <, > |
extended |
10 |
3,4x10-4932 - 1,1x104932 |
+, -, /, *, >=, <=, =, <>, <, > |
Логический тип |
|||
boolean |
1 |
true, false |
Not, And, Or, Xor, >=, <=, =, <>, <, > |
Символьный тип |
|||
char |
1 |
все символы кода ASCII |
+, >=, <=, =, <>, <, > |
Алгоритм решения задачи в виде блок-схемы:
F:=0
нет да
Y1:=1/sqr(8*x1-x4)
F:=1
+
Нет да
Y2:=(2*x1+5*x2)/ln(4*x1-x2)
F:=1
D:=2.7
I:=I+1
F:=1
d:=d*2.7
Y3:=ln(5*x3-11)+d
нет да
Текст программы:
Program lab_2;
var
x1,x2,x3,x4,i:integer;
z,y1,y2,y3,y4,f,d:real;
Begin
f:=0;
writeln('Вычисление значения функции');
writeln('Введите значения х');
read(x1,x2,x3,x4);
if 8*x1-x4>0 then
begin
y1:=1/sqrt(8*x1-x4);
writeln('y1=',y1);
end
else
begin
f:=1;
writeln('функция y1 не определена');
end;
if 4*x1-x2>0 then
begin
y2:=(2*x1+5*x2)/ln(4*x1-x2);
writeln('y2=',y2);
end
else
begin
f:=1;
writeln('функция y2 не определена');
end;
if 5*x3-11>0 then
begin
d:=2.7;
for i:=1 to 12*x1+x4-1 do d:=d*2.7;
y3:=ln(5*x3-11)+d;
writeln('y3=',y3);
end
else
begin
f:=1;
writeln('функция y3 не определена');
end;
if 2*cos(x3)-sin(x4)>0 then
begin
y4:=(cos(x3)-5*sin(x4))/sqrt(2*cos(x3)-sin(x4));
writeln('y4=',y4);
end
else
begin
f:=1;
writeln('функция y4 не определена');
end;
if ((y1+y2+y3+y4)>0) and (f=0) then
begin
z:=ln(y1+y2+y3+y4);
writeln('z=',z);
end
else
begin
writeln('функция z не определена');
end;
readln;
readln;
end.
Тестовые примеры:
Пример 1:
Входные данные:
Х1:=2, X2:=3, X3:=6, X4:=1
Выходные данные:
Y1:=2,5819888975E-01
Y2:=1,1805363757E+01
Y3:=6,0826678775E+10
Y4:=-3,1262413855E+00
Z:=2,4831294325E+01
Пример 2:
Входные данные:
Х1:=1, X2:=2, X3:=2, X4:=3
Выходные данные:
Y1:=4,4721359550E-01
Y2:=1,7312340491E+01
Ф-я y3 не определена
Ф-я y4 не определена
Ф-я z не определена
Выполнил:_______________________
Защитил:_________________________