Смекни!
smekni.com

Паскаль лексика вирази семантика (стр. 4 из 4)

комп'ютер зупиняється й чекає, що на клавіатурі буде набрано сталу того ж типу, що й тип указаної змінної. У відповідь слід набрати якусь сталу на клавіатурі (вона відображається на екрані). Але нічого не відбудеться, якщо після цього не натиснути на клавішу "Enter". Тільки після "Enter" цю сталу, тобто послідовність символів, буде передано від клавіатури в комп'ютер, а він за цією сталою обчислить відповідне значення та присвоїть змінній.

Якщо натиснути "Enter", не набравши сталу, то комп'ютер продовжить своє чекання. Перед числовою або бульовою сталою можна набрати також довільне число пропусків.

Якщо замість сталої набрати щось інше, наприклад, сталу іншого типу, то виконання програми на цьому завершиться (аварійно), і на екрані з'являться образливі слова про те, що вхідні символи були неправильними. Наприклад, якщо при виконанні оператора readln(z), де ім'я z позначає цілу змінну, набрати 1024 і натиснути "Enter", то значенням z стане 1024, а якщо набрати z=1024, то програма аварийно завершиться, тому що ціла стала не може починатися символами "z=".

У "операторі" введення можна написати кілька імен змінних, відокремивши їх комами. При його виконанні треба набрати відповідну кількість сталих, відокремивши їх пропусками або натисканнями на клавішу "Enter" у довільній кількості. І поки всі сталі не будуть набрані, виконання такого "оператора" не закінчується.

Приклад. Нехай x : integer, y : boolean. При виконанні readln(x,y) слід набрати цілу сталу, потім додати хоча б один пропуск або натискання на "Enter", а потім натиснути на клавіші t, r, u, e або f, a, l, s, e, тобто набрати бульову сталу true або false. І не забути натиснути на "Enter" наприкінці.-

І ще одне зауваження з приводу використання readln. Практично перед кожним "оператором" читання з клавіатури не завадить написати "оператор" запису з запрошенням до введення значень і поясненням, яких саме типів і в якій кількості. Наприклад, якщо x1, x2 означено як цілі:

writeln('введіть два цілих числа');

readln(x1, x2).

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

Операторами readln задається читання не лише з клавіатури, але також і з інших зовнішніх носіїв, наприклад, файлів на диску. Але про це у розділі 13.

Задача

2.14. Написати програму читання двох чисел a й b та:

а)* друкування їх суми; б) друкування, чи вірно, що a<b

3.6. Ініціалізація змінних

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

varім'я : тип := вираззісталими;

наприклад, var bool : boolean := true; kb8 : integer := 1024*8;

Проте у системі Турбо Паскаль ініціалізація має інший вигляд. Досить дивний. Означення змінної починається словом const і замість знака присвоювання записується знак "=":

const bool : boolean = true; kb8 : integer = 1024*8;

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

const kb1=1024; kb8:integer=8*kb1;

але неможлива

const kb1:integer=1024; kb8:integer=8*kb1; {???}

3.7. Семантика програми

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

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

В операторах програми записуються вирази, що задають обчислення значень. При виконанні операторів ці значення записуються в ділянки пам'яті, поставлені у відповідність іменам змінних (присвоюються їм) або використовуються з іншою метою. З цим ми познайомимося в наступних розділах. Присвоювання значення змінній означає зміну її стану. Тим самим змінюється стан пам'яті процесу виконання програми. Отже, оператори присвоювання та інші задають зміну станів пам'яті.

Послідовність дій, заданих операторами та виразами у них, утворює процес виконання програми. У процесі розв'язання більшості реальних задач доводиться приймати рішення та продовжувати процес розв'язання одним із кількох різних можливих шляхів. В наступних розділах ми познайомимося з засобами, за допомогою яких програма задає не єдиний можливий процес її виконання, а деяку їх множину. Саме ця множина процесів виконання програми і є її семантикою. Так само семантикою алгоритму є множина процесів його виконання.