Файл: Митяков Информатика Часть 1.pdf

Добавлен: 23.10.2018

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

Скачиваний: 18

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

  

36 

 

 

 

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

скобками. 

Например, выражение 

t

u

bz

x

ay

2

2

2

sin

*

+

+

 в Фортране имеет вид:  

SQRT((a*y**2+x)/(b*z**2+u))*SIN(t)**2 

Если  вместо  квадратного  корня  стоит,  например,  кубический,  то  такая 

функция  отсутствует,  и  необходимо  выражение  возвести  в  степень 1/3. При 

этом необходимо помнить о правилах расчетов между целыми и вещественны-

ми константами: 

(((a*y**2+x)/(b*z**2+u))*SIN(t)**2)**(1./3.) 

Простейшие операторы Фортрана 

Оператор присваивания 

Структура оператора: A=B 

Здесь A - переменная; B - арифметическое выражение, значение которого 

присваивается переменной A. Например, последовательность операторов: x=1; 

y=3; z=2x+5y выполняется  следующим  образом.  Сначала  в  условные  ячейки 

памяти, соответствующие переменным x и y, будут записаны соответствующие 

константы. Затем процессор производит вычисление выражения 2*1+5*2, а ре-

зультат (12) будет направлен в ячейку, соответствующую переменной z (рис. 7). 

 

 

 

Рис. 7. Иллюстрация работы оператора присваивания 

 

Оператор ввода данных 

Структура оператора: READ(*,*) A,B 

Здесь READ(*,*) - имя оператора; A,B - список переменных, значения ко-

торых  вводятся  с  клавиатуры.  Первая  звездочка  в  имени  оператора  указывает 

1

3

12

Процессор 


background image

  

37 

 

 

 

на  то,  что  ввод  осуществляется  с  клавиатуры,  а  вторая – на  то,  что  ввод  бес-

форматный. 

Например, рассмотрим работу оператора READ(*,*) x,y. 

Компьютер,  выполняя  этот  оператор,  находится  в  ожидании  ввода  двух 

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

нужно нажать клавишу Enter. После этого в условные ячейки памяти x и бу-

дут записаны соответствующие данные. В отличие от предыдущего оператора, 

эти данные могут меняться при повторном запуске программы. 

 

Оператор вывода данных 

Структура оператора: WRITE(*,*) 'текст',A,B 

Здесь WRITE(*,*) - имя оператора, 'текст' - необходимые пояснения (мо-

гут отсутствовать), A,B - список переменных, значения которых  выводятся  на 

экран дисплея.  

Например, пусть в процессе работы программы возникла ситуация, пока-

занная на рис. 7, (x=1; y=3; z=12). Теперь запишем оператор WRITE(*,*) x,y,z. 

В этом случае на экране дисплея появится следующая информация: 

1 3 12 

Более  наглядным  является  вывод  с  использованием  текстовых  фрагмен-

тов. В результате работы оператора  

WRITE(*,*) ‘x=’,x,’y=’,y,’z=’,z 

на экране дисплея появится следующая информация: 

x= 

1 y= 

3 z= 12 

 

Оператор окончания программы 

Структура оператора: END 

Ставится в конце программы и не может иметь метки. 

 


background image

  

38 

 

 

 

3.4. Программирование задач на простые переменные 

Запишем программу примера линейного алгоритма, блок-схема которого 

приведена на рис. 6. 

WRITE(*,*)’Введите b,c,x’ 
READ(*,*)b,c,x 
y=x**2+b*x+c 
WRITE(*,*)’b=’,b,’c=’,c,’x=’,x,’y=’,y 
END 

Разветвляющийся алгоритм 

Часто  требуется  в  зависимости  от  конкретного  набора  данных  или  про-

межуточных результатов выбрать один из двух или более различных вариантов 

продолжения  вычислительного  процесса.  Если  в  зависимости  от  выполнения 

условия  выбирается  один  из  двух  (или  более)  различных  вариантов  вычисли-

тельного процесса, то такой алгоритм называется разветвляющимся. В зависи-

мости  от  того,  удовлетворяется  ли  условие,  выполняется  «действие 1» или 

«действие 2», после  чего  вычислительный  процесс  вновь  сводится  в  единое 

русло.  

Для программирования разветвлений используются операторы условного 

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

ратор IF...ELSEIF...ELSE ...ENDIF, что  делает  программу  более  компактной. 

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

поддерживающих классический стиль программирования. В этом случае алго-

ритм можно представить в виде блок-схемы, каждому элементу которой соот-

ветствует определенный оператор. 

 

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

Структура оператора: IF (A¤B) GOTO M 

Здесь IF - имя оператора; A и B - арифметические выражения; ¤ - опера-

ция отношения; M - метка оператора, к которому осуществляется переход при 

выполнении  условия.  Если  условие  не  выполнено,  управление  передается  на 


background image

  

39 

 

 

 

следующий после IF оператор. На блок-схеме этот оператор соответствует бло-

ку разветвлений.  

 

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

Структура оператора: GOTO M 

Здесь GOTO - имя оператора, M - метка оператора, к которому осуществ-

ляется переход. В отличие от оператора условного перехода, данный оператор 

осуществляет переход к оператору с меткой M всегда, то есть без проверки ка-

ких-либо условий. На блок-схеме оператор безусловного перехода соответству-

ет обводящей стрелке, указывающей соответствующий переход. 

Пример 1. Вычислить значение функции 

>

+

+

=

3

1

x

если 

     

          

bx

3

1

x

если

  

c

bx

x

y

2

,

,

;

,

,

      

       

 

при любых заданных значениях параметров b, c, x. В зависимости от значения x 

вычисление y происходит либо по первой, либо по второй формуле. 

Блок-схема 

Программа на Фортране 

 

 

 

 

 

 

 

 

 

 

WRITE(*,*) ’Введите b,c,x’ 
READ(*,*) b,c,x 
IF (x.LT.1.3) GOTO 5 
y=b*x+c 
GOTO 6 
5 y=x**2+b*x+c 

6 WRITE(*,*) 

’b=’,b,’c=’,c,’x=’,x,’y=’,y 
END 

 

 

b,c,x 

1,3 

y=bx 

y=x

2

+bx+c 

конец 

да 

нет 

b,c,x,y


background image

  

40 

 

 

 

Пример 2. Из  двух  возможных  значений,  просчитываемых  по  формулам 

ax  и  xa,  выбрать  наибольшее  и  присвоить  его  переменной  y.  Таким  образом, 

требуется найти y = max

{

ax, xa

}

, если заданы a и x

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

ловия,  производилось  вычисление  y  по  одной  из  заданных  формул,  в  данном 

примере производятся вычисления по обеим формулам, а лишь затем произво-

дится отбор максимального значения. 

Блок-схема 

Программа на Фортране 

 

 

 

 

 

 

 

 

 

 

 

 

WRITE(*,*) ’Введите a,x’ 
READ(*,*) a,x 
b=a**x 
c=x**a 
IF (b.LT.c) GOTO 7 
y=b 
GOTO 8 
7 y=c 
8 WRITE(*,*) 

’a=’,a,’b=’,b 

WRITE(*,*)’y=’,y 
END 

 

a,x 

b<c 

y=c 

y=b 

конец 

да 

нет 

a,x,y

b=a

x

 

c=x

a