Основи програмування в середовищі PascalABC.NET

ПЕРЕДМОВА   Програмування сьогодні - це бурхливо розвивається галузь виробництва програмних продуктів ПЕРЕДМОВА

Програмування сьогодні - це бурхливо розвивається галузь виробництва програмних продуктів. В кінці минулого століття спілкуватися з комп'ютерами можна було лише за допомогою програмування, і тому програмування
вивчали практично у всіх навчальних закладах (в т. ч. в школах і вузах). Часи змінилися, спілкуватися з комп'ютерами можна вже за допомогою готових комп'ютерних програм, і нужда в масовому навчанні програмуванню начебто відпала.

Проте все виявилося не так просто. В сучасні прикладні пакети включаються, як правило, додаткові кошти програмування, що забезпечують розширення можливостей цих пакетів. Наприклад, практично в будь-якому пакеті MS Office є середовище програмування VBA (Visual Basic for Applications), що забезпечує розширення можливостей цього пакету; професійна робота з системою «1С Підприємство» вимагає постійного програмування для налаштування на потреби кожної фірми. Мова вже ведеться про новий підхід, в рамках якого програмування - це обов'язкова компонента підготовки фахівців, які збираються професійно працювати в певній сфері, в якій передбачається використання IT-технологій.
Програмування сьогодні - це не тільки і не стільки знання мови програмування. Перш за все це знання технології програмування, вміння проектувати і розробляти програми і програмні комплекси на основі цієї технології, вміння будувати моделі, ставити завдання і мати уявлення про колективну розробку програмних продуктів. Все це прийнято називати культурою програмування.
В даному посібнику ви познайомитеся з мовою програмування Паскаль (точніше, його різновиди - Object Pascal), c елементами структурного програмування (т. Е. Програмування без використання оператора безумовного переходу), з технологією проектування «зверху вниз», з модульним програмуванням (т. е. з розбивкою програми на підпрограми для зручності налагодження та колективної реалізації) і елементами об'єктно-орієнтованого програмування.

Матеріал посібника необхідно вивчати послідовно. У книзі запропоновано два види матеріалів: теоретичний, який розміщений в електронному посібнику, і практичний, який слід виконувати на комп'ютері. Для виконання практичних робіт необхідна середовище програмування PascalABC.NET (різних модифікацій), а також електронна підтримка практичних робіт, розміщена в папці Examples. Можна, звичайно, використовувати для навчання і інші середовища (Turbo Pascal, Borland Pascal, Free Pascal, TNT Pascal і т. П.), Проте матеріал підготовлений саме для названої середовища. Серед безкоштовних, і її можна завантажити з http://PascalABC.NET/. І хоча програмування на мові Паскаль вивчають традиційно в середовищі Borland Pascal, ми вважали за доцільне скористатися середовищем PascalABC.NET (зрозуміло, з дозволу авторів середовища С. С. Михалкович і М. Е. Абрамяна, доцентів Ростовського державного університету). Наш вибір був обумовлений наступними причинами:
1) традиційні Турбо-середовища (той же Borland Pascal) є DOS-середовищами, т. Е. Для роботи в них потрібно використовувати стандарти операційної системи MS DOS, що за часів Windows є, щонайменше, анахронізмом, оскільки дані навички навряд чи кому-то знадобляться в майбутньому;
2) можливості середовища PascalABC.NET, на відміну від інших середовищ, максимально наближені до Delphi, що дозволяє більш естестественно перейти від програмування навчального до програмування візуальному і об'єктно;
3) графіка PascalABC.NET практично збігається з графікою Delphi;
4) понеділок PascalABC.NET містить прекрасну і зрозумілу довідку російською мовою з безліччю прикладів;
5) крім того, в середу включений комп'ютерний задачник з можливістю автоматичної перевірки рішень.
У книзі прийняті наступні позначення:
Матеріал посібника необхідно вивчати послідовно - символ використовується для виділення визначень або інструкцій;

- так позначаються підказки і важливі зауваження;   - при зустрічі з таким символом слід показати викладачеві (консультанту) результати виконання завдань - так позначаються підказки і важливі зауваження;
- при зустрічі з таким символом слід показати викладачеві (консультанту) результати виконання завдань. Якщо ви працюєте самостійно, то пропустіть позначений цим символом текст;
- даними символом позначені прості розділи і завдання. Якщо для вас вони не становлять труднощів, то їх можна пропускати. Якщо будь-які сумніви є, краще виконати;
- зірочкою позначені деякі лабораторні роботи, розділи та завдання, вивчення або виконання яких представляє певні труднощі для початківців;
- двома зірочками позначені розділи і завдання, що є додатковими для початківців і обов'язковими для тих, хто планує використовувати даний програмний продукт у професійній діяльності.

ЩО ТАКЕ «ПРОГРАМУВАННЯ»

1. Що таке «програма» і як її виконує комп'ютер
Комп'ютер являє собою пристрій для виконання програм. «Мозком» комп'ютера є процесор, який покликаний «розуміти» і виконувати ці програми.
1 Програма - це послідовність приписів (команд), записаних на мові, зрозумілій виконавцеві.
У нашому випадку виконавцем є процесор. А що за мову, який цей процесор розуміє? Як відомо, комп'ютер зберігає інформацію, закодовану за допомогою двійкових чисел. Програма для комп'ютера -
це звичайна інформація, тому і вона зберігається у вигляді набору двійкових чисел. Але згідно з визначенням це не простий набір чисел, а саме набір команд, зрозумілих процесору. Поєднання команд, які розуміє процесор, і правил їх написання прийнято називати машинною мовою, або мовою програмування низького рівня. Наприклад, припустимо, що якийсь процесор розуміє наступні операції:
00000001 - скласти;
00000111 - розділити;
00000100 - переслати з одного осередку в іншу.
Правило написання команди для сучасного процесора виглядає наступним чином:
<Код операції> <адреса першого операнда> <адреса другого операнда>. Тут під операндом розуміється деяке значення, з яким проводиться операція; адреса операнда - це адреса блоку пам'яті, в якому знаходиться
операнд.
В такому випадку, наприклад, фрагмент програми, що визначає середнє арифметичне чотирьох чисел, буде виглядати наступним чином (див. Таблицю):

Приклад комп'ютерної програми в довічних кодах

Код операції Адреса 1 Адреса 2 Коментарі 00000001 00011000 00011001 Скласти числа, що зберігаються в блоках пам'яті за адресами 00011000 та 00011001, і помістити результат в блок пам'яті з адресою 00011001 00000001 00011001 00011011 Скласти отриману суму з блоку пам'яті 00011001 і третє число, яке розташоване на блоці пам'яті 00011011, і помістити результат в блок пам'яті з адресою 00011011 00000001 00011011 00011110 Скласти отриману суму з блоку пам'яті 00011011 і четверте число, розміщене в блоці пам'яті 00011110, і помістити результат в блок пам'яті з адресою 00011110 0 0000111 00011110 00111110 Розділити отриману суму на число, яке зберігається за адресою 00111110, і помістити за цією ж адресою результат 00000100 00111110 10111000 Переслати вміст блоку пам'яті з адресою 00111110 в блок пам'яті з адресою 10111000

Зрозуміло, у реальному програми є спеціальний заголовок, за яким процесор визначає, що це саме програма, і на практиці програми істотно складніше найпростішого прикладу, наведеного тут.
Справедливості заради варто відзначити, що в деяких рідкісних випадках за допомогою машинних кодів пишуться програми для спеціальних пристроїв (пральні машини, керовані ракети і т. П.), В які вбудовані відносно слабкі процесори і обмежена оперативна пам'ять, але від яких вимагається практично миттєве виконання команд. Програми, написані за допомогою машинних кодів, займають значно меншу пам'ять, ніж створені за допомогою інших засобів, і, як наслідок, швидше виконуються.

2. Мови високого рівня. Компілятори та інтерпретатори
Технологія написання програм на машинних мовах вельми трудомістка і для створення великих програм фактично непридатна. Саме тому стали вигадувати мови високого рівня, т. Е. Мови, за допомогою яких можна
було б легко і зручно розробляти великі програми. Крім того, подібні мови повинні бути доступні великому колу людей. Це означає, що в кінцевому підсумку мова програмування повинна максимально наблизитися до природної мови людини. Поки ідеал не досягнуть, але мови програмування вже стали близькі до природних мов. Але як в цьому випадку процесор розуміє програми, написані на цих мовах? Та ніяк. Справа в тому, що мови високого рівня створені для того, щоб люди могли природним чином сформулювати перелік дій, які виконуються комп'ютером. Так як комп'ютери мов високого рівня не розуміють, придумали спеціальні програми, які називаються трансляторами.
2 Транслятор (translator) - це програма, призначена для перекладу (трансляції) опису алгоритму з одного формального мови на іншу.
Алгоритм створення програми тепер передбачає використання кроку
трансляції (рис. I).

Мал. I. Алгоритм трансляції програми

Етап перетворення програми, написаної на мові високого рівня, в машинний код реалізується в двох варіантах. У першому випадку транслятор бере з файлу програму на мові високого рівня і переводить її всю цілком в програму на машинній мові, створюючи окремий файл з розширенням EXE. Програму, записану в такий файл, прийнято називати виконуваним модулем, а транслятор, який виконує такий переклад, називають компілятором.
У другому випадку транслятор бере з файлу з програмою на мові високого рівня по одному приписом (команді), транслює її в машинний код і передає отриману команду процесору для виконання. Такий транслятор називають інтерпретатором.
Існують кілька сотень мов програмування високого рівня. Кожен з них призначений для вирішення певного кола завдань, наприклад:
BASIC і FORTRAN - для обчислень, PROLOG - для створення систем штучного інтелекту, Pascal - для навчання програмуванню, COBOL - для обробки великих обсягів даних, С ++ - для професійного програмування великих додатків і т. П.
Етап перетворення програми, написаної на мові високого рівня, в машинний код реалізується в двох варіантах Мова програмування - це спеціально обумовлений набір символів, слів і мнемонічних (особливим чином організованих і заздалегідь обумовлених) скорочень, що використовуються для запису набору команд (програми), які сприймаються комп'ютером.
Синтаксис мови програмування - це перелік правил записи програм з елементів цієї мови.
Програмування - це технологія розробки програм за допомогою мов програмування.
Одним із сучасних широко поширених мов програмування є Паскаль. Він був створений на рубежі 1960-70-х років швейцарським ученим Ніклаус Віртом і спочатку призначався для навчання програмуванню. В даний час дана мова використовується і для професійної розробки малих і середніх комп'ютерних систем.

3. Технологія створення програм
Сучасне програмування фактично є промисловою технологією, за допомогою якої створюються програми та комп'ютерні системи.
Праця цей найчастіше колективний, хоча не виключені деякі успіхи індивідуальних розробників. Наприклад, MS Windows і MS Office - це результат роботи кількох сотень професійних програмістів, аналітиків, проектувальників, менеджерів і дизайнерів фірми Microsoft (США). А, скажімо, архіватор WinRAR реалізував індивідуальний розробник Євген Рошал (Росія).
Схематично технологія створення програм проходить наступний ряд етапів:
а) постановка завдання, в рамках якої в загальному вигляді описуються передбачувані можливості програми;
б) проектування програми, т. е. розробка структури, інтерфейсу і деталізованих можливостей майбутньої програми (аж до опису конкретних алгоритмів); в рамках проектування реалізується розбиття програми на незалежні підпрограми (т. е. на функціональні фрагменти, що представляють собою деякі макрокоманди типу «відредагувати файл», «відправити файл по електронній пошті», «знайти фрагмент» і т. п.);
в) програмування - на даному етапі завдання на написання підпрограм лунають програмістам, які реалізують описані алгоритми на мові програмування;
г) налагодження і тестування програм - це обов'язковий етап, що дозволяє з'ясувати, чи робить програма (підпрограма) то, на що вона розрахована, і наскільки надійно вона це робить; слід зазначити, що важливим етапом тестування є перевірка того, як дана підпрограма працює спільно з іншими підпрограмами, що входять в один проект.
На закінчення слід зазначити, що кожна програма має свій життєвий цикл, який тим більше, чим більше у програми можливостей з налаштування і чим легше вона модифікується. Саме тому зараз стає все більш популярна технологія, яка називається OpenSource, що припускає надання користувачам програми разом з її кодом на мові програмування високого рівня.

4. Системи і середовища програмування
Спочатку інструментарій програмістів включав ряд засобів розробки, в які, крім мови програмування, входили:

  • спеціалізовані або звичайні текстові редактори, за допомогою яких писалися тексти програм;
  • транслятори, які перевіряли правильність дотримання синтаксису мови програмування і, якщо синтаксис не порушений, перетворювали текст програми в машинний код;
  • спеціальні отладчики, які дозволяли, наприклад, покомандно виконувати програму і дивитися одержувані результати.

Сьогодні подібними засобами ніхто не користується, оскільки розроблені більш зручні інтегровані інструментальні середовища, що забезпечують виконання повного комплексу взаємопов'язаних робіт зі створення програм.
Фактично ці середовища включають в себе перераховані вище компоненти. Більш того, середовища постійно удосконалюються і все більш автоматизують процес створення програм.
Можна відзначити три покоління подібних середовищ. До першого покоління відносяться Турбо-середовища, в яких фактично інтегровані спеціалізований текстовий редактор, транслятор і відладчик. Підвищення продуктивності забезпечувалося тим, що в рамках одного середовища можна було займатися підготовкою, трансляцією і налагодженням програм. До подібних середовищ можна віднести середовища Borland Pascal 7.0, Turbo C та ін.
Друге покоління - це візуальні середовища програмування. Такі середовища, крім того що володіють усіма можливостями Турбо-середовищ, надають розробникові величезна кількість готових фрагментів програм. Ці фрагменти згруповані в різні підміню у вигляді окремих піктограм (іконки), і їх включення в програму розробника реалізується перетягуванням цієї піктограми в потрібне вікно за допомогою миші. Подібний підхід дозволив істотно збільшити швидкість розробки програм, що мають стандартні інтерфейси (кнопки, вікна, обробники подій і т. П.). До даного виду програмного забезпечення можна віднести Delphi (мова програмування Object Pascal), Borland C ++ Builder, JBuilder (мова Java) і ін.
І, нарешті, CASE-середовища програмування, що представляють собою просто конструктори програм, в рамках яких або взагалі не треба програмувати (якщо не брати до уваги малювання будь-яких схем взаємодії готових компонентів), або програмувати лише вид вікон, що забезпечують інтерфейс готової системи. Подібні середовища мають максимальну на сьогоднішній день автоматизацією проектування і реалізації програм і дозволяють
найбільш швидко створювати різні спеціалізовані інформаційні системи. Серед подібних засобів можна назвати Vantage Team Builder (West- mount I-CASE), Designer / 2000, ERwin + BPwin і CASE.Аналітік.

А що за мову, який цей процесор розуміє?
Але як в цьому випадку процесор розуміє програми, написані на цих мовах?