Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прогр часть 1.doc
Скачиваний:
21
Добавлен:
07.06.2015
Размер:
1 Мб
Скачать

Лабораторна робота 2 програмування розгалуЖеного обчислювального процесу

Мета роботи: виробити практичні навички в складанні алгоритмів, написанні та налагодженні програм на розгалужений обчислювальний процес.

Структура Паскаль–програми

Паскаль-програма складається із заголовка program і блоку. Блок складається із шести розділів:

1) розділ міток label;

2) розділ констант const;

3) розділ типів type;

4) розділ змінних var;

5) розділ процедур і функцій;

6) розділ дій (операторів).

Першому розділу може передувати необов’язкове речення uses. Замість одного оператора в будь-якому місці програми можна вставити цілий набір операторів, розділених крапкою з комою, які записані в операторні дужки begin end. Такий оператор називається складеним. Перед end крапка з комою звичайно не ставиться.

Умовний оператор

Загальний вид –

if a then p1 else p2;

Тут a - булевський (логічний) вираз; p1,p2 - оператори.

Булевський вираз може набувати одного з двох значень: true (правда, істина) або false (неправда).

Найпростішими логічними виразами є вираз відносини:

a1 op a2.

Тут a1, a2 - вирази, а op - операція відносини (=, <>, <, >, <=, і т.д.).

До булевських даних застосовні логічні операції and, or, not, xor. Булевський вираз визначає умову в операторі if, істинність якої веде до виконання оператора p1, а хибність - виконання оператора p2.

Наприклад:

if (X>5) and (Y<=10)

then

Z:=8

else

Z:= X+4;

Конструкції else р2 може не бути.

Приклади виконання завдання лабораторної роботи

Приклад 17. Дано дійсне число x. Скласти програму для обчислення функції f(x), якщо

Програма обчислення f(x) має вид

program pr17_1;

uses crt;

var x,y:real; k:char;

begin clrscr;

write('x ? '); readln(x);

if x<=0 then

y:=sqr(x)*x

else

if (x>0) and (x<=2) then

y:=sqr(x)+4*x+5

else

y:=sqr(x)-sin(pi*x*x/3);

writeln(' x= ',x:5:1,' y = ',y:5:1);

k:=readkey

end.

або

program pr17_2;

uses crt;

var x,y:real; k:char;

begin clrscr;

write('x ? '); readln(x);

if x<=0 then y:=sqr(x)*x;

if (x>0) and (x<=2) then y:=sqr(x)+4*x+5;

if x>2 then y:=sqr(x)-sin(pi*x*x/3);

writeln(' x= ',x:5:1,' y = ',y:5:1);

k:=readkey

end.

Приклад 18. Нехай D - заштрихована частина площини (рис. 1). Функція U визначається за х та y у такий спосіб:

Дані два числаx,y. Скласти програму для обчислення значення U.

Для опису ділянки D складемо рівняння ліній, що обмежують частину площини. Одержимо:

1) рівняння лінії 1 x=-1;

2) рівняння лінії 2 x2+y2=1;

3) рівняння лінії 3 визначимо із загального рівняння прямої. Для цього підставимо до рівняння прямої y=ax+b координати двох точок (-1;1) і (1;0). Вирішивши отриману систему лінійних рівнянь, знайдемо рівняння лінії 3: y=-0,5x+0,5.

Розіб'ємо ділянку D на дві підділянки: A, що лежить нижче осі OX, і B, що лежить вище осі OX. Тоді підділянку A можна описати системою нерівностей:

x2+y21; y0,

а підділянку B - системою нерівностей:

y 0,5x +0,5; x -1; y 0.

Ділянка D визначиться як сума підділянок A і B. Тоді програма обчислення U набуде виду

program pr18;

uses crt;

var x,y,u,z:real; a,b,d:boolean; k:char;

begin clrscr;

writeln(‘x,y? ‘); readln(x,y);

a:=(sqr(x)+sqr(y)<=1) and (y<=0);

b:=(x>=-1) and (y<=-0.5*x+0.5) and (y>=0);

d:=a or b;

if d then

begin

z:=(x/pi)/sqrt(1-sqr(x/pi));

u:=exp(x-y)+arctan(z)

end

else

u:=exp(sin(y)*ln(abs(x)))*ln(abs(x*sqr(y)));

writeln(‘D=’,D,’x=’,x:5:1,’y=’,y:5:1,’u=’,u:5:1);

k:=readkey

end.