- •Vіі. Завдання для самостійної роботи
- •Тема 1. Основи інформатики та програмного забезпечення (6 год)
- •Функції природної мови
- •Властивості природної мови
- •Тема 2. Апаратне забезпечення пк (4 год)
- •Тема 3-4. Програмне забезпеченя пк (8 год)
- •Інтерфейс командного рядка
- •Переваги та недоліки
- •Тема 5. Робота з офісними пакетами (8 год)
- •Математичні основи векторної графіки
- •Переваги векторної графіки:
- •Користувачами векторних редакторів можуть бути:
- •Найпопулярнішими прикладними програмами є продукти фірм:
- •Фрактальна графіка
- •Растрова графіка
- •Програми растрової графіки можуть використовувати:
- •Переваги растрової графіки:
- •Недоліки растрової графіки:
- •Тривимірна графіка
- •Області застосування тривимірної графіки
- •Тема 6. Основи комп’ютерних мереж (6 год)
- •Класифікація мов програмування
- •Способи реалізації мов
- •Синтаксис і мовні конструкції
- •Hello world
- •Покажчики
- •Процедурний тип
- •Оператори управління виконанням програми
- •Процедури і функції
- •Структура
Синтаксис і мовні конструкції
Паскаль, в його первісному вигляді, представляє собою чисто процедурний мову і включає в себе безліч алголоподобних структур і конструкцій з зарезервованими словами на зразок if, then, else, while, for, і т. д. Проте, Паскаль також містить велику кількість можливостей для структурування інформації та абстракцій, які відсутні в початковому Алгол-60, такі як визначення типів, записи, покажчики, перерахування, і безлічі. Ці конструкції були частково успадковані або інспіровані від мов Симула -67, Алгол-68, створеного Никлаусом Віртом AlgolW та запропоновано Хоаром.
У сучасних діалектах (Free Pascal) доступні такі операції як перевантаження операторів і функцій.
Hello world
Програми на Паскалі починаються з ключового слова program і наступного за ним ім'я програм з крапкою з комою (в деяких діалектах є необов'язковим), за ім'ям може в дужках слідувати список зовнішніх файлових дескрипторів в якості параметрів, за ним слід тіло програми, що складається із секцій опису змінних, типів і констант , оголошень процедур і функцій і наступного за ними блоку операторів, що є точкою входу в програму. У мові Паскаль блок обмежується ключовими словами begin і end. Оператори поділяються крапкою з комою, після тіла поміщається точка, що служить ознакою кінця програми. Літери в Паскалі не має значення.
Таким чином, найпростіша програма на Паскалі буде виглядати наступним чином:
program p; begin end .
Програма не виконує ніяких дій і містить порожній блок операторів.
Приклад програми, що виводить рядок "Hello, World!":
program HelloWorld ( output ) ; begin writeln ( 'Hello, World!' ) {Оператор виведення рядка} end .
В Pascal над цілими типами (byte, shortint, word, integer, longint і їх діапазони) припустимі побітові операції. Логічні операції над бітами: Над битами двох цілих операндів можна виконувати раніше розглянуті логічні операції: not, and, or, xor. Відмінність між побітовим і логічними операціями полягає в тому, що побітові (порозрядне) операції виконуються над окремими бітами операндів, а не над їх значенням в десятковому (звичайно) поданні.
Виділяється поняття порядкових типів даних (ordinal), до них відносяться цілі типи (знакові і беззнакові), логічний ( boolean), символьний ( char), Перечіслімий типи і типи-діапазони.
Порядкові типи задаються цілим числом (кодом), яку можна отримати за допомогою функції ord. Всі операції, що виконуються над порядковими типами, виконуються з їх кодами.
Діапазони містять підмножина значень інших порядкових типів:
var x : 1 .. 10 ; Y : 'A' .. 'Z' ; Z : pear .. orange ;
Для порядкових типів визначені операції inc, dec, succ, pred, ord, операції порівняння ( = > < => <= <>), їх можна використовувати в операторах case, for (як лічильник циклу), як кордони масивів, для завдання елементів множин і типів-діапазонів.
У Паскалі, на відміну від Сі-подібних мов, з типами boolean і char арифметичні цілочисельні операції не визначені.
На відміну від багатьох поширених мов, Паскаль підтримує спеціальний тип даних безліч:
var set1 : set of 1 .. 10 ; Set2 : set of 'A' .. 'Z' ; Set3 : set of pear .. orange ;
Безліч - фундаментальне поняття в сучасній математиці, яке може бути використане в багатьох алгоритмах.
В паскалі тип множина може містити тільки однотипні елементи порядкового типу. Ця особливість широко використовується і звичайно швидше еквівалентної конструкції у мові, що не підтримує множини. Наприклад, для більшості компіляторів Паскаля:
if i in [ 5 .. 10 ] then {Перевірка на приналежність елемента множині} ...
обробиться швидше, ніж
if ( i> 4 ) and ( i < 11 ) then {Перевірка логічними умовами} ...
Для завдання значення безлічі використовується список елементів множини, відокремлених комами і ув'язнений в квадратні дужки (як уже було показано вище):
var {Секція оголошення змінних} d : set of char ; begin {Початок блоку} d : = [ 'A' , 'B' ] ; ...
У Паскалі Йенсен і Вірта рядка представлялися як упаковані масиви символів, отже, вони мали фіксовану довжину і зазвичай доповнювалися до цієї довжини пробілами.
У сучасному Паскалі [11] для роботи з рядками використовується вбудований тип string, що підтримує операції конкатенації ( +) та порівняння ( > < = <> >= <=). Рядки порівнюються в лексикографічному порядку. Наприклад, рядки вважаються рівними якщо вони мають однакову довжину і коди всіх символів з однаковими індексами збігаються.
Тип string [n] або просто string в діалектах мови 1970-1990-х років визначався у вигляді масиву символів array [0..n] of char (n за замовчуванням брало значення 80 в UCSD Pascal і 255 в Turbo / Borland Pascal), код нульового символу при такому поданні служить для завдання довжини рядка, відповідно рядок могла мати максимальний розмір 255 символів. За умовчанням в Delphi і FreePascal як String використовується тип AnsiString, пам'ять під який виділяється і звільняється компілятором динамічно, а максимальний розмір рядка в поточних реалізаціях складає 2 гігабайти. Крім того, в Delphi і Free Pascal як string може використовуватися тип WideString, де застосовується 16-бітове представлення символів в кодуванні UCS-2, при цьому кошти перетворення з однобайтових рядків у багатобайтові і назад в стандартній бібліотеці мови відсутні.
Нові типи можуть бути визначені з існуючих:
type {Секція оголошення типів} x = Integer ; Y = x; ...
Більше того, з примітивних типів можуть бути сконструйовані складові:
type {Секція оголошення типів} a = Array [ 1 .. 10 ] of Integer ; {Визначення масиву} b = record {Визначення запису} x : Integer ; Y : Char ; end ; C = File of a; {Визначення файлу}
Файлові типи в Паскалі діляться на типізовані, текстові та файли без типів.
Як показано в наведеному вище прикладі, типізовані файли в Паскалі - це послідовності однотипних елементів. Для кожного файлу існує змінна-вказівник на буфер, яка позначається f^. Процедури get (для читання) і put (для запису) переміщують покажчик до наступного елементу. Читання реалізовано так, що read(f, x) являє собою те ж, що і get(f); x:=f^. Відповідно, запис реалізована так, що write(f, x) являє собою те ж, що і f^ := x; put(f). Текстові файли text визначені як розширення типу file of char і крім стандартних операцій над типізований файлами (читання, запис символу), дозволяють здійснювати символьний введення-виведення в файл всіх типів даних аналогічно консольного вводу-виводу.
Файли без типів оголошуються як змінні типу file. З ними можна проводити операції побайтово нетипізовані вводу-виводу по кілька блоків байт зазначеної довжини через буфер, для цього є спеціальні процедури blockread і blockwrite (розширення UCSD).