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

ОТ Методичка

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

21.

|

|

 

 

,

0,

4

 

 

 

 

 

 

,

0,

0

 

 

 

 

 

 

,

 

 

 

 

,

 

 

3

 

 

 

 

 

 

 

 

22.

 

 

,

 

3

 

 

 

 

 

 

 

 

 

 

,

 

3

5,

3

23.

 

 

 

 

 

,

 

.

 

 

 

,

 

 

 

 

 

,

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

24.

 

 

 

 

4,

5

 

|

|

| |

,

4,

5

 

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

,3

25.

 

 

 

 

 

 

 

,

3

 

 

 

 

 

 

 

 

 

 

 

,

3

 

 

 

 

 

26.

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

27.

 

 

 

,

 

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

 

 

 

 

 

 

 

 

 

 

 

,

 

1,

0

 

 

 

 

 

 

 

 

,

 

1,0

2

 

 

 

 

 

 

 

 

 

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

,

 

100

28.

 

 

 

 

 

 

 

,

 

 

 

.

 

 

 

 

 

 

 

 

,

 

 

 

,

1

29.

 

 

 

|

 

,

| ,

 

 

4,

,

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

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

 

 

 

30.

 

 

 

2

2

 

 

 

 

 

 

 

 

,

 

0

 

 

 

 

 

 

 

 

,

 

2,

 

 

 

 

 

 

 

 

 

 

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

 

 

 

Короткі теоретичні відомості

Алгоритмічна мова 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

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.

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

var a,b:integer;

begin readln(a); case a of

1: b:=5;

2..10: b:=4; { діапазон констант} -5,0,100: {перелік констант}

begin {потрібно виконати більш ніж один оператор, } b:=a;{тому використовуємо складений оператор} a:=0;

end

else {Гілка ELSE} a:=a*abs(a); b:=a-4;

end; {Кінець оператора CASE}

Слід зазначити, що використання операторних дужок в гілці ELSE не обов’язковим.

Приклад розв’язку задачі (тільки програма):

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

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

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

|

,

0,

1

0

| ,

 

0,

program example_ifcase; var

x,y:real;

selector:integer; BEGIN

write(input x); readln(x); write(input y); readln(y); if (x>0) and (y<1) then begin

writeln(‘IF: ’:6, 2*x+y:0:5); selector:=1;

end else

if (x>0) and (y<-4) and (y<=0) then begin

writeln(‘IF: ’:6, y-abs(x-1); selector:=2;

end else

writeln(‘IF: ’:6, ‘no solution’);

case selector of:

1:writeln(‘CASE: ’:6, 2*x+y:0:5);

2:writeln(‘CASE: ’:6, y-abs(x-1); else

writeln(‘CASE: ’:6, ‘no solution’);

end;

END.

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

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

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

3.Дайте опис оператора CASE.

4.Яка різниця між оператором IF та CASE?

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

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

7.Які типи даних може приймати вираз-селектор в операторі CASE?

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

9.Як задати проміжок констант вибору в операторі CASE?

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

11.Яким ключовим словом обов’язково повинен закінчуватись опис оператора CASE?

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

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

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

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

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

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

Лабораторна робота №4

Прості цикли

Мета

Засвоїти поняття циклу. Навчитись використовувати цикли на мові

Turbo Pascal.

Хід роботи

Розв’язати задачу за допомогою всіх циклів окремо, але в межах однієї програми. Вивід результатів повинен чітко вказувати, яким циклом була розв’язана дана задача. До кожного способу розв’язку повинна бути намальована алгоритм блок-схема.

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

Арифметичні вирази

Забороняється використання функцій «ln» та «exp».

 

 

Завдання

Обмеження

Перевірочна функція

 

 

 

1

 

1 !

 

 

 

Ряди

,

 

sin

1

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

2

1

 

 

 

 

 

!

 

1

,

1

1

3

1

 

 

 

 

1

!

 

 

 

,

 

cosx

 

 

 

 

 

2

 

 

 

 

4

1

 

 

 

 

!

 

 

 

 

 

,

 

 

5

 

 

 

 

 

 

 

 

 

 

1

,

1

ln 1

 

 

1

 

 

 

 

 

 

6

 

 

 

1

 

 

 

1

,

1

 

 

 

 

2

 

 

 

 

 

 

7

4

2

!

1

 

1

,

1

arcsin

 

!

2

 

8

 

 

1

 

 

 

 

 

 

1

,

1

ln 1

9

 

1

 

 

 

1

 

 

 

 

,

,

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вирази

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

10

 

1

 

!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

2

 

1

 

 

 

 

 

 

 

 

 

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

1

!

 

 

 

 

 

2

 

 

,

 

 

14

 

 

2

1 !

 

 

 

 

15

 

1

 

!

 

 

 

,

 

 

 

 

2

 

 

 

 

 

16

 

 

2

1 !

 

 

 

 

 

 

 

 

 

2

 

1 !

 

 

 

 

 

 

 

 

17

 

 

!

 

 

 

 

 

 

 

 

 

 

,

 

 

18

 

 

2

 

1

 

 

 

1

 

,

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

19

 

 

 

 

 

1

 

 

 

 

 

!

 

,

 

 

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

1 !

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задачі

21.Скласти програму для пошуку суми цифр цілого числа, що вводиться з клавіатури.

22.Скласти програму, яка знаходить найбільший спільний дільник двох цілих чисел, що вводяться з клавіатури.

23.Скласти програму-гру «Більше-Менше». Комп’ютер генерує випадкове ціле число, а користувач намагається вгадати з

генероване число. Комп’ютер надає користувачу підказку, чи є введене число більшим або меншим від загаданого. Також з клавіатури вводиться максимальна кількість спроб.

24.Роздрукувати та порахувати усі прості числа в заданому діапазоні. 25.Знайти число Фібоначчі, порядковий номер якого вводиться з

клавіатури.

26.Знайти найближче число Фібоначчі до заданого числа.

27.Вивести на друк усі трьохзначні числа, які діляться націло на власні цифри, а також перевертиш цього числа ділиться націло на свої цифри.

28.Знайти усі двохзначні числа, такі що, якщо до суми цифр цього числа додати квадрат цієї суми, то отримаємо це ж число.

29.Дано число. Визначити, чи є це число степенем двійки. 30.Знайти усі дільники заданого цілого числа.

Короткі теоретичні відомості

Цикл — різновид керуючої конструкції у високорівневих мовах програмування, призначена для організації багаторазового виконання набору інструкцій. Також циклом може називатися будь-яка багатократно виконувана послідовність команд, організована будь-яким чином. Цикл багаторазово повторює набір інструкцій, доки не будете виконана умова виходу з циклу. Одне повторення набору інструкцій (тіло циклу) також ще називають ітерацією. Приклади циклічних подій з навколишнього світу: зміна дня і ночі, зміна пір року, залізничний рух тощо.

Розрізняють два види циклів: з передумовою і після умовою. В циклах з передумовою умова виходу з циклу розташовується перед тілом циклу, тобто спочатку перевіряється умова, а тільки потім виконується тіло циклу. В циклах з після умовою умова виходу з циклу розташовується в кінці циклу,

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

В Turbo Pascal є три види циклів: FOR, WHILE, REPEAT. Як різновид четвертого виду циклічної конструкції можна розглядати оператор розгалуження (IF, CASE) та оператор безумовного переходу GOTO, але такий підхід не рекомендується використовувати.

Цикл FOR

Цикл FOR – це цикл з передумовою. Також його ще називають цикл з лічильником або з параметром. Загальний формат циклу:

for <параметр_циклу>:=<початкова_межа> to <кінцева_межа> do <оператор>;

або

for <параметр_циклу>:=<початкова_межа> to <кінцева_межа> do begin

<блок_операторів>; end;

або

for <параметр_циклу>:=<початкова_межа> downto <кінцева_межа> do <оператор>;

або

for <параметр_циклу>:=<початкова_межа> downto <кінцева_межа> do begin

<блок_операторів>; end;

<параметр_циклу> - змінна порядкового типу. В тілі циклу не рекомендується змінювати значення <параметр_циклу>, оскільки дана циклічна конструкція автоматично змінює <параметр_циклу> після виконання тіла циклу. У випадку, якщо в умові циклу використовується ключове слово «to» береться наступне значення по порядку в типі даних ( функція «succ»), якщо використовується «downto», то береться попереднє значення в типі даних (функція «pred»). Наприклад якщо параметр циклу