WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → ПАСКАЛЬ: тип символів та інші перелічувані - Реферат

ПАСКАЛЬ: тип символів та інші перелічувані - Реферат

ПАСКАЛЬ: ТИП СИМВОЛІВ ТА ІНШІ ПЕРЕЛІЧУВАНІ1. Тип символів
Нарешті ми розглянемо останній з базових типів - тип символів. Множина символів, представних у сучасному комп'ютері, як правило, складається з 256 елементів.
У мові Паскаль символ позначається символьною сталою, що є символом в апострофах: 'A', '1', '.' тощо. Сам символ "апостроф" задається символьною сталою ''''.
Символьна стала - це не символ, а його позначення в мові Паскаль.
Не всі символи позначаються сталими мови Паскаль, але будь-який символ можна задати за допомогою виклику функції chr. Символам у комп'ютері ставляться у відповідність номери від 0 до 255. Якщо i - цілий вираз із значенням від 0 до 255, то вираз вигляду chr(i) задає символ із номером, що є значенням i. Відповідність символів та номерів від 0 до 127 зафіксовано в Американському стандартному коді для обміну інформацією (ASCII). Наприклад, chr(48) позначає те ж саме, що й стала '0', chr(48+1) - то ж саме, що '1', chr(65) є синонімом сталої 'A', chr(97) - сталої 'a'.
Цілий номер символу породжується викликом функції "порядковий номер", тобто виразом вигляду ord(c), де значенням виразу c є символ. Наприклад, ord('0')=48, ord('A')=65, ord('a')=97. За своїм означенням, функції chr і ord взаємно обернені, тобто chr(ord(c))=c за будь-якого символу c, і ord(chr(n))=n за будь-якого n=0, 1, … , 255.
Крім функції ord, для символів означені порівняння, причому
aЗ таблиці у додатку 2 очевидно, наприклад, що ' ' < '_' < '0' < '1' < … < '9' < 'A' < 'B' < ... < 'Z' < 'a' < 'b' < … 'a'; е) ord('9')-ord('0').
3. Написати вираз, що задає перевірку, чи є значення символьної змінної ch:
а) цифрою від '0' до '9'; б) малою латинською буквою;
в) латинською буквою (великою чи малою).
4.* Написати вираз, що задає обчислення:
а) цілого числа від 0 до 9 за значенням символьної змінної ch від '0' до '9';
б) символу від '0' до '9' за цілим значенням змінної dg від 0 до 9.
5.* У шістнадцятковій системі числення літерами 'A', 'B', … , 'F' позначають числа, що в десятковій системі зображаються відповідно як 10, 11, … , 15. Написати оператор, що задає обчислення:
а) цілого числа від 0 до 15 за значенням символьної змінної ch, яким може бути цифра від '0' до '9' або буква від 'A' до 'F';
б) символу від '0' до '9' або від 'A' до 'F' за цілим значенням змінної dg від 0 до 15.
6. Написати програму друкування таблиці символів та їх номерів, починаючи з символу ' ' (пропуск), номер якого 32.
2. Перелічувані типи
Елементи кожного з типів Boolean, char і integer упорядковані відповідно до операції порівняння <. У цьому порядку їх можна взаємно однозначно зіставити натуральним числам 0, 1, … (перелічити їх). За будь-яким натуральним числом можна указати наступне за ним і попереднє перед ним (крім числа 0). Так само за будь-яким елементом, крім найбільшого, цих типів можна назвати наступний за ним і за будь-яким елементом, крім найменшого, - попередній перед ним. Наприклад, наступним за false є true, наступним за chr(0) - chr(1), за chr(254) - chr(255).
Елементи типу real теж упорядковані, але поставити їм у відповідність натуральні 0, 1, … неможливо, як і за дійсним числом указати наступне за ним. Отже, всім базовим типам, окрім типу real, притаманно те, що для них означено операції "наступний", "попередній" та "порядковий номер".
У мові Паскаль перелічуваним називається тип, для якого означено операції SUCC (наступний), PRED (попередній) і ORD (порядковий номер елемента), а також порівняння =, , , =.
Типи boolean, char і integer, на відміну від типу real, є перелічуваними. Операції succ, pred, ord записуються у вигляді викликів функцій: вирази pred(1), succ('a') і ord(true) мають значення відповідно 0, 'b' і 1.
Всі чотири базових типи називаються скалярними, тому що значення цих типів не складені з частин, які можна було б окремо ідентифікувати. У наступному підрозділі ми розглянемо спосіб означення власних скалярних типів. Але всі вони будуть перелічуваними.
У мові Турбо Паскаль для всіх перелічуваних типів означено операції, аналогічні succ і pred. Вони застосовуються до змінних перелічуваних типів у вигляді викликів процедур INC і DEC. Виклик inc(z) рівносильний оператору z:=succ(z), dec(z) - оператору z:=pred(z). У виклику може бути другий аргумент - цілочисловий вираз. Наприклад, виклик inc(z, 2) задає збільшення z на дві "одиниці" того типу, до якого належить z. Якщо змінна z типу char і має значення 'A', то в результаті виконання inc(z, 2) її значенням буде 'C'. Значення виразу може бути й від'ємним - тоді z зменшиться. Аналогічно за виконання dec(z, 3) значення z зменшується у його типі, наприклад, від 3 до 0 або від 'D' до 'A'.
3. Означення власних перелічуваних типів
Мова Паскаль має засоби означення власних типів, необхідних у створенні реальних програм.
Носій типу, тобто множина його елементів, задається в означенні імені типу. Загальний вигляд означення такий:
type ім'я = вираз, що описує елементи множини;
Службове слово type - це англійське "тип". З виразами, що задають множини елементів, ми будемо знайомитися поступово.
Найпростіший вираз - це ім'я типу, уже означене вище або ім'я стандартного типу. Наприклад, означення
type int = integer;
задає нове іменування типу integer. Після цього означення скрізь замість довгого імені integer можна писати коротке int.
Вирази, що задають множини елементів, можна записувати як в означенні імені типу, так і на місці імені типу в означеннях змінних. Приклади наведемо трохи нижче.
Мова Паскаль дозволяє програмісту означати свої власні перелічувані типи. Вони називаються типами-переліками та типами-діапазонами. Переліки наочно подають множини таких значень, що природно позначаються словами. Наприклад, сигнали світлофора або дні тижня.
Множину днів тижня, позначену {Пн, Вт, Ср, Чт, Пт, Сб, Нд} у мові Паскаль можна задати, означивши тип-перелік з ім'ям, наприклад, Weekd:
type Weekd=(Mon, Tue, Wed, Thu, Fri, Sat, Sun).
Тут ужито скорочення від англійських слів Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday - понеділок, вівторок тощо до неділі.
Аналогічно сигнали світлофора можна задати, определив тип Lights:
type Lights=(red, yellow, green) {червоний, жовтий, зелений}
Як бачимо, перелік задається виразом вигляду
( список ідентифікаторів )
Ідентифікатори списку після цього означення виступають сталими відповідного типу. Сталі не можуть повторюватися в означеннях того самого блока. Наприклад, якщо разом із типом сигналів світлофора означити ще тип кольорів райдуги, то використовувати імена red, yellow, green не можна.
Порядок сталих у списку задає операції ord, pred і succ, означені для всякого переліку. Наприклад, ord(Mon)=0, ord(Tue)=1 тощо, ord(Sun)=6, succ(Mon)=Tue, pred(Sat)=Fri. У відповідності зі значеннями ord означено й порівняння, наприклад, redВираз із сталими перелічуваних типів можна присвоювати однотипним із ними змінним.
Сталі й змінні перелічуваних типів, на відміну від базових типів, не можна вказувати у викликах процедур виведення та введення.
Будь-який перелічуваний тип, стандартний або тип-перелік, означений вище в програмі, може виступати базовим для типу-діапазону. Він задається виразом вигляду
стала1..стала2,
де стала1 3 таких натуральних A і B, що 5A+2B=N, причому A+B мінімально.
12. У давньояпонському календарі був прийнятий 60-річний цикл із п'яти 12-річних підциклів, послідовно позначених кольорами - зеленим, червоним, жовтим, білим та чорним. У кожному підциклi послідовні роки мали назви тварин: пацюка, корови, тигра, зайця, дракона, змії, коня, вівці, мавпи, курки, собаки та свині. 4-й рік нової ери - рік зеленого пацюка - був початком чергового циклу.
Написати програму читання року нової ери та друкування його назви за давньояпонським календарем.
Loading...

 
 

Цікаве