ОПЕРАТОРИ READ І DATA

Оператор DATA є засобом запамятовування обмеженого числа даних в самій програмі і має певні переваги по відношенню до присвоюванню значень констант оператором LET Дані витягуються з операторів DATA оператором READ Як приклад наведемо наступну програму .

10 REM ДЕМОНСТРАЦІЯ ДІЇ ОПЕРАТОРІВ READ-DATA

20 READ А, B, C

30 PRINT А, В, С

40   REM

50   DATA   3, -2, 45

60   END RUN

3                                  -2                                45

END   AT   LINE   60

Як значення А береться перший елемент списку в операторі DATA, як значення В – другий, як значення С – третій Оператор DATA можна вказувати в будь-якому місці програми, так за передачі управління ці оператори обходяться Їх призначення – створити запас значень для читання оператором READ Дії наведеної вище програми абсолютно не зміняться, якщо видалити з неї рядок 50 і помістити оператор DATA в будь-яке інше місце, наприклад, під номером 5

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

441 ВЖИВАННЯ ОПЕРАТОРІВ DATA

Уявіть, що існує покажчик, що показує на самий початок списку даних в операторі DATA У наведеному вище прикладі оператор READ привласнює змінної А перше число зі списку даних в операторі DATA (тобто 3) і переміщає покажчик на наступне число (-2)

Кожна дія в операторі READ полягає в присвоєнні змінної того значення, на яке показує поточний покажчик Так, якщо покажчик показує на -2 і черговий змінної є В, то цієї змінної буде присвоєно значення -2 і покажчик переміститься на одну позиції)

Якщо покажчик досяг кінця оператора DATA і затребувані оператором READ нові дані, то або покажчик переміщається на початок списку дан-

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

10   READ A,B,C,D,E,F,G,H,I

20   DATA 14,32,96,78,3,11

30   DATA 303,411,9999

Хоча оператори DATA можна вказувати в будь-якому місці програми, корисно групувати їх разом, так як вони повязані в тому сенсі, що як тільки оператор READ покінчить з одним оператором DATA, він візьметься за наступний оператор DATA з великим номером Дуже поширена помилка полягає в розбіжності між числом значень, необхідних одним або декількома операторами READ, і числом значень, розподілених по багатьом операторам DATA Таку помилку набагато легше виявити, якщо всі оператори DATA зібрані разом

Оператори READ і DATA корисні для зберігання в програмі даних, що не змінюються від запуску до запуску Вони також дуже корисні для присвоювання початкових значень змінним або масивам Звернемося до програми перетворення числа з підрозд 431: використовуючи оператори READ і DATA, рядки 50-140 можна замінити на цикл

50 FOR K = 0 TO 3 60 FOR L = 1 ТО 3 70 READ R $ (K, L)

80     NEXT L

90 NEXT До

доповнений операторами

100  DATA I,V,X,X,L,C,C

110   DATA D,M,M,,,

Врахуйте, що, як і у випадку оператора INPUT, при вказівці строкових значень лапки не обовязкові і оператор

50 DATA ФРЕД, ДЖИМ має той же ефект, що і оператор 50 DATA ФРЕД, ДЖИМ

Зазвичай рядок полягає в лапки тільки у випадку, якщо в неї повинна входити кома Так,

оператор

50 DATA ФРЕД, ДЖИМ задає одне строкове значення ФРЕД, ДЖИМ

Оператори READ і DATA

Загальна форма запису: READ переменная1, переменная2, ..

Оператор READ послідовно присвоює чергові значення зі списку даних оператора

DATA змінним: переменшя1, переменная2 і т д

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

DATA значення, зшченіе2,..

У операторі DATA  через кому вказуються константи (як числові, так і рядкові),

значення яких присвоюються змінним, перерахованим в операторі READ

442 ОПЕРАТОР RESTORE

Уявний покажчик на значення зі списку даних оператора DATA можна знову встановити на початок списку першого оператора DATA за допомогою оператора RESTORE (відновлення), який можна вказати в будь-якому місці програми Для вивчення його дії змінимо приклад програми, даний на початку розд 44, додаючи рядки 12, 25, 28 і змінюючи рядок 30 так, щоб вийшла наступна програма:

I0 REM ДЕМОНСТРАЦІЯ ДІЇ ОПЕРАТОРІВ READ-DATA

12 REM І RESTORE

20 READ А, В, С

25   RESTORE

28   READ D,E,F

30 PRINT A,BC,D,E,F

40 REM

50 DATA 3,-2,45

60 END RUN

3                                   -2                               45                                3

-2                                45

END AT LINE 60

Зазначений в ній оператор RESTORE дозволяє новому оператору READ в рядку 28 заново прочитати значення, перераховані в операторі DATA на

рядку 50

Наведена нижче програма ілюструє практичний додаток операторів READ, DATA і RESTORE вона запамятовує прізвища, адреси та роздруковує адресу, відповідний введеної прізвища Зверніть увагу на використаний в структограмме символ ПОВТОРЮВАТИ ДО: аналогічна структура вже застосовувалася в програмі з підрозд 425 У програмі повинні бути враховані дві можливості: або досягається кінець списку прізвищ і адрес в операторі DATA, або в цьому списку виявляється прізвище, що збігається з введеною В останньому випадку змінна F покладається рівною 1 і виконання циклу завершується

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

10 REM ПРОГРАМА ПОШУКУ прізвища та адреси

20 REM (В ОБМЕЖЕНОМУ ЧИСЛІ)

30 REM P думають рівним числом прізвище та адресу 40 REM

50 Р = 5

60 PRINT ВВЕДІТЬ ПРІЗВИЩЕ;

70 INPUT N$

80 I=0

90 F=0

100  I=I+1

110   READ A$B$

120   IF N$=A$ THEN F=1

130   IF I&ltP AND F=0 THEN 100

140 IF F=1 THEN 170

150 PRINT АДРЕСА НЕ ВІДОМИЙ

160 STOP

170 PRINT B$

180 DATA УІЛСОН, 126 PALACE ROAD LONDON

190 DATA АРДЕН5 OXFORD STREET LIVERPOOL

200 DATA ЕЛТІ94 WATER STREET WALLASEY

210 DATA ДЖОНС, 2 SCOTLAND ROAD BRIGHTON

220 DATA СМІТ, 42 KEITH PLACE YORK

230 END RON

ВВЕДІТЬ ПРІЗВИЩЕСМІТ

42 KEITH PLACE YORK END AT LINE 230

RUN

ВВЕДІТЬ ПРІЗВИЩЕ УОЛТОН АДРЕСА НЕ ВІДОМИЙ

END AT LINE 230

Для зручності читання кожна пара прізвище-адреса вказана в окремому операторі DATA, але така запис не обовязкова Оскільки прізвища та адреси ніяк не впорядковані, то в програмі застосований самий елементарний метод пошуку При невеликому числі даних (менше 100 елементів) метод пошуку не має особливого значення, так як час повного перегляду списку даних

невелика

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

При реалізації внутрішнього прямокутника наведену вище програму треба злегка змінити для видалення операторів STOP і END Текст цих та інших змін такий:

5 RESTORE

160 GOTO 230

230 НЬОМУ КІНЕЦЬ ПОШУКУ

240 PRINT ПРОДОВЖИТИ;

250 INPUT A1$

260 IF А1 $ = ТАК THEN 5

270 END

Дія оператора RESTORE полягає у переміщенні перед початком кожного пошуку уявного покажчика значення на початок списку даних першого оператора DATA Між застосуванням операторів READ-DATA і роботою з файлами даних існує тісний взаємозвязок Щоб перетворити програму для роботи з послідовним файлом даних, в неї потрібно внести дуже невеликі зміни, якщо не рахувати додавання декількох інструкцій або команд, що забезпечують доступ програми до файлів Наприклад, в системі з Бейсиком для ЕОМ ICL 2903/4 деякі оператори для роботи з файлами при вказівці спеціальних параметрів мають той же ефект, що і оператори READ, DATA і RESTORE

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

45 СОРТУВАННЯ І ПОШУК

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

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

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

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

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

*

*