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

23 / 31201512-23

.doc
Скачиваний:
20
Добавлен:
31.05.2015
Размер:
378.88 Кб
Скачать

14

Министерство образования Республики Беларусь

Белорусский национальный технический университет

Строительный факультет

Кафедра "Строительная механика"

Контрольная работа № 2

по дисциплине "Информатика"

на тему "Программирование алгоритмов с линейной,

разветвляющейся и циклической структурами

на алгоритмическом языке Фортран"

Выполнила: студентка Серехан В.С.

группа 31201512

зачетная книжка № 31201512-23

Проверил:

Минск 2013

Содержание

1. Задание 1

1.1. Блок-схема алгоритма задачи

1.2. Программный код проекта

1.3. Экранная форма с результатами расчета

2. Задание 2

2.1. Блок-схема алгоритма задачи

2.2. Программный код проекта

2.3. Тестовый пример и экранная форма с результатами расчета

Литература

1. Задание 1

Условие. Задана функция . На оси X задан участок [-19.2; -4.5], который разбивается на N–1 отрезков с одинаковым шагом , .

Разработать алгоритм и приложение, в котором необходимо:

а) предусмотреть вывод на экран фамилию студента, шифр и номер задания;

б) вычислить шаг и вывести значение на экран;

в) вычислить и вывести на экран в виде таблицы номер, абсциссу и ординату каждого расчетного узла;

г) вычислить и вывести на экран значения, при которых функция на указанном интервале достигает минимума и максимума.

1.1. Блок-схема алгоритма задачи

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

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

Блок-схема алгоритма задачи приведена на рис. 1.1.

Прямая соединительная линия 51Блок-схема: знак завершения 4

n=14; a= -19.2; b= -4.5;

Прямая соединительная линия 60

dx= (b-a)/(n-1)

Прямая соединительная линия 60

Прямоугольник с двумя вырезанными соседними углами 9

Прямая соединительная линия 60

y=fn(x)

Прямая соединительная линия 60

Ромб 54

да

AutoShape 187AutoShape 188

AutoShape 189

ymax=y xmax=x

xmax=x

xmax=x

xmax=x

AutoShape 197

Прямая соединительная линия 79

да

Ромб 54 AutoShape 205

AutoShape 194AutoShape 195

AutoShape 199

ymin=y xmin=x

xmax=x

xmax=x

xmax=x

AutoShape 200

Прямоугольник с двумя вырезанными соседними углами 9

AutoShape 201AutoShape 202

Блок-схема: документ 78

AutoShape 204

AutoShape 203

Рисунок 1.1 Блок-схема алгоритма задачи

1.2. Программный код проекта

program zadanie1

!blok opicaniya peremennih

real a,b,dx,x,y

real ymin,ymax,xmin,xmax

integer n,i

!blok opicaniya peremennih

!opisanie funkcii

INTERFACE

Function fn(k)

real,intent(in) :: k; real fn

end Function fn

END INTERFACE

!opisanie funkcii

!konstanti

n=14; a=-19.2; b=-4.5;

x=a; i=1;

!konstanti

dx= (b-a)/(n-1); !nahojdenie shaga

xmax=a; ymax=fn(x) !pervonach max

xmin=a; ymin=fn(x) !pervonach min

!vivod lichnih dannih

print *, 'Serehan V.S '

print *, 'Shifr 31201512-23'

print *, 'Zadanie 1'

print *, 'Shag =',dx

print *, 'Znacheniya funkcii '

print *, ' i', ' x', ' y'

!vivod lichnih dannih

!poshagovoe opredelenie i vivod funkcii

do while(x <= b)

y=fn(x)

print *, i, x, y

!poshagovoe opredelenie i vivod funkcii

!opredelenie max

if(y>ymax) then

ymax=y

xmax=x

end if

!opredelenie max

!opredelenie min

if(y<ymin) then

ymin=y

xmin=x

end if

!opredelenie min

x=x+dx !sled znach x

i=i+1 !sled znach i

end do

!vivod rezultata na ekran

print *, 'xmax=',xmax, 'ymax=',ymax

print *, 'xmin=',xmin, 'ymin=',ymin

!vivod rezultata na ekran

read*

end program zadanie1

!Opredelenie funkcii

Function fn(k)

real,intent(in) :: k; real fn

fn =(sin(0.2*(abs(k))))**3 + (7+0.1*(k**2))**(1/3)

end Function fn

!Opredelenie funkcii

1.3. Экранная форма с результатами расчета

Рисунок 1.2 Форма с результатами расчета

2. Задание 2

Задание 2. Разработать алгоритм и приложение на языке Фортран, позволяющее для последовательности элементов массива M с использованием циклов вычислить значение Z, определяемое из таблицы. Алгоритм представить в виде блок-схемы. Предусмотреть вывод на экран фамилию студента, шифр и номер задания.

Где:

А – произведение отрицательных элементов

B – количество элементов со значениями из интервала [K,

L]

C – среднее арифметическое N последних элементов

2.1. Блок-схема алгоритма задачи

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

Блок-схема алгоритма задачи приведена на рис. 2.1.

Блок-схема: знак завершения 3

Прямая соединительная линия 6

Блок-схема: данные 7

Прямая соединительная линия 8

a=1

AutoShape 219

Прямоугольник с двумя вырезанными соседними углами 9

да

Блок-схема: решение 75

AutoShape 234AutoShape 235

AutoShape 238

a=a*mas(i)

AutoShape 236AutoShape 237

AutoShape 233AutoShape 40Прямая соединительная линия 125

Блок-схема: решение 88

нет

Прямая соединительная линия 126

да

AutoShape 234 AutoShape 235 Прямая соединительная линия 111 Прямая соединительная линия 112

b=0

Eror!!!!!!!

AutoShape 238Прямая соединительная линия 113

Прямоугольник с двумя вырезанными соседними углами 9

Прямая соединительная линия 127

Блок-схема: решение 34

да

Прямая соединительная линия 128Прямая соединительная линия 129

b=b+1

Прямая соединительная линия 131

Прямая соединительная линия 130

AutoShape 212

Прямая соединительная линия 132

c=0; dx=15-q+1

Прямая соединительная линия 133

Прямоугольник с двумя вырезанными соседними углами 9

Прямая соединительная линия 134

c=c+mas(i)

Прямая соединительная линия 135

AutoShape 212

Прямая соединительная линия 136

c=c/q

z=c+a/10+b/(10+a)

Прямая соединительная линия 114 Прямая соединительная линия 119 Прямая соединительная линия 120 Блок-схема: документ 147

Прямая соединительная линия 118

Прямая соединительная линия 116 AutoShape 242 Прямая соединительная линия 117

Блок-схема: знак завершения 149

Р

исунок 2.1 Блок-схема алгоритма задачи

2.2. Программный код проекта

program zadanie2

!blok opicaniya peremennih

real a,b,dx,z,k,l,c,q

integer i

integer, parameter :: n = 15

real :: mas(n)

!blok opicaniya peremennih

!vivod lichnih dannih

print *, 'Serehan V.S '

print *, 'Shifr 31201512-23'

print *, 'Zadanie 2'

!vivod lichnih dannih

!vvod dannih

do i = 1, 15

print*,'vvedite elementi masiva',i

read(1, *) mas(i)

end do

print*,'Vvedite nachalo intervala k'

read*,k

print*,'Vvedite konec intervala l'

read*,l

print*,'Vvedite n'

read*,q

!vvod dannih

!nayti a-proizv otric elem

a=1

do i = 1, 15

if(mas(i)<0) then

a=a*mas(i)

end if

end do

!nayti a-proizv otric elem

if (a==(-10)) then !proverka deleniya na nol

print*, 'Eror!!!!!!! delenie na nol'

else

!b- kolich elem iz intervala

b=0

do i = 1, 15

if(mas(i)>=k .and. mas(i)<=l ) then

b=b+1

end if

end do

!b- kolich elem iz intervala

!opredelenie c

c=0

dx=15-q+1

do i = dx, 15

c=c+mas(i)

end do

c=c/q

!opredelenie c

!nahojdenie i vivod resultata

z=c+a/10+b/(10+a)

print*,'rezultat z=',z

!nahojdenie i vivod resultata

end if

read*

end program zadanie2

2.3. Тестовый пример и экранная форма с результатами расчета

Зададим 15 элементов массива:

-5, 3, 8, -0.3, 5, 3, 0, 1, -0.2, 9.3, 5, 8, 0, 1, -7

K=-3; L=5; N=5.

Рисунок 2.2 Форма разработанного приложения

Литература

1. ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения.

2. Задания и требования к выполнению контрольной работы № 1 по дисциплине «Информатика» для студентов заочной формы обучения // Автор: А.В. Стрелюхин – Минск: БНТУ, 2012. – 19 с.

3. Трепачко В.М. Краткий курс программирования на алгоритмическом языке Fortran Power Station: методическое пособие по дисциплине "Информатика" для студентов специальности 1-70 02 11 "Промышленное и гражданское строительство" – Мн.: БНТУ, 2006. – 113 с.

4. Павловец В.В. Информатика: программирование на Фортране. – Мн.: Асконто, 2006. – 205 с.

Прямая соединительная линия 124

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