Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

OT_METOD_KP_Ch1_2_0_0b

.pdf
Скачиваний:
22
Добавлен:
17.03.2016
Размер:
522.15 Кб
Скачать

 

 

 

 

 

 

 

 

 

ПОЧАТОК

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x,y,a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f:=False

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

x≥-2

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

-

 

+

x<5

-

 

 

 

 

 

 

 

 

 

 

 

 

 

y≥20

x>10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

y<3

-

 

 

 

 

 

 

 

 

 

 

 

 

y≥20

-

x>10

-

+

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f:=True;

 

y<-100

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

-

+

+

 

 

 

sinx 6y;

 

 

 

 

 

 

 

y≥20

 

x>10

 

 

 

 

 

 

f:=True;

 

 

 

 

 

 

 

f:=True;

 

 

y<-100

-

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x y 2 ;

 

 

 

 

f:=True;

 

 

 

+

 

 

-

 

 

sinx 6y;

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f:=True;

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

33.3 2 x y

;

 

 

 

 

 

sinx 6y;

 

 

 

y<-100

 

 

 

 

 

 

f:=True;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

33.3 2 x

y

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f:=True;

y

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

33.3 2 x

 

 

 

 

 

 

 

 

 

 

 

 

 

+

f

-

 

 

“z=”,z

 

Ø

КІНЕЦЬ

Рисунок 3.1 – Не оптимізована блок-схема алгоритму рішення задачі

 

 

 

 

 

 

ПОЧАТОК

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x,y,a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f:=False

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

x≥-2

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

x<5

-

 

 

 

 

 

 

 

 

 

y≥20

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

y<3

-

 

 

 

 

 

y≥20

-

x>10

-

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f:=True;

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

+

 

 

 

 

 

 

 

 

y≥20

-

 

 

 

 

 

 

 

 

sinx 6y;

 

f:=True;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f:=True;

 

 

y<-100

-

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

x y

2 ;

 

 

 

 

 

 

 

sinx 6y;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f:=True;

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sinx 6y;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f:=True;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

33.3 2 x y

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

f

-

 

 

“z=”,z

 

Ø

КІНЕЦЬ

Рисунок 3.2 – Оптимізована блок-схема алгоритму рішення задачі

Текст програми (за оптимізованим алгоритмом)

program example_if; var

x,y,a,z : real; f : boolean;

BEGIN

write(‘input x: ‘); readln(x); write(‘input y: ‘); readln(y); write(‘input a: ‘); readln(a);

f:=false;

if x>=-2 then {x>=-2} if x<5 then {x<5}

if y<3 then begin

f:=True; z:=a*x-y+exp(ln(2)*x);

end else

if y>=20 then begin

f:=True; z:=sin(x)-6*y;

end else

else {x<5}

if y>=20 then begin

f:=True; z:=sin(x)-6*y;

end else

if x>10 then

if y<-100 then begin

f:=True; z:=33.3-2*exp(ln(x-y)*sin(x));

end; else

else else {x>=-2}

35

if y>=20 then begin

f:=True; z:=sin(x)-6*y;

end;

if f then writeln(‘z=’, z)

else

writeln(‘no solution’);

readln;

END.

Контрольні питання

1.Які оператори розгалуження ви знаєте?

2.Дайте опис оператора IF.

3.Намалюйте узагальнену блок-схему оператора IF.

4.Чи ставиться в операторі IF крапка з комою («;») перед ключовим словом «ELSE»?

5.Чи можна не використовувати конструкцію «в інших випадках» в операторі IF?

6.Що таке операторні дужки?

7.До заданої програми намалювати блок-схему алгоритму. Програму надає викладач.

8.До заданої блок-схеми алгоритму написати програму. Блок-схему алгоритму надає викладач.

9.Написати програму. Умову і вимоги до задачі надає викладач.

36

Комп’ютерний практикум №4

Процеси розгалуження. Частина 2.

Мета

Засвоїти роботу операторів розгалуження IF та CASE. Засвоїти роботу логічних операторів.

Робоче завдання

Вивчити роботу оператора IF та CASE. Дослідити різницю між цими операторами. Вміти замінювати оператор IF оператором CASE та навпаки. Навичтись розраховувати логічні вирази.

Хід роботи

Вирішити задачу трьома способами в межах однієї програми:

З використанням оператора IF та логічних операцій AND та OR.

З використанням оператора Case. Селектор вибору має цілий тип даних та набуває свого значення в одному із розв’язків задачі за допомогою оператора IF.

Перевіряти вираз на ОДЗ не обов’язково для всіх способів вирішення задачі.

Потрібно намалювати алгоритм блок-схему для першого способу вирішення задачі.

У разі, якщо вираз має декілька варіантів рішення, то вибирається той вираз, що йде першим в умові.

Порівняйте блок-схему алгоритму у комп’ютерному практикуму №3 та №4. Зробіть висновки.

37

Варіанти завдань

 

,

,

,

,

 

31.

,

,

 

 

,

0

 

 

32.

 

 

 

 

 

 

 

,

2 ,

0

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

,в інших випадках

33.

 

 

 

 

 

 

 

,

0,

0

 

 

 

 

 

 

 

 

 

,

0,

0

 

 

 

 

 

 

 

 

 

,

0

0

 

 

 

 

 

| |

 

 

,

0,

 

34.z

.

 

 

 

 

 

,

0,

5

 

 

 

 

 

 

 

,

,

0,

8

35.

 

 

 

 

 

 

 

0,

5

 

 

 

 

 

 

 

 

 

,

5

20

 

 

 

 

 

 

 

 

 

,

 

,

0 ,

36.

 

5,

10

 

 

 

 

,

 

,

0

 

 

 

 

 

 

 

,

 

20,

0

10

37.

 

 

 

 

 

 

 

,

,

 

 

 

 

 

 

 

 

,

,

1

10

 

 

 

 

 

 

 

 

,

 

,

20

 

 

 

 

 

 

 

 

 

38.,

,

 

 

,

0,

0

 

 

39.

 

 

 

,

0,

0

 

 

 

 

 

 

,

0

 

 

 

 

 

 

 

,в інших випадках

40.

 

 

 

 

,

 

6

 

 

 

 

 

,|

|

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

38

41.

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

,|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,,

 

,

0

 

 

 

 

42.

 

 

 

 

|

 

 

 

 

|

 

|

|

 

 

 

 

43.

 

 

 

 

 

 

 

 

 

,

,

0,

3

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|

 

 

|

 

,

0,4

10

44.

 

 

 

 

 

 

 

 

 

 

,

0,

0,

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

0,

;

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

,

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

,в інших випадках

45.

 

 

 

 

 

 

 

 

 

 

 

 

 

,

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,|

 

|

 

 

 

 

 

46.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

,

6

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|

 

 

 

 

 

 

|

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

,

,

 

 

 

.

47.

|

 

 

 

 

 

|

 

 

 

 

 

 

,

,

0

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

,

0

 

 

 

 

48.

 

 

 

 

 

 

 

 

 

 

 

 

 

0,

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

0,

1

 

 

 

 

,

49.,

,в інших випадках

50.

,

0,

0

 

| |

,

4

4, 2

2

,

 

 

 

 

39

 

51.

|

|

 

,

0,

4

 

 

 

 

 

,

0,

0

 

 

 

 

 

,

 

 

 

 

,

 

3

 

 

 

 

 

 

 

 

52.

 

,

3

 

 

 

 

 

 

 

 

 

,

3

 

5,

3

53.

 

 

 

,

 

 

 

 

 

,

 

 

 

.,в інших випадках

54.

 

 

,

4,

5

|

|

| |

,

4,

5

,в інших випадках

 

 

 

,

3

3

55.

 

 

,

 

 

 

 

 

 

,3

,, 0, 20

56.

 

 

 

 

 

,в інших випадках

 

 

57.

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

,

1,

0

 

 

 

 

 

 

 

 

 

,

1,0

2

 

 

 

 

 

 

 

,в інших випадках

,

 

100

58.

 

 

 

 

 

,

 

 

 

.

 

 

 

 

 

 

,

 

 

 

,

1

59.

 

 

|

,

| ,

2

 

4,

,

10

 

 

 

 

 

 

 

 

60.

 

,

,

20

 

 

 

 

 

 

 

,

 

2

0

 

 

 

 

 

 

 

,

 

2,

 

 

 

 

 

 

 

 

 

,в інших випадках

 

 

 

40

Стислі теоретичні відомості

Алгоритмічна мова Pascal є мовою структурного програмування. Одна з базових структур для опису алгоритмів це структура типу розгалуження. В мові Pascal для опису цієї структури є 2 оператори:

Оператор розгалуження IF

Оператор вибору CASE

Оператор IF

Узагальнений вигляд оператора IF

IF <логіний_вираз> THEN <оператор>

[ ELSE <оператор> ] ;

<логіний_вираз> - повинен у кінцевому розрахунку набувати значення логічного типу (True або False). Якщо значення умови (логічного виразу) рівне True, то виконується оператор наступний за ключовим словом THEN. Якщо значення умови рівне False, то виконується оператор за ключовим словом ELSE. Тобто оператор IF дозволяє поділити виконання програми на дві гілки. Гілка ELSE є не обов’язковою і може бути відсутня, в такому випадку, якщо умова рівна False, то виконується оператор наступний за оператором IF. Слід зазначити, що перед ELSE «;» не ставиться. Приклади використання оператора IF

Оператор IF з простою умовою та використанням ELSE

if a>b then writeln(a)

else writeln(b)

Оператор IF зі складною умовою та без використання ELSE

41

if (a>b) and (a>0) then a:=b;

Оператор IF зі складною умовою та використанням ELSE та вкладеного

IF

if ( a>b ) or ( abs(a)<1 ) then begin

a:=a+1;

b:=b*a; end

else

if a=b then a:=0

else begin

a:=-a; b:=b-1;

end;

Оператор CASE

Оператор CASE, на відміну від оператора IF, дозволяє виконувати більш ніж два розгалуження. Узагальнений опис оператора CASE:

CASE <селектор_вибору> OF <константа_вибору_1> : <оператор>; <константа_вибору_2> : <оператор>;

<константа_вибору_N> : <оператор>; [else

<оператор>;] end;

<селектор_вибору> - значення порядкового типу. Може бути змінною, виразом або константою. Константи вибору – константи, того ж типу що і селектор вибору. В операторі CASE також є не обов’язкова гілка ELSE, яка буде виконана, якщо жодна з констант вибору не співпала з селектором вибору. Оператор CASE обов’язково закінчується ключовим словом END, тобто кожному CASE відповідає END.

42

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]