ІНШІ КОНЦЕПЦІЇ ПРОГРАМУВАННЯ

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

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

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

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

41 МАСИВИ

ЕОМ має ті переваги, що за наявності відповідної програми може дуже швидко повторювати послідовність операцій стільки разів, скільки нам потрібно Ця властивість розглядалося і розвивалося в попередньому розділі на прикладі команд організації циклів Напрі86

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

50   S = 0

60 FOR I = 1 ТО 6

70      INPUT A

80 S = S + А

90  NEXT I 100   S = S/6

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

50 INPUT А, В, С, D, E, F

60   S = A + B + C + D + E + F

80   S = S/6

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

В описаному вище випадку, та й при багатьох інших обставин нам треба мати можливість маніпулювати числами, не знищуючи їх значень, подібно до того, як ми маніпулювали простий змінної А в першому прикладі Відповідним для цих цілей обєктом є масив, що дає загальне імя групі осередків памяті і забезпечує доступ до кожної окремої осередку шляхом зазначення індексу На рис 41 зображені кілька окремих змінних, таких як А1 і N, а також масив по імені G Це групове імя, дане осередкам, кожна з яких аналогічна простий змінної Перша змінна з цього масиву має імя G (0), друга G (1), третя G (2) і т д Утворюють масив змінні називаються елементами масиву, а числа в дужках – індексами масиву Окремими елементами масиву можна користуватися на тих же правах, що й простими змінними Розглянемо фрагмент програми:

10  INPUT G(l)

20   G(2) =G(1)

30   PRINT G(1), G(2)

У рядку 10 вводиться значення у рядку 20 воно копіюється, а в рядку 30 обидва значення виводяться При цьому G (l) і G (2) є окремими змінними У точності ті ж самі дії справить програма

10   INPUT Z

20  A=Z

30   PRINT Z, A

використовує прості змінні А і Z

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

доставки, М (2) = 3, М (3) = 0, М (4) = 2, М (5) = 1, М (6) = 2 і М (7) = 1 При таких значеннях в масиві

М оператор PRINT M (4) надрукує 2, але того ж результату можна добитися за допомогою операторів

100   D = 4

114   PRINT M(D)

Цінність масивів якраз і полягає в цій можливості використовувати змінну в якості індексу Розглянемо фрагмент програми:

50 FOR D = 1 ТО 7

60     PRINT M(D)

70  NEXT D

Якщо в масиві М містяться зазначені вище значення, то при першому проході циклу змінної D буде присвоєно значення 1 і виповниться оператор PRINT M (l), на наступному проході D буде присвоєно значення 2 і виповниться PRINT M (2), і т д Так як наприкінці оператора друку вказана крапка з комою, то всі значення зображатимуться на одному рядку:

1  3   0   2   1  2   1

411 ОПЕРАТОР DIM

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

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

оператор

10   DIM M(7)

зарезервує область для зберігання згадуваного вище масиву

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

30   DIM A(14), M(7), Z(100)

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

Оператор DIM

Загальна форма запису:

DIM   імя_массіеа (максімальний_індекс)

“Імя_массіва зазвичай вибирається за тими ж правилами, що й імена простих змінних Допускаються як числові масиви, так і масиви рядків символів У операторі можна вказати список описів масивів, розділяючи їх комами

“Максімальний_індекс вказує максимально допустимий у програмі індекс і повинен бути позитивним Іноді додатково потрібно, щоб він був цілою константою Індекси масиву зазвичай пробігають значення від 0 до максимального, але в деяких системах – від 1 до максимального (див підрозд 412)

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

Якщо масив не описаний в операторі DIM, то за замовчуванням йому приписується максимальний індекс

(10), якщо він одновимірний, і (10,10), якщо він двовимірний

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

10

DIM A(50), Z(6)

(Числові одномірнімасиви)

20

DIM P$ (5)

(Одновимірний масив рядків)

30

DIM(C(10,5),D(10,20),E$(5,5)

(Двовимірні матриці)

89

Перш ніж перейти до застосування масивів, подивимося уважніше на їхні імена Зазвичай вони мають той же тип і ту ж довжину, що й імена простих змінних

Якщо імя А9 допустимо для змінної, то допустимо і опис DIM Z2 (10), тобто, як звичайно, імя може складатися з букви і цифри Однак, принаймні, в одній системі для масивів допускаються тільки однобуквені імена

Якщо для змінної допустимо імя PINTOFMILK, то допустимо і опис DIM DAILYPINTA (7) Якщо допускаються цілі змінні або змінні з подвійною точністю, то припустимі і масиви цих типів Не соромтеся вибирати одне і те ж імя для простої змінної, масиву або строкової змінної, так як система повинна трактувати їх як різні обєкти Таким чином, оператори

5 DIM A (4) 10 А = 10 20 Отже (0) = -9 30 А $ = ОК 40 PRINT А, А (0), А $

повинні видати

10 -9 ОК Якщо ж цього не відбувається, тоді уникайте збіги імен

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

100 INPUT До 120 DIM А (К) 130 ……

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

Перейдемо тепер до прикладу роботи з масивами Нехай в системі управління запасами на складі зберігаються товари 20 різних найменувань, причому найменуваннями приписані номери від 1 до 20 Масив S використовується для зберігання в кожному його елементі поточного запасу товару відповідного найменування Наведена нижче програма отримує за рахунок введення значення поточних запасів товарів, підраховує сумарний запас і друкує номер найменування, відповідний запас в абсолютних одиницях та відсотках від сумарного запасу

10 REM ІНВЕНТАРИЗАЦІЙНИЙ ОПИС

20 DIM S(20&gt

30 Rем ВВЕДІТЬ 20 поточних запасів ТОВАРІВ

40 Rем І ОДРАЗУ Ж підрахувати їхню ЗАГАЛЬНА КІЛЬКІСТЬ

50 Т = 0

60 PRINT ЛАСКА, Введіть кількість ТОВАРУ

70 FOR I = 1 ТО 20

80 PRINT ДЛЯ номенклатурний номер; I

90  INPUT S(I)

100   T=T+S(I)

110 NEXT I

120 PRINT

130 PRINT ВСЬОГО; Т ШТУК

140 REM

150 REM ДЛЯ КОЖНОГО ТОВАРУ НАДРУКУЙТЕ ТРИ ВИХІДНИХ ЗНАЧЕННЯ

160 PRINT ТОВАР, Штука, В % ВІД СУМИ

170 FOR I = 1 ТО 20

180 PRINT I, S (I), S (I) * 100 / Т %

190 NEXT I

200 END

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

Якщо ви працюєте з розширеним Бейсиком, то можете переписати програму таким чином: 10 REM ІНВЕНТАРИЗАЦІЙНИЙ ОПИС

20 DIM STOCKITEM(20)

30 TOTAL = В

40 PRINT ЛАСКА Введіть кількість ТОВАРУ

50 FOR ITEM = 1 ТО 20: REM ВВЕДІТЬ ПОТОЧНИЙ ЗАПАС ТОВАРУ

60 PRINT ДЛЯ номенклатурний номер А IТЕМ

70 INPUT STOCKIТЕМ (ITEM)

80 TOTAL = TOTAL + STOCKITEM

90 NEXT ITEM

100 …..

і т д, використавши змістовні імена для змінних і вказавши кілька операторів в одному рядку (розділивши їх двокрапкою) з тим, щоб помістити коментарі в тому рядку, до якої вони належать

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

*

*