ПРОСТІ ОПЕРАТОРИ IF

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

Розглянемо наступну програму: 10 INPUT А, B

20 IF A&gtB THEN 50

30 PRINT А, В

40 STOP

50 PRINT В, А

60 END

Її дії такі: вводяться два числа і друкуються в порядку зростання У рядку 20 перевіряється умова А більше В; якщо воно виконано, то управління передається рядку 50, в якій менша з двох значень (В) друкується перша Якщо ця умова не виконана, то управління передається наступному оператору (рядку 30), який першим друкує значення А Зверніть увагу на оператор STOP, завершальний виконання програми

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

Викликає завершення виконання програми може вказуватися багаторазово або взагалі не бути присутнім Зазвичай цим оператором не можна замінити операторEND,   є останнім оператором програми

Коли при виконанні програми черга доходить до оператора STOP, то система припиняє виконання програми і видає запрошення до вводу іншої команди Зазвичай в програмі має бути лише один оператор END (при цьому він повинен мати найбільший номер), але в деяких системах дозволяється багаторазове використання оператора END в якості

еквівалента оператора STOP

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

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

Ця програма повинна друкувати повідомлення, що вказує знак введеного числа

10 PRINT ВВЕДІТЬ ЧИСЛО

20 INPUT N

30 IF N≥0 THEN 60

40 PRINT ВАШЕ ЧИСЛО НЕГАТИВНО

50 STOP

60 IF N&lt&gt0 THEN 90

70 PRINT ВАШЕ ЧИСЛО НУЛЬ

80 STOP

90 PRINT ВАШЕ ЧИСЛО ПОЗИТИВНО 100 END

Простий оператор IF Загальна форма запису: IF e THEN s

Тут е умова, яка може бути виконано чи ні, a sномер оператора

Якщо умова е істинно, то управління передається оператору з номером s В іншому випадку виповнюється оператор, номер якого наступний за номером оператора IF

У деяких системах додатково дозволяється форма

IF e GO TO s що має рівно той же зміст, що і наведена вище

В інших системах, наприклад в Бейсике ВВС, після THEN дозволяється вказувати будь-який оператор Бейсика (крім IF) Наприклад:

IF A = ​​2 + В THEN PRINT сума дорівнює , А

IF X&gtY THEN STOP

Якщо Ваша система з Бейсиком дозволяє вказувати в одному рядку кілька операторів, то будьте обережні при застосуванні оператора IF: якщо умова не виконана, управління буде передано наступному рядку, а не наступного оператора

Нижче наведені допустимі форми оператора IF Якщо умова виконується, то управління передається оператору з номером s:

b b

o b

b або

b або

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

Наприклад, наведені нижче оператори програми присвоюють змінної Y значення 1, якщо X

= 50, і значення 0 в іншому випадку (у рядку 70 оператор GO TO передає управління рядку 100

докладніше про це операторі см підрозд 321)

50  IF X = 50 THEN 80

60     Y=0

70  GO TO 100

80     Y=1 100—-

Звертаючись до рис 31, наведені вище оператори можна проілюструвати наступним чином:

Якщо умова (X = 50) виконано, то управління передається в правий нижній прямокутник в іншому випадку-в лівий нижній прямокутник Відбуваються в рядку 100 дії повинні бути зображені під цими прямокутниками

Якщо результатом виконання оператора IF може бути тільки одна дія, то один з нижніх прямокутників треба залишити порожніми Наприклад, оператори

40 IF X = 10 THEN N = N +1 60 INPUT A можна проілюструвати наступною структограммой:

Умова в операторі IF може містити досить складні вирази, наприклад: IF A + B> 43 THEN 210

IF А / С ≤ В +100 + D THEN 92

IF 10=A+B THEN A=B/4

Умовні вирази можна комбінувати за допомогою логічних операцій NOT (НЕ), AND (І), OR (АБО) Зазвичай зміст цих операцій неважко визначати, читаючи вираз, але при необхідності мати більш повні відомості див підрозд 611 Наведемо приклад застосування цих операцій:

IF X&gt1 AND Y&gt1 THEN 90 IF NOT (X&gt2) THEN STOP IF X&gt1 OR X&lt0 THEN 100

321 ОПЕРАТОР GO TO

Оператор GO TO завжди викликає передачу управління вказаною в ньому оператору

Оператор GO TO Загальна форма запису: GO TO s або

GO TO s          (Запис одним словом)

Управління передається оператору з номером s

Врахуйте, що в Бейсике ВПС не допускається перша форма запису (з пропуском) і дозволяється тільки форма GO TO

Наведемо приклади цього оператора, що дозволяє перескакувати

назад або вперед: GO TO 50

GO TO 9999

Звернувшись до рис 31, Ви можете помітити, що для оператора GO TO не передбачено ніякої діаграми Причина цього проста: оператор не належить до спеціальним чином підібраного набору структур, забезпечує розробку програми будь-якого типу Використовуйте оператор GO TO з великою обережністю Найкраще поєднувати його з іншими операторами так, щоб у результаті утворювалися стандартні структури, зображені на рис 31

322 ПРИКЛАД ПРОГРАМИ

Розглянемо програму для перекладу температури з шкали Цельсія в шкалу Фаренгейта

Відповідна формула має вигляд

Температура за Фаренгейтом = (температура за Цельсієм) * 180/100 + 32

Можна написати таку програму:

10 INPUT З

20     F=C*180/100+32

30        PRINT  C, F 40  END

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

30 PRINT ТЕМПЕРАТУРА за Цельсієм =; З

35 PRINT ТЕМПЕРАТУРА за Фаренгейтом =; F

6 PRINT ПРОГРАМА ПЕРЕТВОРЕННЯ ТЕМПЕРАТУРИ ІЗ градусів Цельсія • $ PRINT У градуси Фаренгейта Градуси Цельсія ,

7 PRINT УКАЖІТЬ ТЕМПЕРАТУРУ в градусах Цельсія

Змінена програма виводить результати в наступному вигляді (відповіді користувача підкреслені): RUN

ПРОГРАМА ПЕРЕТВОРЕННЯ ТЕМПЕРАТУРИ ІЗ градусів Цельсія в градусах Фаренгейта

УКАЖІТЬ ТЕМПЕРАТУРУ в градусах Цельсія

ТЕМПЕРАТУРА за Цельсієм = 50 ТЕМПЕРАТУРА за Фаренгейтом = 122

END AT LINE 40

Будучи корисною для перетворення одного значення температури, ця програма не дуже зручна для перетворення ряду значень, так як її доведеться запускати стільки разів, скільки всього значень Щоб програма могла обробити послідовність значень, треба після виконання оператора друку в рядку 35 повернути управління на рядок 6 Додавши рядок

37 GOТО 6

і три оператора REM, отримаємо

LIST

1 REM ПЕРЕТВОРЕННЯ ТЕМПЕРАТУРИ ІЗ градусів Цельсія

2 REM У градуси Фаренгейта

3 REM С = ТЕМПЕРАТУРА за Цельсієм, F = ТЕМПЕРАТУРА за Фаренгейтом

5 PRINT ПРОГРАМА ПЕРЕТВОРЕННЯ ТЕМПЕРАТУРИ ІЗ градусів Цельсія

6 PRINT У градуси Фаренгейта

7 PRINT УКАЖІТЬ ТЕМПЕРАТУРУ в градусах Цельсія

10 INPUT З

20     F=C*180/100+32

30 PRINT ТЕМПЕРАТУРА за Цельсієм =; З

35 PRINT ТЕМПЕРАТУРА за Фаренгейтом =; F

37 GO TO 6

40 END

ПРОГРАМА ПЕРЕТВОРЕННЯ ТЕМПЕРАТУРИ ІЗ градусів Цельсія в градусах Фаренгейта

УКАЖІТЬ ТЕМПЕРАТУРУ в градусах Цельсія

?50

ТЕМПЕРАТУРА за Цельсієм = 50

ТЕМПЕРАТУРА за Фаренгейтом = 122

УКАЖІТЬ ТЕМПЕРАТУРУ в градусах Цельсія

ТЕМПЕРАТУРА за Цельсієм = 80 ТЕМПЕРАТУРА за Фаренгейтом = 176

УКАЖІТЬ І Т Д

Ця програма буде без кінця повторюватися між рядками 6 і 37 Скориставшись конструкціями рис 31, отримаємо для неї діаграму наступного вигляду:

ДРУК заголовка Повторювати без кінця

ДРУК запиту на введення

ВВЕДЕННЯ З

F=C*180/100+32

ДРУК результатів КІНЕЦЬ

Зупинитися можна, тільки перервавши виконання програми Зазвичай для цього є спеціальна команда Однак такій ситуації не можна допускати при розробці гарної програми тому зробимо так, щоб програма завершувала свою роботу при отриманні певного значення С, скажімо 9999 Додавши оператор

15 IF С = 9999 THEN STOP отримаємо

LIST

1 REM ПЕРЕТВОРЕННЯ ТЕМПЕРАТУРИ ІЗ градусів Цельсія

2 REM У градуси Фаренгейта

3 REM С = ТЕМПЕРАТУРА за Цельсієм F = ТЕМПЕРАТУРА за Фаренгейтом

6 PRINT ПРОГРАМА ПЕРЕТВОРЕННЯ ТЕМПЕРАТУРИ ІЗ градусів Цельсія;

6 PRINT У градуси Фаренгейта

7 PRINT УКАЖІТЬ ТЕМПЕРАТУРУ в градусах Цельсія 10 INPUT З

15 IF С = 9999 THEN STOP

2В F = C * 180/100 +32

38 PRINT ТЕМПЕРАТУРА за Цельсієм =; З

35 PRINT ТЕМПЕРАТУРА за Фаренгейтом =; F

37 GOTO 6

40 END RUN

ПРОГРАМА ПЕРЕТВОРЕННЯ ТЕМПЕРАТУРИ ІЗ градусів Цельсія в градусах Фаренгейта

УКАЖІТЬ ТЕМПЕРАТУРУ в градусах Цельсія

ТЕМПЕРАТУРА за Цельсієм 50 ТЕМПЕРАТУРА за Фаренгейтом = 122 52

УКАЖІТЬ ТЕМПЕРАТУРУ в градусах Цельсія

?80

ТЕМПЕРАТУРА за Цельсієм = 80

ТЕМПЕРАТУРА за Фаренгейтом = 176

УКАЖІТЬ ТЕМПЕРАТУРУ в градусах Цельсія

?9999

END  AT   LINE   40

Виконувані цією програмою дії можна зобразити наступною діаграмою:

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

33 ЦИКЛИ

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

10 INPUT N 20 I=1

30 IF I&gtN THEN 90

40 INPUT З

50   F=C*180/100+32

60   PRINT F

70   I=I+1

80 GOTO 30

90 END

Крім введення значення N, для управління циклом використовуються наступні оператори:

рядок 20, яка встановлює лічильник I рівним 1, рядок

30, яка перевіряє, чи не зроблено чи вже N повторень, рядок 70, яка при кожному проході циклу збільшує лічильник I на 1, а також рядок 80, яка повертає керування на початок циклу

– рядок 30 І знову оператор GO TO треба представляти в структограмме тільки як елемент циклу,

так що цю програму можна зобразити в наступному вигляді:

У цій діаграмі бентежить втрата оператора IF Вона сталася тому, що цей оператор увійшов в конструкцію ПОВТОРЮВАТИ, ПОКИ. Горизонтальна риса показує, що перевірка умови відбувається перед виконанням оператора INPUT С (ВВІД С)

Крім зазначеного методу організації циклу є ще кілька способів Наприклад, видаліть рядки 30 і 80 і вставте рядок

80 IF I≤N THEN 40

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

Структограмма переглянутої програми прийме наступний вигляд:

ВВЕДЕННЯ N Присвоїти I початкове значення

ВВЕДЕННЯ З F = С * .. ДРУК F Збільшити I на 1

ПОВТОРЮВАТИ ДО I> N

КІНЕЦЬ

І знову оператор IF, на цей раз замикає цикл, поглинений конструкцією ПОВТОРЮВАТИ ДО. Багато мови програмування, у тому числі деякі розширені версії Бейсика, містять особливі оператори для полегшення виконання подібних циклів, що дозволяє уникнути кілька незграбного вживання операторів IF і GOTO

Перша з розглянутих форм організації циклів відповідає дії операторів FOR-NEXT,

описаних в наступному розділі

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

*

*