01 (537404), страница 5

Файл №537404 01 (Метода по фортрану) 5 страница01 (537404) страница 52015-07-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 5)

Блок-схема вышеописанного алгоритма приведена на рисунке 2.

Для создания программ, реализующих такие разветвляющиеся алгоритмы, используются операторы безусловного и условного переходов, влияющие на последовательность выполнения операторов.

Оператор безусловного перехода позволяет передать управление любому выполняемому оператору программы. Общая форма оператора

Go to метка

где метка – метка оператора, которому передается управление.

Рис.2.

Выполняемый оператор, непосредственно следующий за оператором

безусловного перехода, должен иметь метку, иначе на него невозможно передать управление

123456789.............…….... …….............................72 73......80

Go to 10

8 А = D + B

10 C = E - A

В данном фрагменте оператор безусловного перехода передает управление оператору C = E - A с меткой 10, минуя оператор A = D + B.

Вычисляемый оператор безусловного перехода используется в ситуации, когда адрес передачи управления меняется в зависимости от значения некоторого целого выражения. Общая форма оператора

Go to ( список меток )[,] выражение.

Здесь список меток

– перечень меток выполняемых операторов, которым требуется передать управление. Метки в списке разделяются запятыми;

выражение

– арифметическое выражение целого типа, значение которого указывает адрес передачи управления.

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

123456789................................................72 73......80

Go to (12, 8, 25, 8), NUM

A = 2.5

12 F = X

Go to 10

25 F = X * Y

Go to 10

8 F = A + D

10 ........

работает следующим образом: если значение целой переменной NUM равно 1, то управление будет передано оператору с меткой 12, при NUM, равном 2-м или 4-м - оператору с меткой 8 и так далее. Если значение NUM окажется меньше 1 или больше 4, то управление будет передано оператору А = 2.5.

Оператор условного перехода служит для выбора одного из нескольких возможных продолжений процесса выполнения программы в зависимости от выполнения некоторого условия. Различают арифметический, логический и блочный операторы условного перехода.

Арифметический оператор условного перехода осуществляет выбор пути передачи управления на основе анализа некоторого арифметического выражения и записывается в виде:

If (выражение) M1, M2, M3

где выражение – арифметическое выражение, определяющее выбор направления передачи управления;

M1, M2, M3 – метки выполняемых операторов, которым может быть передано управление.

Арифметический оператор условного перехода передает управление оператору с меткой – M1, если значение арифметического выражения меньше нуля, M2 – если выражение равно нулю и M3 – если выражение больше нуля.

При использовании арифметического оператора условного перехода необходимо придерживаться следующих правил:

  • оператор, следующий непосредственно за ним, должен иметь метку, в противном случае он будет недоступен в программе;

  • две метки из трех используемых могут совпадать, что позволяет реализовать условия "  " или "  ";

  • для перехода по нулевому значению (метка M2) не рекомендуется использовать арифметическое выражение вещественного типа;

  • блоки операторов, имеющих метки M1, M2, M3, могут располагаться в любом месте программы и не обязаны следовать за условным оператором.

Например, приводимый фрагмент программы

123456789................................................72 73......80

If (Sqrt(A) + 3*B) 20, 10, 25

20 X = Y + Z

Go to 30

25 X = Y

Go to 30

10 X = Y - Z

30 ........

выполняется следующим образом: если значение арифметического выражения Sqrt(A) + 3*B будет отрицательным, то управление будет передано оператору с меткой 20, если нулевым – оператору с меткой 10, если положительным – оператору с меткой 25.

***Замечание: при использовании арифметического оператора условного перехода необходимо отслеживать корректность работы программы после выбора ветви расчетов. В приведенном примере этой цели служат операторы безусловного перехода Go to 30, которые позволяют обходить ненужные расчетные ветви.

С использованием описанных операторов рассмотренный выше алгоритм решения задачи об идентификации областей может быть записан в виде программы

123456789..............................................................72 73......80

Read(*, *) X, Y

If (X*X + Y*Y - 4.) 4, 4, 3

3 N = 0

Go to 7

4 If (Y) 6, 6, 5

5 N = 1

Go to 7

6 N = 2

7 Write(6, 8) X, Y, N

8 Format(' Точка M(', F4.1, ',', F4.1,

* ') лежит в области N = ', I1)

End

Логический оператор условного перехода осуществляет выбор пути передачи управления на основе анализа логического выражения и записывается в виде:

If ( выражение ) оператор

где выражение

– логическое выражение, определяющее будет ли выполняться оператор, входящий в условный оператор, или нет;

оператор

– любой выполняемый оператор.

При выполнении логического оператора условного перехода вычисляется и анализируется выражение. Если оно – "истина", выполняется оператор. В противном случае ("ложь") – оператор выполняться не будет, и управление будет передано оператору, следующему за логическим оператором условного перехода. Ниже приведены фрагменты программ, иллюстрирующие работу логического оператора условного перехода.

123456789...............................................................72 73......80

If (X.LE.1.5) Go to 12

Y = -1.0

Go to 15

12 Y = 1.0

15 .......

В этом примере вычисление переменной Y производится в зависимости от значения переменной X. Если X <=1.5, то управление будет передано оператору с меткой 12 и Y примет значение, равное 1.0. Если Х > 1.5, то выполнится оператор Y = - 1.0. Оператор безусловного перехода Go to 15 позволяет избежать ошибочного присваивания переменной Y значения 1.0.

В этом фрагменте программы

123456789..............................................................72 73......80

............

If (X.GT.5.) X = X/2.

Y = 3. + X**2

.........

перед вычислением значения переменной Y проверяется значение переменной Х. Если выполняется условие Х > 5, то сначала значение переменной Х уменьшается вдвое, а затем вычисляется значение переменной Y. В противном случае, значение Х остается неизменным, и управление сразу переходит к оператору Y = 3. + X**2.

С использованием логического оператора условного перехода рассмотренная выше программа идентификации областей примет вид:

123456789..............................................................72 73......80

Read(*, *) X, Y

If (X*X + Y*Y.LE.4.) Go to 4

N = 0

Go to 7

4 If (Y.LE.0.) Go to 6

N = 1

Go to 7

6 N = 2

7 Write(6, 8) X, Y, N

8 Format(' Точка M(', F4.1, ',', F4.1, ') лежит в области N = ', I1)

Stop

End

Блочный оператор условного перехода является аналогом логического оператора условного перехода, но позволяет использовать в каждой из своих расчетных ветвей не один оператор, а блоки операторов. Общая форма оператора

If ( выражение ) Then

блок_1

[ Else

блок_2 ]

EndIf

где выражение

– логическое выражение, определяющее будет ли выполняться блок_1 или блок_2;

блок_1, блок_2

– группы выполняемых операторов.

Блочный оператор условного перехода работает следующим образом. Если значение логического выражения есть "истина", то выполняются операторы блока_1, а операторы блока_2 игнорируются. Если значение логического выражения есть "ложь", то игнорируются операторы блока_1, а выполняются операторы блока_2. Признаком конца группы операторов блока_1 является оператор Else, а группы операторов блока_2 – оператор EndIf. После выполнения любого из блоков управление передается на оператор, следующий за ключевым словом EndIf. Ключевое слово Else и операторы блока_2 могут отсутствовать. В этом случае работа блочного оператора условного перехода аналогична работе логического оператора.

При использовании блочного оператора условного перехода необходимо придерживаться следующих правил:

  • не допускается передача управления в блоки операторов блок_1 или блок_2 извне, минуя оператор If;

  • при использовании в качестве блока_2 другого оператора условного перехода вместо комбинации двух ключевых слов Else и If можно использовать единое слово ElseIf;

  • допускается использование пустых блоков операторов после ключевого слова Else, но это рекомендуется избегать.

Использование блочного оператора условного перехода упрощает чтение программы, делая ее более наглядной. Это можно видеть на примере программы идентификации областей:

123456789..............................................................72 73......80

Read(*, *) X, Y

If (X*X + Y*Y.LE.4.) Then

If (Y.LE.0.) Then

N = 2

Else

N = 1

EndIf

Else

N = 0

EndIf

Write(6, 8) X, Y, N

8 Format(' Точка M(', F4.1, ',', F4.1,

* ') лежит в области N = ', I1)

Stop

End

З а д а н и е к л а б о р а т о р н о й р а б о т е

Составить блок-схему и программу для решения следующих задач. В вариантах 1-14 вычислить значение F по предлагаемой формуле. При получении нуля в знаменателе необходимо напечатать фразу "нуль в знаменателе". В вариантах 15-24 определить номер области n, в которую попадет точка с заданными координатами x и y. Границы отнести к области с большим номером. В вариантах 25-30 выполнить указанные действия. В качестве исходных данных использовать восемь различных комбинаций значений вводимых переменных. В программе предусмотреть ввод исходных данных из файла prog_3.dan и печать результатов в файл prog_3.res. Результаты тестирования программы привести в отчете.

1. 2.

3. 4.

Характеристики

Тип файла
Документ
Размер
1,27 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее