
- •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
Використання регулярних виразів у програмах.
Регулярні вирази надають потужний, гнучкий і ефективний метод обробки тексту. Обширні можливості зіставлення шаблонів, що надаються регулярними виразами, дозволяють швидко аналізувати великі обсяги тексту, відшукуючи в них певні символьні шаблони, перевіряти текст на відповідність певним заздалегідь шаблонами (наприклад, формату адреси електронної пошти), витягувати, змінювати, замінювати або видаляти підрядка тексту, а також додавати витягнуті рядки в колекцію для формування звітів. Регулярні вирази - це незамінний інструмент для багатьох програм, в яких ведеться робота з рядками або аналіз об'ємних блоків тексту.
Як працюють регулярні вирази
Основа обробки тексту за допомогою регулярних виразів - це підсистема обробки регулярних виразів, представлена в платформі. NET Framework об'єктом System.Text.RegularExpressions.Regex. Мінімальний набір відомостей, який потрібно надати підсистемі обробки регулярних виразів для обробки тексту за допомогою регулярних виразів, зводиться до двох речей.
Шаблон регулярного виразу, який потрібно знайти в тексті.
У платформі. NET Framework шаблони регулярних виразів визначаються з використанням особливого синтаксису або мови, сумісного з регулярними виразами Perl 5 і володіє деякими додатковими можливостями (наприклад, він підтримує зіставлення справа наліво). Для отримання додаткової інформації див Елементи мови регулярних виразів - короткий довідник.
Текст, який потрібно проаналізувати за допомогою шаблону регулярного виразу.
Методи класу Regex дозволяють виконувати наступні дії:
Визначити, чи зустрічається у вхідному тексті шаблон регулярного виразу, можна шляхом виклику методу IsMatch. Приклад використання методу IsMatch для перевірки тексту див Практичний посібник. Перевірка рядків на відповідність формату електронної пошти.
Витягти з тексту одне або всі входження, відповідні шаблоном регулярного виразу, можна шляхом виклику методу Match або Matches. Перший метод повертає об'єкт Match, надає відомості про збіг в тексті. Другий метод повертає колекцію MatchCollection, до якої входять об'єкти Match для всіх збігів, знайдених в проаналізованому тексті.
Замінити текст, відповідний шаблоном регулярного виразу, можна шляхом виклику методу Replace. Приклади використання методу Replace для зміни формату дати і видалення неприпустимих символів з рядка см. в розділах Практичний посібник. Виняток неприпустимих символів з рядка і Приклад. Зміна форматів дати.
Загальні відомості про об'єктної моделі регулярних виразів див Об'єктна модель регулярних виразів.
Приклади регулярних виразів
У класі String є ряд працюючих з рядками методів пошуку і заміни, які можна використовувати для пошуку рядків-літералів в більш великих рядках. Регулярні вирази найбільш корисні, якщо потрібно знайти в крупній рядку одну або кілька подстрок або виявити шаблони в рядку, як показано в наступних прикладах.
hs600312.collapse_all (ru-ru, VS.110). gifПрімер 1. Заміна подстрок
Припустимо, список розсилки містить записи, в яких, крім імені та прізвища, може вказуватися звернення ("Mr.", "Mrs.", "Miss" або "Ms."). Якщо при створенні міток для конвертів по такому списку вказувати звернення не потрібно, можна використовувати для видалення звернень регулярний вираз, як показано в наступному прикладі.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = "(Mr\\.? |Mrs\\.? |Miss |Ms\\.? )";
string[] names = { "Mr. Henry Hunt", "Ms. Sara Samuels",
"Abraham Adams", "Ms. Nicole Norris" };
foreach (string name in names)
Console.WriteLine(Regex.Replace(name, pattern, String.Empty));
}
}
Шаблон регулярного виразу (Mr \.? | Mrs \.? | Miss | Ms \.?) Збігається з будь-яким входженням "Mr", "Mr.", "Mrs", "Mrs.", "Miss", "Ms або "Ms. ". Виклик методу Regex.Replace призведе до заміни знайдених при зіставленні подстрок на String.Empty; іншими словами, знайдений підрядок видаляється з вихідної рядка.
hs600312.collapse_all (ru-ru, VS.110). gif
Приклад 2. Визначення повторюваних слів
Випадкове повторення слів - часта помилка письменників. Для виявлення повторюваних слів можна використовувати регулярний вираз, як показано в наступному прикладі.
using System;
using System.Text.RegularExpressions;
public class Class1
{
public static void Main()
{
string pattern = @"\b(\w+?)\s\1\b";
string input = "This this is a nice day. What about this? This tastes good. I saw a a dog.";
foreach (Match match in Regex.Matches(input, pattern, RegexOptions.IgnoreCase))
Console.WriteLine("{0} (duplicates '{1}') at position {2}",
match.Value, match.Groups[1].Value, match.Index);
}
}
При виклику методу Regex.Matches параметри регулярного виразу задані як RegexOptions.IgnoreCase. Це означає, що операція зіставлення не враховуватиме регістр і код в прикладі буде вважати підрядок "This this" повторюваної.
Зверніть увагу, що вхідні рядок містить підрядок "this? This". Проте через розділяє знака пунктуації повторенням це не вважається.
hs600312.collapse_all (ru-ru, VS.110). gif
Приклад 3. Динамічне побудова регулярного виразу, що враховує мова і регіональні параметри.
У наступному прикладі демонструється міць регулярних виразів у поєднанні з гнучкістю, яка забезпечується компонентами глобалізації платформи. NET Framework. У прикладі об'єкт NumberFormatInfo використовується з метою визначення формату значень валюти для поточної мови і регіональних параметрів. Потім отримані відомості використовуються для динамічного формування регулярного виразу, що виділяє в тексті значення валюти. Для кожного збігу виділяється підгрупа, яка містить числову рядок, яка потім перетвориться в значення типу Decimal, після чого обчислюється наростаючий підсумок.
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
// Define text to be parsed.
string input = "Office expenses on 2/13/2008:\n" +
"Paper (500 sheets) $3.95\n" +
"Pencils (box of 10) $1.00\n" +
"Pens (box of 10) $4.49\n" +
"Erasers $2.19\n" +
"Ink jet printer $69.95\n\n" +
"Total Expenses $ 81.58\n";
// Get current culture's NumberFormatInfo object.
NumberFormatInfo nfi = CultureInfo.CurrentCulture.NumberFormat;
// Assign needed property values to variables.
string currencySymbol = nfi.CurrencySymbol;
bool symbolPrecedesIfPositive = nfi.CurrencyPositivePattern % 2 == 0;
string groupSeparator = nfi.CurrencyGroupSeparator;
string decimalSeparator = nfi.CurrencyDecimalSeparator;
// Form regular expression pattern.
string pattern = Regex.Escape( symbolPrecedesIfPositive ? currencySymbol : "") +
@"\s*[-+]?" + "([0-9]{0,3}(" + groupSeparator + "[0-9]{3})*(" +
Regex.Escape(decimalSeparator) + "[0-9]+)?)" +
(! symbolPrecedesIfPositive ? currencySymbol : "");
Console.WriteLine( "The regular expression pattern is:");
Console.WriteLine(" " + pattern);
// Get text that matches regular expression pattern.
MatchCollection matches = Regex.Matches(input, pattern,
RegexOptions.IgnorePatternWhitespace);
Console.WriteLine("Found {0} matches.", matches.Count);
// Get numeric string, convert it to a value, and add it to List object.
List<decimal> expenses = new List<Decimal>();
foreach (Match match in matches)
expenses.Add(Decimal.Parse(match.Groups[1].Value));
// Determine whether total is present and if present, whether it is correct.
decimal total = 0;
foreach (decimal value in expenses)
total += value;
if (total / 2 == expenses[expenses.Count - 1])
Console.WriteLine("The expenses total {0:C2}.", expenses[expenses.Count - 1]);
else
Console.WriteLine("The expenses total {0:C2}.", total);
}
}
// The example displays the following output:
// The regular expression pattern is:
// \$\s*[-+]?([0-9]{0,3}(,[0-9]{3})*\.?[0-9]+)
// Found 6 matches.
// The expenses total $81.58.
Лекція №12
Тема: Використання зовнішніх модулів у програмних продуктів.
Мета: Придбати знання та практичні навички у використанні зовнішніх модулів при розробці вланих програм.
Перелік питань, що розглядаються на лекції:
1. Призначення зовнішніх компонентів
2. Установка й видалення зовнішніх компонентів
3. Установка й видалення бібліотек компонентів
4. Запуск зовнішніх програм і файлів