ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Помилки при виконанні програми. Опції компілятора
         

     

    Інформатика, програмування

    Помилки при виконанні програми. Опції компілятора

    С.А. Григор'єв

    Уміючи користуватися масивами, умовними операторами і операторами циклу, ви можете писати досить серйозні програми. При виконання цих програм неминуче будуть виникати критичні помилки, призводять до аварійного завершення програми. Такі помилки по англійськи називаються Run-time errors - помилки часу виконання. Розглянемо поки тільки найбільш часто зустрічаються арифметичні помилки:

    Division by zero - код помилки 200;

    Arithmetic overflow - Код помилки 215;

    Range check error -- код помилки 201;

    Floating point overflow - код помилки 205;

    Invalid floating point operation - код помилки 207.

    Помилка Division by zero - поділ на нуль - виникає при виконанні операцій DIV, MOD і /, коли дільник дорівнює нулю.

    Помилка Arithmetic overflow - цілочисельне переповнення - виникає при виконанні арифметичної операції над цілими числами, коли результат операції виходить за межі відповідного типу. Така помилка станеться, наприклад, при виконанні програми

    VAR a, b: Word; c: Integer; BEGIN a: = 100; b: = 200; c: = ab; END.

    Помилка відбулася, коли обчислити значення виразу a-b, рівне

    -100. Ми знаємо, що при виконанні операції над операндами типу Word результат буде мати тип Word, а -100 не є припустимим значенням цього типу. Та обставина, що це значення ми збиралися привласнити змінної типу Integer, не має значення, тому що помилка сталася до присвоєння. Цікаво, що, якщо описати a і b як Byte, то помилки не буде (див. таблицю 2 у розділі 5).

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

    VAR a, b, c: Word; BEGIN a: = $ FFFF; b: = 1; c: = a + b; END.

    Ми спробували привласнити змінної типу Word значення 65536, яка не є допустимим для цього типу.

    VAR x: ARRAY [2 .. 8] OF Real; i: Byte;

    BEGIN FOR i: = 8 DOWNTO 1 DO x [i]: = Sqrt (i); END.

    Помилка відбулася при зверненні до першого елементу масиву, який не існує. Фактично цей другий випадок повністю аналогічний перше - ми спробували "привласнити" індексом масиву, тип якого-2 .. 8, значення 1.

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

    VAR r: Real; BEGIN r: =- 1E20; r: = Sqr (r); END.

    При зведенні в квадрат величини r ми отримаємо дуже велике для типу Real число 1E40.

    Помилка Invalid floating point operation виникає в трьох випадках:

    1) при обчисленні кореня з негативного числа;

    2) при обчисленні логарифма непозитивно числа;

    3) при обчисленні функцій Trunc і Round від занадто великого (за абсолютною величиною) дійсного числа. Ця помилка досить очевидна, і ми не станемо її ілюструвати.

    Як же повинен надходити програміст, коли при виконання його програми виникають помилки? Перш за все потрібно локалізувати помилку, тобто знайти оператор, в якому вона відбулася. У цьому вам може допомогти Середа Turbo Pascal, якщо в ній правильно встановлені опції компілятора. Опції компілятора дозволяють змінювати режим компіляції і задаються в підменю Compiler меню Options середовища Turbo Pascal. Поки нас будуть цікавити лише п'ять опцій: Range checking, Stack cheking, I/O checking, Overflow checking, Debug information. Якщо вони включені, то настройка середовища сприятлива для налагодження вашої програми. Якщо вони вимкнені, то їх обов'язково слід включити, а ще краще задати їх безпосередньо в тексті своєї програми. Опції записуються в програмі у вигляді:

    ($ буква + / -)

    Кожній опції відповідає своя буква (ці букви виділені в підменю Compiler кольором), символ "+" означає включити, а символ "-" - вимкнути. У програмі можна задати одну опцію, наприклад, ($ R +) або декілька опцій - ($ R +, I-, S +). Деякі опції можна записувати тільки на самому початку програми, інші можуть розміщуватися в будь-якому її місці.

    Опція Range checking (R) відповідає за контроль помилок Range check error, Overflow checking (C) - за контроль помилок Ariphmetic overflow, I/O cheking (I) - за контроль помилок введення-виведення. Сенс опції Stack cheking (S) буде пояснено дещо пізніше, а опція Debug information (D) включає в код програми налагоджувальну інформацію, що дозволяє середовищі Turbo Pascal при аварійному завершенні програми показати курсором оператор, в якому сталася помилка. Подбайте, щоб при налагодженні програми перед першим її оператором був рядок ($ R +, C +, I +, S +, D +) - це допоможе вам знайти і усунути всі помилки. Деякі недосвідчені програмісти вимикають ці опції, тоді програма не переривається при деяких помилках, а продовжує виконуватися, на цій підставі робиться висновок, що програма правильна. Це самообман - програма виконується, але виконується неправильно і ніяк не повідомляє про помилки.

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://elib.albertina.ru/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status