русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Перелічувальний


Дата додавання: 2014-11-27; переглядів: 1060.


Тип

 

 

Приклади визначень перелічувальних типів:

а)

Type

Weekday = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

 

Colour = (Red, Orange, Yellow, Green, Blue, Black);

 

Operation = (Plus, Minus, Times, Divide)

 

Відзначимо, що стандартний тип Boolean, якщо б його треба було описати, виглядав би як : type Boolean = (False, True);

Для аргументів перелічувального типу визначені такі стандартні функції:

Succ(x) - значення, наступне за x.

Pred(x) - значення, попереднє x.

Ord(x) - порядковий номер x.

 

До даного перелічувального типу можуть бути застосовані відношення:

=, <>, <, <=, >=, > .

 

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

Red < Orange < Yellow < Green < Blue < Black ;

Описи типу змінної можна давати і в розділі змінних. Наприклад, опис:

Type

Shape = (Triangle, Circle, Rhombus, Square);

Var

f: Shape;

 

еквівалентний опису

Var

f: (Triangle, Circle, Rhombus, Square);

 

однак у другому випадку опис типу став анонімним: тип описаний, але не має імені. Використання цього типу обмежене. Тому 1-ий варіант більш відповідає стилю мови.

6.9. Оператори вибору: оператор варіанта

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

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

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

Оператор варіанта має вид:

 

Case <вираз {селектор}> of

<список міток варіанта > : <оператор>;

. . . . . . . . . .

< список міток варіанта > : < оператор >

[else < оператор > ]

End

 

Приклади операторів варіанта:

 

а)

Select : = Index mod 4;

case Select of

0 : x := y*y + 1;

1 : x := y*y - 2*y;

2,3 : x := 0

end;

 

В цьому прикладі Select приймає значення 0, 1, 2, 3. Це досягнуто обчисленням Select := Index mod 4.

Таким чином, замість імені Select можна використовувати вираз Index mod 4:

a)

case Index mod 4 of

0 : x := y*y + 1;

1 : x := y*y - 2*y;

2,3 : x := 0

end;

 

б)

case ch of

‘a’,’b’,’c’ : ch := succ(ch);

‘y’,’z’ : ch := pred(ch);

‘f’,’g’ : {порожній варіант};

else ch := pred(pred(ch)

end;

 

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

 

Приклад 6.3.

 

program Sign_of_Function;

Type

Fun = (Unknown, FSin, FCos, Ftg, Fctg);

Var

FunNumber, Quoter: Integer;

TrigFun : Fun;

 

Procedure InpData (Var FunNumber, Quoter: Integer);

Begin

Write(‘ Введіть номер тригонометричної функції ‘);

Readln(FunNumber);

Write(‘ Введіть номер квадранта ‘);

Readln(Quoter);

End;

 

Function FunctionName ( FunNumber: Integer): Fun;

Begin

{ Обчислення імені функції }

Case FunNumber of

1 : FunctionName:= FSin;

2 : FunctionName:= FCos;

3 : FunctionName:= FTg ;

4 : FunctionName:= FCtg

else

FunctionName:= Unknown;

End;

End;

 

Procedure ZnakFunction (TrigFun: Fun; Quoter: Integer);

Begin

{ Обчислення знака функції }

case TrigFun of

FSin: case Quoter of

1, 2 : Writeln (‘ знак синуса +’);

3, 4 : Writeln (‘ знак синуса -‘)

end;

FCos: case Quoter of

1, 3 : Writeln (‘ знак косинуса +’);

2, 4 : Writeln (‘ знак косинуса -‘)

end;

FTg, FCtg: case Quoter of

1, 4: Writeln (‘ знак тангенса і котангенса +’);

2, 3: Writeln (‘ знак тангенса і котангенса -‘)

end;

Unknown: Writeln(‘ Функція не визначена ’)

end;

End;

 

Begin

InpData ( FunNumber, Quoter);

TrigFun :=FunctionName ( FunNumber);

ZnakFunction (TrigFun, Quoter);

end.

 

6.10. Вправи

І. Сформулюйте умови для оператора розгалуження:

 

1. Білий кінь розташований на полі (х, n). Чорний пішак розташований на полі (y, m). Чи знаходиться пішак під боєм коня?

2. Білий слон розташований на полі (х, n).Чорний пішак розташований на полі (y, m). Інших фігур на полі немає. Чи знаходиться пішак під боєм слона?

3. Біла шашка розташована на полі (х, n). Чорна шашка розташована на полі (y, m). Чи знаходиться чорна шашка під боєм білої?

4. Біла дамка розташована на полі (х, n).Чорна шашка розташована на полі (y, m). Чи знаходиться чорна шашка під боєм білої дамки? (Інших фігур на дошці немає)

5. Вектор a = (x, y), вектор b = (u, v). Чи є вектори паралельними або перпендикулярними?

6. Вектор a = (x, y), вектор b = (u, v). Чи можна повернути вектор а проти годинної стрілки на деякий кут, менший 1800 так, щоб вектори стали співнаправленими?

7. Чи перетинається коло О1 з центром (x, y) і радіусом R1 з колом О2 з центром (u, v) і радіусом R2?

8. Чи є трикутник з вершинами A(x1, y1), B(x2, y2), C(x3, y3) рівнобедреним?

9. Чи можна з відрізків a, b, c скласти трикутник і чи можна цей трикутник помістити у коло радіуса R?

10. Пряма задана рівнянням Y = kX + b. Чи лежить точка А(u, v) над цією прямою?

 

ІІ. Напишіть програму розв’язання задачі:

 

1. Розв’язати квадратну нерівність ax2 + bx + c < 0.

2. Розробити алгоритм та програму, яка дає відповідь на питання: чи є число Y розв¢язком системи нерівностей aX + b < 0, cX+d < 0 ?

3. Розв’язати систему лінійних рівнянь:

4. Обчислити внутрішні кути трикутника, з вершинами A(x1, y1), B(x2, y2), C(x3, y3)

5. Знайти найкоротшу сторону трикутника з вершинами A(x1,y1), B(x2,y2), C(x3,y3)

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

7. Обчислити значення функції:

1, якщо x > 0

Sign(x) = 0, якщо x = 0

-1, якщо x < 0 .

8. Розробити алгоритм та програму, яка дає відповідь на питання: чи є задане чотирьохзначне число паліндромом. (Число називається паліндромом, якщо його запис можна читати однаково зліва направо та справа наліво. (Наприклад, 2442, 38183, 5115).

9. Обчислити найбільше і найменше значення функції Y=ax2 +bx+c на відрізку [p ; q].

10. Знайти область визначення функції: y=1/(x2 + px + q).

11. Розв’язати біквадратне рівняння ax4 + bx2 + c = 0

12. Знайти квадрат найменшої площини з сторонами, паралельними осям координат, який містить три точки площини A(x1,y1), B(x2,y2), C(x3,y3).

13. Здійснити переклад не більш чим трьохзначного цілого додатного числа у відповідний йому складений числівник українською, російською або англійською мовою.

14. За номером місяця і номером дня знайти день тижня, що припадає на цю дату.

15. Розробити алгоритм та програму, яка дає відповідь на питання: чи лежить точка M всередині трикутника ABC? Точки A, B, C, M визначені своїми координатами.

16. Розробити алгоритм та програму, яка дає відповідь на питання: чи є чотирикутник ABCD опуклым? Точки A, B, C, D визначені своїми координатами.


7. ОПЕРАТОРИ ПОВТОРЕННЯ З ПАРАМЕТРОМ. МАСИВИ

 

7.1. Оператор циклу з параметром

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

Для реалізації циклічних алгоритмів у мові Паскаль використовуються оператори повторення:

* оператор циклу з параметром;

* оператор циклу з передумовою;

* оператор циклу з постумовою.

У цьому параграфі вивчається оператор циклу з параметром. Такий оператор передбачає повторне виконання деякого оператора з одночасною зміною значення, що присвоюється керуючій змінній (параметру цього циклу). Він має вид:

For <параметр>:=<початкове значення> to <кінцеве значення> do <оператор>

або

For<параметр>:=<початкове значення> downto <кінцеве значення> do<оператор>

Синтаксична діаграма оператора циклу з параметром:

 

 
 

 

 



<== попередня лекція | наступна лекція ==>
Задачі для самостійного розв’язування | З параметром


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн