Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Farionova_Fortran

.pdf
Скачиваний:
18
Добавлен:
15.02.2015
Размер:
2.71 Mб
Скачать

ЛАБОРАТОРНАЯ РАБОТА № 5

Образец выполнения задания

Задание 5. Дан двухмерный массив чисел А размерности п×п, которыйнаходитсявфайле"data.txt". Необходимозаменитьвсеотрицательные элементы положительными, если сумма всех элементов массива меньше S, в противном случае все отрицательные элементы уменьшить в два раза. Записать в файл результатов "res.txt" исходный и преобразованный массивы.

Схема алгоритма решения задания 5 приведена на рис. Л5.1. Перед запуском программы необходимо создать и сохранить тек-

стовый файл "data.txt". Формат файла:

–1

5

–8

4

2

7

2

–4

3

15

 

 

Текстпрограммы, реализующейалгоритм, приведенныйнарис. Л5.1:

Program lr5

Integer, parameter :: n=3

Real, dimension (1..n,1..n) :: a Real Sum, s

real I,j Sum=0

Open(5,file='data.txt')

!считывание и суммирование элементов массива do i=1, N

Read(5,*), a(I,1:n) Sum=sum+a(I,j) Enddo

!считывание числа S Read(5,*),s Close(5)

!вывод исходной матрицы в файл

Open(6,file='res.dat',status="new") do i=1, N Write(6,20),(a(I,j),j=1,n)

Enddo Write(6,*)

92

Разработка и реализация программ с использованием файлового типа данных.

20 format(nf2.0) If (sum<s) then

!если сумма элементов меньше S, меняем знак у !отрицательных элементов

do i=1, N do j=1, N

If (a(I,j)<0) then A(I,j)=abs(a(I,j)) else

do i=1, N do j=1, N

If (a(I,j)<0) then A(I,j)=a(I,j)/2

!вывод преобразованной матрицы в файл do i=1, N

Write(6,20),(a(I,j),j=1,n) enddo

20 format(nf2.0) Close(6)

End

До запуска программы создается файл "data.txt", в котором содержатся исходная матрица и параметр S:

–1

5

–8

4

2

7

2

–4

3

15

 

 

Врезультате работы программы должен быть создан файл "res.txt"

впапке проекта программы.

Содержимоефайла"res.txt":

–1

5

–8

4

2

7

2

–4

3

1

5

8

4

2

7

2

4

3

93

 

 

 

ЛАБОРАТОРНАЯ РАБОТА № 5

 

 

 

Начало

 

 

 

 

 

 

Sum = 0

 

 

 

 

 

Открыть файл для чтения data.txt

 

 

 

 

 

I = 1, N

 

 

 

 

 

+

 

 

 

 

 

J = 1,+N

 

 

 

 

 

 

 

 

 

 

 

Ввести aij

 

 

 

 

 

Закрыть файл data.txt

 

 

 

 

Создать файл для записиres.dat

 

 

 

 

 

I = 1, N

 

 

 

 

 

+

 

 

 

 

 

J = 1,+N

 

 

 

 

 

 

 

 

 

 

 

Вывести aij

 

 

 

 

 

Sum < S

+

 

 

 

I = 1, N

 

I = 1, N

 

 

+

 

+

 

 

J = 1, N

 

J = 1, N

 

+

+

+

 

+

ai,j < 0

ai,j < 0

 

 

 

ai,j = ai,j/2

 

 

ai,j

= ai,j

I = 1, N

+

J = 1, N

+

 

Вывести ai,j

 

Закрыть файл res.dat

Конец

 

Рис. Л5.1. Блок-схемырешениязадания5

94

Лабораторная работа № 6

Тема: Разработка и реализация программ с использованием под-

программ и функций.

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

Задания к лабораторной работе

Задание 6.1. Составить программу табулирования функции по варианту задания 3.2 с использованием программного компонента function.

Задание 6.2. Составить программу обработки одномерного массива согласно варианту задания 4.2 с использованием программного ком-

понента subroutine.

Образец выполнения работы

Задание 6.1. Составить программу табулирования функции y = x –1

сиспользованиемпрограммно-

Начало

гокомпонентаfunction. Схе-

ма алгоритма приведена на

Ввод a, b, h

рис. Л6.1, блок-схемафункции

 

f (x) = x 1 – на рис. Л6.2.

Рис. Л6.1. Блок-схемыреализации задания6.1

X = a; n = b a +1

h

 

I = 1, N

Нет

Да

 

Нет Xi>=0 Да

Вывод хi, у

Y = f(xi)

не существует

 

Вывод хi, уi

Xi+1 = xi + h

 

Конец

 

 

95

 

 

 

ЛАБОРАТОРНАЯ РАБОТА № 6

 

 

 

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

 

Начало

Program Lr61

 

Вход

real h, a, b

 

 

 

f (x) =

x 1

integer i,n

 

 

 

real X(50),y(50)

 

ВыходКонец

Write(*,'(a,$)'),'Введите начало про-

 

Рис. Л6.2.

межутка a='

Блок-схема

Read(*,*),a

function f(x)

Write(*,'(a,$)'),'Введите конец про-

 

 

 

межутка b='

 

Read(*,*),b

 

Write(*,'(a,$)'),'Введите шаг табулирования h='

 

Read(*,*),h

 

X(1)=a

 

 

n=int((int(b)-int(a))/h)+1

 

do

i=1,

n

 

If

(x(i)>=0) then

 

Y(i)=f(x(i))

 

Write(*,'(a,i2,a,f5.2,a,i2,a,f5.2)'),'x(',I,')=',x(i),'

 

y(',I,')=',y(i)

 

Else

 

не

Write(*,'(a,i2,a,f5.2,a)'),'x(',I,')=',x(i), ' Y

существует'

 

endif

 

 

x(i+1)=x(i)+h

 

Enddo

 

 

Contains

f(x)

 

Function

 

Real x

 

 

F=sqrt(x)-1

 

End

function f

 

End

 

 

96

 

 

 

Разработка и реализация программ с использованием ...

Результаты работы программы:

Введите начало промежутка a=-2 Введите конец промежутка b=2 Введите шаг табулирования h=0.5 x( 1)=-2.00 Y не существует

x( 2)=-1.50 Y не существует x( 3)=-1.00 Y не существует x( 4)=-0.50 Y не существует x( 5)= 0.00 y( 5)=-1.00

x( 6)= 0.50 y( 6)=-0.29 x( 7)= 1.00 y( 7)= 0.00 x( 8)= 1.50 y( 8)= 0.22 x( 9)= 2.00 y( 9)= 0.41

Задание 6.2. Разработать программу для нахождения произведения положительных элементов одномерного массива размером n с использованием подпрограммы subroutine. Элементы массива считываются из файла. Исходный массив и результат вывести на экран.

Алгоритм основной программы приведен на рис. Л6.3, алгоритм подпрограммы mult для поиска произведения положительных чисел массива – на рис. Л6.4.

Начало

 

Вход

 

I = 1, n

 

 

 

P = 1

 

Вводai

 

 

 

I = 1, n

 

 

 

 

Mult(a, p)

Нет

ai>=0

Да

I = 1, n

 

 

P = p*ai

 

 

 

Выводai

 

 

 

Конец

 

Выход

 

Рис. Л6.3. Блок-схемаосновной

Рис. Л6.4. Блок-схема

программызадания6.2

подпрограммы mult

97

 

 

 

ЛАБОРАТОРНАЯ РАБОТА № 6

 

 

 

 

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

 

Program

lr62;

:: n=10

Integer,

parameter

integer

a(1:n)

 

integer

I,p

 

do

i=1,

n

 

print '(a,i2,a,$)', 'a(',і,')='

read(*,*), a(i)

 

enddo

 

 

call Mult(a,p)

 

Write(*,'(a,i5)')('p=',p)

contains

 

p)

subroutine mult(a,

integer

a(1:n)

 

integer

і,p

 

P=1

i=1,

n

 

do

 

If

(a(i)>0) then

 

P=p*a(i)

 

 

Endif

 

 

enddo

 

 

end

subroutine mult

End

 

 

 

Результаты работы программы:

a( 1)=

4

a( 2)=

-7

a( 3)=

5

a( 4)=

7

a( 5)=

-2

a( 6)=

1

a( 7)=

0

a( 8)=

4

a( 9)=

-9

a(10)=

6

p= 3360

 

98

КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Дайте определение алгоритма и охарактеризуйте его основные свойства.

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

3.Алфавит языка Фортран. Из каких основных элементов состоит языкпрограммированияФортран?

4.Какие типы данных используются в Фортране? Дайте их характеристику.

5.Дайте определение понятия "выражение". Что такое арифметическое выражение? Каковы правила записи и вычисления математическихвыражений?

6.Что такое логическое выражение? Правила записи и вычисления логическихвыражений.

7.Каковприоритетоперацийвлогическом выражении? Представьтетаблицуистинностилогическихопераций.

8.Представьте структуру программы, написанной на языке Фор-

тран.

9.Дайте характеристику базовой управляющей конструкции "следование". Основныеоператорыпрограммыслинейнойструктурой: присваивание, ввод/вывод данных.

10.Дайте характеристику базовой управляющей конструкции "ветвление". ПредставьтеконструкциюиособенностииспользованиявФор- тран-программе оператора условного перехода if.

11.Представьте конструкцию и особенности использования в Фор- тран-программе оператора варианта case.

12.В каких случаях применяется оператор безусловного перехода

goto?

13.Дайте определение базовой управляющей конструкции "цикл". Перечислите основные этапы подготовки и реализации циклических вычислительныхпроцессов.

14.Циклическийвычислительныйпроцесс. Операторциклаdo (бесконечныйцикл). Приведитепримерпрограммнойреализации.

99

КОНТРОЛЬНЫЕ ВОПРОСЫ

15.Циклический вычислительный процесс. Оператор цикла do со счетчиком (или с параметром). Приведите пример программной реализации.

16.Циклический вычислительный процесс. Оператор цикла do while (цикл с предусловием). Приведите пример программной реализации.

17.Вложенные циклы. Задачи, приводящие к использованию вложенныхциклов.

18.Массив как сложный тип данных. Одномерные массивы. Способы описания одномерных массивов

19.Одномерныемассивы. Способыввода/выводаодномерныхмас-

сивов.

20.Типовые задачи, приводящие к необходимости использования одномерных массивов (поиск максимума, минимума, суммы, произведения элементов массива).

21.Массив как сложный тип данных. Многомерные массивы. Способы описания многомерных массивов.

22.Организация ввода/вывода двухмерных массивов.

23.Дайтеопределениепонятияфайл. ЧтотакоевнутреннийивнешнийфайлывФортране?

24.С помощью каких операторов происходит организация работы

сфайлами в Фортран-программе?

25.Дайте характеристику программным единицам, используемым в Фортран-программе.

26.Что такое программная компонента функция? Приведите пример использования в программе.

27.Что такое программная компонента подпрограмма? Приведите примериспользованиявпрограмме.

28.Формальныеифактическиепараметрыподпрограммифункций.

29.Что такое локальные и глобальные переменные? Покажите на примере особенности работы в программе локальных и глобальных переменных.

100

СПИСОК ЛИТЕРАТУРЫ

1.Алгазин, С. Д. Программирование на Visual Fortran [Текст] / С. Д. Алгазин, В. В. Кондратьев. – М. : Диалог МИФИ, 2008. – 472 с.

2.Артемов, И. Л. FORTRAN: основы программирования [Текст] / И. Л. Артемов. – М. : Диалог МИФИ, 2007. – 304 с.

3.Бартеньев, О. В. ФОРТРАН для студентов [Текст] / О. В. Бартеньев. – М. : Диалог МИФИ, 1999. – 400 с.

4.Бартеньев, О. В. Современный Фортран [Текст] / О. В. Бартеньев. – М. : Диалог МИФИ, 1999. – 400 с.

5.Голыничев, В. Н. Практикум по современному Фортрану в курсе Информатики [Текст] : учеб. пособие / В. Н. Голыничев, В. Ф. Звягин, Н. А. Яньшина. – СПб. : Санкт-Петербург. гос. ин-тточноймехани- кииоптики(Техническийуниверситет), 2010. – 134 с.

6.Немнюгин, С. А. Современный Фортран [Текст] / С. А. Немнюгин, О. Л. Стесик. – СПб. : СПбБХВ, 2003. – 496 с.

7.Рыжиков, Ю. И. Программирование на Фортране Power Station для инженеров [Текст] / Ю. И. Рыжиков. – СПб. : Корона принт, 1999. – 160 с.

8.Рыжиков, Ю. И. Современный Фортран [Текст] / Ю. И. Рыжиков. – СПб. : Корона принт, 2004. – 288 с.

9.ФОРТРАН 90. Международный стандарт [Текст] : [пер. с англ.].

М. : Финансы и статистика, 1998. – 416 с.

101

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]