Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Управление программой

Материал взят из проекта Lahey: http://www.lahey.com/index.html, http://www.lahey.com/other.htm). | Возможности расширения языка | Секция (вырезка) массива | Модули и процедуры | Более подробная информация | Спецификации или объявления | Тип Character | Логические выражения | Массивы и производные типы | Оператор и конструкция IF |


Читайте также:
  1. III. Управление Программой
  2. T-Factory 6 - управление производственным бизнесом в реальном времени
  3. V. Управление образовательным учреждением
  4. V. Управление общеобразовательным учреждением
  5. XY-управление
  6. Автоматическое управление
  7. Автоматическое управление памятью ссылочных данных

 

Программа на FORTRAN 77 была часто спроектирована по блок-схеме. Этот вид проектирования ведет естественно к коду, составленному из фрагментов проверки и ветвления программ, он будет труден для внесения изменений, в частности для увеличения размера программы, он потребует большой отладки и в нем будет очень мало повторного использования. Новые методы проектирования программ включают декомпозицию больших проблем на малые проблемы до тех пор, пока решения не станут тривиальными. Новый стандарт Fortran 90 предоставляет конструкции управления, которые делают более легкими реализацию новых методов проектирования программного обеспечения.

В язык включены три новые конструкции для записи цикла.

з

DO / END DO*

END DO заменяет традиционный помеченный оператор завершения CONTINUE для цикла DO. При этом метка в операторе DO не обязательна.

Ниже приводится пример бесконечного цикла, который может быть закончен условным оператором GOTO.

name: DO выполняемые операторы END DO name

 

Обычный оператор цикла DO имеет следующую новую упрощенную форму без номера оператора,

name: DO i = целое_выраж_1, целое_выраж_2, целое_выраж_3 выполняемые операторы END DO name

где i так называемая управляющая переменная, и где целое_выраж_3 необязательно.

з

DO WHILE *

 

Оператор обеспечивает повторение блока до тех пор, пока условие верно.

name: DO WHILE (логическое_выражение) выполняемые операторы END DO name

Имя здесь не обязательно, но может быть использовано для следующих циклов в целях индикации, когда нужны итерации, с операторами завершения CYCLE или EXIT.

S1: DO

IF (X Y) THEN

Z = X

EXIT S1

END IF

CALL NEW(X)

END DO

N = 0

LOOP1: DO I = 1, 10

J= I

LOOP2: DO K =1, 5

L = K

N = N +1

END DO LOOP2

END DO LOOP1

 

В последнем случае конечные значения переменных будут следующими, в полном соответствии со стандартом, I = 11, J = 10, K = 6, L = 5, и N = 50.

Именовать цикл не обязательно. Заметим, что этот тип имени ограничивает конструкции цикла DO, CASE или IF...THEN...ELSE...ENDIF. Старые возможности с номерами операторов все еще допустимы, также и в свободной форме.

з

Конструкция CASE *

 

Заменяет запутанную конструкцию IF/ELSE IF или вычисляемые GO TO. Делает код более легким для понимания и для записи.

Новая команда такова

SELECT CASE (выражение) CASE блок-переключатель блок CASE блок-переключатель блок CASE DEFAULT блок по умолчанию END SELECT

Типичная конструкция:

SELECT CASE(3*I-J)! управляющая переменная это 3*i-j CASE(0)! для значения нуль:! вы вычисляете код здесь CASE(2,4:7)! для значений 2, 4, 5, 6, 7:! вы вычисляете код здесь CASE DEFAULT! и для всех остальных значений! вы вычисляете код здесь:! END SELECT

Если CASE DEFAULT отсутствует и не находится альтернатива, вычисление продолжается прямо с оператора, за END SELECT без выдачи сообщения об ошибке. Другой пример:

INTEGER FUNCTION SIGNUM(N) SELECT CASE (N) CASE (:-1) SIGNUM = -1 CASE (0) SIGNUM = 0 CASE (1:) SIGNUM = 1 END SELECT END

 

! Еще один пример использования конструкции CASE

! (c)Copyright 1993, Lahey Computer Systems, Inc. All RIGHTS RESERVED

! Test: case1

!

! Legal - все возможные типы case-значение-диапазон для integer*4

!

integer*4 i

integer n /9/, a (9) /1,-11,81,31,41,51,61,71,25/

do 50 j = 1, n

i = a (j)

select case (i)

case (1)

print*,"should be 1, is ",i

case (: -11)

print*,"should be 11 or less, is ",i

case (81:)

print*,"should be 81 or greater, is ",i

case (31: 32)

print*,"should be 31 or 32, is ",i

case (41, 50:51, 61:61, 71:72)

print*,"should be 41, 50, 51, 61, 71, or 72, is ",i

case default

print,"should be any other number, is ",i

end select

50 continue

end

з

CYCLE, EXIT *

 

Прерывает отдельную итерацию цикла DO или весь цикл прежде чем завершится повторяемый блок. Уменьшает потребность в GO TO.

з


Дата добавления: 2015-11-14; просмотров: 52 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Вид семейства| Выражения для массивов

mybiblioteka.su - 2015-2024 год. (0.007 сек.)