Контрольная работа на тему Специфікація якості програми
Работа добавлена на сайт bukvasha.net: 2014-11-19Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
Бердичівський політехнічний коледж
КОНТРОЛЬНА РОБОТА
з дисципліни “Технологія розробки програмного забезпечення”
(варіант №9)
Виконав: студент групи Пзс-504
Каленський М.Ю.
Перевірив: викладач
Тростянський Б.Г.
м. Бердичів
2007 р
Зміст
Специфікація якості програми.
Забезпечення стійкості програмних засобів.
Інструментальні середовища програмування.
Практичне завдання.
Список використаної літератури.
Бердичівський політехнічний коледж
КОНТРОЛЬНА РОБОТА
з дисципліни “Технологія розробки програмного забезпечення”
(варіант №9)
Виконав: студент групи Пзс-504
Каленський М.Ю.
Перевірив: викладач
Тростянський Б.Г.
м. Бердичів
2007 р
Зміст
Специфікація якості програми.
Забезпечення стійкості програмних засобів.
Інструментальні середовища програмування.
Практичне завдання.
Список використаної літератури.
Специфікація якості програми
Розробка специфікації якості зводиться, до побудови своєрідної моделі якості ПЗ. У цій моделі повинний бути перелік усіх елементарних властивостей, які необхідно забезпечити в ПЗ і які у сукупності утворять прийнятну для користувача якість ПЗ. При цьому кожна з цих властивостей повинна бути в достатній степені конкретизованою з урахуванням визначення вимог до ПЗ. Для конкретизації якості ПЗ по кожному з критеріїв використовується обмежений набір досить простих властивостей, які можуть бути однозначно інтерпретовані розроблювачами. Такі властивості називаються примітивами якості ПЗ. Деякі з примітивів можуть використовуватися по декількох критеріях. Можна визначити наступну залежність критеріїв якості від примітивів якості ПЗ.
Функціональність - завершеність.
Надійність - точність, автономність, стійкість, захищеність.
Легкість застосування – П - документованість, інформативність (тільки стосовно до документації по застосуванню), комунікабельність, стійкість, захищеність.
Ефективність - тимчасова ефективність, ефективність по ресурсах (по пам'яті), ефективність по пристроях.
Супровід - з даним критерієм зв'язано багато різних примітивів якості. Однак їх можна розподілити по двох групах, виділивши два підкритерія якості: простота і змінність.
Простота - це набір характеристик ПЗ, що дозволяють мінімізувати зусилля по вивченню і розумінню програм і документації.
Змінність - це характеристики ПЗ, що дозволяють виконувати чи спрощують внесення в нього необхідних змін і доробок.
Мобільність - незалежність від пристроїв, автономність, структурованість, модульність.
Нижче даються визначення використовуваних примітивів якості ПЗ.
Завершеність - властивість, що характеризує ступінь виконання ПЗ усіх явних і неявних функцій.
Точність - міра, що характеризує прийнятність величини похибки у видаваних програмами ПЗ результатах.
Автономність - властивість, що характеризує здатність ПЗ виконувати запропоновані функції без допомоги чи підтримки інших компонентів програмного забезпечення.
Стійкість - властивість, що характеризує здатність ПЗ продовжувати коректне функціонування, незважаючи на завдання неправильних (помилкових) вхідних даних.
Захищеність - властивість, що характеризує здатність ПЗ протистояти навмисним чи ненавмисним деструктивним діям користувача. К - документованість - властивість, що характеризує наявність, повноту, зрозумілість і наочність навчальної, інструктивної і довідкової документації, необхідної для застосування ПЗ.
Інформативність - властивість, що характеризує наявність у складі ПЗ інформації, необхідної і достатньої для розуміння призначення ПЗ, прийнятих припущень, обмежень, вхідних даних і результатів роботи окремих компонентів, а також поточного стану програм у процесі їхнього функціонування.
Комунікабельність - властивість, що характеризує ступінь, у якій ПЗ полегшує завдання чи опис вхідних даних, і здатність видавати корисні повідомлення в досить простій формі і з простим для розуміння змістом.
Часова ефективність - міра, що характеризує здатність ПЗ виконувати покладені на нього функції протягом визначеного відрізку часу.
Ефективність по ресурсах - міра, що характеризує здатність ПЗ виконувати покладені на нього функції при певних обмеженнях на використовувані ресурси (використовувану пам'ять).
Ефективність по пристроях - міра, що характеризує економічність використання апаратних пристроїв для рішення поставленої задачі.
С - документованість - властивість, що характеризує наявність документації, яка відбиває вимоги до ПЗ і результати різних етапів розробки даного ПЗ, обмеження й інші риси ПЗ, а також їхнє обґрунтування.
Зрозумілість - властивість, що характеризує ступінь, у якій ПЗ дозволяє вивчаючому його користувачеві зрозуміти призначення ПЗ, зроблені допущення й обмеження, вхідні дані і результати роботи програм, тексти цих програм і стан їхньої реалізації.
Структурованість - властивість, що характеризує програми ПЗ з погляду організації їх взаємозалежних частин у єдине ціле певним чином (наприклад, відповідно до принципів структурного програмування).
Зручність сприйняття - властивість, що характеризує легкість сприйняття тексту програм ПЗ (відступи, фрагментація, форматування).
Розширюваність - властивість, що характеризує здатність ПЗ до використання більшого обсягу пам'яті для збереження даних чи розширення функціональних можливостей окремих компонентів.
Здатність до модифікацій - міра, що характеризує ПЗ із погляду простоти внесення необхідних змін і доробок на всіх етапах і стадіях життєвого циклу ПЗ.
Модульність - властивість, що характеризує ПЗ із погляду організації його програм з таких дискретних компонентів, що зміна одного з них не впливає на інші компоненти.
Незалежність від пристроїв - властивість, що характеризує здатність ПЗ працювати на різноманітному апаратному забезпеченні (різних типах, моделях комп'ютерів).
Забезпечення стійкості програмних засобів
Цей примітив якості ПЗ забезпечується за допомогою так називаного захисного програмування. Узагалі говорячи, захисне програмування застосовується при програмуванні модуля для підвищення надійності ПЗ у більш широкому змісті. Захисне програмування засноване на важливій передумові: гірше, що може зробити модуль, – це прийняти неправильні вхідні дані і потім повернути невірний, але правдоподібний результат. Для того, щоб цього уникнути, у текст модуля включають перевірки його вхідних і вихідних даних на їхню коректність у відповідності зі специфікацією цього модуля, зокрема, повинні бути перевірене виконання обмежень на вхідні і вихідні дані і співвідношень між ними, зазначені в специфікації модуля. У випадку негативного результату перевірки збуджується відповідна виняткова ситуація. Для обробки таких ситуацій у кінець цього модуля включаються фрагменти другого роду – оброблювачі відповідних виняткових ситуацій. Ці оброблювачі крім видачі необхідної діагностичної інформації, можуть ужити заходів по виключенню помилки в даних (наприклад, зажадати їхнього повторного введення), або по ослабленню впливу помилки (наприклад, щоб уникнути поломки пристроїв, керованих за допомогою даного ПЗ, при аварійному припиненні виконання програми здійснюють м'яку їхню зупинку).
Застосування захисного програмування модулів приводить до зниження ефективності ПЗ як за часом, так і по пам'яті. Тому необхідно розумно регулювати ступінь застосування захисного програмування в залежності від вимог до надійності й ефективності ПЗ, сформульованих у специфікації якості розроблювального ПЗ. Вхідні дані розроблювального модуля можуть надходити як безпосередньо від користувача, так і від інших модулів. Найбільш уживаним випадком застосування захисного програмування є застосування його для першої групи даних, що й означає реалізацію стійкості ПЗ. Це потрібно робити завжди, коли в специфікації якості ПЗ мається вимога про забезпечення стійкості ПЗ. Застосування захисного програмування для другої групи вхідних даних означає спробу знайти помилку в інших модулях під час виконання розроблювального модуля, а для вихідних даних розроблювального модуля ( спробу знайти помилку в самому цьому модулі під час його виконання). Власне кажучи, це означає часткове втілення підходу самовиявлення помилок для забезпечення надійності ПЗ. Цей випадок захисного програмування застосовується вкрай рідко - тільки в тому випадку, коли вимоги до надійності ПЗ надзвичайно високі.
Інструментальні середовища програмування
Фірма Inprise Corporation випускає Delphi 5 у чотирьох варіантах: Standard (Стандартний), Professional (Професійний), Client/Server (Клієнт-сервер) і Enterprise. Кожний з цих комплектів включає стандартний набір засобів, що забезпечують розробку високоефективних програм різного призначення, у тому числі для роботи з базами даних. Разом з тим, чим вище рівень комплекту (від Standard до Enterprise), тим більші можливості він надає програмісту. Наприклад, комплект Client/Server дозволяє розробляти додатки для роботи з вилученими базами даних (наприклад, Access 97 і Oracle 8), а комплект Standard — ні.
Установка пакета Delphi виконується з CD-ROM, на якому знаходяться всі необхідні файли і програма ініціалізації установки (Delphi Setup Launcher). Програма ініціалізації установки запускається автоматично, як тільки інсталяційний диск буде поміщений у CD-дисковод.
Перед початком установки Delphi необхідно завершити роботу всіх активних додатків. У результаті запуску програми ініціалізації установки на екрані з'являється вікно Delphi Setup Launcher (Запуск установки Delphi), у якому виводиться інформаційне повідомлення і значки доступних для установки програм, кількість яких залежить від використовуваного комплекту Delphi. Для того щоб почати установку Delphi, необхідно установити курсор миші в рядок Delphi і клацнути лівою кнопкою. У результаті запускається програма установки Delphi, і на екрані з'являється вікно Setup (Установка), у якому виводиться інформаційне повідомлення і відсоток виконаною програмою роботи по підготовці до установки Delphi.
Після завершення підготовки до установки Delphi на екрані з'являється діалогове вікно Welcome (Початок), у якому для продовження установки потрібно натиснути кнопку Next (Далі). У результаті відкривається діалогове вікно Password Dialog, у якому в полі Serial Number і Authorization Key треба ввести серійний номер і код Вашого комплекту Delphi. Якщо дані введені правильно, то після клацання по кнопці Next з'являється діалогове вікно Software License Agreement (Ліцензійна угода). Прочитавши текст у цьому вікні, натисніть кнопку Yes (Так).
Наступне діалогове вікно, що відкривається в процесі установки Delphi, — це вікно Setup Туре (Варіант установки). У цьому вікні можна вибрати один із пропонованих програмою варіантів установки Delphi: Typical (Звичайна), Compact (Компактна) чи Custom (Вибіркова). Звичайний варіант установки припускає, що CD-ROM на жорсткий диск комп'ютера будуть скопійовані усі компоненти Delphi 5. При компактній установці на жорсткий диск комп'ютера копіюються тільки самі необхідні компоненти Delphi. У порівнянні з іншими варіантами установки компактний варіант вимагає найменшої кількісті вільного дискового простору. Однак у цьому випадку деякі можливості Delphi будуть недоступні. Вибірковий варіант установки дозволяє програмісту вибрати необхідні для роботи компоненти Delphi. Звичайно його використовують досвідчені програмісти.
Звичайний (повний) варіант установки вимагає порядку 100 Мб дискової пам'яті, однак якщо на твердому диску комп'ютера досить вільного місця, то краще вибрати цей варіант установки. Вибравши варіант установки, натисніть кнопку Next. Якщо була обрана часткова (вибіркова) установка, то відкривається діалогове вікно Select Components (Вибір компонентів), у якому вибираються потрібні компоненти Delphi.
Чергове клацання по кнопці Next відкриває діалогове вікно Select Component Directories (Вибір каталогів для компонентів). У цьому вікні міститься інформація про необхідний для установки дисковий простір (Space Required) і вільному дисковому просторі (Space Available). Крім цієї інформації зазначені каталоги, у які програма установки буде копіювати файли Delphi. Якщо даних каталогів на диску немає, то програма установки створить їх сама. При першій установці Delphi краще погодитися з іменами каталогів, пропонованими програмою установки.
Чергове клацання по кнопці Next відкриває діалогове вікно Select Program Folder (Вибір програмної папки). У списку Existing Folders (Існуючі папки) зазначені існуючі в комп'ютері програмні папки, а в поле Program Folders (Програмні папки) знаходиться ім'я папки, у яку програма установки пропонує помістити значки компонентів Delphi. Якщо папки Borland Delphi 5 на робочому столі комп'ютера немає, то програма установки створить її.
На цьому закінчується підготовчий етап установки. Клацання по кнопці Next відкриває діалогове вікно Start Copying Files (Початок копіювання файлів). У цьому вікні в списку Current Settings (Поточні установки) зазначена інформація про обраний варіант установки: тип установки, імена каталогів, куди будуть копіюватися файли Delphi, і ім'я програмної папки, переглядом спису Current Settings (Поточні установки), варто перевірити параметри, що будуть використовуватися під час безпосередньої установки Delphi.
Якщо всі параметри установки задані правильно, необхідно натиснути кнопку Install (Інсталювати). Після цього починається процес копіювання файлів Delphi з CD-ROM на жорсткий диск комп'ютера.
Після копіювання всіх необхідних файлів відкривається діалогове вікно Readme Information (Інформація). Натискання кнопки Next у цьому вікні відкриває останнє діалогове вікно програми установки — Setup Complete (Установка завершена).
У цьому вікні шляхом установки перемикача в одне з двох можливих положень вибирається варіант завершення роботи програми установки Delphi.
Варіантом завершення, що рекомендується, програми установки є перезапуск комп'ютера.
Після натискання кнопки Finish виконується перезавантаження Windows (якщо обраний варіант перезапуску комп'ютера). На цьому установка Delphi завершується.
Запуск Delphi
Delphi, як і будь-яка програма Windows, може бути запущена двома способами: вибором команди головного меню Windows чи клацанням на ярлику, що ідентифікує Delphi і розташовується, як правило, на робочому столі.
Основні вікна Delphi
Вид екрана після запуску Delphi трохи незвичайний. Замість одного вікна на екрані з'являються чотири: головне вікно Delphi 5, вікно форми Form1, вікно інспектора об'єктів Object Inspector і вікно редактора коду Unitl.pas, що майже цілком закрито вікном форми.
У головному вікні Delphi 5 знаходиться меню команд Delphi, панель інструментів і палітра компонентів.
Вікно форми Form1 являє собою заготовку (макет) вікна розроблювального додатка.
Вікно інспектора об'єктів Object Inspector дозволяє змінювати властивості (характеристики) об'єктів: форми, командних кнопок, полів введення і т.д. Після запуску Delphi у діалоговому вікні Object Inspector (Інспектор об'єктів) знаходяться властивості форми Form1.
У термінології візуального проектування об'єктами проекту є діалогові вікна і елементи керування, що знаходяться в діалогових вікнах (командні кнопки, поля введення текстової інформації, перемикачі і т.д.).
Вікно редактора коду, яке можна побачити, відсунувши убік вікно чи форми натиснувши клавішу <F12>, містить сформований Delphi шаблон тексту (коду) програми.
Для демонстрації можливостей Delphi і технології візуального проектування займемося розробкою програми перерахування ваги з фунтів у кілограми.
Робота над новим проектом, так у Delphi називається розроблювальний додаток, починається зі створення стартової форми — вікна, що з'являється при запуску додатка.
Стартова форма створюється шляхом зміни властивостей (характеристик) форми Form1. Властивості форми визначають її зовнішній вигляд: розмір, положення на екрані, текст заголовка, вид рамки. Властивості перераховані на вкладці Properties (Властивості) діалогового вікна Object Inspector (Інспектор об'єктів). У лівому стовпчику знаходяться імена властивостей, а в правій — їхні значення. При створенні форми в першу чергу потрібно змінити значення властивості caption (Заголовок). У нашому прикладі треба замінити Form1 на Фунти - кілограми. Аналогічним образом можна установити значення властивостей Height і Width, що визначають висоту і ширину форми. Цим властивостям треба привласнити значення 185 і 290.
Розмір форми і її положення на екрані, а також розмір і положення елементів керування на поверхні форми задаються в пікселах, тобто крапках екрана.
Розмір форми можна змінити так само, як і розмір будь-якого іншого вікна Windows, тобто захопленням і переміщенням (за допомогою миші) границі вікна. По закінченні переміщення границь автоматично зміняться значення властивостей Height і Width. Вони будуть відповідати встановленому розміру форми.
При виборі деяких властивостей, наприклад, властивості Color (Колір), що визначає колір фону форми, праворуч від значення властивості виводиться значок (стрілка), що вказує на наявність списку, що розкривається. Клацання на стрільці розкриває список припустимих значень властивості, з якого можна вибрати потрібне значення.
Об'єкти, у тому числі і форми, крім звичайних властивостей можуть мати і складні властивості. Перед ім'ям складної властивості розташований значок "плюс". При подвійному щиглику на імені складної властивості розкривається список уточнюючих властивостей, а значок "плюс" міняється на "мінус". У поле значення складної властивості Font розташована командна кнопка з трьома крапками, при натисканні якої з'являється стандартне діалогове вікно Windows, що дозволяє вибрати шрифт і задати його параметри.
Більшість властивостей визначають зовнішній вигляд форми. Властивість Name, що визначає ім'я форми, використовується в програмі для керування формою.
Практичне завдання
З використанням засобів візуального програмування розробити програму для автоматичного розрахунку значень складної функції:
Приклад файлу форми 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; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: 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;
//Основна процедура програми
rocedure 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<Xn Then
begin
P1;
goto L1;
end;
If (H<=0) Or (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;
//Збереження у файлі
rocedure 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;
//Створення файлу з перевіркою його існування
rocedure TForm1.FormActivate(Sender: TObject);
begin
fname:='result.txt';
AssignFile (f, fname);
If FileExists('result.txt')= False Then
begin
rewrite(f);
CloseFile(f);
end;
end;
//Очищення полів введення
rocedure TForm1.BitBtn3Click(Sender: TObject);
begin
P5;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
P5;
end;
//Вихід з програми
rocedure TForm1.N7Click(Sender: TObject);
begin
Close;
end;
//Виведення довідки
rocedure TForm1.N8Click(Sender: TObject);
begin
end;
procedure TForm1.N9Click(Sender: TObject);
begin
ShowMessage('Навчальна програма табулювання функції.' + #13 +
' Версія 1.0');
end;
end.
Розробка специфікації якості зводиться, до побудови своєрідної моделі якості ПЗ. У цій моделі повинний бути перелік усіх елементарних властивостей, які необхідно забезпечити в ПЗ і які у сукупності утворять прийнятну для користувача якість ПЗ. При цьому кожна з цих властивостей повинна бути в достатній степені конкретизованою з урахуванням визначення вимог до ПЗ. Для конкретизації якості ПЗ по кожному з критеріїв використовується обмежений набір досить простих властивостей, які можуть бути однозначно інтерпретовані розроблювачами. Такі властивості називаються примітивами якості ПЗ. Деякі з примітивів можуть використовуватися по декількох критеріях. Можна визначити наступну залежність критеріїв якості від примітивів якості ПЗ.
Функціональність - завершеність.
Надійність - точність, автономність, стійкість, захищеність.
Легкість застосування – П - документованість, інформативність (тільки стосовно до документації по застосуванню), комунікабельність, стійкість, захищеність.
Ефективність - тимчасова ефективність, ефективність по ресурсах (по пам'яті), ефективність по пристроях.
Супровід - з даним критерієм зв'язано багато різних примітивів якості. Однак їх можна розподілити по двох групах, виділивши два підкритерія якості: простота і змінність.
Простота - це набір характеристик ПЗ, що дозволяють мінімізувати зусилля по вивченню і розумінню програм і документації.
Змінність - це характеристики ПЗ, що дозволяють виконувати чи спрощують внесення в нього необхідних змін і доробок.
Мобільність - незалежність від пристроїв, автономність, структурованість, модульність.
Нижче даються визначення використовуваних примітивів якості ПЗ.
Завершеність - властивість, що характеризує ступінь виконання ПЗ усіх явних і неявних функцій.
Точність - міра, що характеризує прийнятність величини похибки у видаваних програмами ПЗ результатах.
Автономність - властивість, що характеризує здатність ПЗ виконувати запропоновані функції без допомоги чи підтримки інших компонентів програмного забезпечення.
Стійкість - властивість, що характеризує здатність ПЗ продовжувати коректне функціонування, незважаючи на завдання неправильних (помилкових) вхідних даних.
Захищеність - властивість, що характеризує здатність ПЗ протистояти навмисним чи ненавмисним деструктивним діям користувача. К - документованість - властивість, що характеризує наявність, повноту, зрозумілість і наочність навчальної, інструктивної і довідкової документації, необхідної для застосування ПЗ.
Інформативність - властивість, що характеризує наявність у складі ПЗ інформації, необхідної і достатньої для розуміння призначення ПЗ, прийнятих припущень, обмежень, вхідних даних і результатів роботи окремих компонентів, а також поточного стану програм у процесі їхнього функціонування.
Комунікабельність - властивість, що характеризує ступінь, у якій ПЗ полегшує завдання чи опис вхідних даних, і здатність видавати корисні повідомлення в досить простій формі і з простим для розуміння змістом.
Часова ефективність - міра, що характеризує здатність ПЗ виконувати покладені на нього функції протягом визначеного відрізку часу.
Ефективність по ресурсах - міра, що характеризує здатність ПЗ виконувати покладені на нього функції при певних обмеженнях на використовувані ресурси (використовувану пам'ять).
Ефективність по пристроях - міра, що характеризує економічність використання апаратних пристроїв для рішення поставленої задачі.
С - документованість - властивість, що характеризує наявність документації, яка відбиває вимоги до ПЗ і результати різних етапів розробки даного ПЗ, обмеження й інші риси ПЗ, а також їхнє обґрунтування.
Зрозумілість - властивість, що характеризує ступінь, у якій ПЗ дозволяє вивчаючому його користувачеві зрозуміти призначення ПЗ, зроблені допущення й обмеження, вхідні дані і результати роботи програм, тексти цих програм і стан їхньої реалізації.
Структурованість - властивість, що характеризує програми ПЗ з погляду організації їх взаємозалежних частин у єдине ціле певним чином (наприклад, відповідно до принципів структурного програмування).
Зручність сприйняття - властивість, що характеризує легкість сприйняття тексту програм ПЗ (відступи, фрагментація, форматування).
Розширюваність - властивість, що характеризує здатність ПЗ до використання більшого обсягу пам'яті для збереження даних чи розширення функціональних можливостей окремих компонентів.
Здатність до модифікацій - міра, що характеризує ПЗ із погляду простоти внесення необхідних змін і доробок на всіх етапах і стадіях життєвого циклу ПЗ.
Модульність - властивість, що характеризує ПЗ із погляду організації його програм з таких дискретних компонентів, що зміна одного з них не впливає на інші компоненти.
Незалежність від пристроїв - властивість, що характеризує здатність ПЗ працювати на різноманітному апаратному забезпеченні (різних типах, моделях комп'ютерів).
Забезпечення стійкості програмних засобів
Цей примітив якості ПЗ забезпечується за допомогою так називаного захисного програмування. Узагалі говорячи, захисне програмування застосовується при програмуванні модуля для підвищення надійності ПЗ у більш широкому змісті. Захисне програмування засноване на важливій передумові: гірше, що може зробити модуль, – це прийняти неправильні вхідні дані і потім повернути невірний, але правдоподібний результат. Для того, щоб цього уникнути, у текст модуля включають перевірки його вхідних і вихідних даних на їхню коректність у відповідності зі специфікацією цього модуля, зокрема, повинні бути перевірене виконання обмежень на вхідні і вихідні дані і співвідношень між ними, зазначені в специфікації модуля. У випадку негативного результату перевірки збуджується відповідна виняткова ситуація. Для обробки таких ситуацій у кінець цього модуля включаються фрагменти другого роду – оброблювачі відповідних виняткових ситуацій. Ці оброблювачі крім видачі необхідної діагностичної інформації, можуть ужити заходів по виключенню помилки в даних (наприклад, зажадати їхнього повторного введення), або по ослабленню впливу помилки (наприклад, щоб уникнути поломки пристроїв, керованих за допомогою даного ПЗ, при аварійному припиненні виконання програми здійснюють м'яку їхню зупинку).
Застосування захисного програмування модулів приводить до зниження ефективності ПЗ як за часом, так і по пам'яті. Тому необхідно розумно регулювати ступінь застосування захисного програмування в залежності від вимог до надійності й ефективності ПЗ, сформульованих у специфікації якості розроблювального ПЗ. Вхідні дані розроблювального модуля можуть надходити як безпосередньо від користувача, так і від інших модулів. Найбільш уживаним випадком застосування захисного програмування є застосування його для першої групи даних, що й означає реалізацію стійкості ПЗ. Це потрібно робити завжди, коли в специфікації якості ПЗ мається вимога про забезпечення стійкості ПЗ. Застосування захисного програмування для другої групи вхідних даних означає спробу знайти помилку в інших модулях під час виконання розроблювального модуля, а для вихідних даних розроблювального модуля ( спробу знайти помилку в самому цьому модулі під час його виконання). Власне кажучи, це означає часткове втілення підходу самовиявлення помилок для забезпечення надійності ПЗ. Цей випадок захисного програмування застосовується вкрай рідко - тільки в тому випадку, коли вимоги до надійності ПЗ надзвичайно високі.
Інструментальні середовища програмування
Фірма Inprise Corporation випускає Delphi 5 у чотирьох варіантах: Standard (Стандартний), Professional (Професійний), Client/Server (Клієнт-сервер) і Enterprise. Кожний з цих комплектів включає стандартний набір засобів, що забезпечують розробку високоефективних програм різного призначення, у тому числі для роботи з базами даних. Разом з тим, чим вище рівень комплекту (від Standard до Enterprise), тим більші можливості він надає програмісту. Наприклад, комплект Client/Server дозволяє розробляти додатки для роботи з вилученими базами даних (наприклад, Access 97 і Oracle 8), а комплект Standard — ні.
Установка пакета Delphi виконується з CD-ROM, на якому знаходяться всі необхідні файли і програма ініціалізації установки (Delphi Setup Launcher). Програма ініціалізації установки запускається автоматично, як тільки інсталяційний диск буде поміщений у CD-дисковод.
Перед початком установки Delphi необхідно завершити роботу всіх активних додатків. У результаті запуску програми ініціалізації установки на екрані з'являється вікно Delphi Setup Launcher (Запуск установки Delphi), у якому виводиться інформаційне повідомлення і значки доступних для установки програм, кількість яких залежить від використовуваного комплекту Delphi. Для того щоб почати установку Delphi, необхідно установити курсор миші в рядок Delphi і клацнути лівою кнопкою. У результаті запускається програма установки Delphi, і на екрані з'являється вікно Setup (Установка), у якому виводиться інформаційне повідомлення і відсоток виконаною програмою роботи по підготовці до установки Delphi.
Після завершення підготовки до установки Delphi на екрані з'являється діалогове вікно Welcome (Початок), у якому для продовження установки потрібно натиснути кнопку Next (Далі). У результаті відкривається діалогове вікно Password Dialog, у якому в полі Serial Number і Authorization Key треба ввести серійний номер і код Вашого комплекту Delphi. Якщо дані введені правильно, то після клацання по кнопці Next з'являється діалогове вікно Software License Agreement (Ліцензійна угода). Прочитавши текст у цьому вікні, натисніть кнопку Yes (Так).
Наступне діалогове вікно, що відкривається в процесі установки Delphi, — це вікно Setup Туре (Варіант установки). У цьому вікні можна вибрати один із пропонованих програмою варіантів установки Delphi: Typical (Звичайна), Compact (Компактна) чи Custom (Вибіркова). Звичайний варіант установки припускає, що CD-ROM на жорсткий диск комп'ютера будуть скопійовані усі компоненти Delphi 5. При компактній установці на жорсткий диск комп'ютера копіюються тільки самі необхідні компоненти Delphi. У порівнянні з іншими варіантами установки компактний варіант вимагає найменшої кількісті вільного дискового простору. Однак у цьому випадку деякі можливості Delphi будуть недоступні. Вибірковий варіант установки дозволяє програмісту вибрати необхідні для роботи компоненти Delphi. Звичайно його використовують досвідчені програмісти.
Звичайний (повний) варіант установки вимагає порядку 100 Мб дискової пам'яті, однак якщо на твердому диску комп'ютера досить вільного місця, то краще вибрати цей варіант установки. Вибравши варіант установки, натисніть кнопку Next. Якщо була обрана часткова (вибіркова) установка, то відкривається діалогове вікно Select Components (Вибір компонентів), у якому вибираються потрібні компоненти Delphi.
Чергове клацання по кнопці Next відкриває діалогове вікно Select Component Directories (Вибір каталогів для компонентів). У цьому вікні міститься інформація про необхідний для установки дисковий простір (Space Required) і вільному дисковому просторі (Space Available). Крім цієї інформації зазначені каталоги, у які програма установки буде копіювати файли Delphi. Якщо даних каталогів на диску немає, то програма установки створить їх сама. При першій установці Delphi краще погодитися з іменами каталогів, пропонованими програмою установки.
Чергове клацання по кнопці Next відкриває діалогове вікно Select Program Folder (Вибір програмної папки). У списку Existing Folders (Існуючі папки) зазначені існуючі в комп'ютері програмні папки, а в поле Program Folders (Програмні папки) знаходиться ім'я папки, у яку програма установки пропонує помістити значки компонентів Delphi. Якщо папки Borland Delphi 5 на робочому столі комп'ютера немає, то програма установки створить її.
На цьому закінчується підготовчий етап установки. Клацання по кнопці Next відкриває діалогове вікно Start Copying Files (Початок копіювання файлів). У цьому вікні в списку Current Settings (Поточні установки) зазначена інформація про обраний варіант установки: тип установки, імена каталогів, куди будуть копіюватися файли Delphi, і ім'я програмної папки, переглядом спису Current Settings (Поточні установки), варто перевірити параметри, що будуть використовуватися під час безпосередньої установки Delphi.
Якщо всі параметри установки задані правильно, необхідно натиснути кнопку Install (Інсталювати). Після цього починається процес копіювання файлів Delphi з CD-ROM на жорсткий диск комп'ютера.
Після копіювання всіх необхідних файлів відкривається діалогове вікно Readme Information (Інформація). Натискання кнопки Next у цьому вікні відкриває останнє діалогове вікно програми установки — Setup Complete (Установка завершена).
У цьому вікні шляхом установки перемикача в одне з двох можливих положень вибирається варіант завершення роботи програми установки Delphi.
Варіантом завершення, що рекомендується, програми установки є перезапуск комп'ютера.
Після натискання кнопки Finish виконується перезавантаження Windows (якщо обраний варіант перезапуску комп'ютера). На цьому установка Delphi завершується.
Запуск Delphi
Delphi, як і будь-яка програма Windows, може бути запущена двома способами: вибором команди головного меню Windows чи клацанням на ярлику, що ідентифікує Delphi і розташовується, як правило, на робочому столі.
Основні вікна Delphi
Вид екрана після запуску Delphi трохи незвичайний. Замість одного вікна на екрані з'являються чотири: головне вікно Delphi 5, вікно форми Form1, вікно інспектора об'єктів Object Inspector і вікно редактора коду Unitl.pas, що майже цілком закрито вікном форми.
У головному вікні Delphi 5 знаходиться меню команд Delphi, панель інструментів і палітра компонентів.
Вікно форми Form1 являє собою заготовку (макет) вікна розроблювального додатка.
Вікно інспектора об'єктів Object Inspector дозволяє змінювати властивості (характеристики) об'єктів: форми, командних кнопок, полів введення і т.д. Після запуску Delphi у діалоговому вікні Object Inspector (Інспектор об'єктів) знаходяться властивості форми Form1.
У термінології візуального проектування об'єктами проекту є діалогові вікна і елементи керування, що знаходяться в діалогових вікнах (командні кнопки, поля введення текстової інформації, перемикачі і т.д.).
Вікно редактора коду, яке можна побачити, відсунувши убік вікно чи форми натиснувши клавішу <F12>, містить сформований Delphi шаблон тексту (коду) програми.
Для демонстрації можливостей Delphi і технології візуального проектування займемося розробкою програми перерахування ваги з фунтів у кілограми.
Робота над новим проектом, так у Delphi називається розроблювальний додаток, починається зі створення стартової форми — вікна, що з'являється при запуску додатка.
Стартова форма створюється шляхом зміни властивостей (характеристик) форми Form1. Властивості форми визначають її зовнішній вигляд: розмір, положення на екрані, текст заголовка, вид рамки. Властивості перераховані на вкладці Properties (Властивості) діалогового вікна Object Inspector (Інспектор об'єктів). У лівому стовпчику знаходяться імена властивостей, а в правій — їхні значення. При створенні форми в першу чергу потрібно змінити значення властивості caption (Заголовок). У нашому прикладі треба замінити Form1 на Фунти - кілограми. Аналогічним образом можна установити значення властивостей Height і Width, що визначають висоту і ширину форми. Цим властивостям треба привласнити значення 185 і 290.
Розмір форми і її положення на екрані, а також розмір і положення елементів керування на поверхні форми задаються в пікселах, тобто крапках екрана.
Розмір форми можна змінити так само, як і розмір будь-якого іншого вікна Windows, тобто захопленням і переміщенням (за допомогою миші) границі вікна. По закінченні переміщення границь автоматично зміняться значення властивостей Height і Width. Вони будуть відповідати встановленому розміру форми.
При виборі деяких властивостей, наприклад, властивості Color (Колір), що визначає колір фону форми, праворуч від значення властивості виводиться значок (стрілка), що вказує на наявність списку, що розкривається. Клацання на стрільці розкриває список припустимих значень властивості, з якого можна вибрати потрібне значення.
Об'єкти, у тому числі і форми, крім звичайних властивостей можуть мати і складні властивості. Перед ім'ям складної властивості розташований значок "плюс". При подвійному щиглику на імені складної властивості розкривається список уточнюючих властивостей, а значок "плюс" міняється на "мінус". У поле значення складної властивості Font розташована командна кнопка з трьома крапками, при натисканні якої з'являється стандартне діалогове вікно Windows, що дозволяє вибрати шрифт і задати його параметри.
Більшість властивостей визначають зовнішній вигляд форми. Властивість Name, що визначає ім'я форми, використовується в програмі для керування формою.
Практичне завдання
З використанням засобів візуального програмування розробити програму для автоматичного розрахунку значень складної функції:
Приклад файлу форми 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; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: 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;
//Основна процедура програми
rocedure 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<Xn Then
begin
P1;
goto L1;
end;
If (H<=0) Or (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;
//Збереження у файлі
rocedure 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;
//Створення файлу з перевіркою його існування
rocedure TForm1.FormActivate(Sender: TObject);
begin
fname:='result.txt';
AssignFile (f, fname);
If FileExists('result.txt')= False Then
begin
rewrite(f);
CloseFile(f);
end;
end;
//Очищення полів введення
rocedure TForm1.BitBtn3Click(Sender: TObject);
begin
P5;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
P5;
end;
//Вихід з програми
rocedure TForm1.N7Click(Sender: TObject);
begin
Close;
end;
//Виведення довідки
rocedure TForm1.N8Click(Sender: TObject);
begin
end;
procedure TForm1.N9Click(Sender: TObject);
begin
ShowMessage('Навчальна програма табулювання функції.' + #13 +
' Версія 1.0');
end;
end.
Список використаної літератури
1. Б.Іванов “Дискретная математика. Алгоритмы и программы”.
2. В. Турский. «Методология программирования».
3. «Требования и спецификации в разработке программ.» М. Мир, 1984.
4. Конспект лекцій з предмету.
5. Інтернет мережа..
1. Б.Іванов “Дискретная математика. Алгоритмы и программы”.
2. В. Турский. «Методология программирования».
3. «Требования и спецификации в разработке программ.» М. Мир, 1984.
4. Конспект лекцій з предмету.
5. Інтернет мережа..