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

bobalo(1)

.pdf
Скачиваний:
588
Добавлен:
12.02.2016
Размер:
1.24 Mб
Скачать

ELSE

BEGIN

Y:= (B+C)/X;

WRITELN (’Y=’, Y)

END

END.

У реальних програмах часто виникає ситуація вкладення одного умовного оператора в інший. У цих випадках необхідно чітко дотримуватися структури: IF – THEN – ELSE, оскільки може виникнути синтаксична невизначеність, а з нею і помилка.

Приклад: Обчислити

 

1,

x ≤ −1

 

3

,

1 < x <1

y = x

 

 

 

1,

x 1

 

 

Оператор умови матиме такий вигляд:

IF X<=-1 THEN Y=-1

ELSE IF X>=1 THEN Y:=1

ELSE Y:=X*X*X;

Якщо пропустити перше службове слово ELSE

IF X<=-1 THEN Y:=-1; IF X>=1 THEN Y:=1

ELSE Y:=X*X*X,

така програма дасть нам неправильний результат, оскільки, коли X<=-1, Y присвоїться значення –1, тоді після перевірки другої умови управління передасться оператору Y:=X*X*X, і результат буде помилковим.

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

Часто виникає необхідність розгалуження програм не в двох, а у багатьох напрямках. Звичайно, у цьому випадку можна використати умовний оператор IF, але такий запис може бути дуже громіздким і не наочним. Зручніше використати оператор вибору (або варіанта).

Структура оператора CASE: CASE <вираз> OF

<константа вибору 1>:<оператор 1>; <константа вибору 2>:<оператор 2>;

M

<константа вибору n>:<оператор n> OTHERWISE <оператор>

END;

61

Синтаксична діаграма оператора CASE наведена на рис. 5.

Рис. 5. Синтаксична діаграма оператора CASE

Оператор CASE складається з <виразу> (селектора) і списку операторів, кожному з яких відповідає конкретне значення селектора. Тип селектора і тип константи вибору мають збігатися. Селектором може бути вираз або змінна будь-якого простого дискретного типу, тобто INTEGER, CHAR, BOOLEAN створеного Вами перелічуваного або інтервального типу. Селектор і константи вибору не можуть бути типу REAL, оскільки дійсне число не представлене у пам’яті машини дискретно.

Порядок виконання оператора CASE такий:

1.Обчислюється <вираз> (селектор).

2.Значення селектора порівнюється з <константами вибору>. Якщо

селектор збігається з певною константою вибору, виконується оператор, що стоїть за нею.

3.Якщо селектор не збігається з жодною константою вибору, виконується оператор, що стоїть після слова OTHERWISE.

4.Після виконання вибраного варіанта управління передається на службове слово END, тобто кінець оператора CASE .

Треба зазначити, що у мові Турбо-Паскаль слово OTHERWISE замінено

словом ELSE.

Приклад: Залежно від значення цілої змінної I обчислити

 

0,

якщо

I = 0

 

 

якщо

I = 1

sin(x),

 

 

якщо

I = 2 i I = 4

Y = cos(x),

ln(x),

якщо

I = 3

 

e x ,

якщо

I всі інші числа

 

 

 

 

 

CASE I OF

Y:=0;

0:

1:

Y=SIN(x);

2,4:

Y=COS(x);

 

62

3:

Y=LN(x);

OTHERWISE

Y=EXP(x)

END;

 

1.Не треба плутати константу вибору з міткою. Оскільки мітки у програмі описуються у розділі LABEL, а константи вибору опису не потребують.

2.Треба пам’ятати, що в одному операторі CASE не може бути двох однакових констант вибору, а оператори можуть повторюватись.

2.4.3. Оператор безумовного переходу GOTO

Оператор безумовного переходу використовується, коли необхідно обійти деякий фрагмент програми.

Структура оператора GOTO: GOTO <мітка>

M

<мітка>:<оператор>; Мітка – це ціле число без знака від 1 до 9999. Мітка обов’язково повинна

бути описана у розділі опису міток.

Синтаксична діаграма оператора GOTO наведена на рис. 6.

GOTO МІТКА

Рис. 6. Оператор GOTO

Використовуючи оператор GOTO, треба пам’ятати такі правила:

1.Оператор GOTO і зазначений оператор повинні знаходитись в одному і тому самому блоці. Не допускається перехід в середину функцій або процедур.

2.Перехід в середину складених операторів деколи може викликати непередбачені результати. Тому використовувати оператор GOTO без нагальної потреби не рекомендується.

Процедури введення–виведення у мові Паскаль

Оператори введення забезпечують програму вхідними даними, які необхідні для розв’язування поставленої задачі.

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

Оператори введення READ та READLN і виведення WRITE та WRITELN організовані в мові Паскаль як процедури.

Оператор READ вводить дані із стандартного вхідного файла INPUT, а оператор WRITE виводить результати у стандартний вихідний файл OUTPUT.

63

Тому у стандарті мови Паскаль передбачено опис цих файлів у заголовку програми:

PROGRAM TEST(INPUT, OUTPUT);

У конкретній реалізації ці файли відповідають конкретним реальним пристроям:

INPUT – введення з клавіатури; OUTPUT –виведення на екран дисплея.

Структура операторів введення:

READ(<ідент.1>,<ідент.2>,…,<ідент. n>); READLN(<ідент.1>,<ідент.2>,…,<ідент. n>);

Синтаксичну діаграму наведено на рис. 7.

READ

(

Ідентифікатор

)

 

 

,

 

Рис. 7. Синтаксична діаграма оператора введення

Ідентифікатор змінної може бути типу:

1)INTEGER;

2)REAL;

3)CHAR.

Наприклад:

READ(A, B, C)

Дія оператора READ полягає в тому, що він послідовно зчитує дані із

вхідного файла INPUT і у тій самій послідовності присвоює ці значення змінним А, В, С.

Треба пам’ятати:

1)введення у мові Паскаль тільки безформатне;

2)кількість значень, що вводяться, та їхні типи повинні збігатися з кількістю і типом в операторі READ;

3)числа при введенні відділяються пропусками;

4)символи вводяться без апострофів. Розділювачів між символами не потрібно;

5)якщо дані не вводяться, але натиснуто клавішу “ENTER”, машина все одно буде очікувати введення вхідних даних.

Оператор READLN аналогічний оператору READ, але після введення змінних курсор переходить на початок наступного рядка.

Оператор READLN може виконуватись без списку параметрів. У цьому випадку при натисканні клавіші “ENTER” курсор просто переходить на початок наступного рядка.

64

2.5.2. Оператори виведення WRITE та WRITELN

Паскаль допускає виведення змінних чотирьох стандартних типів:

INTEGER,REAL,CHAR та BOOLEAN.

Для виведення використовують процедури WRITE та WRITELN.

WRITE(<ідент.зм.>,<повідомлення>, … ,<ідент.>); WRITELN(<список виведення>);

Якщо виводиться повідомлення, тобто рядок символів, то його беруть в апострофи:

’Результат’, ’Введи А, В, С’.

Оператор виведення WRITE послідовно виводить значення змінних в один рядок. Після закінчення виведення курсор залишається у цьому самому

рядку.

Оператор WRITELN діє аналогічно оператору WRITE, але після завершення виведення курсор переходить на початок наступного рядка.

Виведення у мові Паскаль може бути як безформатне, так і форматоване. При безформатному виведенні дійсні числа виводяться у формі з плаваючою крапкою, тобто 2.74253Е+00

При форматованому виведенні можна вказувати на кількість позицій, що відводяться під значення змінної.

При форматованому виведенні цілих значень задається ширина загального поля m:

WRITE(I:m),

де I – змінна або вираз цілого типу, m – константа або вираз цілого типу, що задає ширину поля (кількість позицій), що відводиться під число.

Якщо число має менше як m знаків, то воно доповнюється ліворуч

пропусками.

Якщо число має більше як m знаків, то значення m ігнорується і виводиться стільки знаків, скільки треба.

При форматованому виведенні дійсних чисел вказується ширина загального поля і поля після крапки:

WRITE(А:m:n),

де А – змінна або вираз дійсного типу; m – ширина загального поля; n – ширина поля після крапки.

Треба пам’ятати, що (m-n)>3, тобто необхідно передбачити позиції під:

1)цілу частину;

2)знак;

3)десяткову крапку.

Якщо формат задано некоректно, він ігнорується і виводиться стільки позицій цілої частини, скільки потрібно, а дробова частина заокруглюється до заданої кількості розрядів.

65

Аналогічно виводятьсядані символьного та логічноготипів. Якщо формат не вказано, то під один символ відводиться одна позиція, а для виведення логічних константвідводиться4 позиціїнаTRUE та5 позицій підFALSE.

За допомогою форматів виведення результатів можна наочніше формувати матриці, таблиці, графіки.

Приклади:

 

 

Дія

 

 

 

 

 

 

Результат

I:= -1; J:= 327; WRITE(I:5, J:4);

 

 

 

 

 

-1

 

327

 

 

 

 

 

 

 

 

 

 

 

 

 

S1:=’*’; S2:=’A’;

S1=

 

 

 

 

 

 

 

*

 

 

S2 = A

WRITE(’S1 =’, S1:5, ’

 

S2 =’, S2);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Pi:= 3.141592; {29/3 = 9.6(6)}

 

 

 

 

 

3.14159

 

 

9.6667

WRITE(Рi:10:5,29/3:7:4);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

де

 

– символ пробілу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.6. Приклад використання операторів IF i CASE

Скласти програму, яка визначатиме, в якому квадранті декартової системи координат знаходиться точка, координати якої задані як x i y. Блок-схема алгоритму наведена на рис. 8.

PROGRAM TEST (INPUT, OUTPUT); VAR K:INTEGER;

X, Y:REAL; BEGIN

WRITELN (’Введи X і Y’); READLN (X, Y);

K:=1;

IF(X>0) AND(Y<0) THEN K:=4;

IF(X<0) AND(Y<0) THEN K:=3;

IF(X<0) AND(Y>0)THEN K:=2; CASE K OF

1:WRITELN (’Точка в першому квадранті’);

2:WRITELN (’Точка в другому квадранті’);

3:WRITELN (’Точка в третьому квадранті’);

4:WRITELN (’Точка в четвертому квадранті’)

END END.

66

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

Початок

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x, y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 1

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

> 0

 

 

так

 

 

 

 

x

 

 

 

 

 

 

y < 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 4

 

 

 

 

ні

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

< 0

 

 

так

 

 

 

 

x

 

 

 

 

 

 

y < 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 3

 

 

 

 

 

 

 

 

ні

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

< 0

 

 

так

 

 

 

 

x

 

 

 

 

 

 

y > 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 2

 

 

 

 

 

 

 

 

ні

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10вивід рез.

11

кінець

Рис. 8. Блок-схема програми

3.КОНТРОЛЬНІ ЗАПИТАННЯ

1.Як зображаються алгоритми?

2.Які існують типи обчислювальних процесів?

3.Що таке лінійний обчислювальний процес?

4.Яка особливість обчислювального процесу із розгалуженням?

5.Як програмуються обчислювальні процеси із розгалуженням мовою

Паскаль?

6.Як працює умовний оператор IF у мові Паскаль?

7.Як реалізовано оператор вибору у мові Паскаль?

8.Які особливості застосування оператора переходу GOTO?

9.Класифікація операторів мови Паскаль?

10.Що таке складений оператор?

11.Що таке форматоване виведення?

4.ЛАБОРАТОРНЕ ЗАВДАННЯ

1.Ознайомитись із методами зображення алгоритмів обчислювальних процесів та їх програмуванням алгоритмічною мовою Паскаль.

2.Одержати індивідуальне завдання.

3.Скласти блок-схему алгоритму і програму мовою Паскаль для обчислення заданої функції (додаток).

4.Виконати обчислення за програмою.

5.ЗМІСТ ЗВІТУ

1.Мета роботи.

2.Короткий опис методів зображення алгоритмів обчислювальних процесів та їхнього програмування алгоритмічною мовою Паскаль.

3.Індивідуальне завдання.

4.Блок-схема алгоритму для обчислення за індивідуальним завданням.

5.Текст програми.

6.Результати обчислень за програмою.

7.Аналіз результатів, висновки.

67

Додаток

Скласти програму знаходження змінної Y для різних значень аргументу X, використовуючи оператори CASE та IF. Вивести на друк значення аргументу, функції і проміжних змінних. Передбачити у програмі обхід арифметичних операцій, які можуть за певних значень аргументу X мати невизначений результат, тобто ділення на нуль, добування кореня парного степеня з від’ємного числа, логарифма від’ємного числа тощо.

1.

t

= 0,75 x 1 3

4 ;

t

2

=100ln x

 

1

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10t

+15t

2

при

t > t

2

 

 

 

1

 

 

 

1

 

y =

10t2

+15t1

при

t1< t2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1 =1,447;

x2 = 0,237;

x3 = −0,549;

2.

a = 4ln x +ex ;

 

b =sin2

x sin 2x

 

 

cos2 x

 

при

a >b

 

y =

 

 

 

при

a <b

 

 

sin(a b)

 

x1 =8,243;

x2 = 0,248;

x3 = 2,0;

3.

a =

8,15

14,36 ln x

 

 

; b = tg x +tg(arcsin x)

 

 

24,38

8,734(ex ex )

 

 

2a 7b

 

при

min(a,b) 1

y =

 

 

 

при

min(a,b) >1

 

2a +7b

x = 0,421;

x

=

π ;

x

=1,249;

1

 

 

2

 

4

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.a = K 3 4x ; b = L + tg(ln x) + 2M

ln(a

b)

при

a b

 

 

y =

a)

при

a <b

 

 

ln(b

 

 

x1 =3,47;

x2 = 0,249;

x3 = −0,249;

 

 

K =5,498; L = 0,995;

M =3,14;

 

 

5. a = 2L (2

x)43 tgx ; b = K +cos(2arctg

1

)

 

arcsin(a + Kb)

при

a b

x

 

 

y =

 

 

при

a <b

 

 

arccos(b a)

 

 

 

 

 

 

68

 

 

x1 = 0,175;

x2 = 0,482; x3 =3,14;

K = 27,34;

L =9,51

 

1

 

 

1

3

7

6. a = K

4

 

 

+

 

 

;

 

 

 

4

x

 

 

sin(5a

+3b)

 

 

при

 

0

 

 

 

 

при

y =

 

 

 

 

 

 

+3b)

 

 

при

cos(5a

 

 

x1 = 4,00;

 

x2 =16,00;

x3

K = 2,432;

 

L =8,14;

 

b = Llg 2 + Lln x ;

a > b a = b a < b

= −4,00;

7.

 

12

2

b = −lg x e

x

;

a = K

 

L x + 2,84

;

 

 

 

 

 

 

 

 

 

4a +3b

при

a >b

 

 

 

 

 

 

 

 

2

+b

2

a

 

 

 

 

y =

 

 

 

 

 

 

 

 

 

a b

 

при

a b

 

 

 

 

 

 

 

 

 

 

 

 

 

x1 = 0,234;

 

x2 =1,426;

x3

K = 22,50;

 

L = 7,5;

 

8. t = cos x

+ sin x

;

1

K

x

L + x

 

 

 

= −0,414;

t2 = 2(arcsin 2x + L)

 

3t

4t

2

при

t

< 2 t

2

 

1

 

 

1

 

y =

3t1

+ 4t2

при

t1

2 t2

 

 

 

 

 

 

 

 

 

x1 = −1,427;

x2 = 0,525;

x3 =8,341;

K = 4,37;

L =3,17

 

 

9. a =10 10 +10 10 tgx ;

b =[K +5 tgL ]30,2

sin(π a + eb )

при

a +b < 5

y =

 

 

при

a +b 5

sin(π a +b)

x1 =1;

x2 = −0,245;

x3 =3,14;

K =1;

L = 20

 

 

 

 

 

 

69

10. a =

4 K 2

tgx ;

 

b =sin(10L +3 lg x)4

 

 

L

100L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

 

 

 

 

a b

при

a

+b

>10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y =

a +b

при

a2 +b2 10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1 = 2;

 

x2 =3; x3 = 0,244;

 

 

 

 

 

 

 

K = 0,0186;

L = 0,01

 

 

 

 

 

 

 

 

 

 

11. a = K sin x + cos x ;

 

 

 

 

1

 

x

2

 

 

 

b = L

3

 

 

ln K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

lg(

 

a 2b

 

)

при

a +b < 2

 

 

y =

 

a ba

 

 

при

a +b 2

 

 

 

 

 

 

ln(

 

 

)

 

 

 

 

x1 =1;

 

x2 = 0,329; x3 =1,141;

K =3;

 

L = 0,027

 

12. a = 3 K x + 2 L1 (e2 e2 ) ;

 

3a

5b

при

a > 2b

 

a

 

при

a = 2b

y =

 

 

3a +

5b

при

a < 2b

 

 

 

 

 

x1 = 0,1; x2 =3,14;

x3 = 0,249;

K = 4,201;

L =3

 

 

 

1

 

 

1

 

 

b =sin

 

arctg

 

ln 5

2

4

 

 

 

 

 

 

a = 5

 

K 1+

1

(e

x

+e

x

 

 

π

 

3π

13.

7,002

10

 

 

) ;

b = lg L cos

 

+cos

 

 

 

 

5

5

 

arctg(5a2 +7b2 )

 

 

 

 

 

 

 

 

 

 

 

при

 

 

a2 +b2 > 0,1

 

 

 

 

y = arcsin(5a2 +7b2 )

при

 

 

a2 +b2 0,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1 = 0,1;

x2 = 2;

x3 = 0,348;

 

 

 

 

 

 

 

 

 

 

K = 0,01; L =3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.

a =

x2

 

 

4

x

 

cos K ;

 

 

 

 

sin K +

0,53482

 

 

 

 

 

 

 

3

0,382

 

 

 

 

 

 

 

 

 

b = e

2

sin

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

K arctg K + L arccos

L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

70

 

 

 

 

 

 

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