Б С Бусигін - Прикладна інформатика - страница 36

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83 

2бРис. 8.36. Початок роботи програми у режимі сеансу дослідження

Для завдання потрібних точок виконайте команду Debug/Add Watch (рис. 8.37) і коли з'явиться діалогове вікно з назвою Add Watch, наберіть ім'я першої потрібної для дослідження у програмі змінної, тобто А, і натисніть Enter (рис. 8.38). Нагадуємо, що вибір команд можна виконувати або за допомогою курсору миши, або натисненням управляючих клавіш: у даному випадку Alt+D, а потім A.

Рис. S.37. Середовище ТП перед виконанням команди Debug/Add Watch

Виконання вищевказаних дій призведе до появи додаткового вікна з ім'ям Watches у нижній частині головного екрану, у якому з'явиться ім'я цієї змінноїта її поточне значення (рис. S.39). Прийміть до уваги, що це додаткове вікно закривається командою Window/Ciose (або - Alt+БЗ), а смуга запуску вилучається командою Run/Program reset (або - Ctrl+F2).

Рис. 8.38. Увід імені змінної A, значення якої досліджується

Важливо також пам'ятати, що для додавання наступних імен змінних (B та Ratio) у вікно Watches достатньо перед уводом їхніх імен попередньо натискувати клавішу Insert, що розташована справа над клавішею Delete.

Рис. S.39. Висвітлення значень змінних у вікні Watches (Спостереження)

2бб

Після уводу чергового імені у стрічку меню Add Watch і натиснення Enter, у вікні Watches знизу екрану додаються ці імена з їхніми поточними значеннями (рис. S.39).

Тепер, коли усі змінні нами висвітлені, після чергового натиснення F7 програму буде переведено до чорного екрану DOS (результатів), тому що оператор Readln(A,B) очікує введення двох Ваших чисел. Наберіть два цілих числа, розділені пробілом; переконайтеся, що друге число - не нуль (рис. S.40).

И Turbo Pascal

 

 

_|П|Х|

Turbo Pascal Uersion

7.Ш

Copyright Cc> 1983,92 Borland International

 

Uuedite dua сhisla Й,

В :

8 4_

 

Рис. S.40. Екран DOS при введенні даних А і В

Тепер натисніть Enter і Ви повернетеся назад у вікно редактора зі смугою запуску на операторі присвоювання в рядку 9 (Ratio := A/B;) програми MyFirst (див. рис. S.36).

Натисніть F7 і програма виконає цей оператор присвоювання. Тепер смуга запуску знаходиться на операторі Writeln у рядку 10. Але водночас значення змінної Ratio отримає нове значення S/4 = 2, ініційоване уведеними даними, з'єднаними у виразі оператором ділення (/) (рис. S.41). Натисніть F7 двічі. Тепер ви повинні виконати Readln у рядку 12. Ще раз натисніть F7, подивитеся висновок своєї програми і потім натисніть Enter. Смуга запуску тепер знаходиться на операторі until. Натисніть F7 кілька разів і програма повернеться до початку циклу repeat, тобто оператора Write, і т.д.

Рисунок 8.41. Значення змінної Ratio при введених даних А і В

267

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

Таблиця 8.41

_Команди дебаггера та його дії_

Назва дії

Команда ТП

Гарячі клавіші

Перехід до режиму дебаггера

Run/Trace Into

F7

Пересування  по операторам програми

F7

Виклик  вікна  Watches для перегляду значень змінних та виразів у покроковому режимі

Debug/Add Watch

Ait+D, а потім A

Додавання у вікно Watches імен змінних та виразів

Debug/Add Watch

Insert (клавіша)

Закриття вікна Watches

Window/Ciose

Ait+F3

Вилучення смуги запуску

Run/Program reset

Ctri+F2

Крім значень окремих змінних, у вікні Watch можна також спостерігати значення виразів. Щоб увести потрібний для дослідження вираз натисніть Ait-D для появи меню Debug (це альтернативна можливість виклику). Виберіть команду Add Watch з меню Watches (чи натисніть Ctri-F7). Тепер можна набрать у вікні введення Watch Expression не тільки ім'я змінних А, Ви Ratio, які з'являться у вікні Watch разом зі своїми поточними значеннями, а й також і вираз А/В.

Далі, виберіть Run/Trace Into (чи натисніть F7) для того, щоб зробити крок у своїй програмі. Цього разу, коли Ви повинні ввести два числа, уведіть 0 для другого числа. Коли Ви натиснете Enter і повернетеся в IDE Турбо Паскаль, подивитеся на вираз А/В у вікні Watch (для цього натисніть Alt і # (номер) вікна чи Ait-W W). Замість цього значення буде стояти фраза "Invalid floating-point operation" (неправильна операція над числами з крапкою, що плаває); це відбулося тому, що розподіл на нуль невизначено. Хоча помітимо, що наявність цього вираження у вікні Watch не приводить до зупинки програми з помилкою. Замість цього видається повідомлення про помилку, а відлагоджувач не виконує розподіл у вікні Watch.

Тепер натисніть F7 знову, привласнюючи А/B перемінної Ratio. У цьому місці відбудеться аварійне завершення програми, і угорі вікна редактора знову з'явиться повідомлення про помилку "Division by zero".

Тепер можливо Ви задумалися про те, що ж неправильно працює у вашій програмі: якщо Ви вводите значення 0 для другого числа (B), програма завершується з помилкою часу виконання.

Як зафіксувати її? Якщо В має значення 0 , не поділяєте А на В. Відредагуйте Вашу програму так, щоб вона виглядала в такий спосіб:

program MySecond; var

A,B:   Integer;    Ratio: Real;

Begin

repeat

Write('Enter two numbers: ');

Readln(A,B);

if B = 0 then

Writeln('The ratio is undefined') else

begin

Ratio := A/B;

Writeln('The ratio is ',Ratio:8:2); end;

Write('Press <Enter>...'); Readln; until B = 0;

End.

Тепер запустіть свою програму (чи самі, чи використовуючи дебаггер). Якщо Ви використовуєте дебаггер, зауважуйте, як змінюються значення у вікні Watch у міру здійснення кроків у програмі. Коли Ви готові зупинитися, уведіть 0 у змінну В. Програма зупиниться після виведення повідомлення "The ratio is undefined. Press <Enter>..." ("Відношення не визначене. Натисніть <Enter>...").

Тепер Ви зрозуміли, яким могутнім засобом є дебаггер для дослідження роботи Вашої програми. Можна пересуватися в програмі рядок-за-рядком; можна роздивлятися у вікні Watch значення змінних і виразів Вашої програми й переглядати зміни значень по ходу виконання програми.

Вправи

1. Що таке дебаггер і для чого він призначений?

2. Які команди і гарячі клавіші послуговують для виклику дебаггера і переходу до режиму дебагування програми користувача?

3. Які команди і гарячі клавіші послуговують для пересування по операторам програми у режимі її дебагування?

4. Які команди і гарячі клавіші послуговують для виклику вікна Watches для перегляду значень змінних та виразів у покроковому режимі?

5. Які команди і гарячі клавіші послуговують для додавання у вікно Watches імен змінних та виразів?

6. Які команди і гарячі клавіші послуговують для закриття вікна Watches?

7. Які команди і гарячі клавіші послуговують для вилучення смуги запуску?

8. Обчислити за допомогою циклу з параметром for значення кінцевої суми S для виразу:

12

Проведіть дослідження роботи програми за допомогою дебаггера.

9. З використанням оператора циклу з передумовою while напишіть і виконайте програму табулювання функції У з дійсним аргументом на відрізку [­2, 0]. Проведіть дослідження роботи програми за допомогою дебаггера.

sin 3n - x

x 3 +

in 2 + ґ

10. З використанням оператора циклу з післяумовою while напишіть і виконайте програму табулювання функції У з дійсним аргументом на відрізку [­l, l]. Проведіть дослідження роботи програми за допомогою дебаггера.

4-x

n=1

n=1

У

3

x

У

8.19. Моделювання у циклічних обчисленнях деяких типових виразів

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

(-1)" (8.8)

п !

(2 п)! = 2п!

(8.9) (8.10)

Всі вони залежать від елементів натурального ряду чисел:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ... , п Як правило, скорочено зміну значень натурального ряду на відрізку [1,п] записують так:

1, 2, ... , п

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

Таблиця 8.42

Зміни значень виразів у відповідності зі зміною значень, що у них

підставляються

Вираз

 

Зміна значень виразу

 

п

1

2

3

4

 

2п

2

4

6

8

 

(-1)п

И)" -1

(-1)2= +1

(-1)3= -1

(-1)4= -1

 

п !

1!=1

2!=1-2=2

3!=1-2-3=6

4!=1-2-3-4=24

 

(2 п) ! = 2п!

2!=2

4!=24

6!=

1-2-3-4-5-6=

=720

8!=1-2-3-4-5-6-7-8=

=40320

 

Значення виразу (-1)п можна моделювати двома різними способами:

О на кожному кроці приформовувати унарний знак "-" до передуючого значення змінної, що зберігає значення(-І) або (+1);

© на кожному кроці множити передуюче значення (-1) або (+1) на (-1).

Але треба пам'ятати, що для виконання приформування знаку чи множення на (-1) треба попередньо виймати число зі змінної на суматор, провадити потрібні дії, а потім засилати їх назад до змінної.

Перші п'ять рядків значень цих функцій, що будуть виведені на екран

п

1

2 3 4

(-1)п

п!

2п

2п!

-1.0

1.0

2

2.0

1.0

2.0

4

24.0

-1.0

6.0

6

720.0

1.0

24.0

8

40320.0

I        5 -1.0        120.0      10      3628800.0 |

{Програма моделювання значень функцій 8.8, 8.9, 8.10}

Var

medl, med2,   Factorl,   Factor2   : Real; n,  n2,   I  : Word; Begin    {Ініціалізуємо початкові значення змінних}

medl  := -1;   { Ім'я змінної, що приймає значення (-1)} med2  := -1; { Ім'я змінної, що приймає значення (-1)} Factorln := 1; { Ім'я змінної, що приймає значення n!} Factor2n := 2; { Ім'я змінної, що приймає значення 2n!}

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83 


Похожие статьи

Б С Бусигін - Прикладна інформатика