Оператори введення (INPUT) та виведення (OUTРUТ)
Для конкретності всі програми будемо складати на прикладі дослідження функції двох змінних: , Програма дослідження функції буде мати такий вигляд: 10 PRINT “Розрахунок значень функції F” 15 B = 1E–5: C = 3E2 20 PRINT: PRINT; 30 PRINT “Введення значень змінних X i A”; 40 INPUT X, A 50 F = (X*X + 1) / C + B / (A*A + 2) 60 PRINT “Значення функцій F =”; F 70 STOP Дамо коротку характеристику програми. Рядок 10 примушує ЕОМ написати на екрані монітора заголовок роботи, а рядок 20 забезпечує пропуск двох рядків на екрані монітора, щоб заголовок не зливався з наступною інформацією. Рядок 15 дозволяє ввести в програму константи (незмінні вхідні дані). Рядок 30 виводить на екран вказівку оператору, що далі робити після зупинки ЕОМ оператором INPUT (рядок 40). Наявність крапки з комою в кінці рядка 30 примушує ЕОМ розташувати дані, що вводяться, в одному рядку з вказівками оператору. Оператор вводить значення змінних X i A, розділивши їх комою. Аналогічно оформлено виведення результатів розрахунку (рядок 60). У рядку 50 виконується обчислення функції F. Рядок 70 зупиняє процес розрахунку і для його повторення необхідно ввести команду GOTO 30 або запустити програму командою RUN. У запропонованій програмі дуже мало місця на екрані займає інформація про введення значень змінних і виведення результатів розрахунку. Щоб уникнути цього, потрібно використовувати оператор введення DATA та оператор читання READ. Оператори введення (DATA), читання (READ), повторного читання (RESTORE), умовних та безумовних переходів У даному випадку програма матиме такий вигляд: 10 PRINT “Розрахунок значень функції F” 15 B = 1E–5: C = 3E2 20 PRINT: PRINT 25 PRINT “Значення змінних X і A”: PRINT “Значення функції F” 30 READ X, A 40 DATA 0, 0, 0.1, 0.2, 0.2, 0.4, 0.3, 0.6, 0.4, 0.8, 0.5, 1, 0.6, 1.2 42 DATA 0.7, 1.4, 0.8, 1.6, 0.9, 1.8, 1, 2 45 PRINT “X = ”; X: PRINT “A = ”; A 50 F = (X*X + 1) / C + B / (A*A + 2) 60 PRINT “F = ”; F 70 GOTO 30 Програма працює таким чином. На екрані монітора друкується заголовок (рядок 10). Оператори рядка 20 дозволяють пропустити два рядки на екрані монітора. Оператор READ читає першу пару вхідних даних X i A, які записані в операторі DATA. Вони дорівнюватимуть нулю. Після цього в лівій частині екрана монітора друкуються слова “Значення змінних X i A ”. Рядки 45, 60 дозволяють виводити на екран значення вхідних даних (X i A) і функції F. У рядку 50 розраховується значення функції F. Рядок 70 безумовним оператором переадресовує транслятор до нового читання вхідних даних. Тепер вже значення X буде дорівнювати 0.1, а A = 0.2 і повторюється весь процес обчислення. Як тільки закінчиться розрахунок функції F з параметрами X = 1 i A = 2, то рядок 70 знову переадресує ЕОМ до рядка 30, з вимогою читання наступної пари вхідних даних. Так як їх в операторі DATA більше немає, то ЕОМ сповіщає про помилку, яка свідчить про те, що відсутні вхідні дані. Щоб уникнути появи помилки, в рядку 70 замість оператора безумовного переходу необхідно користуватися оператором умовного переходу 70 IF X < 1 GOTO 30 72 PRINT “Якщо Ви бажаєте повторити дослідження функції, то подайте команду GOTO 10” 74 STOP 76 RESTORE: GOTO 10 80 END Поки умова рядка 70 виконується, оператор READ послідовно читає вхідні дані, записані в операторі DATA. Якщо умова рядка 70 не виконується, то передається керування наступному рядку 72. ЕОМ надрукує інформацію оператору і розрахунки закінчаться оператором STOP. Якщо необхідно повторити обчислення, то оператор RESTORE дозволить оператору READ повторно читати вхідні дані, записані в операторі DATA. Оператори обчислювальних переходів Зовсім неважко програму 2.2 переробити для дослідження декількох функцій, вибір яких здійснює ЕОМ в процесі виконання програми. Для цього існує оператор ON K GOTO N, L, C (де K – число, що вираховується в процесі роботи, N, L, C – номeри рядків програми). У цьому випадку програма буде мати такий вигляд: 8 K = 1 10 PRINT “Розрахунок значень функції F” 15 B = 1E–5: C = 3E2 20 PRINT: PRINT 25 PRINT “Значення змінних X i A”: PRINT “Значення функції F” 30 READ X, A 40 DATA 0, 0, 0.1, 0.2, 0.2, 0.4, 0.3, 0.6, 0.4, 0.8, 0.5, 1 42 DATA 0.6, 1.2, 0.7, 1.4, 0.8, 1.6, 0.9, 1.8, 1, 2 45 PRINT “X =”; X: PRINT “A = ”; A 47 ON K GOTO 50, 52, 54 50 F = (X*X + 1) / C + B / (A*A + 2): GOTO 60 52 F = B * (X + 1) * (X + 1) + A * (A + 1) + 2: GOTO 60 54 F = X / B + (A / 3) * (A / C) + 1 60 PRINT “F = ”; F 70 IF X < 1 GOTO 30 72 K = K + 1 75 IF K > 3 GOTO 80 77 RESTORE: GOTO 20 80 END Пояснимо дану програму. Оскільки на початку програми змінна K набуває значення 1, то оператор ON (рядок 47) адресує виконання функції, записаної в рядку 50. Рядок 70, як і раніше, керує читанням вхідних даних, записаних в операторі DATA. Так як K < 3, то керування передається рядку 77, який дозволяє повторне читання вхідних даних з оператора DATA. Оскільки змінна K тепер буде мати значення 2 (рядок 72), то оператор ON переадресує програму на виконання рядка 52, тобто на дослідження наступної функції. Як тільки змінна K набуде значення 4, то робота програми закінчується. Ця програма є зразком програми циклічної структури. Циклічні програми У результаті поліпшення попередньої програми виникає така: 10 PRINT “Розрахунок значень функції F” 17 B = 1E–5: C = 3E2 20 PRINT: PRINT 25 PRINT “Значення змінних X і A”: PRINT “Значення функції F” 30 READ X, A 40 DATA 0, 0, 0.1, 0.2, 0.2, 0.4, 0.3, 0.6, 0.4, 0.8, 0.5, 1 42 DATA 0.6, 1.2, 0.7, 1.4, 0.8, 1.6, 1, 2 45 PRINT “X = ”; X: PRINT “A = ”; A 50 F = (X*X + 1) / B + C (A*A + 2) 60 PRINT “F = ”; F 70 IF X < 1 GOTO 30 80 END Якщо виникне потреба в дослідженні заданої функції з іншими значеннями змінної, то необхідно переписати рядки 40 і 42 із вхідними даними. А щоб не потрібно було нічого змінювати в програмі, цикл повинен бути оформлений таким чином. 15 N = 0 35 N = N + 1 70 IF N < 11 GOTO 30 У рядках 15 і 35 оформлений лічильник кроків циклу програми, а в рядку 70 оформлений умовний перехід до нового кроку циклу програми.
|