Смекни!
smekni.com

Практичні аспекти створення програмного забезпечення (стр. 1 из 2)

Реферат

Курсова робота, 28 с., 2 мал., три джерела.

Розв’язок задачі про призначення мінімального вибору.

У роботі описані процес і результати розробки програмного засобу. В процесі розробки програмного засобу отримана цілком працездатна програма.

Робота програмного засобу можлива в операційній системі MS DOS на IBMPC-сумісних комп’ютерах.

Програмний засіб повинен визначати оптимальний варіант об’єднання ЕОМ в мережі, щоб час розв’язку був мінімальним.


Зміст

Вступ

Аналіз задачі, що вирішується

Вхідні дані

Вихідні дані

Вибір мови програмування

Опис роботи програми

Опис творчого процесу рішення задачі

Опис процедур

Лістинг програми

Керівництво користувача

Технічні вимоги до використання

Висновок

Довідкова література


Вступ

Розвиток і широке поширення засобів обчислювальної техніки в останні десятиліття послужило поштовхом до розробки програмного забезпечення різного рівня складності та різного за призначенням.

Для придбання вмінь та навичок розробки програмного забезпечення в процесі навчання вивчається предмет “Алгоритмічні мови та програмування”. Курсова робота є підсумком отриманих знань під час навчання.

Курсова робота “Розв’язок задачі про призначення” розроблена на алгоритмічній мові програмування Turbo Pascal з використанням графічного інтерфейсу та методів математичної обробки інформації.

Програма використовується для знайдення оптимального розподілу задачі по мережі, таким чином, щоб час розв’язку був мінімальним.

Отже, тема курсової роботи “Розв’язок задачі про призначення” носить практичний характер і є досить актуальною.


Аналіз задачі, що вирішується

Розробка розв’язку задачі про призначення мінімального вибіру.

Потрібно, щоб програма призначила кандидатів таким чином, щоб сумарна збитковість була мінімальною.

Одержуючи від користувача певну дію, програма повинна зчитати дані з файлу або вони повинні бути введені користувачем. Після введення користувач повинен вибрати: записувати результат у файл чи виводити його на екран.

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

Вхідні дані

Вхідними даними для даного програмного засобу є матриця вагів, яка зчитується з файлу, або кожен елемент якої вводиться власноруч.

Вихідні дані

Програма обчислює розподіл задач в мережі об’єднання між машинами ЕОМ, а також рахує і виводить на екран оптимальний варіант.

Вибір мови програмування

В даний час ми є свідками бурхливого розвитку обчислювальної техніки і її упровадження в багатьох сферах людської діяльності. Особливо чітко ці тенденції виявляються, коли мова заходить про персональний ЕОМ.

Інтерес до персональних комп'ютерів постійно росте, а коло їх користувачів безупинно розширюється. У число користувачів ПЕОМ втягують як новачки в комп'ютерній справі, так і фахівці з інших класів ЕОМ.

Хоча на ПЕОМ можуть використовуватись багато різних мов програмування (Бейсік, Паскаль, C++, Асемблер), використання мови програмування Турбо Паскаль найбільш еффективне.

Мова Бейсік входить до складу програмного забезпечення майже усіх ПЕОМ, що випускаються в дійсний час. Розроблювачі ПЕОМ, як правило, включають у реалізовану версію мови засоби, що дозволяють використовувати всі можливості, надані апаратурою конкретної ПЕОМ. Завдяки цьому для користувача, який не є професійним програмістом (а таких користувачів ПЕОМ більшість), Бейсік виконує роль базової мови, подібно мові Асемблер для професійного програміста.

Мова C++ - універсальна мова загального призначення, область додатків якої - програмування систем у самому широкому змісті. Крім цього С++ успішно використовується як у багатьох додатках, так і в могутніх операційних системах. Реалізація C++ здійснена для машин у діапазоні від найпростіших персональних комп'ютерів до самих могутніх суперкомп'ютерів і для всіх операційних систем.

Мова Асемблер - мова, найбільш близька до машинної. Вона дозволяє програмісту найближче познайомитися з машиною (на відміну від мов програмування високого рівня), і тому вивчення Асемблера означає також вивчення самого мікропроцесора 8086. Як правило програма, написана на Асемблері, виконується набагато швидше програми, написаної на будь-якій іншій мові. Звичайно програми на Асемблері виконуються в 2-3 рази швидше, ніж еквівалентні програми С++ чи Паскаля, і в 15 і більше разів швидше, ніж програми, покроково інтерпритуємі Бейсіком. Асемблерні програми також значно менші за розміром.

Програми на Асемблері відкривають програмісту повний доступ до можливостей комп'ютера.

Мова Турбо Паскаль - це одна з найпоширеніших мов програмування. Вона розроблена фірмою "Борланд" як діалект стандартної мови Паскаль, але завдяки своїй популярності сама стала стандартом мови програмування.

Найважливішими перевагами мови Турбо Паскаль є невеликий розмір компілятора, висока ступінь відповідності стандартному Паскалю, дуже швидка компіляція програм, об'єднання компілятора з інтерактивним екранним редактором, попередження про помилки на рівні вихідної програми, велика бібліотека підпрограм і корисні розширення, що спрощують системне програмування.

Але найголовнішим є те, що мова Турбо Паскаль підходить для навчання починаючих програмістів гарному стилю програмування.

Опис роботи програми

Програма розроблена у середовищі програмування Турбо Паскаль. Вона призначена для свого використання операційною системою MS DOS. До неї підключені стандартні бібліотеки Турбо Паскаля: crt, graph та dos.

На початку роботи програми на екрані з’являється головне меню, яке містить кнопки “Данные”, “Результат” и “?”. При натисненні кнопки “Данные” на екрані з’являються підпункти “Из файла”, “Вручную” та “Выход”. Користувач обирає метод введення матриці вагів – зчитування її з файлу Input.txt чи введення власноруч. Користувач виходить з програми, вибравши підпункт “Выход”. “Результат” складається з підпунктів “На экран” та “В файл”. Обравши один з цих підпунктів, користувач автоматично обирає, як саме виводити результати – на екран чи записавши їх у файл Output.txt відповідно. Пункт меню “?” містить лише підпункт “Справка”, який містить довідку про програму та її автора.


Опис творчого процесу рішення задачі

Користувач може керувати програмою за допомогою меню. Структурна схема меню представлена на мал.1.


Мал.1.

Алгоритм роботи програми приведений на мал.2.



Мал.2.

Опис процедур

procedure Init

Ініціалізація кнопки меню.

Вхідін дані - координати кнопки.

procedure Show

Виведення на екран кнопки меню.

Вхідні дані - колір.

procedure ChoiceMein

Вибір в головному меню.

Вхідні дані - номер виділеної кнопки.

procedure Mein

Виведення на екран головного меню.

procedure ShowAll

Виведення підменю.

Вхідні дані - номер підменю.

procedure ChoiceM

Вибір у підменю.

procedure PHelp

Виведення допомоги.

procedure MsgError

Виведення повідомлення про помилку.

Вхідні дані - рядок повідомлення.

procedure InitMatrix

Ініціалізація масиву з координатами кнопок.

Вхідні дані - потрібний пункт меню.

procedure ChoiceResult

Перевірка натиснутої кнопки меню і виконання відповідної дії.

Вхідні дані - номер кнопки меню.

Лістинг програми:

Program Lenna;{iм"я програми}

Uses crt, dos, graph ;{пiдключаємо модулi}

Const MaxMenuItems = 10;{максимальна кiлькiсть пунктiв меню}

GM = MAXINT;{"нескiнченно велике число"}

MAXN = 10;{максимальна кiлькiсть комп"ютерiв у мережi}

Const Huge = MaxInt;{те саме що i ГМ}

Type MyArray = Array[1..MaxN, 1..MaxN] of Real; {тип масиву для розрахункiв}

MySimpleArray = Array[1..MaxN] of Real; {тип масиву для розрахункiв}

Type ProcedureType = Procedure;{процедурний тип}

Type ProcedurePointer = ^ProcedureType; {покажчик на процедурний тип (для меню) }

Type TMenuItem = Record{тип пункту меню}

Caption : String;{текст пункту (назва) }

Action : ProcedurePointer; {покажчик на процедуру}

Selected: Boolean;{пункт видiленоi}

end;

{загальний опис структури меню та короткий довiдник}

Type TMenu = Object {об"єкт меню}

Items: Array [ 1..MaxMenuItems ] of TMenuItem;{пукти}

ItemsCount: Integer;{кiлькiсть пунктiв}

Active: Boolean;{меню активнеi взагалi це поле не вик.}

Procedure AddItem(Caption: String; Action: ProcedurePointer); {метод. додати пукт до меню}

Procedure ExecuteAction;{виконати дiю: передати керування процедурi на яку вказує покажчик видiленого пункту}

Function getMaximalWidth: Integer; {знайти найширший пункт}

Procedure Print;{вивести меню на екран}

procedure Activate;{передати керування у меню}

end;

var Num: Integer;

Input: MyArray;

i, j: integer;

OriginalMode : Word; {для перемикання текстових режимiв}

ScreenWidth : Integer;{ширина екрану}

ScreenHeight : Integer;{висота екрану}

CharBuffer : Char;{непотрiбно :)}

Menu: TMenu;{об"єкт меню}

{процедура створення текстового вiкна з параметрами кольору фону та тексту}

Procedure CreateTextWindow( X, Y, Width, Height: Integer;

BackgroundColor, ForegroundColor: Integer);

begin

If (X + Width) > ScreenWidth then Width := ScreenWidth - X;

If (Y + Height) > ScreenHeight then Height := ScreenHeight - Y;

Window(X, Y, Width, Height);

TextBackground(BackgroundColor);

TextColor(ForegroundColor);

ClrScr;

end;

{активацiя меню}

Procedure TMenu.Activate;

var CommandKey: Char;

I: Integer;

begin

{виводимо меню}

Print;

{читаємо команди}

Repeat

CommandKey := ReadKey;

{Enter -- виконати}

Case Ord(CommandKey) Of

13: ExecuteAction;

{вибрати наступний униз}

75: Begin

For i := 1 to ItemsCount do

If items[i].selected then break;

Items[I].Selected := False;

If i = 1 then I := ItemsCount Else

I:=I-1;

Items[I].Selected := True;

End;

{вибрати наступний угору}

77: Begin

For I:=1 to ItemsCount do