Алгоритмізація та програмування задачі сортування даних
Міністерство освіти та науки
України
Національний технічний
університет України
Київський політехнічний
інститут
Розрахункова робота
з дисципліни:
Обчислювальна математика та
програмування
На тему:
Алгоритмізація та
програмування задачі сортування даних
Виконав: Савчук В.В.
Студент групи ХН-11
Перевірила: Абрамова A.O.
Київ 2012
Зміст
Завдання
Вступ
Теоретичні відомості
Блок схема
Програма
Результати роботи
програми
Список використаної
літератури
В масиві D(n*n) з
довільними значеннями за допомогою методу вибору мінімального елементу
відсортувати у порядку зростання елементи що знаходяться на побічній діагоналі
(зліва направо). Підрахувати та навести кількість перестановок. Масив D вивести
на лист MS Excel до та після перетворень. Навести проти кожного рядка елемент
головної діагоналі, що належить йому.
Вступ
В даній розрахунково-графічній роботі я розробила алгоритм
програми, яка знаходить у стовпчиках мінімальні елементи, та переставляє
стовпці так, щоб вони відповідали порядку спадання найменших елементів кожного
із стовпців та виводить кількість перестановок. Це створюється за допомогою
сортування та окремих процедур
В стандартних модулях існують
процедури загального призначення, які можуть бути викликані з будь-якого місця
в програмі. Процедури загального призначення близькі до внутрішніх операторів
та функцій. В Visual Basic вони викликаються за іменем, можуть мати аргументи і
кожна з них виконує конкретні дії. Процедури загального призначення дозволяють
економити час, роблять програми більш компактними, зручними в перегляді
(прочитанні), спрощують роботу програм.
Теоретичні
відомості
В стандартному модулі можна створити
три види процедур загального призначення:
. Процедури типу Function (функція).
Такі процедури викликаються з інших процедур. Вони можуть мати аргументи, через
які одержують вхідні значення також повертати значення у вигляді імені.
Зазвичай використовуються для обчислень.
. Процедури типу Sub (підпрограми).
Вони також викликаються за ім'ям з інших процедур, можуть мати аргументи,
одержувати вхідні значення, виконувати відповідні дії і повертати значення. На
відміну від функцій процедури Sub використовуються для одержання або обробки
вхідних даних і відображення вихідних даних або встановлення властивостей
значень.
. Процедури типу Property
(Властивість). Такі процедури використовуються для створення властивостей, які
визначаються користувачем у програмах, і маніпулювання ними. Це корисно, коли
вимагається створити засіб, який дозволяє використовувати засоби управління
Visual Basic.
Щоб набрати будь-яку процедуру
загального призначення необхідно:
У меню Разработать вибрати команду
Добавить модуль (Add Module).
Відкриється вікно Add Module. Вибрати
Новый та натиснути кнопку Open (Открыть). У вікні Code з'явиться новий
стандартний модуль.
Ввести в стандартному модулі текст
процедури.
ПРОЦЕДУРИ ТИПУ FUNCTION
Синтаксис:ім'я (х1 [As тип], х2 [As
тип],... хn [As тип]) As Тип
блок операторів
ім'я = А
[оператори ]
[Exit Function ]Function
де ім’я - ідентифікатор функції;, х2,
х3..., хn - формальні параметри, які можуть бути:
) змінними;
) масивом;Function - достроковий
вихід із процедури.
ім'я (а1,а2, ...,аn),
де а1, а2,..., аn - фактичні
аргументи.
Фактичними аргументами можуть бути:
· змінні (прості та з
індексами);
· масив;
· константа;
· арифметичний вираз.
· Дія:
· При зверненні до процедури:
· 1) формальні параметри
визначаються фактичними аргументами;
· 2) виконується процедура, в
якій ім’я приймає значення;
· 3) значення передається в
головний модуль.
ПРОЦЕДУРИ ТИПУ SUB
Синтаксис:ім'я (х1 [As тип], х2 [As
тип],... хn [As тип])
блок операторів
[Exit Sub ]Sub
де ім’я - довільний ідентификатор
процедури;, х2, х3,..., хn - формальні параметри, які умовно поділяються на 2
групи:
· параметри, що визначаються
фактичними аргументами (при звернені до процедури)
· параметри, що визначають
фактичні аргументи (після виконання процедури) і ті і інші можуть бути:
) змінною;
) константою;
) арифметичним виразом.Sub -
достроковий вихід з процедури.
Звернення до процедури - функції
здійснюється за допомогою оператора Call
Синтаксис:ім'я(а1,а2, ...,аn),
де а1, а2,...,аn - фактичні
аргументи.
Сортування масиву
Метою сортування масиву даних є їх упорядкування у
відповідності до заданої умови. Найбільш частою умовою сортування даних є їх
розташування за зростанням або за спаданням.
Типові алгоритми сортування:
Метод бульбашки
Ідея методу бульбашки полягає в послідовному порівнянні двох
сусідніх елементів масиву. Якщо ці елементи не відповідають умові сортування,
то їх значення міняються місцями. Перегляд елементів масиву виконується стільки
разів, скільки потрібно для отримання повністю відсортованого масиву.
Метод вибору
Цей алгоритм сортування полягає у пошуку в масиві найбільшого
(найменшого) елементу та в переміщенні його в початок або в кінець масиву.
Потім процедура повторюється для інших елементів масиву за винятком елементу
«вже встановленого на своє місце»
алгоритм сортування мінімальний елемент
Блок-схема
Код програми
ExplicitРозрахункова_робота()i As Integer, j As Integer, n As
Integer, c As String, a As Integer, b As , nomer As Integer, r As Integer, min
As Integer, k As Integer= MsgBox("Очистити лист?", vbYesNo + vbQuestion,
"Варіанти
виведення результату")c = vbYes Then Call
cls"d:/not.txt" For Output As #1= InputBox("Введіть розмір
матриці", "Введення")f(n, n) As Integer, t(n) As
Integerbform(f(), n, i, j)("a1").Select(1, n / 2).Select.Value =
"Вихідний масив"#1, "Вихідний масив".Offset(0, n / 2 +
4).Range("A1").Select.Value = "Елементи головної
діагоналі"(2, 2).Selectfprint(f(), n, i, j, a)(Cells(2, 2), Cells(n + 1, n
+ 1)).SelectГраниціposhuk(i, j, f(), n, t())= ysort(n, t(), i, nomer, k, a, b,
min, r)(n + 3, 2).Select.Value = "Кількість перестановок
елементів"#1, " Кількість перестановок елементів ".Offset(1,
0).Range("A1").Select.Value = k#1, k(n + 5, n / 2).Select.Value =
"Кількість перестановок елементів"#1, " Кількість перестановок
елементів".Offset(0, n / 2 + 4).Range("A1").Select.Value =
" Масив після перетворень"(n + 6, 2).Selectfprint(f(), n, i, j,
a)(Cells(n + 6, 2), Cells(2 * n + 5, n + 1)).SelectГраниці(n + 5, n +
2).Select= n + 2= n + 5i = 1 To n= a - 1= b + 1(b, a).Select.Interior.Color =
2551.Value = t(i).Offset(0,
1).Range("A1").Select("a1").SelectSubSub bform(f() As
Integer, n, i, j)Timeri = 1 To nj = 1 To n(i, j) = CInt(Rnd * 100 - 50)SubSub
fprint(f() As Integer, n, i, j, a)i = 1 To nj = 1 To n= f(i, i)#1, f(i,
j),.Value = f(i, j).Offset(0, 1).Range("A1").Select#1,.Offset(0,
2).Range("A1").Select.Value = a.Offset(0,
-2).Range("A1").Select.Offset(1,
-n).Range("A1").SelectSubSub poshuk(i, j, f() As Integer, n, t() As
Integer)i = 1 To n= n - i + 1(i + 1, j + 1).Select.Interior.Color = 2551(i) =
f(i, j)SubSub Границі().Borders(xlEdgeLeft).Weight =
xlMedium.Borders(xlEdgeRight).Weight = xlMedium.Borders(xlEdgeBottom).Weight =
xlMedium.Borders(xlEdgeTop).Weight =
xlMedium.Borders(xlInsideHorizontal).Weight =
xlThin.Borders(xlInsideVertical).Weight = xlThinSub
Sub
cls().Select.ClearContents.Borders(xlDiagonalDown).LineStyle =
xlNone.Borders(xlDiagonalUp).LineStyle = xlNone.Borders(xlEdgeLeft).LineStyle =
xlNone.Borders(xlEdgeTop).LineStyle = xlNone.Borders(xlEdgeBottom).LineStyle =
xlNone.Borders(xlEdgeRight).LineStyle =
xlNone.Borders(xlInsideVertical).LineStyle =
xlNone.Borders(xlInsideHorizontal).LineStyle = xlNone.Interior.Pattern =
xlNone("a1").SelectSubysort(n, t() As Integer, i, nomer, k, a, b,
min, r)= 0i = 1 To n - 1= minimal(t(), i, min, nomer, r, n)i <> nomer
Then= t(i)= t(nomer)(nomer) = a(i) = b= k + 1If= kFunctionminimal(t() As
Integer, i, min, nomer, r, n)= t(i)= ir = i + 1 To nt(r) < min Then= t(r)=
rIf= nomerFunction
Результати роботи програми:
Список використаної літератури
1. Лекції
з курсу інформаційних технологій
2. <http://www.msoffice.nm.ru>
. <http://www.mini-soft.ru/>
. Басков Н.Н.
програмування в середовищі VBA