Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CHAPTER2.DOC
Скачиваний:
22
Добавлен:
20.03.2015
Размер:
574.98 Кб
Скачать

Циклічні програми

У таких програмах цикл може бути утворений за допомогою операторів READ і DATA. Одна з таких програм наве­дена у прикладі 2.

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

У рядку 30 напишемо оператор “READ t, K”(що означає читай змінніtіK), а в рядках 40–48 напишемо оператор DATA (це значить вхідні дані) і запишемо в них всі варіанти змін вхідних даних. При оформленні операторів READ i DATA необхідно виконувати три обов’язкові умови:

1. В операторі READ записуються тільки символи, роз­ді­лені знаком “кома”.

2. В операторі DATA записуються тільки числа. Якщо замість цифр будуть записані символи (наприклад С1, С2), то інтерпретатор виведе повідомлення про помилку – “Неправильне введення вхідних даних”. Якщо в рядку 40 буде за­писаноPI/4, то інтерпретатор знову виведе повідомлення про помилку, так якPI/4 не число, а арифметична операція ділення.

3. Числа в рядку 40 можуть бути записані у звичайній або експоненціальній формі.

Приклад 2.

Етапи

Рядки програми

1

10 PRINT “Розрахунок миттєвої амплітуди коливань”

2

20 А = 0.1: V = 5E-1: РІ = 3.14159265

3

30 READ t, K

40 DATA 0.2, 0.1, 0.2, 0.3, .2, .5, 2Е–1, .7, .2, .9

42 DATA 0.2, 0.1,0.4, 0.3, .4, .5, 4Е–1,.7, .4, .9

44 DATA 0.6, 0.1,0.6, 0.3, .6, .5, 6Е–1, .7, .6, .9

46 DATA 0.8, 0.1,0.8, 0,3, .8, .5, 8Е–1, .7, .8, .9

48 DATA 1, 0.1, 1, .3, 1, .5, 1, .7, 1, .9

4

50 W = 2*PI*V: В = К*t

60 X = A*EXP(–B)*COS(W*t)

5

70 PRINT “X=”; Х

75 ІF t<= 1 AND K<=.9 THEN GOTO 30

6

80 END

Як буде працювати дана програма?

Як тільки вона буде заведена в пам’ять ЕОМ, її необхід­но запустити командою RUN. Інтерпретатор алгоритмічноі мови BASIC, прочитавши рядок 30, примушує опе­ратор READ читати першу пару вхідних даних. Прочитається функція, віддрукуються результати і, якщо немає 75 рядка, то з’являється повідомлення ОК (Ready), що означає закін­чен­ня роботи програми. Якщо запустити програму, то оператор READ повторно прочитає першу пару вхідних даних, на­друкує попередні результати і напише на екрані монітора слово ОК. Програма не працює. Після запуску програми необхідно неодноразово читати вхідні дані. Тому повинен бути рядок 75, який примусив би оператора READ почергово вводити вхідні дані.

У даному випадку програма буде працювати таким чином. Як тільки програма буде запущена командою RUN, то оператор READ читатиме першу пару вхідних даних. Прочитається функція, віддрукуються результати і інтерпрета­тор порівнює значення змінної t, записаної в ОЗП ЕОМ, з однією секундою. Так як в ОЗП зміннаtдорівнює 0.2сек, то умова порівняння виконується і оператор READ знову буде читати вхідні дані. Так як оператор READ запам’ятав, що він читав нову пару вхідних даних, то він буде читати наступну їх пару. При цьому в ОЗП ЕОМ зміннаКбуде дорівнювати 0.3 і при порівнянні в рядку 75 умова буде ви­ко­ну­ватись, що приведе до розрахунку наступної пари вхідних даних. Як тільки буде прочитана остання пара вхід­них даних (t = 1,K = 9), то обчислиться функція, віддруку­ється результат. При цьому у рядку 75 умова виконуватись не буде і інтерпретатор алгоритмічної мови BASIC читає на­ступ­ний (після 75) рядок програми (80), в якому записано оператор END. На екрані з’явиться повідомлення ОК. Програма закінчує роботу. Кома в кінці рядка означає виведення результатів розрахунку по 5 значень в рядку.

Деякі версії інтерпретаторів не можуть порівнювати зна­чення тільки однієї змінної з її граничним рівнем. У тако­му випадку для організації циклу слід ввести лічильник цик­лу. При цьому до оператора READ необхідно задати значення лічильника циклу I= 0. Як тільки оператор READ про­чи­тає чергову пару вхідних даних, то значення лічиль­ника циклу повинне збільшитися на одиницю. У рядку 75 по­рів­ню­ється значення лічильника циклу з числом 25 (25 варіан­тів змін вхідних даних).

Програма буде мати такий вигляд (приклад 3):

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]