Как правильно структурировать (набирать) текст программ

 

Задача – показать структурные элементы алгоритма

=============================

Пример:

ПЛОХО Структурирование
Lab_MPI СПбГУ 2007г. кафедра вычислительной физики  
  program main_mpi include 'mpif.h' integer rank, tag, cnt, ierr, status(mpi_status_size) real sndbuf, rcvbuf tag = 0 sndbuf = 3.14159 cnt = 1 call mpi_init(ierr) call mpi_comm_rank(mpi_comm_world, rank, ierr) if (rank.eq.0) then call mpi_recv(rcvbuf, cnt, mpi_real, 1, tag, mpi_comm_world, status, ierr) call mpi_send(sndbuf, cnt, mpi_real, 1, tag, mpi_comm_world, ierr) else call mpi_recv(rcvbuf, cnt, mpi_real, 0, tag, mpi_comm_world, status, ierr) call mpi_send(sndbuf, cnt, mpi_real, 0, tag, mpi_comm_world, ierr) end if call mpi_finalize(ierr) stop end ! Комменьарий, что за программа ! и кто автор   program main_mpi IMPLICIT NONE! упростите себе отладку   include 'mpif.h' integer rank, tag, cnt, ierr, status(mpi_status_size) real sndbuf, rcvbuf   tag = 0 sndbuf = 3.14159 cnt = 1 call mpi_init(ierr) call mpi_comm_rank(mpi_comm_world, rank, ierr) if (rank.eq.0) then call mpi_recv(rcvbuf, cnt, mpi_real, 1, tag, mpi_comm_world, status, ierr) call mpi_send(sndbuf, cnt, mpi_real, 1, tag, mpi_comm_world, ierr) else call mpi_recv(rcvbuf, cnt, mpi_real, 0, tag, mpi_comm_world, status, ierr) call mpi_send(sndbuf, cnt, mpi_real, 0, tag, mpi_comm_world, ierr) end if call mpi_finalize(ierr)   stop end  

5. Условный оператор IF

Условное выполнение блоков операторов (IF THEN ELSE)

В языке Фортран, аналогично другим языкам программирования, имеется конструкция IF THEN ELSE условного выполнения блоков операторов. Простейший вариант такой конструкции имеет вид:

IF( <выражение> ) THEN

<Операторы -- тело блока>

END IF

Здесь <выражение> - логическое выражение, а <тело блока> - последовательность выполняемых операторов (возможно, ни одного). Конструкция работает следующим образом. Если выражение истинно, операторы тела блока выполняются. В противном случае они пропускаются, и выполняется оператор, стоящий сразу за "закрывающей скобкой" ENDIF.

В качестве выражения часто используется «Выражения отношения»

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

Оно имеет вид: Е1 <операция> Е2

где Е1 и Е2 - арифметические выражения, а <операция> - один из следующих знаков операции:

Знак операции Значение операции

F90 F77

==.EQ. (equal to) равно

/=.NE. (not equal to) не равно

>.GT. (greater than) больше чем

>=.GE. (greater than or equal to) больше или равно

<.LT. (less than) меньше чем

<=.LE. (less than or equal to) меньше или равно


Выражение отношения имеет значение "истина", если результаты вычисления арифметических выражений Е1 и Е2 удовлетворяют значению операции.

Пример. Если значение I больше J то, переменные меняются значениями:

IF(I.GT. J) THEN

TEMP = I

I = J

J = TEMP

END IF

 

 

Расширением этой конструкции является добавление альтернативных блоков действий:

 

IF( <выражение> ) THEN

<Операторы -- тело блока>

ELSEIF( <выражение> ) THEN

<Операторы -- тело блока>

ELSE

<Операторы -- тело блока>

END IF

Задание: Решите задачу 1102

Указания:

Данные во входном файле записаны в одну строку, поэтому следует использовать один оператрор READ для чтения всех 2-х чисел.

В оператор чтения READ добавьте через запятую чтение 2-ой переменной.

 

 

6. Логические операции.

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

 

Логический Оператор Операция Приоритет
.NOT. .AND. .OR. .EQV. .NEQV. Отрицание = НЕ Конъюнкция = И Включающая дизъюнкция = ИЛИ Эквивалентность Неэквивалентность Наивысший Средний Средний Низший Низший

 

Пример: (A>B).AND. (A>C) – имеет значение ИСТИНА, тогда и только тогда, когда A – строго наибольшее число из чисел A, B, C

 

Задание: Решите задачу 1103.

Обратите внимание и проверьте свои программы: Вывод заголовка программы должен предшествовать основной РАБОТЕ программы

 

!!!Указания к задачам решаемым на занятии:!!!


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: