Програма для вирішення систем лінійних рівнянь методом Крамера та методом оберненої матриці
Процедури для запису у файл write і writein описані аналогічно: procedureWrite (PI); procedureWritein (PI). Параметри P1, P2…, Pn можуть бути одним з цілих або речових типів, одним із строкових типів або логічним типом. Але у них є можливість додаткового форматування при виводі. Кожен параметр запису може мати форму: Рn ], де Рn — змінна, що виводиться, або вираз; Minwidth — мінімальна ширина… Читати ще >
Програма для вирішення систем лінійних рівнянь методом Крамера та методом оберненої матриці (реферат, курсова, диплом, контрольна)
Зміст:
Вступ Розділ І. Постановка завдання
1.1 Загальні поняття
1.2 Аналіз вимог до програмного продукту
1.3 Огляд існуючих програмних продуктів
Розділ ІІ. Побудова моделі програмного продукту
2.1 Процес розробки та методологія
2.2 Структура програми
2.3 Принципи технології створення програмних продуктів
2.4 Вибір технологій для реалізації та засобів створення програмного продукту
2.5 Робота з файлами в Delphi
Розділ III. Розробка програмного продукту
3.1 Розробка основних форм, розробка програми та інтерфейсу користувача, їх опис
3.2 Програмування графічного користувацького інтерфейсу
3.2.1 Команди та компоненти використані в програмі та опис ПЗ
3.2.2 Опис процедур
3.2.3 Аналіз можливих проблем
Висновок Список використаних джерел
Додатки
Вступ
Останні десятиліття характеризуються бурхливим розвитком обчислювальної техніки. Розширюються області застосування обчислювальних машин і удосконалюються методи їх використання. Створено універсальні мови програмування (Delphi 7.0, C++) та розроблено потужні операційні системи.
Зараз неможливо уявити собі будь-яку область діяльності, що обходиться без застосування комп’ютерної техніки. Комп’ютери використовуються при проведенні різних інженерних розрахунків, при вирішенні економічних завдань, у процесі управління виробництвом, при одержанні оцінок виробничих ситуацій і в багатьох інших випадках.
Системи лінійних рівнянь з’являються майже в кожній галузі прикладної математики. У деяких випадках ці системи рівнянь безпосередньо складають ту задачу, яку необхідно вирішувати, в інших випадках завдання зводиться до такої системи.
Щоб швидко впорається з рішенням системи лінійних рівнянь, можна скористатися засобами обчислювальної техніки — скласти програму на мові програмування.
Мета цієї роботи надати можливість вирішення систем лінійних рівнянь методом Крамера та методом оберненої матриці за допомогою програми, створеної на мові Delphi. Програма повинна мати аскетичний дизайн та малі ситсемні вимоги.
Розділ 1. Постановка завдання
Необхідно створити програму для інтерпретації математичних виразів. Щось подібне до інженерного калькулятора. Програма повинна обраховувати синуси та косинуси, а також мати інтуїтивно та розумілий інтерфейс.
1.1 Загальні поняття
Сучасній інтерпретатор мат. виразів це електронний обчислювальний пристрій для виконання операцій над числами або алгебраїчними формулами.
Інженерний калькулятор замінив ручні (механічні) обчислювальні пристрої і пристосування, такі як абаки, рахунки, математичні таблиці (насамперед — таблиці логарифмів), логарифмічні лінійки, механічні або електромеханічні арифмометри .
Залежно від можливостей і цільової сфери застосування калькулятори діляться на найпростіші, бухгалтерські, інженерні (наукові), фінансові. В окремі класи зазвичай виділяють програмовані калькулятори, що дають можливість виконання складних обчислень за попередньо закладеною програмою, а також графічні - підтримуючі побудова і відображення графіків. Спеціалізовані калькулятори призначені для виконання обчислень в досить вузькій сфері (статистичні, медичні, спеціальні фінансові розрахунки тощо); такі калькулятори зараз частіше реалізуються у вигляді програм для універсальних персональних комп’ютерів, КПК, планшетів, хоча можуть виготовлятися і «в залізі» .
По виконання калькулятори можуть бути настільними або компактними (кишеньковими). Окремі моделі мають інтерфейси для підключення персонального комп’ютера, друкувального пристрою, зовнішнього модуля пам’яті чи інших зовнішніх пристроїв. Існують калькулятори, вбудовані в персональні комп’ютери, мобільні телефони, КПК і навіть наручний годинник.
1.2 Аналіз системних вимог до програми:
— Операційна система Microsoft 7/Хр/Vista. (на інших операційних системах програма не тестувалася).
— Вимоги до комп`ютерного обладнання:
Будь який комп`ютер з вище вказаною операційною системою,
· Процесор Pentium з частотою 233 МГц або більш швидкий (рекомендується не менше 300 МГц). Не менш 64 МБ оперативної пам’яті (рекомендується не менше 128 МБ)
· Не менш 1,5 ГБ вільного місця на жорсткому диску
· Дисковод для компакт-або DVD-дисків
· Клавіатура, миша Microsoft Mouse або сумісний вказівний пристрій
· Відеокарта і монітор, що підтримують режим Super VGA з роздільною здатністю не менше ніж 800×600 точок
1.3 Огляд існуючих програмних продуктів
В світі існує багато калькуляторів, але я намагався створити для мого калькулятора особливий інтерфейс який би вирізнив його серед інших програм схожого типу. Серед найбільш популярних програм подібних до моєї е насамперед інженерній калькулятор Віндовс та інші подібні.
Розділ II. Побудова моделі програмного продукту
2.1 Процес розробки та методологія
Протягом кількох десятиліть стоїть завдання пошуку повторюваного, передбачуваного процесу або методології, яка б поліпшила продуктивність, якість і надійність розробки. Одні намагалися систематизувати та формалізувати цей, мабуть, малопередбачуваний процес. Інші застосовували до нього методи управління проектами та методи програмної інженерії. Треті вважали, що без постійного контролю з боку замовника розробка ПЗ виходить з-під контролю, з'їдаючи зайвий час і кошти.
Досвід управління розробкою програм відбивається у відповідних посібниках, звичаях і стандартах. Якщо при розробці використовується декілька стандартів і нормативних документів, то має сенс скласти профіль. Інформатика як наукова дисципліна пропонує і використовує на базі методів структурного програмування технологію надійної розробки програмного забезпечення, використовуючи тестування програм та їх верифікацію на основі методів доказового програмування для систематичного аналізу правильності алгоритмів і розробки програм без алгоритмічних помилок. Дана методологія спрямована на вирішення завдань на ЕОМ, аналогічної технології розробки алгоритмів і програм, використовуваної на олімпіадах з програмування вітчизняними студентами та програмістами з використанням тестування і структурного псевдокоду для документування програм в корпорації IBM з 70-х років.
2.2 Структура програми
В основі будь-якої Delphi-програми лежить проект. Основою проекту в свою чергу є форма, на якій розміщаються необхідні для розв’язку конкретної задачі компоненти. Проект складається з різних частин, кожна з яких розміщена в окремому файлі й виконує чітко визначені функції. Набір файлів, необхідних для створення програми, називається проектом. Компілятор послідовно обробляє файли проекту і будує з них EXE-програму, що виконується. Проект складається з таких файлів:
Головний файл проекту — текстовий файл з розширенням DPR, який містить головний програмний блок. Файл проекту підключає всі програмні модулі і містить методи для запуску програми. Цей файл створює і контролює автоматично середовище Delphi.
Файли опису форм — двійкові файли з розширенням DFM, які описують форми з компонентами. В цих файлах запам’ятовуються початкові значення властивостей, встановлених в Інспекторі Об'єктів.
Файли програмних модулів — текстові файли з розширенням PAS, які містять код на мові ObjectPascal. У цих файлах містяться методи обробки подій, які генеруються компонентами і формами.
Файл ресурсів з розширенням RES. У ньому, наприклад, зберігається піктограма програми, яку видно на Панелі Задач Windows.
Об'єктні файли з розширенням OBJ, написані на інших мовах програмування.
Файл опцій з розширенням DOF, де розміщені задані програмістом параметри компіляції і компонування проекту.
Файл з розширенням DSK, де розміщені настройки візуального середовища для даного проекту.
У проект можуть входити також логічно автономні елементи: малюнки (BMP-файли), значки (ICO-файли), файли довідників (HLP-файли) і т. і., але ними управляє сам програміст.
2.3 Принципи технології створення програмних продуктів
Технологія створення програмних продуктів — це рід діяльності (професія) та процес, спрямований на створення та підтримку працездатності, якості та надійності програмного забезпечення, використовуючи технології, методологію та практики з інформатики, керування проектами, математики, інженерії та інших областей знання.
Як й інші традиційні інженерні дисципліни, розробка програмного забезпечення має справу з проблемами якості, вартості та надійності. Деякі програми містять мільйони рядків вихідного коду, які, як очікується, повинні правильно виконуватися в умовах, що змінюються. Складність ПЗ порівнянна з складністю найбільш складних з сучасних машин.
Розробка програмного забезпечення може бути розділена на кілька розділів. Це:
1. Вимоги до програмного забезпечення: витяг, аналіз, специфікація та ратифікація вимог для програмного забезпечення.
2. Проектування програмного забезпечення: проектування програмного забезпечення засобами Автоматизованої Розробки Програмного Забезпечення (CASE) і стандарти формату описів, такі як Уніфікований Мова Моделювання (UML), використовуючи різні підходи: проблемно-орієнтоване проектування і т. д.
3. Інженерія програмного забезпечення: створення програмного забезпечення за допомогою мов програмування.
4. Тестування програмного забезпечення: пошук та виправлення помилок у програмі.
5. Обслуговування програмного забезпечення: програмні системи часто мають проблеми сумісності та переносимості, а також потребують подальших модифікацій протягом довгого часу після того, як створена їх перша версія. Підобласть має справу з цими проблемами.
6. Керування конфігурацією програмного забезпечення: оскільки системи програмного забезпечення дуже складні та модифікуються в процесі експлуатації, їх конфігурації повинні управлятися стандартизованим та структурованим методом.
7. Керування розробкою програмного забезпечення: керування системами програмного забезпечення має запозичення з керування проектами, але є нюанси, що не трапляються в інших дисциплінах керування.
8. Процес розробки програмного забезпечення: процес побудови програмного забезпечення гаряче обговорюється серед практиків, основними парадигмами вважаються agile або waterfall.
9. Інструменти розробки програмного забезпечення, див. CASE: методика оцінки складності системи, вибору засобів розробки та застосування програмної системи.
10. Якість програмного забезпечення: методика оцінки критеріїв якості програмного продукту та вимог до надійності.
11. Локалізація програмного забезпечення, гілка мовної промисловості.
2.4 Вибір технологій для реалізації та засобів створення програмного продукту
Для створення програми я обрав Delphi7.0 (Object Pascal) — об'єктно-орієнтований нащадок мови програмування Pascal, відоміший як основна мова програмування середовища Delphi.
Компанія Borland використовувала назву «Object Pascal» для мови програмування у перших версіях RAD Delphi, проте пізніше назвала її «мовою програмування Delphi». Однак, компілятори, що заявлені як Object Pascal-сумісні, дуже часто намагаються бути сумісними із вихідними кодами Delphi.
Це інтегроване середовище швидкої розробки програмного забезпечення для роботи під Microsoft Windows. Воно підтримує розробку Windows-застосунків на мові програмування Delphi, яка є наступницею мови Object Pascal.
Delphi 2007, одинадцята версія, входить до складу CodeGear RAD Studio 2007, яка також підтримує розробку на C++ для 32-бітної Microsoft Windows, а також на Delphi і C#для платформи Microsoft .NET. У Delphi 2009, що випущена у серпні 2008;ого, бібліотеки VCL та IDE повністю переведені на Юнікод, також з’явилися нові можливості компілятора (узагальнення (англ. Generics) і анонімні методи), в IDE було додано менеджер ресурсів та повністю перебудовано менеджер проектів. Найновіша, 16 версія, має назву Delphi XE2 і входить до Embarcadero RAD Studio XE2. У цій версії додано підтримку платформ Mac OS X та iOS, а також 64-бітної архітектури.
Delphi в основному використовується для розробки настільних застосунків та корпоративних СКБД, проте цей інструмент можна використовувати для розробки будь-якого загального програмного забезпечення. Не залишена осторонь і можливість побудови веб-застосунків.
Delphi поширюється у кількох редакціях з різними можливостями і цінами: Personal (на даний час недоступний), Professional, Enterprise (раніше Client/Server) та Architect.
Borland Kylix — це еквівалент до Delphi для платформи Linux. Проте, розробка наступних версій була припинена компанією Borland. Проте 16 травня 2009 року на конференціїDelphi Live 2009 було оголошено про роботу над проектом Delphi «X», що полягає на введенні крос-платформенної підтримки для розробки на Linux.
2.5 Робота з файлами в Delphi
Середовище Delphi дає вам можливість вибрати один з чотирьох варіантів роботи з файлами:
використання традиційного набору функцій роботи з файлами, успадкованого від TurboPascal;
використання функцій введення/виводу з Windows API;
використання потоків (rstream і його нащадки);
використання файлів, що відображаються.
Часто сучасний програмний код Delphi для читання даних з файлу дуже схожий на той, що використовується в TurboPascal. Програмісти Borland зберегли незмінним старий набір файлових функцій, що працюють через файлові змінні
При організації операцій файлового введення/виведення у додатку велике значення має, якого роду інформація міститься у файлі. Частіше за все це — рядки, але зустрічаються двійкові дані або структурована інформація, наприклад масиви або записи.
Природно, що відомості про тип даних, що зберігаються у файлі важливо задати спочатку. Для цього використовуються спеціальні файлові змінні, що визначають тип файлу. Вони поділяються на ті, що не типізуються і типізуються. Перед початком роботи з будь-яким файлом необхідно описати файлову змінну, що відповідає типу даних цього файлу. Надалі ця змінна використовується при зверненні до файлу.
У Delphi є можливість створювати файли, що не типізуються. Для їх позначення використовується ключове слово file: varUntypedfile: file;
Такі файлові змінні використовуються для організації швидкого і ефективного введення/виводу незалежно від типу даних. При цьому мається на увазі, що дані читаються або записуються у вигляді двійкового масиву. Для цього застосовуються спеціальні процедури блокового читання і запису.
Типізовані файли, забезпечують введення/виведення з урахуванням конкретного типу даних. Для їх оголошення використовується ключове слово fileof, до якого додається конкретний тип даних. Наприклад, для роботи з файлом, що містить набір байтів, файлова змінна оголошується так: varBytefile: fileofbyte;
При цьому можна використовувати будь-які типи фіксованого розміру, за винятком вказівників. Дозволяється застосовувати структурні типи, якщо їх складові частини задовольняють названому вище обмеженню. Наприклад, можна створити файлову змінну для запису:
typeCountry = record
Name: String;
Capital: String;
Population: Longlnt;
Square: Longlnt;
end;
varCountryfile: fileofCountry;
Для роботи з текстовими файлами використовується спеціальна файлова змінна Textfile або Text: var F: Textfile;
Тепер розглянемо дві найпоширеніші операції, що виконуються при роботі з файлами. Це читання і запис. Для їх здійснення застосовуються спеціальні функції файлового введення/виводу.
Отже, для виконання операції читання або запису необхідно провести наступні дії:
1. Оголосити файлову змінну необхідного типу.
2. За допомогою функції Assignfile пов’язати цю змінну з необхідним файлом.
3. Відкрити файл за допомогою функцій Append, Reset, Rewrite.
4. Виконати операції читання або запису. При цьому, залежно від складності завдання і структури даних, може використовуватися цілий ряд допоміжних функцій.
5. Закрити файл за допомогою функції Closefile.
Як приклад розглянемо невеликий фрагмент коду.
…
var F: Textfile;
S: string;
begin
ifOpendlg.Execute
thenAssignfiie (F, Opendlg. FileName)
elseExit; Reset (F);
whileNot EOF (F) do
begin
Readln (F, S);
Memo.Lines.Add (S);
end;
Closefile (F);
end;
…
Якщо в діалозі відкриття файлу Opendlg був вибраний файл, то його ім'я зв’язується з файловою змінною F за допомогою процедури Assignfile. Як ім'я файлу рекомендується завжди передавати повне ім'я файлу (включаючи його маршрут). Якраз у такому вигляді повертають результат вибору файлу діалоги роботи з файлами. Потім за допомогою процедури Reset цей файл відкривається для читання і запису.
У циклі виконується читання з файлу текстових рядків і запис їх в компонент Tmemo. Процедура Readin здійснює читання поточного рядка файлу і переходить на наступний рядок. Цикл виконується, поки функція EOF не повідомить про досягнення кінця файлу. Після завершення читання файл закривається. Такий же код можна використовувати і для запису даних у файл. Необхідно тільки замінити процедуру читання на процедуру запису.
Відкриття файлу може здійснюватися трьома процедурами — залежно від типу його подальшого використання.
Процедура procedureReset (var F: File [; Recsize: Word ]); відкриває існуючий файл для читання і запису, поточна позиція встановлюється на першому рядку файлу Процедура procedureAppend (var F: Text); відкриває файл для запису інформації після його останнього рядка, поточна позиція встановлюється на кінець файлу Процедура procedureRewrite (var F: File [; Recsize: Word ]); створює новий файл і відкриває його, поточна позиція встановлюється в початок файлу. Якщо файл з таким ім'ям вже існує, то він перезаписується.
Змінна Recsize використовується тільки при роботі з файлами, що не типізуються, і визначає розмір одного запису для операції передачі даних. Якщо цей параметр опущений, то за замовчуванням Recsize рівне 128 байт.
Читання даних з файлів, що типізуються і текстових, виконують процедури Read і Readin. Процедура Read має різне оголошення для текстових і інших файлів, що типізуються:
procedureRead ([var F: Text;] VI [, V2…, Vn]) — для текстових файлів;
procedureRead (F, VI [, V2…, Vn]) — для інших типізованих файлів.
При одному виклику процедури можна читати дані в довільне число змінних. Звичайно, що тип змінних повинен співпадати з типом файлу. При читанні в чергову змінну читається рівно стільки байтів з файлу, скільки займає тип даних. У наступну змінну читається стільки ж байтів, розташованих услід. Після виконання процедури поточна позиція встановлюється на першому непрочитаному байті. Аналогічно працюють декілька процедур Read для однієї змінної, виконаних підряд.
Процедура procedureReadln ([ var F: Text; ] VI [, V2…, Vn ]); прочитує один рядок текстового файлу і встановлює поточну позицію на наступному рядку.
Процедури для запису у файл write і writein описані аналогічно: procedureWrite ([var F: Text; ] PI [, P2…, Pn]); procedureWritein ([ var F: Text; ] PI [, P2…, Pn ]). Параметри P1, P2…, Pn можуть бути одним з цілих або речових типів, одним із строкових типів або логічним типом. Але у них є можливість додаткового форматування при виводі. Кожен параметр запису може мати форму: Рn [: Minwidth [: Decplaces ] ], де Рn — змінна, що виводиться, або вираз; Minwidth — мінімальна ширина поля в символах, яка повинна бути більше 0; Decplaces — містить кількість десяткових символів після коми при відображенні дійсних чисел з фіксованою крапкою.
Для текстових файлів у функціях Read і write файлова змінна F може бути відсутня. У цьому випадку читання і запис здійснюються в стандартні файли введення/виводу. Коли програма компілюється як консольне застосування, Delphi автоматично пов’язує вхідний і вихідний файли з вікном консолі.Для контролю за поточною позицією у файлі застосовуються дві основні функції Функція EOF (F) повертає значення True, якщо досягнутий кінець файлу. Функція EOLN (F) аналогічно сигналізує про досягнення кінця рядка. Природно, як параметр у функції необхідно передавати файлову змінну.
Процедура procedureSeek (var F; N: Longint); забезпечує зсув поточної позиції на N елементів. Розмір одного елементу в байтах залежить від типу даних файлу.
Розглянемо тепер режим блокового введення/виводу даних між файлом і областю адресного простору (буфером). Цей режим відрізняється значною швидкістю передачі даних, причому швидкість пропорційна розміру одного передаваного блоку — чим більше блок, тим більше швидкість.
Для реалізації цього режиму необхідно використовувати файлові змінні, що тільки не типізуються. Розмір блоку визначається в процедурі відкриття файлу (Reset, Rewrite). Безпосередньо для виконання операцій використовуються процедури Blockread і Blockwrite. Процедура procedureBlockread (var F: File; varBuf; Count: Integer [; varAmttransferred: Integer]); виконує запис блоку з файлу в буфер. Параметр F посилається на файлову змінну, що не типізується, пов’язану з потрібним файлом.
Параметр Buf визначає будь-яку змінну (число, рядок, масив, структуру), в яку читаються байти з файлу. Параметр Count містить число прочитуваних блоків. Нарешті, необов’язковий параметр Amttransferred повертає число реально лічених блоків.
При використанні блокового читання або запису розмір блоку необхідно вибирати так, щоб він був кратний розміру одного значення того типу, який зберігається у файлі. Наприклад, якщо у файлі зберігаються значення типу Double (8 байт), то розмір блоку може бути рівний 8, 16, 24, 32 і так далі.
програма команда файл delphi
Розділ Ш. Розробка програмного продукту
3.1 Розробка основних форм, розробка програми та інтерфейсу користувача, їх опис
Можливість виконання простих та складних арифметичних операції (зокрема обов’язкові косинус та синус в інженерному калькуляторі)
Системні вимоги до програми:
— Операційна система Microsoft 7/Хр/Vista. (на інших операційних системах програма не тестувалася).
— Вимоги до комп`ютерного обладнання:
— Будь який комп`ютер з вище вказаною операційною системою.
Зовнішній вигляд програми
Мал.1. Зовнішній вигляд програми
3.2 Програмування графічного користувацького інтерфейсу
Мал. 2 Введення вхідних даних Залежно від обраного варіант у програмі відбувається обрахування заданих дій.
Мал. 3 Результати розрахунків косинус 45 градусів Мал. 4 Результати знаходження синуса 180 градусів У випадку введення невірних вхідних даних, можна їх видалити натисканням кнопки С (Мал. 5):
Мал. 5
3.2.1 Команди та компоненти, використані у програмі та опис ПЗ
— Button (кнопка);
— Edit (поле вводу інформації);
— TMainMenu
Для написання програми було використано таку форму:
На формі розмістив наступні компоненти:
Button — вибір дій
Edit ;
3.2.2 Опис процедур
Програма складається з трьох основних процедур:
Обчислення синуса:
procedure TForm1. Button1Click (Sender: TObject);
var a: extended;
begin
a:=StrToFloat (Edit1.Text);
a:=(Pi/180)*a;
ShowMessage (FloatToStrF (sin (a), fffixed, 2,2));
end;
Процедура яка обраховує значення косинуса:
procedure TForm1. Button20Click (Sender: TObject);
var
a:extended;
begin
a:=StrToFloat (Edit1.Text);
a:=a*(Pi/180);
ShowMessage (FloatToStrF (sin (a), fffixed, 2,2));
end;
Процедура циферблат в правій частині програми:
procedure TfrmCal. btn5Click (Sender: TObject);
begin
if (finalizar = true) or (visor = '1,') or (visor = '9') then
visor := '';
visor := visor + '0';
pnlVisor.caption := visor;
finalizar := false;
end;
Процедура Сбросу:
procedure TForm1. Button18Click (Sender: TObject);
begin
a:=0;
b:=0;
c:=0;
d:=0;
edit1.Text:='';
end;
3.2.3 Аналіз можливих проблем
Згідно плану необхідно:
1.Запустити програму
2.Ввести цифри
3.Вибрати конкретну дію
4.Отримати результат
5.Закрити програму Перед запуском програми перевірте справність комп’ютера, Вимкніть антивірусну програму, перевірте чи сумісна дана програма з вашою операційною системою, при виникненні питань щодо програми звертатися за адресою: [email protected]
Приємного користування програмою)
Висновки
Отже існують такі типи інтерпретаторів:
Простий інтерпретатор аналізує і відразу виконує (власне інтерпретація) програму покомандно (або порядково), по мірі надходження її сирцевого коду на вхід інтерпретатора. Перевагою такого підходу є миттєва реакція. Недолік — такий інтерпретатор виявляє помилки в тексті програми тільки при спробі виконання команди (або рядка) з помилкою.
Інтерпретатор компілюючого типу — це система з компілятора, який перекладає сирцевий код програми в проміжне представлення, наприклад, в байт-код або p-код, і власне інтерпретатора, який виконує отриманий проміжний код (так звана віртуальна машина). Перевагою таких систем є більша швидкодія виконання програм (за рахунок винесення аналізу сирцевого коду в окремий, разовий прохід, і мінімізації цього аналізу в інтерпретаторі). Недоліки — більші вимоги до ресурсів і вимога на коректність сирцевого коду. Застосовується в таких мовах, як Java, Tcl, Perl (використовується байт-код), REXX (зберігається результат парсинга сирцевого коду), а також у різних СУБД (використовується p-код).
Інтерпретатор компілюючого типу складається з компілятора мови і простого інтерпретатора з мінімізованим аналізом сирцевого коду. Сирцевий код для такого інтерпретатора не обов’язково повинен мати текстовий формат, це може бути машинний код якоїсь існуючої апаратної платформи. Наприклад, віртуальні машини типу QEMU, Bochs, VMware включають в себе інтерпретатори машинного коду процесорів сімейства x86.
Деякі інтерпретатори (наприклад, для мов Lisp, Scheme, Python, Basic та інших) можуть працювати в режимі діалогу або так званого циклу читання-обчислення-друку (англ. read-eval-print loop, REPL). У такому режимі інтерпретатор зчитує закінчену конструкцію мови (наприклад, s-expression у мові Lisp), виконує її, друкує результати, після чого переходить до очікування введення користувачем наступної конструкції.
Слід також зазначити, що режими інтерпретації можна знайти не тільки в програмному, а й апаратному забезпеченні. Так, багато мікропроцесорів інтерпретують машинний код за допомогою вбудованих мікропрограм, а процесори сімейства x86, починаючи з Pentium (наприклад, на архітектурі Intel P6), під час виконання машинного коду попередньо транслюють його у внутрішній формат (в послідовність мікрооперацій).
При створенні даної програми мною були використані всі мої навички в програмуванні набуті за чотири неповних роки навчання в технікумі МАУП. Програма була створена в Delphi 7.0 Lite, при створенні програми, я скористався кодами які є в вільному доступі в мережі Викіпедія.
Список використаних джерел:
1. Delphi 7 / подобщ. ред. А. Д. Хомоненко. — СПб.: БХВ-Петербург, 2007. — 1216 с.
2. Assembler. Учебник для вузов. 2-е изд. — СПб.: Питер, 2007. — 637с.
3. Архангельский А. Я. Приемыпрограммирования в Delphi на основе VCL. — М.: «Бином-Пресс», 2006 г. — 944 с.
4. Фленов М. Е. БиблияDelphi. — СПб.: БХВ-Петербрг, 2004. — 880 с.
5. Стивенс Р. Delphi. Готовыеалгоритмы / РодСтивенс; Пер. с англ. Мерещука П. А. — 2-е изд., стер. — М.: ДМК Пресс; СПб.: Питер, 2004. — 384 с.: ил.
Додаток А
Лістинг програми
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, XPMan, Menus;
type
TForm1 = class (TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button18: TButton;
XPManifest1: TXPManifest;
Button19: TButton;
Button20: TButton;
mm1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
btn1: TButton;
btn2: TButton;
btn3: TButton;
procedure FormCreate (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure Button2Click (Sender: TObject);
procedure Button3Click (Sender: TObject);
procedure Button4Click (Sender: TObject);
procedure Button5Click (Sender: TObject);
procedure Button6Click (Sender: TObject);
procedure Button7Click (Sender: TObject);
procedure Button8Click (Sender: TObject);
procedure Button9Click (Sender: TObject);
procedure Button10Click (Sender: TObject);
procedure Button11Click (Sender: TObject);
procedure Button12Click (Sender: TObject);
procedure Button13Click (Sender: TObject);
procedure Button14Click (Sender: TObject);
procedure Button15Click (Sender: TObject);
procedure Button16Click (Sender: TObject);
procedure Button17Click (Sender: TObject);
procedure Button18Click (Sender: TObject);
procedure Button19Click (Sender: TObject);
procedure Button20Click (Sender: TObject);
procedure N2Click (Sender: TObject);
procedure N1Click (Sender: TObject);
procedure btn1Click (Sender: TObject);
procedure btn2Click (Sender: TObject);
procedure btn3Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1; a, b, c, d: extended; znak: char;
implementation
{$R *.dfm}
procedure TForm1. FormCreate (Sender: TObject);
begin
a:=0;
b:=0;
c:=0;
d:=0;
end;
procedure TForm1. Button1Click (Sender: TObject);
begin
edit1.Text:=edit1.Text+'1';
end;
procedure TForm1. Button2Click (Sender: TObject);
begin
edit1.Text:=edit1.Text+'2';
end;
procedure TForm1. Button3Click (Sender: TObject);
begin
edit1.Text:=edit1.Text+'3';
end;
procedure TForm1. Button4Click (Sender: TObject);
begin
edit1.Text:=edit1.Text+'4';
end;
procedure TForm1. Button5Click (Sender: TObject);
begin
edit1.Text:=edit1.Text+'5';
end;
procedure TForm1. Button6Click (Sender: TObject);
begin
edit1.Text:=edit1.Text+'6';
end;
procedure TForm1. Button7Click (Sender: TObject);
begin
edit1.Text:=edit1.Text+'7';
end;
procedure TForm1. Button8Click (Sender: TObject);
begin
edit1.Text:=edit1.Text+'8';
end;
procedure TForm1. Button9Click (Sender: TObject);
begin
edit1.Text:=edit1.Text+'9';
end;
procedure TForm1. Button10Click (Sender: TObject);
begin
edit1.Text:=edit1.Text+'0';
end;
procedure TForm1. Button11Click (Sender: TObject);
begin
edit1.Text:=edit1.Text+',';
end;
procedure TForm1. Button12Click (Sender: TObject);
begin
c:=strtofloat (edit1.Text);
c:=c*(-1);
edit1.Text:=floattostr (c);
end;
procedure TForm1. Button13Click (Sender: TObject);
begin
a:=strtofloat (edit1.Text);
edit1.Text:='';
znak:='+';
end;
procedure TForm1. Button14Click (Sender: TObject);
begin
a:=strtofloat (edit1.Text);
edit1.Text:='';
znak:='-';
end;
procedure TForm1. Button15Click (Sender: TObject);
begin
a:=strtofloat (edit1.Text);
edit1.Text:='';
znak:='*';
end;
procedure TForm1. Button16Click (Sender: TObject);
begin
a:=strtofloat (edit1.Text);
edit1.Text:='';
znak:='/';
end;
procedure TForm1. Button17Click (Sender: TObject);
begin
b:=strtofloat (edit1.text);
case znak of
'+':d:=a+b;
'-':d:=a-b;
'*':d:=a*b;
'/':d:=a/b;
end;
edit1.Text:=floattostr (d);
end;
procedure TForm1. Button18Click (Sender: TObject);
begin
a:=0;
b:=0;
c:=0;
d:=0;
edit1.Text:='';
end;
procedure TForm1. Button19Click (Sender: TObject);
var a: extended;
begin
a:=StrToFloat (Edit1.Text);
a:=a*Pi/180;
ShowMessage (FloatToStrF (sin (a), fffixed, 2,2));
end;
procedure TForm1. Button20Click (Sender: TObject);
var
a:extended;
begin
a:=StrToFloat (Edit1.Text);
a:=a*(Pi/180);
ShowMessage (FloatToStrF (sin (a), fffixed, 2,2));
end;
procedure TForm1. N2Click (Sender: TObject);
begin
ShowMessage ('Програму створив студент ОПСК-41 Чопов С.О.');
end;
procedure TForm1. N1Click (Sender: TObject);
begin
close;
end;
procedure TForm1. btn1Click (Sender: TObject);
var
a:extended;
begin
a:=StrToFloat (Edit1.Text);
a:=a*a;
ShowMessage (FloatToStrF ((a), fffixed, 2,2));
end;
procedure TForm1. btn2Click (Sender: TObject);
var
a:extended;
begin
a:=StrToFloat (Edit1.Text);
a:=a*a*a;
ShowMessage (FloatToStrF ((a), fffixed, 3,2));
end;
procedure TForm1. btn3Click (Sender: TObject);
var
a:extended;
begin
a:=StrToFloat (Edit1.Text);
a:=Sqrt (a);
ShowMessage (FloatToStrF ((a), fffixed, 3,3));
End.
Додаток Б
Блок-схема