Клас для роботи в кільці многочленів, визначених над кільцем цілих чисел по модулю

Автор работы: Пользователь скрыл имя, 29 Апреля 2013 в 01:32, курсовая работа

Описание

Теорія перетворень в кільцях багаточленів знайшла широке застосування при вирішенні задач перешкодостійкого кодування, шифрування, передачі даних сигналами з великою базою (шумоподібних сигналів - ШПС) і т.п. В цих системах інформація передається блоками (кадрами, пакетами), в зв’язку з чим кожний блок може бути представлений багаточленом (вектором) фіксованої розмірності.
Метою даного курсового проекту є розробка класу для роботи в кільці многочленів над цілими числами. Для роботи з многоченами був розроблений програмний інтерфейс. Клас Zm дозволяє реалізувати функції додавання, віднімання та множення многочленів. Щоб представити результати операції в стандартному вигляді розроблена додаткова функція приведення подібних одночленів многочлена та сортування по збільшеню.

Содержание

Реферат .....................................................................................................................................
Перелік умовних позначень,символів ,скорочень та термінів...............................................
Вступ…………............................................................................................................................
1. Аналіз предметної області....................................................................................................
1.1 Математичний опис задачі.............................................................................................
1.2 Обґрунтування вибору програмних засобів…………………………………………
1.2.1 Огляд особливостей мови програмування...........................................................
1.2.2 Огляд особливостей обраного компілятору …………………………………...
1.2.3Створення візуального інтерфейсу………………………………………………
1.3 Аналіз структури стандартної бібліотеки шаблонів STL...........................................
1.4 Висновки до розділу ………………………………………………………………...
2. Рішення шодо розробки програми…………………………………………………………..
2.1 Основні рішення щодо уявлення даних системи ….………………………………...
2.2 Опис розроблених алгоритмів.....................................................................................
2.3 Основні рішення щодо модульного уявлення системи..............................................
2.4 Результати тестування програмного забезпечення.....................................................
3. Посібник програміста............................................................................................................
4. Інструкція користувача.........................................................................................................
5. Інформаційний листок……………………………………………………………………..
6.Література...............................................................................................................................
Висновки……………………………………………

Работа состоит из  1 файл

KURSOVAYa.doc

— 1.43 Мб (Скачать документ)

 

Особливості С#, запозичені у Java:

Класи:

Класів в С#, як і в Java дуже багато. Зверніть увагу на слідуючий приклад, що показує використання класів:

 

using system;

class hello {

static void main() {

console.writeline("hello, world");

}

}

 

В даному прикладі, ім'я system звертається  до namespace, яка містить набір базисних класів с. namespace містить клас console, який використовується в даному прикладі для виведення рядка.

Класи можуть бути абстрактними і кінцевими; клас, який оголошений як abstract може використовуватися тільки як базовий клас. Ключове слово lock (аналог в Java - final) означає, що клас буде не абстрактним, але він також не може використовуватися як основа іншого класу.

Як і в Java, інтерфейс - абстрактне визначення колекції методів. Коли клас або структура виконує інтерфейс, він повинен виконати всі методи, визначені в цьому інтерфейсі. Одиночний клас може виконувати ряд інтерфейсів.

Прямого перетворення між булевим типом будь-яким іншим  типом даних немає. Ключовими словами є: булева істина і брехня.

Як і в Java, управляти обробкою помилок можна захоплюючи об'єкти виключення.

 

Управління пам'яттю здійснюється завдяки автоматичній  збірці "сміття", яка забезпечується .net.

 

С# Особливості, запозичені у С і С++ :

Програми виконують компіляцію безпосередньо в стандартну двійкову здійсниму форму. Якщо попередня  програма hello world була збережена в  текстовому файлі hello.cs, вона буде скомпільована  в здійснимий файл hello.exe.

Структури С# - подібні до структур в С++ і повинні містити визначення даних і методи. Проте, на відміну від С++, структури в С# відмінні від класів і не підтримують спадкоємство. Проте, подібно Java, структури можуть виконувати інтерфейси.

Існують директиви  препроцесора для умовної компіляції, попереджень, помилок і контролю також директиви попередньої обробки.

Деякі оператори  можуть бути переобтяжені, а деякі  ні. До того ж жоден з операторів призначення не може бути переобтяжений.

Перенавантажувані унарні оператори

+ -! ~ ++ - true false

Перенавантажувані бінарні  оператори

+ - * / % і | ^ <<> > ==! = > < > = < =

Особливості, унікальні  для c#:

Коли ви створюєте програму, ви створюєте один або більше (за класамии) в namespace. У ньому ж (поза класом) можливе  оголошення інтерфейсів, enums і structs. Використовуючи ключові слова ви можете адресувати вміст іншого namespace.

В С# існує ширша різноманітність типів даних ніж в С та С++ або Java. Типи - bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double, and decimal. Подібно Java, всі типи мають встановлений розмір. Подібно С і С ++ всі типи можуть бути знаковими і без знаковими. Подібно Java, char містить 16-ти бітовий unicode символ. У С# новим типом даних є тип decimal, який може містити до 28 десяткових цифр.

Фундаментальними класами являються: клас object - базовий клас всіх класів,клас string - також базовий клас. Будучи частиною мови він використовується компілятором, коли ви створюєте рядок у вашій програмі, беручи його в лапки.

Асемблювання - колекція компільованих класів і здібність до виконання інших елементів мови, які об'єднані в окремому файлі. Якщо це програма то файл має розширення exe. Якщо це бібліотека - dll.

Кожен член класу має ознаки: public, protected, internal, protected internal, or private.

public: доступний для всієї коди.

protected: доступний тільки від отриманих  класів.

internal: доступний тільки при асемблюванні;

protected internal: доступний тільки від  отриманих класів в межах асемблювання.

private: доступний тільки з класу. 

Методи можуть оголошуватися для ухвалення деякого числа аргументів. За умовчанням відбувається передача значень фундаментальним типам даних. Ключове слово ref може використовуватися для передачі значення по певному посиланню, яке дозволяє повертати значення. Ключове слово out також викликає перехід по посиланню без передачі значення.

Перш, ніж метод в базовому класі  буде переписаний, він повинен бути оголошений як virtual. Метод в підкласі, який буде переписаний, повинен бути оголошений за допомогою ключового слова override. Це запобіжить випадковому перезапису методу. Дана особливість покращує легкість для читання і невимушеність обслуговування c# модулів.

Властивості:

com об'єкт, має властивості і  тому кожен c# клас може використовуватися  як com об'єкт. С# дозволяє визначати властивості всередині будь-якого класу. Всередині С# класу, кожній властивості дається ім'я і тип даних. Ключові слова set accessor і get accessor використовується для оголошення виконуваної коди при читанні або оновленні властивості. Ім'я властивості може бути адресоване зовні в затвердженні призначення.

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

Визначення версій:

С# дозволяє розробникам підтримувати безліч версій класів в двійковій формі, поміщаючи їх в різних namespace. Це дозволяє як старим, так і новим версіям програмного забезпечення запускатися одночасно. Разом з цим в С# буде здатність підтримувати і управляти безліччю версій початкової коди.

Перевірена і неперевірена оцінка: перевірений вираз - вираз, який видає виключення при виході за його межі. Неперевірений вираз - вираз, який не видає виключення. Ключові слова checked і unchecked використовуються для явного визначення того, яким чином була виконана оцінка:

 

int j = checked(а * b);

int до = unchecked(а * b);

 

Подібно Java, С# враховує неявне перетворення фундаментальних типів даних, поки немає вірогідності втрати даних (перетворення типу byte в int), але якщо є вірогідність втрати даних (перетворення int в byte) виконується явне перетворення. С# розширює цю здатність для інших елементів програми, дозволяючи програмістові визначити як явні, так і неявні перетворення. Методи в класі можуть виконуватися зовні.

Ітерація через члени колекції,затвердження foreach може використовуватися для одноразового виконання блоку коди для кожного члена списку або масиву.

Висновок:

Будь-який досвідчений windows програміст, звичайно, знайде щось цікаве для себе із списку особливостей мови С#. Існують деякі нові особливості в порівнянні з Java. Типи даних фіксованого розміру (32-х бітовий int і 64-х бітовий long) є не тільки високо мобільними, але і спрощують програмування, оскільки ви завжди знаєте точно, з чим ви маєте справу. Дуже зручною є і автоматична "збірка" сміття. В той час, як всі ці особливості мови здаються дуже привабливими. Ще досить рано порівнювати С# ++ або visual basic. Проте, мені подобається С# і якщо надалі послідує його хороша реалізація, то я думаю, що .net розробники прагнутимуть до цього нового інструменту.

 

1.2.2 Огляд особливостей обраного компілятору

 

 

Причиною вибору програмних засобів,а  саме Visual Studio стало те,що Microsoft Visual Studio – сімейство продуктів компанії Microsoft, що включають в себе інтегроване середовище розробки програмного забезпечення (IDE – Integrated Development Environment), а також ряд інших інструментальних засобів.

Основні області застосування MS Visual Studio:

- Розробка консольних та графічних програм, включаючи Windows Forms-аплікації.

- Розробка Windows-служб.

- Розробка веб-сайтів та веб-аплікацій.

- Розробка веб-сервісів.

Компоненти Visual Studio:

Visual Basic .NET

Visual C++

Visual C#

Microsoft SQL Server Express Edition (не у всіх варіантах поставки).

Вищеописані компоненти присутні в Visual Studio за замовчуванням. Однак, цим можливості середовища не обмежуються. Visual Studio може підтримувати будь-яку іншу мову шляхом інсталяції відповідного додаткового  мовного сервісу (language service). Також  середовище Visual Studio архітектурно побудоване таким чином, що дозволяє розширювати свою функціональність шляхом встановлення додатків (Add-ins). Visual Studio навіть містить спеціальний тип проекту, який дозволяє програмісту самостійно розробити такий додаток.

Поняття проекту (Project) та рішення (Solution)

Проект є окремою ієрархічною  одиницею програмного продукту, яка  при компіляції продукує певну збірку (assembly). Найчастіше такою збіркою  є виконавчий exe-модуль, бібліотека (DLL), інсталяційний пакет тощо. Проект може бути як самостійним, так і залежним від інших проектів (приклад: проект виконавчого модуля, який використовує бібліотеку, що розробляється в іншому проекті).

Рішення — це множина проектів, яка використовується для групування елементів програмного продукту в окремі підсистеми, а також для оптимізації процесу компіляції продукту.

Три стратегії структурування проектів та рішень:

1.Одиничне рішення. При розробці невеликої системи створюється одне рішення, в якому розміщуються всі проекти.

2.Сегментоване рішення. При розробці великої системи, логічні групи проектів, над якими розробник, скоріше за все, буде працювати в сукупності, виносяться в окремі рішення. Крім цього, формується одне загальне рішення, яке включає в себе всі проекти.

3.Кілька рішень. При розробці дуже великих продуктів виділяються окремі підсистеми, для кожної з яких створюється окреме рішення. З міркувань швидкодії підсистеми не об’єднуються в загальне рішення.

 

1.2.3 Створення візуального інтерфейсу

 

Для створення візуального інтерфейсу  було використане програмне середовище NET Framework. На самому верхньому, концептуальному рівні платформа .NET Framework складається із загальної специфікації типів (CTS – Common Type System), загальної мовної специфікації (CLS – Common Language Specification) та загально-мовного середовища виконання (CLR – Common Language Runtime). Кожен з цих компонентів підтримує належний рівень абстракції над конкретними апаратними чи програмними умовами, дозволяючи задовольнити вимоги до платформи. Ці компоненти докладніше розглянуті далі.

Common Language Runtime (CLR). Головною задачею  цієї частини конструкції є  розміщення, завантаження та керування програмами .NET чином, передбаченим програмістом. CLR є проміжною частиною між програмним кодом та тими апаратними та програмними засобами, в контексті яких виконується задана програма. Тут вирішуються усі низькорівневі питання, які стосуються менеджменту пам’яті, роботи з файловою системою ОС, загальні питання безпеки, надання виконуваним програмам інтерфейс, абстрагований від умов виконання. Це єдина частина .NET, яка є залежною від конкретної апаратно-програмної платформи, а тому розробивши для певного класу обчислювальних пристроїв CLR-середовище, можна бути впевненим, що з великою долею вірогідності, на таких пристроях запуститься більшість програм .NET.

Common Type System (CTS). Ця частина визначає  усю можливу множину типів  даних та програмних конструкцій, які можуть бути використані в програмах для .NET. Також до неї відносяться вимоги та рекомендації щодо взаємодії між такими типами та конструкціями, завдяки чому реалізується можливість використання технік міжмовного програмування. Важливо зрозуміти, що на відміну від CLR, CTS не має конкретного програмного рішення; у сенсі: немає такого комплексу фізичних процедур, модулів і такого іншого, що б реалізовувало цю систему. CTS є лише набором специфікацій (вимог) щодо того, яким чином мають виглядати та виконуватися програми, створені для .NET Framework.

Common Language Specification (CLS). Являє собою  специфікацію, що об’єднує підмножину CTS. Іншими словами, якщо CTS описує повністю усі можливі базові типи та програмні шаблони .NET, то CLS перелічує лише виключно необхідні. Абсолютно очевидним є те, що не кожна мова програмування підтримує увесь спектр мовних засобів, які представлені в інших мовах .NET, але при цьому для забезпечення механізму сумісності необхідно описати базові елементи, що мають підтримуватися усіма такими мовами. Власне набором таких специфікацій і є CLS.

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

 

 

 

 

 

 

    1.  Aналіз структури стандартної бібліотеки шаблонів STL

 

Стандартна бібліотека шаблонів (англ. Standard Template Library; STL) — бібліотека для C++, що містить набір узгоджених узагальнених алгоритмів, контейнерів, засобів доступу до їхнього вмісту і різних допоміжних функцій.

Стандартна бібліотека шаблонів до включення в стандарт C++ була сторонньою розробкою, на початку — фірми HP, а потім SGI. Стандарт мови не називає її «STL», оскільки ця бібліотека стала невід'ємною частиною мови, проте багато людей доcі використовують цю назву, щоб відрізняти її від решти частини стандартної бібліотеки (потоки вводу/виводу (iostream), підрозділ Сі тощо).

Проект під назвою STLPort, заснований на SGI STL, здійснює постійне оновлення STL, IОstream і рядкових класів. Деякі інші проекти також займаються розробкою приватних застосувань стандартної бібліотеки для різних конструкторських завдань. Кожен виробник компіляторів C++ обов'язково поставляє яку-небудь реалізацію цієї бібліотеки, оскільки вона є дуже важливою частиною стандарту і широко використовується.

Архітектура STL була розроблена Олександром  Степановим і Менг Лі.

 

Структура бібліотеки

 

У бібліотеці виділяють п'ять основних компонентів:

  1. Контейнер (container) - зберігання набору об'єктів в пам'яті.
  2. Ітератор (iterator) - забезпечення засобів послідовного доступу до вмісту контейнера.
  3. Алгоритм (algorithm) - визначення обчислювальної процедури.
  4. Адаптер (adaptor) - адаптація компонентів для забезпечення різного інтерфейсу.
  5. Функціональний об'єкт (functor) - заховання функції в об'єкті для використання іншими компонентами.

Информация о работе Клас для роботи в кільці многочленів, визначених над кільцем цілих чисел по модулю