Деталізувати СТРУКТУРИ

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

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

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

Процес

10 REM БЛОК ПРОЦЕСУ

20—————

30—————

40————–50————–

60 REM КІНЕЦЬ БЛОКУ

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

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

“Якщо умова виконана, то процес 1, в іншому випадку процес 2 155

Наведемо приклад реалізації вибору на Бейсике:

10 IF Y=l THEN 100

28 Х = 2 —– Процес 2

за L = X +6 —- / 40 GOTO 150 l00l

X = l —– Процес 1

на L = Y-X — / 150 ———

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

10   IF Y = 1 THEN GOSUB 500

20   IF NOT (Y = 1) THEN GOSUB 400

Цей приклад не надто елегантний, але, принаймні, досить добре слід формі структури вибору У багатьох версіях Бейсика передбачений розширений оператор IF (див гл 6), яким при можливості слід користуватися:

10   IF Y = 1 THEN X = 1: L = Y-X ELSE X = 2: L = X+6

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

“Якщо умова виконана, то процес 1 приклади якого такі:

10 IF Y = 1 THEN X = 10 або

10   IF Y=1 THEN GOSUB 200

У даному випадку можна зменшити займане структограммой місце, якщо деформувати її так,

щоб порожня частина альтернативи не займала багато місця Наприклад, замість

можна використовувати

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

10   FOR I =1 TO 6 STEP 2

20      S = S+1 30   NEXT I

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

Зверніть увагу на те, що умова в рядку 20 є запереченням умови циклу ПОКИ

Щоб усунути дублювання оператора INPUT А, наведену вище структограмму можна запрограмувати таким чином:

Однак у цьому випадку кінцем циклу буде не оператор в рядку 80, а оператор в рядку 10 Рядок 10 служить також ініціював оператором перед входом в цикл, і цикл перевертається з ніг на голову для того, щоб включити в себе цей оператор Хоча цей прийом економить оператор, дана форма циклу важка для розуміння і тому не рекомендується Таким чином, загальна форма обговорюваного циклу така:

Тільки в кількох версіях Бейсіка є оператор, організуючий цикл ПОКИ (див гл 6)

Інший варіант ітерації виникає в тому випадку, коли перевірка умови відбувається в кінці циклу Він має форму повторювати процес до тих пір, поки не виконається умова. У даній ситуації стандартний Бейсік взагалі нічим не може допомогти, тому для конструювання такого циклу треба користуватися операторами IF і GO TO, наприклад:

10 INPUT В

20      ——-

30      ——-

40      ——-

50 IF В> 42 THEN 10

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

Лише деякі версії Бейсика передбачають конструкцію ПОВТОРЮВАТИ ДО (див оператор

REPEAT в гол 6)

532 Псевдокод

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

Коментарі Формули

Описи дій і процесів Послідовності

Вибір – якщо .. , То .., інакше .. Ітерації – поки ., Повторювати .. – Повторювати

… До ..

У опису процесів можуть входити такі оператори Бейсика, як INPUT, PRINT, READ і прісваіванія1, але не оператори переходу або інші засоби передачі управління, застосування яких має обмежуватися реалізацією трьох зазначених вище типів структур на заключному етапі процесу проектування

Концепцію псевдокоду найлегше зрозуміти на прикладі Нехай потрібно прочитати серію даних, визначити найбільше значення і вивести ці дані, поділені на найбільше значення Скажімо, якщо дані представляють собою послідовність чисел

4,251,100, -50,75 то висновок повинен виглядати наступним чином:

040,0251, 100, -05,075 Перший рівень розробки ясний:

Рівень 1: Ввести дані Знайти максимум Вивести результати

1 Так як за задумом псевдокод повинен бути в достатній мірі близький до природного мови, то далі в контексті псевдокоду використовуватимуться переклади службових слів Бейсика, набрані прописними буквами Прим перев

Деталізація 11 Введення даних можна деталізувати на псевдокоде

наступним чином: Отримати число елементів даних Поки не всі елементи введені прочитати і запамятати значення елемента Кінець циклу

Це опис можна перевести на Бейсік наступним чином:

100 INPUT УКАЖІТЬ ЧИСЛО ЕЛЕМЕНТІВ; N

110

FOR I=1 TO N 120

INPUT A (I)

130

NEXT I

Деталізація 12 Відшукання максимуму можна деталізувати наступним чином:

Вибрати в якості максимуму елемент даних

Пробігти всі введені значення, замінюючи поточний максимум на чергове значення, якщо воно перевищило його

Деталізація 13 Висновок результатів можна деталізувати наступним чином:

Поки не всі результати виведені,

ВИСНОВОК (значення чергового елементу) / максимум Кінець циклу

Це опис можна негайно перевести на Бейсік:

300 FOR I = 1 ТО N

310      PRINT A(I)/M

320   NEXT I

Рівень 2

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

якщо М < поточний елемент, то М = поточний елемент. Кінець циклу.

Це опис можна перевести на Бейсік наступним чином: 200 М = ​​А (1)

210   FOR I=1 TO N

220 IF M < A (I) THEN М = А (I)

230   NEXT I

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

10 REM ПРИКЛАД ПРОГРАМИ, ОТРИМАНОЇ ІЗ псевдокод

20   DIM A(20)

100 INPUT Введіть ЧИСЛО ЕЛЕМЕНТІВ; N

110 FOR I = 1 ТО N 120 INPUT А (I),

130   NEXT I

200 М = ​​А (1)

210 FOR I = 1 ТО N

220   IF M&ltA(I) THEN M=A(I)

230   NEXT I

300 FOR I = 1 ТО N

310   PRINT A(I)/M

320   NEXT I

500   END RUN

ВВЕДІТЬ ЧИСЛО ЕЛЕМЕНТІВ5

?4251100-5075

040  0251  100 -05  075 END AT LINE 500

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

533 ВИСНОВОК

(А) Розробка за методом зверху вниз. Рішення завдання представляється у вигляді модулів, кожен з яких виконує самостійну групу дій Якщо на початкових етапах Ви виявляєте, що не можете продовжувати розробку далі, то причиною цьому могли бути неправильні вихідні передумови Може бути, Ви не цілком зрозуміли завдання Проте спроби отримати рішення нерідко є складовою частиною процесу вивчення завдання Напишіть рішення заново, використовуючи інший підхід, наприклад виберіть інші керуючі структури і інший порядок виконання дій

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

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

(В) На закінчення переведіть розроблене опис з псевдокоду або структограмми в програму на Бейсике На цьому етапі можна користуватися

і оператором GO TO, але не інакше як для реалізації правильних керуючих структур Намагайтеся використовувати для змінних і функцій змістовні імена Включайте в програму достатню число операторів REM з описом її дій і прагнете до акуратного розташуванню тексту програми Виділені в процесі розробки модулі можуть стати подпрограммами або функціями або блоками в іншій підпрограмі, функції або основній програмі

(Г) Збережіть поряд з роздрукуванням програми паперу з начерками проекту і, якщо буде потрібно, – його заключний варіант Таким чином Ви отримаєте деяку документацію до завершеною програмі

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

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

Джерело: Уолш Б Програмування на Бейсике: Пер з англ М: Радіо і звязок, 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>

*

*