Цей матеріал стане в нагоді на на перших уроках інформатики при поглибленому вивченні мови програмування та при підготовці учнів до олімпіади з інформатики.
1. Алфавіт. Алфавіт — скінченна множина символів, дозволених для використання. Алфавіт мови Паскаль містить:літери (букви) — великі й малі латинські A, B, … , Z, a, b, …, z, а також символ підкреслення _;десяткові цифри 0, 1, 2, …, 9;знаки арифметичних дій + - * /;знаки порівняння = > <;розділові знаки . , ; : ';дужки ( ) [ ] { };спеціальні символи ^ @ $ #.
1. Алфавіт. Також у програмуванні існує поняття складений символ. Це неподільна послідовність з двох символів, що має закладений у неї певний зміст. Перелічимо деякі з них:>=, <=, <> – знаки порівняння (більше дорівнює, менше дорівнює, не дорівнює);:= символ присвоєння (про нього буде мова пізніше);.. – діапазон (наприклад, позначення 1..10 означає всі цілі числа від 1 до 10 включно);// – рядковий коментар.
1. Алфавіт. З символів алфавіту утворюються «слова» мови – це послідовності символів, які розглядаються як неподільні й самі по собі мають деякий зміст. Деякі слова є певними складовими мови програмування, наприклад, program, const, var, begin, end, if, then та інші. Вони візуально виділяються в програмі (як правило, жирним шрифтом) і називаються зарезервованими, ключовими або службовими словами.Існують також стандартні слова, які мають певний зміст. Ці слова є назвами стандартних констант, типів даних або вбудованих підпрограм.
1. Алфавіт. Автор програми також може сам створювати та використовувати користувацькі слова, позначаючи за їх допомогою певні об’єкти програми (змінні, константи, підпрограми тощо). Імена об’єктам бажано давати таким чином, щоб було зрозуміло, які саме дані зберігає дана змінна, або яку функцію виконує підпрограма. Нариклад, count_pupil, Map, width_room тощо. Користувацькі слова (ідентифікатори) – це послідовність букв алфавіту й цифр, що починаються з букви, наприклад, A, x1, _1_2, jklmn. Великі й малі букви в іменах не різняться: Nam, n. AM, nam – це одне й те саме слово. Ідентифікатори можуть мати довільну довжину, але до уваги беруться лише перші 127 символів.
2. Поняття типу. Програми обробляють дані у вигляді чисел, символів та інших значень. Значення мають певне представлення в комп’ютері й до них застосовні деякі операції. За способом представлення та допустимими операціями значення (дані) поділяються на типи. Поняття типу даних є одним із фундаментальних у програмуванні. Тип даних – це множина значень (даних) разом із множиною операцій, застосовних до цих даних.
2. Поняття типу. Програми обробляють дані у вигляді чисел, символів та інших значень. Значення мають певне представлення в комп’ютері й до них застосовні деякі операції. За способом представлення та допустимими операціями значення (дані) поділяються на типи. Поняття типу даних є одним із фундаментальних у програмуванні. Тип даних – це множина значень (даних) разом із множиною операцій, застосовних до цих даних.
2. Поняття типу. Тип даних визначає:формат представлення даних у пам’яті комп’ютера;множину допустимих значень, які можуть приймати змінні або константи, що належать до цього типу;множину допустимих операцій, які можна застосовувати до величин цього типу. У мовах програмування використовуються числові, символьні та булеві значення. Вони розглядаються як цілісні елементи, що не мають окремих складових частин, тому називаються скалярними на відміну від структурованих, що складені з окремих компонентів. Типи скалярних даних називаються скалярними.
3. Типи цілих чисел. Ціла константа – це, як і в математиці, послідовність десяткових цифр, можливо, зі знаком «+» або «–» попереду: 0, +1024, –273 тощо. Для найбільшого цілого числа типу longint (integer) виділено ім’я maxint (maxlongint). Константа, що задана цим іменем, дорівнює значенню 2147483647. Найбільше за модулем від’ємне число типу longint (integer) можна задати виразом –maxint–1 (або –maxlongint–1).
3. Типи цілих чисел. Усі цілі типи мають однакові набори виконуваних операцій. Основні арифметичні операції з цілими числами (додавання, віднімання, множення, а також ділення) позначають відповідними знаками +, -, *, /. Крім того є дві операції – обчислення частки та остачі від ділення націло, які позначаються зарезервованими словами div та mod відповідно. Ці операції виконуються так само, як виконувалося ділення у початковій школі. Наприклад, 15 div 2 = 7, 15 mod 2 = 1 або 27 div 5 = 5, 27 mod 2 = 2. Зауважимо, що операції div та mod є такими, що за будь-яких значень a та b справджується рівність (a div b) * b+a mod b = a.
3. Типи цілих чисел (додатково)Існують також операції зсуву: ліворуч – shl та праворуч – shr (shift left та shift right – зсув ліворуч та зсув праворуч), які ми розглянемо докладніше. Щоб зрозуміти зміст цих операцій, згадаємо, що в пам’яті комп’ютера числа зберігаються у двійковому коді. Наприклад, число 13 в межах байту буде мати вигляд 00001101. Визначимо тепер чому буде дорівнювати результат операції 13 shl 2. У двійковому еквіваленті числа відбудеться зсув кожної цифри вліво на два розряди, тобто двійковий код 00001101 перетвориться на 00110100. Крайні праворуч цифри при цьому стають нульовими. Значення отриманого числа дорівнює:48, що вчетверо більше вхідного числа. Чи закономірний такий результат? Так.
3. Типи цілих чисел. УВАГА!Неналежне застосування операцій іноді може призводити (залежно від налаштування компілятора) до неправильних результатів. Наприклад, оскільки результат додавання, 255+1=256 не вміщується в типі byte, ви побачите замість числа 256 нуль. Це обов’язково потрібно враховувати при виборі типів для збереження даних, щоб не побачити результат типу: 200+100=44; 127+1=-128; 0-1=255 тощо. В операціях ділення /, div, mod дільник не може бути нулем, інакше програма закінчиться аварійно. Крім того, операція ділення «/», яка застосована навіть до цілих чисел, завжди результатом має дійсне (тобто не ціле) число. Усі операції представлено у таблиці разом із прикладами застосування та результатами.
3. Типи цілих чисел. Оскільки дійсні числа зберігаються в пам’яті комп’ютера не так, як цілі, це обов’язково потрібно враховувати при подальших обчисленнях. Операції порівняння чисел задають знаками =, <>, >, <, >=, <= («дорівнює», «не дорівнює», «більше», «менше», «більше або дорівнює», «менше або дорівнює»). Результатом цих операцій є значення «істина» або «хибність» булевого типу. Наприклад, 1=2 — false («хибність»), 1<>2 — true («істина»), 1>=1 — true тощо.
Булів тип має два логічних (булевих) значення «хибність» та «істина», які задано константами false (хибність) або true (істина). Цей тип має ім’я boolean на честь видатного англійця Джорджа Буля, засновника математичної логіки. До булевих значень застосовують логічні операції «і», «або», «не», які називають, відповідно, булевим множенням (кон’юнкцією), булевим додаванням (диз’юнкцією) та запереченням і позначають як and, or та not. Ще одна операція називається «виключне або» чи «додавання за модулем 2» і позначається словом xor.4. Булів тип
При цьому, як і для арифметичних операцій, існує порядок (так званий пріоритет) їх виконання. Найвищий пріоритет має унарна операція not, другий пріоритет – операція логічного множення (and) і, нарешті, третій пріоритет (однаковий) мають операції логічного додавання (or) та «виключне або» (xor). Для двох змінних логічного типу x,y:boolean, вираз x and y or not x буде обчислюватися таким чином:унарна операція not для змінної x;логічне множення and між змінними x та y;«виключне або» xor між результатами першої та другої операції.4. Булів тип
Існує два типи символів (літерні типи): char (символ ASCII таблиці) та widechar (символ UNICOD). Перший з них містить 256 значень, які представляються в одному байті, а другий – 65536, які займають два байти. Символам типу char взаємно однозначно відповідають числа від 0 до 255. Будь-яке символьне значення цього типу можна задати виразом chr(i), де i має значення від 0 до 255. Наприклад, chr(48) позначає те ж, що й символьна константа '0', chr(48+1) — те ж, що '1', chr(65) є синонімом великої латинської літери 'A', chr(97) — маленької латинської літери 'a'. Запис вигляду #i позначає те ж, що й chr(i); наприклад, #48 = chr(48). 4. Тип символів
Цілий номер символу повертається у результаті виклику функції «порядковий номер», тобто виразом 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 до 255. Для символів означено всі порівняння, причому символи упорядковано так само, як і відповідні їм коди. Зокрема, справджуються такі нерівності:' '<'_'<'0'<'1'< … <'9'<'A'<'B'< … <'Z'<'a'<'b'< … <'z'Єдиною дозволеною операцією над символами є операція конкатенації (дописування), що позначається знаком «+». Але її результатом є послідовність з двох символів, наприклад, '1'+'2' – це послідовність символів '12'. 5. Тип символів
Кожен елемент типу boolean, char або ціле число, окрім найбільшого в своєму типі (int64 чи uint64), має елемент, наступний за ним, і кожен, окрім найменшого, — попередній перед ним. Наприклад, наступним за false є true, за '0' — '1', за chr(254) — chr(255), а попереднім перед true є false. Окрім того, елементи цих типів можна пронумерувати послідовними цілими числами. У мові програмування перелічуваним називається тип, у якому означено операції succ (наступний), pred (попередній) і ord (порядковий номер). Перелічувані типи також називаються дискретними. Операції succ, pred, ord задають у вигляді викликів вбудованих функцій: вирази pred(1), succ('a') та ord(true) мають значення, відповідно, 0, 'b' та 1. Для знакових числових типів операцію ord означено так, що ord(i) = i, тобто ord(0) = 0, ord(-1) = -1.6. Поняття перелічуваного типу
Для представлення дійсних чисел використовують чотири типи: single, real (double), extended. Як видно з таблиці, тип extended має найбільший діапазон та найвищу точність представлення. У процесорі числа обробляються в представленні саме типу extended, і під час запису в регістри числа з інших типів перетворюються в цей.7. Типи дійсних чисел
До дійсних значень застосовуються ті ж арифметичні операції, що й до цілих, за винятком div, mod, shl та shr. Результатом усіх операцій завжди є дійсне число. Наприклад, 12/4=3.0. Треба знати та пам’ятати, що число ціле, наприклад, 3 та число дійсне 3.0 – це для комп’ютера абсолютно різні числа!7. Типи дійсних чисел
Порівняння дійсних чисел, як і цілих, має відповідний булів результат: результатом 1.0<=2.5 є значення true, 1.0=0.99 — значення false. Для дійсних типів означено так звані вбудовані математичні функції, деякі з яких було вказано вище. Дійсне значення повертається з виклику функцій, імена яких, відповідно, abs, cos, sin, sqr, sqrt. Усі ці функції застосовні й до чисел цілих типів, але лише функції abs та sqr повертають значення цілого типу для аргументів цілого типу. 7. Типи дійсних чисел
Значення аргументу у викликах функцій cos і sin виражає кількість радіан, а не градусів. Означено також функцію без параметра Pi (її значення є наближенням до числа з точністю до 14 знаків після крапки ). Наприклад, cos(Pi/2) = 0.0, sin(Pi/2) = 1.0. Зверніть увагу, що значення математичних функцій обчислюються наближено, і для деяких аргументів можуть відрізнятися від справжніх математичних. 7. Типи дійсних чисел
Розв’язуючи задачу, програміст обирає потрібні змінні для збереження вхідних, вихідних та проміжних значень. У Паскаль-програмі змінна задається оголошенням, яке вказує ім’я та тип змінної й має такий вигляд:var <ім’я змінної>:<ім’я типу>;Наприклад, var even:boolean;. Ключове слово var є скороченням англійського variable — змінна. 7. Типи дійсних чисел
8. Вирази. Застосування операцій до числових та інших значень, в результаті якого утворюється нове значення, у мовах програмування високого рівня задається за допомогою виразу. Найпростіші вирази – це константи та імена змінних базових типів. Складніший вираз може містити крім цього знаки операцій (унарних або бінарних) та виклики функцій. Обчислення виразу виконується з урахуванням так званих пріоритетів. Якщо поруч із позначенням операнда записано знаки двох операцій, то спочатку виконується старша з них (із вищим пріоритетом).
8. Вирази. Зауважимо, що вирази будь-якої складності потрібно записувати тільки в рядок, використовуючи знаки операцій, дужки та виклики відповідних функцій. Зверніть увагу на наступні правила оформлення виразів:знак множення «*» ставити обов’язково, інакше може вийти непорозуміння, наприклад, вираз ab може бути іменем змінної, а може добутком двох змінних a і b;усі дроби записуються в рядок, причому для уникнення непорозумінь бажано чисельник та знаменник брати у круглі дужки;аргументи всіх функцій обов’язково брати в дужки.