РОЗРОБКА ПРОГРАМ

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

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

61 ВІДЛАДКА

Налагодженням називається виявлення та усунення помилок у програмі

611 ПРОСТІ ПОМИЛКИ

Найчастіше зустрічаються помилки, породжені простими помилками при наборі тексту програми або деяким нерозумінням дії деяких операторів Бейсика, наприклад циклів FOR-NEXT Деякі друкарські помилки виявляються системою при перевірці синтаксису кожного оператора Іншими словами, система ретельно перевіряє, чи є кожен оператор програми допустимим оператором Бейсика У деяких системах з Бейсиком (найбільш зручних для початківців) перевірка здійснюється негайно ж після введення рядка, наприклад:

10 Y = 6 * X +5 Z +2 (натисніть клавішу повернення каретки або SEND) SYNTAX ERROR

У цьому випадку рядок треба виправити на

10 Y = 6 * X +5 * Z +2 Але якщо замість цього рядка буде набрано

10  Y=X*6+Z5+2

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

10   Y=X*6+Z*5 + 2

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

Один з видів помилок, що викликають такий карколомний ефект, може полягати в неправильному визначенні змінних на початку програми Наприклад, визначення

10 DIM АА (10), В1 (20,5), С1 (2,3) за наявності в програмі операторів виду 100 ВВ (16,1) = 2 *

С (1) +20

може зявитися причиною непорозумінь через те, що в якості масиву був визначений В1 (,), а не ВВ і С1 (,), а не С () Або Ви помилилися в написанні імені масиву при його визначенні в рядку 10, або збиралися використовувати нові масиви в рядку 100 Через подібної недбалості легко потрапити у пастку, так як, на думку автора, Бейсік занадто великодушний при виявленні не визначеного раніше масиву: замість повідомлення про помилку він припускає, що за замовчуванням одновимірний масив має розмір 10, а двовимірний 10,10 Якщо Ви не збиралися використовувати новий масив і набрали ВВ помилково замість В1, то повідомлення про помилку не отримаєте

Підсумуємо: синтаксична перевірка виявляє звичайні помилки і друкарські помилки в будь-яких службових словах, наприклад INPUT, PRINT і т д, але, можливо, здійснюється тільки після запуску програми по команді RUN Тому нерідко рекомендується спробувати будь-яку конструкцію, в якій Ви не впевнені, в програмі всього з декількох рядків, можливо, ніяк не повязаної з програмою, яку потрібно розробити Найчастіше труднощі повязані з циклами FOR-NEXT і масивами

У циклі FOR-NEXT Ви не повинні змінювати керуючу змінну – система піклується про це сама Якщо виникають якісь сумніви, завжди

включайте оператори PRINT для демонстрації відбуваються в програмі дій: 10 REM ТЕСТ ЦИКЛУ

20 INPUT ПОЧАТКОВЕ ЗНАЧЕННЯ; S

30 INPUT КІНЦЕВЕ ЗНАЧЕННЯ; Т

40 INPUT ШАГ; S1

50 PRINT ЦИКЛ FOR I =; S TO; T STEP; S1

60 FOR I=S TO T STEP S1

70 PRINT У ЦИКЛІ FOR I =; I

80 NEXT I

90 PRINT ВИХІД ІЗ ЦИКЛУ

100 END

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

FOR-NEXT Навіть простого тексту, наприклад

10 FOR 1 = 1 ТО 20 травня PRINT I

30  NEXT I

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

Якщо одна обставина, яку треба враховувати при пошуку помилок, полягає в тому, що Бейсік видає дуже стислі повідомлення про характер помилки Це повязано з тим, що правильна діагностика помилки може бути досить складною, для чого потрібно більший компілятор / інтерпретатор мови Бейсік Передбачити хорошу діагностику помилок цілком можливо і вкрай бажано, але дуже мало компілятори / інтерпретатори будь-якої мови програмування виявляються задовільними в цьому відношенні Тому новому користувачеві будь-якої системи з Бейсиком доводиться самому методом проб і помилок зясовувати, що ж можуть означати повідомлення про помилки Це є ще одним доказом на користь складання пробних програм з декількох операторів замість того, щоб написати довгу програму і тільки потім починати її налагоджувати

Нарешті, не забувайте перевіряти такі прості друкарські помилки, як заміна 1 на I або 1 (літеру) або О (літери) на 0 (цифру) Оки часто відбуваються при наборі цих символів в комбінаціях з іншими символами, що ускладнює виявлення різниці наприклад, АТ може бути написано замість А0 або I = 1 +1 замість I = I +1

Джерело: Уолш Б Програмування на Бейсике: Пер з англ М: Радіо і звязок, 1988 336 с: ил

Схожі статті:


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

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*