СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ

Политехнический институт

Кафедра стандартизации, метрологии и управления качеством

Obrazec.GIF (2550 bytes)

    КУРСОВАЯ РАБОТА

   по дисциплине “ИНФОРМАТИКА

        Вариант 23

    Пояснительная записка

 

 

Руководитель работы                                           Коднянко В.А.

Разработал студент                                                   гр. МТ 17-07 Б

Верминская Т. В.

 

 

 

 

 

 

Красноярск

2017 г.

line2_1.GIF (551 bytes)

 

СОДЕРЖАНИЕ

1.

2.

3.

4.

5.

6.

 

Задание

Метод решения

Алгоритмы и их описание

Программа, процедуры и их описание

Реализация программы на компьютере

Анализ результатов расчета

Список использованной литературы

 

line2_1.GIF (551 bytes)

1. ЗАДАНИЕ

    Задан прямоугольный массив А размером NxM. Необходимо отсортировать его строки в порядке неубывания, а также сформировать одномерный массив из наибольших элементов его строк.

    line2_1.GIF (551 bytes)

     

    2. МЕТОД РЕШЕНИЯ

Решение поставленной задачи основано на последовательном проходе по строкам массива А, начиная с первой строки и заканчивая последней. На каждом i–том шаге этого процесса выполняются следующие действия:

  • i-тая строка массива копируется в рабочий одномерный массив Q,
  • рабочий массив Q сортируется в порядке неубывания с помощью специальной процедуры Sort сортировки одномерного массива,
  • сортированный массив Q копируется обратно в i-тую строку массива А,
  • последний элемент массива Q, который является наибольшим элементом этой строки, копируется в i – тую ячейку массива G наибольших элементов строк массива А.

line2_1.GIF (551 bytes)

 

3. АЛГОРИТМЫ И ИХ ОПИСАНИЕ

Алгоритмическое решение задачи представлено в виде головного алгоритма и двух вспомогательных алгоритмов – процедур.

Блок – схема головного алгоритма показана на рис. 1. Она состоит из девяти блоков. После блока 1, символизирующего запуск алгоритма, в блоке 2 осуществляется ввод исходного числового материала: N, M – размеров массива А и самого массива А. Затем в блоках 3 – 7, которые образуют цикл со счетчиком i, выполняется последовательный проход по строкам массива А. При каждом значении i внутри этого цикла выполняется следующая работа:

  • в блоке 4 выполняется обращение к процедуре Pr, которая копирует i – тую строку массива А в рабочий одномерный массив Q (последний параметр процедуры равен нулю),
  • в блоке 5 массив Q сортруется с помощью процедуры Sort,
  • в блоке 6 отсортированный массив Q с помощью той же процедуры Pr копируется обратно в i – тую строку массива А (последний параметр отличен от нуля),
  • в блоке 7 в i – тую ячейку массива G заносится последний (наибольший) элемент массива Q, т.е. наибольший элемент i-той строки массива А.

По окончании работы цикла в блоке 8 отсортированный массив А и сформированный массив G выводятся. В блоке 9 алгоритм заканчивает работу.

Fig1.GIF (6566 bytes)

Рис.1. Блок – схема головного алгоритма

Блок – схема процедуры Sort, предназначенная для сортировки одномерного массива Z длины n, показана на рис. 2.

Fig2.GIF (4864 bytes)

Рис.2. Блок – схема процедуры Sort

Она состоит из 6 блоков. Формальными параметрами процедуры являются Z – имя одномерного сортируемого массива и N – длина этого массива. Сортировка основана на методе “пузырька”. Процедура использует переменную L как индикатор отсортированности массива. Сначала в блоке 2 индикатор L получает значение нуль. Затем в блоках 3 – 4, образующих цикл, производится проход по парам соседних элементов. В том случае, если какая – либо пара не отсортирована, производится перестановка ее элементов, а переменная L получает значение 1, фиксируя таким способом факт перестановки. В блоке 5 выясняется была ли при проходе по массиву хотябы одна перестановка. Если L=1, т.е. факт перестановок был зафикстровани, управление передается к блоку 2 для нового прохода по массиву. В противном случае массив считается отсортированным и в блоке 6 процедура заканчивает работу.

На рис. 3. приведена блок – схема процедуры Pr, которая использовалась в головном алгоритме. Эта процедура выполняет две функции :

  • копирует i – тую строку массива А в одномерный массив V при k=0,
  • и наоборот при k=1копирует отсортированный массив V в i – тую строку массива А .

Fig3.GIF (5769 bytes)

Рис.3. Блок – схема процедуры Pr

Эта работа производится в цикле, который образован блоками 2 – 5. При k=0 для каждого j из диапазона [1, m] в блоке 4 копирование ведется из А в V. В противном случае в блоке 5, наоборот, V копируется в А. По окончании копирования в блоке 6 процедура заканчивает свою работу.

line2_1.GIF (551 bytes)

 

4. ПРОГРАММА, ПРОЦЕДУРЫ И ИХ ОПИСАНИЕ

На рис. 4 приведен текст процедур Pr, Sort и головной программы.

 

C

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

 

 

 

С

 

 

 

 

 

 

1

 

 

 

 

 

 

2

 

3

 

 

 

 

 

 

2

 

3

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

*

*

 

 

 

*** Текст пpоцедуpы Sort ***

Subroutine Sort(Z,N)

Integer Z(N), R

L=0

Do 2 i = 1, N-1

If (Z(I).LE.Z(i+1)) Goto 2

R=Z(i)

Z(i)=Z(i+1)

Z(i+1)=R

L=1

Continue

If (L)1,3,1

Return

End

*** Текст пpоцедуpы Pr ***

Subroutine Pr(N,M,A,i,Q,k)

Integer Q(M), A(N,M)

Do 1 j = 1,M

If (k) 3,2,3

Q(j)=A(i,j)

Goto 1

A(i,j)=Q(j)

Continue

Return

End

*** Текст головной пpогpаммы ***

Integer A(3,5),G(3),Q(5)

N=3

M=5

Open (1, File='Var23.DAT')

Read (1,*)((A(i,j), j=1,M), i=1,N)

Close(1)

Open (2, File='Var23.RES')

Do 1 i=1,N

Call Pr(N,M,A,i,Q,0)

Call Sort(Q,M)

Call Pr(N,M,A,i,Q,1)

G(i)=Q(M)

CONTINUE

Write(2,3)(A(i,j), j=1,M), i=1,N),

(G(i), i=1,N)

Format(' ',28X,'Отсортированный массив А'/

3(16X,5i8/)/

' ',28X, ' ', ' Массив макс.элементов'/

20X,3i8)

Close(2)

End

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

Рис.4. Текст процедур Sort, Pr и головной программы

Текст процедуры Sort, которая выполняет сортировку одномерного массива Z длины N, расположен в строках 1 – 25. После комментария в строке 2 находится оператор заголовка процедуры, включающий имя и формальные параметры. Далее, в строке 3 расположен оператор описания целочисленного массива Z из N элементов и переменной R, предназначенной для вспомогательных операций сортировки. Процесс сортировки реализуется операторами 4 - 12. Проход по массиву производится в операторах цикла 5 – 11. Перестановка элементов неотсортированной пары выполняется операторами 7 – 9, а фиксация факта перестановки - в операторе 10. Оператор 12 передает управление к оператору с меткой 1 на новый проход при L=1, иначе - на оператор 13 (Return) завершения процедуры после сортировки массива.

Текст процедуры Pr расположен в строках 15 - 25. Заголовок процедуры, который расположен в строке 26, содержит формальные параметры:

  • N, M, A – исходного массива,
  • имя массива Q длины M, который играет роль посредника при передаче данных в процессе сортировки массива А,
  • параметр k, который отвечает за направление передачи данных.

Оператор 27 описывает эти массивы как целочисленные. Передача данных осуществляется в операторах цикла 18 – 23. Заголовок цикла 18 со счетчиком j организует проход по элементам строки массива А с номером i. При k=0 оператор 19 организует передачу управления к оператору 20, который копирует данные из массива А в массив Q. В противном случае управление передается к оператору 22, с помощью которого данные, наоборот, копируются из массива Q в i – тую строку массива А.

Головная программа расположена в строках 26 – 47. Оператор 27 выделяет память под основной массив А, будущий массив максимальных элементов строк G и вспомогательный массив Q. Далее следуют операторы 28 – 29 определения размеров массива А. Оператор 30 окрывает коммуникационный канал 1 и закрепляет его за файлом Var23.DAT ( этот файл будет содержать исходный числовой материал для массива А). Оператор 31 читает по этому каналу числа из файла в массив А, после чего канал 1 закрывается оператором 32. Оператор 33 открывает канал 2 и связывет его с файлом Var23.RES. Этот файл предназначен для вывода в него результатов расчета.

В блоках 34 – 39, образующих цикл, производится последовательный проход по строкам массива А. Оператор 35, содержащий обращение к процедуре Pr, копирует i – тую строку массива А в массив Q. Оператор 36 этот массив сортирует посредством обращения к процедуре Sort. Оператор 37 возвращает отсортированный массив Q обратно в массив А. Оператор 38 наполняет i - тую ячейку массива G максимальным элементом только что отсортированной строки. Операторы Write и Format, расположенные в строках 40 – 45, выводят отсортированный массив А и сформированный массив максимальных элементов строк G по каналу 2 в файл Var23.RES. Оператор 46 этот канал закрывает и оператором 47 программа заканчивает работу.

line2_1.GIF (551 bytes)

5. РЕАЛИЗАЦИЯ ПРОГРАММЫ НА КОМПЬЮТЕРЕ

    Представленная на рис. 4 программа была реализована на IBM – компьютере с использованием программной оболочки RM/FORTE.

    Для этого с ее помощью был создан проект Var23. Затем в проекте было организовано два файла Var23.FOR и Var23.DAT. В первый из них с помощью встроенного в оболочку текстового редактора была занесена программа с процедурами (рис. 4). Во второй – числовой массив, текст которого представлен на рис 5.

    Chi1.GIF (2104 bytes)

    Рис. 5. Текст файла исходных данных Var23.DAT

    Далее программный файл был подвергнут компиляции и линкованию. Приэтом был получен загрузочный модуль VAR23.EXE. Этот файл был направлен на выполнение командой Run Program. В результате работы программы был получен файл результатов Var23.RES

    line2_1.GIF (551 bytes)

    6. РЕЗУЛЬТАТЫ РАСЧЕТОВ И ИХ АНАЛИЗ

Полученный файл результатов расчета был добавлен в проект и затем распечатан командой Copy Var23.RES PRN. Текст этого файла показан на рис. 6.

Chi2.GIF (3377 bytes)

Рис. 6. Текст файла результатов вычислений Var23.RES

Анализ данных рис. 5 и рис. 6 показывает, что в результате вычислений исходный массив содержит строки, которые отсортированы по неубыванию, а массив G действительно состоит из максимальных элементов соответствующих строк массива А.

line2_1.GIF (551 bytes)

ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА

  1. Информатика. Методические указания к выполнению курсовой работы для студентов направления “Технология, оборудование и автоматизация машиностроительного производства”/ Составитель В.А.Коднянко; КГТУ, Красноярск, 1998. 24 с.
  2. Информатика. Использование программных продуктов RM/Forte и Lib для выполнения программ на языке Fortran -77. Методические указания  для студентов направления “Технология, оборудование и автоматизация машиностроительного производства”/ Составитель В.А.Коднянко; КГТУ, Красноярск, 1999. 19 с.
  3. Информатика. Методические указания к самостоятельной работе для студентов направления “Технология, оборудование и автоматизация машиностроительного производства”/ Составитель В.А.Коднянко; КГТУ, Красноярск, 1997. 35 с.
  4. В.Е.Алексеев, А.С.Ваулин, Г.Б.Петрова. Вычислительная техника в инженерных и экономических расчетах. – М. Высш.шк. 1984. 136 с.
</body> </html>