p align="left"> Для ZRK: |
Дальність дії | Висота дії | | D | H | | |
Для RLS: |
Потужність передавача | Довжина хвилі | Спосіб обзору | | P | L | SZ | | |
Опис запису: Type SS = (neprer, impuls); TW = (ZRK, RLS); Var WW : TW; W : RECORD I : integer; M : real; CASE WW of ZRK : (D, H : real); RLS : (P, L: real; SZ : SS); End; Якщо тепер в програмі виконати оператор : WW :=ZRK; то далі можна використовувати оператори: W.I :=124;with w do W.M :=15;I := 124; W.D :=40;M := 15; W.H :=24;D := 40; H := 24; Якщо виконано оператор WW := RLS; with w do I := 203; M := 18; P := 10; L := 0.3; SZ := impuls; Особливості: для розміщення змінної комбінованого типу завжди відводиться фіксований об'єм пам'яті, який визначається найбільшим варіантом. Таким чином, різні варіанти одного запису якби “накладаються” один на одного у пам'яті, тобто займають одну і ту ж область. мова Паскаль не має засобів контролю за правильністю роботи з варіантами, тому оператор повинен складати програму дуже коректно. Синтаксичні діаграми: комбінований тип: record -> <список полів> -> end; список полів: <фіксована частина> -> ;-> <варіантна частина> ->; фіксована частина: <індентифікатор> -> : -> <тип> -> ; варіантна частина: case -> <ідентифікатор> -> of -> <альтернатива> -> ; дискриминант: <ідентифікатор> -> : -> <ідентифік. типа> альтернатива: <константа> -> : -> <список полів> -> 4. Множини Цей тип даних використовують не так часто (одна з причин - низька швидкість виконання операції з множинами). Однак у ряді випадків його використання надає компактність і наочність програм. Під множиною в ТР розуміють неупорядковану сукупність елементів, як це прийнято в математиці. Елементами множини можуть бути тільки змінні простих типів - скалярного та обмеженого. Наприклад, цифри та символи латинського алфавіту: [1, 3, 5, 7, 9,] - множина непарних чисел; [`A', 'X'] - множина елементів типу char; [ ] - порожня множина. Опис множини: Type в 2-х розділах; var var - в 1-му розділі. Для опису використовують таку форму: <ім'я змінної множини> : SET OF <тип елементів> ; Приклад 1: Var M1 : SET OF `A' .. 'Z'; M2 : SET OF 1 .. 2; В опису можна вказувати не тільки границі значень, а також їх перелік: Приклад2: M3 : SET OF `A' , 'R' , 'C'; Для присвоювання імені множини змінних значень використовують конструкцію вида: <ім'я змінної множини> := <список>; Приклад3: M1 := [`A' , `B' , `K'] ; M2 := [2 , 3] ; тобто змінна М1 приймає значення множини із елементів `A','B','K', змінна M2 - із елементів 2 і 3. По суті конструктор є перетворювач змінних простого типу у тип множини. Над множинами виконують теоретико-множинні операції та операції відношень. Теоретико-множинні операції: 1) поєднання “+”; 2) перетин “*”; 3) різниця “-”. Операції відношень: належність елемента множині; рівність, нерівність; належність множини множині. Приклади: поєднання “+”; А+В А?В A := [`A' , `B']; B := [`A' , `K']; A := A+B {A = [`A' , `B' , `K']} перетин: “*” A*B ??B? A := [`A' , `B']; B := [`A' , `K']; S := A*B {S=[`A']} різниця - формується множина з елементів першої множини, які не входять в другу множину R := A-B {R=[`B']} A-B (A/B) Пріоритет виконання операцій: ( ) * + належність елемента множині - призначається службовим словом IN: <значення> in <множина> результат: TRUE - значення входить до множини; FALSE - не входить. Приклад: 2 in [1 … 10, 12] {TRUE} 5 in [1, 2 ,7, 10] {FALSE} Цю операцію використовують для спрощення перевірок.ї Наприклад: if (ch = `a') or (ch = `b') or (ch = `k') or (ch = `y') then S , або інакше if ch in [`a','b','x','y'] then S перевірка на рівність, нерівність: “=” - рівність 2-х множин; “<>” - нерівність 2-х множин; належність множин: “<=” - перевірка належності множини лівого операнда правому; “=>” - перевірка належності множини правого операнда лівому; результат операції є : TRUE або FALSE. Приклади: Нехай задані множини M : set of 1 .. 10; L : set of `A' .. `D'; і виконані оператори присвоювання M := [2, 3, 4, 6]; L := [`A', `B']; тоді 3 in M {true} [2, 4] <= M{true} [ ] = L{false} [`A'] <> L{true} `E' in L{false} ([4] <= M) and (L =B) {false} B in (M + [7, 8]){false} Особливість введення та виведення множини Ввести та вивести множини за допомогою операторів read та write не можливо. Тому існують спеціальні прийоми вводу і виводу окремих елементів множини. Послідовне введення елементів множини. Можна виконати за допомогою циклічного оператора з перед умовою. Для фіксації кінця вводу елементи порівнюються із втраченою константою. Коли вони співпадають, ввід закінчується. Внутрішнім оператором циклу є конструктор, який формує множину. Нехай ознакою закінченням буде крапка `.'. MN := [ ]; {конструктор порожня множина} M := ` `; {можна присвоювати будь-який символ} While M <> ` . ` do Begin Writeln (“ввести елемент множини”); Read (M); MN := MN + [M]; End. вивід елементів множини можна виконувати шляхом перевірки наявності елемента в множині і його виводу, якщо він міститься в множині. Нехай елемента множини ZZ : set of 1 .. 30; Потрібно вивести на екран, тоді фрагмент циклічного перебору має вигляд: For i := 1 to 30 do If i in ZZ then Writeln ( i ); 5. Загальні відомості про процедури та функції В практиці програмування часто зустрічаються випадки, коли при виконанні програми треба проводити однакові обчислення при різних початкових даних. Для виключення повторень і спрощення програми ці обчислення можна виділити в самостійну частину програми, яка може використовуватись багаторазово. Така автономна частка програми (яка реалізує визначений алгоритм і припускає звертання до неї із різних часток загальної програми) називається підпрограмою. Розміщення підпрограм у програмі схоже з ієрархічним принципом побудови файлової системи. Позитивні сторони використання підпрограм: реалізується метод структурного програмування (модульна побудова); економія пам'яті (яка виділяється для зберігання змінних підпрограми тільки під час роботи підпрограми); імена змінних в основній програмі і підпрограми незалежні (потр. змінна А програми і підпрограми можуть мати різні фізичні значення); самостійний характер підпрограм дозволяє їм створення різними користувачами, що прискорює процес програмування. В мові Паскаль виділяють два видм підпрограм: процедура (PROCEDURE); функція (FUNCTION). Принципи побудови Паскаль програми, процедури і функції ідентичні і відрізняються тільки заголовками. Форми заголовків: Program <ім'я> (список параметрів) Procedure <ім'я> (список параметрів) Function <ім'я> (список параметрів) Блоки можуть бути не доложеними або вкладенеми один в одного. Відповідно вони носять назву зовнішнього або внутрішнього (рис.1). Розглянемо принцип блочної побудови програми на рис.2. Рис. 2. Із рис.2 видно, що процедури і функції розміщуються в останньому розділі блоку опису програми. Таких процедур і функцій може бути декілька і розміщуються вони в довільному порядку. В свою чергу, в їх розділах опису можна розміщувати процедури і функції 2-го рівня і т.д.. Наприкінці процедури і функції після end стоїть “ ; ”. В зв'язку з тим, що кожна процедура або функція може містити свій розділ опису, виникає так звана проблема локалізації імен змінних. Змінні і константи можна описувати у зовнішніх або внутрішніх блоках. Тому виникає два поняття змінних і констант: локальні і глобальні. Локальні - існують у рамках того блока, де вони описані. Тобто за межами даного блока їх використовувати не можливо.
Страницы: 1, 2, 3
|