Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Obschy_kurs / Fortran / Metod_Lr3_Fortran.doc
Скачиваний:
56
Добавлен:
21.02.2016
Размер:
188.93 Кб
Скачать
  1. Программирование задач разветвляющейся структуры

Рассмотрим на примерах основные этапы решения задач разветвляющейся структуры.

Пример№1. Найти наименьшее значение из трех произвольных чисел.

Введем обозначения: a, b и c – три произвольных числа; Мин – наименьшее из них.

I Математическое описание задачи

Дано: a, b, c

Основные зависимости, необходимые для решения задачи:

Mин=a; (1)

Mин=b; (2)

Mин=c. (3)

Ограничения:

Зависимость (1) выполняется, если а – наименьшее;

Зависимость (2) выполняется, если b – наименьшее;

Зависимость (3) выполняется, если c – наименьшее.

Найти: Mин.

II Схема алгоритма представлена на рис.2.

Да

Нет

Структура "ЕСЛИ".

Из двух значений aиbвыбирается меньшее.

8

7

9

Структура "ОБХОД"

Для определения окончательного результата меньшее из aиbсравнивается сс.

Вывод в файл

Рис. 2. Пример схемы алгоритма разветвленной структуры

III. Таблица идентификации переменных и их типов

Математическая переменная

a

b

c

Mин

Машинная переменная

a

b

c

Min

Тип

real

IV. Текст программы на языке Фортран 90/95

! Пример №1 программы с разветвляющимся алгоритмом

! Нахождение минимального значения из трех чисел

! Выполнил ст. 219 гр. Иванченко А. Е.

Program Prog_min

implicit none

! Описание переменных

real :: a, b, c, Min

open (5, file='Rezult.txt') ! Файл 'Rezult.txt' связывается с логическим

! устройством с номером 5

print *, 'a, b, c ?' ; read *,a, b, c

if_1: if (a<b) then ! Нахождение наименьшего из двух чисел а и b

Min=a

else

Min=b

end if if_1

if_2: if (c<Min) then ! Нахождение наименьшего из c и Min

Min=c

endif if_2

write (5,*)'Исходные числа' ! Вывод в файл Rezult.txt

write (5,*) 'a=',a, 'b=', b, 'c=',c ! исходных чисел и

write (5,*) 'Наименьшее из них', Min ! минимального из них

close (5) ! Закрытие файла

end Program Prog_Min

Протокол решения задачи.

a, b, c?! подсказка о вводе значений a, b, c

10.5 25 5! значения, введенные с клавиатуры

Press any key to continue! Вывод системного сообщения

На экране нет выходных данных так как они выведены в файл с именем Rezult.txt

Содержимое файла 'Rezult.txt':

Исходные числа:

a= 10.50000 b= 25.00000 c= 5.000000

Наименьшее из них 5.000000

Пример№2. Вычислить значения y по одной из следующих формул в зависимости от значения х, вводимого из заданных диапазонов:

В качестве результата программа должна выводить:

- вводимое значение х;

- результат вычисления y;

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

Введем обозначения:

х – вводимое данное; y – вычисляемое значение; N – номер формулы.

I Математическое описание задачи

Дано: х

Основные зависимости, необходимые для решения задачи:

; (1)N=1; (2)

; (3) N=2; (4)

y= sin(x) (5) N=3; (6)

Ограничения:

зависимости (1) и (2) выполняются, если 3  х 10;

зависимости (3) и (4) выполняются, если x>10;

зависимости (5) и (6) выполняются, если x<3.

Найти: значение y для произвольных значений х.

II Схема алгоритма приведена на рис. 3.

1

2

3

Да

Нет

4

Вход

3  х 10

Нет

Да

7

11

5

10

6

9

8

12

13

Рис. 3. Пример схемы алгоритма разветвленной структуры

III. Таблица идентификации переменных и их типов

Математическая переменная

x

y

N

Машинная переменная

x

y

N

Тип

real

integer

IV. Текст программы на языке Фортран 90/95

! Пример №2 программы с разветвляющимся алгоритмом

! Вычисление y(x)

! Выполнил ст. 219 гр. Иванченко А. Е.

Program Prog_y

implicit none

real ::x, y

integer ::N

! При открытии файла параметр position='append' позволяет дописывать

! данные в файл при повторном запуске программы на выполнение

open (5,file='out_xy.txt', position='append')

print *,'x=?'; read *, x

if_1: if (x ≥ 3 .AND. x ≤ 10) then

y=5.*cos(x)**3

N=1

else if (x>10) then

y=sqrt(x)

N=2

else

y=sin(x)

N=3

endif if_1

write (5,*) 'При х=',x

write (5,*) 'y=',y, 'Формула №', N

close(5)

end Program prog_y

Результаты, записанные в файл с именем out_xy.txt

При = 2.000000

y= 0.9092974 'Формула № 3

При х= 12.00000

y= 3.464102 'Формула № 2

При х= 5.000000

y= 0.1141233 'Формула № 1

Содержание отчета по лабораторной работе

  1. Номер, тема и цель лабораторной работы.

  2. Краткие сведения из теории:

- понятие разветвляющегося вычислительного процесса;

- базовые структуры "ЕСЛИ" и "ОБХОД";

- условия: простые и сложные;

- операторы разветвления.

  1. Условия заданий выданных преподавателем.

  2. Математическое описание задач.

  3. Схемы алгоритмов.

  4. Тексты программ.

  5. Листинги с текстом программ (с комментариями) и результатами выполнения.

  6. Анализ результатов.

Контрольные вопросы.

  1. Какой вычислительный процесс называется разветвляющимся?

  2. Какие базовые структуры алгоритмов используются в разветвляющихся вычислительных процессах?

  3. Назначение базовой структуры "ЕСЛИ".

  4. Назначение базовой структуры "ОБХОД".

  5. В чем отличие логических выражений от арифметических?

  6. Что такое простое условие? Приведите примеры.

  7. Что такое сложное условие? Приведите примеры.

  8. Операторы отношений и правила их записи.

  9. Логические операторы и правила их записи.

  10. Назначение и выполнение оператора if … then …endif

  11. Назначение и выполнение оператора if … then …else …endif.

  12. Назначение и выполнение оператора if … then …else if.

  13. Назначение и выполнение оператора select case.

  14. Какой тип выражения (селектора) используется в операторе select case?

  15. Правила записи списков констант в операторе select case.

  16. В каких случаях выполняются действия, записанные в ветвиcase default?

  17. С помощью какого оператора реализуется структура "ЕСЛИ"?

  18. С помощью какого оператора реализуется структура " ОБХОД "?

  19. Как вывести результаты в файл?

  20. Назначение оператора open.

  21. Назначение оператора close.

13

ст. преп. каф. ЭВМ Скабалланович Т.И.

Соседние файлы в папке Fortran