- •Інформація та інформаційні процеси Поняття інформації.
- •Одиниці вимірювання інформації.
- •Подання інформації та типи комп'ютерів.
- •Способи пересилання інформації.
- •Будова комп'ютера
- •Пристрої введення-виведення інформації.
- •Процесор
- •Принципи функціонування комп'ютера Фізичні принципи
- •Програмний принцип
- •Поняття про середовища програмування
- •Загальна характеристика мови паскаль
- •Поняття інтегрованого середовища
- •Команда New
- •Команда Open
- •Основи алгоритмізації Алгоритми та їх властивості
- •Блок-схеми
- •Загальна характеристика Паскаль-програми
- •Структура Паскаль-програми
- •Елементи мови Паскаль
- •Прості типи даних
- •Стандартні типи даних
- •Дійсний тип
- •Логічний тип
- •Символьний тип
- •Конструйовані типи
- •Перелічуваний тип
- •Оператори надання значень змінним Оператор присвоєння
- •Уведення-виведення
- •Порядок виконання операцій
- •Складений оператор
- •Стиль запису програми
- •Структури керування
- •Структура послідовного виконання
- •Структура розгалуження
- •Умовний оператор
- •Оператор варіанта
- •Оператор безумовного переходу
- •Структура повторення
- •Цикл з параметром
- •Цикл з передумовою
- •Цикл з післяумовою
- •Ітераційні цикли
- •Обчислення суми знакозмінного ряду із заданою точністю
- •Процедури і функції
- •Процедури з параметрами. Параметри-значення
- •Одномірні масиви
- •Поняття масиву. Одномірний масив та його опис в програмі
- •Обчислення скалярного добутку двох векторів
- •Знаходження найбільшого (найменшого) значень серед елементів масиву
- •Обчислення суми та добутку елементів масиву
- •Перетворення масиву по заданому закону
- •Впорядкування одномірних масивів
- •Впорядкування шляхом вибору
- •Впорядкування обмінами
- •Впорядкування вставками
- •Зливання впорядкованих масивів
- •Двомірні масиви Поняття двомірного масиву та його опис у програмі
- •Ввід та вивід значень елементів двомірного масиву Ввід значень елементів двомірного масиву
- •Вивід значень елементів двомірного масиву a[m,n]
- •Рядковий тип (string)
- •Комбіновані типи Організація комбінованих типів у Паскалі
- •Оператор приєднання
- •Множинні типи Організація множин
- •Файлові типи Організація файлів
- •Підготовчі та завершальні операції
- •Операції уведення-виведення
- •Стандартні файли input і output
- •Модулі Модуль і його структура
- •Стандартні модулі
- •Наближене знаходження коренів рівнянь Дослідження рівняння. Відокремлення коренів
- •Метод поділу проміжку пополам
- •Метод хорд
- •Метод дотичних
- •Чисельне інтегрування
- •Квадратурні формули прямокутників
- •Загальні формули прямокутників
- •Квадратурна формула трапецій
- •Практичні оцінки точності квадратурних формул. Вибір кроку інтегрування
- •Список літератури
Символьний тип
Значенням змінної символьного типу є символ - елемент деякої скінченної та упорядкованої множини символів. Така множина є в кожній обчислювальній системі, оскільки вона потрібна для обміну інформацією з системою. На жаль, нема єдиної стандартної множини символів, різноманітні системи відрізняються як самими символами, так і порядковими номерами. Однак стандартом мови Паскаль передбачено такі властивості множин:
кожний символ має порядковий номер;
десяткові цифри впорядковані за зростанням і йдуть одна за одною;
букви впорядковані за алфавітом, їхні номери не обов'язково йдуть підряд.
Найчастіше застосовують множину символів ASCII (American Standard Code for Information Interchange).
У програмах символьні сталі, що мають значення, записують між одинарними лапками: 'а' '*' '”' (апостроф ставлять двічі).
Для відображення заданої множини символів на порядкові номери і навпаки є дві функції:
ord(C) - дає порядковий номер символу С в заданій упорядкованій множині символів;
chr(i) - дає символ з номером і в цій множині. Нехай С1 і С2 мають символьний тип
var
С1, С2: char;
Тоді якщо С1<>С2, то ord(C1)<>ord(C2).
Над символьними змінними можна виконувати операції порівняння, причому С1<С2 еквівалентне ord(C1)<ord(C2).
З останньої властивості випливає, що ord('1'), ord('2'), ..., ord('9') - зростаюча послідовність чисел, що йдуть підряд. Звичайно в множинах ord('0')<>0.
Обернена до ord функція chr має цілий аргумент, видає символьне значення і визначена тільки в діапазоні значень функції ord. Наприклад, нехай
var
і: integer;
тоді chr(i) буде визначене, якщо є символ sym такий, що ord(sym)=i. У цьому випадку chr(i)=sym. Зокрема, якщо
var
і: integer;
і відомо, що 0<cf<9, то відповідним символом буде chr(cf+ord('0')). Символи з вхідного файлу читають за допомогою стандартної процедури read (пропусками ігнорують, на відміну від уведення цілих і дійсних чисел):
var
sym: char;
. . .
read(sym);
Оператором процедури write(sym) записують символ у вихідний файл. Зокрема, оператор write(sym: р), де р - ширина поля, виведе пропуски в кількості p-1, і після того - символ sym;
Оператор write(' ': р) виведе пропуски в кількості р.
Конструйовані типи
У мові Паскаль тип даних можна задавати самостійно. Це дає змогу, з одного боку, складати наочну програму, а з іншого, - передавати компіляторові більше інформації про програму, за допомогою якої він ретельніше перевірить синтаксичні помилки і сформулює ефективнішу робочу програму.
Нові типи визначають у розділі визначення типів. Загальний вигляд цього розділу такий:
type <ім'я типу>=<визначення типу>;
Наприклад, за допомогою опису
type
cilyj=integer;
можна ввести новий тип cilyj, ідентичний типу integer.
Перелічуваний тип
Стандартні типи змінних, як відомо, мають значення, що є елементами з підмножини цілих, дійсних чисел, логічних значень (true або false) або множини символів обчислювальної системи (наприклад ASCII). Проте часто доводиться стикатися з поняттями, які можуть набувати специфічних значень, що не є елементами названих підмножин. Наприклад, поняття місяць (року) об'єднує часткові випадки з іменами "січень", "лютий", "березень",..., "грудень"; день тижня - це Пн, Вт, Ср,...,Сб, Нд. Для кожного з цих понять часткові випадки можна закодувати, наприклад, дні тижня - від 1 до 7, місяці року - від 1 до 12 тощо. Однак працювати з такими кодами незручно, оскільки треба постійно пам'ятати їхню відповідність конкретному поняттю. Наприклад, вираз b=9 не дає змоги зрозуміти, що порівнюється: ціле число, чи код місяця в році. Якщо це код місяця, то значно зручніше було б записати умову
b=September
Для того, щоб такий і подібні записи можна було використовувати, у Паскалі введено новий тип - перелічуваний. Це впорядкований набір ідентифікаторів, заданий шляхом їх перелічення. Тобто для визначення перелічуваного типу задають список значень, яких можуть набувати змінні цього типу. Загальний вигляд задання перелічуваного типу такий:
type <ім'я типу>=(<перелік можливих значень>)
Наприклад, задано тип:
type
odynycia=(dujm, fut, metr, myla);
var
masstab: odynycia.
Таким чином змінній masstab приписують тип odynycia, тобто ця змінна може мати одне із значень dujm, fut, metr, mylia. Обидва описи можна об'єднати в один, описавши тип під час опису змінних:
var
masstab: (metr, fut, dujm, mylia).
Однак у цьому разі цей же тип не можна надати ще якійсь одній або групі змінних. Тому визначення типу ліпше відділяти від опису змінної. Крім того, в деяких випадках треба зазначати тільки ім'я типу, а не його задання. А тут не буде імені типу.
Імена, перелічені в дужках, називають сталими іменами. Ще один приклад описання типів такий:
type
color=(black, white, red, orange, green, blue);
var
x, y, z: color.
Значення змінної не може належати більш ніж до одного типу. Наприклад, запис
type
robden=(pn, vt, sr, ct, pt, sb);
vychden=(sb, nd);
є неправильним.
Категорично заборонено різним іменам типів надавати однакові описи.
Зазначимо, що булів тип є фактично стандартним перелічуваним типом, його можна описати так:
type
boolean=(false, true);
Єдина операція, яку можна виконувати над змінними перелічуваного типу - порівняння. Результат одержують булів. Зрозуміло, що обидві компоненти порівняння мають однаковий тип. Упорядкованість у перелічуваних типах визначена послідовністю, в якій значення перелічені під час визначення типу. Запишемо умовно
type
T=(W1,W2 Wn);
тоді Wi<>Wj, якщо i<>j - ознака відмінності, Wi<Wj, якщо i<j, -ознака впорядкованості.
Для визначених типів вираз white<black буде false; true>false – true;
Упорядкованість змінних перелічуваного типу дає змогу виконувати з ними функції pred і succ:
succ(blue)=white.
Перший елемент списку не має попереднього, а останній – наступного значення, тобто pred(red) і succ(green) є невизначені.
Функція ord теж має аргументом змінну перелічуваного типу і видає ціле число, що є порядковим номером значення змінної у списку визначення. Причому перше значення у цьому списку має порядковий номер нуль, друге - 1 і т.д. Тобто
ord(pn)=0; ord(sr)=2; ord(black)=1.
Щодо процедур уведення і виведення, то, на жаль, вводити і виводити на зовнішні пристрої значення перелічуваних типів не дозволено.
Діапазонний тип
Часто в програмі трапляються змінні, для яких наперед відомо, з якого інтервалу вони можуть набувати значення. Наприклад, нехай d – поточна дата (число деякого місяця). Зрозуміло, що d може набувати цілочислового значення з інтервалу [1, 31], тобто її можна віднести до типу integer. Однак може статися, що в програмі цій змінній буде присвоєне значення, що виходить за межі заданого інтервалу. Щоб контролювати ситуацію й уникати таких помилок, у мові Паскаль введено діапазонний тип, що передбачає визначення діапазону значень іншого попередньо заданого типу, який є базовим. Базовими можуть бути типи цілий, символьний і перелічуваний, однак не дійсний. Загальний вигляд описання діапазону такий:
<стала>..<стала>
Наведемо приклади:
type
index=1..20 {діапазон типу integer}
letter='a'..'z' {діапазон типу char}
тоді змінні опишемо так:
var
і, j: index;
sym: letter;
Як і для перелічуваного типу, опис змінних можна сумістити з описом типу:
var
i,j: 1..20;
sym: 'a'..'z';
Однак ліпше їх розділяти.
Усі операції, які виконують зі змінними базового типу, можна застосовувати до відповідного діапазону:
j+i*2
rd<dn
pred(sym)<>'d'
Функції базового типу можна виконувати з діапазоном. Значення функції необов'язково належатиме до діапазону. Наприклад: sqr(i) не можуть належати до діапазону index (якщо, звичайно, це значення не присвоєно змінній типу index, наприклад j).
Застосування діапазонного типу дає змогу поліпшити наочність програми, а також передає інформацію компіляторові для перевірки правильності програми, тобто перевірки діапазону значень змінних.
