Порядок розробки програмного модуля. Атестація програмних засобів

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
Бердичівський політехнічний коледж
 
 
 
 
 
 
 
 
Контрольна робота
з дисципліни “Технологія розробки програмногозабезпечення”
(варіант №1)
Виконав: студентгрупи Пзс-504
АранчійІ. О
Перевірив:викладач
ТростянськийБ.Г.
 
 
 
 
 
м. Бердичів 2007 р.

/>Зміст
 
1. Визначення технології розробки програмного забезпечення та основні поняття цього процесу: інформаційне середовищепроцесу обробки даних, формальний опис задачі, поняття про програмний засіб,поняття помилки і надійності програмних засобів
2. Порядок розробки програмного модуля.
3. Атестація програмних засобів
4. Практичне завдання
Список використаної літератури
 
/>/>1. Визначеннятехнології розробки програмного забезпечення та основні поняття цього процесу: інформаційнесередовище процесу обробки даних, формальний опис задачі, поняття про програмнийзасіб, поняття помилки і надійності програмних засобів
Технологія — це загально-технічне поняття, якеоб’єднує процеси, методи та засоби, що супроводжують виробництво будь — якоїпродукції. Якщо мова йде про технічну продукцію, то можна чітко визначити дваетапи підготовки її виробництва — конструкторський і технологічний. Наконструкторському етапі відбувається розробка та проектування самого виробу, ана технологічному — вирішуються питання, пов’язані з організацією виробництваданої продукції (причому, досить часто для конкретного підприємства). Колипоняття технології застосовується до розробки програмного забезпечення, тозміст, що у нього вкладається, значно змінюється. Це пов’язано з тим, що дляпрограмного забезпечення неможливо відокремити процеси розробки (проектування),виробництва і експлуатації, тому що в даному випадку ці процеси проходять узначній мірі проходять паралельно і залежать один від одного. Так, наприклад, впроцесі експлуатації програмного засобу, можуть бути виявлені помилки, усуненняяких, потребує внесення змін у програмні модулі, тобто повернення до етапурозробки, що є цілком закономірним. З урахуванням зроблених зауважень можнаввести наступне визначення:
Технологія розробки програмного забезпечення (технологіяпрограмування) — це сукупність процесів, пов’язаних із створенням надійногопрограмного засобу, починаючи з моменту виникнення ідеї створення цього засобуі закінчуючи процесом вилучення його з експлуатації. Якщо для різних галузейпрактичної діяльності людини технологічні процеси, які супроводжуютьвиробництво, розвивалися на протязі століть (а іноді тисячоліть), тотехнології, пов’язані з розробкою комп’ютерного програмного забезпеченнявиникли всього декілька десятиріч тому, і мабуть немає в наш час такої сферивиробництва, для якої технологічні процеси та засоби розвивалися настільки ждинамічно. Як в будь — якому технологічному процесі, в технології розробкипрограмного забезпечення існують основні базові принципи та методи, але узв’язку із швидким розвитком комп’ютерної техніки, інструментальних системпрограмування, розширенням сфер застосування програмного забезпечення тазростанням вимог до його якості, ці базові принципи поступово модифікуються увідповідності до наявних вимог. Тому було б великою помилкою розглядатитехнологічні процеси пов’язані з розробкою програмного забезпечення якстатичні, обмежуючись вивченням тільки їх загальних основ, особливо, якщорозглядати “Технологію розробки програмного забезпечення”, як навчальнудисципліну. У цьому випадку охопити весь спектр питань пов’язаних з розробкоюрізнотипного програмного забезпечення є просто неможливим, і тому мова в першучергу йде про розгляд питань, пов’язаних з розробкою надійного прикладногопрограмного забезпечення, з застосуванням як базових технологічних принципіврозробки, так і сучасних методик і засобів. />Технологіяпрограмування складається з трьох взаємопов’язаних частин:
основних етапів, які визначають послідовністьтехнологічних операцій проектування;
критеріїв і правил, які використовуються дляоцінки результатів виконання технологічних операцій;
програмних та апаратних засобів, яківикористовуються при проектуванні системи.
Кількість та склад етапів проектуваннязалежить від декількох факторів, а саме від типу життєвого циклу програмногозасобу, вибраного в якості базової моделі проекту, складності системи, щопроектується, наявних ресурсів і т.д. Але можна відокремити етапи, які будутьприсутні у будь — якому випадку:
визначення функцій та основних вимог допрограмного засобу;
розробка структури, алгоритмів рішень тапрограмних модулів;
тестування та відладка програмного засобу;
впровадження та супровід програмного засобу.
Що стосується критеріїв і правил, якіпризначені для оцінки виконання окремих технологічних етапів або програмногозасобу в цілому, то вони можуть базуватися на певній системі стандартів аботехнічному завданні на розробку. Головне, щоб ці критерії не мали протиріч ідовали об’єктивну оцінку програмному продукту. Вибір програмного забезпеченнята апаратних засобів для розробки системи не має принципового значення, якщо цене обумовлено у технічному завданні, але може значно вплинути на продуктивністьвиконання роботи, а в кінцевому результаті і на її якість. Кожна з вказанихчастин та її вплив на процес розробки програмного забезпечення буде розглянутав подальшому, але необхідно пам’ятати, що будь який технологічний процес,включаючи і технологію розробки програмного забезпечення є складним процесом,який залежить від багатьох факторів, серед яких значну роль відіграєсуб’єктивний фактор — власний підхід розробника до вирішення поставленої задачі.Головне при цьому, що б незалежно від вибору технологічних рішень і засобів, врезультаті був отриманий якісний програмний продукт, якій виконує заданіфункції, з найменшими витратами ресурсів.
/> 2. Порядок розробки програмногомодуля
Для оцінки програмного модуля застосовуютьсянаступні характеристики:
розмір модуля,
міцність модуля,
зчеплення з іншими модулями,
рутинність модуля (незалежність відпередісторії звертань до нього).
Розмір модулявимірюється числом операторів, що містяться в ньому, чи рядків. Модуль неповинний бути занадто маленьким чи занадто великим. Маленькі модулі приводятьдо громіздкої модульної структури програми і можуть не окупати накладнихвитрат, зв’язаних з їхнім оформленням. Великі модулі незручні для вивчення ізмін, вони можуть істотно збільшити сумарний час повторних трансляцій програмипри налагодженні програми. Звичайно рекомендуються програмні модулі розміромвід декількох десятків до декількох сотень операторів. Міцність модуля — це міра його внутрішніх зв’язків. Чим вище міцність модуля, тим більше зв’язківвін може зкрити від зовнішньої стосовно нього частини програми і, отже, тимбільший внесок у спрощення програми він може внести. Самим слабким ступенемміцності володіє модуль, міцний по збігу. Це такий модуль, між елементамиякого немає осмислених зв’язків. Такий модуль може бути виділений, наприклад,при виявленні в різних місцях програми повторення однієї і тієї ж послідовностіоператорів, що і оформляється в окремий модуль. Необхідність зміни цієїпослідовності в одному з контекстів може привести до зміни цього модуля, щоможе зробити його використання в інших контекстах помилковим. Функціональноміцний модуль — це модуль, що виконує одну яку-небудь визначену функцію. Приреалізації цієї функції такий модуль може використовувати й інші модулі. Такийклас програмних модулів рекомендується для використання. Інформаційно міцниймодуль — це модуль, що виконує кілька операцій (функцій) над однією і тією жеструктурою даних (інформаційним об’єктом), що вважається невідомою поза циммодулем. Для кожної з цих операцій у такому модулі мається свій вхід зі своєюформою звертання до нього. Такий клас варто розглядати як клас програмнихмодулів з вищим ступенем міцності. Інформаційно міцний модуль можереалізовувати, наприклад, абстрактний тип даних. Зчеплення модуля — цеміра його залежності за даними від інших модулів. Характеризується способомпередачі даних. Чим слабкіше зчеплення модуля з іншими модулями, тим сильнішейого незалежність від інших модулів. Найгіршим видом зчеплення модулів є зчепленняпо змісту. Таким є зчеплення двох модулів, коли один з них має пряміпосилання на вміст іншого модуля (наприклад, на константу, що міститься віншому модулі). Не рекомендується використовувати також зчеплення позагальній області — це таке зчеплення модулів, коли кілька модуліввикористовують ту саму область пам’яті. Єдиним видом зчеплення модулів, щорекомендується для використання сучасною технологією програмування, є параметричнезчеплення — це випадок, коли дані передаються модулю або при звертанні донього як до значень його параметрів, або як результат його звертання до іншогомодуля для обчислення деякої функції. Такий вид зчеплення модулів реалізуєтьсяна мовах програмування при використанні звертань до процедур (функцій). Рутинністьмодуля — це його незалежність від передісторії звертань до нього. Модульназивається рутинним, якщо результат (ефект) звертання до нього залежитьтільки від значень його параметрів (і не залежить від передісторії звертань донього). Модуль називається залежним від передісторії, якщо результат (ефект)звертання до нього залежить від внутрішнього стану цього модуля, якийзмінюється в результаті попередніх звертань до нього. Не рекомендуєтьсявикористовувати залежні від передісторії модулі, тому що вони провокують появув програмах хитрих (невловимих) помилок. Однак така рекомендація єнеконструктивною, тому що в багатьох випадках саме залежний від передісторіїмодуль є кращою реалізацією інформаційно міцного модуля. Тому більш прийнятнанаступна рекомендація:
завжди варто використовувати рутинний модуль,якщо це не приводить до поганого зчеплення модулів;
залежні від передісторії модулі вартовикористовувати тільки у випадку, коли це необхідно для забезпеченняпараметричного зчеплення;
у специфікації залежного від передісторіїмодуля повинна бути чітко сформульована ця залежність таким чином, щоб буломожливо прогнозувати поводження (ефект виконання) даного модуля при різнихнаступних звертаннях до нього.
/>При розробціпрограмного модуля доцільно дотримувати наступного порядку:
вивчення і перевірка специфікації модуля,вибір мови програмування;
вибір алгоритму і структури даних;
програмування (кодування) модуля;
перевірка і редагування модуля;
компіляція модуля.
Перший крок розробки програмного модуля взначній мірі являє собою суміжний контроль структури програми знизу: вивчаючиспецифікацію модуля, розроблювач повинний переконатися, що вона йому зрозумілаі достатня для розробки цього модуля. У завершенні цього кроку вибирається мовапрограмування: хоча мова програмування може бути уже визначеною для усього ПЗ,все-таки в ряді випадків може бути обрана інша мова, більш придатна дляреалізації даного модуля (наприклад, мова асемблера). На другому кроці розробкипрограмного модуля необхідно з’ясувати, чи не відомі вже які-небудь алгоритмидля рішення поставленої і чи близької до неї задачі. І якщо знайдетьсяпридатний алгоритм, то доцільно їм скористатися. Вибір придатних структурданих, що будуть використовуватися при виконанні модулем своїх функцій, узначній мірі визначає логіку і якісні показники розроблювального модуля, томуйого варто розглядати як дуже відповідальне рішення. На третьому кроціздійснюється побудова тексту модуля обраною мовою програмування. Велика кількістьусіляких деталей, що повинні бути враховані при реалізації функцій, зазначениху специфікації модуля, легко можуть привести до створення дуже заплутаноготексту, що містить масу помилок і неточностей. Шукати помилки в такому модулі івносити в нього необхідні зміни може виявитися дуже трудомісткою задачею. Томудуже важливо для побудови тексту модуля користатися технологічно обґрунтованоюі практично перевіреними принципами програмування. Найбільш розповсюдженими єпринципи покрокової деталізації. Наступний крок розробки модуля зв’язаний ізприведенням тексту модуля до завершеного виду у відповідності зі специфікацієюякості ПЗ. При програмуванні модуля розроблювач основну увагу приділяєправильності реалізації функцій модуля, залишаючи недопрацьованими коментарі ідопускаючи деякі порушення вимог до стилю програми. При шліфуванні текстумодуля він повинний відредагувати наявні в тексті коментарі і, можливо,включити в нього додаткові коментарі з метою забезпечити необхідні примітивиякості. З цією же метою виконується редагування тексту програми длязабезпечення стилістичних вимог. Перевірка модуля являє собою ручну перевіркувнутрішньої логіки модуля до початку його налагодження на комп’ютері, реалізуєзагальний принцип, сформульований для обговорюваної технології програмування. І,нарешті, останній крок розробки модуля означає завершення перевірки модуля (задопомогою компілятора) і перехід до процесу налагодження модуля.
/> 3. Атестація програмних засобів
Завершальним етапом розробки ПЗ є атестація,що підводить підсумок усій розробці. Атестація — це авторитетнепідтвердження якості ПЗ. Звичайно для атестації ПЗ створюється атестаційнакомісія з експертів, представників замовника і представників розроблювача. Цякомісія проводить приймально-здавальні іспити ПЗ з метоюодержання необхідної інформації для оцінки його якості. Під іспитом ПЗрозуміють процес проведення комплексу заходів, що досліджують придатність ПЗдля успішної його експлуатації (застосування і супровід) відповідно до вимогзамовника. У цьому процесі перевіряється повнота і досліджується якістьпредставленої програмної документації, виробляється необхідне тестування програм,що входять до складу ПЗ, а також досліджуються й інші властивості ПЗ,декларовані в його специфікації якості. На основі отриманої інформації комісіяповинна установити, у якому ступені ПЗ виконує декларовані функції й у якомуступені ПЗ відповідає заданим примітивам і критеріям якості. Рішенняатестаційної комісії про зроблену оцінку якості ПЗ фіксується у відповідномудокументі (сертифікаті), який підписується членами комісії. Таким чином, оцінкаякості ПЗ є основним змістом процесу атестації. Насамперед, слід зазначити, щооцінка якості ПЗ виробляється по пред’явленій специфікації його якості, тобтооцінюється тільки декларована розроблювачами якість ПЗ. При цьому оцінка якостіПЗ по кожному з критеріїв зводиться до оцінки кожного з примітивів якості,зв’язаному з цим критерієм якості ПЗ, відповідно до їхньої конкретизації вспецифікації якості цього ПЗ. Розрізняють наступні групи методів оцінкипримітивів якості ПЗ:
безпосередній вимір показників примітиваякості;
тестування програм ПЗ;
експертна оцінка на підставі вивчення програмі документації ПЗ.
Безпосередній вимір показників примітиваякості виробляється шляхом перевірки відповідності пред’явленої документації (включаючитексти програм мовою програмування) стандартам чи явним вимогам, зазначеним успецифікації якості ПЗ, а також шляхом виміру часу роботи різних пристроїв івикористовуваних ресурсів при виконанні контрольних (тестових) задач. Наприклад,деяким показником ефективності по пам’яті може бути число рядків програми мовоюпрограмування, а деяким показником тимчасової ефективності може бути часвідповіді на запит користувача. Для оцінки деяких примітивів якості ПЗвикористовується тестування. До таких примітивів відносяться,насамперед, завершеність ПЗ, а також його точність, стійкість, захищеність іінші примітиви якості. Однак, під час приймально-здавальних іспитів немаєнеобхідності проведення тестування ПЗ у повному обсязі (це може занадто дорогокоштувати). Атестаційна комісія повинна, насамперед, вивчити пред’явленудокументацію по проведеному розроблювачами тестуванню ПЗ і лише вибірковопропустити пред’явлені тести. Додаткові тести складаються, якщо в комісіївиникають визначені сумніви в повноті тестування, проведеного розроблювачами. Крімтого, звичайно працездатність і деякі показники якості ПЗ демонструються нарішенні контрольних задач, пропонованих замовником. Багато примітивів якості ПЗважко вловимі з погляду їх (об’єктивної) оцінки. У цих випадках інодізастосовують метод експертних оцінок. Цей метод полягає в наступному. Призначаєтьсягрупа експертів і кожний з цих експертів у результаті вивчення представленоїдокументації складає свою думку про відповідність ПЗ необхідним примітивамякості. Потім голосуванням членів цієї групи встановлюється оцінка необхідногопримітива якості ПЗ, тобто одержувана оцінка є деяким усередненням сукупностісуб’єктивних оцінок. Ця оцінка може вироблятися як по двобальній системі(«відповідає» — «не відповідає»), так і враховувати ступіньволодіння ПЗ цим примітивом якості (наприклад, вироблятися за системою балів). Метоюатестації є перевірка і фіксація реальних показників якості пред’явленогоПЗ. Якщо атестаційна комісія підтверджує, що пред’явлене ПЗ відповідає усімвимогам щодо його якості, сформульованим у зовнішньому описі цього ПЗ, то вважається,що його розробка довершена успішно і замовник зобов’язаний прийняти це ПЗ. Якщож будуть виявлені відступи від цих вимог, то повинні прийматися визначенірішення про продовження чи припинення розробки пред’явленого ПЗ, але це вжепитання взаємин між замовником і розроблювачами. Таким чином, атестаційнакомісія, підписуючи документ про зроблену оцінку якості ПЗ, приймає на себепевну відповідальність за гарантію якості цього ПЗ./>/> 4. Практичне завдання
З використанням засобів візуальногопрограмування розробити програму для автоматичного розрахунку значень складноїфункції:
/>
Приклад файлу форми Delphi6 для табулюванняфункції:
unit Func_tab;
interface
uses
Windows, Messages, SysUtils, Variants,Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, Menus;
type
TForm1 = class (TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
StringGrid1: TStringGrid;
BitBtn1: TBitBtn;
Label4: TLabel;
ListBox1: TListBox;
Memo1: TMemo;
BitBtn2: TBitBtn;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N3: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
BitBtn3: TBitBtn;
procedure BitBtn1Click (Sender: TObject);
procedure Edit1KeyPress (Sender: TObject; varKey: Char);
procedure Edit2KeyPress (Sender: TObject; varKey: Char);
procedure Edit3KeyPress (Sender: TObject; varKey: Char);
procedure Edit1Exit (Sender: TObject);
procedure Edit2Exit (Sender: TObject);
procedure Edit3Exit (Sender: TObject);
procedure BitBtn2Click (Sender: TObject);
procedure N4Click (Sender: TObject);
procedure N3Click (Sender: TObject);
procedure FormActivate (Sender: TObject);
procedure BitBtn3Click (Sender: TObject);
procedure N5Click (Sender: TObject);
procedure N7Click (Sender: TObject);
procedure N8Click (Sender: TObject);
procedure N9Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
X,Xn,Xk,H: real; // Параметри табулювання
fname: String [25]; //
f: textfile;
implementation
{$R *. dfm}
 // Повідомлення про помилку у завданніінтервалів табулювання
procedure P1;
begin
MessageDlg (‘«Xп» не може бутибільшим ніж «Хк». ‘ +#13
+’Введіть значення правильно. ‘, mtWarning, [mbCancel],0);
Form1. Edit1. Text: =”;
Form1. Edit2. Text: =”;
end;
 // Повідомлення про помилку у значенні крокутабулювання по відношенню до
 // меж табулювання
procedure P2;
begin
MessageDlg (‘Крок табулювання «H» неможе приймати таких значень. ‘ +#13
+’Введіть значення правильно. ‘, mtWarning, [mbCancel],0);
Form1. Edit3. Text: =”;
end;
 // Повідомлення про помилку перевищеннядопустимої розмірності даних
procedure P3;
begin
MessageDlg (‘Введене значення знаходться замежами допустимого. ‘ +#13
+’Введіть значення правильно. ‘, mtWarning, [mbCancel],0);
end;
procedure P4;
begin
MessageDlg (‘Треба ввести всі дані. ‘,mtWarning, [mbCancel], 0);
end;
 // Процедура очищення даних у формі
procedure P5;
begin
Form1. Edit1. Text: =”;
Form1. Edit2. Text: =”;
Form1. Edit3. Text: =”;
Form1. Edit1. SetFocus;
Form1. Height: =167;
Form1. Position: =poScreenCenter;
Form1. Label4. Visible: =False;
Form1. Label5. Visible: =False;
Form1. Label6. Visible: =False;
Form1. Label7. Visible: =False;
Form1. StringGrid1. Visible: =False;
Form1. ListBox1. Items. Clear;
Form1. Memo1. Lines. Clear;
Form1. ListBox1. Visible: =False;
Form1. Memo1. Visible: =False;
end;
 // Контроль введення даних у поля фории
procedure TForm1. Edit1KeyPress (Sender: TObject;var Key: Char);
begin
case Key of
‘0’. ‘9’,Chr (8):;
‘-‘: if (pos (‘-‘,Edit1. Text) = 0) and (length(Edit1. Text) = 0)
Then Key: = ‘-‘
else Key: = Chr (0);
‘,’: if pos (‘,’,Edit1. Text) 0
THen Key: = Chr (0);
else Key: = Chr (0);
end;
end;
procedure TForm1. Edit2KeyPress (Sender: TObject;var Key: Char);
begin
case Key of
‘0’. ‘9’,Chr (8):;
‘-‘: if (pos (‘-‘,Edit2. Text) = 0) and (length(Edit2. Text) = 0)
Then Key: = ‘-‘
else Key: = Chr (0);
‘,’: if pos (‘,’,Edit2. Text) 0
THen Key: = Chr (0);
else Key: = Chr (0);
end;
end;
procedure TForm1. Edit3KeyPress (Sender: TObject;var Key: Char);
begin
case Key of
‘0’. ‘9’,Chr (8):;
‘,’: if pos (‘,’,Edit3. Text) 0
THen Key: = Chr (0);
else Key: = Chr (0);
end;
end;
procedure TForm1. Edit1Exit (Sender: TObject);
begin
If Edit1. Text=” Then Exit;
If (Abs (StrToFloat (Edit1. Text)) >100000)Then
begin
P3;
Edit1. Text: =”;
Edit1. SetFocus;
end;
end;
procedure TForm1. Edit2Exit (Sender: TObject);
begin
If Edit2. Text=” Then Exit;
If (Abs (StrToFloat (Edit2. Text)) >100000)Then
begin
P3;
Edit2. Text: =”;
Edit2. SetFocus;
end;
end;
procedure TForm1. Edit3Exit (Sender: TObject);
begin
If Edit3. Text=” Then Exit;
If (StrToFloat (Edit3. Text) >10000) Then
begin
P3;
Edit3. Text: =”;
Edit3. SetFocus;
end;
end;
 // Основна процедура програми
Procedure TForm1. BitBtn1Click (Sender: TObject);
var
I,K: integer;
Y: array [0. .1000] of Real;
label L1;
begin
 // Перевірка наявності правильних значень вполях введення і їх взаємної
 // коректності, з виведенням відповднихповідомлень і формуванням переходів
IF (Edit1. Text = ”) or (Edit2. Text = ”) or(Edit3. Text = ”) then
begin
P4;
Exit;
end;
IF Edit3. Text = ‘0’ then
begin
MessageDlg (‘Треба задати крок табулювання,’
+ #13 +’ який має ненульове значення’,mtWarning, [mbCancel], 0);
Edit3. Text: = ”;
Edit3. SetFocus;
goto l1;
end;
Xn: =StrToFloat (Edit1. Text);
Xk: =StrToFloat (Edit2. Text);
H: =StrToFloat (Edit3. Text);
If Xk
begin
P1;
goto L1;
end;
If (H=Abs (Xk-Xn)) Then
begin
P2;
goto L1;
end;
X: =Xn-H;
K: = Round ( (Abs ( (Xk-Xn)) /H));
If K>1000 Then
begin
MessageDlg (‘Переповнення масиву даних. ‘
+#13 +’Треба зменшити інтервал або’
+#13 +’ збільшити крок табулювання’,mtWarning, [mbCancel], 0);
Edit1. Text: = ”;
Edit2. Text: = ”;
Edit3. Text: = ”;
goto l1;
end;
 // Фомування компонентів для виведеннярезультатів
StringGrid1. RowCount: = K+2;
Form1. Height: =430;
Form1. Position: =poScreenCenter;
Label4. Visible: =True;
Label5. Visible: =True;
Label6. Visible: =True;
Label7. Visible: =True;
StringGrid1. Visible: =True;
Label7. Caption: =’у полі memo’;
ListBox1. Items. Clear;
Memo1. Lines. Clear;
ListBox1. Visible: =True;
Memo1. Visible: =True;
StringGrid1. Cells [0,0]: =’X’;
StringGrid1. Cells [1,0]: =’Y’;
 // Розрахунок і виведення результатів
For I: =0 to K do
begin
Y [I]: = (1+ln (2-Xn+H*I)) / (1-Xn+H*I+0.1);
 // Наступний рядок забезпечує виведеннярезультату
 // з точністю до тисячних
Y [I]: = Round (Y [I] *1000) /1000;
StringGrid1. Cells [0, I+1]: =FloatToStr (Xn+H*I);// Виведення у таблицю
StringGrid1. Cells [1, I+1]: =FloatToStr (Y [I]);
ListBox1. Items. Add (FloatToStr (Xn+H*I) +’ ‘+FloatToStr(Y [i])); // Виведення у список
Memo1. Lines. Add (FloatToStr (Xn+H*I) +’ ‘+FloatToStr(Y [i])); // Виведення у поле Мемо
end;
l1:;
end;
 // Запис результатів у файл
procedure TForm1. BitBtn2Click (Sender: TObject);
begin
ListBox1. Items. SaveToFile (‘result. txt’);
end;
 // Збереження у файлі
procedure TForm1. N4Click (Sender: TObject);
begin
ListBox1. Items. SaveToFile (fname);
end;
 // Зчитати з файла і вивести у поле Мемо ізскриттям зайвих компонентів
procedure TForm1. N3Click (Sender: TObject);
begin
If FileExists (‘result. txt’) = False Then
Begin
MessageDlg (‘Файла не існує’, mtWarning, [mbCancel],0);
Exit;
end;
Label7. Visible: =True;
Label7. Caption: = ‘Результати зчитування зфайлу’;
Memo1. Lines. LoadFromFile (‘result. txt’);
Memo1. Visible: =True;
Label4. Visible: =False;
Label5. Visible: =False;
Label6. Visible: =False;
ListBox1. Visible: =False;
StringGrid1. Visible: =False;
Form1. Height: =430;
Memo1. SetFocus;
Form1. Position: =poScreenCenter;
end;
 // Створення файлу з перевіркою його існування
procedure TForm1. FormActivate (Sender: TObject);
begin
fname: =’result. txt’;
AssignFile (f, fname);
If FileExists (‘result. txt’) = False Then
begin
rewrite (f);
CloseFile (f);
end;
end;
 // Очищення полів введення
procedure TForm1. BitBtn3Click (Sender: TObject);
begin
P5;
end;
procedure TForm1. N5Click (Sender: TObject);
begin
P5;
end;
 // Вихід з програми
procedure TForm1. N7Click (Sender: TObject);
begin
Close;
end;
 // Виведення довідки
procedure TForm1. N8Click (Sender: TObject);
begin
ShowMessage (‘Аранчій І.О. ‘ + #13 + ‘ студентгрупи Пзс-504’);
end;
procedure TForm1. N9Click (Sender: TObject);
begin
ShowMessage (‘Навчальна програма табулюванняфункції. ‘ + #13 +
‘ Версія 1.0’);
end;
end.
/>/>Списоквикористаної літератури
 
1.        «Требованияи спецификации в разработке программ» М. Мир, 1984.
2.        В. Турский. «Методологияпрограммирования».
3.        Б. Іванов “Дискретная математика. Алгоритмы ипрограммы”.
4.        Конспект лекцій з предмету.
5.        Інтернет.