Опрацьовування виняткових ситуацій в Delphi

Поняття та класи виняткових ситуацій (помилок, виникаючих у процесі роботи програми). Їх створення, розпізнавання та поновлення. Витік ресурсів і захист від нього. Виведення на екран чисел в порядку, зворотному введенню. Обрахування суми елементів масиву.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 16.11.2017
Размер файла 260,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Зміст

Вступ

1 Теоретична частина

1.1 Порядок застосування виключних ситуацій, їх протоколювання, коди помилок при виникненні виключних ситуацій

2 Практична частина

2.1 Розробити прикладне застосування, в якому необхідно знайти найменше з п'яти введених чисел, та вивести його значення на форму

2.2 Розробити прикладне застосування, якщо відомо, що дано речове число x, необхідно знайти значення наступної функції f, приймаючої речові значення:

f (x) = 2sin(x), якщо x>0;

f (x) = 6 - x, якщо x ? 0.

2.3 Розробити прикладне застосування у якому необхідно виконати наступні дії, а саме: вивести на екран три числа в порядку, зворотному введенню

2.4 Розробити прикладне застосування у якому необхідно обрахувати суму елементів масиву, вхідні дані довільні.

Висновок

Література

Вступ

Курсова робота ставить ціль - вивчити матеріал і обґрунтувати рішення практичного завдання.

Виконання курсової роботи має за мету:

- поглибити теоретичні знання по засобах програмування;

- розширити знання одержані при вивченні дисциплін «Програмування»;

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

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

В цілому, при виникненні виняткової ситуації, управління передається деякому заздалегідь призначеному обробникові (опрацьовувачу). У деяких мовах, обробник може відновити виконання програми з місця виникнення винятку. Таким чином, обробка помилок передається на вищий рівень і забезпечується можливість так званого нелокального виходу, тобто передачі управління на деяку «віддалену», можливо заздалегідь невідому, точку програми через довільне число викликів функцій.

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

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

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

В складних програмах виникають великі «нагромадження» операторів try … finally і try … catch (try … except), але без застосування механізму обробки винятків аналогічна за функціональністю програма виглядала б ще більше захаращеною.

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

Обробників може бути кілька, один за одним, і кожен може вказувати тип винятку, який він обробляє.

Деякі мови також допускають спеціальний блок (else), який виконується, якщо жодного винятку не згенерувано у відповідній області дії. Частіше зустрічається можливість безумовного виконання коду (finally, ensure), навіть у випадку якщо виняток було викинуто, але не оброблено.

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

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

1. Теоретична частина

1.1 Помилки і виняткові ситуації

Виняткова ситуація (Exception) - це переривання нормального ходу роботи програми через неможливість правильно виконати наступні дії.

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

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

Механізм обробки виняткових ситуацій досить складний у своєї реалізації, але для програміста він простий і прозорий. Для його використання в мову Delphi введені спеціальні конструкції try…except…end, try…finally…end і оператор raise, Розглянуті в цьому розділі.

1.2 Класи виняткових ситуацій

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

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

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

Таблиця 1.1 - Класи виняткових ситуацій.

Клас виняткових ситуацій

Опис

EAbort

"Мовчазна" виняткова ситуація, яка використовується для виходу з декількох рівнів вкладених блоків або підпрограм. При цьому на екран не видається ніяких повідомлень про помилку. Для генерації виключної ситуації класу EAbort потрібно викликати стандартну процедуру Abort.

EInOutError

Помилка доступу до файлу або пристрою введення-виведення. Код помилки міститься в поле ErrorCode.

EExternal

Виняткова ситуація, що виникла поза програмою, наприклад, в операційній системі.

EExternalException

Виняткова ситуація, що виникла за межами програми, наприклад в DLL-бібліотеці, розробленої на мові C + +.

EHeapException

Загальний клас виняткових ситуацій, що виникають при роботі з динамічною пам'яттю. Є базовим для класів EOutOfMemory і EInvalidPointer.Увага! Створення виняткових ситуацій цього класу (і всіх його нащадків) повністю бере на себе середовище Delphi, тому ніколи не створюйте такі виняткові ситуації за допомогою оператора raise.

EOutOfMemory

Вільна оперативна пам'ять вичерпана (див. EHeadException).

EInvalidPointer

Спроба звільнити недійсний вказівник (див. EHeadException). Зазвичай це означає, що покажчик вже звільнений.

EIntError

Загальний клас виняткових ситуацій цілочисельний арифметики, від якого породжені класи EDivByZero, ERangeError і EIntOverflow.

EDivByZero

Спроба ділення цілого числа на нуль.

ERangeError

Вихід за межі діапазону цілого числа або результату цілочисельного виразу.

EIntOverflow

Переповнення в результаті целочисленной операції.

EMathError

Загальний клас виняткових ситуацій речової математики, від якого породжені класи EInvalidOp, EZeroDivide, EOverflow і EUnderflow.

EInvalidOp

Невірний код операції речової математики.

EZeroDivide

Спроба ділення дійсного числа на нуль.

EOverflow

Втрата старших розрядів дійсного числа в результаті переповнення розрядної сітки.

EUnderflow

Втрата молодших розрядів дійсного числа в результаті переповнення розрядної сітки.

EInvalidCast

Невдала спроба приведення об'єкта до іншого класу за допомогою оператора as.

EConvertError

Помилка перетворення даних за допомогою функцій IntToStr, StrToInt, StrToFloat, StrToDateTime.

EAccessViolation

Додаток здійснило доступ до невірного адресою в пам'яті. Зазвичай це означає, що програма звернулася за даними по неініціалізованих вказівником.

EPrivilege

Спроба виконати привілейовану інструкцію процесора, на яку програма не має права.

EStackOverflow

Стек програми не може бути більше збільшений.

EControlC

Під час роботи консольного застосування користувач натиснув комбінацію клавіш Ctrl + C.

EAssertionFailed

Виникає при виклику процедури Assert, коли перший параметр дорівнює значенню False.

EPackageError

Проблема під час завантаження та ініціалізації бібліотеки компонентів.

EOSError

Виняткова ситуація, що виникла в операційній системі.

Спадкування класів дозволяє створювати сімейства родинних виняткових ситуацій. Прикладом такого сімейства є класи виняткових ситуацій речової математики, які оголошені в модулі SysUtils наступним чином.

type

EMathError = class(Exception);

EInvalidOp = class(EMathError);

EZeroDivide = class(EMathError);

EOverflow = class(EMathError);

EUnderflow = class(EMathError);

Клас виняткових ситуацій EMathError є базовим для класів EInvalidOp, EZeroDivide, EOverflow і EUnderflow, тому, обробляючи виняткові ситуації класу EMathError, ви будете обробляти всі помилки речової математики, включаючи EInvalidOp, EZeroDivide, EOverflow і EUnderflow.

Неважко помітити, що імена класів винятків починаються з букви E (Від слова Exception). Цього правила корисно дотримуватися при оголошенні власних класів винятків, наприклад:

type

EMyException = class(Exception)

MyErrorCode: Integer;

end;

Як описуються класи виняткових ситуацій зрозуміло, розглянемо тепер, як такі ситуації обробляються.

1.3 Обробка виняткових ситуацій

1.3.1 Створення виняткової ситуації

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

raise EOutOfMemory.Create (Малувато пам'яті);

Даний оператор створює об'єкт класу EOutOfMemory (Клас помилок вичерпання пам'яті) і перериває нормальне виконання програми. Викликані підпрограми можуть цю виняткову ситуацію перехопити і обробити. Для цього в них організується так званий захищений блок:

try

/ / Захищаються від помилок оператори

except

/ / Оператори обробки виключної ситуації

end;

Між словами try і except поміщаються захищаються від помилок оператори. Якщо при виконанні будь-якого з цих операторів виникає виняткова ситуація, то управління передається операторам між словами except і end, Що створює блок обробки виняткових ситуацій. При нормальномувиконанні програми блок except…end пропускається.

Рисунок 1.1 - Пропуск блоку except…end.

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

try

/ / Захищаються оператори

try

/ / Захищаються оператори

except

/ / Локальна обробка виняткових ситуацій

end;

/ / Захищаються оператори

except

/ / Глобальна обробка виняткових ситуацій

end;

Виняткові ситуації зовнішнього захищеного блоку, що виникають за межами вкладеного блоку, обробляються зовнішньої секцією except…end. Виняткові ситуації вкладеного захищеного блоку обробляються вкладеної секцією except…end.

1.3.2 Розпізнавання класу виняткової ситуації

Розпізнавання класу виняткової ситуації виконується за допомогою конструкцій on <клас виняткової ситуації> do <оператор>; які записуються в секції обробки виключної ситуації, наприклад:

try

/ / Обчислення з числами

except

on EZeroDivide do … ; / / Обробка помилки ділення на нуль

on EMathError do … ; / / Обробка інших помилок речової математики

end;

Пошук відповідного обробника виконується послідовно до тих пір, поки клас виняткової ситуації не виявиться сумісним з класом, зазначеним в операторі on. Як тільки обробник знайдено, випоняемие оператор, що стоїть за словом do і управління передається за секцію except…end. Якщо виняткова ситуація не належить до жодного із зазначених класів, то управління передається в зовнішній блок try…except…end і обробник шукається в ньому.

Зверніть увагу, що порядок операторів on має значення, оскільки розпізнавання виняткових ситуацій має походити від приватних класів до загальних класів, інакше кажучи, від нащадків до предків. З чим це пов'язано? Зараз зрозумієте. Уявіть, до чого призведе зміна порядку операторів on у прикладі вище, якщо взяти до уваги, що клас EMathError є базовим для EZeroDivide. Відповідь проста: обробник EMathError буде поглинати всі помилки речової математики, в тому числі EZeroDivide, В результаті обробник EZeroDivide ніколи не виконається.

На найвищому рівні програми буває необхідно перехоплювати всі виняткові ситуації, щоб у разі якоїсь необлікованої помилки коректно завершити програму. Для цього застосовується так званий обробник за умовчанням (Default exception handler). Він записується в секції except після всіх операторів on і починається ключовим словом else:

try

{Обчислення з числами}

except

on EZeroDivide do {обробка помилки ділення на нуль};

on EMathError do {обробка інших помилок речової математики};

else {обробка всіх інших помилок (обробник за умовчанням)};

end;

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

1.3.3 Приклад обробки виключної ситуації

Як приклад обробки виключної ситуації розглянемо дві функції: StringToCardinal і StringToCardinalDef.

Функція StringToCardinal виконує перетворення рядка в число з типом Cardinal. Якщо перетворення неможливо, функція створює виняткову ситуацію класу EConvertError.

function StringToCardinal(const S: string): Cardinal;

var

I: Integer;

B: Cardinal;

begin

Result := 0;

B := 1;

for I := Length(S) downto 1 do

begin

if not (S[I] in [0..9]) then

raise EConvertError.Create (S + is not a valid cardinal value);

Result := Result + B * (Ord(S[I]) - Ord(0));

B := B * 10;

end;

end;

Функція StringToCardinalDef також виконує перетворення рядка в число з типом Cardinal, але на відміну від функції StringToCardinal вона не створює виняткову ситуацію. Замість цього вона дозволяє задати значення, яке повертається в разі невдалої спроби перетворення:

function StringToCardinalDef (const S: string; Default: Cardinal = 0): Cardinal;

begin

try

Result := StringToCardinal(S);

except

on EConvertError do

Result := Default;

end;

end;

Для перетворення вихідного рядка в число використовується певна вище функція StringToCardinal. Якщо при перетворенні виникає виняткова ситуація, то вона "поглинається" функцією StringToCardinalDef, яка в цьому випадку повертає значення параметра Default. Якщо відбувається яка-небудь інша помилка (не EConvertError), то управління передається зовнішньому блоку обробки виняткових ситуацій, з якого була викликана функція StringToCardinalDef.

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

1.3.4 Поновлення виняткової ситуації

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

try

/ / Обчислення з числами

except

on EZeroDivide do

begin

/ / Часткова обробка помилки

raise; / / відновлення виняткової ситуації

end;

end;

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

1.3.5 Доступ до об'єкту, що описує виняткову ситуацію

При обробці виняткової ситуації може знадобитися доступ до об'єкта, що описує цю ситуацію і містить код помилки, текстовий опис помилки і т.д. У цьому випадку використовується розширена запис оператора on:

on <ідентифікатор об'єкта>: <клас виняткової ситуації> do <оператор>;

Наприклад, об'єкт виняткової ситуації потрібен для того, щоб видати користувачеві повідомлення про помилку:

try

/ / Захищаються оператори

except

on E: EOutOfMemory do

ShowMessage(E.Message);

end;

Мінлива E - це об'єкт виняткової ситуації, ShowMessage - Процедура модуля DIALOGS, що відображає на екрані невелике вікно з текстом і кнопкою OK. Властивість Message типу string визначено в класі Exception, Воно містить текстовий опис помилки. Початкове значення для тексту повідомлення вказується при конструюванні об'єкта виняткової ситуації.

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

1.4 Захист виділених ресурсів від зникнення

1.4.1 Витік ресурсів і захист від нього

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

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

/ / Запит ресурсу

try

/ / Захищаються оператори, які використовують ресурс

finally

/ / Звільнення ресурсу

end;

Особливість цього блоку полягає в тому, що секція finally…end виконується завжди незалежно від того, відбувається виняткова ситуація чи ні. Якщо який-небудь оператор секції try…finally генерує виняткову ситуацію, то спочатку виконується секція finally … end, звана секцією завершення (звільнення ресурсів), а потім управління передається зовнішньому захищеного блоку. Якщо всі захищаються оператори виконуються без помилок, то секція завершення теж працює, але управління передається наступному за нею оператору. Зверніть увагу, що секція finally…end не обробляє виняткову ситуацію, в ній немає ні засобів її виявлення, ні засобів доступу до об'єкта виняткової ситуації.

Рисунок 1.2 Логіка роботи оператора try … finally … end

Блок try…finally…end володіє ще однією важливою особливістю. Якщо він поміщений в цикл, то виклик із захищеного блоку процедури Break з метою передчасного виходу з циклу або процедур Continue з метою переходу на наступну ітерацію циклу спочатку забезпечує виконання секції finally…end, А потім вже виконується відповідний перехід. Це твердження справедливо також і для процедури Exit (вихід з підпрограми).

Як показує практика, підпрограми часто розподіляють відразу кілька ресурсів і використовують їх разом. У таких випадках застосовуються вкладені блоки try…finally…end:

/ / Розподіл першого ресурсу

try

/ / Розподіл другого ресурсу

try

/ / Використання обох ресурсів

finally

/ / Звільнення другого ресурсу

end;

finally

/ / Звільнення першого ресурсу

end;

Крім того, ви успішно можете комбінувати блоки try…finally…end і try…except…end для захисту ресурсів та обробки виняткових ситуацій.

2. Практична частина

1.1 Розробити прикладне застосування, в якому необхідно знайти найменше з п'яти введених чисел, та вивести його значення на форму.

1.1.1 Блок-схема даного завдання зображена на Рисунку 2.1.

Рисунок 2.1. - Блок-схема завдання 2.1

1.1.2 Лістінг програми 2.1

program Project21;

{$APPTYPE CONSOLE}

uses

SysUtils;

Var a:array[1..5] of integer;

i,b:integer;

begin

{ TODO -oUser -cConsole Main : Insert code here }

Writeln('Enter five numbers');

for i:=1 to 5 do

Readln(a[i]);

b:=a[1];

for i:=2 to 5 do

begin

if a[i]<b

then b:=a[i];

end;

writeln('The least number is:',b);

readln;

end.

1.1.3 Результат роботи даного завдання на Рисунку 2.2

Рисунок 2.2 - Результат роботи програми 2.1

1.1.4 Відповіді задачі 2.1

Таблиця 2.1 - Відповіді завдання 2.1

Числа:

2,1,5,7,3

Результат:

«Найменше число це: 1».

1.2 Розробити прикладне застосування, якщо відомо, що дано речове число x, необхідно знайти значення наступної функції f, приймаючої речові значення: f (x) = 2sin(x), якщо x>0; f (x) = 6 - x, якщо x ? 0.

1.2.1 Блок-схема даного завдання зображена на Рисунку 2.3

Рисунок 2.3 - Блок-схема завдання 2.2

1.2.2 Лістінг програми 2.2

unit Unit1;

interface

uses

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

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Button1: TButton;

Button2: TButton;

Edit2: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

x,f: real;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

x:=StrToFloat(Edit1.Text);

if x > 0 then f := 2*sin(x)

else

f :=6-x; Edit2.Text:=FloatToSTr(f);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

close;

end;

end.

1.2.3 Результат роботи даного завдання на Рисунку 2.4

Рисунок 2.4 - Результат роботи завдання 2.2

1.2.4 Відповіді задачі 2.2

Таблиця 2.2 - Відповіді завдання 2.2

x=

23;

Результат:

-1,69244080

x=

-2

Результат:

8

1.3 Розробити прикладне застосування у якому необхідно виконати наступні дії, а саме: вивести на екран три числа в порядку, зворотному введенню.

1.3.1 Блок-схема даного завдання зображена на Рисунку 2.5

Рисунок 2.5 - Блок-схема завдання 2.3

1.3.2 Лістінг програми 2.3

program Project2;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

a,b,c:real;

begin

{ TODO -oUser -cConsole Main : Insert code here }

writeln('enter 3 numbers');

readln(a,b,c);

writeln(c:4:2,' ',b:4:2,' ',a:4:2);

readln;

end.

1.3.3 Результат програми зображений на Рисунку 2.6

Рисунок 2.6 - Результат роботи програми 2.3

1.3.4 Відповіді задачі 2.3

Таблиця 2.3 - Відповіді завдання 2.3

A=

2

B=

4

C=

1

Результат:

1, 4, 2.

1.4 Розробити прикладне застосування у якому необхідно обрахувати суму елементів масиву, вхідні дані довільні

1.4.1 Блок-схема даного завдання зображена на Рисунку 2.7

Рисунок 2.7 - Блок-схема завдання 2.4

1.4.2 Лістінг програми 2.4

program Project4;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

a:array[1..567657] of integer;

S:integer;

i,n:integer;

begin

{ TODO -oUser -cConsole Main : Insert code here }

writeln('Enter the number of array elements');

readln(n);

for i:=1 to n do

begin

writeln('Enter the number',i);

readln(a[i]);

end;

for i:=1 to n do

S:=S+a[i];

writeln('S=',S);

readln;

end.

1.4.3 Результат програми зображений на Рисунок 2.8

Рисунок 2.8 - Результат роботи програми 2.4

1.4.4 Відповіді задачі 2.4

Таблиця 2.4 - Відповіді завдання 2.4

Кількість елементів :

3

Введені числа:

2,3,1

Результат:

6

винятковий помилка масив програма

Висновок

При виконанні курсової роботи я поглибив свої знання в області комп'ютерної техніки, набув практичних навичок роботи з ЕОМ та інформацією представленою в ній, навчився самостійно шукати методи розв'язку задач, освоїв прийоми систематизації знань та використав їх на практиці, глибше зрозумів основи алгоритмізації та програмування при розв'язку задач, навчився виконувати оформлення результатів роботи та представляти їх при захисті, освоїв основні елементи практичного програмування, уяснив роль програмного забезпечення ЕОМ, добре засвоїв принципи роботи з найбільш необхідним програмним забезпеченням та мовами програмування (Windows, MS Offise, Delphi).

Також, я систематизував свої знання Delphi, та в Об'єктно-орієнтованому програмуванні в цілому. Зрозумів як виконувати редагування кода для його переносу з Pascal.ABC у Delphi та навпаки.

Завдяки цій курсовій роботі я отримав більш глибокі знання в області програмування на мові Delphi.

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

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

Об'єктом моєї курсової роботи були виняткові ситуації, тобто помилки, виникаючої у процесі роботи програми.

Є дуже багато причин виникнення виняткових ситуацій, і всі вони пов'язані із кодом програми. Наприклад:

- Компоненти, які включені в програму.

- Драйвери баз даних.

- Операційна система.

- Драйвери пристроїв.

- Бібліотеки RTL та VCL Delphi.

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

Процес видалення даних буде продовжуватись до тих пір, поки не виконається одна з двох ситуацій:

- Виконання програми дійде до конструкції try...except.

- Управління буде передано глобальному обробнику виключних ситуацій.

Обидва варіанти представляють собою те, що прийнято називати обробкою виключної ситуації.

У курсовій роботі я розглядав можливості обробки виняткових ситуації завдяки різним конструкціям: Try…Finally, Try…Except, їх обов'язковим та необов'язковим елементам, наприклад: for…do та on…do.

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

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

Література

1 Архангельський А.. Інтегрірованная середовище розробки Delphi - М.:ЗАО, Біном; 1999.

2 Возневич Э.. Delphi. Освой самостоятельно. - М.: Восточная Книжная Компания, 2011. - 736 с.

3 Гофман В.Э., Хомоненко А.Д. Delphi. Быстрый старт. - СПб.: БХВ-Петербург, 2002.

4 Кенту М.. для професіоналів Delphi 6: видавництво Пітер, 2002.

5 Керман Митчелл.. Программирование и отладка в Delphi: Учебный курс: М.; СПб.; Киев, 2003.

6 Культин Н.Б. Delphi в задачах и примерах. - СПб.: БХВ-Петербург, 2003.

7 Леонов В.. Обучение мобильной разработке на Delphi. - СПб.: Embarcadero, 2014.- 332 с.

8 Осипов Д.. Базы данных и Delphi. Теория и практика. - СПб.: БХВ-Петербург, 2011. - 752 с.

9 Осипов Д.. Delphi. Программирование для Windows, OS X, iOS и Android. - СПб.: БХВ-Петербург, 2014. - 464 с.

10 Парижский С.М. Delphi Учимся на примерах - СПб.:Питер, 2012. - 230 с.

11 Рубанцев В.. Delphi в примерах, играх и программах. - М.: Я + R, 2011. - 418 с.

12 Рубенкинг Н.. Программирование в Delphi для “чайников”. -К.:Диалектика, 1996. - 304 с.

13 Фаронов В.. DELPHI 6: Учбовий курс - СПб: Пітер, 2002.

14 Фленов М.. Библия Delphi. - СПб.: БХВ-Петербург, 2012. - 865 с.

15 Шкрыль А.. Разработка клиент-серверных приложений в Delphi. - СПб.: БХВ - Петербург, 2006. - 480 с.

Размещено на Allbest.ru

...

Подобные документы

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

    лабораторная работа [131,2 K], добавлен 18.11.2021

  • Написання програми для виведення чисел Фібоначчі. Загальна характеристика мови Паскаль. Науковий доробок Леонардо Фібоначчі. Історія і властивості послідовності. Особливості програмування мовою Turbo Pascal. Відкалібрування та синхронізування програми.

    курсовая работа [325,1 K], добавлен 09.10.2013

  • Алгоритм оптичного розпізнавання образів. Універсальність таких алгоритмів. Технологічність, зручність у процесі використання програми. Два класи алгоритмів розпізнавання друкованих символів: шрифтовий та безшрифтовий. технологія підготовки бази даних.

    реферат [24,5 K], добавлен 19.11.2008

  • Лінійна програма на C++. Арифметичні вирази. Обчислення значень функції. Значення логічних виразів і логічних операцій. Види циклів, обчислення нескінченної суми з заданою точністю. Створення файлу цілих чисел з N компонент, виведення їх на екран.

    контрольная работа [12,7 K], добавлен 09.09.2011

  • Поняття мови програмування С++, її сутність та особливості, призначення та використання. Структура програми, її основні елементи та загальні правила роботи. Охорона праці при роботі з обчислювальною технікою. Апаратні вимоги для виконання програми.

    курсовая работа [126,2 K], добавлен 29.03.2009

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

    курсовая работа [229,0 K], добавлен 14.03.2013

  • Етапи розробки системи моделювання позаштатних ситуацій у виробничому процесі, яка реалізована за допомогою технологій National Instruments з використанням пакету графічної мови програмування Labview. Обладнання для вирощування монокристалічного кремнію.

    дипломная работа [2,4 M], добавлен 25.10.2012

  • Схема алгоритму програми. Алгоритм процедури введення даних, виведення результатів сортування, побудови дерева, перестановки елементів, "вирішення сімейного конфлікту". Приклад для масиву з 20 елементів. Користувацьке вікно та побудова піраміди.

    курсовая работа [3,0 M], добавлен 21.02.2011

  • Використання програми в мові Delphi як одної з найпоширеніших засобів створення додатків баз даних. Створення, заповнення, обновлення і ліквідація БД. Можливі неполадки при роботі програм та методи їх усунення. Розрахунок вартості розробки програми.

    курсовая работа [617,3 K], добавлен 28.04.2015

  • Опис задуму та мети складання програми. Порядок створення контролюючої програми-тесту "Пори року" в програмному середовищі Delphi для перевірки знань молодших школярів про пори року. Написання кодів, алгоритм реалізації роботи та лістинг програми.

    курсовая работа [4,3 M], добавлен 14.06.2010

  • Принципи технології створення програмних продуктів. Набір файлів, необхідних для створення програми в Delphi, варіанти роботи з ними. Програмування графічного інтерфейсу користувача. Зовнішній вигляд і лістинг програми, використані команди і компоненти.

    курсовая работа [550,5 K], добавлен 03.01.2014

  • Створення програми "Шаховий кінь" в системі програмування Turbo Pascal. Генерування відповідно до заданих початкових кординат маршруту руху коня. Алгоритм задачі: початок, виведення зображення та пошук. Реалізація програми та демонтрація її роботи.

    курсовая работа [1,3 M], добавлен 23.06.2010

  • Розрахування і виведення на екран значення функції f(x) при заданих значеннях параметрів a, b. Графік функції на заданому діапазоні. Визначення числових значень кроку. Створення масиву даних згідно з даними, побудування графіку функції для заданих точок.

    лабораторная работа [281,7 K], добавлен 04.09.2014

  • Поняття та класифікація комп’ютерних ігор. Відтворення гри "Морський бій" у вигляді комп’ютерної програми. Компоненти програмного середовища Delphi, що були використані під час її створення. Алгоритм реалізації ігрового процесу та скріншоти з програми.

    дипломная работа [418,2 K], добавлен 12.07.2013

  • Алгоритм процедури сортування у порядку зростання елементів побічної діагоналі (зліва направо) за допомогою методу вибору мінімального елементу. Підрахунок та визначення кількості перестановок. Виведення масиву на лист MS Excel до та після перетворень.

    практическая работа [404,3 K], добавлен 26.09.2013

  • Створення програми для роботи зі зв'язаними списками засобами Delphi. Причини використання динамічної пам'яті комп’ютера. Розробка технічного завдання. Аналіз вимог та визначення специфікації. Етап реалізації та розробка документації користувача.

    курсовая работа [487,5 K], добавлен 08.08.2011

  • Характеристика мов програмування. Історія виникнення мови C#, її особливості, версії та нові можливості. Приклад програм виведення на екран, виведення поточної дати та часу та програми музичного програвача. Програмний код та результат виконання програм.

    контрольная работа [321,3 K], добавлен 13.06.2012

  • Програми, які виводять на екран характеристики комп'ютера. Розробка програми "Монітор використання ресурсів комп’ютера" на мові програмування ASM-86. Алгоритм програми та її реалізація. Системні вимоги, інструкція для користувача, лістинг програми.

    курсовая работа [22,2 K], добавлен 08.08.2009

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

    курсовая работа [3,1 M], добавлен 10.03.2009

  • Сегментація і нормалізація зображень. Основні функціональні можливості та режими роботи комплексу розпізнавання письмового тексту. Розробка комплексу оптичного розпізнавання символів. Шрифтові та безшрифтові алгоритми розпізнавання друкованого тексту.

    курсовая работа [1,7 M], добавлен 19.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.