
- •1. Основні терміни технології програмування
- •2. Класифікація програмного забезпечення
- •Поняття життєвого циклу розробки програмного забезпечення.
- •Етапи розробки
- •Базові моделі розробки програмних продуктів.
- •Вимоги до методології та технології розробки пп
- •Каскадна модель
- •3. Модель прототипування програмного продукту
- •4. Спіральна модель
- •5. Модель rad
- •6. Модель екстремального програмування (xp)
- •7. Модель msf (Microsoft Solutions Framework)
- •Принципи й види налагодження.
- •Аксіоми налагодження.
- •Автономне налагодження модуля.
- •Комплексне налагодження програмного засобу.
- •Інструменти розробки програмних засобів.
- •Інструментальні середовища розробки й супроводу програмних засобів.
- •Інструментальні середовища програмування.
- •Поняття комп'ютерної технології розробки програмних засобів і її робочі місця.
- •Інструментальні системи технології програмування.
- •Приклад реалізації класу Log.
- •Розробка програмного продукту з двома потоками
- •Визначення крапок контролю програмного продукту.
- •Визначення кількості викликів
- •Визначення ступеня покриття
- •Фундаментальні проблеми профілювання.
- •Причини рефакторингу
- •Підстави для проведення рефакторингу
- •Прийоми рефакторингу
- •Автоматизований рефакторинг
- •1. Принципи повторного використання елементів програм
- •2. Створення шаблонів форм у вигляді файлів
- •3. Використання шаблонів форм у новому проекті
- •4. Збереження шаблонів форм в депозитарії
- •5. Використання шаблонів форм із депозитарію
- •Шаблони класів на мові програмування с#.
- •Приклади шаблонів (класів шаблонів).
- •1. Використання підпрограм в оброблювачах подій
- •2. Звертання до активного компонента не за ім’ям
- •2. Обробка групи компонентів
- •4. Обробка компонентів як масиву
- •5. Сортування даних у компонентах
- •1. Принципи модульного програмування
- •2. Принцип «приховання даних»
- •3. Поняття модуля в Object Pascal
- •4. Структура модульного файлу
- •5. Створення модуля в Object Pascal
- •6. Створення модуля з переліком стандартних діалогів
- •7. Використання текстових констант у модулях
- •8. Створення підпрограм для обробки компонентів
- •1. Поняття dll
- •2. Створення dll бібліотеки в Delphi
- •3. Внесення форм в dll
- •4. Використання dll бібліотеки
- •Питання для самоконтролю
- •Використання регулярних виразів у програмах.
- •1. Призначення зовнішніх компонентів
- •2. Установка й видалення зовнішніх компонентів
- •3. Установка й видалення бібліотек компонентів
- •4. Запуск зовнішніх програм і файлів
- •Питання для самоконтролю
- •1. Загальні принципи технології com
- •2. Робота з com-сервером Microsoft Word
- •Робота з документами в Microsoft Word
- •Використання шаблону для формування документів
- •Робота з таблицями
- •Вставка малюнків і їх форматування
- •1. Операції з Com-Сервером Microsoft Excel
- •Робота із книгами в Microsoft Excel
- •Робота з аркушами книги в Microsoft Excel
- •Використання шаблону для формування книги
- •Формування таблиці
- •6. Форматування чарунок
- •Види довідкових систем
- •Інші засоби підтримки користувача
- •2.Формати довідників
- •3.Створення довідки у форматі html Help
- •4.Створення контекстної довідки
- •5.Інтеграція довідкового файлу в додаток
- •Перелік шаблонів, що породжують
- •Перелік структурних шаблонів
- •Перелік шаблонів поведінки
- •Призначення патерну Singleton
- •Реалізація патерну Singleton
- •Результати застосування патерну Singleton
- •Призначення патерна Observer
- •Постановка проблеми, що вирішується за допомогою патерна
- •Структура патерна Observer
- •Приклад патерна Observer
- •Реалізація патерна Observer
- •Реалізація патерну Observer: до та після
- •Призначення патерну Strategy
- •Опис патерну Strategy
- •Реалізація патерну Strategy
- •Призначення патерна Factory Method
- •Опис патерну Factory Method
- •Реалізація патерна Factory Method
4. Обробка компонентів як масиву
Групу однотипних компонентів можна обробляти як масив.
Наприклад, нехай є форма виду:
Для кнопки напишіть код, який підраховує середнє значення тільки в заповнених полях і відображає результат у полі під кнопкою. Для відокремлення поля з результатом від інших полів задамо у властивості Tag цього поля значення 1.
Для кнопки напишемо код:
procedure TForm1.Button1Click(Sender: TObject);
var i,kol:integer; s:real;
begin
//спочатку кількість і сума рівні 0
kol:=0;
s:=0;
//у циклі проходимо по всіх компонентах
for i:=0 to controlcount-1 do
//якщо поточний компонент текстове поле
if controls[i].classname='TEdit' then
//якщо це не поле результату і поле не порожнє
if (controls[i].tag<>1) and (tedit(controls[i]).text<>'') then
begin
//додаємо його до суми
s:=s+strtofloat(tedit(controls[i]).text);
//збільшуємо кількість полів на 1
kol:=kol+1;
end;
//для видачі результату треба знайти поле із властивістю Tag=1
//у циклі проходимо по всіх компонентах
for i:=0 to controlcount-1 do
//якщо поточний компонент текстове поле
if controls[i].classname='TEdit' then
//якщо це поле результату (tag=1)
if controls[i].tag=1 then
//якщо кількість не 0 (є не пусті поля у масиві)
if kol<>0 then
//у полі результату відображаємо середнє
//і округляємо до 2 знаків
tedit(controls[i]).Text:=floattostr(roundto(s/kol,-2))
//якщо кількість дорівнює 0 (поля у масиві не заповнювалися)
else
//поле результату очищаемо
tedit(controls[i]).Text:='';
end;
Для роботи цього коджу треба підключити модуль Math.
5. Сортування даних у компонентах
Розглянемо принцип сортування даних у текстових полям методом «пухирця». Для цього методу існує стандартний алгоритм, яком ми і скористаємося.
Нехай є форма виду:
Для роботи сортування необхідно виконати єдину умову: текстові поля повинні створюватися послідовно і розміщуватися на формі у порядку створення.
procedure TForm1.Button1Click(Sender: TObject);
var i,k:integer; b:real;
begin
case radiogroup1.ItemIndex of
//якщо обрано перший перемикач
0:
begin
//сортуємо текстові поля за зростанням
for k:= controlcount-2 downto 1 do
for i:= 0 to k - 1 do
if controls[i].classname='TEdit' then
if strtofloat(tedit(controls[i]).text) > strtofloat(tedit(controls [i+1]).text) then
begin
b:= strtofloat(tedit(controls[i]).text);
tedit(controls[i]).text:= tedit(controls[i+1]).text;
tedit(controls[i+1]).text:= floattostr(b);
end;
end;
//якщо обрано другий перемикач
1:
begin
//сортуємо текстові поля за убуванням
for k:= controlcount-2 downto 1 do
for i:= 0 to k - 1 do
if controls[i].classname='TEdit' then
if strtofloat(tedit(controls[i]).text) < strtofloat(tedit(controls [i+1]).text) then
begin
b:= strtofloat(tedit(controls[i]).text);
tedit(controls[i]).text:= tedit(controls[i+1]).text;
tedit(controls[i+1]).text:= floattostr(b);
end;
end;
end;
end;
Питання для самоконтролю
1. Для цього створюють універсальні підпрограми в оброблювачах подій?
2. Як звернутися до поточного компонента на формі не за ім'ям? Приклад.
3. Який метод використовують для переходу на наступний компонент?
4. Як звернутися до довільного компонента на формі не за ім'ям? Приклад.
5. Як визначити тип компонента на формі? Приклад.
6. Як визначити загальну кількість компонентів на формі?
7. Як обробити набір компонентів на формі?
8. Яким чином можна у групі однотипних компонентів відокремити потрібні?
Лекція №9
Тема: Створення програмних модулів.
Мета: Придбати знанння та навчитися створювати власні програмні модулі.
Перелік питань, що розглядаються на лекції:
1. Принципи модульного програмування
2. Принцип «приховання даних»
3. Поняття модуля в Object Pascal
4. Структура модульного файлу
5. Створення модуля в Object Pascal
6. Створення модуля з переліком стандартних діалогів
4. Використання текстових констант у модулях
8. Створення підпрограм для обробки компонентів