Д. Программа на языке Pascal

Program Lab1;

{

ЛИНЕЙНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ

       
   
Через файл
 
Через клавиатуру и экран
 

}

Var

x,a,b,p,y,z:Single;

Begin

Write(’x=’);

ReadLn(x) ;

Write(’a=’);

Readln(a) ;

Write(’b=’);

Readln(b) ;

y:=(4*Sqr(Sin(x))+3)/2;

p:=Sqr(Sin(a*(3*Sqr(y)-1/3)));

z :=(p+11.75)/(p+b);

Writeln(’y=’,y:8:4,’z=’,z:8:4);

End.

Var

x,a,b,p,y,z:Single;

Begin

AssignFile(input,’in.txt’);

Reset(input);

AssignFile(output,’out.txt’);

Rewrite(output);

Read(x,a,b);

y:=(4*Sqr(Sin(x))+3)/2;

p:=Sqr(Sin(a*(3*Sqr(y)-1/3)));

z:=(p+11.75)/(p+b);

Writeln(’y=’,y:8:4);

Writeln(’z=’,z:8:4);

CloseFile(input);

CloseFile(output)

End.

Е. Выводы

Тот факт, что результаты контрольных расчетов, выполненных вручную, достаточно совпадают с результатами контрольных расчетов, выполненных на ЭВМ, свидетельствуют о том, что программа составлена правильно.

Контрольные вопросы

1. Назначение компилятора.

2. Структура программы на языке Pascal.

3. Назначение объявления переменных в программе, написанной на языке Pascal.

4. Вычленение одинаковых выражений.

5. Форматирование вывода на экран.

6. С какой целью используются скобки в правой части оператора присваивания в программе, предназначенной для решения задачи варианта 30: z := (p + 11.75) / (p + b) ;

7. В каких случаях компилятор выдает сообщение Unknown identifier?

ЛР. Разветвляющиеся вычислительные процессы

Лабораторная работа должна выполняться в соответствии с указаниями, приведенными в разделе “Порядок выполнения лабораторных работ”.

Цель работы

Целью настоящей работы является получение практических навыков в решении задач, в которых выбор расчетной формулы определяется некоторыми условиями.

Варианты заданий

Необходимо решить на компьютере задачу вычисления значения функции y = f(x). Варианты заданий, а также рабочие наборы исходных данных приведены в таблице


Номер варианта Функция y = f(x)  
 
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  
Д. Программа на языке Pascal - student2.ru  

Методические указания по выполнению работы

В данной лабораторной работе необходимо вычислить значение функции, заданной различными формулами на разных участках ее определения. Возможны два стандартных подхода к решению таких задач. В первом из этих подходов используются вложенные инструкции if then else, а во втором инструкции if then(сокращенный if).

Рассмотрим возможные способы организации разветвления для варианта 30.

Метод 1. Использование вложенных инструкций if then else

Этот метод может быть назван методом проверки точек ветвления. Запись алгоритма определения значения функции y = f(x) для рассматриваемого варианта с использованием метода проверки точек ветвления будет иметь следующий вид.

{Объявления переменных x и y и ввод исходных данных}

if x>3 then

y:=27*Sqr(x-3)*(x-3)

else if x>1 then

y:=Sqr(x)*x

else if x> 0 then

y:=x

Else

y:=Sqr(Sin(x))/2;

{Вывод значения переменной “y”}

Отметим, что при использовании вложенных инструкций if then else целесообразно придерживаться следующих правил:

  • новая инструкция if then else должна располагаться в else – ветви; запись вложенного if в then – ветви ухудшает читабельность программы;
  • внутренние операторы следует записывать с новой строки (в рассматриваемом примере это операторы присваивания);
  • ключевое слово else следует располагать под ключевым словом if, к которому оно относится.

При использовании рассматриваемого метода следует придерживаться следующего порядка:

  • проверку точек ветвления целесообразно начать с одной из крайних точек (слева или справа),
  • следует учитывать, что каждая из точек ветвления задается двумя отношениями; из этих отношений в операторе if then else следует выбирать то, для которого по направлению then можно выделить расчетную формулу.

Например, в варианте 30 начать проверки можно либо с точки x = 3, либо с точки x = 0(но не с точки x = 1). Пусть в качестве первой точки для проверки выбрана точка x = 3. Эта точка задается следующими двумя отношениями: x > 3 и x <= 3. Для проверки в операторе if then else следует выбрать отношение x > 3. При выборе этого отношения в ветви then можно выполнить вычисления по формуле y = 27 + (x -3)3.

Общее количество операторов if при использовании рассматриваемого метода не превосходит количества точек ветвления. В данном примере таких точек три (x = 3, x = 1 и x = 0).

Метод 2. Использование сокращенной формы инструкции if

Этот метод может быть назван методом проверки ветвей. Существо метода сводится к следующему. Для каждой области задания функции записывается логическое выражение, принимающее значение true в том случае, когда аргумент x попадает в эту область и значение false – в противном случае.

Запись алгоритма определения значения функции y = f(x) для рассматриваемого варианта с использованием метода проверки ветвей будет иметь следующий вид.

{Объявления переменных “x” и “y” и ввод исходных данных}

if x > 3 then

y:=27*Sqr(x-3)*(x-3);

if (x <= 3)And(x>1) then

y := Sqr(x) * x ;

if (x<=1) And (x>0) then

y:=x ;

if x>=0 then

y:=Sqr(Sin(x))/2 ;

{Вывод значения переменной “y”}

Здесь так же, как и в методе проверки точек ветвления, рекомендуется внутренние инструкции записывать в отдельной строке. Общее количество инструкций if определяется количеством ветвей разветвления. В нашем примере таких ветвей четыре.

При выборе метода организации разветвления следует учитывать следующее. Достоинством первого метода является меньшее среднее время выполнения. Действительно, после выполнения выбранного оператора присваивания дальнейшие проверки во вложенных операторах if не производятся. Во втором способе всегда выполняются все проверки в инструкциях if. Достоинством второго способа является более высокая степень читабельности.

Нужно выбрать один из возможных способов реализации разветвления, обосновать сделанный выбор.

Следует отдельно остановиться на подготовке теста для данной лабораторной работы. Прежде всего, следует определить количество необходимых тестов. В связи с тем, что основным назначением теста в данной работе является проверка организации разветвления, общее количество тестов должно определяться количеством расчетных формул. При этом следует учитывать, что с помощью одного теста можно проверить только одну ветвь разветвления.

Пример отчета по лабораторной работе

(для варианта 30)

А. Постановка задачи

Требуется составить программу вычисления значения следующей функции

Д. Программа на языке Pascal - student2.ru

для заданного значения аргумента “x” и выполнить вычисления на компьютере.

Б. Схема алгоритма

Д. Программа на языке Pascal - student2.ru

В. Контрольный расчет

Для тестирования необходимо подготовить четыре теста. Количество тестов определяется числом расчетных формул, с помощью которых задана функция в варианте 30.

Для проверки первой формулы (ветви) функции y = f(x) выбираем контрольный набор данных: x = 5, а для проверки второй, третьей и четвертой ветвей выберем соответственно x = 2, x = 0,8 и x = -3.1415.

Результаты вычислений соответствующих значений функции y = f(x) приведены ниже в таблице вычислений.

Наши рекомендации