Робота з величинами. Введення-виведення виразів. Лінійні алгоритми



Сторінка7/8
Дата конвертації04.12.2016
Розмір1,28 Mb.
1   2   3   4   5   6   7   8

МОДУЛІ, ЗАПИСИ Й ФАЙЛИ.


Модулі

Модуль - це автономно компилируемая програмна одиниця, що включає в себе різні компоненти роздягнула описів (типи, константи, змінні, процедури й функції) і, можливо, деякі виконува операторы, що, що ініціює частини. У модулях Turbo PASCAL явно виділяється деяка "видима" интерфейсная частина, у якій сконцентровані описи глобальних типів, констант і змінних, а також приводяться заголовки глобальних процедур і функцій. Поява об'єктів в интерфейсной частини робить їх доступними для інших модулів й основної програми. Тіла процедур і функцій розташовуються у виконує части, що, модуля, що може бути схована від користувача. Модулі являють собою прекрасний інструмент для розробки бібліотек прикладних програм і потужний засіб модельного програмування. Важливі особливості модуля полягає в тім, що компілятор Turbo PASCAL розміщає їхній програмний код в окремому сегменті. Модуль має наступну структуру:

UNIT <ім'я>;

INTERFACE



<интерфейсная частина>

IMPLEMENTATION



<виконує часть, що,>

BEGIN


<ініціююча частина>

END.


Тут UNIT - зарезервоване слово, починає заголовок

модуля;


<імена> - імена модуля (повинне збігатися з ім'ям файлу, в

який поміщений модуль);

IMPLEMENTATION - зарезервоване слово (виконання), починає виконує часть, що; BEGIN - зарезервоване слово, починає ініціюючу частину (частина модуля BEGIN <ініціююча частина> необов'язкова); END - зарезервоване слово, ознака кінця модуля.

Заголовок модуля складається із зарезервованого слова UNIT і наступного за ним імені модуля. Для правильної роботи Turbo PASCAL і можливості підключення засобів, що полегшують розробку великих програм, це ім'я повинне збігатися з ім'ям файлу, у який міститься вихідний текст модуля. Ім'я модуля служить для його зв'язку з іншими модулями й основною програмою. Ці зв'язки встановлюється спеціальним додатком USES <список модулів>. Тут USES - зарезервоване слово; <список модулів> - список модулів, з якими встановлюється зв'язок, елементами списку є імена модулів, відокремлювані друг від друга комами. Якщо оголошення USES використається, то воно повинне відкривати розділ описів основної програми. Модулі можуть використати інші модулі. Пропозиція USES у модулях може випливати або відразу за зарезервованим словом INTERFACE, або відразу за словом IMPLEMENTATION. Интерфейсная частини відкривається зарезервованим словом INTERFACE. У цій частині втримуються оголошення всіх глобальних об'єктів модуля (типів, констант, змінних і підпрограм), які повинні стати доступними основній програмі й (або) іншим модулям. При оголошенні глобальних підпрограм в интерфейсной частини вказується тільки їхній заголовок. Оголошення підпрограм в интерфейсной частини автоматично супроводжується їхньою компіляцією з використанням далекої моделі пам'яті. Таким чином, забезпечується доступ до підпрограм з основної програми й інших модулів. Порядок появи різних розділів оголошень й їхня кількість може бути довільним. Частини, що виконує, починається зарезервованим словом IMPLEMEN- TATION і містить опису підпрограм, оголошених в интерфейсной частини. У ній можуть оголошуватися локальні для модуля об'єкти - допоміжні типи, константи, змінні й блоки, а також мітки, якщо вони використаються в ініціюючій частині. Опису підпрограми, оголошеної в интерфейсной частини модуля, у виконує части, що, повинен передувати заголовок, у якому можна опускати список формальних змінних (і тип результату для функції), тому що вони вже описані в интерфейсной частини. Але якщо заголовок програми приводиться в повному виді, тобто, зі списком формальних параметрів, то він повинен збігатися із заголовком, оголошеним в интерфейсной частини. Ініціюючі частини завершує модуль. Вона може отсутствовать разом з початківцем її словом BEGIN або бути порожній - тоді за BEGIN відразу треба ознака кінця модуля (слово END і наступна за ним крапка). В ініціюючій частині розміщаються виконують операторы, що, що містять деякий фрагмент програми. Ці оператори виконуються до передачі керування основній програмі й звичайно використаються для підготовки її роботи. Наприклад, у них можуть ініціюватися змінні, відкриватися потрібні файли, можуть установлюватися зв'язку з іншими ПК по комунікаційних каналах і т.п. Не рекомендується робити ініціюючу частину порожній, краще її опустити: порожня частина містить порожній оператор, якому буде передане керування при запуску програми.

У середовищі Turbo PASCAL є засоби, що управляють способом компіляції модулів і полегшують розробку великих програмних проектів. Зокрема, визначені три режими компіляції: COMPILE, MAKE й BUILD. Режими відрізняються тільки способами зв'язків компилируемого модуля й основної програми з іншими модулями, оголошеними в додатку USES. При компіляції модуля або основної програми в режимі COMPILE компілюється тільки файл, що перебуває в активному вікні. За замовчуванням передбачається, що використовувані модулі вже відкомпільовані й результати поміщені в однойменні файли з розширенням .TPU; файл із розширенням .TPU (від англійського Turbo Pаscal Unit) створюється в результаті компіляції модуля. У режимі МАЦІ компілятор перевіряє наявність TPU-файлів для кожного оголошеного модуля. Якщо який-небудь із файлів не виявлений, то система намагається відшукати однойменний файл із розширенням .PAS, тобто файл із вихідним текстом модуля. Якщо PAS-файл знайден, то відбувається його компіляція. Крім того, у цьому режимі система стежить за можливими змінами вихідного тексту будь-якого використовуваного модуля. Якщо в PAS-файл (вихідний текст модуля) внесені які-небудь зміни, то незалежно від того, є чи вже в каталозі відповідний чи TPU-файл ні, система здійснює його компіляцію перед компіляцією основної програми. Якщо зміни внесені в интерфейсную частина модуля, то будуть перекомпилированы також і всі інші модулі, що звертаються до нього. Режим МАЦІ істотно полегшує процес розробки великих програм з безліччю модулів. У режимі BUILD існуючі TPU-файли ігноруються, і система намагається відшукати й компілювати відповідний PAS-файл для кожного оголошеного в пропозиції USES модуля. Після компіляції в режимі BUILD програміст може бути впевнений у тім, що враховано всі зроблені їм зміни в кожному з модулів.

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

Модуль програми


unit kurp1;

interface

const n=5;

type matr=array[1..n,1..n] of real;

vect=array[1..n] of real;

procedure form(var a:matr);

procedure vivod (var a:matr);

function max(c:vect):real;

procedure pr(a:matr;var c:vect);

implementation

procedure vivod (var a:matr);

var i,j:integer;

begin

for i:=1 to n do



begin

for j:=1 to n do

write (a[i,j]:6:2);

writeln;

end;

writeln;



end;

procedure form(var a:matr);

var i,j:integer;

begin


randomize;

for i:=1 to n do

for j:=1 to n do

a[i,j]:=random*2-1;

end;

function max( c:vect):real;



var i:integer;

m:real;


begin

m:=-2;


for i:=1 to n do

if c[i]>m then m:=c[i];

max:=m

end;


procedure pr(a:matr;var c:vect);

var i,j:integer;

begin

c[i]:=1;



for i:=1 to n do

begin


for j:=1 to n do

c[i]:=a[j,i]*c[i];

writeln('Добуток ',i,'-го стовпця =',c[i]:6:4);

end;


writeln;

end;


end.

 

Основна програма



program kursovik;

uses crt,kurp1;

var a:matr;

c:vect;


begin

clrscr;


window (45,2,75,7) ;

writeln ('Курсова робота з інформатики') ;

writeln('Факультет АЕС група А-92');

writeln ('студента: Грязина Дмитра ');

window(1,1,80,25);

writeln('варіант 21');

window(10,8,80,20);

writeln('Розроблений модуль містить наступні програми:');

writeln('1.Процедуру формування елементів матриці в інтервалі від 1.0 до 1.0.');

writeln('2.Процедуру висновку матриці на екран.');

writeln('3.Процедуру визначення добутку кожного стовпця матриці.');

writeln('4.Функцію визначення максимального произвелдения.');

window(1,1,80,25);

gotoxy(10,24);

writeln('Для продовження натисніть пробіл');

clrscr;


form(a);

writeln('Сформована матриця');

vivod(a);

pr(a,c);

writeln('Максимальний добуток =',max(c):6:4);

readln;


end.

Результати роботи

Сформована матриця

-0.68 0.22 0.58 -0.62-0.14

0.25 -0.11 -0.90 0.41 -0.57

0.24 -0.69 -0.84 0.28 0.71

-0.46 -0.26 0.16 0.49 -0.73

0.60 0.17 0.28 -0.77 -0.61

Добуток 1-го стовпця =0.0112

Добуток 2-го стовпця =-0.0007

Добуток 3-го стовпця =0.0187

Добуток 4-го стовпця =0.0264

Добуток 5-го стовпця =0.0243

Максимальний добуток =0.0264

Записи

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

Структура обьявления типу запису така:

<ім'я типу> = RECORD <пс. полів> END

Тут <ім'я типу> - правельный индификатор;

RECORD, END - зарезервовані слова (запис, кінець);

<сп. полів> - список полів; являють собою послідовність

розділів запису, між якими ставиться крапка із запитої.

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

type


birthday = record

day, month : byte;

year : word:

end;


var

a,b : Birthday;



. . . . . . . .

У цьому прикладі тип Birthday є запис із полями DAY, MONTH, і YEAR; змінні А и В містять запису типу Birthday.

Як у масиві, значення змінних типу запису можна привласнювати іншим змінним того ж типу, наприклад:

a : = b;

До кожного з компонентів запису можна одержати доступ, якщо використати складене ім'я, тобто вказати ім'я змінної, потім крапку й ім'я поля:

a.day := 27;b.year := 1991;

Щоб спростити доступ до полів запису, використається оператор приєднання WITH:

WITH <змінна> DO <оператор>

Тут WITH, DO - ключові слова (з, робити);

<змінна> - ім'я змінної типу запис, за яким,

можливо, треба список вкладених полів;



<змінна> - будь-який оператор Турбо Паскаля.

Наприклад:

with c.bd do month := 9;

Імена полів повинні бути унікальними в межах того запису, де вони обьявлены, однак, якщо запису містять поля - запису, тобто вкладена одна в іншу, імена можуть повторюватися на різних рівнях вкладеності.

. Файли

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

Програмування доступу до файлу в мові Turbo Pascal починається з опису файлової змінної (змінної файлового типу). Цей опис будується за допомогою службового слова file, після якого (після службового слова of) може бути зазначений тип окремих елементів файлу, наприклад:

var


F : file of integer;

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

type

RecordFile = file of record



А, В : real;

end;


var

Fl, F2 : RecordFile;

Дуже важливо розрізняти властиво файл (область пам'яті на магнітному носії з деякою інформацією) і змінну файлового типу в деякої Turbo Pascal- програмі. Уважається, що файлова змінна є представником деякого дискового файлу в програмі. Для того, щоб реалізувати доступ до файлу па магнітному диску, програма повинна зв'язати його з файлової змінної. Для цього необхідно зіставити змінну з ім'ям файлу. Це ім'я представляється у вигляді рядка, що містить повне ім'я файлу й, бути може, ланцюжок объемлющих каталогів і позначення дисководу. Такий рядок зветься маршруту (або шляхи) до файлу й формується за загальними правилами MS-DOS.

Зв'язування маршруту й файлов змінної виробляється стандартною процедурою Assign, що передаються два параметри: ім'я змінної файлового типу й рядок з ім'ям (маршрутом) дискового файлу, наприклад:

Assign (F, 'з: \books\book4\test3 .раз ' ) ;

Крім маршруту, у другому параметрі може бути зазначене умовне (символічне) позначення деякого “псевдофайла” MS-DOS, тобто файлу, пов'язаного з конкретним фізичним пристроєм. Допускаються імена, в основному співпадаючі із прийнятими в MS-DOS позначеннями ('con' - консоль, тобто екран дисплея й/або клавіатура, 'lpti' або 'prn' - друкувальний пристрій і т.д.).

Доти, поки файлова змінна не пов'язана з яким-небудь дисковим файлом, ніякі операції з нею в програмі неможливі, Помітимо, що можна зв'язати файлову змінну із ще не існуючим дисковим файлом. Це може бути виправдане для випадку наступного створення Turbo Pascal-програмою файлу з даним ім'ям за допомогою деякої системної процедури.

Після того, як файлова змінна за допомогою процедури Assign пов'язана з конкретним дисковим файлом, можна виконати будь-яку припустиму операцію з ним. Тут розглянемо дві операції загального характеру, що дозволяють перейменовувати й знищувати існуючі дискові файли. Такі операції виконуються системними підпрограмами Rename й Erase з наступними специфікаціями:

Rename ( var f; nevname : string );

Erase ( var f );

Основним параметром цих процедур є файлова змінна (вона може ідентифікувати файл будь-якого типу, і до неї повинна була бути раніше застосована процедура Assign), а процедурі Rename додатково передається нове ім'я файлу. Дія зазначених процедур ґрунтується на відповідних DOS-функціях і функціонально еквівалентно командам ren й del командного процесора.

  Відкриття й закриття файлів

У цьому й наступному розділах розглядаються файли традиційної для мови Pascal структури, які описуються в програмі в термінах складових компонентів. Крім таких файлових змінних (вони також називаються "типізованими" файлами), у мові Turbo Pascal є також файли спеціального типу - текстові файли, які уведені для підтримки однієї практично важливої частки випадку файлових структур, і нетипізовані файли, які використаються для більше ефективної організації обмінів на низькому рівні.

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

var

F : file of integer;



розуміється як визначення в програмі під ім'ям F списку невизначеної кількості цілих чисел, розташованого на деякому зовнішньому запам'ятовувальному пристрої (наприклад, на магнітному диску).

З кожної змінної файлового типу також зв'язане поняття поточного покажчика файлу. Поточний покажчик можна розуміти як сховану змінну (тобто змінну, неявно описану разом з файлової

змінної), що позначає ("указує" на) деякий конкретний елемент файлу. Таким чином, можна графічно так представити інтерпретацію файлу, пов'язаного зі змінної F: 0 1 2 N

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

Помітимо, що той самий зовнішній файл у різних Turbo Pascal-програмах (або навіть у різних частинах однієї й тієї ж програми) може інтерпретуватися по-різному, наприклад, як послідовність цілих чисел, або як послідовність символів, або як послідовність деяких записів, і т.д. Ця можливість дуже важлива й часто використається в роботі з файлами складної структури. Наприклад, у процесі роботи із внутрішнім поданням файлів баз даних (зокрема, з DBF-файлами) може знадобитися інтерпретувати файл по-різному залежно від того, яку його компонент (заголовок або змістовну частину) ми обробляємо.

Потрібно також відзначити, що всі операції з файлами в мові Turbo Pascal реалізовані з використанням базових засобів операційної системи; зокрема, поняття поточного покажчика файлу підтримане в MS-DOS. Однак всі переміщення по файлі (як явне керування покажчиком, так і зрушення при обмінах) виконуються в термінах байтів. Таким чином, всі аспекти, пов'язані з типізацією вмісту файлів, являють собою системну надбудову мови Turbo Pascal.

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

Звичайні типізовані файли відкриваються за допомогою однієї із двох системних процедур - Reset або Rewrite, єдиним параметром яких у цьому випадку є файлова змінна. Обидві ці процедури відкривають файл для обміну. Різниця між ними полягає в початкових діях з файлом.

Процедура Reset припускає, що дисковий файл, що відкриває, уже існує, у противному випадку виникає помилка. Процедура Rewrite допускає, що відкриває файл, що, може ще не існувати; у цьому випадку вона створить заданий файл. Якщо ж файл існує, то Rewrite очищає його. Повторимо, що в обох випадках поточний покажчик файлу встановлюється на його нульовий елемент. Варто мати на увазі, що обидві операції допускають надалі як читання з файлу, так і запис у нього (це буде обговорюватися в наступному розділі).

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

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

Крім закриваючої процедури close, у системі Turbo Pascal також є додаткова процедура Flush (її параметр - файлова змінна). Flush використається для завершення обмінів з файлом без його закриття. Обміни з файлами завжди реалізуються через деякий буфер в оперативній пам'яті, тому в процесі запису на файл останні записувані елементи можуть ще перебувати ("застрягти") у буфері. Процедура Flush викликає примусове скидання цих елементів у файл. Ця процедура має сенс у тому випадку, якщо з файлом проводилися операції запису, і використається рідко, тому що процедура close робить такі ж дії.

Основна програма


program part2;

uses crt;

type table = record

n : integer ;

inn : string[12];

Name : string[20];

Sng : integer;

Nop : integer;

Uop : integer;

Skop : integer;

End;

Var


f : file of table;

x : table;

begin

clrscr;


window(45,2,75,7);

textcolor (5) ;

writeln ('Курсова робота з інформатики ') ;

writeln ('Факультет АЕС група А-92 ') ;

writeln ('студента: Грязина Д.') ;

window (1, 1, 80, 25) ;

gotoxy (30, 5) ;

writeln ('Частина 2') ;

window(10, 8, 80, 20) ;

writeln ('У файлі table.txt утримуються довідкові відомості') ;

writeln ('про предприятиях-задолжниках по сплаті податків ') ;

writeln ;

writeln ('Завдання') ;

writeln ('Видавати повні відомості про підприємства, які не ') ;

writeln ('нараховували податки у звітний період.') ;

window(1, 1, 80, 25);

gotoxy(10, 24);

textcolor (4 + blink);

writeln ('Для продовження натисніть Enter ') ;

readln ;

textcolor (10) ;

clrscr ;

assign (f, table.txt) ;

reset (f) ;

writeln ('Cведения про підприємства, які не нараховували ') ;

writeln ('податки у звітний період ') ;

writeln ('+-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і+') ;

writeln (' № ИНН Найменування 1 2 3 4 ') ;

writeln (' -і-+-і-і-і-і-і+-і-і-і-і-і-і-і-і+-і-і+-і-і+-і-і+-і-і- ') ;

while not Eof(f) do

begin

read (f, x) ;



with x do

if Nop = 0 then

begin

writeln (' '№ : 3' ',Inn : 12,' ',Name : 20,' ' ,Sng :4,' ',Nop : 4,' ',Uop : 4,'' ) ;



writeln (Skop : 4, ' ') ;

end;


end;

writeln ('+-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-+') ;

writeln ;

writeln ('1- Відомості на початок року ') ;

writeln ('2 - Нараховано податків у звітний період ') ;

writeln ('3 - Сплачено податків у звітний прериод ') ;

writeln ('4 - Відомості на кінець звітного преиода ') ;

writeln ;

readln ;

end.


ЗАСОБИ СЕРЕДОВИЩА ПРОГРАМУВАННЯ ДЛЯ НАЛАГОДЖЕННЯ ПРОГРАМ

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

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


Каталог: Documenty
Documenty -> Мета. Формувати розуміння того, що українська мова наш скарб, без якого не може існувати ні народ, ні Україна як держава. Розширювати знання про красу і багатство української мови. Ознайомити дітей з українськими обрядами і звичаями
Documenty -> Виступ на науково-пошуковій конференції “Типи учнівських проектів” заступника директора з нвр бойко Тетяни Петрівни
Documenty -> Урок №1 Растрова, векторна і фрактальна графіка. Історія анімації. Формати графічних і анімаційних файлів
Documenty -> Відомість про наукову, науково-методичну, дослідницьку роботу педагогічних працівників Вишнівської загальноосвітньої школи І-ІІІ ступенів №2
Documenty -> Затверджую: погоджено


Поділіться з Вашими друзьями:
1   2   3   4   5   6   7   8


База даних захищена авторським правом ©refos.in.ua 2019
звернутися до адміністрації

увійти | реєстрація
    Головна сторінка


завантажити матеріал