ЧЕРНІГІВСЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
КОЛЕДЖ
ТРАНСПОРТУ ТА КОМП’ЮТЕРНИХ ТЕХНОЛОГІЙ
КУРСОВИЙ ПРОЕКТ
з системного програмування
на
тему: Проект програми аналога інженерного калькулятора
Студента
Іванова В.А.
м. Чернігів - 2016 рік
Зміст
Вступ
. Загальні відомості
.1 Позначення та назва програми
.2 Програмне забезпечення, необхідне для її функціонування
.3 Мови програмування, на яких написана програма
. Функціональне призначення
.1 Призначення програми
.2 Функціональні обмеження на застосування
. Опис логічної структури
.1 Алгоритм програми
.2 Методи та елементи, що використовуються
.3 Структура програми з описом функцій складових частин і зв'язків між ними
.4 Зв'язок програми з іншими програмами
. Необхідні технічні засоби
.1 Типи комп'ютерів та пристроїв, що використовуються при роботі програми
. Виклик і завантаження
.1 Способи виклику програми
.2 Адреса завантаження програми
.4 Обсяг програми
. Вхідні дані
.1 Характер вхідних даних
.2 Організація вхідних даних
.3 Попередня підготовка вхідних даних
. Вихідні дані
.1 Характер вихідних даних
.2 Організація вихідних даних
.3 Формат, описання та спосіб кодування даних
.Опис програми і тестування програми
Висновок
Список використаної літератури
Додаток
Вступ
Курсовий проект (робота) - це самостійно виконана і відповідно оформлена творча робота студента з вирішення конкретного практичного завдання з однієї або декількох загально-технічних чи спеціальних дисциплін на основі набутих теоретичних знань та умінь.
Курсовий проект виконується протягом навчального семестру у відповідності з навчальним планом спеціальності
Основною метою курсового проектування є:
навчання та набуття навиків практичного застосування теоретичних знань для вирішення конкретних практичних задач;
розвиток творчого мислення, виявлення та формування професійних навиків студентів;
набуття навиків конструювання виробів, виконання розрахунків, письмового викладу технічних рішень та аналізу одержаних результатів;
закріплення, поглиблення та систематизація отриманих студентами в процесі навчання теоретичних знань з різних дисциплін;
набуття навиків узагальнення та аналізу результатів, отриманих іншими розробниками та дослідниками;
навчання та набуття студентами досвіду користування довідковою літературою і нормативними документами.
Мета курсового проектування з дисципліни «Основи програмування та алгоритмічні мови»:
закріпити знання, одержані під час вивчення дисципліни «Основи програмування та алгоритмічні мови;
засвоїти основні етапи розробки програмних виробів;
набути навиків при оформлення документів на програмні вироби;
одержати практичні навички з розробки програм і програмних документів.
1. Загальні відомості
.1 Позначення та назва програми
Програма аналог інженерного
калькулятора КТКТ ХХХХGG 00 13, дискове ім'я файлу Project1.cpp, після
компіляції - Project1.exe.
.2 Програмне забезпечення, необхідне
для її функціонування
Для використання програми не треба
специфічного програмного забезпечення. Для виконання приграми вистачає
будь-якої ОС сімейства Windows та мінімальних системних частин комп’ютера.
.3 Мови програмування, на яких написана програма
програма алгоритм комп'ютер
Програма написана мовою С в середовищі Borland C++ Builder. C++ Builder - програмний продукт, інструмент швидкої розробки додатків <https://uk.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%27%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B0> (RAD <https://uk.wikipedia.org/wiki/%D0%A8%D0%B2%D0%B8%D0%B4%D0%BA%D0%B0_%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B7%D0%B0%D0%B1%D0%B5%D0%B7%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%BD%D1%8F>), інтегроване середовище розробки <https://uk.wikipedia.org/wiki/%D0%86%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B5_%D1%81%D0%B5%D1%80%D0%B5%D0%B4%D0%BE%D0%B2%D0%B8%D1%89%D0%B5_%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B8>(IDE), система, яка використовується програмістами для розробки програмного забезпечення на мові програмування C++ <https://uk.wikipedia.org/wiki/C%2B%2B>.
Спочатку розроблявся
компанією Borland Software <https://uk.wikipedia.org/wiki/Borland>, а
потім її підрозділом CodeGear
<https://uk.wikipedia.org/w/index.php?title=CodeGear&action=edit&redlink=1>[ru]
<https://ru.wikipedia.org/wiki/CodeGear>, який сьогодні належить компанії
Embarcadero Technologies
<https://uk.wikipedia.org/wiki/Embarcadero_Technologies>.++ Builder
об'єднує в собі комплек соб'єктних бібліотек
<https://uk.wikipedia.org/wiki/%D0%91%D1%96%D0%B1%D0%BB%D1%96%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC>
(STL <https://uk.wikipedia.org/wiki/Standard_Template_Library>,VCL
<https://uk.wikipedia.org/wiki/Visual_Component_Library>,CLX
<https://uk.wikipedia.org/wiki/CLX>,MFC <https://uk.wikipedia.org/wiki/MFC>та
ін.),компілятор
<https://uk.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%96%D0%BB%D1%8F%D1%82%D0%BE%D1%80>,
зневаджувач
<https://uk.wikipedia.org/wiki/%D0%97%D0%BD%D0%B5%D0%B2%D0%B0%D0%B4%D0%B6%D1%83%D0%B2%D0%B0%D1%87>,редактор
коду
<https://uk.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D0%B8%D0%B9_%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80>
та багато інших компонентів. Цикл розробки аналогічний Delphi
<https://uk.wikipedia.org/wiki/Embarcadero_Delphi>. Більшість
компонентів, розроблених в Delphi, можна використовувати і в C++ Builder без
модифікації, але зворотнє твердження не вірне.++ Builder містить інструменти,
які за допомогою drag-and-drop
<https://uk.wikipedia.org/wiki/Drag-and-drop> дійсно роблять розробку
візуальною
<https://uk.wikipedia.org/wiki/%D0%92%D1%96%D0%B7%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F>,
спрощує програмування завдяки в будованому WYSIWYG <https://uk.wikipedia.org/wiki/WYSIWYG>-редактору
інтерфейсу
<https://uk.wikipedia.org/w/index.php?title=%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80_%D0%B3%D1%80%D0%B0%D1%84%D1%96%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D1%80%D0%B8%D1%81%D1%82%D1%83%D0%B2%D0%B0%D1%86%D1%8C%D0%BA%D0%BE%D0%B3%D0%BE_%D1%96%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D1%83&action=edit&redlink=1>
2. Функціональне призначення
.1 Призначення програми
На сьогоднішній день математичне програмування - важлива складова всього програмування. Великі і складні обчислення завдяки простим програмами стають простими. У цій роботі створювалася програма аналог інженерного калькулятора.
В якості середовища програмування обрана Borland C++ Builder.
Сучасний уклад життя вимагає постійної динаміки. Виробляючи розрахунки на калькуляторі, ми помітно економимо свій час, не ризикуємо в чомусь помилитися і отримуємо точний результат. Завдяки винаходу даного пристрою, багато людей забули що таке недостачі і похибки в розрахунках. Однак, якщо примітивні обчислювальні функції можна зробити на математичній моделі, то складні розрахунки можливо зробити тільки за допомогою інженерної. Тому було поставлено задачу створення інженерного калькулятора, який виконував би наступні операції:
Множення
Віднімання
Ділення
Піднесення до степеня
Знаходження кореня
квадратного, синуса, косинуса і логарифма
.2 Функціональні обмеження на
застосування
Функціональних обмежень на застосування програми немає.
3. Опис логічної структури
.1 Алгоритм програми
Для комп'ютерних програм <https://uk.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%27%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B0> алгоритм є списком деталізованих інструкцій, що реалізують процес обчислення, який, починаючи з початкового стану, відбувається через послідовність логічних станів, яка завершується кінцевим станом. Перехід з попереднього до наступного стану не обов'язково детермінований- деякі алгоритми можуть містити елементи випадковості.
Поняття алгоритму належить до підвалин математики <https://uk.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0>. Обчислювальні процеси алгоритмічного характеру (як-то арифметичні дії над цілими числами <https://uk.wikipedia.org/wiki/%D0%A6%D1%96%D0%BB%D1%96_%D1%87%D0%B8%D1%81%D0%BB%D0%B0>, знаходження НСД <https://uk.wikipedia.org/wiki/%D0%9D%D0%B0%D0%B9%D0%B1%D1%96%D0%BB%D1%8C%D1%88%D0%B8%D0%B9_%D1%81%D0%BF%D1%96%D0%BB%D1%8C%D0%BD%D0%B8%D0%B9_%D0%B4%D1%96%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA> двох чисел тощо) відомі людству з глибокої давнини. Проте, чітке поняття алгоритму сформувалося лише на початку XX ст <https://uk.wikipedia.org/wiki/20_%D1%81%D1%82%D0%BE%D0%BB%D1%96%D1%82%D1%82%D1%8F>.
Наша програма повинна мати чіткий, сформований алгоритм, який дозволить швидко працювати програмі і безперебійно оброблювати вхідні і вихідні дані.
Алгоритм нашої програми виглядає наступним чином:
Початок роботи програми. Запуск скомпільованого нами файлу.
Ініціалізація об’єктів програми.
Введення числа
Вибір операції
Виведення результатів
Завершення алгоритму
Для кращого розуміння алгоритму програми складемо його блок-схему (див.рис.3.1.1)
.
Рис. 3.1.1. Блок-схема
програми
.2 Методи та елементи, що
використовуються
Для реалізації алгоритму програми використовуються стандартні методи середовища програмування Borland C++ Builder, зокрема:
Для відображення різних написів на формі використовуються в основному компоненти Label, StaticText і Panel. Перші два з цих компонентів - мітки, спеціально призначені для відображення текстів. Основне призначення панелі Panel - компоновка компонентів у вікні форми, проте можна використовувати і для виведення текстів.
Тексти, які відображаються в компонентах, визначаються значенням їх властивості Caption. Його можна встановлювати в процесі проектування або задавати і змінювати програмно під час виконання програми. Наприклад:-> Caption = "Новий текст";
Властивість Caption має тип рядка AnsiString. При присвоєнні цього типу числової інформації відбувається її автоматичне перетворення в рядок. Тому ви можете безпосередньо здійснювати подібні присвоювання. Наприклад:-> Caption = 5.1;
Оператор призведе до появи в мітці напису «5,1». Але якщо ви хочете занести в мітку змішану інформацію, що складаються з рядків символів і чисел, ви повинні скористатися функціями FloatToStr і IntToStr, що переводять відповідно числа з плаваючою комою і цілі в рядок. Для формування тексту, що складається з декількох фрагментів, можна використовувати операцію "+", яка для рядків означає їх склеювання (конкатенацію). Наприклад, якщо в програмі є ціла змінна I, що відображає число співробітників деякої організації, то вивести в мітку Label1 інформацію про це можна оператором:-> Caption = "Число співробітників:" + IntToStr (I);
У всіх компонентах колір фону визначається властивістю Color, а колір напису под. свойством Color властивості Font. Якщо колір спеціально не задавати, то колір фону зазвичай зливається з кольором контейнера, що містить мітку, так що фон просто не помітний.
Для мітки Label колір і шрифт - єдино доступні елементи оформлення напису. Компоненти StaticText і Panel мають крім того властивість Border - Style, визначальне рамку тексту - бордюр. При стилі sbsNone мітка StaticText по виду не відрізняється від мітки Label. Ймовірно, якщо вже використовувати бордюр, то найбільш приємний стиль sbsSunken.
Компонент Panel крім властивості BorderStyle має ще властивості Bevellnner, BevelOuter, BevelWidth, BorderWidth, які надають багаті можливості оформлення напису. Таким чином, з точки зору оформлення виведеного тексту максимальні можливості дає Panel і мінімальні Label.
Розміщення всіх текстових компонентів на формі визначається, зокрема, властивостями Top, Left, Height, Width, Aline, спільними для всіх віконних компонентів. Ці властивості, що визначають координати компонента, його розміри і їх зміну при зміні користувачем розмірів батьківського компонента.
Розмір міток Label і StaticText визначається також властивістю AutoSize. Якщо ця властивість встановлено в true, то вертикальний і горизонтальний розміри компонента визначаються розміром напису. Якщо ж AutoSize одно false, то вирівнювання тексту всередині компонента визначається властивістю Alignment, яке дозволяє вирівнювати текст по лівому краю, правому краю або центру клієнтської області мітки. У панелі Panel також є властивість AutoSize, але воно не відноситься до розмірів написи Caption. Однак властивість вирівнювання Alignment працює і для панелі.
У мітці Label є властивість WordWrap - допустимість переносу слів довгою написи, що перевищує довжину компонента, на нову сходинку. Щоб такий перенос міг здійснюватися, треба встановити властивість WordWrap в true, властивість AutoSize в false (щоб розмір компоненту не визначався розміром напису) і зробити висоту компонента такий, щоб у ньому могло поміститися кілька рядків. Якщо WordWrap не встановлено у true при AutoSize рівному false, то довгий текст, що не міститься в рамці мітки, просто обрізається.
. Button
Найпростішою і, мабуть, найбільш часто використовуваної кнопкою є кнопка Button, розташована на сторінці бібліотеки Standard. Рідше використовується кнопка BitBtn, знана, насамперед, можливістю відобразити на її поверхні зображення. Більшість властивостей, методів і подій у цих видів кнопок однакові.
Основне з точки зору зовнішнього вигляду властивість кнопки - Caption (напис). У написах кнопок можна передбачати використання клавіш прискореного доступу, виділяючи для цього один із символів напису. Перед символом, який повинен відповідати клавіші прискореного доступу, ставиться символ амперсанда "&". Цей символ не з'являється в написи, а наступний за ним символ виявляється підкресленим. Тоді користувач може замість клацання на кнопці натиснути в будь-який момент клавішу Alt спільно з клавішею виділеного символу.
Наприклад, якщо у вашому додатку є кнопка виконання якоїсь операції, ви можете задати її властивість Caption рівним «& Start». На кнопці цей напис буде мати вигляд «Start». І якщо користувач натисне клавіші Alt + S, то це буде еквівалентно клацанню на кнопці.
Основна подія будь кнопки - OnClick, що виникає при натисканні на ній. Саме в обробнику цієї події записуються оператори, які повинні виконуватися при клацанні користувача на кнопці. Крім цього є ще ряд подій, пов'язаних з різними маніпуляціями клавішами і кнопками миші. Писати обробник події OnClick треба, якщо ви не пов'язуєте властивістю Action дану кнопку з якимось дією.
Властивість Cancel, якщо встановити його в true, визначає, що натискання користувачем клавіші Esc буде еквівалентно клацанню на даній кнопці. Ця властивість доцільно ставити рівним true для кнопок Скасувати в різних діалогових вікнах, щоб можна було вийти з діалогу, клікнувши на цю кнопку або натиснувши клавішу Esc.
Властивість Default, якщо його встановити в true, визначає, що натискання користувачем клавіші введення Enter буде еквівалентно натисканню на дану кнопку, навіть якщо дана кнопка в цей момент не перебуває у фокусі. Правда, це спрацює, якщо у фокусі знаходиться якийсь віконний компонент. Якщо ж у момент натискання Enter у фокусі знаходиться інша кнопка, то все-таки спрацює саме кнопка у фокусі. Якщо у декількох кнопок на формі властивість Default задано рівним true, то при натисканні Enter спрацює та з них, яка знаходиться раніше в послідовності табуляції.
З методів, властивих кнопках, має сенс відзначити один - Click. Виконання цього методу еквівалентно клацанню на кнопці, тобто викликає подія кнопки OnClick. Цим можна скористатися, щоб продублювати якимись іншими діями користувача клацання на кнопці. Нехай, наприклад, ви хочете, щоб при натисканні користувачем клавіші з символом "С" або "з" в будь-який момент роботи з додатком виконувалися операції, передбачені в обробнику події OnClick кнопки Button1. Оскільки невідомо, який компонент буде натискатися у фокусі в момент цієї події, треба перехопити його на рівні форми. Такий перехоплення здійснюється, якщо встановити властивість форми KeyPreview = true. Тоді в обробнику події форми OnKeyPresss можна написати оператор: