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

     

     

     

     

     

         
     
    Паскаль. Налагодження програм
         

     

    Інформатика, програмування
    ТурбоПаскаль7.0. Логічні оператори та оператори циклу. Налагодження програм.

    Укороченная форма оператора if

    У операторі if частина, що починається словом else, може бути відсутнім. Частина, наступна за словом then, виконується, якщо логічне умова, що стоїть після слова if, має значення true. Якщо це логічний вираз має значення false, безпосередньо виконується оператор, наступний за if.

    Наша програма може бути переписана із застосуванням укороченою форми оператора if. Алгоритм зводиться до послідовності перевірок попадання змінної Аде в різні діапазони значень. Наведемо змінений текст програми:

    Program Dialog; (розширений діалог - другий варіант) const

    Question = 'What is your name?';

    Rep (y1 = 'Паскаль - простий, але перший компілятор Паскаля був написаний на Паскалі';

    Reply21 = 'Вас чекає дивовижну подорож';

    Reply22 = 'крізь джунглі особливостей і можливостей мови';

    Reply3 = 'Паскаль - розумний компроміс між бажаним і ефективним';

    Reply4 = 'Паскаль академічно елегантний';

    var

    Name: string;

    Age: byte;

    begin

    WriteLn (Question); ReadLn (Name); (Введення імені) WriteLn ( 'Hello,', Name ,'!'); (Висновок привітання) WriteLn ( 'How old are you?'); (Питання про вік ) ReadLn (Age); (Введення віку) if 12 if (12: <оператор 1>;

    <альтернатива 2>: <оператор 2>;

    <альтернатива N>: <оператор N> else <оператор частини Else> end;

    Case і of - зарезервовані слова, які є відмінною ознакою оператора множинного розгалуження. Селектор - це змінна або вираз порядкового типу. Залежно від значення даного вирази або змінної відбувається розгалуження програми. Після заголовка оператора йде перерахування різних альтернатив, з яких може виконуватися програма. Альтернативи відокремлюються один від одного крапкою з комою. Альтернатива складається з мітки, двокрапки і виконуваного оператора даної альтернативи. Використовувана в операторі case позначка може складатися з констант і діапазонів. Діапазони значень у Паскалі - це два крайніх значення, написані через двокрапку. Такий запис еквівалентна перерахуванню всіх цілих чисел у цьому діапазоні. У загальному випадку позначка може складатися з різних констант і діапазонів, розділених комами, наприклад, допустима ця позначка: 4, 8 .. 10, 12, 14 .. 16. В якості селектора не можна використовувати логічні результати порівняння чисел (умови), тому використані в операторах if нерівності тут незастосовні.

    Частина оператора case, що складається зі слова else і останнього альтернативного варіанту, є необов'язковою, вона виконується в тому випадку, якщо обчислений в програмі селектор не відповідає жодній з перерахованих вище альтернатив. Якщо ця частина оператора case відсутня, а селектор не підходить ні під одну з альтернатив, то оператор case не виконає ніяких дій. Завершується оператор case обов'язковим словом end;

    Приклад. З використанням оператора case наша програма набуває наступний вигляд

    Program Dialog;

    const

    Question = 'What is your name?';

    Replyl =

    'Паскаль - простий, але перший компілятор Паскаля був написаний на Паскалі';

    Reply21 = 'Вас чекає дивовижну подорож';

    Reply22 = 'крізь джунглі особливостей і можливостей мови';

    ReplyS =

    'Паскаль - розумний компроміс між бажаним і ефективним';

    Reply4 = 'Паскаль академічно елегантний';

    var

    Name: string;

    Age: byte;

    begin

    WriteLn (Question); ReadLn (Name);

    WriteLn ( 'Hello,', Name ,'!');

    WriteLn ( 'Howold are you?'); ReadLn (Age);

    case Age of

    0 .. 11: WriteLn (Reply1);

    12 .. 19: begin WriteLn (Reply21); WriteLn (Reply22) end;

    20 .. 39: WriteLn (Reply3);

    40 .. 150: WriteLn (Reply4)

    else WriteLn ( 'Bbi помилилися при введенні')

    end

    end.

    Змінна Age відіграє роль селектора. Залежно від значення цієї змінної відбувається подальше розгалуження програми. У нашому прикладі в якості альтернатив застосовуються діапазони значень, оскільки не можна використовувати результати порівняння чисел, як у попередній програмі. Вихідні нерівності замінені діапазонами. Наприклад, перевірка логічного умови Age <12 замінено перевіркою належності діапазону 0 .. 11.

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

    If Ready then Exam_ok: = true;

    Ідеальна логіка еквівалентності:

    If Ready then Exam_ok: = true else Exam_ok: = false;

    Управління обчислювальним процесом, цикл for

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

    Природний алгоритм для вирішення такого завдання:

    (1) позначимо шукану суму S і привласнимо їй значення, яка дорівнює нулю;

    (2) послідовно N раз обчислимо доданки ряду і додамо їх до змінної S.

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

    for <лічильник циклу>: = <першого значення> to <останнє значення> do

    ;

    for <лічильник циклу>: = <першого значення>

    downto <останнє значення> do;

    Лічильник циклу - це мінлива одного з порядкових типів (з порядкових типів ми поки що знаємо тільки цілі і логічний тип, у главі 7 поняття порядкового типу буде розширено). Призначення цієї змінної очевидне - вона зберігає число повторень операторів тіла циклу, наступного за словом do. Значення лічильника циклу змінюється автоматично від першого до останнього значення і збільшується на одиницю для першої форми запису (з оператором to) або зменшується на одиницю для другої форми запису (з оператором downto). Додаткові зміни значення лічильника циклу в частині, позначеної тут як, заборонені. В якості першого і останнього значення можуть використовуватися конкретні числа, інші змінні цілого типу, обчислені раніше, і вирази, що мають значення цілого типу.

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

    Програма з циклом for, яка обчислює суму N членів гармонійного ряда1:

    Program Sum; (сума N членів гармонійного ряду)

    var x: byte; (лічильник циклу)

    s: real; (сума ряду)

    N: byte; (число членів ряду)

    begin

    Write ( 'N ='); ReadLn (N); (введення числа членів ряду)

    s: = 0; (початкове значення суми)

    тогх: = 1 toNdos: = s + 1/г; (підрахунок суми)

    WriteLn ( 'S =', s); (висновок результату)

    ReadLn (очікування натискання клавіші Enter)

    end.

    Оператор, наступний після слова do, може бути складовим (представляти собою групу операторів).

    Приклад. Знайти непарні і кратні трьом числа в діапазоні від 30 до 60 включно. Роздрукувати їх в порядку убування.

    Умова непарності цілого числа - Odd (J). Умова кратності трьом - рівність нулю залишку від ділення i mod 3 = 0. Нас цікавлять числа, що задовольняють обом умов, тобто числа, для яких істинно Odd (i) and (i mod 3 = 0). Убутної порядок слідування чисел забезпечує оператор for .. downto. Таким чином, програма буде мати вигляд

    Program Sample;

    var i: byte;

    begin

    for i: = 60 downto 30 do (цикл В порядку спадання від 60 до 30)

    if Odd (i) and (i mod 3 = 0) then WriteLn (i) end.

    У результаті виконання програми отримаємо в стовпчик значення 57, 51,45,39, 33.

    У наведеному прикладі багаторазово повторювався один оператор, проте в багатьох випадках необхідно повторювати групу операторів. Згадаймо, що говорилося в попередньому розділі про вкладеності операторів один в одного. Щоб використовувати замість одного оператора групу, потрібно цю групу перетворити в один складний оператор. Здійснюється це за допомогою так званих "програмних дужок" - операторів begin і end.

    begin

    ;

    <оператор 2>;

    <оператор М> end;

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

    Приклад. Є логічне вираження not a and b xor с. Потрібно вивести на друк значення логічних змінних а, Ь, с, при яких даний вираз є істиною. Ми пропонуємо перебір всіх можливих значень а, b, с з перевіркою виконання умови для кожного поєднання значень.

    Program Sample;

    Vara, b, з: boolean;

    begin

    for a: = false to true do

    for b: = false to true do

    for з: = false to true do

    if not a and b xor з then

    begin

    Write ( 'a =', a);

    Write ( 'b =', b);

    WriteLn ( 'c =', c)

    End

    End.

    В результаті виконання цієї програми на екран буде виведено:

    a = FALSE

    b = FALSE

    з = TRUE

    a = FALSE

    b = TRUE

    з = FALSE

    a = TRUE

    b = FALSE

    c = TRUE

    a = TRUE

    b = TRUE

    з = TRUE

    Програма складається з одного складного оператора for a: = false to true do, в який вкладено послідовно ще два оператори for і оператор if. Частина then останнього містить складний оператор, що складається з трьох простих операторів, охоплених програмними дужками begin та end.

    Цикли з логічними умовами

    Введений в попередньому розділі оператор циклу for забезпечує виконання циклу задану кількість разів, але часто циклічні дії закінчуються за умовою, тобто виконуються до досягнення певного результату. У Паскалі є два таких оператора циклу, що відрізняються тим, що в одному з них умова перевіряється на початку циклу (while. .. do), а в іншому - в кінці циклу (repeat. .. until).

    Оператор while .. do

    Оператор циклу while (поки що, у той час як) має вигляд:

    While do;

    Цикл While забезпечує виконання тіла циклу, наступного за словом do до тих пір, поки умова має значення true (істина). Як тіла циклу може використовуватися простий або складний оператор. Умова перевіряється перед початком кожного виконання тіла циклу, тому, якщо до першого виконання циклу умова має значення false (неправда), оператор не виконується жодного разу (рис. 5.2).

    Приклад. Необхідно перетворити значення кута в градусах до стандартного діапазону ± 180 ° шляхом виключення повних обертів кола ± 360 °. Ця процедура може бути виконана за допомогою оператора циклу

    While abs (Angle)> 180 do

    if Angle> 0 then Angle: = Angle - 360

    else Angle: = Angle + 360;

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

    Цикл складається з оператора if. Припустимо, кут дорівнює -700. Тоді умова Angle> 0 в операторі if має значення false, при цьому виконується частина else оператора if, і кут отримає значення -340. Знову відбувається перевірка умови виконання циклу, і цикл виконується другий раз, після чого кут дорівнює 20. При третій перевірці умови виконання циклу він закінчується, оскільки умова його виконання Abs (20)> 180 прийняло значення false.

    Оператор repeat ... until ...

    Оператор циклу repeat ... until ... (повторювати до тих пір, поки що) має вигляд Repeat until -;

    Принципова відмінність оператора repeat ... until від оператора while ... do в тому, що перевірка умови проводиться не перед початком виконання оператора, а в його кінці, коли вирішується питання, повторити ще раз дії. Тому тіло цього циклу завжди виконується принаймні один раз (рис. 5.3). Це важлива відмінність: наведений для циклу while ... do приклад реалізувати з оператором циклу repeat ... until неможливо без додаткових перевірок та ускладнень.

    Друга відмінність від оператора while ... do - в логіці завершення циклу. Цикл оператора repeat ... until виконується до тих пір, поки не стане справжнім логічне вираження, наступне за словом until. Таким чином, використання логічного виразу тут має протилежний оператору while ... do сенс. Тут при істинності логічного виразу (умови) цикл припиняється, а в оператора while ... do при істинності логічного виразу цикл триває.

    Третя відмінність у тому, що оператор repeat ... until має дві частини:

    початкову та завершальну, які охоплюють групу операторів, що складають тіло циклу. Оператор while ... do не має завершальній частині і вимагає для організації тіла циклу з декількох операторів програмних дужок begin-end. Для оператора repeat ... until таких дужок не потрібно - їх роль виконують складові частини оператора.

    Приклад. Знайти методом підбору цілочисельне рішення Діофантова рівняння 5x-3y = 1. У якості першої проби беруться одиничні значення. Далі, якщо 5x-3y> 1, то у збільшується на 1, якщо 5x-3y1theny: = y +1;

    if (5 * x - 3 * у) <1 then х: = х + 1 until (5 * x-3 * y) = 1;

    writeln ( 'x =', x, 'y =', y) end.

    У результаті на екрані отримаємо х = 2у = 3.

    Приклад. За допомогою циклу repeat ... until можна організувати процедуру введення даних із захистом програми від завершення при помилковому наборі. Якщо тип даних не відповідає ініціалізіруемой при стандартному введенні змінної (наприклад, потрібно ввести ціле число, а набрано дробове), то виникає помилка у виконанні програми, і ми повинні знову запускати програму, і, природно, повторити набір. Щоб захиститися від наслідків таких помилок, можна використовувати власну процедуру введення. Така процедура повинна відключити автоматичну перевірку правильності введення та проводити її самостійно, причому при помилку вимагати повторного набору. Відключення перевірки правильності введення проводиться директивою компілятора {$!-} (Input/Output checking у вікні налаштування опцій компілятора). Після кожної дії по вводу-висновку спеціальна функція lOResult повертає ціле значення, відповідне помилок вводу-виводу. Правильною роботі вводу-виводу відповідає нульове значення, що повертається цією функцією. Надійний введення цілого числа i виконує фрагмент програми:

    {$!-} (відключення перевірки вводу-виводу) repeat

    Write ( 'Введіть i ='); (висновок на екран пропозиції для введення)

    ReadLn (i) (введення цілого числа)

    until lOResult = 0; (lOResult - функція, що дорівнює 0, якщо все гаразд) {$!+} (відновлення перевірки вводу-виводу)

    Принаймні один раз вводиться число, якщо при введенні була зроблена помилка, умова lOResult = 0 має значення false, і введення буде повторюватися до тих пір, поки він не буде зроблено правильно.

    Оператори Break і Continue

    В останніх версіях мови Borland Pascal введені два нових оператора, Break і Continue, що застосовуються всередині циклів. Вони розширюють можливості використання циклів і покращують структуру програм. У процесі виконання тіла циклу до його завершення можуть виникнути додаткові умови, що вимагають завершення циклу. У цьому випадку цикл може бути припинено оператором Break.

    Приклад. Гра з ЕОМ в кості. Умови гри. Комп'ютер видає себе чи Вам випадкові числа від 1 до 6. Завдання - набрати максимальну суму очок. Що набрав більше 21 очки програє, в будь-який момент один з гравців може відмовитися від набору очок (спасувати).

    Program Bones;

    Const MaxSum = 1; (Максимальна кількість очок)

    var SumYour, (сума очок гравця)

    SumComp, (сума очок комп'ютера)

    count: byte; (чергові випали очки)

    reply: string; (відповідь на запит ЕОМ)

    begin

    SumYour: = 0;

    SumComp: = 12; (початкова кількість очок)

    Randomize; (установка датчика випадкових чисел)

    repeat (початок загального циклу, що організує гру)

    write ( 'Кинути кістку для Вас? (у/n)');

    repeat (Початок циклу для введення коректної відповіді) readln (reply) (введення відповіді)

    (вихід з циклу - при коректному відповіді)

    until (reply = 'у') or (reply = 'Y') or (reply = 'n') or (reply = 'N');

    (метання кістки для гравця при позитивному відповіді)

    if (reply = 'у') or (reply = 'Y') then (якщо відповідь "так")

    begin Count: = Random (6) + 1; (число очок гравця)

    (Random (6) дає випадкові числа від 0 до 5)

    WriteLn (вам випало ', count,' очок. '); (висновок випав кількості очок) SumYour: = SumYour + count; (підрахунок суми очок гравця)

    Writeln ( 'y Вас всього', SumYour, 'очок.'); (висновок суми очок)

    if SumYour> = MaxSum then Вгеаk (припинення гри при переборі) end;

    (метання кістки для комп'ютера - він грає,

    якщо сума очок менше 18)

    if SumComp <18 then (якщо комп'ютер продовжує гру)

    begin Count: = Random (6) + 1; (число очок комп'ютера) WriteLn ( 'мнe випало', count, 'очок.'); (висновок кількості очок) SumComp: = SumComp + count; (підрахунок суми очок комп'ютера) Writeln ( 'y мене всього', SumComp, 'очок.'); (висновок суми очок)

    if SumYour> = MaxSum then Break (припинення гри при переборі) end

    else begin (якщо комп'ютер пасує)

    write ( 'пас. Будете п?? одолжать? (у/п) '); (запит про продовження гри)

    repeat

    read (reply) until (reply = 'у') or (reply = 'Y') or (reply = 'n') or (reply = 'N');

    if (reply = 'n') or (reply = 'N') then Break (припинення ігри

    за взаємною згодою)

    end

    until false; (замикання циклу метання кісток) (підведення підсумків)

    if SumYour> MaxSum then writeln ( 'Bи програли!')

    (перебір гравця)

    else if SumComp> MaxSum then writeln ( 'Я програв!')

    (перебір біля комп'ютера)

    else if SumYour (порівняння очок)

    else if SumYour = SumComp then writeln ( 'Нічия!')

    (рівність очок)

    else writeln ( 'Ви виграли!');

    ReadLn

    end.

    Програма розбита на дві основні частини: метання кісток і підведення підсумків.

    Перша частина реалізує нескінченний цикл метання кісток, обмежений оператором repeat ... until false. Вибір оператора repeat мотивовано тим, що має бути зроблено, принаймні, один хід гри. Цикл може бути перерваний оператором Break при переборі очок будь-яким з гравців і при відмові обох партнерів від продовження гри. Об'єднання трьох умов в один і використання його як завершального умови циклу repeat ... until ускладнить алгоритм, а застосування для припинення гри оператора Break алгоритм спрощує.

    Цикл repeat ... until з завершальним умовою

    (reply = 'у') or (reply = 'Y') or (reply = 'n') or (reply = 'N');

    продовжується до тих пір, поки не буде введений допустимий символ ( 'у', 'Y', 'п' або 'N') при відповіді на питання про продовження гри.

    Для імітації метання кісток застосована функція Random з параметром - цілим числом, рівним 6. При такому використанні вона дає випадкові цілі числа в діапазоні від 0 до 5 включно.

    Підведення підсумків гри виконують вкладені одна в одну оператори if. Можливі підсумки гри перевіряються послідовно. Якщо можливий висновок, виконується частина then оператора. Якщо не можливий, виконується частина else, у якій стоїть оператор подальшого розгалуження if.

    Засоби середовища програмування для налагодження програм

    середу Borland Pascal має кілька вбудованих інструментальних засобів налагодження програм. З деякими з них ми вже познайомилися. Механізм покрокового виконання програми, що викликається функціональною клавішею F7, і його варіанти: послідовне виконання без входу до процедури, яке викликається клавішею F8, і виконання до заданої рядки (клавіша F4) дозволяють перевірити, чи відповідає послідовність виконання команд Вашим вимогам до алгоритму.

    Ефективність налагодження зростає при спільному використанні різних інструментальних засобів середовища програмування. Для використання засобів налагодження повинні бути включені опції компілятора: Debug information, Local symbols і Symbol information (меню Options/Compiler). Якщо опції встановлені, у файл включається спеціальна інформація, що допускає застосування засобів налагодження. У налагодженій програмі ця інформація не потрібна, тому при компіляції програми як готового продукту опції налагодження рекомендується відключити. Інструментальні засоби налагодження доступні через меню Debug (налагодження), наведене на малюнку 5.4.

    З меню Debug можна викликати три вікна: Output, Watch і Call stack, які як об'єкти інтерфейсу подібні до вікна з текстом програми. Вони мають порядковий номер, їх розміри і положення змінюються так само, як розміри і положення будь-яких текстових вікон. Вони наводяться у списку вікон меню Windows, можуть активізуватися з цього меню. Будь-яке з цих вікон закривається клавішами Alt + F3. Відмінність від текстових вікон в тому, що ми не можемо виконувати в них вільну запис.

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

    Вікно стека Вікно налагодження

    Перегляд і зміна змінної

    Додати контрольні точки

    Контрольні точки Вікно регістрів Вікно програми

    Користувацький екран

    Додати у вікно налагодження

    варто запам'ятати комбінацію клавіш Alt + F5 для його швидкого виклику. Якщо потрібно одночасно спостерігати на екрані текст програми та результати її роботи в текстовому режимі, можна відкрити вікно Output - вікно, в яке будуть виводитися результати виконання програми. Розмір вікна Output можна відрегулювати клавішами переміщення курсору після натискання Control + F5 або мишею, як описано раніше.

    Вікно налагодження програм Watch може бути відкрито пунктом меню Watch або Add watch. У кожному рядку вікна може бути задана деяка змінна або вираз. У процесі виконання програми поточне значення заданої змінної чи виразу виводиться у це вікно. Налагодження з використанням вікна Watch звичайно поєднується з покрокової налагодженням, коли можна перевірити не тільки послідовність виконання команд, але і значення величин, що приводять до такої послідовності виконання. Для створення вікна Watch немає необхідності викликати пункт меню Watch. Можна просто натиснути клавішу Control + F7 - і Ви отримаєте вікно Add Watch, в якому треба ввести назву для виводу у вікно налагодження. У рядку для набору імені буде підсвічується те ім'я, на якому стояв текстовий курсор у момент натиснення клавіш Control + F7. Якщо Ви натиснете Enter, у вікно Watch додасться набрана у вікні Add Watch мінлива або вираз, якщо почнете набір іншого імені, це ім'я зникне без додаткових дій для видалення. Якщо відразу після відкриття вікна Add Watch натиснути стрілку курсору вправо, то у вікно введення починають вводитися символи з тексту програми, що слідують за курсором.

    Коли вікно Watch активно, в нижній частині з'являються вказівки на найбільш актуальні дії, які можна зробити в даному стані. Підказка нагадує Вам, що покрокова налагодження проводиться після натиснення клавіш F7 або F8, пропонує натиснути Insert для додавання нової змінної у вікно, Delete для видалення запису, Enter для редагування запису, на якому стоїть курсор вікна налагодження.

    Завантажимо, наприклад, програму визначення найбільшого спільного дільника. Відкриємо вікно Output для діалогу в процесі виконання програми. Відкриємо вікно Watch і помістимо в нього всі три змінні нашої програми: Common, First і Second. При покрокової налагодження програми по клавіші F7 ми побачимо, що до виконання програми змінні не визначені. При введенні чисел змінні First та Second отримують введені значення. На початку циклу одержує значення і мінлива Common, яка змінюється при кожному проходженні циклу. Ви також побачите, що рядок

    if (First mod Common) = 0 then begin WriteLn ( 'HCVl =', Common); Break end

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

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

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

    Щоб додати контрольну точку в програму, треба ввести ім'я файлу, номер рядка, в якій проводиться перевірка, логічне умова, по досягненні якого відбувається зупинка програми, і число проходів заданої рядки, в яких це логічне умова не прораховується. Якщо логічне умова не задано, зупинка виникає з досягнення цього рядка. Число проходів цього рядка без аналізу за замовчуванням встановлюється рівним 0, тобто аналіз проводиться, починаючи з першого проходу. Припустимо, у програмі визначення найбільшого спільного дільника Common.pas ми хочемо перевірити відносини, що виникають при кратності змінних Second і Common. Тоді у вікні Add Breakpoint в полі Condition ми вводимо умова переривання програми Second mod Common = 0. У полі FileName автоматично вноситься назва файлу, активного вікна, а в полі Line number - номер рядка, в якій знаходиться курсор. У рядок Pass count записується число 0, так як ми хочемо зупинити програму вже при першому виконанні умови переривання.

    Всі введені в програму точки переривання можна переглянути і відредагувати у вікні Breakpoints

    Вікно, що відкривається при виборі пункту меню Evaluate/Modify, також, як вікно Watch, дозволяє переглянути значення будь-якої змінної або вирази, але при цьому можна змінити значення змінної. Вікно Evaluate/Modify може бути викликано, якщо виконання програми зупинено через механізм точки переривань або при покрокової налагодженню, і має бути закрита для продовження роботи програми. Це вікно зручно використовувати як "калькулятор". Для виконання допоміжних обчислень досить ввести відповідний вираз у полі Expression і прочитати результат у полі Result.

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

     

     

     

     

     

     

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