Название: Квантовая механика - Учеб. пособие. (Краснопевцев Е. А.)

Жанр: Информатика

Просмотров: 1113


2. теоретические сведения

 

Управляющие операторы и конструкции служат для изменения последовательности выполнения программ.

 

Оператор безусловного перехода GOTO

 

GOTO  метка

Используется для передачи управления по метке.

 

Условный логический оператор IF

 

Общий вид:

IF (Л.В.) “оператор”                                        Блок-схема:

Подпись:  “последующий оператор программы”

Последующий оператор

программы

 
Если истинно логическое Л.В., то выполняется “оператор”, в противном случае управление передается на “последующий оператор программы”. Если Л.В. ложно, то управление сразу передается на “последующий оператор программы”, минуя “оператор”.

 

Конструкция IF THEN ENDIF

 

Общий вид:  [имя:] IF (Л.В.) THEN

“группа операторов”

ENDIF  [имя]                           

 

Блок-схема:

 

Подпись:

Если истинно логическое выражение Л.В., выполняется “группа операторов”, в противном случае управление непосред-ственно передается за ENDIF. Имя конструкции может присутствовать, может и не присутствовать.

 

Конструкция IF THEN ELSE ENDIF

 

Общий вид: [имя:] IF (Л.В.) THEN

“операторы группы 1”

ELSE  [ имя]

“операторы группы 2”

ENDIF  [имя]

 

Блок-схема:

Подпись:  В случае истинности выполняются “операторы группы 1” и управление передается за ENDIF.

В случае лжи управление передается за ELSE, минуя “операторы группы 1”, затем выполняются “операторы группы 2”. Имя конструкции, если оно задано, должно обязательно присутствовать и перед IF, и после ENDIF.

 

Конструкция IF THEN ELSEIF   

Общий вид:  [имя:] IF(ЛВ1)  THEN

                      операторы группы 1

                      ELSEIF(ЛВ2) THEN  [имя]

Подпись:  операторы группы 2                               Блок-схема:

 …

[ELSE  [имя]

операторы группы n]

ENDIF   [имя]

 

В случае истинности логического выражения ЛВ1 выполняются “операторы группы 1”, и управление передается за ENDIF. Если логическое выражение ЛВ1 ложно, то управление передается на следующий ELSEIF, то есть вычисляется значение логического выражения ЛВ2, и если оно истинно, то выполняются “операторы группы 2”. Если оно ложно, то управление передается на следующий ELSEIF, и так далее. Если ложны все ЛВ, то выполняются операторы группы n, следующие за завершающим ELSE. Если завершающий ELSE отсутствует, то управление передается за ENDIF. Число операторов ELSEIF в конструкции может быть произвольным. Имя, если оно задано, во всех частях конструкции должно быть одинаковым. Следует обратить внимание, что вся конструкция  завершается одним ENDIF.

 

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

Общий вид:  [имя:]  SELECT CASE (тест-выражение)

                                    CASE ( СП1)  [имя]

                                    “операторы группы 1”

                                    [CASE (СП2) [имя]

                                      [“операторы группы 2”]]

                                     …

                                     [CASE DEFAULT [имя]

                                      [“операторы группы n”]]

                                     ENDSELECT [имя]

Тест-выражение – целочисленное, символьное типа CHARAC-TER(1) или логическое скалярное выражение.

СП – список констант, тип которых должен соответствовать типу тест-выражения. СП может содержать одно значение, или несколько констант, разделенных запятыми, или быть задан

как диапазон разделенных двоеточием значений, например 5:10 или ‘I’:’N’, или :10 (опущена левая граница), или 2: (опущена правая граница). Каждое значение, даже если оно задано в диапазоне значений, может появляться только в одном СП. Пример: СASE (0, 1, 3, 20:25, 50).

Конструкция SELECT CASE работает так. Вычисляется значение тест-выражения. Если полученное значение находится в списке СП1, то выполняются “операторы группы 1”; далее управление передается за ENDSELECT. Если значение в СП1 не находится, то проверяется, есть ли оно в СП2, и так далее. Если значение тест-выражения не найдено ни в одном списке и присутствует оператор CASEDEFAULT, то выполняются “операторы группы n”, а далее выполняется расположенный за ENDSELECT оператор. Если же значение тест-выражения не найдено ни в одном списке и CASEDEFAULT отсутствует, то ни одна группа операторов не выполняется, и управление передается за ENDSELECT.

 

Вспомогательные управляющие операторы

 

Оператор STOP

Прекращает выполнение программы. Общий вид:

STOP [сообщение]

Сообщение – символьная или целочисленная константа. Эта константа выводится на экран монитора после логического завершения программы по оператору STOP. При отсутствии сообщения по умолчанию выводится строка

STOP – Program terminated

Оператор PAUSE

Оператор временно приостанавливает выполнение программы и позволяет пользователю выполнить команды операционной системы. Общий вид:

PAUSE [сообщение]

Если сообщение отсутствует, то после выполнения оператора PAUSE выводится строка:

Please enter a blank line (to continue) or a system command

(пожалуйста, введите пробел для продолжения программы или команду системы).

3. Примеры задач и их программное решение

в языке Фортран

 

1. Даны целые числа а, b, с. Удвоить эти числа, если а ³ b ³с, и заменить их абсолютными значениями, если это не так.

 

Program p3_1

integer a,b,c

20 Print *,'Vvedite chisla'

read *, a,b,c

if(a>=b.and.b>=c) then

a=2*a; b=2*b; c=2*c

else

a=abs(a); b=abs(b); c=abs(c)

endif

print *,'a=',a,'  b=',b,'  c=',c

goto 20

end

 

2. Дано действительное число а. Для функции f(x), график которой представлен на рисунке, вычислить f(a).

у

 

у = 4

 
Подпись:  program p3_2

 
real x,y

logical g1,g2,g3

у = х2

 
30 Print *,'Vvedite x'

read *,x

-1

 

2

 

х

 
if(x>1000) stop 'logicheskoe

zawershenie'

0

 
g1 = x< =-1; g2 =x>-1.and.x<=2;

g3 = x>2

if(g1) then

y = 1/x**2

elseif(g2) then

y = x**2

else

  y = 4

endif

print *, 'x =',x, '  y =',y

goto 30

end              

3. Даны действительные числа x и y. Определить, при-надлежит ли точка с координатами x, y заштрихованной области D, и вычислить:

Подпись:  

program p3_3 

real x,y

character(3):: t1='yes', t2='no'

logical g

10 Print *,'Vvedite x,y'

у = –х

 
Подпись:

у = х

 

у    4

 
read *,x,y

 D

 
g=(x**2+y**2)<=16.and.y>=abs(x)

if(g) then

х

 
  print *,t1; u=-3

else

  print *,t2; u=y**2

endif

print *, 'u=',u

goto 10

end

 

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

–20:–10 – как модуль вещественного числа двойной точности;

30:50 – как вещественное число одинарной точности;

0:10 – как комплексное число.

Использовать конструкцию SELECT CASE

program p3_4

integer i

20 print *,'Vvedite chislo'

read *,i

selectcase(i)

case(-20:-10)

  print*, abs(real(i,8))

case(30:50)

  print *,real(i)

case(0:10)

  print *,cmplx(i)

endselect

goto 20

end