Програмування С++

Розгляд мови об'єктно-орієнтованого програмування C++ - методології, яка концентрується на зв'язках між об'єктами програмної системи. Створення програми "Grephics", яка призначена для роботи з графічним зображенням за допомогою програми C++Builder 6.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 17.05.2012
Размер файла 377,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Загальна частина

Мова програмування Сi була розроблена в 1972 р. Деннисом Рiтчi, який є одним з авторів операцiйноi системи UNIX. Мова програмування Сi пізніше була використана для програмування цiеi системи, а також багатої бібліотеки обслуговуючих програм, оскільки, являлася універсальною мовою загального призначення, мова Сi зручна для програмування системних задач. Поява мікрокомп'ютерів закріпила позицii мови Сi. Було створено близько 30 його нових компіляторів, а після проведення Американським національним інститутом стандартів (American National Standards Institute) робiт по стандартизацii в області програмування почали розроблятися компілятори, що вiдповiдали опублікованому весною 1986 р. проекту стандарту.

У 80-х роках мова С++ стала одною з найбільш розповсюджених та універсальних мов програмування. З допомогою цієї мови можна створювати програми для широкого класу комп'ютерів. В 70-х роках серед створювачів мов програмування популярною стала концепція об'єкту. Об'єкт є сукупністю коду і даних, що створена для відтворення властивостей фізичних предметів чи абстрактних понять.

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

Об'єктно-орiєнтоване програмування є методом програмування, який імітує виконання людиною якої-небудь роботи. Воно більш структуроване i більш модульне i абстрактне, ніж традиційне програмування.

За винятком другорядних деталей C++ є надмножиною мови програмування C. Крім можливостей, що дає C, C++ надає гнучкі й ефективні засоби визначення нових типів. Використовуючи визначення нових типів, програміст може розділяти розроблювальну програму на легко контрольовані частини. Такий метод побудови програм часто називають абстракцією даних. Інформація про типи утримується в деяких об'єктах типів, визначених користувачем. Такі об'єкти прості й надійні у використанні в тих ситуаціях, коли їхній тип не можна встановити на стадії компіляції. Програмування з застосуванням таких об'єктів часто називають об'єктно-орієнтованим. При правильному використанні цей метод дає більш короткі й зрозуміліші контрольовані програми.

Ключовим поняттям в С++ є клас. Клас - це тип, визначений користувачем. Класи забезпечують захист (закриття) даних, гарантовану ініціалізацію даних, не явне перетворення типів для типів, визначених користувачем, динамічне завдання типу, контрольоване користувачем керування пам'яттю і механізми перевантаження операцій. C++ надає набагато кращі, чим у C, засоби вираження модульності програми і перевірки типів. У мові є також удосконалення, не пов'язані безпосередньо з класами, що включають у себе символічні константи, inline- підстановку функцій, параметри функції по замовчуванню, перевантажені імена функцій, операції керування вільною пам'яттю. У C++ збережені можливості мови C по роботі з основними об'єктами апаратного забезпечення (біти, байти, слова, адреси і т.п.). Це дозволяє дуже ефективно реалізовувати типи, обумовлені користувачем.

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

В С++ деякі об'єкти є частиною самої мови. Але в цілому задача створення нових об'єктів полягає на користувача. В Borland C++ є велика кількість типів об'єктів, але реальне використання мови потребує утворення нових типів. Ефективність ООП проявляється тільки при утворенні і застосуванні груп зв'язаних між собою об'єктів. Такі групи зазвичай називають ієрархіями класів. Розвиток цих ієрархій класів є основою в діяльності ООП.

C++ і його стандартні бібліотеки спроектовані так, щоб забезпечувати мобільність. Наявна на сучасний момент реалізація мови буде йти в більшості систем, що підтримують C. З C++ програм можна використовувати C бібліотеки, і з C++ можна використовувати велику частину інструментальних засобів, що підтримують програмування на C.

Всі мови об'єктна орієнтованого програмування (ООП), включаючи С++, основані на трьох основних концепціях, які називаються: інкапсуляція, поліморфізм і наслідування.

1.1 Постановка задачі

Одним із важливих принципів С++ є можливість захисту даних від некоректного використання. Основним способом організації інформації в Сі++ є класи. На відміну від типу структура (struct) мови Сі, що складається тільки з полів, клас (class) Сі++ складається з полів і функцій-членів або методів (англ. member functions). Поля бувають публічними (public), захищеними (protected) і приватними (private). У Сі++ тип структура аналогічний типу клас, відмінність в тому, що за умовчанням поля і функції-члени у структури публічні, а у класу -- приватні. З публічними полями можна робити зовні класу все, що завгодно. До захищених і приватних полів не можна звертатися ззовні класу, щоб не порушити цілісність даних класу. Спроба такого звернення викличе помилку компіляції. До таких полів можуть звертатися тільки функції-члени класу (а також так звані функції-друзі і функції-члени класів-друзів;) Поза тілом функцій-членів (а також друзів) захищені і власні поля недоступні навіть для читання. Такий захист полів називається інкапсуляцією.

Використовуючи інкапсуляцію, автор класу може захистити свої дані від некоректного використання. Крім того, вона замислювалася для полегшення сумісної розробки класів. Малося на увазі, що зміна способу зберігання даних, якщо вони оголошені як захищені або приватні не вимагає відповідних змін в класах, які використовують змінений клас. Наприклад, якщо в старій версії класу дані зберігалися у вигляді лінійного списку, а в новій версії -- у вигляді дерева, ті класи, які були написані до зміни формату зберігання даних, переписувати не буде потрібно, якщо дані були приватними або захищеними (у останньому випадку -- якщо використовуючи класи не були класами-нащадками), оскільки жоден з них цих класів не міг би безпосередньо звертатися до даних, а тільки через стандартні функції, які в новій версії мають вже коректно працювати з новим форматом даних. Навіть оператор доступу operator [] може бути визначений як така стандартна функція. Функції-члени, як і поля, можуть бути публічними, захищеними і приватними. Публічні функції може викликати будь-хто, а захищені і власні -- тільки функції-члени і друзі.

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

В С++ передбачена реалізація такого механізму шляхом використання конструкторів та деструкторів.

Для реалізації дружніх функцій розробив програму «Kalendar».

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

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

Динамічне програмування корисне якщо на різних шляхах багаторазово зустрічаються одні і ті ж підзадачі; основний технічний прийом - запам'ятовувати рішення підзадач, що зустрічаються, на випадок, якщо та ж підзадача зустрінеться знову.

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

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

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

1.2 Характеристика ПК і ОС

Пк:

Комп'ютер:

Операційна система Microsoft Windows XP Proffesional

Пакет оновлення ОС Service Pack 3

Ім'я користувача XAHTEP

Системна плата:

Тип ЦП Intel(R)

Atom inside Duo 1.67

Чипсет системної плати Intel Springdale

I848P/i865P/i865PE

Системна пам'ять 448(1x DDR 1)

Тип BIOS Biostar (09/25/05)

Розділи:

С: (NTFS) 18.4 Гб (1.13 Гб вільно)

D: (NTFS) 56.1 Гб (7.36 Гб вільно)

-------------------------------------------------------------------------------------------

Motherboard 09/23/2003-848P-6A79AABEC-00

--------------------------------------------------------------------------------------------

Операційна система:

Властивості операційної системи:

Назва ОС Microsoft Windows XP

Professional

Кодова назва ОС Whistler

Мова ОС Російська

Тип ядра ОС Uniprocessor Free

Версія ОС Black-Dark Aero

Пакeт оновлення ОС Service Pack 2

Дата інсталяції ОС 12.10.2010

Коренева папка ОС C:\WINDOWS

1.3 Опис мови програмування

Мова програмування формальна мова представлення програм для системи програмування.

Мови програмування низького рівня:

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

Переваги:

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

Недоліки:

- програміст, що працює з мовами низького рівня, має бути високої кваліфікації, добре розуміти будову комп'ютера.

- результуюча програма не може бути перенесена на комп'ютер з іншим типом процесора.

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

Мови програмування високого рівня:

- можна сказати є більш зрозумілими людині, ніж комп'ютеру. Особливості конкретних комп'ютерних архітектур в них не враховуються, тому створені програми легко переносяться з комп'ютера на комп'ютер, де встановлено транслятор цієї мови. Розробляти програми на таких мовах значно простіше і помилок допускається менше. До таких мов відносяться:

Фортран, Кобол, Алгол, Pascal, Java, C, C++, C#, Objective C, Smalltalk, Delphi…

П'ять поколінь мов програмування:

-1 покоління:

початок 1950-х років - мови перших комп'ютерів. Перша мова асемблера, створена за принципом «одна інструкція - один рядок».

-2 покоління:

кінець 1950-х - початок 1960-х р.р. Розроблено символьний асемблер, в якому з'явилося поняття змінної. Це перша повноцінна мова програмування.

-3 покоління:

1960-ті р.р. - мови програмування високого рівня. Їхні характеристики:

відносна простота;

незалежність від конкретного комп'ютера;

можливість використання потужних синтаксичних конструкцій;

простота мов дає змогу писати невеликі програми і людям, які не є професійними програмістами. -4 покоління:

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

-5 покоління:

з середини 1990-х р.р. - до теперішнього часу. Це системи автоматизованого проектування програмного забезпечення (САПР ПЗ). Створення прикладних програм, редакторів, САПРів для людей, які не знайомі з програмуванням: Word, Excel, PcAD, OrCAD, PSPICE, MathCad, ACAD і т. д.

Але я хотів би детальніше розповісти промови високо рівня, а саме С та С++ :

Cі (англ. C) -- універсальна, процедурна, імперативна мова програмування загального призначення, розроблена у 1972 році Денісом Рітчі у Bell Telephone Laboratories з метою написання на ній операційної системи UNIX.

Хоча, С і було розроблено для написання системного програмного забезпечення, наразі вона досить часто використовується для написання прикладного програмного забезпечення.

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

Філософія:

С -- мінімалістична мова програмування. Серед її головних цілей: можливість прямолінійної реалізації компіляції, використовуючи відносно простий компілятор, забезпечити низькорівневий доступ до оперативної пам'яті, формувати лише декілька інструкцій машинної мови для кожного елементу мови, і не вимагати обширної динамічної підтримки. У результаті, код Сі придатний для більшості системного програмного забезпечення, яке традиційно писалося асемблером.

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

Мінімалізм:

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

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

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

У відповідь на критику мови C, як сильно типізованої мови, Керніґан та Рітчі, послались на основу філософії дизайну C: "Тим не менш, C зберігає основний принцип, який передбачає, що програмісти добре знають, що вони роблять, і вимагає лише, щоб вони чітко давали компіляторові знати про свої наміри".

Характеристика:

Як і більшість імперативних мов, заснованих на традиції АЛГОЛ, C має можливості для структурного програмування і дозволяє здійснювати рекурсії, у той час, як система статичної типізації даних запобігає виникненню багатьох непередбачуваних операцій. У Сі увесь виконуваний код міститься у функціях. Параметри функції завжди передаються за значеннями. Передача параметрів за вказівником реалізовується шляхом передачі значення вказівника. Гетерогенні сукупності типів даних (структури) дозволяють пов'язаним типам даних бути об'єднаними і маніпулювати ними, як єдиним цілим.

Cі також має наступні специфічні властивості:

- змінні можуть бути прихованими у вкладених блоках

- слабка типізація; наприклад, символи можуть використовуватися, як цілі числа;

- низькорівневий доступ до оперативної пам'яті шляхом перетворення машинних адрес вказівники;

- вказівники на функції і дані підтримують динамічний поліморфізм;

- масив індексів як вторинне поняття, визначається у термінах арифметики вказівників;

- стандартизований препроцесор C для макроозначення, включення файлу з джерельним кодом, умовної трансляції, і т.д.;

- комплексна функціональність, як то I/O, маніпуляція рядками, і делегування математичних функцій бібліотекам;

- відносно невелика кількість зарезервованих слів (32 у С89, і 37 у C99).

- лексичні структури, які нагадують B більше за ALGOL, наприклад:

{ ... } на відміну від ALGOL'івського begin ... end

знак рівності для призначення (копіювання), як це робиться у мові Fortran два знаки рівності використовуються для перевірки рівності (подібно до .EQ. у Fortran'і або одного знаку рівності у BASIC).

&& та || на відміну від ALGOL'івстких and та or (цим вона семантично відрізняється від бітових операторів & та |.

- велика кількість операторів об'єднання +=, ++, ....

Відсутня функціональність:

Сі має брак наступних можливостей, які є в інших мовах програмування,(хоча далеко не завжди брак деяких можливостей, наявних в якихось мовах, є недоліком):

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

- відсутність автоматичного керування пам'яттю (збір сміття)

- відсутня перевірка меж масиву

- відсутність напівдинамічних масивів аж до С99

- відсутність синтаксису для масивів, на зразок А..В, котрі використовують, як старіші, так і новіші мови програмування

- відсутність вкладених функцій (хоча, ця можливість є з деякими компіляторами, наприклад GCC. Однак знову ж, є суперечливою сама потреба вкладених функцій.)

- відсутність обробки виключних ситуацій

- відсутність рудиментарної підтримки модульного програмування

- відсутність статичного поліморфізму у формі перевантаження функцій або операторів

- відсутність підтримки об'єктно-орієнтованого програмування

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

- відсутність стандартних бібліотек для роботи з графікою та деяких інших бібліотек для прикладного програмування

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

Можливості мови підвищуються у спосіб використання сторонніх бібліотек. Більшість об'єктно-орієнтованих функцій включають спеціальний вказівник "цей"(this у C++,Java), який посилається на поточний об'єкт. Передаючи цей вказівник в якості аргументу функції у Сі, ті ж функціональні можливості можуть бути використані у Сі. Для прикладу, у C++ можна написати:

stack->push(val);

у той час, як у С це виглядало б, приміром, так:

push(stack, val);

де аргумент stack у С є вказівником на стуктуру (struct), що є еквівалентною цьому вказівнику у С++, який є вказівником на об'єкт.

Історія

Рання розробка

Початковий етап розробки Сі відбувся у стінах Bell Labs між 1969 та 1973 роками; Деніс Рітчі стверджує, що найбільш творчим був 1972 рік. Мову було названо "Сі" через те, що багато її можливостей було отримано від раніше створеної мови B.

Існує чимало легенд щодо походження мови Сі, і пов'язаної з нею операційної системи UNIX, серед них :

Розробка Сі стала результатом того, що його майбутні автори любили комп'ютерну гру, схожу на популярну гру Asteroids (Астероїди). Вони вже давно грали у неї на головному сервері компанії, який був недостатньо потужним, і повинен був обслуговувати близько ста користувачів. Томпсон і Рітчи порахували, що їм не вистачає контролю над космічним кораблем для того, щоб уникати зіткнень з деякими каменями. Тому вони вирішили перенести гру на вільний PDP-7, що стоїть в офісі. Проте цей комп'ютер не мав операційної системи, що змусило їх її написати. Врешті-решт, вони вирішили перенести цю операційну систему ще й на офісний PDP-11, що було дуже важко, оскільки її код був цілком написаний на асемблері. Було винесено пропозицію використати якусь високорівневу портативну мову, щоб можна було легко переносити ОС з одного комп'ютера на іншій. Мова B, яку вони спершу хотіли використати, виявилася позбавленою функціональності, здатної використовувати нові можливості PDP-11. Тому вони і зупинилися на розробці мови С.

Найперший комп'ютер, для якого була спочатку написана UNIX, призначався для створення системи автоматичного заповнення документів. Перша версія UNIX була написана на асемблері. Пізніше для того, щоб переписати цю операційну систему, була розроблена мова С.

До 1974 року мова С стала достатньо функціональною для того, щоб переписати на ній більшу частину ядра UNIX, котре спершу було написане на асемблері PDP-11. Це було перше ядро операційної системи реалізоване не на асемблері.

K&R C:

У 1978 році Рітчи та Керніган опублікували першу редакцію книги «Мова програмування Сі». Ця книга, відома серед програмістів як «K&R». Описану у ній версію мови Сі, часто називають «K&R». Друга редакція цієї книги присвячена пізнішому стандарту ANSI C, описаному нижче.

K&R описує наступні особливості мови:

-Тип даних struct.

-Тип даних long int.

-Тип даних unsigned int.

Оператор =- було змінено на -=, щоби позбутися семантичної двозначності створюваної конструкціями, на зразок i=-10, яка могла інтерпретуватися, як i =- 10 або i = -10.

K&R часто вважають найголовнішою частиною мови, яку повинен підтримувати компілятор С. Багато років, навіть після виходу ANSI C, він вважався мінімальним рівнем, якого слід було дотримуватися програмістам, охочим добитися від своїх програм максимальної портативності, оскільки не всі компілятори тоді підтримували ANSI C, а код на K&R C був сумісним і з ANSI C: У ранніх версіях Cі, лише функції, що повертають значення з типом відмінним від int повинні були бути оголошеними, якщо вони використовувалися перед визначенням функції; функції без попереднього оголошення повинні повертати лише ціле число.

Для прикладу: long int SomeFunction(); int OtherFunction();

int CallingFunction()

{

long int test1;

int test2;

test1 = SomeFunction();

if (test1 > 0) test2 = 0;

else test2 = OtherFunction();

return test2;

}

У цьому прикладі, як SomeFunction, так і OtherFunction були оголошені перед своїм використанням. У K&R оголошенням OtherFunction можна було знехтувати.

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

Наступні декілька років після публікації K&R C, до мови було додано декілька неофіційних можливостей (у той час, як офіційного нового стандарту не було), котрі підтримувалися компіляторами від AT&T та деяких інших постачальників. Серед них:

функції з типом результату void;

функції, що повертають значення типу struct або union (а не вказівник)

присвоєння для типу struct

Визначник const, котрий робив об'єкт доступним лише для читання

Перечислюванні типи

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

ANSI C:

Наприкінці 1970-х, мова C випередила BASIC, і стала найпопулярнішою мовою програмування для мікрокомп'ютерів. Протягом 1980-х, її прийняли для використання в IBM PC, і її популярність почала зростати досить стрімкими темпами. У той же час, Бьярн Страуструп та інші працівники Bell Labs розпочали роботу над доданням об'єктно-орієнтованої конструкцій до C, що призвело до виникнення C++.

У 1983, Американський Національний Інститут Стандартів (ANSI) сформував комітет X3J11 для створення стандартної специфікації для мови C. У 1989, стандарт був ратифікований як ANSI X3.159-1989 "Мова Програмування C". Цю версію часто називають ANSI C, Стандартний C, або С89.

У 1990, стандарт (з декількома незначними модифікаціями) ANSI C ратифікувала Міжнародна Організація по Стандартизації (ISO), ISO/IEC 9899:1990.

У 1990, стандарт (з декількома незначними модифікаціями) ANSI C ратифікувала Міжнародна Організація по Стандартизації (ISO), ISO/IEC 9899:1990. Цю версію іноді називають C90. Тому, терміни "C89" і "C90" по суті, позначають одну мову.

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

Одна з цілей процесу стандартизації мови С полягала у розробці надмножини над K&R C, яка включала б чимало неофіційних можливостей. Комітети по стандартизації також додали не мало додаткових функцій, як то прототипи функцій (запозичені в C++), вказівники void, підтримку міжнародних наборів символів та мов і локалей, а також низку розширень для препроцесора. Синтаксис декларації параметрів також було розширено використовуючи запозичення з С++, хоча, інтерфейс K&R також допускається для збереження зворотної сумісності зі старим кодом.

C89 наразі підтримується усіма компіляторами С, і більшість існуючого коду написано на базі даного стандарту. Будь яка програма на писана на стандартній С, і без використання апаратно залежних засобів може бути скомпільована і запущена на будь якій операційній системі та апаратній архітектурі без будь яких обмежень ресурсів.

C99:

Після процесу стандартизації ANSI, специфікація мови C протягом якогось часу залишилася відносно статичною, тоді як C++ продовжувала еволюціонувати, у значній мірі завдяки своїм власним зусиллям по стандартизації. Нормативна Поправка 1, створила новий стандарт для мови C у 1995, але лише для того, щоб виправити деякі деталі стандарту C89 і додати обширнішу підтримки міжнародних наборів символів. Проте, стандарт піддався подальшому перегляду в кінці 1990-х, привівши до публікації ISO 9899:1999 у 1999 році. Цей стандарт зазвичай іменують, як "C99". Він був прийнятий, як стандарт ANSI у березні 2000.

Стандарт C99 ввів декілька нових особливостей, багато з яких вже були реалізовані у декількох компіляторах:

- вкладені функції.

- змінні можуть оголошуватися будь-де (як у C++).

- введено декілька нових типів даних, зокрма, long long int, явний логічний (булевий) тип даних, і комплексний тип для представлення комплексних чисел.

- масиви зі змінними довжинами.

- підтримка коротких, однорядкових коментарів, що починаються з //, як у BCPL та C++.

- нові бібліотечні функції, як наприклад snprintf.

- нові заголовочні файли, як то stdbool.h та inttypes.h.

- вдосконалена підтримка стандарту IEEE для роботи з плаваючою крапкою

- виправлено друкарські огріхи.

З того часу, як С набула великої популярності, для неї було написано чимало інших бібліотек. Бібліотеки часто пишуться С, оскільки компілятори C ґенерують ефективний об'єктний код; пізніше програмісти створюють інтерфейси до бібліотек таким чином, що ті можуть використовуватися високорівневими мовами, на кшталт Java, Perl та Python.

Критика:

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

Пов'язані мови:

Коли об'єктно-орієнтовані мови стали популярними, C++ і Objective-C були двома різними продовженнями C, які забезпечували об'єктно-орієнтовані можливості. Обидві мови спочатку функціонували, як препроцесори -- написаний на них код спочатку переводився на C, а потім компілювася компілятором C.

С++:

Мова програмування C++ розроблена на основі С, і була отримана у наслідок додавання Б'ярном Страуструпом до неї об'єктно-орієнтованої функціональності із C-подібним синтаксисом.

Objective-C:

Objective-C -- дуже "тонка" надбудова над С, який дозволяє об'єктно-орієнтоване програмування використовуючи гібрид динамічної/статичної парадигми типів. Основу синтаксису Objective-C склав синтаксис мови С, однак, синтаксис для його об'єктно-орієнтованих можливостей був запозичений у Smalltalk. Objective-C та C++ відрізняються своєю філософією.

програмування графічний зображення вuilder

2. Спеціальна частина

При написанні програми необхідно дотримуватися правила розміщення в тексті різних змістовних блоків. Будь-яку програму можна умовно розділити на дві основні частини (див. таблицю): розділ опису (розділ оголошень та угод; розділ текстів процедур та функцій) та розділ виконання (розділ основного блоку).

Заголовок програми складається із зарезервованого слова PROGRAM та імені програми, яке є ідентифікатором (цей рядок може бути відсутнім).

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

Розділ опису позначок LABEL містить перелічені через кому імена позначок переходу, які можуть являти собою ціле число (від 0 до 9999), рядок символів, символьно-цифрову конструкцію.

У розділі CONST містяться перелічені через кому константи, що використовуються в програмі.

У розділі TYPE можна визначити нові типи, тут можуть використовуватися раніше визначені в розділі CONST константи.

У розділі опису змінних VAR міститься список змінних, що використовуються в програмі, та визначається їх тип. Жорстке дотримання порядку оголошень позначок, констант, типів та змінних не потрібне.

Якщо в програмі використовуються процедури та/або функції, необхідно їх оголосити. Услід за зарезервованим словом PROCEDURE (FUNCTION) йде ім'я процедури (функції) та список формальних параметрів (якщо вони є). Далі йде оголошення локальних позначок, констант, типів та змінних. Локально оголошені конструкції доступні тільки всередині даної підпрограми.

Тіло процедури (функції) обмежується службовими словами BEGIN...END;.

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

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

2.1 Розробка алгоритму та його опис

Размещено на http://www.allbest.ru/

2.2 Створення та тестування програми

Для створення даної програми використовував програму C++Builder 6

Спочатку я створив форму в білдер, потім використовуючи панель інструментів та палітру компонентів створював на формі елементі для моєї програми такі як: Button, PictureBox, SaveDialogFile, MainMenu, ChekListBox, ComboBox

Виконує функції малювання, відкривання, зберігання зображення.

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

Також можна вибрати тип замальовки фігур

Зображення зберігається в різних форматах та є дуже зручним у використанні.

2.3 Інструкція програміста

Назва програми: Grephics.exe

Автор:

Мова програмування: С++

Файли, які використовує програма: Grephics.exe, Grephics.txt

Розмір файлу Grephics.exe ………………….….…665 Кб

Розмір файлу Grephics.txt …………………..………15 Кб

Розмір в оперативній пам'яті: 2 196 Кб.

Мінімальні вимоги до ПК:

Процесор: Pentium 233 MHz

Оперативна пам'ять: 32 Mb RAM

Операційна система: DOS v5, Windows 98/Me/2000/XP

2.4 Інструкція оператора

Програма представлена в даному курсовому проекті, має назву «Grephics» яка призначена для роботи з графічним зображенням та створенням його. Після запуску з”является вікно яке зображене нижче та можна зразу і приступати до роботи.

Програма не має помилок та зручна у вікористанні.

Висновки

Для забезпечення потреб програми ми використали об'єктна-орієнтований підхід.

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

Дана програма може працювати в операційній системі Windows.

Список використаної літератури

Глинський Я.М. С++

К. Джамса Учимся програмировать на языке C++

Brian w.Khernighan The C programming language

Dennis Ritchie The Development of the C Language

Stewart Bill History of the C Programming Language

Учебник C++ в Викиучебнике Основи мови програмування C++

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.