Ілюстрований самовчитель Паскаль он-лайн
Он-лайн самовчитель Паскаль
Типи даних
Структура розглянутої програми має такий вигляд:
Слова Program, begin та end виділяють дві частини програми - розділ описів та розділ операторів. Така структура обов'язкова для будь-якої програми, що є наслідком жорсткої вимоги мови: будь-який нестандартний ідентифікатор, що використовується у операторах, що виконуються, повинен бути попередньо описаний в розділі описів. (Стандартні ідентифікатори пов'язані з попередньо оголошеними об'єктами і входять до стандартної бібліотеки Турбо Паскаля. Таким, наприклад, є ідентифікатор WriteLn. Стандартні ідентифікатори, якщо вони використовуються в програмі, не потрібно описувати).
Вимога попереднього опису ідентифікаторів видається надмірно суворою і робить мову менш вільною. Насправді у ньому проявляється тенденція розвитку мов програмування у бік підвищення надійності створюваних програм. Хто програмував на Фортрані або Бейсіку (у цих мовах не потрібен попередній опис ідентифікаторів), знає, як часом буває важко знайти у великій програмі помилково введений або пропущений символ в ідентифікаторі. Якщо, наприклад, усюди в програмі використовується змінна з ім'ям EPSILON, а в одному місці помилково написано EPSLION, то програма може благополучно відкомпілюватися і навіть давати майже правдоподібний результат для деяких наборів даних, але в якийсь момент почне дивуватися. Обов'язковий попередній опис ідентифікаторів у Турбо Паскалі захищає програми від таких помилок і підвищує їх надійність.
Описати ідентифікатор - це означає вказати тип пов'язаного з ним об'єкта програми (константи чи змінної). Поняття типу - одне зфундаментальних понять Турбо Паскаля У гл.4 докладно розглянуті різні типи; щоб пояснити описані нижче особливості мови і при цьому не надто забігати вперед, вкажемо, що тип визначає, по-перше, спосіб внутрішнього для комп'ютера уявлення об'єкта і, по-друге, дії, які дозволяється над ним виконувати.
У аналізованих далі у розділі програмах знадобляться такі типи даних:
- INTEGER - цілочисельні дані, у внутрішньому поданні займають 2 байти; діапазон можливих значень – від -32768 до +32767; дані надаються точно;
- REAL - речові дані, що займають 6 байт; діапазон можливих значень модуля – від 2.9Е-39 до 1.7Е+38; точність подання даних – 11. 12 значущих цифр;
- CHAR – символ, займає 1 байт;
- STRING - рядок символів, що займає МАХ+1 байт, де МАХ - максимальна кількість символів у рядку;
- BOOLEAN - логічний тип, що займає 1 байт і має два значення: FALSE (брехня) і TRUE (істина).
При аналізі цього фрагмента програми компілятор віднесе першу константу до типу INTEGER, другу – до типу REAL, третю – до CHAR, четверту – до STRING та останню – до BOOLEAN. Ознакою, що дозволяє віднести константу до REAL або INTEGER, є наявність або відсутність десяткової точки в її значенні. Зрозуміло, константи С2 і С4 ставляться до різних типів: С2 - REAL (у константі є десяткова точка), а С4 - до STRING (константа обрамлена апострофами). Константу СЗ компілятор буде вважати такою, що відноситься до типу CHAR: одиночний символ в апострофах відноситься до CHAR, в той час як кілька символів - до STRING.
На відміну від константи змінна називає об'єкт програми, який може змінювати своєзначення під час рахунку. При описі змінних за ідентифікатором ставляться двокрапка та ім'я типу. Декілька однотипних змінних можна об'єднувати в список, розділяючи їх комами. На початку розділу опису змінних має стояти зарезервоване слово VAR (VARiables – змінні). Наприклад:
sigma: Real; а, b, с, d: Char;
Як мовилося раніше, тип даних визначає довжину внутрішнього уявлення відповідних змінних. Зокрема, довжина внутрішнього уявлення змінних типу STRING (рядок символів) залежить від максимальної кількості символів, які можуть становити рядок. У наведеному вище прикладі змінна text l описана із зазначенням її максимальної довжини (15 символів), а в описі змінної text2 максимальна довжина не вказана і компілятор встановить для неї довжину гранично допустиму в Турбо Паскалі - 255 символів.
Розглянемо ще одну нескладну програму (Приклад 2.2). Її призначення: ввести з клавіатури два цілі числа, знайти результат поділу першого числа на друге і вивести отриманий результат на екран.
і виводить приватне від поділу 1-го на 2-ге>
Коментарі з однотипними обмежувачами не можна вкладати одне одного, тобто. неприпустимі послідовності виду
Остання обставина прояснює здається дивною надмірність обмежувачів: якщо всюди в програмі будуть використовуватися обмежувачі одного типу, то для того, щоб тимчасово виключити з програми якийсь фрагмент тексту, достатньо укласти його в обмежувачі іншого типу.
працюють у такий спосіб. Спочатку оператор Write виводить рядок на екран і залишає курсор наприкінці щойно виведеного рядка тексту. Зауважимо, що оператор
у прикладі 1 після виведення тексту здійснював переклад рядка та встановлював курсор на початокнаступного рядка екрану. Саме в цій простій дії (переклад рядка) полягає єдина відмінність у роботі процедури WriteLn від процедури
Потім по оператору ReadLn викликається вбудована процедура введення даних і програма зупиняється в очікуванні введення. У цей момент необхідно набрати на клавіатурі потрібне число і натиснутиEnter. Відразу після цього програма продовжить роботу: проаналізує введене число та перейде до введення наступного числа чи обчислення результату. Таким чином, сигналом закінчення підготовки чергового числа є натискання клавішіEnter, до цього моменту можна прати будь-який помилково введений символ клавішеюBackspace.
Для обчислення відношення введених чисел використовується один із основних операторів Турбо Паскаля – оператор присвоювання. У його лівій частині вказується ім'я змінної, права частина є виразом того самого типу, що й змінна. Пара символів ": =", що зв'язує ліву та праву частини оператора присвоєння, означає "привласнити значення". Запам'ятаємо: в операторах присвоєння Турбо Паскаля завжди використовуються символи «: =», тоді як при описі констант один символ «=». З погляду синтаксису мови, два символи «: =» розглядаються як один спеціальний символ і обов'язково пишуться разом.
Оператор надання використовується практично у всіх мовах програмування. У деяких мовах, наприклад у Фортрані або Бейсику, символом присвоєння є знак рівності, проте новачка, що звикли до суворості математичних формул, може спантеличити типова форма запису фортран-оператора присвоєння, наприклад, така:
Варіант запису цього ж оператора на Турбо Паскалі:
у цьому сенсі видається більш логічним. Зрозуміло, навряд чи кому-небудь спаде на думку бачити рівняння там, де їх немає і не може бути. Звичайно ж, і в тому, і в іншому випадку реалізується те саме алгоритмічне дію: до вмісту X додається 1 і отриманий результат знову присвоюється змінної X. Зверніть увагу на оператор виведення результатів
У ньому як один із параметрів явно вказується константа типу рядок символів 'nl/n2 = '. Звичайно, константи (на відміну від змінних) зовсім не обов'язково описувати в розділі описів, тому що їх тип легко визначається компілятором за формою запису константи. З огляду на це можна було б записати програму з прикладу 1 гранично лаконічно:
begin WriteLn('Я програмую на Турбо Паскалі'); end.