Макроекономічні показники України
2013 рік
• Зростання ВВП: -0.8%
• Інфляція: 0.5%
• Безробіття: 8.0%
2012 рік
• Зростання ВВП: 0.2%
• Інфляція: -0.2%
• Безробіття: 8.1%
2011 рік
• Зростання ВВП: 5.2%
• Інфляція: 4.6%
• Безробіття: 8.6%
Зворотній зв'язок
Замовити
загрузка...

Головна:Интерполяционный поліном Лагранжа

року міністерство освіти РФ

Філія Владивостокського Державного Університету Економіки и

Сервісу м. Артеме

Кафедра информационно-математических дисциплин

КУРСОВА РОБОТА з дисципліни «Высокоуровневые методи обробки інформації та программирования».

Студент грн. ИПИ-02-01 Хміль Ксенія Александровна

Керівник викладач Кан Микола Эрикович

Артем 2003

Содержание

|Аннотация |1 | |Запровадження |2 | |Глава 1: | | |1. Еволюція технології програмування |3 | |2. Відмінності функціонального і объектно-ориентированного підходів до |7 | |програмування | | |3. Объектно-ориентированный підхід |12 | |4. Оцінка складності програмних систем |18 | |Глава 2: | | |1. Інтегрована середовище розробки Delphi |24 | |2. Характеристики модулів програмного кошти: | | |2.1. Зв'язність всередині модулів |26 | |2.2. Зчеплення між модулями |26 | |Укладання |27 | |Додаток 1. Вихідний код програмного кошти |28 | |Додаток 2. Блок-схема програмного кошти |35 | |Додаток 3. Блок-схема алгоритму обчислення (третій модуль) |42 | |Додаток 4. Тести – набори перевірочних даних |45 | |Список використаних джерел |47 |

Аннотация

Метою згаданої курсової роботи, присвяченій вивченню высокоуровневых методів обробки інформації та програмування, является:

. систематизація і навіть поглиблення теоретичних і практичних знань за фахом «Прикладна інформатика в экономике»;

. поглиблення навичок програмування мовами високого уровня;

. узагальнення досвіду застосування объектно-ориентированного підходи до технології программирования;

. застосування отриманих знань під час створення програмного продукту, виконує розрахунок значення функцій, заданих таблично.

У порівняні з традиційним функціональним підходом, замість послідовних етапів циклу життя програми вирішення завдання в объектно- орієнтованому підході представляється як ієрархії рівнів, починаючи з вимог користувача і закінчуючи супроводом готової програми. Усі рівні розробляють єдиної середовищі програмування з допомогою одного языка.

Під час створення програмного продукту використовуються высокоуровневые методи обробки інформації та програмування, вміння програмувати мовами високого рівня, зокрема, мовою Pascal, з урахуванням якого створена інтегрована середовище розробки Delphi7.

У першій главі розглядаються объектно-ориентированный підхід до реалізації завдання програмування. Другий розділ є проектної, у ній описані алгоритми розробленого програмного продукту, внутрішні і зовнішні зв'язок між модулями програми, їхню взаємодію. У додатках дано вихідний текст програми розвитку й блок-схема. Курсова робота виконано на листах.

Результатом виконання курсової роботи є підставою створення програмного кошти, які з запровадженого значенням аргументу виводить значення функції, при цьому використана формула интерполяционного полинома Лагранжа.

Введение

Перевага написання програмного продукту мовою високого рівня Pascal у тому, що мова дозволяє чітко реалізувати ідеї структурного програмування і структурної організації даних, цю мову є процедурним. Тобто програма явно описує дії, які необхідні, а результат задається способом отримання його за допомоги деякою процедури – певної послідовності дій. Основними засобами, застосовуваними у тому мові (як та інших процедурних мовами) є величини, присвоювання, цикли, процедури. При побудові процедурної програми необхідно чітко уявляти, що насамперед й у якій послідовності проводитимуться у її виконанні. На відміну від функціональної програми, для побудови якої потрібні скоріш математичні, ніж алгоритмічні мышления.

Під час розробки програмного кошти використовується объектно- орієнтований підхід до технології програмування, що є инженерно-конструкторской технологією, концентрирующей увагу до процесі виконання завдання. Объектно-ориентированный підхід передбачає, що з розробці програми слід визначити класи які у програмі об'єктів і побудовано їх опису, потім створено екземпляри необхідних об'єктів і визначено взаємодія між ними.

Основне завдання (розробити програмний продукт, вычисляющий значення функції заданому значенням аргументу) виконується з допомогою коштів обчислювальної математики. У його основі завдання лежить обчислення значення функції з допомогою интерполяционного полинома Лагранжа. Основні напрями виконання программы:

1. створити модулі, які пропонують поетапне виконання поставленої задачи;

2. створити модулі, виконують обчислення правильно, швидко і корректно;

3. розробити інтерфейс програми, сумісний з Windows-интерфейсом.

Глава 1

1. Еволюція технології программирования

На ранніх етапах розвитку програмування, коли програми писалися в вигляді послідовностей машинних команд, якась технологія програмування була відсутня. Перші кроки з розробки технології листувалися поданні програми як послідовності операторів. Написання послідовності машинних команд передувало складання операторной схеми, що відбиває послідовність операторів і переходи з-поміж них. Операторный підхід дозволив розробити перші програми для автоматизації складання програм – звані складові программы.

Зі збільшенням розмірів програм стали виділяти їх відособлені частини й оформляти їх як підпрограми. Частина таких підпрограм об'єдналася в бібліотеки, у тому числі підпрограми можна було включати у робочі програми і далі викликати із робітників програм. Це початок процедурному програмування – велика програма представлялася сукупністю процедур- підпрограм. Один із підпрограм була головної ролі і з неї починалося виконання программы.

У 1958 року було розроблено перші мови програмування, Фортран і Алгол-58. Програма на Фортрані складалася з головною програми розвитку й деякого кількості процедур – підпрограм та зняття функцій. Програма на Алголе-58 та її наступної версії Алголе-60 являла собою єдине ціле, але мала блочну структуру, що включає головний блок і вкладені блоки підпрограм і функцій. Компілятори для Фортрану забезпечували роздільне трансляцію процедур і наступне об'єднання в робочу програму, перші компілятори для Алгола припускали, що відразу вся програма, роздільний трансляція процедур не обеспечивалась.

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

Таким кроком у поглибленні структурування програм стало так зване структурне програмування, у якому програма загалом і окремі процедури розглядалися як послідовності канонічних структур: лінійних ділянок, циклів і розгалужень. З'явилась би можливість читати і перевіряти програму як послідовний текст, що підвищило продуктивності праці програмістів в розробці й налагодженні програм. З з підвищення структурності програми висунуті вимоги до більшої незалежності підпрограм, підпрограми мають пов'язуватися з що викликають їх програмами лише через передачу їм аргументів, використання у підпрограмах змінних, що належать іншим процедурам чи головною програмі, стало вважатися нежелательным.

Процедурне і структурне програмування торкнулися передусім процес описи алгоритму як послідовності кроків, провідних від варьируемых вихідних даних до згаданої результату. Аби вирішити спеціальних завдань стали розроблятися мови програмування, зорієнтовані конкретний клас завдань: на системи управління базами даних, імітаційне моделювання і т.д.

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

Застосування програм, у найрізноманітніших сферах людської діяльності призвело до необхідність підвищення надійності всього програмного забезпечення. Однією з напрямів вдосконалення мов програмування стало підвищити рівень типізації даних. Теорія типів даних виходить із те, що кожне використовуване у програмі дане належить одному і лише типу даних. Тип даного визначає безліч можливих значень даного й створили набір операцій, допустимих з цього даним. Дане конкретного типу часом то, можливо перетворено на дане іншого типу, але таке перетворення має бути явно представлено у програмі. У залежність від ступеня виконання перелічених вимог можна говорити про рівень типізації тієї чи іншої мови програмування. Прагнення підвищити рівень типізації мови програмування призвело до появи мови Паскаль, який вважається суворо типизированным мовою, хоча у ньому дозволені деякі неявні перетворення типів, наприклад, цілого в речовинне. Застосування суворо типизированного мови під час написання програми дозволяє іще за трансляції вихідного тексту виявити багато помилки використання даних, і цим підвищити надійність програми. Разом з тим сувора типізація сковувало свободу програміста, утрудняла застосування деяких прийомів перетворення даних, часто які у системному програмуванні. Практично разом з Паскалем розробили мову Сі, більшою мірою орієнтований системне програмування і належить до слабко типизированным языкам.

Усі універсальні мови програмування, відмінності в синтаксисі і використовуваних ключових словах, реалізують одні й самі канонічні структури: оператори присвоювання, цикли і розгалуження. У всіх сучасних мовами присутні визначені (базові) типи даних (цілі і речові арифметичні типи, символьний і, можливо, строковый тип), є зокрема можливість використання агрегатів даних, у цьому числі масивів і структур (записів). Для арифметичних даних дозволені звичайні арифметичні операції, для агрегатів даних зазвичай передбачена лише операція присвоювання і можливість звернення до елементам агрегату. Разом про те розробки програми на вирішення конкретної прикладної завдання бажана можливо велика концептуальна близькість тексту програми до опису завдання. Наприклад, якщо вирішення завдання вимагає виконання операцій над комплексними числами чи квадратними матрицями, бажано, щоб у програмі явно були присутні оператори складання, вирахування, множення і розподілу даних типу комплексного числа, складання, вирахування, множення та звернення даних типу квадратної матриці. Вирішення проблеми можливо кількома путями:

. Побудовою мови програмування, що містить якнайбільше типів даних, і вибором кожному за класу завдань деякого підмножини цієї мови. Таку мову іноді називають мовою- оболонкою. На роль языка-оболочки претендував мову ПЛ/1, виявився настільки складним, що Німеччина зірвалася побудувати його формалізоване опис. Відсутність формалізованого описи, проте, знадобилася широкому застосуванню ПЛ/1 як і Західної Європи, і у СССР.

. Побудовою расширяемого мови, що містить невеличке ядро і допускає розширення, яке доповнює мову типами даних, і операторами, що відбивають концептуальну сутність конкретного класу завдань. Таку мову називають языком-ядром. Як язык-ядро розробили мови Симула і Алгол-68, які отримали поширення, але які великий вплив розробці інших мов таки программирования.

Подальшим розвитком другого шляху з'явився объектно-ориентированный підхід до программированию.

2. Відмінності функціонального і объектно-ориентированного підходів программирования

Є дві принципово відмінних підходи до технології програмування: инженерно-конструкторский і математичний. Перший грунтується у тому, що виготовлення програмного продукту по заданим вимогам суть ітеративний процес послідовної реалізації алгоритму виконання завдання. Другий підхід грунтується на математичному доказі правильності програми розвитку й автоматичному (чи напівавтоматичному) отриманні готової програми з заданим спецификациям.

Объектно-ориентированный підхід до технології програмування – инженерно-конструкторский, у якому увагу концентрується на процесі виконання завдання. У цій статті авторами узагальнюється досвід використання объектно-ориентированной технології розробки середовища объектно-ориентированного програмування та деякі прикладних програм, що працюють у цієї среде.

Оцінимо переваги та недоліки найпоширенішої інженерної технології – функціональної. Існує головні проблеми функціонального подхода:

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

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

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

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

Можливість застосування вищевказаної схеми забезпечують три єдині для всіх рівнів кошти: объектно-ориентированный мову, середовище програмування, база даних (бібліотека класів). Ці цифри у явному вигляді становлять основу будь-який объектно-ориентированной технології. Розглянемо їх основні характеристики.

Объектно-ориентированный мову програмування полягає в понятті об'єкта як замкнутої незалежної сутності, яка взаємодіє з зовнішнім світом через суворо певний інтерфейс як переліку повідомлень, які об'єкт може приймати. Об'єкт має властивостями, поведінкою і станом. Об'єкти з властивостями і поведінкою об'єднують у класи. Програма на объектно-ориентированном мові є сукупність описів класів. Класи, своєю чергою, є описи властивостей та поведінки складових об'єктів. Властивості видаються іншими, зазвичай, простішими об'єктами. Поведінка описується обменивающимися повідомленнями объектами.

Объектно-ориентированным мовам притаманні такі характеристики:

. абстрактні типи данных;

. приховання реалізації зовнішнього інтерфейсу (инкапсуляция);

. успадкування властивостей і навички поведінки объектов;

. динамічний зв'язування імені зі значением;

. поліморфізм імен сообщений;

. автоматичне управління памятью.

Суто об'єктно-орієнтовані мови, такі як Smalltalk, Eiffel, мають усіма переліченими тут властивостями. Широко поширені об'єктно-орієнтовані розширення традиційних мов (Сі++, Турбо- Паскаль), де є в повному обсязі об'єктно-орієнтовані черты.

Объектно-ориентированная база класів представляє собою ієрархічний набір (бібліотеку) класів – будівельних блоків для складання нових рівнів створюваного програмного продукту. Тут зберігаються класи «джентльменського набору» бібліотек мов програмування, і навіть класи, описують поняття прикладних предметних областей.

Класи є накопичені знання про раніше виготовлених продуктах. База класів мають забезпечувати легкий пошук класів, їх вивчення, модифікацію, включення нових класів. Мова й базу класів об'єднують у інтегровану объектно-ориентированную середу програмування, коли всі кошти підтримки процесу розробки програм написані цьому мовою й входять однакові правах у складі бази класів. Типовими прикладами засобів є графічний многооконный інтерфейс з користувачем, ієрархічні меню, компілятор, інтерпретатор, отладчик, текстовий редактор.

Розробка програм по объектно-ориентированной технології зводиться до створення нових класів, їх тестуванню і включенню у складі объектно- орієнтованої середовища разработки.

Кожен окремий клас, завдяки їхній незалежності, може розроблятимуться й тестуватися окремо. Перевірений клас входить у бібліотеку і мені стає надбанням поточної і всіх подальших розробок. Особливістю объектно-ориентированной технології розробки програм є можливість швидкого прототипирования. І тут класи розв'язуваної завдання описуються тільки свої основними властивостями і поведінкою, що дозволяє відразу перевірити головну ідею виконання завдання. Якщо вона неправильна, вона може бути швидко змінена й перевірена знову. У цьому економляться суттєві видатки програмування деталей.

Розглянемо, як у объектно-ориентированной технології долаються три перелічених нестачі функціонального подхода.

1. Формалізація перетинів поміж етапами. Усі етапи (рівні), починаючи аналізу програми, описуються на єдиному формалізованому языке.

Фактично чіткої кордони між уровнями.

2. Єдиний неформалізований рівень – вимоги пользователя.

Цей рівень взагалі важко формализуем, оскільки кінцевим користувачем чи замовником зазвичай є непрофесіонал у сфері програмування і його необхідно запропонувати волю викладі вимог до завданню. Те, що потрібно наступних специфікацій, – перелік об'єктів, їх властивостей і взаємних дій – теж не виходить далеко за межі звичайного описи проблеми природному мові. Перехід від прийняття цього описи до специфікації програми робиться вручну, але один одного з точністю до простого синтаксису объектно-ориентированного языка.

3. Гнучкість. Внесення змін всередині об'єкта чи класу не зачіпає клієнтів, тобто. тих об'єктів, які використовують, зрозуміло, якщо зовнішній інтерфейс об'єкта залишається незмінною. Це фундаментальний принцип объектно-ориентированного программирования.

Отже забезпечується гнучкість при програмуванні знизу- вверх.

Нині объектно-ориентированный підхід одна із швидко та розвитку напрямів в проектуванні систем. Прикладом можуть бути объектно-ориентированный аналіз – методологія розробки систем, запропонована Йорданом, объектно-ориентированное проектування, объектно- орієнтоване програмування, реалізоване у численних компіляторах З++, Object Pascal, Borland Pascal, Smalltalk.

3. Объектно-ориентированный подход

Основні ідеї объектно-ориентированного підходу спираються ми такі положения:

. програма є модель деякого реального процесу, частини реального мира;

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

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

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

. об'єкти, описані у тому ж набором параметрів та найздібніші виконувати і той ж набір дій, є клас однотипних объектов.

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

Отже, объектно-ориентированный підхід передбачає, що з розробці програми слід визначити класи які у програмі об'єктів і побудовано їхні описи, потім створено екземпляри необхідних об'єктів і визначено взаємодія між ними.

Поняття об'єкту і класу тісно пов'язані. Проте, існує важливе різницю між цими поняттями. Клас – це абстракція істотних характеристик об'єкта. Клас – опис множин об'єктів, які поділяють однакові властивості, операції, стосунки держави й семантику (сенс). Будь-який об'єкт – просто примірник класу. Розрізняють внутрішньо уявлення класу (реалізацію) і зовнішня уявлення (интерфейс).

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

У основі алгоритмічної декомпозиції лежить розбивка за діями – алгоритмам. Ця схема уявлення застосовується у звичайних програмних засобах. Объектно-ориентированная декомпозиція забезпечує розбивка по автономним особам – об'єктах реального (чи віртуального) світу. Ці особи (об'єкти) – більш «великі» елементи, кожен із новачків містить у собі та описи дій, й описи данных.

Объектно-ориентированное уявлення програмного кошти полягає в принципах абстрагування, инкапсуляции, модульности і ієрархічної організації. Кожен з цих принципів новий, та їх спільне застосування розраховане для проведення объектно-ориентированной декомпозиції. Це визначає модифікацію її змісту і немає механізмів взаємодії друг з другом.

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

Інкапсуляція і абстракція – взаємодоповнюють поняття: абстракція виділяє зовнішнє поведінка об'єкта, а інкапсуляція містить і приховує реалізацію, що забезпечує це поведінка. Інкапсуляція досягається з допомогою інформаційної закритості. Зазвичай ховаються структура об'єктів і реалізація їх методів. Інкапсуляція є процесом поділу елементів абстракції на секції з різноманітною видимістю. Інкапсуляція служить для відділення інтерфейсу абстракції від неї реализации.

У мовами З++, Object Pascal, Ada 95 абстракція класів та об'єктів формують логічний структуру системи. За виробництва фізичної структури ці абстракції вкладаються у модулі. У великих системах, де класів сотні, модулі допомагають управляти складністю. Модулі служать фізичними контейнерами, у яких з'являються класи і об'єкти логічного разработки.

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

Визначення класів та об'єктів виконується під час логічного розробки, а визначення модулів – під час фізичної розробки системи. Ці дії сильно взаємопов'язані, здійснюються итеративно. Припустимо, в Ada 95 потужним засобом забезпечення модульности є пакет.

Чудовим доповненням до попередніх принципам є ієрархічна організація – формування з абстракцій ієрархічної структури. Визначенням ієрархії у проекті спрощуються розуміння проблем замовника та його реалізація – складна система стає доступній для огляду людиною. Ієрархічна організація задає розміщення абстракція різних рівнях описи системы.

Двома важливими інструментами ієрархічної організації у объектно- ориентрованных системах являются:

1. структура з классов(«is a»-иерархия);

2. структура з объектов(«part of»-иерархия).

Найчастіше «is a»-иерархическая структура будується з допомогою наслідування. Успадкування визначає ставлення між класами, де клас поділяє структуру чи поведінка, певні щодо одного іншому (одиничне успадкування) чи інших (множинне успадкування) класах. Інша різновид ієрархічної організації – «part of»-иерархическая структура – виходить з відношенні агрегації. Агрегація перестав бути поняттям, унікальним для объектно-ориентированных систем. Наприклад, будь-який мову програмування, що дозволяє структури типу «запис», підтримує агрегацію. І все-таки агрегація особливо корисна разом із успадкуванням: агрегація забезпечує фізичну угруповання логічно зв'язковою структури, а успадкування дозволяє легко й багато разів використовувати ці загальні групи за іншими абстракциях.

Розглянемо пильніше об'єкти – конкретні сутності, які існують у часі і пространстве.

Об'єкт – це конкретне уявлення абстракції. Об'єкт має індивідуальністю, станом і поведінкою. Структура і поведінку подібних об'єктів визначені у їхній спільній класі. Терміни «екземпляри класу» і «об'єкт» взаимозаменяемы.

Індивідуальність – це характеристика об'єкта, що відрізняє його від від інших объектов.

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

1) модифікатор (змінює стан объекта);

2) селектор (дає доступом до стану, але з змінює его);

3) итератор (доступом до змісту об'єкта частинами, у суворо певному порядке);

4) конструктор (створює об'єкт і инициализирует його состояние);

5) деструктор (руйнує об'єкт і звільняє його память).

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

Наявність об'єкт внутрішнього стану означає, що порядок виконання ним операцій дуже важливий. Тобто об'єкт може представлятися як незалежний автомат. Можна виділити активні і пасивні об'єкти. Активний об'єкт має власний канал (потік) управління, пасивний – немає. Активний об'єкт автономний, може виявляти свою поведінку без впливу з боку інших об'єктів. Пасивний об'єкт, навпаки, може змінювати свій стан лише під впливом інших объектов.

У центрі зору розроблювача програмного забезпечення перебувають не объекты-одиночки, а взаємодіючі об'єкти, саме взаємодія об'єктів реалізує поведінка системи. Стосунки між парою об'єктів грунтуються на взаємної інформації про дозволених роздрібних операціях і очікувану поведении.

4. Оцінка складності програмних систем

При конструюванні объектно-ориентированных програмних засобів значної частини витрат створення візуальних моделей. Дуже важливо коректно й всебічно оцінити якість цих моделей, зіставивши якості числову оцінку. Вирішення даної завдання вимагає введення спеціального метричного апарату. Такий апарат розвиває ідеї класичного оцінювання складних програмних систем, заснованого на метриках складності, связности і зчеплення. Разом із тим він враховує специфічні особливості объектно-ориентированных рішень. Объектно- орієнтовані метрики вводяться з целью:

. поліпшити розуміння якості продукта;

. оцінити ефективність процесу конструирования;

. підвищити якість роботи з етапі проектирования.

Для будь-якого інженерного продукту метрики повинні поступово переорієнтовуватися під його унікальні характеристики. З погляду метрик виділяють п'ять характеристик объектно-ориентированных систем: локалізацію, инкапсуляцию, інформаційну закритість, запозичення ро-сійських та способи абстрагування об'єктів. Ці характеристики надають максимальне впливом геть объектно- орієнтовані метрики.

Локалізація фіксує спосіб угруповання інформацією програмі. У класичних методах, де використовується функціональна декомпозиція, інформація локалізується навколо функцій. Функції у яких реалізуються як процедурні модулі. У методах, керованих даними, інформація гуртується навколо структур даних. У объектно-ориентированной середовищі інформація гуртується всередині класів чи об'єктів (інкапсуляція, як даних, і процесів). Бо у класичних методах основний механізм локалізації – функція, програмні метрики орієнтовані внутрішню структуру чи складність функцій (довжина модуля, зв'язність, цикломатическая складність) чи на спосіб, яким функції зв'язуються друг з одним (зчеплення модулів). Позаяк у объектно-ориентированной системі базовим елементом є клас, то локалізація тут полягає в об'єктах. Тому метрики слід застосовувати до класу (об'єкту) як до комплексної сутності. Крім того, між операціями (функціями) і класами можуть бути відносини не лише «один-к-одному». Тому метрики, які відображатимуть способи взаємодії класів, мали бути зацікавленими пристосовані до взаємин «один-ко- багатьом», «многие-ко-многим».

Інкапсуляція – упаковка (зв'язування) сукупності елементів. Для класичних програмних засобів прикладами низкоуровневой инкапсуляции є запису і масиви. Механізмом инкапсуляции середній рівень є підпрограми. У объектно-ориентированных системах инкапсулируются обов'язки класу, представлені їхніми властивостями, операціями і станами. Для метрик облік инкапсуляции призводить до зміщення фокусу вимірів з однієї модуля на групу властивостей і обробних модулів (операцій). З іншого боку, інкапсуляція переводить виміру більш високий рівень абстракції. Навпаки, класичні метрики орієнтовані низький рівень – кількість булевых умов (цикломатическая складність) і кількість рядків программы.

Інформаційна закритість робить невидимими операційні деталі програмного компонента. Іншим компонентами доступна лише необхідна інформація. Якісні об'єктно-орієнтовані системи підтримують високий рівень інформаційної закритості. Отже, метрики, котрі вимірюють ступінь досягнутої закритості, цим відбивають якість объектно-ориентированного проекта.

Успадкування – механізм, який би тиражування обов'язків одного класу до інших класи. Успадкування поширюється крізь ці рівні ієрархії класів. Стандартні програмні кошти підтримують цю характеристику. Оскільки успадкування – основна характеристика объектно-ориентированных систем, у ньому фокусуються багато объектно- орієнтовані метрики (кількість дітей – нащадків класу, кількість батьків, висота класу в ієрархії наследования).

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

Класичною мірою складності внутрішніх зв'язків модуля є зв'язність, а класичної мірою складності зовнішніх економічних зв'язків – сцепление.

Зв'язність модуля – міра залежності його частин, це внутрішня характеристика модуля. Що зв'язність модуля, краще результат проектування. Для виміру связности використовують поняття сили связности (СС). Існує 7 типів связности:

1. Зв'язність за випадковим збігом (СС=0). У модулі відсутні явно виражені внутрішні связи.

2. Логічний зв'язність (СС=1). Частини модуля об'єднані за принципом функціонального подоби. Наприклад, модуль складається з різних підпрограм обробки помилок. З використанням такого модуля клієнт вибирає тільки один з підпрограм. Недоліками є складне поєднання і велика можливість внесення помилок за зміни поєднання заради однієї функции.

3. Тимчасова зв'язність (СС=3). Частини модуля пов'язані, але необхідні до одного і той період роботи системи. Недолік: сильна взаємозв'язок коїться з іншими модулями, звідси – сильна чутливість до внесення изменений.

4. Процедурна зв'язність (СС=5). Частини модуля пов'язані порядком виконуваних ними дій, що реалізують певний сценарій поведения.

5. Комунікативна зв'язність (СС=7). Частини модуля пов'язані по данным

(працюють із одному й тому ж структурою данных).

6. Інформаційна (послідовна) зв'язність (СС=9). Вихідних даних частині використовують як вхідні дані на другий частини модуля.

7. Функціональна зв'язність (СС=10). Частини модуля разом реалізують одну функцию.

Цей метод функціональний за своєю природою, тому найбільшої связностью тут оголошено функціональна зв'язність. Разом про те однією з принципових переваг объектно-ориентированного підходу природна зв'язність об'єктів. Максимально пов'язаним є об'єкт, в якому представляється єдина суть і стала куди внесено всіх операції над цієї сутністю. Отже, восьмий тип можна визначити так:

8. Объектная зв'язність. Кожна операція забезпечує функціональність, що передбачає, що це властивості об'єкта будуть модифікуватися, відображатись і використовувати як грунт надання услуг.

Висока зв'язність – не спричинить бажана характеристика, оскільки він означає, що об'єкт становить єдину частину - у проблемної області, існує у єдиний простір. При зміні системи всі дії частку инкапсулируются на єдиній компоненті. Тож виробництва зміни немає потреби модифікувати багато компонентів. Якщо функціональність в объектно- орієнтованої системі забезпечується успадкуванням від суперклассов, то зв'язність об'єкта, який успадковує властивості та постійні операції, зменшується. У цьому випадку не можна розглядати об'єкт як модуль – повинні враховуватися усі його суперклассы. Системні кошти перегляду сприяють такому обліку. Проте розуміння елемента, який успадковує властивості від кількох суперклассов, різко усложняется.

У класичному методі Л. Констентайна і Еге. Йордана визначено шість типів зчеплення, орієнтовані на процедурне проектування. Принципове перевагу объектно-ориентированного проектування у цьому, що природа об'єктів приводить до створення слабко зчеплених систем. Фундаментальна властивість объектно-ориентированного проектування залежить від прихованості змісту об'єкта. Зазвичай, зміст об'єкта невидиме зовнішнім елементам. Ступінь автономності об'єкта досить висока. Будь-який об'єкт то, можливо заміщений іншим об'єктом з такою самою інтерфейсом. Тим щонайменше успадкування в объектно-ориентированных системах призводить до інший формі зчеплення. Об'єкти, які успадковують властивості та операції, зчеплені з їх суперклассами. Зміни у суперклассах потрібно проводити обережно, тому що ці зміни поширюються в усі класи, які успадковують їх характеристики.

Отже, власними силами об'єктно-орієнтовані механізми гарантують мінімального зчеплення. Звісно, класи – потужний засіб абстракції даних. Їх запровадження зменшило потік даних між модулями і, отже, знизило загальне зчеплення всередині системи. Проте насправді типів залежностей між модулями виросло. З'явилися відносини наслідування, делегування, реалізації тощо. Більше різноманітним став склад модулів у системі (класи, об'єкти, вільні функції і складні процедури, пакети). Звідси висновок: необхідність вимірювання, і регулювання зчеплення в объектно-ориентированных системах обострилась.

Зчеплення – міра залежності модулів за даними, зовнішня характеристика модуля, яку бажано зменшувати. Кількісно зчеплення вимірюється ступенем зчеплення (СЦ). Вирізняють 6 типів сцепления:

1. Зчеплення за даними (СЦ=1). Модуль А викликає модуль У. Усі вхідні і вихідні параметри викликаний модуля – прості елементи данных.

2. Зчеплення на зразок (СЦ=3). Як параметрів використовуються структури данных.

3. Зчеплення із управління (СЦ=4). Модуль А явно управляє функціонуванням модуля У (з допомогою прапорів чи перемикачів), посилаючи йому управляючі данные.

4. Зчеплення за зовнішніми посилань (СЦ=5). Модулі Проте й У посилаються однією і хоча б глобальний елемент данных.

5. Зчеплення із загальної області (СЦ=7). Модулі поділяють те ж глобальну структуру данных.

6. Зчеплення за змістом (СЦ=9). Один модуль прямо називає зміст іншого модуля (не через точку входу). Наприклад, коди їх програм перемежовуються друг з другом.

Глава 2

1. Інтегрована середовище розробки Delphi

Курсової проект було розроблено на інтегрованої середовищі розробки Delphi 7, далі піде опис даного програмного изделия.

Прикладні програми, чи докладання, Delphi створюють у інтегрованої середовищі розробки. Користувальницький інтерфейс цього середовища служить в організацію взаємодії з програмістом і включає у собі ряд вікон, містять різні елементи управління. З допомогою коштів інтегрованої середовища розробникові зручно проектувати интерфейсную частина докладання, і навіть писати програмний код і пов'язувати його із елементами управління. У інтегрованої середовищі розробки проходять все етапи створення докладання, включаючи налагодження. Інтегрована середовище розробки Delphi 7 є многооконную систему.

Мова Delphi реалізує концепцію объектно-ориентированного програмування. Це означає, що функціональність докладання визначається набором взаємозалежних завдань, кожна з яких стає самостійним об'єктом. У об'єкта є властивості (тобто. характеристики, чи атрибути), методи, що визначають її поведінка, і, куди він реагує. Однією з найважливіших понять объектно-ориентированного програмування є клас. Клас є подальше розвиток концепції типу, і об'єднує у собі завдання як структури та розміру змінних, а й виконуваних з нього операцій. Об'єкти у програмі завжди є екземплярами тієї чи іншої класса.

Усі обчислення курсової програми побудовано на знанні интерполяционного полинома Лагранжа (интерполяционный багаточлен у вигляді Лагранжа). Саме з його за допомогою обчислюється значення функції за кількох заданих користувачем значеннях аргументу й інших вхідним даним. Интерполяционным многочленом називається багаточлен [pic] ступеня не вище n, що у вузлах [pic]принимает значення [pic].

Умови застосування полинома:

Функція [pic] безупинна на інтервалі [pic] і задана деякими значеннями [pic] для відповідних значень аргументу [pic]. Поліном використовується, коли необхідно знайти значення цієї функції у точці [pic].

Теорема:

Нехай задано вузли [pic], серед немає які збігаються і значення [pic] деякою функції f(x) у тих вузлах. Існує сам і лише одне багаточлен [pic] ступеня не вище n, приймає в вузлах [pic] значення [pic]. Введемо допоміжні багаточлени [pic]. Це багаточлен ступеня n, котрій виконується рівність [pic]. Багаточлен [pic] називається полиномом Лагранжа.

При застосуванні програми, названої «Интерполирование», користувач у першому вікні вводить кількість аргументів, стільки вузлів [pic] буде зацікавлений у подальшому використовуватися програмою. У другому вікні користувач вводить значення і функцій для побудови полинома Лагранжа. У третьому вікні задається значення аргументу, функцію якого треба знайти. При натисканні кнопки «Обчислити», наводиться на дію алгоритм програми, відбувається обчислення і видається результат і водночас із цим процесом програма знаходить похибка обчислення. Користувач сам може оцінити, наскільки отриманий ході обчислень результат розминається з правильним, використовуючи погрешность.

2. Характеристики модулів програмного средства

1. Зв'язність всередині модулей

Модулі 1, 2 і 4 мають внутрішню зв'язність тимчасову (частини модуля не пов'язані, але необхідні до одного і той період роботи системи). Третій модуль має тип связности – інформативний послідовний, який свідчить, що вихідних даних частині модуля використовують як вхідні дані іншій частині модуля. Ця зв'язку присутній, оскільки function Ln (k: Integer): Real; function Pol ( ): Real; і function Delta ( ): Real; є вхідними для Procedure TForm3/Button1Click (Sender: Tobject).

2. Зчеплення модулів між собой

Модуль 1 зчеплений з модулем 2 за даними (тип зчеплення перший, СЦ=1), то є модуль 1 викликає модуль 2, вхідні і вихідні параметри – прості елементи данных.

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

Четвертий модуль, є відомостей про програмі пов'язані з модулями 1, 2 і трьох за даними, все три модуля викликають четвертый.

Заключение

Під час виконання курсової роботи розробили програмне засіб, вичислювальне значення функції заданому значенням аргументу, выполняющегося з допомогою коштів обчислювальної математики. У основі виконання завдання, як було зазначено описано у другій частині курсової роботи лежить обчислення интерполяционным полиномом Лагранжа. Створили чотири модуля, троє фахівців з яких є активними, четвертий («Про торішню програму») то, можливо викликаний з будь-якої світової із трьох головних модулів. Три основних модуля пропонують поетапне виконання завдання; у першому модулі вводяться початкові дані, у другому заповнюється таблиця зі значеннями функцій і аргументів (це проміжні крапки над основі яких і будується поліном Лагранжа). Третій модуль є основним, використовує дані з другого і третього модуля для обчислювального процесу. Інтерфейс програми сумісний із Windows-интерфейсом тому, що ваша програма, у якій розроблялася курсова робота, – Delphi7 – надає таку можливість і підтримує саме Windows-интерфейс. Усі пункти курсового завдання було виконано, розроблене програмне засіб виконує поставлене ним задачу.

Додаток 1. Вихідний код програмного средства:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus;

type

TForm1 = class(TForm)

Memo1: TMemo;

Edit1: TEdit;

Button1: TButton;

Memo2: TMemo;

Label1: TLabel;

MainMenu1: TMainMenu;

N1: TMenuItem;

N4: TMenuItem;

N2: TMenuItem; procedure Button1Click(Sender: TObject); procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure N2Click(Sender: TObject); procedure N4Click(Sender: TObject);

private

{ Private declarations } public

{ Public declarations } end;

var

Form1: TForm1;

A, k :integer;

implementation

uses Unit2, unit6, Unit3;

{$R *.dfm}

procedure TForm1.N2Click(Sender: TObject); begin

AboutBox.ShowModal; end;

procedure TForm1.N4Click(Sender: TObject); begin close; end;

procedure TForm1.Button1Click(Sender: TObject); begin k:=StrToInt(edit1.Text); if (k30) then ShowMessage( " Не вірно поставлено значення " ) else begin k:=StrToInt(edit1.Text);

Form2.StringGrid1.ColCount:=(k+1);

Form2.visible:=true;

Form1.visible:=false; end;

Form2.StringGrid1.Cells[0,0]:= " X " ;

Form2.StringGrid1.Cells[0,1]:= " Y " ; end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in [ " 0 " .. " 9 " ]) then key:=#0; end;

end.

_

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, Menus;

type

TForm2 = class(TForm)

Label3: TLabel;

Button1: TButton;

Label5: TLabel;

MainMenu1: TMainMenu;

N1: TMenuItem;

N4: TMenuItem;

N2: TMenuItem;

StringGrid1: TStringGrid;

Label1: TLabel;

Button2: TButton; procedure Button1OnClick(Sender: TObject); procedure Button2OnClick(Sender: TObject); procedure N4Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations } public

{ Public declarations } end;

var

Form2: TForm2;

I, J: Integer;

implementation

uses Unit1, Unit6, Unit3;

{$R *.dfm}

procedure TForm2.N4Click(Sender: TObject); begin close;

Form1.Close; end;

procedure TForm2.Button1OnClick(Sender: TObject); begin

Form3.visible:=true;

Form2.visible:=false; end;

procedure TForm2.Button2OnClick(Sender: TObject); begin

Form1.visible:=true;

Form2.visible:=false; end;

procedure TForm2.N2Click(Sender: TObject); begin

AboutBox.ShowModal; end;

procedure TForm2.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin if not (key in [ " 0 " .. " 9 " , " . " ]) then key:=#0; end;

end.

unit unit3;

interface

uses

Windows, Math, Messages, SysUtils, Variants,

Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus, ComCtrls;

type

TForm3 = class(TForm)

Label2: TLabel;

Edit1: TEdit;

Memo1: TMemo;

Edit3: TEdit;

Label1: TLabel;

MainMenu1: TMainMenu;

N1: TMenuItem;

N4: TMenuItem;

N7: TMenuItem;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Edit2: TEdit; procedure Edit1KeyPress(Sender: TObject; var Key: Char ); procedure N4Click(Sender: TObject); procedure N7Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject);

private

{ Private declarations tion } public

{ Public declarations } end;

var

Form3: TForm3; і, j, A, k: Integer;

Y, X: array [1..30] of Extended; t, P, Dl: Real;

implementation

uses Unit1, Unit2, Unit6;

{$R *.dfm}

procedure TForm3.Edit1KeyPress(Sender: TObject; var Key: Char); // Integer begin if not(key in [ " 0 " .. " 9 " ]) then Key:=#0; end;

procedure TForm3.N4Click(Sender: TObject); begin

Close; end;

procedure TForm3.N7Click(Sender: TObject); begin

AboutBox.ShowModal; end;

function Ln(k: integer): Real; var Proizved1, Proizved2: Real; begin t:=StrToFloat(Form3.Edit1.Text); i:=1;

Proizved1:=1;

Proizved2:=1; repeat if ki then begin

Proizved1:=Proizved1*(t-x[i]);

Proizved2:=Proizved2*(x[k]-x[i]); end; i:=i+1; until i>A;

Ln:=Proizved1/Proizved2; end;

function Pol( ): Real; var

Sum: Real; і: Integer; begin i:=1;

Sum:=0; repeat

Sum:=Ln(i)*Y[i]+Sum; i:=i+1; until i>A;

Pol:=Sum; end;

function Delta( ): Real; var

Sum: Real; і: Integer; begin i:=1;

Sum:=0; repeat

Sum:=ABS(Ln(i))*0.0002+Sum; i:=i+1; until i>A;

Delta:=Sum; end;

procedure TForm3.Button1Click(Sender: TObject); var і: Integer;

P.S: real; begin

A:=StrToInt(Form1.Edit1.Text);

S:=0; for i:=1 to A do begin

X[i]:=StrToFloat(Form2.StringGrid1.Cells[i,0]);

Y[i]:=StrToFloat(Form2.StringGrid1.Cells[i,1]); end;

P:=Pol();

Dl:=Delta(); for i:=1 to A do S:=S+Ln(i);

ShowMessage(FloatToStr(S));

Form3.Edit3.Text:=FloatToStr(P);

Form3.Edit2.Text:=FloatToStr(Dl); end;

procedure TForm3.Button2Click(Sender: TObject); begin

Form3.visible:=false;

Form2.visible:=true; end;

procedure TForm3.Button3Click(Sender: TObject); begin

Close;

Form2.Close;

Form1.Close; end;

end.

unit Unit6; //AboutBox

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls;

type

TAboutBox = class(TForm)

Panel1: TPanel;

ProductName: TLabel;

Version: TLabel;

Copyright: TLabel;

Comments: TLabel;

Image1: TImage;

BitBtn1: TBitBtn; private

{ Private declarations } public

{ Public declarations } end;

var

AboutBox: TAboutBox;

implementation

{$R *.dfm}

end.

Приложение 2. Блок-схема програмного средства:

Приложение 3. Блок-схема алгоритму обчислення (третій модуль)

Приложение 4. Тести – набори перевірочних даних – для перевірки вмотивованості роботи программы.

Перший перевірочний набір. У першому розпочатому вікні, в порожній полі вводимо цифру 6. У другому розпочатому вікні, подану таблицю заповнюємо відповідно до представленим нижче даним. |X |1 |2 |3 |4 |5 |6 | |Y |7 |8 |9 |7 |8 |9 |

У третьому вікні вводимо: Х=13, і дружина мають досягти результату Y= –10 442. Ці результати вийшли з наведених нижче розрахунків: [pic] [pic] [pic] [pic] [pic] [pic] [pic] [pic][pic] Результатом має стати число – 10 442.

Другий перевірочний набір. Другий перевірочний набір є простим варіантом, які потребують математичного підтвердження. Він є аргументи та його квадраты.

У першому вікні вводимо число 4.

У другому вводимо в рядок Х числа 1, 2, 4, 5, а рядок Y числа 1, 4, 16, 25, є квадратами цих аргументів. Цей набір даних представлено таблиці нижче: |X |1 |2 |4 |5 | |Y |1 |4 |16 |25 |

Тоді, у третьому віконці вводимо будь-яке число, квадрат якого Вам відомий, наприклад, число 3, й у віконці «Результати» маємо отримати число 9, з віконця «Похибка обчислення» отримуємо похибка, яка з'являється при обчисленні функції даним методом (интерполяционным полиномом Лагранжа). Можна взяти й будь-який інший число.

Список використаних источников

1. Фокс Дж. Програмне забезпечення та її розробка. М.:Мир, 1985. -

368 с.

2. Лисков Б., Гатэг Дж. Використання абстракцій і специфікацій розробки програм: Пер. з анг. - М.: Світ, 1999. - 424 з. 2. Іванов О.Г., Карпова А.В., Семик В.П., Пугачів Ю.Е. Объектно- орієнтована середовище програмування. Системи і кошти информатики.

Вып.2. М.: Наука, 1991. 3. Програмування. Спеціальний випуск по объектно-ориентированному програмування. № 6, 1990. 4. Объектно-ориентированный підхід технології програмування/ Иванов

О.Г., П'ятницький А.А, Пугачів Ю.Е. – СПб.: Пітер, 2003. – 443 з.: мул. 5. Макаров А.А. Лукашин Ю.П. Объектно-ориентированный підхід в програмуванні. – М.: Фінанси і статистика, 2000. – 356 с.

----------------------- Left = 308 Top = 244 Width = 447 Height = 272 Caption = " Интерполирование " Color = clBtnFace Menu = MainMenu1 Position = poScreenCenter Visible = True PixelsPerInch = 96 TextHeight = 13

Form 1

N2Click N4Click Button1Click Edit1KeyPress

Left = 16 Top = 152 Width = 299 Height = 13 Cursor = crArrow Caption = " Натисніть кнопку для пеpехода наступного року крок "

Label 1

Left = 16 Top = 8 Width = 425 Height = 81 Cursor = crArrow BorderStyle = bsNone Lines.Strings = ( " Ця програма варта розрахунку значення функцій, заданих таблично. По запровадженого значенням аргументу виводиться значення функції. По точкам, які Ви введете, буде побудовано интерполяционный поліном і з її допомогою знайдено значення функції’) ParentColor = True ParentFont = False ReadOnly = True TabOrder = 1

Memo 1

Tag = 2 Left = 16 Top = 120 Width = 65 Height = 21 TabOrder = 2

Edit 1

OnKeyPress = Edit1KeyPress

Left = 16 Top = 88 Width = 409 Height = 33 Cursor = crArrow BorderStyle = bsNone DragCursor = crDefault Lines.Strings = ( " Запровадьте кількість точок, яких буде перебувати поліном: (незгірш від 4 і більше 30 " ) ParentColor = True ParentFont = False ReadOnly = True TabOrder = 0

Memo 2

N1

Caption = " Файл "

N4

Caption = " Вихід "

MainMenu 1

BiDiMode = bdRightToLeft

ParentBiDiMode = False

Left = 400

Top = 184

OnClick = N4Click

N2

Caption = ‘Про программе’

OnClick = N2Click

AboutBox

Button 1

Left = 16 Top = 177 Width = 105 Height = 33 Caption = " ДАЛІ " TabOrder = 3

OnClick = Button1Click

Form 2

Left = 308 Top = 244 Width = 447 Height = 272 Caption = " Интерполирование " Color = clBtnFace Menu = MainMenu1 Position = poScreenCenter Visible = True PixelsPerInch = 96 TextHeight = 13

Form 2

N2Click N4Click Button1Click Button2Click StringGrid1KeyPress

Label 3

Left = 16 Top = 8 Width = 169 Height = 13 Caption = " У осередки введіть значення: " ParentFont = False

Label 5

Left = 16 Top = 136 Width = 299 Height = 13 Caption = " Натисніть кнопку до переходу наступного року крок " ParentFont = False

Label 1

Left = 16 Top = 152 Width = 228 Height = 13 Caption = " або заради повернення подібний до попереднього крок " ParentFont = False

Button 1

Left = 152 Top = 177 Width = 105 Height = 32 Caption = " ДАЛІ " ParentFont = False TabOrder = 0

OnClick = Button1OnClick

Form 3

N1

Caption = " Файл "

N4

Caption = " Вихід "

MainMenu 1

BiDiMode = bdRightToLeft

ParentBiDiMode = False

Left = 400

Top = 184

OnClick = N4Click

N2

Caption = ‘Про программе’

OnClick = N2Click

AboutBox

Button 2

Left = 16 Top = 177 Width = 105 Height = 32 Caption = " НАЗАД " ParentFont = False TabOrder = 2

OnClick = Button2OnClick

Form 1

StringGrid 1??????????????????????????????????????????????????????????????????????????? ??????????????

Tag = 5 Left = 16 Top = 40 Width = 393 Height = 81 Color = clCaptionText DefaultColWidth = 55 RowCount = 2 FixedRows = 0 Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goTabs] ParentFont = False ScrollBars = ssHorizontal TabOrder = 1

OnKeyPress = StringGrid1KeyPress

Left = 308 Top = 244 Width = 447 Height = 272 Caption = " Интерполирование " Color = clBtnFace Menu = MainMenu1 Position = poScreenCenter Visible = True PixelsPerInch = 96 TextHeight = 13

Form 3

N7Click N4Click Button1Click Button2Click Button3Click Edit1KeyPress

Label 2

Left = 16 Top = 82 Width = 141 Height = 13 Caption = " Отриманий результат: " ParentFont = False

Label 1

Left = 200 Top = 26 Width = 17 Height = 13 Caption = " X= " ParentFont = False

Label 3

Left = 200 Top = 84 Width = 16 Height = 13 Caption = " Y= " ParentFont = False

Label 4

Left = 16 Top = 128 Width = 159 Height = 13 Caption = " Похибка обчислення: " ParentFont = False

Label 5

Left = 184 Top = 128 Width = 38 Height = 13 Caption = " Delta= " ParentFont = False

Edit 1

Tag = 5 Left = 224 Top = 24 Width = 121 Height = 21 TabOrder = 0

OnKeyPress = Edit1KeyPress

Memo 1

Left = 16 Top = 8 Width = 169 Height = 41 BorderStyle = bsNone Color = clBtnFace Lines.Strings = ( " Запровадьте значення аргументу, функцію якого треба знайти: " ) ParentFont = False ReadOnly = True TabOrder = 1

Edit 3

Left = 224 Top = 80 Width = 121 Height = 21 ParentColor = True ReadOnly = True TabOrder = 2

Edit 2

Left = 224 Top = 126 Width = 121 Height = 21 Color = clBtnFace ParentFont = False ReadOnly = True TabOrder = 6

Button 1

Left = 360 Top = 22 Width = 73 Height = 25 Caption = " Обчислити " ParentFont = False TabOrder = 3

OnClick = Button1Click

procedure TForm3.Button1Click(Sender: TObject);

Button 2

Left = 16 Top = 176 Width = 105 Height = 33 Caption = " НАЗАД " ParentFont = False TabOrder = 4

OnClick = Button2Click

Form 2

Button 3

Left = 152 Top = 177 Width = 105 Height = 32 Caption = " ВИХІД " ParentFont = False TabOrder = 5

OnClick = Button3Click

Close

N1

Caption = " Файл "

N4

Caption = " Вихід "

MainMenu 1

BiDiMode = bdRightToLeft

ParentBiDiMode = False

Left = 400

Top = 184

OnClick = N4Click

N2

Caption = ‘Про программе’

OnClick = N2Click

AboutBox

Function Ln (k: Integer): Real;

Proizved1, Proizved2: Real; i:=1; Proizved1:=1; Proizved2:=1;

If k1

да

Proizved1:=Proizved1*(t - x[I]); Proizved2:=Proizved2*(x[k] – x[i]);

нет

End;

Function Pol ( ): Real;

If i>A

да

Ln:=Proizved1/Proizved2;

Sum: Real; і: Integer; i:=1; Sum:=0;

If iA

нет

да

Pol:=Sum;

End;

Function Delta ( ): Real;

Sum: Real; і: Integer; i:=1; Sum:=0;

If і

Sum:=ABS (Ln (і) )*0.0002 + Sum; i:=i+1;

If і > A

да

нет

Delta:=Sum;

End;

X[i]:=StrToFloat(Form2.StringGrid1.Cells[i,0]; Y[i]:=StrToFloat(Form2.StringGrid1.Cells[i,1];

Procedure Button1Click (Sender: TObject);

i: Integer; P.S: Real; A:=StrToInt(Form1.Edit1.Text); S:=0; P:=Pol ( ); Dl:=Delta ( );

For i:=1 to A

For I:=1 to A

S:=S+Ln (i);

ShowMessage ( FloatToStr (P.S) );

Form3.Edit3.Text:=FloatToStr (P);

Form3.Edit2.Text:=FloatToStr (Dl);

End;

Головна:Интерполяционный поліном Лагранжа