Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Синтаксис і мовні конструкціїСодержание книги Поиск на нашем сайте Паскаль, в його первісному вигляді, представляє собою чисто процедурний мову і включає в себе безліч алголоподобних структур і конструкцій з зарезервованими словами на зразок 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). Покажчики Паскаль підтримує використання покажчиків (типізовані ^тип і нетипізовані pointer): type a = ^ B; b = record x: Integer; Y: Char; Z: a; end; var pointer_to_b: a;Тут змінна pointer_to_b - покажчик на тип даних b, є записом. Тип типізованого покажчика може бути заданий перед оголошенням типу, на який він посилається. Цей виняток до правила, яке говорить, що будь-яка річ належна бути оголошена перед тим, як використовується. Введення цього винятку дозволило організовувати рекурентні визначення структур даних, у тому числі такі, як лінійні списки, стеки і черзі, включаючи покажчик на запис в описі цього запису (див. також: нульовий покажчик - nil). Для типізованого покажчика визначена операція разименованія (її синтаксис: указатель^). Щоб створити новий запис і присвоїти значення 10 і символ A полям a і b в ній, необхідні наступні оператори: new (pointer_to_b); {Виділення пам'яті вказівником} pointer_to_b ^. x: = 10; {Разименовиваніе покажчика та звернення до поля запису} pointer_to_b ^. y: = 'A'; Pointer_to_b ^. z: = nil;... dispose (pointer_to_b); {Звільнення пам'яті з-під покажчика}Для цілей звернення до полів записів і об'єктів можна також використовувати оператор with, як показано в прикладі: new (pointer_to_b); With pointer_to_b ^ do begin x: = 10; Y: = 'A'; Z: = nil end;... dispose (pointer_to_b);Процедурний тип В оригінальному мовою Паскаль Йенсен і Вірта процедурний тип використовувався тільки при описі формального параметра. Вже в TP існував повноправний процедурний тип. В оголошенні типу ставиться заголовок процедури або функції (без імені), узагальнено описує інтерфейс підпрограми. Значення цього типу містить покажчик на підпрограму з заголовком, відповідну описаному в оголошенні типу. За допомогою ідентифікатора змінної може відбуватися виклик відповідної процедури або функції. type myfunc = function: string; function func1: string; begin func1: = 'Func N 1' end; function func2: string; begin func2: = 'Func N 2' end; var fun: myfunc; begin fun: = @ Func1; writeln (fun) {Відбувається виклик функції func1} end.
|
||
|
Последнее изменение этой страницы: 2017-02-10; просмотров: 173; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.146 (0.007 с.) |