Велика бібліотека української літератури
» » Поняття про мови прогр-ння, їх класифікація по відношенню до ЕОМ

Поняття про мови прогр-ння, їх класифікація по відношенню до ЕОМ

Мовою в теорії програмування наз. сукупність символів і правил, що визначають способи об’єднання даних символів в мовній структурі для організації текстів програм. По степені залежності від електронно –обчислювальних машин мови програмування діляться на машинно-залежні та машинно-незалежні. До групи машинно-залежних відносяться машинні та машинно-орієнтовані. Машинно-орієнтовані в свою чергу поділяються на мнемо коди і автокоди. Машинно-незалежні діляться на процедурно-орієнтовані і проблемно-орієнтовані.
Розглянемо машинно-орієнтовані. Опис алгоритму на мнемокоді подібний до опису на машинній мові і містить буквені позначення для задання операцій і буквено-цифрові позначення для задання адресації. При трансляції в машинну програму один оператор мнемокоду заміняється еквівалентною машинною командою. Тому такі мови називаються мовами рівня 1 до 1-го. Автокоди - це мови рівня першого до багатьох, оскільки поряд з символічними конструкціями машиних команд використовуються мнемокоди або макрокоманди, виконання яких забезпечується декількома машинними командами.
Мова програмування
v v
Машинно-залежні Машинно-незалежні
v v v v
Машинні машинно- процедурно- проблемно-
орієнтовані орієнтовані орієнтовані
v v
мнемокоди автокоди
Група машинно-незалежних мов включає мови програмування, які не орієнтовані на використання на конкретних ЕОМ. Проблемно орієнтовані – це вузький клас мов. Які орієнтовані на реалізацію конкретних задач і використовується вузьким колом спеціалістів. Процедурно-орієнтовані не орієнтовані на архітектуру і принципи роботи конкретних ЕОМ і програми записані на таких мовах можуть бути реалізовані на будь-яких комп’ютерах, на яких можна встановити транслятори з даної мови. Такі мови ще наз. формальними і будуються за принципом створення будь-яких природних мов з урахуванням певної граматики. Тому як і будь які інші мови, вони складаються з 4 структурних елементів, а саме:
1.алфавіт мови; 2. слова; 3.вирази; 4.речення( оператори)
Для опису таких мов потрібно визначити символи алфавіту, сформулювати правила утворення слів та правила опису припустимих у мові виразів, перемістити всі типи і сформулювати правила побудови операторів. Такий опис містить синтаксичні визначення, сематичні пояснення та граматичні форми.
2.Синтаксис, семантика, грамматика та прагматика мови програмування. Форми Бекуса-Наура.
Для опису мов потрібно визначити символи алфавіту, сформулювати привила утворення слів та правила опису припустимих у мові виразів, перемістити всі типи і сформулювати правила побудови операторів. Такий опис містить синтаксичні визначення, семантичні пояснення та граматичні форми.
Синтаксис мови – це су-сть правил побудови допустимих конструкцій, створюваних засобами символів алфавіту.
Семантичні пояснення (семантика мови) – дозволяє надати кожній структурі певного змісту та визначити операції і порядок їх виконання. Відповідно семантика мови задається в казанням:
типу простих значень (наприк. чисел)
способу побудови складених значень із простих
операцій над простими і складеними значеннями
способи задання дій
Практичні форми описують класи операторів та зв’язків між ними.
Крім цих трьох понять говорять ще про прагматику, під якою розуміють методологію опису методів і прийомів, які дозволяють, виходячи із поставленої задачі будувати програми за певною методикою.
Основні синтаксичні конструкції мов програмування
Для задання таких конструкцій найбільш популярними є форми Бекуса-Наура. Основним призначенням таких даних форм є вказання, які саме послідовності символів являються програмами в даній мові програмування, з яких складових частин і яким способом будувати програми. Для позначення таких складових вводяться особливі символи які називаються мета змінними. Вони представляють собою слова чи групи слів, взятих в кутові дужки ([…]).
Задання таких конструкцій вимагає також перелік основних символів мови із яких в основному кінцевому результаті і складається програма.
3.Форми Бекуса-Наура, опис сталих, змінних та виразів.
Форма Бекуса-Наура – це рядок, який складається із метазмінної символа ::=, що за нею слідує і однієї чи декількох послідовностей, утворених із основних символів і мета змінних. Даний символ читається по визначенню є, або це є. Якщо послідовностей більше як одна, то вони розділяються між собою вертикальною рискою І, яка означає “або”. Кожна така форма задає одне або декілька правил утворення можливих значень метазмінної.
::=0I1I2I,…,I9I,…,
::=1I…
В лівій і правій частинах формули можуть стояти одні й ті самі найменування елементів. Крім цього визначення елемента через самого себе дозволяє утворювати форми, які називаються рекурсивними.
Числа аналогічно як логічні значення, літери і посилання відносяться до простих значень. Числові значення в основному діляться на цілі й дійсні і їх діапазон допустимих значень. Логічні значення можуть приймати істина або хибність і служать для того, щоб зафіксувати одне із двох допустимих варіантів чи одне із двох станів деякого об’єкту.
Посилання його значення – це адреси, через які відкривається доступ до деякого другого значення чи об’єкту. Крім позначень, з якими зв’язується конкретне значення мови програмування містять позначення значення яких наперед невідомі. Такі позначення називаються змінними, а в рівні змінних виступають ідентифікатори в ролі яких відображають прості змінні. Крім простих визначаються зміні з індексами. Для позначення останніх можуть використовуватись сталі, змінні чи вирази. Крім цього як правила задаються стандартні сталі такі як число р, число R.
Через форму Бекуса-Наура ідентифікатор можна записати так: ::=ІІ. Змінні з індексами, як правило використовуються для задання масивів, тобто для упорядкованої сукупності елементів, кожен із яких визначається через ім’я і індекс, а для повного задання вказується ще тип.
Під операцією у мові програмування називають дію за допомогою якої одержують певне значення, що називають результатом операції.
Вихідними даними для операції це є операнди (дані). Якщо в операції бере участь один операнд, то операція називається одноміснісноюю. Для того, щоб операнди і операції можна було об’єднувати вводять поняття виразу, які в залежності від операції і операндів можуть бути арифметичними і логічними. ::=+I-I*I/,…,
Тоді вводять простий арифметичний вираз, поділяючи операції на ранги:
::=;
::=;
::=ІI<…
4. Форми Бекуса-Наура, опис процедур, функцій та операторів.
Форма Бекуса-Наура – це рядок, який складається із метазмінної символа ::=, що за нею слідує і однієї чи декількох послідовностей, утворених із основних символів і мета змінних.
Даний символ читається по визначенню є, або це є. Якщо послідовностей більше як одна, то вони розділяються між собою вертикальною рискою І, яка означає “або”.
Оператори є основними структурними одиницями програми і кожна мова містить свій набір операндів, які ділять на біль широкому понятті на дві групи, а саме:
виконуючі,
невиконуючі.
Виконуючі – це ті, які пов’язані із перетворенням даних їх введенням, перевіркою умов, визначення чергового, що підлягають виконанню оператора тощо.
Невиконуючі – призначені для опису характеристик даних способів їх організації, класифікації програмних одиниць тощо. Як правило вирізняють три типи операторних конструкцій, зокрема:
- слідування (початок S1,S2,…,Sn кін.)
- вибір (якщо вик. то S1 інакше S2)
- повторення (поки Q виконується S).
В кожну з таких операторних конструкцій в свою чергу може бути входити інші конструкції або можуть бути оператором.
Кожен оператор має свій синтаксис. Наприклад ::=, де під розуміють змінну.
Процедури і функції.
Процедура – це утворений модуль, який складається із сукупності чи одного оператора, ідентифікатори яких визначають формальні параметри та описові частини.
При входження в процедуру формальні параметри отримують відповідні значення фактичних параметрів і тоді такий спосіб називається викликом параметрів по значенню, або отримують значення, тобто залишаються даними аргументами і спосіб називається викликом параметрів по найменування.
Відповідно найкоротший опис процедури такий:
::=
Крім даних конструкцій програма може містити коментарії, тобто певні пояснювальні тексти, які не впливають на програму.
::= I
Операнди, операції, вирази, оператори, процедури та функції являють собою основи конструкції мови програмування.
5. Вимоги до мов програмування та програмних модулів.
Основними вимогами, які ставляться до мов програмування є:
наточність – використання загальноприйнятих і загальновживаних математичних символів та інших засобів зрозумілих людині
єдність – кількість зображувальних засобів не повинна завеликою. Одні й ті самі засоби повинні застосовуватись при описі однакових або споріднених понять, як одних так різних описах, як алгоритму так і програми.
гнучкість – будь-який метод обчислювальної математики повинен зберігати свій зміст і описуватись без зайвих ускладнень.
багато ступінчастість – можливість опису будь-якого складного алгоритму у вигляді певної сукупності у вигляді біль простих, які у свою чергу можуть описуватись через ще більш прості алгоритми.
однозначність, тобто алгоритм повинен трактувати однозначно, будь-яким виконавцем, для цього повинна бути однозначна відповідність між текстами та змістами.
незалежність від конкретних особливостей ЕОМ для яких створюється програма.
подільність означає розбиття алгоритму чи програми на окремі модулі, які не перетинаються і максимально незалежні однин від одного. Кожен з таких модулів повинен мати чітке призначення і вони містять засоби опрацювання певного типу. При створюванні модулів на них накладаються ряд вимог:
кожен модуль повинен мати один вхід і один вихід. Відповідно не припустимим є звернення тільки до частини модуля.
Модулі по можливості не повинні бути великими.
Чітко повинні бути вказані зв’язки між модулями та основною програмою.
модулі можна організувати так, щоб вони викликали один одного, або створюється так звана управлінська програма, яка забезпечує послідовність виклику модуля.
при зверненні модулів однин до одного кожен із них повинен викликати тільки модулі наступного рівня: тобто небажане звернення до елементів чи модуля більш низького рівня.
внутрішня організація мов, та внутрішнє використання ним інформації формується програмістом і ніяких обмежень не ставиться.
при побудові мов бажано, щоб однин не коригував текст іншого модуля
При організації наступних мов можна організувати зв’язки так, щоб декілька мов використовували елементи інших мов, областей даних, пам’яті, пристроїв тощо.
бажано, щоб зміни в одному модулі як змога менше вимагали змін
інших модулів.
кожен модуль повинен бути самовідновлюваним, тобто результат не повинен залежати від кількості звернень від нього, та способів використання.
6. Загальні правила оформлення програм. Програмні інтерфейси та інструментальні засоби розробки програм.
Загальні правила оформлення програм.
Якщо програма складається із мов, то крім його назви бажано писати коротку характеристику призначення тобто змісту.
Кожний оператор бажано писати з нового рядка.
Кожну внутрішню структуру оператора записувати з однаковим зміщенням, з зсувом.
Якщо оператор не поміщається в одному рядку, тобто продовження в наступному варто починати на рівні його початкового засобу.
Для кожного змістовного оператора варто писати коментарії, якщо коментар не поміщається в одному рядку продовження коментарія не бажано писати (коментатори) інші оператори.
При виборі імен ідентифікатора повинно враховувати синтаксис мови, але продумувати зміст вибраного ідентифікатора.
Між окремими блоками (змістовними частинами) програми бажано залишати порожні рядки.
Супроводження вимагає.
Супровід вимагає:
виправлення помилок, які вимагають в ході експлуатації програми.
удосконалення програми з метою зменшення їх обсягу чи збільшення швидкодії.
організація зв’язку розробленого програмного засобу з іншими програмними засобами.
адаптація програми до іншої обчислювальної системи при її зміні користувачем.
корегування програми з метою полегшення її використання користувачем.
Програмні інтерфейси та інструментальні засоби розробки програм.
При побудові програмних мов використовують таке поняття як інтерфейс модуля, при цьому розрізняють статистичний та динамічний.
Статистичний містить текстуальні властивості модуля, явно описуються мовою програмування і обов’язково присутні у програмному модулі.
Динамічний мітить характеристики поведінки модуля, під час його виконання його не можна явно описати мовою програмування і перевірити за допомогою компілятора. Тому для його модуля використовують позамовні засоби, які дозволяють здійснити динамічну перевірку модуля. Це означає, що для програмного забезпечення не достатньо мати тільки мову програмування, тобто потрібно мати ще певну кількість взаємозв’язаних інструментів, які не тільки полегшують взаємодію програміста з програмою, але і дозволяє здійснювати перевірку програму комплексу та частин з метою гарантованості якості всього програмного комплексу. Позамовні засоби називаються оточенням мови програмування, або системою підтримки розробки програмного забезпечення та підтримки життєдіяльності упродовж роботи такого програмного продукту. Система підтримки складається із сукупності взаємозв’язаних програмних засобів, які забезпечують комплексну підтримку та автоматизацію всіх етапів, як розробки так і функціонування програмного засобу.
Функціонально така система складається із:
бази даних
інтерфейсу
сукупності інструментальних засобів.
Бази даних призначені для централізованого зберігання даних пов’язаних з об’єктом автоматизації. Інтерфейс являє собою сукупність уніфікованих засобів, які забезпечують взаємодію бази даних інструментальних засобів та користувачів. Інструментальні засоби використовуються при розробці програми, їх супроводженні, керуванні проектом тощо. Набір інструментальних засобів може містити:
компілятор
редактор текстів
редактор зв’язків, процесор візуального виведення інформації
формувач перекреслень посилань, аналізатор передач управління у програмному комплексі
інтерактивний динамічний налагоджувач, користувальний інтерфейс
засоби конфігураційного управління процесором і проектом в цілому
моно-орієнтований редактор
засоби контролю та обліку розробки програмного засобу
спеціалізовані засоби
10.проблемно-орієнтовані засоби
графічні засоби.
Принципи створення програмних засобів.
Задоволення вимог засновника, тобто виявлення його всебічних потреб і підтримка зворотного шляху з ним.
Програмний продукт повинен бути розроблений в межах встановленого терміну та визначення бюджету
Обов’язково практична активна участь замовника в роботі програміста
Концентрація командних зусиль як розроблювачів так і замовника
Бажано створювати глобальні рішення, щоб глобальний продукт можна було використовувати в різних споріднених організаціях на ринку збуту тощо.
При створення програмного продукту потрібно максимально використовувати готові з даних питань програмні продукти, ідеї, рішення тощо.
При розробці потрібно створювати технологію, визначити цілі і мету, а вже потім використовувати питання способу їх реалізації.
Удосконалення програмного продукту повинно приводити до збільшення його можливостей, а не розмірів.
7. Критерій вибору мови програмування.
1) призначення програми, тобто, чи вона буде використовуватись постійно чи тимчасово, чи вона буде удосконалюватись, передаватись другим організаціям тощо
2) необхідна швидкість роботи
3) вимоги до розміру програми, тобто, чи вона повинна бути як єдине ціле чи складатись з модулів
4) використання програми, тобто, чи вона буде автономною чи спряженою з іншими програмними продуктами
5) чи буде даний продукт використовуватись на різних обчислювальних системах
Які типи даних потрібно буде використовувати?
Можливість і доцільність використання стандартних бібліотек підпрограм процедур і функцій.
8. Понятие стpуктуpы всегда ассоцииpуется со сложным объектом, об--ла-дающим свойством целостности, и вместе с тем составленным из пpо---стых компонет (частей, элементов) путем использования опе-де-лен--ной системы пpавил. Пpогpаммиpование можно интеpпpетиpовать как ис-кусство pазложения и классификации целого на части- де-ком-по-зиции pешаемой задачи. В этом плане стpуктуpизацию в пpо-гам-мио-вании можно тpактовать как пpавила такой декомпозиции. Возможна, pазумеется, декомпозиция и без пpавил, но в этом слу-чае (как и в лю-бой игpе без пpавил) понять, как из частей оба-зу-ется стpуктуpа, тpудно, а в общем случае, невозможно.
Истоpически стpуктуpизация в пpогpаммиpовании начиналась с вве-де-ния в языки пpогpаммиpования упpавляющих стpуктуp - опеа-тоов ус--ловного пеpехода, выбоpа, циклов с pазличными пpавилами пов-тое-ния и выхода и т.п. Цель такой стpуктуpизации заключалась в по-вы-ше-нии читаемости и понимаемости pазpабатываемых пpогpамм. Пpо-гам-миование с использованием опеpатоpа безусловного пеpе-хо-да (GO TO) в этом плане считалось нежелательным, не впи-сы-ва-ю-щим-ся в систему пpа-вил стpуктуpизации. Из некотоpых языков пpо-гам-миования этот опеатоp был вообще удален, чтобы не вводить пpогам-мистов в ис-ку-ше-ние писать лаконичные, эффективные, хоpошо pаботающие, но тpудно понимаемые и нестpуктуpные (!) пpогаммы. (Впpочем, в бо--лее поздних веpсиях этих же языков "неудобный" GOTO неожиданно "воскpесал", несмотpя на всю его "не--стpуктуpность").
Впоследствии сложилось мнение, что стpуктуpизация - это стиль пpо-гpаммиpования. Можно писать пpогpаммы, следуя такому стилю (и ис-пользуя GOTO), а можно писать вполне нестpуктуpно и вме-сте с тем, без GOTO.
Языки пpогpамиpования, в котоpые были введены упpавляющие стpук-туpы, оказались пеpвым шагом на пути от ассемблеpа до сове-мен-ных языков (языки пеpвого поколения, напpимеp, FORTRAN). Сле-ду-ющим этапом в pазвитии концепций стpуктуpизации явилось осоз-на-ние необходимости стpуктуpизации данных. Появление таких стpуктуp, как записи, положило начало использованию в языках пpогам-мио-ва-ния механизмов абстpагиpования типов (языки втоpого поколения, пpи-меp - PL1). Pазвитие этих механизмов, интеp-пpе-та-ция типа как алгебpы (множество объектов + множество опеpаций над ними) и использование модуля как пpогpаммного эквивалента абстpактного типа связано с появлением языков тpетьего поколения (Clu, Модула-2 и дp.). Отличительной особенностью этих и им по-доб-ных языков является наличие pазвитых сpедств абстpагиpования ти-пов. В этом пла-не хоpошо известная техника модульного пpо-гам-миования ока-за-лась удачной основой, на котоpой концепция абс-тpа-гиpования могла по-лучить новые дополнительные качества.
В таких языках оpиентиpованных на объекты пpо-гам-ма опе-деляется как набоp модулей, каждый из котоpых содеpжит в себе опеделение абстpактного типа Т, действий над объектами этого типа Ft и внутpенних схем поведения объектов Wt. Любой модуль опpеделяется тpиадой M=, а механизмы импоpта-экспоpта опpеделяют статические межмодульные связи.
В этой интеpпpетации модуль должен pассматpиваться как пpо-гам-м-ный эквивалент опpеделенного класса объектов, содеpжащий в се-бе всю инфоpмацию об объектах этого класса.
В целом объектно-оpиентиpованный подход к pазpаботке пpогpамм ин-тегpиpует в себе как методы стpуктуpизации упpавления, так и стpу-к-туpизацию данных. Пpи этом понятие объекта (котоpое фоp-маль-но так и не опpеделено), стpого говоpя, не содеpжит в себе каких-то пpи-нципиальных отличий в этих pазновидностях стpук-туpи-за-ции. Объ-ек-том может быть и константа, и пеpеменная, и пpо-це-дуа, и пpо-цесс. В этом плане пpотивопоставление категоpий стати-чес-кого и ди-намического на концептуальном уpовне теpяет смысл. Объекты в пpогаммах "pождаются" и "умиpают", меняют свое сос-тоя-ние, запу-с-ка-ют и останавливают пpоцессы, "убивают" и "возо-ж-дают" дpугие объ-екты, т. е. воспpоизводят все оттенки явлений pеального миpа. Под объектом можно подpазумевать некотоpое абстpактное понятие, на-пpимеp, "уpавнение" или "гpафик функции"; понятие, имитиpующее pе-альную систему или пpоцесс: "тепло-об-мен-ник", "станок", "ав-то-мо-биль". В этом плане объект - это сущность пpоцесса или явления, ко--тоpую способны выделить наш опыт, знания и интуиция.
Объектно-оpиентиpованное пpогpаммиpование как и пpогаммио-ва-ние вообще остается искусством, где интуиция игpает очень боль-шую pоль. Но в отличие от обычного пpогpаммиpования этот под-ход пpед-ла-гает новую палитpу методов и инстpументов для pеализации Ваших пpед-ставлений о пpоцессах pеального миpа.
9.Етапи розвязання задачі з використанням ЕОМ.
Розробка програмних засобів виконується прои допомозі 6 етапів, які становлять цикл життя програмного продукту.
1)Визначення мети розробки програмного виробу(3%)
2)Визначення специфіки виробу(3%)
3)Алгоритмізація(7%)
4)Програмування(4%)
5)Контрольні випробування(15%)
6)Експлуатація та супровід(69%)
Описання етапів
1)Визначення та аналіз. Входять основні інформаційні процедури
1. Визначення та аналіз характеристик задач, які необхідно формувати. При цьому виконуються такі групи операцій: а) аналіз характеристик цілей, визначення інформаційних звязків, обгрунтування критеріїв ефективностей; б) визначення переліку обєктів задачі, описання процедур, які вводяться вперше; в) оцінка числових характеристик(періодичність і тривалість) та витрати ресурсів на її реалізацію. Оцінка надайності функціонування задачі.
2. Розробка структурних і функціональних схем розвязування задач: а) побудова схем розвязку б)визначення послідовності процедур
2) Специфікація – вимога до функціональних характеристик інформаційної бази. До них належать:
1. Перелік функцій даного виробу
2. Часові та ємнісні значення параметрів
3. Показники надійності програм.
3) Алгоритмізація. Основні процедури:
1. Визначення параметрів алгоритмів.
2. Документування(опис алгоритму, створення інструкції користувача)
3. Визначення обчислювальної складності(витрат часу на реалізацію алгоритму чи необхідної памяті).
Створені алгоритми повинні мати 3 фундаментальні властивості: детермінованість, масовість, результативність. На етапі алгоритмізації складається план проведення випробувань і визначається основна частина текстових даних.
4) На етапі програмування використовується в якості засобів алгоритмічні мови і відповідні технології: 1. Модульне програмування 2. Структурне 3. П-ня згори донизу.
5) Контрольні випробування – перевіряється відповідність згідно таких звязків: 1. Алгоритм-постановка
2. Алгоритм-програма
3. Алгоритм- специфікація
Вимогт до контрольних випробувань. Для заданого набору тестів п-ма має видати правильний результат для перевірок:
1. Кожен оператор п-ми повинен виконуватись не менше разу
2. Кожна гілка програми повинна бути апробрвана\
3. Для кожної специфікації потрібно виконати набір текстових даних
6) Причини змін програмного виробу в процесі експлуатації:
1. Не точно організовані вимоги до задач
2. Виявлення помилок не знайдених на етапі контрольних випробувань
3. Адаптація програмного виробу до конкретних умов споживача
4. Не внесено поточних змін до програмної копії.
10.Середовище ТР та організація роботи в ньому.
Основні файли сердовища версії 7.0 такі:turbo.exe (виконуваний файл), turbo.tpl(бібіліотека) і turbo.tph(допомога). Для входження в середовище слід виконати команду turbo.exe. У верхньому рядку екрана буде розташоване головне меню, а в нижньому опис деяких функціональних клавіш. Щоб активізувати (увійти в) головне меню слід натиснути клавішу F10. У розпорядженні користувача будуть такі пункти меню:
File – для роботи з файлами;
Edit – для редагування файла;
Search – для відшукання чи заміни заданого фрагмента тексту;
Run – для виконання програми;
Compile – для компіляції програми та створення ехе-файлу;
Debug – для налагодження програми;
Options - для конфігурування середовища;
Window – для конфігурування вікон та роботи з ними;
Help – для надання допомоги.
Потрібний пункт вибтрають стрілками переміщення курсора або мишкою і натискають клавішу вводу. Можна скористатися акордом ALT – вісвівтлена буква: натиснувши і утримуючи клавішу ALT, натискають висвітлену букву і відпускають усі клавіші.
Розглянемо основні етапи, з яких складається сеанс роботи.
Активізовують головне меню (F10) і пункт File. Отримують додаткове (випадаюче) меню. У ньому вибирають пункт New. Середовище переходить у режим створення нового файлу з назвою NONAME00.PAS. набирають текст програми.
Для виправлення очевидних помилок уведення користуються традиційними прийомами редагування тексту, зокрема, такими акордами для роботи з блоками (фрагментами) тексту:
Shift – стрілки – це виділення чи зняття виділення блоку тексту;
Ctrl-Insert – копіювання блоку в буфер;
Shift-Delete – переміщення виділеного блоку з тексту в буфер;
Shift-Insert – встановлення тексту з буфера у позначене курсором місце основного тексту;
Ctrl-Delete – вилучення виділеного блоку з основного тексту.
Ці акорди можна побачипти активізувавши пункт головного меню Edit(Alt-E).
Якщо очевидних помилок немає, програму можна виконати засобами пункту головного меню Run або за допомогою акорду Ctrl-F9.
Якщо система виявить синтакичні помилки, то про це буде негайно повідомлено. Курсор буде в рядку, де допущено помилку, або безпосередньо вказуватиме на позицію з помилкою. У верхньому рядку буде повідомлення про зміст помилки, що суттєво полегшує її виправлення. Середовище буде в режимі редагування, і помилку легко виправити. Тепер вдруге виконують програму (натискають Ctrl-F9)
Якщо синтаксичних помилок немає, програма буде виконана. Результати можна побачити у вікні результатів, для чого натискають акорд Alt-F5 або використовують засоби пункту Debug. Натиснувши після перегляду результатів будь-яку клавішу, переходять у режим редагування програми.
Щоб для заданого pas-файлу створити exe-файл, активізують пункт Compile. Працюють з підпунктом Destination. Натисканням клавіші вводу задають режим Disk. Натискають акорд Alt-F9 і в поточний каталог на диску буде записано exe-файл, який можна виконувати поза середовищем.
Щоб зберегти текст програми у файлі з розширенням pas, знову активізують пункт File і пункт Save As, якщо файлу дають нове імя, або підпункт Save для зберігання файлу зі старим іменем. Щоб цю операцію виконати швидко, достатньо натиснути клавішу F2.
Для закінчення сеансу роботи і виходу з середовища потрібно ввійти в головне меню (F10), у підпункт File (Alt-F) і вибрати режим Exit (натискають букву х). швидкий вихід забезпечує акорд Alt-x.
Для виконання програми, що є на диску , входять у головне меню(F10), вибирають пункт File і підпункт Open. Щоб цю дію зробити швидко, достатньо натиснути клавішу F3. у віконці, що зявиться на екрані, набирають назву файлу і натискають клавішу вводу. Але ліпше зробити так: за допомогою клавіші Tab перейти в нижнє вікно і вибрати з меню імен файлів потрібний файл і натиснути клавішу вводу. Текст програми буде занесено у вікно редагування.
10.Вікон з програми може бути декілька. Переходити від однієї програми до іншої можна за допомогою клавіші F6. Щоб розкрити на весь екран чи згорнути вікно F5. зручно розташувати вікна на екрані можна засобами пункту Window. Щоб закрити вікно, натискають аккорд Alt-F3.
11. Якщо потрібна додаткова інформація натискають клавішу F1 і читають інформаційно-довідкові тексти про середовище і синтаксичні конструкції ТР.

11Стандартні модулі, їх аналіз та основні функції.
Підпрограми, які мають універсальне призначення та можуть згодитися багатьом користувачам варто обєднювати у бібліотеки та модулі.
Модуль – незалежна програмна одиниця. Він містить описи констант, типів даних, змінних та підпрограм. Розрізняють стандартні модулі та модулі, створені користувачем.
Є такі стандартні
Crt – для роботи з екраном і клавіатурою
System – містить найчастіше вживані п-ри та ф-ції
String – містить ф-ції для роботи з рядковими змінними
Printer- для роботи з пристроєм друкування
Graph – містить п-ри та ф-ції для графічних побудов
Overlay- модуль засобів для роботи з великими програмами
Dos, Windows – дають змогу виконувати команди ОС під час виконання Pascal-програм чи отримувати певні дані від ОС
Graph3, Turbo3 – забезпечують сумісність з попередніми версіями ТР тощо
Приєднання модулів у конкретній програмі здійснюється за допомогою команди Uses ;
Процедури і ф-ції модуля System можна застосувати за замовчуванням. Саме з цього модуля компілятор бере процедури read, readln, write, writeln, стандартні sin I cos тощо.
Розглянемо по чотири корисні п-ри з модулів System I Crt:exit, halt, break, continue, delay(n), clrscr, textcolor(колір), textbackground(колір).
З поміж функцій модуля Crt часто застосовують символьну ф-цію readkey, яка отримує значення натиснутого користувачем символа на основній символьно-цифровій частині клавіатури, а також логічні ф-цію keypressed, яка набуває значення істино, якщо користувач натисне на будь-яку клавішу на основній клавіатурі.
У модулі Dos є процедури і ф-ції для роботи з файловою системою в режимі виконання Pascal-програми. Процедура exec(‘’,’’ або’’) – служить для запуску на виконання ехе- файлу іншої програми з середини програми корстувача(на початку програми користувача слід зазначити директиву{$m $2000,0,1000}).
Корисними є також дві процедури, які дають змогу хронометрувати час виконання програми користувача чи її фрагментів і опрацьовувати дати:
Gettime, GetDate.
Модулі користувача (unit). Свій модуль користувач бубує за певними правилами. Структура модуля така
Unit;
Interface{інтерфейсна частина}

Implementation{реалізаційна частина}

Begin

End.
Назву модуля дає користувач. У розділі описів оголошують інші потрібні модулі, описують типи, стилі та заголовки підпрограм, доступні у даному модулі.
У реалізаційній частині наводять тексти підпрограм за порядком згадування їхніх заголовків у описах. Інтерфейс і реалізаційна чатсина можуть бути порожніми.
У блоці ініціалізації у разі потреби задають початкові дані, відкривають файли, чистять екран тощо. Цей блок виконується першим, тобто перд командами основного блоку головної програми, до якої приєднаний даний модуль. Якщо стартовий блок не потрібний то службове слово Begin упускають.
Модулі використовуються зокрема у візуальному програмуванні.
Щоб оформити підпрограму як модуль в меню середовища ТР в пункті Compile-Destination встановлюємо значення Disk і транслюємо її (Ctrl+F9).
На диску отримуємо файл з тим же іменем але з розширенням .tpu. Модуль створено.
Окремі модулі користувач може обєднати в особисту бібліотеку(mybibl.tpl) за допомогою програми tpumover, виконавши в середовищі MSDos команду
Tpumover\mybibl.tpl/+MyModul
Загальна характеристика мови ТР. Структура програм
Програма складається із синтаксичних конструкцій які називають операторами. Оператори будуються з неподільних елементів мови: слів, чисел, символів, операцій тощо. Слова поділяються на службові стандартні імена та імена які користувач дає різним об’єктам.
Службові слова :
AND - і MOD - остача
ARRAY - масив NIL - нуль
BEGIN – початок NOT - ні
CASE - вибір OF - з
CONST – сталі OR - або
DIV – ділення без остачі PACKED - стиснутий
DO - виконати PROCEDURE - процедура
DOWNTO – униз до PROGRAM - програма
ELSE - інакше RECORD- запис
END - кінець REPEAT - повторювати
FILE - файл SET - множина
FOR - для THEN - то
FUNCTION - функція TO - до
GOTO – перейти до TYPE - тип
IF - якщо UNTIL - доки
IN - в VAR - змінні
LABEL - мітка WHILE – поки та інші
Стандартні імена(стандартні ідентифікатори) позначаються:
Назви типів:boolean, char, integer, real, text тощо;
Назви сталих: false, true, maxint, pi тощо;
Назви функцій: abs, arctan, chr, cos, eof, exp, ln, odd, ord, pread, round, sin, sqr, sqrt, succ, trunc тощо;
Назви процедур: read, readln, write, writeln тощо;
Назви стандартних файлів: input, output тощо.
Стандартні імена користувач може використовувати для позначення інших обєктів, однак тоді вони втрачають основне призначення.
Імена, які користувач надає величинам (сталим, змінним), програмі, підпрограм тощо, мають складатися з латинських літер, цифр, символу «_». В імені цифра не може бути першим символом. Наприклад, програму можна назвати так: myprogram_1.
СТРУКТУРА ПРОГРАМИ
Програма складається із:
- заголовка Program ;
- розділів описової частини Uses- приєднання бібліотек та модулів
Label- оголошення міток(позначок);
Const – оголошення сталих
Type – опис типів;
Var – оголошення змінних;
Procedure – оголошення процедур користувача;
Function – оголошення функцій користувача.
та виконуваної частини(тіла програми)
begin

End.
Заголовок та усі розділи, окрім останнього, є необов’язковими. Розділювачем між конструкціями програми є символ «;». У кінці програми завжди має стояти крапка.
Заголовок програмі надає програміст. В іменах, які користувач дає своїм програмам та змінним, великі та малі букви рівноправні: імена А та а
(або MyName та myname) позначають один і той самий об’єкт.
У програму можуть входити коменттарі. Коментарі – фрагмент тексту програми, взяти у фігурні дужки. Коментар слугує для пояснення роботи програм і не впливає на виконання команд. Він може бути розташований у довільному місці програм.
Особливим видом коментаря є директива. Директиви призначені для задання режимів функціонування компілятора. Як і коментар, директиву записують у фігурних дужках, де після відкриваючої дужки зазначають символи $, наприклад, директива{$F+} підтримує такзвану far-модельпамяті для роботи з процедурами та функціями, {$N+} забезпечує застосування матеметичного співпроцесора тощо.
РОЗДІЛИ ОГОГЛОШЕННЯ СТАЛИХ І ЗМІННИХ.
Усі величини, які входять у програму, повинні бути описані у розділі сталих, якщо вони не мінятимуть значення протягом виконання програми:
Const =;
. . .
=;
або у розділі оголошення змінних, якщо вони обчислюватимуться:
var :;
. . .
:;
Елементи списків записують через кому. Кутові дужки - це засіб формалізованого описування конструкцій мови. У конкретних програмах їх не використовують.
Поняття сталої та змінної. Стандартні типи даних.
Одним з найважливіших понять у програмуванні є стала і змінна.
Змінна – це поіменована ділянка оперативної пам’яті комп’ютера, де зберігається значення деякої величини. Змінна має такі властивості: назву, значення, тип. Кільуість змінних та їхні властивості задає користувач. Тип змінної визначає її допустимі значення, а також операції, які можна над нею виконувати.
Окрім звичайних є ще типові сталі. Вони дають змогу оголошувати змінну й відразу надавати їй значення:
Const :=;
. . .
:=;
На відміну від звичайних, значення типованих сталих у програмі можна змінювати. Приклади типованих сталих: const mysymbol:char=’a’; n:integer=5; p:real=1.73.
Розглянемо стандартні типи даних:
числові цілі (byte, shorting, word, integer-основний тип, longint);
Розглянемо такі дві змінні: var x:byte; y:integer; зауважимо, що змінна х не може набувати від’ємних значень, оскільки вони не входять до діапазону допустимих значень типу byte.
числові дійсні (single, real – основний тип, double, extended);
дійсні числа можна записувати у форматі з фіксованою крапкою, наприклад, 5.04, -12.109, або у форматі з фіксованою крапкою, наприклад, -5.2Е+2(це є -520.0). символи nE+2 означають множення числа n на 10 у степені +2, тобто nEm=n*10;
символьний (char) – це множина символів кодової таблиці компютера ASCII. Символьна стала – це символ, взятий у лапки, наприклад ’a’, ‘5’, ‘%’ ;
Логічний(тип boolean)характеризується двома значеннями:false(хибність) та true(істиність).
Усі стандартні типи(окрім дійсного) є впорядкованими, тобто для кожного даного визначені наступне та попереднє значення.
14.Арифметичні операції та вирази, правила побудовт та виконання.
1 | +, -
not | Присвоєння знаку
Логічне заперечення
2 | *,/
Div, mod
and | Множення, ділення
Цілочислові операції
Логічний добуток
3 | +,-
Or, xor | Додавання, віднімання
Логічні суми
4 | =,<>,,=
in | Відношення(порівняння)
Належність до множини
Пріоритет операція зміст операції
Виконання кожної операції здійснюється з урахуванням її пріоритету( 1-й - найвищий). Для зміни звичайного порядку виконвння операцій використовують круглі дужки. Наприклад, 2*(-3-2)=-10.
Результатом операції div є ціла частина від ділення двох чисел, а mod - остача. Наприклад: (9-2)div2=3, 7mod2=1.


22.Структуровані складені типи даних: записи і множини.
Поняття запису. Розглянемо учнівський чи студентський квиток, паспорт, службове посвідчення, цінник у магазині, тощо. Інформація, що стосується однієї особи чи об’єкта, є комбінованою: вона складається з чисел символів чи слів. Таке дане називається складеним (структурованим). Складені дані зручно опрацьовувати за допомогою комп’ютера. Для зберігання в оперативній пам’яті та опрацювання складеного даного, елементами якого є дані різних типів, використовують тип даних – запис .
Поняття запису розглянемо на прикладі даних зі сторінки журналу, де є список студентів та їхні оцінки з одного предмету:
Номер Прізвище оцінки
1 прізвище 1 5 3 4 5
2 прізвище 2 3 3 4 3 ... ... ... ... ... ... ...
30 прізвище 30 5 5 5 4
Тут кожний рядок є записом. Запис складається з даних різних типів. Перший елемент запису – ціле десяткове число з діапазону 1..30, другий – масив символів, третій – масив із чотирьох цілих чисел. Кажуть, що такий запис складається з чотирьох інформаційних полів.
Кожний елемент запису вводять у відповідне поле оперативної пам’яті якому надають ім’я.Кожний запис складається із фїксованої кількості компонент,що називається полями. Запис є типом який описують у розділі типів структура запису така
RECORD
ім’я поля 1:тип поля 1;
… … …
ім’я поля 2:тип поля 2;
END;
Для звернення до окремого поля використовують символ ».» після вказання імені змінної запису наприклад в розділі огоошення типів
TYPE
REC POINT TYPE=RECORD
X,Y :INTEGER
END;
В розділі опису змінних:
Var
Point:rec point type ;
Begin
Point. X:=point. Y+1;
… … …
End;
Крім використання такої конструкції зручнішим є використання оператора приєднання
With ім’я запису do оператор
МНОЖИНИ.
Основні поняття. Для розв’язування багатьох задач корисним є тип даних (структура даних) – множина. Множина складається з елементів , значення яких записують через кому у квадратних дужкахю. Елементами множини можуть бути прості дані одного(символьного, перерахованого чи діапазонного )типу.
Порядок розташування елементів у множині значення не має: [5,10] i [10,5] - це одна й та ж множина.
Кількість елементів у множині є обмеженою і залежить від реалізації мови.
Дії над множинами : 1. Об’єднання , перетину і різниці;
2. Порівняння ;
3. Шукання елемента в множині.
1. Об’єднання множин – це множина, яка містить усі елементи цих смножин без повторень. Символ операції + .
Перетин множин - це множина, яка складається з елементів , які є спільними для всіх множин. Символ операції *.
Різницею множин А і В є множина, яка складається з елементів, що є в А , але не є в В. Визначаючи різницю множин А і В у множині А потрібно викреслити елементи, які є у множині В. Символ операції – .
2. Множини порівнюють між собою. Результат порівняння множин є дане логічного типу.
Для перевірки , чи дві множини однакові, чи ні, використовують операції порівняння = чи .
Множина А є підмножиною множини В (записують A=B), якщо кожний елемент множини В є елементом множини А.
3. Шукають потрібний елемент у множині за допомогою конструкції
IFINTHEN

ELSE
;
Можна використати коротку форму:
IFINTHEN
Операції введення –виведення множин реалізовують поелементно, якщо такі операції визначені над елементами базового типу.
ОПИС ТИПІВ МНОЖИН І ОГОЛОШЕННЯ ЗМІННИХ.
Тип множини описують у розділі опису типів так :
TYPE =SET OF.
Тут SET OF – зарезервовані слова, а базовим типом можуть бути тип char ,перерахований або діапазонний тип чи інший простий тип , але не типи integer, real тощо, оскільки кількість елементів у множині є обмеженою.
Змінні оголошують у роздіилі оголошення змінних.
Оператори присвоєння та вирази
Оператор присвоєння має вигляд
:=.
Вираз складається зі сталих чи змінних типу множина , над якими можна виконати операції +, *, – . Типи елементів множин , що є у виразі , повинні збігатися.
23. Структуровані складені типи даних: масиви, рядки.
Масив(Array ) – це скінченний набір елементів одного(базового) типу, які зберігаються в послідовно розташованих комірках оперативної памяті і мають спільну назву. У математиці поняттю «масив» відповідають поняття вектора та матриці. Розрізняють одно- та багатовимірні масиви.
Двовимірний масив даних – це таблиця, що складається з декількох рядків. Загальний вигляд конструкції опису типу масиву такий:
Array[]of;
Розмір(кількість елементів) масиву найчастіше задають у вигляді діапазону або назви деякого перерахованого типу даних. Описати масив можна у розділі опису типів type, у розділі констант const або у розділі оголошення змінних var. Назви типів масивів і змінних-масивів придумує користувач.
Над масивами визначена єдина команда копіювання: a:=a1 – усі значення масиву а1 будуть присвоєні відповідним елементам масиву а. усі інші операції, наприклад, присвоєння конкретних значень, додавання, множення, тощо визначені лише над елементами масиву.
Доступ до елемента масиву здійснюється через назву масиву і номер елемента. Цей номер(його часто називають індексом) записується у квадратних дужках.
Щоб опрацювати всі елементи масиву використовують команду циклу for(while, repeat).
Елементи двовимірного масиву(дані можуть бути подані у вигляді таблиці) визначаються іменем масиву та двома індексами: перший – означає номер рядка, другий – стовпця, на перетині яких стоїть елемент.
Дане типу рядок – це послідовність довільних символів(тобто елементів типу char). Сталі типу рядок записують за допомогою двох штрих-символів, які охоплюють текст. Рядок може містити від 0 до 255 символів. Наприклад, ‘Україна’, ‘Львівська політехніка’, ‘’ – порожный рядок нульової довжини, ‘ ’ – рядок, що містить один символ – пропуск.
Змінну типу рядок огоглошують за допомогою слова string так:
Var : string[n];
Де n – довжина рядка, n<256. довжину рядка можна не зазначати. Приклад, const slovo=’University’;
Var fraza1:string[45];
Fraza2:string;
Над змінними типу рядок визначені операції зєднання(+) та порівняння(=, =, <>). Порівняння двох рядків здійснюється зліва направо до перших різних символів, причому ‘A’<’B‘, ‘B’<’C’ тощо.
«Більше» вважається символ, який розташований в алфавіті(він має більший номер у таблиці кодів компютера ASCII). Числовий код символу дає функція ord /ord(‘B’)=66/. Зворотну дію виконує функція chr: /chr 66 дає ‘B’/.
24. Типи рядок. Стандартні процедури і функції роботи з рядковими типами даних.
Дане типу рядок – це послідовність довільних символів(тобто елементів типу char). Сталі типу рядок записують за допомогою двох штрих-символів, які охоплюють текст. Рядок може містити від 0 до 255 символів. Наприклад, ‘Україна’, ‘Львівська політехніка’, ‘’ – порожный рядок нульової довжини, ‘ ’ – рядок, що містить один символ – пропуск.
Змінну типу рядок огоглошують за допомогою слова string так:
Var : string[n];
Де n – довжина рядка, n<256. довжину рядка можна не зазначати. Приклад, const slovo=’University’;
Var fraza1:string[45];
Fraza2:string;
Над змінними типу рядок визначені операції зєднання(+) та порівняння(=, =, <>). Порівняння двох рядків здійснюється зліва направо до перших різних символів, причому ‘A’<’B‘, ‘B’<’C’ тощо.
«Більше» вважається символ, який розташований в алфавіті(він має більший номер у таблиці кодів компютера ASCII). Числовий код символу дає функція ord /ord(‘B’)=66/. Зворотну дію виконує функція chr: /chr 66 дає ‘B’/.
Над даними типу рядок визначені такі стандартні функції:
Length() – визначає кількість символів у рядку;
Copy(r, m, n) – дає n символів рядка r, починаючи з символу з номером m;
Concat(r1, r2, …,rn) – зєднує рядки r1, …,rn в один рядок.
Pos(r1,r2) – визначає номер символу, з якого починається входження рядка r1 у рядок r2.
Та процедури:
Insert(r1,, n) – вставляє рядок r1 у рядок, заданий змінною, починаючи з позиції n.
Delete(, m, n) – вилучає n символів з рядка, заданого змінною, починаючи з позиції m.
Str(, ) – переводить числове дане в дане типу рядок.
Val(r1, s1, s2) – засилає у числову змінну s1 числовий образ рядка r1. якщо це можливо, то змінна s2 отримує значення 0, інакше – числове значення номера першого недопустимого символу заданого рядка, де зазначена змінна посилає в процедуру вхідне дане типу рядок і отримує назад інщий рядок – результат виконання процедури.
25. структура процедури. Локальні і глобальні змінні. Механізм передачі параметрів.
Загальний опис процедури:
procedure ();
;
Begin
End;
У списку формальних параметрів перераховують змінні разом із зазначенням їх типів. Розрізняють параметри-аргументи(параметри-значення) – вхідні дані для процедури, і параметри-результати(параметри-змінні), через які можна повертати результати роботи в основну програму. Перед списками параметрів результатів кожного типу записують слово var. Зауважимо, що масиви фіксованих розмірів у списках формальних параметрів не можна описувати за допомогою слова array. Розділи описів і оголошення у підпрограмах мають таку саму структуру як і в основній програмі. Процедуру викликають за допомогою команди виклику:
();
Параметри, які записують у команді виклику процедури називаються фактичними. Фактичними параметрами-аргументами можуть бути сталі, змінні, вирази, а параметрами-результатами – лише змінні. Між фактичними і формальними параметрами має бути відповідність за кількістю і типами. Відповідні фактичні і формальні параметри можуть мати різні імена. Команда виклику функціонує так: значення фактичних параметрів присвоюються відповідним формальним параметрам процедури, виконується процедура, визначаються параметри-результати, значення яких надаються(повертаються) відповідним фактичним параметрам у команді виклику.
Змінні, описані в розділі описів основної програми, називаються глобальними. Вони діють у всіх підпрограмах, з яких складається програма. Змінні, описані в розділі описів конкретної процедури називаються локальними. Вони діють тільки в межах конкретної процедури. Процедури можуть отримувати і повертати значення не твльки через параметри-результати, а й через глобальні змінні. Тому списки параметрів у процедурі може й не бути.
26. Структура функцій. Рекурсивні функції.
Функція, на відміну від процедури, може повертати в місце виклику лише один результат простого стандартного типу.
Загальний опис функції:
Function (): ;
;
Begin
End;
У розділі команд функції має бути команда присвоєння значення деякого виразу назві функції. Результат функції повертається в основну програму через її назву (як і у випадку використання стандартних функцій). Виклик функції здійснюється лише з виразів так:
().
Рекурсією називається алгоритмічна конструкція, де підпрограма викликає сама себе. Рекурсія дає змогу записувати циклічний алгоритм, не використовуючи команду циклу. Розглянемо спочатку поняття стеку.
Стек – це структура даних оперативної памяті, де дані запамятовуються і зберігаються за принципом «перший прийшов – останній пішов».
Обчислимо функцію suma(3,5). Формально можна записати suma(3,5)=5+ suma(3,4)=5+4+ suma(3,3)=5+4+3
Система виконує такі обчислення за два етапи:
1. спочатку формує стек, куди заносить числа 5, 4, 3.
2. додає числа у зворотній послідовності(оскільки вони надходять зі стеку): 3+4+5=12.
Обчислимо 4!:
factorial(4)=4* factorial(3)=4*3* factorial(2)=4*3*2* factorial(1)=
=4*3*2*1* factorial(0)=4*3*2*1*1
У стек будуть занесені числа 4, 3, 2, 1, 1. результат утвориться так:
1*1*2*3*4=24.
Зауваження. Застосовуючи рекурсію потрібно правильно складати стоп-умови, які забезпечують закінчення циклічних обчислень.
27. Файлові типи даних. Процедури та функції роботи з числовими файлами.
Файловий тип даних у мові ТР використовується в тих випадках, коли інформація з якою ми будемо працювати повинна поміщатися у файл і там зберігатися.
Для організації роботи по введенню даних у файл чи зчитування даних у Тр повинна бути використана змінна файлового типу, яка є представником файлів у програмі. Для запису чи зчитування даних існує також поняття вказівника даних, який вказує на кожному кроці роботи на місце роботи куди можна записати елемент чи на елемент.
Файловий тип даних описується за допомогою службових слів File of а сам формат змінних такий :file of
Тип вказує на типии елементів, які використовуються при організації файлів і можуть будь-якого типу крім файлового або комбінованого одним із полів якого є файловий тип. Операції над файлами, та послідовності дій при роботі з ними: всі операції з файлами повністю можна реалізувати за допомогою стандартних процедур і функцій а послідовність може бути наступною:
Опис змінного файлового типу;
Відкриття чи створення файлу
Введення чи їх зчитування
Закриття файлу;
Для виконання даних дій використовують процедури і функції:
Процедура Assign. Визначена для встановлення звязку з конкретним фізичним файлом на магнітному диску і змінною файлового типу, яка надалі виступає у ролі представника файлу у ТР.
Формат Assign(,). Імя ф-лу задається за правилами оперативної системи MSDOS і може крім власного імені містити маршрут доступу до нього.
Дане імя – вираз рядкового типу і пишеться в апострофах.
Наприклад var
F: file of integer;
Begin
Assign(f,’my.dat’);
2) процедура reset I rewrite. Дані процедури використовуються для відкриття файлу. Формати: reset(), rewrite ().
Під відкриттям файлу розуміється пошук його на диску, утворення спецсистем буферів для запису чи зчитування інформації і встановлення вказівника файлів на його початок. Дія процедури reset: може відкривати файл тільки в тому випадку якщо він попередньо був створений на диску. Дія процедури rewrite: дана процедура допускає, що файл, який потрібно відкрити може ще не існувати. В цьому випадку вона його створює і відкриває. Якщо її застосовують до вже існуючого файлу, то при відкритті вона його очищає.
3) П-ра Flush – для завершення обміну з файлом без його закриття.
flush().
4)Процедура Close – завершує дію з файлом, тобто ліквідовує внутрішні буфери, які були створені при відкритті і закриває його. Формат
close()
5)Поредура введення і виведення. Для введення даних використовується read, а для зчитування write. Розглянемо read(f,t) f- імя файлового типу, а t-змінна чи змінні яким будуть присвоєні значення.
Дія даної процедури: починаючи з поточної позиції вказівника файлу будуть послідовно зчитувати дані, що містяться у файлі і присвоюватись чергові змінні вказані у виклику процедури. Після кожного зчитування вказівник файлу переміщується на одну позицію вправо.
Процедура write, має аналогічний формат і здійснює запис даних у файл.
Переміщення по файлу.
Мова Тр має додаткові можливості, які дозволяють управляти вказівником файла і тим самим довільно змінювати. Для цього існує процедура Seek і ф-ції файла FileSize і Eof.
Процедура дозволяє явно змінювати значення поточного вказівника файлу, встановленого на елементі з заданим номером
Seek(f,n), де f – імя змінної файлового типу, n – ціле типу longint, яке вказує на порядковий номер елементу на який потрібно встановити вказівник.
Функція fileSize. Дана ф-ція вираховує(повертає) загальне число елементів файлу. FileSize(f), f – імя змінної файлового типу.
Дана функція обовязково повинна бути використана в програмі тоді, коли необхідно організувати в програмі дозапис в уже існуючий файл.
Функція eof(f) f- імя змінної файлового типу.
Дана ф-ція повертає логічне значення true або false в залежності від того досягнуть чи ні кінець файлу. Відповідно дана функція використовується в тих випадках коли потрібно прочитати всі дані і здійснити контроль за зчитуванням даних.
28. Файлові типи даних. Процедури і функції роботи з текстовими даними.
Часто виникає потреба опрацьовувати інформацію, розташовану на зовнішніх носіях. Прикладами таких даних є інформація про успішність студентів, розклад руху транспорту, наявність товару і магазинах.
Файл – це сукупність даних, які розташовані на зовнішньому носії. Дані у файлі називаються елементами. Кількість даних, на відміну від масиву, під час опрацювання файлу не зазначають. Елемент файлу не має індекса. Тип елементів може бути як простим так і складеним, але не може бути файлом. Файлові типи даних описують у розділі описів типів так:
type=file of або безпосередньо у розділі оголошення змінних
var:file of
Поряд з числовими файлами мова ТР має засоби організації текстових файлів і взаємодії з ними. Структура текстових файлів відрізняється від структури числових файлів, оскільки останні являють собою лінійну послідовність елементів, а текстові розглядаються як послідовність символьних рядків змінної довжини, розділених спеціальним символом кінець рядка. Як правило ним є управляючий код клавіші Enter. Крім цього текстовий файл завершується спеціальним символом кінець файлу. Представником текстового файлу є змінна файлового типу, яка описується з вказанням стандартного типу text. Робота з текстовими файлами організовується по рядках, при чому характер зчитування є строго послідовним. Текстові файли описуються у розділі опису змінних так :
Var:text;
Операції над текстовими файлами:
Початкові і завершаючі: assign(,)- налагоджує зв'язок між іменем файлу і файлом на зовнішньому носії
Reset()- відкриває файл для читання з нього даних
Rewrite()–відкриває файл для записування в нього даних
Close()- закриває файл
Додаткові: Append() – служить для відкриття файлу при якому вказівник встановлюється на кінець файлу. Її зручно використовувати в тих випадках, коли потрібно організовувати дозапис рядків в уже існуючий файл.
Операції введення\виведення: read(ln)(,),
write(ln)(,) але слід памятати, що оскільки текстовий файл містить символьну інформацію, то при записі значень других типів вони перетворюються у символьний і в подальшому їх можна використовувати тільки як символи. Для того щоб здійснювати контроль за досягненням кінця рядка використовують функцію Eoln(). Функція повертає True, якщо поточний рядок завершено і False в протилежному випадку. Для контролю за досягненням кінця файлу використовують функцію Eof(), як для числових файлів.
Для текстових файлів недопустима операція пошуку запису з потрібним номером(Seek).
Дещо подібні дії виконують процедури SeekEoln та SeekEof.
SeekEoln() – здійснює пошук поточного рядка. При цьому вона пропускає всі символи-розділювачі, знаки табуляції та пропуски і встановлює поточний вказівник файлу або на кінець рядка і тоді повертає True або на перший значущий символ. Якщо вона знаходить кінець ф-лу то повертає True, в іншому випадку False – функція Eof.


29. Файлові типи даних. Введення в них даних типу запис і їх зчитування по умові(чи умовах).
Часто виникає потреба опрацьовувати інформацію, розташовану на зовнішніх носіях. Прикладами таких даних є інформація про успішність студентів, розклад руху транспорту, наявність товару і магазинах.
Файл – це сукупність даних, які розташовані на зовнішньому носії. Дані у файлі називаються елементами. Кількість даних, на відміну від масиву, під час опрацювання файлу не зазначають. Елемент файлу не має індекса. Тип елементів може бути як простим так і складеним, але не може бути файлом. Файлові типи даних описують у розділі описів типів так:
type=file of або безпосередньо у розділі оголошення змінних
var:file of
Запис(record)- це структурований тип даних, призначений для зберігання в ОП та опрацювання даних, що складаються з полів – даних різних типів. Запис описують у розділі type (можна ще у розділі var) за допомогою такої конструкції:
Type=record
:;

:;
End;
Приклад
Grupa=record
Name, surname:string[20];
Birthday:record
Year:1975..1985;
Month:1..12;
Day:1..31;
End;
Sball:real end;
Доступ до конкретного поля запису дає складене імя вигляду ..
Конкретні записи типу grupa оголошують у розділі var так: student1, student2: grupa. У програмі цим змінним можна надати наприклад такі значення
student1. surname:= ‘Ігор’; student2. Birthday. Month:=5
Складені імена використовувати незручно. Вони ведуть до громіздких виразів у програмі. Щоб цього уникнути, застосовують команду with.
Команда приєднання with дає змогу використовувати у програмі лише імена полів. Загальний вигляд команди: with do ; у цій команді після слова with зазначають імя змінної типу запис, а в команді пишуть лише назви полів відповідного запису. До змінних з поперднього прикладу можна звернутися так:
With student1 do begin
Name:=’Shevchenko’; surname:=’Ihor’;
With birthday do begin year:=1980; month:=12; day:=28; end; sball:=4.9 end end;
30. Графічні адаптери і режими. Ініціалізація графічного режиму.
Графічний екран дисплея складається з точок, які можна засвічувати певним кольором чи гасити, у результаті чого на екрані утворюється деяке зображення. Точки називаються пікселями. Кількість тосок може бути різною, залежить від якості екрана. Початок відліку ведеться від лівого верхнього кута екрану. Кожна точка характеризується двома координатами(х,у). Програми, що виконують графічні побудови переважно є лінійними і складаються з викликів стандартних графічних процедур та функцій, зібраних у модулі Graph.tpu. Сам модуль може бути в бібліотеці turbo.tpl або в деякому каталозі на диску. В останньому випадку його треба приєднати командою uses на початку програми.
Для апаратної підтримки графіки існує ряд типів дисплеїв і відповідних електронних плат, які називаються адаптерами і які відрізняються між собою такими параметрами:
Роздільна здатність- кількість точок по горизонталі та вертикалі.
Гамою кольорів – можливість одночасного відображення повної кількості кольорів і відтінків.
Одним з найпоширеніших типів адаптерів є EGA i VGA та їх модифікації.
Для використання графічних можливостей мови одночасно ряд констант, які задають тип адаптера згідно таблиці.
Константа Значення
Detect 0
CGA 1
MCGA 2
EGA 3
VGA 9
Для роботи з графічними процедурами необхідні спеціальні програми драйвери, які містяться в файлах з розширенням .bgi. Для кожного із адаптерів можливе задання різних графічних режимів.
Роздільна здатність і кольори
Константа Значення Роздільна здатність Кольори
CGAC0 0 320x200 4
EGAHI 1 640x350 16
CGAAHI 4 640x200 2
VGAHI 2 640x480 16
На даний час певного поширення набувають адаптери типу SVGA роздільна здатність яких 800х600 і 256 кольорів, 1024х768 і 256 кольорів і 1280х1024 і 1800х1200. Вище перчислені константи для задання типу адаптера і графічного режиму використовуються при зміні режиму в ході виконання програми.
Ініціалізація(встановлення) графічного режиму. Після підключення графічної бібліотеки програма отримує доступ до всіх підпрограм даної бібліотеки. Перед заданням граф. проц. Користувач повинен за допомогою процедури InitGraph один із можливих графічних режимів.
Формат InitGrap(var: GraphDriver:integer, GraphMod:integer, PathtoDriver:string);
GraphDriver- змінна, що задає тип адаптера, GraphMod- змінна, що вказує номер режиму, PathtoDriver – шлях до драйвера
Тоді в розділі описів
Var GrD:integer; GrM:integer; PathD:string;
Begin
GrD:=VGA; GrM:=VGAHI; PAthD:=’D:\BIN\BGI’{тоді ініціалізація графіки}InitGraph(GrD, GrM, PathD);
Для тих хто не впевнений в типі адаптера існує стандартний засіб для його визначення, який задається константою Detect, тобто рядок GrD:=VGA можна замінити на GrD:=Detect. Рядок GrM:=VGAHI є не обовязковим, оскільки по замовчуванню ТР автоматично вибирає найоптимальніший режим для визначеного користувачем адаптера. Рядок PAthD:=’D:\BIN\BGI’ можна замінити на PAthD:=’’ при умові, що драйвери знаходяться в активному каталозі. Графічний режим можна задати ще так:
Var driver, mode: integer;
Begin driver:=detect; initgraph(driver, mode, ‘’);{задання графічного режиму}
If graphresult<>0 then begin writeln(‘графічний режим задати не вдалося’); halt;{stop}end;
end.
При складанні програм користувач може задати режим контролю за помилками при виконанні програми а також вказати «ввічливе» її завершення чи використання. Для цього в ТР існує ряд процедур і функцій, а саме функція
GraphResult:integer – повертає код використання графічної операції
GraphErrorMsg – видає текстове повідомлення про результат останньої графічної операції
CloseGraph – використовується для завершення роботи в графічному режимі.
Екран в графічному режимі
В залежності від типу адаптеру і вибраного режиму встановлюється повна розмірність екрану в пікселях з початком координат в верхньому лівому кутку. В будь-який момент часу але після ініціалізації графічного режиму можна змінити режим використання процедури SetGraphMode(Mode:integer).
Mode – номер потрібного(допустимого для даного адаптера) режиму.
Для визначення розмірності використовуються стандартні функції
GetMax – повертають відповідно максимальну горизонтальну чи вертикальну координату.
Оскільки в графічному режимі кожен піксель екрану набуває різного кольору, то інформацію про кількість кольорів можна отримати за допомогою функції
GetMaxColor: word- повертає максимально допустимий номер кольору для заданого режиму.
Для задання кольорів в Тр означено ряд констант, кожна з яких відповідає пеіному кольору, згідно таблиці.
Крім цього в ТР існує поняття основного і фонового кольорів. Основний використовується рядом процедур для побудови основних графічних примітивів і встановлюється процедурою SetColor(color:word);
Фоновий колір використовується при замальовуванні замкнутих областей і задається процедурою SetBkColor(colorNum:word);
Існує процедура GraphDevice, що очищає весь екран тобто замальовує його фоновим кольором.В графічному режимі ТР існує поняття графічного курсора який представляє собою деяку точку екрану , що активно використовується певними процедурами і функціями. Для визначеня його координат використовують GetX i GetY: integer; - повертає відповідно горизонтальну і вертикальну координати графічного курсора. Для його переміщення використовують функцію MoveTo(x,y:integer), x,y – абсолютні координати курсора. Крім цього існує функ-я MoveRel(Dx,Dy:integer) – переміщає курсор на певний крок(на відносні координати Dx,Dy) від положення курсора.


31. Найпростіші графічні примітиви: точка, лінія, прямокутник, коло.
Графічна бібліотека Graph містить ряд процедур для виведеня графічних примітивів(фігур) на екран а саме таких як точка, лінія, прямокутник, коло, еліпс і дуга.
Точка. Використовується PutPixel(x,y: integer;pixel:word)
Лінія. Для задання лінії використовують такі процедури line, lineto, linerel
Line(x1,y1,x2,y2:integer), x1,y1- початкові координати а x2,y2 – кінцеві.
Дія. Малює лінію встановленим кольором від точки(x1,y1) до точки (x2,y2).
LineTo(X,Y:integer). Малює лінію активним кольором від положення графічного курсора до точки (X,Y).
LineRel(Dx,Dy:integer). Dx,Dy- відносні координати. Малює лінію активним кольором від положення графічного курсора до т.(Get X+Dx,Get Y+Dy).
Прямокутник. Для побудови прямокутника встановленим кольором вокористовується Rectangle(x1,y1,x2,y2:integer). X1,y1 – координати верхнього лівого кута прямокутника, а x2,y2 – нижнього правого кута.
Коло. Для задання активним кольором використовується Circle(x1,y1:integer; radius:word).


32. Найпростіші графічні примітиви: дуга кола, еліптична дуга, лінія.
Графічна бібліотека Graph містить ряд процедур для виведеня графічних примітивів(фігур) на екран а саме таких як точка, лінія, прямокутник, коло, еліпс і дуга.
Дуга кола. Для побудови активним кольором використовують процедуру
Arc(x,y:integer; stAngle, EndAngle, radius:word); x,y- координати центра кола
stAngll, EndAngll – початкове і кінцеве значення кута в градусах, radius – радіус кола.
Еліптична дуга. Для побудови використовують п-ру Ellipse(x,y:integer; stAngle, EndAngle, stradius, endradius:word),
X,y – координати центра еліпса, stradius, endradius – горизонтальні і вертикальні півосі еліпса.
Лінія. Для задання лінії використовують такі процедури line, lineto, linerel
Line(x1,y1,x2,y2:integer), x1,y1- початкові координати а x2,y2 – кінцеві.
Дія. Малює лінію встановленим кольором від точки(x1,y1) до точки (x2,y2).
LineTo(X,Y:integer). Малює лінію активним кольором від положення графічного курсора до точки (X,Y).
LineRel(Dx,Dy:integer). Dx,Dy- відносні координати. Малює лінію активним кольором від положення графічного курсора до т.(Get X+Dx,Get Y+Dy).
Типии ліній. При побудові графічних обєктів користувач може визначати тип ліній а сааме її стиль, товщину, тощо.
Тип ліній можна задати процедурою SetlineStyle(linestyle:word, pattern:word; tucknes:word), linestyle – константа, що задає стиль лінії.
Pattern – бітова маска, що використовується для побудови лінії при використанні стилю заданого користувачем. Даний параметр при заданні стандартних стилів не використовується. Під бітовою маскою розуміють десяткове або 16-кове задання числа pattern якому ставиться у відповідність 16—бітне двійкове значення.
Turknes – товщина лінії. При чому існують дві константи для її задання а саме normWidth – значення 1.
ThickWidth – значення 3. Примітка. При ініціалізація графічного режиму встановлюються параметри лінії, що відповідають процедурі setlinestyle(solidln,0,normwidth) – будує лінії різного стилю.
Для визначення встановлених на даний момент параметрів лінії використовують setlinesettings(var lineinfo: linesettingsType)
LineInfo – змінна типу описана в графічній бібліотеці, формат якого
Linesettingstype=record
Linestyle:word;
Pattern:word;
tuckNess: word;
end.
Тут всі поля відповідають параметрам процедури setlinestyle.


33. Прості замальовані примітиви: прямокутник, еліпс, сектор круга і еліптичний сектор.
Засобами ТР можна безпосередньо побудувати ряд обмежених замальованих областей, зокрема таких як прямокутник, еліпс, сектор круга, еліптичний сектор.
Перед побудовою даних областей користувач повинен задати параметри замальовування а саме стиль і колір.
Задання параметрів замальовування здійснюється п-рою setfilestyle(pattern:word; color:word);
Pattern – стиль замальовування який задається рядом констант.
При використанні стилю заданого користувачем бітова маска, яка задається процедурою setfilepattern(pattern: fillpatterntype; color: word);
Fillpatterntype = array[1..8] of byte; pattern – бітова маска, змінна типу
Fillpatterntype – визначено в графічній бібліотеці як масив з 8.
Дана бітова маска задає шаблон замальований розміром 8х8 пікселів, кожен рядок якого описується 10-м або 16-м числом якому відповідає двійкове значення.
Даний шаблон в розділі констант, може бути висунутий так
Const
Myfill=fillpatterntype($88,$44,…,$88,$44)
Для побудови замальованого прямокутника без окантовки з встановленими параметрами використовують процедуру bar(x1,y1,x2,y2:integer)
При побудові звичайного n-кутника можна будувати тривимірний замальований прямокутник, тобто прямокутний паралелепіпед процедурою.
Bar3D(x1,y1,x2,y2:integer; Dept:word; Toop: boolean)
Dept - глибина паралелепіпеда в пікселях
Toop – логічна змінна яка відображає при значення істино верхню основу і праву сторону паралелепіпеда а при значенні хибно тільки праву сторону.
Замальовоний еліпс. Для його побудови поточним кольором із окантовкою використовують процедуру fillellipse(x,y:integer; xradius,yradius:word)
X,y- координати центра еліпса
Xradius, yradius – горизонтальні і вертикальні осі еліпса
Сектор круга і еліптичний сектор. Для побудови сектора круга використовують процедуру Pieslise(x,y:integer;STAndle, EndAngle, Radius: word). Для побудови еліптичного сектора Sector(x,y:integer, STAndle, EndAngle, XRadius, YRadius: word). Замальовування довільної обмеженої області. Для задання таких областей використовують процедуру
FloodFill(x,y: integer; border: word)
Border – колір межі даної області.
34. Ламані і многокутники, щамальований многокутник.
Ламані та многокутники.
Будь-яку ламану можна задати, як сукупністю відрізків із спільними вершинами. Однак ТР містить процедуру Drawpoly, яка дозволяє безпосередньо будувати ламану заданим стилем і кольором.
Drawpoly (NumPoints: word; var PolyPoints);
NumPoints – кількість вершин ламаної
PolyPoints – одновимірний масив елементів, кожен з яких є записом пари координат, а саме
PolyPoints: array [1..NumPoints] of PointType, де PoitnType = record з полями
x,y: integer;
end;
Програма (побудова ламаної з 4 вершинами)
Program Polygon;
uses Graph;
const
Poly: array [1..4] of PointType =((x:50,y:100),(x:100,y:150),(x:150,y:250),(x:250,y:200));
var
Gd, Gm: Integer;
begin
Gd := Detect;
InitGraph (Gd, Gm,’’);
DrawPoly (4,Poly);
Readln;
CloseGraph;
End.
В даній програмі для опису ламаної використана типізована константа, тобто змінна певного типу, якій надається деяке значення до початку виконання програми.
Многокутники.
Для побудови многокутника використовують ламану, в якої координати першої і останньої вершини співпадають.
Використовується процедура FillPoly (NumPoints: word; var PolyPoints);
Програма побудови многокутника.
Program Fillpolygon;
Uses Graph;
const
Poly:array [1..5] of PointType =((x:20,y:100),(x:100,y:250),(x:150,y:180),(x:200,y:190), (x:20,y:100)),
Var
Gd, Gm: integer;
begin
Gd := Detect;
InitGraph (Gd,Gm,’’);
SetLineStyle (DashedLn, Green,1);
SetFillStyle (HatchFill, Red);
FillPoly (5, Poly);
Readln;
CloseGraph; end.
35.Використання графічного тексту.
Для задання і виведення тексту на екран символами в графічному режимі використовують OutText (TextString: string)
OutTextXY(x,y: integer; TextString: string);
Дані процедури виводять текст, починаючи з положення графічного курсору
Програма:
Program MyText;
uses Graph;
var Gd, Gm: integer;
begin
Gd := Detect;
InitGraph (Gd, Gm,’’);
MoveTo (50, 50); OutText (‘Початок тексту’);
Readln;
OutText (‘Продовження тексту з позиції курсору ’);
Readln;
OutTextXY (150, 100,’Вивід тексту з точки (150, 100)’);
Readln;
CloseGraph;
end.
Задання стилю графічних символів SetTextStyle (Font, Direction: word; CharSize: word);
Font –Константа, або її значення, що беруть з таблиці. Direction –напрям виведення тексту. CharSize – множник для збільшення символів (1–норм. 2–подв.).
Якщо CahrSize=0 (=UsesCharSize, тобто константа описана в модулі Graph), то розмір графічних символів можна задавати довільним чином за допомогою процедури SetUserCharSize (MultX,DivX,MultY,DivY:word).
MultX i DivX – чисельник і знаменник множника розміру по горизонталі;
MultY i DivY – чисельник і знаменник множника розміру по вертикалі.
Константа | Значення | Шрифт
DefaultFont | 0 | 88 пікселів
TriplexFont | 1 | потрійний
SmallFont | 2 | Малий
SansSerifFont | 3 | SansSerif
GothincFont | 4 | Готичний
Константа | Значення | Напрям
HorizDir | 0 | Зліва направо
VertDir | 1 | Знизу Вгору
Константа | Значення | Розміщення точки відносно блоку
По горизонталі
LeftText | 0 | Зліва
CenterText | 2 | По центру
RightText | 3 | Справа
По вертикалі
BottomText | 0 | Вниз
CenterText | 1 | По центру
TopText | 2 | Вгору
Розміщення тексту в текстовому блоці, який повністю містить текст відносно певної точки. Це можна зробити SetTextJustify (Horiz, Vert: word);
Horiz i Vert – константи, або їх значення, які вказують на взаємне розміщення текстового блоку і точки згідно таблиці (вище наведеної).
Програма
Program MyTextStyle;
uses Graph
var Gd, Gm: integer;
begin
Gd := Detect ;
InitGraph (Gd, Gm,’’),
SetTextStyle (DefaultFont, HorizDir, 4);
OutTextXY (50, 50, ’System Font’);
SetTextStyle (Sans Serif Font, HorizDir, 4);
OutTextXY (50, 200, ‘Sans Serif Font’);
Readln;
SetTextStyle (TriplexFont, HorizDir, 4);
OutTextXY (400, 100, ‘Horizontal’);
SetTextStyle (TriplexFont, VertDir, 4);
OutTextXY (450, 150, ‘Vertical’);
Readln;
SetTextStyle (SansSerif Font, HorizDir, UsesCharSize);
SetUserCharSize (1, 2, 1, 1);
OutTextXY (100,350, ‘Short’);
SetUserCharSize (2, 1, 1, 1);
OutTextXY (100, 400, ‘wide’);
Readln;
CloseGraph;
end.
© 2014 - 2019 BigLib.info — это сокращение от Big Library (большая библиотека).
Целью создания этого сайта было сделать украинскую литературу доступной для всех, кто желает ее читать.
Использование любых материалов сайта без согласования с администрацией запрещено.
Обратная связь