Реферат: Програмування Структури перехід та вибір варіанту типи символів та перелічувані

Реферат з інформатики

Програмування: Структури перехід та вибір варіанту, типи символів та перелічувані.

1


. Мітки та переходи

У мові Паскаль будь-який оператор і кінець складеного оператора (слово end) можна відмітити, тобтоідентифікувати, додати йому індивідуальне ім'я. Це ім'я називається міткою. У авторській версії мови міткамимогли бути цілі сталі від 1 до 9999, у мові Борланд-Паскаль до них додано ідентифікатори. Мітка записується передоператором або словом end через двокрапку, наприклад,

1: money := 21;

mmm: money:=0;

finita: end.

Мітки, використовувані в тілі програми або підпрограми, повинні бути означені в її ж блоці. Означення мітокмає вигляд:

label список-міток-через-кому ;

наприклад , label 1, mmm, finita ;.

Мітка, означена в блоці, повинна відмічати рівно один оператор у тілі цього блоку.

Мітки використовуються в операторах переходу, що мають вигляд

goto мітка

наприклад,

goto 1; if x>1000 then goto mmm.

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

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

Якщо це не кінець тіла циклу і не кінець програми, то буде виконуватися наступний оператор.

Якщо відзначений кінець програми, то її виконання завершується.

Якщо відзначений кінець тіла циклу, то виконуються дії, які слідують за виконанням тіла (перевірка умовипродовження while-циклу або неявна зміна параметра for-циклу).

Оператор переходу й відповідний відмічений оператор повинні бути записаними в тілі блоку (програми абопідпрограми), де цю мітку означено. Іншими словами,

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

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

на кінець підпрограми;

зсередини циклу на його кінець;

зсередини циклу на наступний за циклом оператор.

У Турбо Паскаль для указання таких переходів є спеціальні оператори, відповідно, exit, continue і break, тобто«вийти» (з підпрограми), «продовжувати» і «перервати» (виконання циклу). Розумно використовуючи ціоператори, можна обійтися без міток і goto. Насправді ці три оператори – виклики процедур. Їх імена не єслужбовими словами виділяти їхнім .

2. Тип символів

Розглянемо останній з базових типів – тип символів. Множина символів, представних у сучасномукомп'ютері, як правило, складається з 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<b? ord(a)<ord(b).

Очевидно, наприклад, що ' ' < '_' < '0' < '1' < … < '9' < 'A' < 'B' <… < 'Z' < 'a' < 'b' < … < 'z'.

До символів застосовна операція катенації, або дописування, що позначається знайомим знаком "+". Їїрезультатом є не символ, а послідовність із двох символів, або рядок. Наприклад, '1'+'2' є послідовністьсимволів, яку можна задати літералом '12'.

Множина символів і операції, означені для них, утворюють тип символів, іменований char. Змінні цього типуназиваються символьними.

Задачі

1). Указати різницю між 0 і '0', A і 'A', — і '-'.

2)Обчислити значення виразу:

а) chr(ord('0')+9); б) chr(ord('A')+1); в) chr(ord('A')+25);

г) chr(ord('0')-16); д) 'Z'>'a'; е) ord('9')-ord('0').

3)Написати вираз, що задає перевірку, чи є значення символьної змінної ch:

а) цифрою від '0' до '9';;

б) латинською буквою.

4)Написати вираз, що задає обчислення:

а) цілого числа від 0 до 9 за значенням символьної змінної ch від '0' до '9';

б) символу від '0' до '9' за цілим значенням змінної dg від 0 до 9.

5)Написати програму друкування таблиці символів та їх номерів, починаючи з символу ' ' (пропуск), номер якого 32.

3… Перелічувані типи

Елементи кожного з типів 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'.

4. Означення власних перелічуваних типів

Мова Паскаль має засоби означення власних типів, необхідних у створенні реальних програм.Носій типу, тобто множина його елементів, задається в означенні імені типу. Загальний вигляд означеннятакий:

type ім'я = вираз, що описує елементи множини;

Службове слово type – це англійське «тип». З виразами, що задають множини елементів, ми будемо знайомитисяпоступово.

Найпростіший вираз – це ім'я типу, уже означене вище або ім'я стандартного типу. Наприклад, означення

type int = integer;

задаєновеіменуваннятипу integer. Після цього означення скрізь замість довгого імені integer можна писати коротке іnt.

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

Мова Паскаль дозволяє програмісту означати свої власні перелічувані типи. Вони називаютьсятипами-переліками та типами-діапазонами. Переліки наочно подають множини таких значень, що природнопозначаються словами. Наприклад, сигнали світлофора або дні тижня.

Множину днів тижня, позначену {Пн, Вт, Ср, Чт, Пт, Сб, Нд} у мові Паскаль можна задати, означившитип-перелік з ім'ям, наприклад, 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<yellow, Mon<Sun.

Вираз із сталими перелічуваних типів можна присвоювати однотипним із ними змінним.

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

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

стала1… стала2,

де стала1 <= стала2. Наприклад, ми можемо означити типи

type hundred=0..99; chesslet='A'..'H'; Workd=Mon..Fri

абозмінні var stop: red..yellow; column: chesslet тощо.

Для діапазону означено ті самі операції, що для його базового типу.

5… Оператор вибору варіантів

Розробимо програму «найпростіший калькулятор». Будемо використовувати змінну signop іззначеннями 1, 2, 3 або 4, що познає знаки операцій відповідно "+", "-", "*", "/". Її значення, отримане врезультаті читання, порівнюємо з 1, 2, 3, 4 та виконуємо відповідні їм дії:

if signop=1 then first:=first+second else

if signop=2 then first:=first-second else

if signop=3 then first:=first*second else

{signop=4}

first:=first/second;

Цейоператорзадаєвибірпотрібногооператоразтих, якізаписанопісляслів then, залежновідзначеннязмінноїsignop. Такий вибір у мові Паскаль можна задати інакше, використавши оператор вибору варіантів, абоcase-оператор (case – англійське «випадок»). У даній програмі він має вигляд:

case signop of

1: first:=first+second;

2: first:=first-second;

3: first:=first*second;

4: first:=first/second

end;

Виразпісляслова case (тутцеім'я signop) називаєтьсяселекторомваріантів. Його значення послідовнопорівнюється з числами, що «відмічають» оператори-варіанти. Як тільки значення селектора співпаде з числом, будевиконано відповідний оператор, і все закінчиться. Якщо ж значення селектора відрізняється від усіх чисел-відміток

варіантів, то жодний із варіантів не виконується.

Селектором може бути довільний вираз будь-якого перелічуваного типу. Варіант може бути відмічений списком ізкількох сталих відповідного типу; вони записуються через кому. Наприклад, нехай робочий час у робочі дні 8годин, а у вихідні – 0. За дії означення типу Weekd ми можемо запам'ятати в змінній wt робочий час:

var dd: Weekd; wt: integer;

case dd of

Mon, Tue, Wed,Thu, Fri: wt:=8;

Sat, Sun: wt := 0

end.

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

У мові Бор ланд-Паскаль у списках, що відзначають варіанти, можна записувати не тільки сталі, але й діапазони.

Наприклад, останній оператор можна переписати так:

case dd of

Mon… Thu, Fri: wt:=8;

Sat, Sun: wt:=0

end.

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

case dd ofMon… Fri: wt:=8;

Sun: wt:=0

else wt:=0

end.

Задачі

1)Переписати «найпростіший калькулятор із використанням case-оператора і читанням знаків операцій увигляді символів.

2)У давньояпонському календарі був прийнятий 60-річний цикл із п'яти 12-річних підциклів, послідовно позначенихкольорами – зеленим, червоним, жовтим, білим та чорним. У кожному підциклi послідовні роки мали назви тварин: пацюка,

корови, тигра, зайця, дракона, змії, коня, вівці, мавпи, курки, собаки та свині. 4-й рік нової ери – рік зеленого пацюка – бувпочатком чергового циклу.

Написати програму читання року нової ери та друкування його назви за давньояпонським календарем.

еще рефераты
Еще работы по астрономии