Стаття Pascal та Delphi
Важко розповісти щось нове у тому, що добре відомо всім. Дійсно, навряд чи знайдеться в нашій країні програміст або просто випускник середньої школи, який не знав (чи не чув) про цю мову програмування. Основні концепції мови було розроблено у 1967-1968 р. професором Ніколаусом Віртом (Niklaus Wirth) (Біографію Вірта можна прочитати наhttp://cc.kzoo.edu/
Сувора типізація дозволила відразу на порядок знизити кількість помилок, що з'являються внаслідок неуважності або банальних друкарських помилок. До речі, для тих, хто бажає використовувати у своїх програмах прямий доступ до даних без жодних обмежень, мова надала можливість створення записів з варіантами, які можна трактувати відповідно до своїх потреб. Але при цьому програміст повинен завжди явно вказувати, з яким типом даних у конкретній змінній він хоче працювати. Єдиним недоліком мови, що існувала на той час, була відсутність підтримки модульності. Програміст повинен був компілювати весь проект цілком, з усіма процедурами і функціями, що входять до нього (щоправда, можливість підтримки викликів підпрограм із заздалегідь скомпільованих і скомпонованих бібліотек була присутня з самого початку). Але, втім, це не дивно — нагадаю, що мова була призначена для навчання.
Крім створення інтегрованої оболонки, Borland ввів Pascal підтримку модульного програмування, а починаючи з версії 5, і підтримку об'єктно-орієнтованого програмування.
В Україні Borland Delphi з'являється наприкінці 1993 р. і відразу ж завойовує широку популярність. Нові версії виходять майже щороку. У них реалізуються нові майстри, компоненти і технології програмування.
Дійсно, процес розробки вDelphi гранично спрощений. Насамперед це відноситься до створення інтерфейсу, на який йде 80% часу розробки програми. Ви просто поміщаєте потрібні компоненти на поверхню Windows-вікна (у Delphi воно називається формою) і налаштовуєте їх властивості за допомогою спеціального інструменту (Object Inspector). З його допомогою можна пов'язати події цих компонентів (натискання на кнопку, вибір мишею елемента у списку і т.д.) з кодом його обробки - і ось простий додаток готовий. Причому розробник отримує своє розпорядження потужні засоби налагодження (аж до покрокового виконання команд процесора), зручну контекстну довідкову систему (зокрема і з Microsoft API), кошти колективної роботи над проектом, просто не перерахувати. Ви можете створювати компоненти ActiveX без використання Microsoft IDL, розширювати можливості web-сервера (скрипти на стороні сервера), практично нічого не знаючи про HTML, XML чи ASP. Можна створювати розподілені програми на базі СОМ та CORBA, Інтернет- та intranet-додатків, використовуючи для доступу до даних Borland DataBase Engine, ODBC-драйвери або Microsoft ADO. Підтримка багатоланкової технології (multi-tiered) доступу до даних, що з'явилася, починаючи з Delphi 3, дозволяє створювати масштабовані додатки (щодо слабо залежать від сервера БД) за рахунок перенесення методів обробки інформації (бізнес-правил) на середню ланку.
Ви можете створювати власні компоненти, імпортувати ОСХ-компоненти, створювати «шаблони» проектів і «майстрів», що створюють «заготівлі» проектів. Мало того, Delphi надає розробнику інтерфейс для зв'язку ваших програм (або зовнішніх програм) з інтегрованою оболонкою Delphi (IDE).
Таким чином, ви можете використовувати Delphi для створення як найпростіших додатків,на розробку яких потрібно 2-3 години, і серйозних корпоративних проектів, призначених до роботи десятків і сотень користувачів. Причому для цього можна використовувати останні віяння у світі комп'ютерних технологій з мінімальними витратами часу і сил.
Ну, і одна з останніх новин від Inprise обіцяє, що в найближчому майбутньому ви зможете переносити програми, розроблені в Delphi, на платформу Linux. Більш детальну інформацію про Delphi можна отримати на сайтах www.inprise.com і www.inprise.ru . Існує велика кількість сайтів, присвячених Delphi, наприклад "Королівство Delphi" -delphi.vitpc.com, Torry's Delphi Pages -www.torry.ru. Останній містить велику кількість посилань на ресурси, пов'язані з Delphi. Ну а якщо ви вже давно знайомі з цим продуктом, то на сайті www.brainbench.com можна безкоштовно протестуватися в якості програміста Delphi 3 і отримати поштою сертифікат.
Олександр Олександрівський, [email protected]
Стаття із журналу BYTE/Україна, Березень 2000
Для того, щоб наочно продемонструвати використання описаних мов на практиці, нами було обрано завдання, в якому потрібно було ввести зі стандартного введення або з файлу ряд цілих чисел, а потім вивести лише непарні з них, причому у зворотному порядку прямування. Це одне з найпростіших завдань, яке істотно вимагає для свого вирішення роботи з масивами, циклами, розгалуженням та введенням/виводом, а також дозволяє продемонструвати виклики підпрограм. При цьому вона доступна для огляду і легко сприймається.
Листинг. Object Расал
Program BYTE_Example; // Oject Pascal, Delphi 5 // Прагма, що робить додаток консольним
uses SysUtils, Classes; // Використовувані зовні модулі
type ТМуArray = class (TObject) // Клас - динамічний масив private FArray : array of integer; // Поле зберігання даних FPos : integer; // Лічильник введених елементів public function GetLastNumber:integer; // номер останнього елемента function GetElement(Poz:integer):integer; // Елемент за номером procedure AddElement(Value:integer); // Додавання до кінця масиву constructor create; // Конструктор Destructor Destroy; override; //Деструктор end;
const delta = 100; // Збільшення динамічного масиву
procedure TMyArray.AddElenient(Value: integer); begin if FPos≫High(FArray) then // Потрібно збільшити масив? SetLength(FArray,Length(FArray)+delta); // Збільшимо до Delta FArray[FPos]:=Value; // Додаємо елемент Inc(FPos); end;
constructor ТМуArray.create; // Конструктор динамічного масиву begin inherited, // Викликаємо конструктор предка SetLength(FArray,delta); // Створили масив із delta-елементів FPos:=0; // Лічильник елементів масиву end;
destructor ТМуАrrау.Destroy; // Деструктор динамічного масиву begin // Знищуємо об'єкт FArray:=nil; // Видаляємо масив inherited; // Викликаємо деструктор предка end;
function ТМуАrrау.GetElement(Poz: integer): integer; begin result := FArray[Poz] end; // Читаємо елемент за номером
function ТМуАrrау.GetLastNumber: integer; begin result :=FPos-1; end; // Отримуємо кількість елементів масиву
процедура ReadElementsFromFile; // Читаємо з файлу та виводимо непарні на екран
var F: file of Integer; // Файл із цілими числами МуАrrау: ТМуАrrау; // Об'єкт зберігання чисел i: integer; // Змінна циклу begin МуArray := ТМуArray. create; // Створили об'єкт-масив AssignFile(F, 'TestFile.dat'); // Відкриваємо файл reset(F); while not eof (F) do begin read(F,I); // Читаємо елемент МуArray.AddElement(I); // Додаємо елемент масив end; closeFile(F); // Закриваємо файл for i := МуArray.GetLastNumber downto 0 do // Виводимо у зворотному порядку if МуArray.GetElement(i) mod 2 <> 0 then // Виводимо лише непарні writeln( intTostr(MyArray.GetElement(i))); // Елементи в колонку МуArray.Free; // Знищуємо масив end;
begin // Головний модуль ReadElementsFromFile end.