ВСТУП - ВНТУ



В?нницький нац?ональний техн?чний ун?верситет (повне найменування вищого навчального закладу) Факультет ?нформац?йних технолог?й та комп'ютерно? ?нженер?? (повне найменування ?нституту, назва факультету (в?дд?лення))Кафедра програмного забезпечення(повна назва кафедри (предметно?, циклово? ком?с??)Пояснювальна запискадо дипломно? роботибакалавр(осв?тньо-квал?ф?кац?йний р?вень)на тему: ?Розробка програмного додатку для вивчення ?ноземно? мови?Виконала:студентка 4 курсу, групи 1-П?-11бнапряму п?дготовки 6.050103 – Програмна ?нженер?я o (шифр ? назва напряму п?дготовки, спец?альност?) Доценко Т.В. p (пр?звище та ?н?ц?али)Кер?вник Рейда О. М. o (пр?звище та ?н?ц?али)Рецензент Ро?к О.М. . o (пр?звище та ?н?ц?али) В?нниця – 2015 р?кВ?нницький нац?ональний техн?чний ун?верситетФакультет ?нформац?йних технолог?й та комп'ютерно? ?нженер??Кафедра програмного забезпеченняОсв?тньо-квал?ф?кац?йний р?вень - бакалаврНапрям п?дготовки 6.050103 ?Програмна ?нженер?я?3572510173990ЗАТВЕРДЖУЮ Зав. каф. ПЗ, проф., д.т.н. __________А. М. П?тух”___” __________ 20___ р.00ЗАТВЕРДЖУЮ Зав. каф. ПЗ, проф., д.т.н. __________А. М. П?тух”___” __________ 20___ р.З А В Д А Н Н ЯНА БАКАЛАВРСЬКУ ДИПЛОМНУ РОБОТУ СТУДЕНТУДоценко Тетян? Володимир?вн?1. Тема роботи: Розробка програмного додатку для вивчення ?ноземно? мовиКер?вник роботи: Рейда Олександр Миколайович, к. т. н., доцентзатверджен? наказом вищого навчального закладу в?д “__”_____20__ року №__2. Строк подання студентом роботи _____________________________________3. Вих?дн? дан? до роботи : програмний додаток для вивчення ?ноземно? мови, наявн?сть модуля авторизац??, наявн?сть бази даних, наявн?сть модуля для вза?мод?? з базою даних, наявн?сть ориг?нального ?нформац?йного наповнення4. Зм?ст розрахунково-пояснювально? записки (перел?к питань, як? потр?бно розробити):Об?рунтування доц?льност? розробки;Анал?з засоб?в розробки програмного додатку для вивчення ?ноземно? мови; Програмна реал?зац?я тестового програмного додатку для вивчення ?ноземно? мови;Тестування програмного додатку.5. Перел?к граф?чного матер?алу (з точним зазначенням обов’язкових креслень):Модель схеми бази даних;ER-модель бази даних;?нтерфейс розроблених вид?в тест?в. 6. Консультанти розд?л?в проекту (роботи)Розд?лПр?звище, ?н?ц?али та посада КонсультантаП?дпис, датазавдання видавЗавданняПрийняв1-4Рейда О.М., доц.7. Дата видач? завдання_______________________________________________КАЛЕНДАРНИЙ ПЛАН№з/пНазва етап?в дипломного проекту (роботи)Строк виконання етап?в проекту ( роботи )Прим?тка1Об?рунтування доц?льност? розробки5.05.15Вик.2Анал?з засоб?в розробки програмного додатку для вивчення ?ноземно? мови9.05.15Вик.3Програмна реал?зац?я тестового програмного додатку для вивчення ?ноземно? мови15.05.15Вик.4Тестування програмного додатку17.06.15Вик.Студентка Доценко Т.В. ( п?дпис ) (пр?звище та ?н?ц?али)Кер?вник проекту (роботи) Рейда О.М. ( п?дпис ) (пр?звище та ?н?ц?али)ЗМ?СТ TOC \o "1-3" \h \z \u ВСТУП PAGEREF _Toc422426619 \h 51 ОБ?РУНТУВАННЯ ДОЦ?ЛЬНОСТ? РОЗРОБКИ PAGEREF _Toc422426620 \h 71.1 Анал?з предметно? област? PAGEREF _Toc422426621 \h 71.2 Анал?з ?снуючих вар?ант?в розв'язання досл?джувано? задач?. PAGEREF _Toc422426622 \h 71.3 Анал?з метод?в розв’язання задач? PAGEREF _Toc422426623 \h 122 АНАЛ?З ЗАСОБ?В РОЗРОБКИ ПРОГРАМНОГО ДОДАТКУ ДЛЯ ВИВЧЕННЯ ?НОЗЕМНО? МОВИ PAGEREF _Toc422426624 \h 152.1 Анал?з технолог?? розробки програмних додатк?в для вивчення ?ноземно? мови PAGEREF _Toc422426625 \h 152.2 Постановка задач? розробки PAGEREF _Toc422426626 \h 252.3 Розробка засоб?в реал?зац?? програмного продукту PAGEREF _Toc422426627 \h 262.3.1 Виб?р мови програмування PAGEREF _Toc422426628 \h 262.3.2 Виб?р системи управл?ння базами даних PAGEREF _Toc422426629 \h 423 ПРОГРАМНА РЕАЛ?ЗАЦ?Я ТЕСТОВОГО ПРОГРАМНОГО ДОДАТКУ ДЛЯ ВИВЧЕННЯ ?НОЗЕМНО? МОВИ PAGEREF _Toc422426630 \h 513.1 Виб?р середовища розробки програмного забезпечення PAGEREF _Toc422426631 \h 513.2 Розробка тем ? урок?в програмного додатку PAGEREF _Toc422426632 \h 613.3 Розробка вид?в тест?в ? алгоритму ?х оц?нювання PAGEREF _Toc422426633 \h 623.4 Розробка ?нтерфейсу вид?в тест?в програмного додатку PAGEREF _Toc422426634 \h 663.5 Розробка словник?в програмного додатку PAGEREF _Toc422426635 \h 703.6 Особливост? створення бази даних програмного додатку для вивчення ?ноземно? мови за допомогою SQL Server 2012 PAGEREF _Toc422426636 \h 714 Тестування програмного додатку PAGEREF _Toc422426637 \h 804.1 ?нструкц?я користувача PAGEREF _Toc422426638 \h 804.2 Тестування програмного додатку PAGEREF _Toc422426639 \h 83ВИСНОВКИ PAGEREF _Toc422426640 \h 85ПЕРЕЛ?К ПОСИЛАНЬ PAGEREF _Toc422426641 \h 87ДОДАТКИ PAGEREF _Toc422426642 \h 89ДОДАТОК А.Техн?чне завдання PAGEREF _Toc422426643 \h 90ДОДАТOК Б. Код програми PAGEREF _Toc422426644 \h 92ДОДАТОК В. ?люстративний матер?ал до захисту бакалаврсько? роботи PAGEREF _Toc422426645 \h 105ВСТУПНа сучасному етап? розвитку науки, культури та техн?ки знання ?ноземно? мови ? обов’язковим для спец?ал?ста будь-якого проф?лю. ?нтернет створю? ун?кальну можлив?сть для вивчення ?ноземних мов, дозволя? користуватися автентичними текстами, слухати ? сп?лкуватися з нос?ями мови, тобто в?н створю? природне мовне середовище.Комп'ютер ? ?нтернет в?дносяться до тих техн?чних засоб?в навчання ?ноземним мовам, як? не були розроблен? саме для ц??? мети ? виконують в першу чергу ?нш? функц??. Але у зв'язку з? сво?ми великими можливостями ?нтернет незабаром п?сля свого виникнення привернув увагу викладач?в-практик?в та методист?в. ?нтернет використову?ться сьогодн? для навчання р?зним предметам. Особливого значення в?н набув у викладанн? ?ноземних мов.Навчати ?ноземн?й мов? - це означа? навчати сп?лкуванню, перенесенню та сприйняттю ?нформац??. ?снують три област?, в яких ?нтернет може вивести навчання ?ноземним мовам на новий р?вень. Це комун?кац?я, ?нформац?я та публ?кац?я.Для полегшення вивчення ?ноземних мов використовуються спец?альн? програмн? додатки. У вигляд? комп'ютерних програм зараз реал?зован? сам? р?зн? п?дходи ? способи вивчення. При навчанн? програми здеб?льшого враховують в?кову категор?ю користувач?в, в?дпов?дно до яко? використовуються р?зн? п?дходи до навчання. Також врахову?ться базовий р?вень знань користувача (найчаст?ше визнача?ться за допомогою проходження тест?в), в?дпов?дно до якого в?дбува?ться подальший п?дб?р необх?дних для вивчення матер?ал?в [1].Актуальн?сть роботи поляга? в зростанн? потреби у програмних додатках для вивчення ?ноземних мов, як? дозволяють навчатися не залежно в?д м?сця ? часу, не мають обмежень у в?ц?, дозволяють обирати потр?бн? програми ? методики викладання та економлять ф?нансов? ресурси за рахунок використання безкоштовних програм.Метою роботи ? досл?дження ? розробка програмного додатку для вивчення ?ноземно? мови.Об'?ктом досл?дження ? методи ? засоби розробки web-додатк?в.Предметом досл?дження ? процес розробки програмного додатку для вивчення ?ноземно? мови.Головна задача – розробка програмного додатку для вивчення ?ноземно? мови.Також потр?бно реал?зувати так? задач?:розробити базу даних;розробити CRUD-функц?ональн?сть;розробити систему тест?в ? алгоритму ?х оц?нювання;розробити теми ? заняття;розробити словник;розробити можлив?сть п?дбору тем за ?нтересами;розробити програмний додаток для вивчення ?ноземно? мови.1 ОБ?РУНТУВАННЯ ДОЦ?ЛЬНОСТ? РОЗРОБКИ1.1 Анал?з предметно? област?Вже давно волод?ння ?ноземною мовою вважа?ться необх?дн?стю. Комп'ютерн? технолог?? здатн? значно полегшити процес навчання, що дуже раду?. На сьогодн?шн?й день ?снують програми для вивчення ?ноземних мов. Але потр?бно звернути увагу на те, що под?бного роду програми не сприяють досконалому оволод?нню мовою. Вивчення ?ноземно? мови ? працею, а програми можуть лише полегшити його, але без практики мову вивчити неможливо. Для вивчення мови в р?зних аспектах ?снують р?зн? програми. ? програми, як? допоможуть запам'ятати нов? слова, оволод?ти граматикою, поставити правильну вимову, вдосконалити навички ауд?ювання та читання. Ще ?снують програми-тести, як? дозволяють перев?рити вже отриман? ? засво?н? знання. Под?бних навчальних програм досить багато [2].Використання програмних додатк?в ма? наступн? переваги:економ?я часу;навчання з використанням програмних додатк?в не ма? обмежень у в?ц?;да? можлив?сть одночасно проходити програму по дек?лькох курсах;можлив?сть вибору програми ? методики викладання, яка найб?льше п?дходить користувачу;економ?я ф?нансових ресурс?в за рахунок використання безкоштовних програм.1.2 Анал?з ?снуючих вар?ант?в розв'язання досл?джувано? задач?.Busuu – програма для вивчення ?ноземних мов (див. рис. 1.1). Програма да? можлив?сть покращити знання ?ноземно? мови. Зручний ?нтерфейс ? в?дм?нний спос?б навчання робить програму одн??ю з кращих у сво?му род?.Програма да? можлив?сть вивчити базов? стандарти ?ноземного лексикону за допомогою р?зних матер?ал?в, що знаходяться в Busuu, серед яких присутн? р?зн? озвучен? д?алоги, а також ?нтерактивн? тексти. Кр?м цього, присутня можлив?сть в?дправити сво? зроблене завдання на перев?рку власникам певно? мови. 11 ?ноземних мов м?стяться в одному додатку, що сприя? зручност? користувача (французька, китайська, японська, англ?йська, португальська, ?спанська, н?мецька, ?тал?йська, польська, турецька та рос?йська) [3].Рисунок 1.1 – ?нтерфейс програми BusuuБезкоштовна програма Duolingo призначена для комфортного вивчення найб?льш поширених мов (див. рис. 1.2). Додаток волод?? невеликим розм?ром ? низькими системними вимогами. Duolingo п?дходить як для новачк?в, так ? людей, як? волод?ють хорошими знаннями то? чи ?ншо? ?ноземно? мови. Користувач? програми можуть вибрати два режими навчання – перший явля? собою традиц?йний метод, за допомогою якого можна вивчати нов? слова, ? другий, який ? тестовим – в?н перев?ря? ваш? знання. Програма п?дтриму? безл?ч популярних у св?т? мов, серед яких англ?йська, н?мецька, французька, ?спанська, ?тал?йська та ?нш?.Навчання зд?йсню?ться наступним способом – користувач завантажу? т? чи ?нш? дан? на сервер Duolingo, п?сля чого програма переводить ?х на вибрану мову. Завантаження документ?в на сервер додатка дозволя? розробникам заробляти кошти, завдяки чому Duolingo ? абсолютно безкоштовним способом навчання ?ноземним мовам. Програма п?дтриму? рос?йський ?нтерфейс ? ? простою в управл?нн? [4].Рисунок 1.2 – ?нтерфейс програми DuolingoАнгл?йська за м?сяць – зручний ? простий у використанн? додаток для вивчення англ?йсько? мови (див. рис. 1.3). З його допомогою можна швидко ? ефективно вивчити основи дано? мови. Програма в?др?зня?ться невеликою вагою, зручним ?нтерфейсом ? можлив?стю оновлення словникових баз. Принцип вивчення в дан?й програм? поляга? в демонстрац?? в?зуальних зображень – користувач дивиться на картинку ? бачить внизу познача? ?? слово англ?йською мовою. Процес навчання розд?ля?ться на тематичн? уроки, п?сля кожного з яких, з метою закр?плення вивченого матер?алу, проводиться письмовий ?спит. Додаток ? умовно-безкоштовним – перш? три уроки можна вивчати безкоштовно, а надал? необх?дно буде сплатити ту чи ?ншу суму. Повна верс?я Англ?йського за м?сяць – це 30 повноц?нних урок?в ? майже дв? тисяч? найб?льш уживаних в англ?йськ?й мов? сл?в [5]. Рисунок 1.3 – ?нтерфейс програми Англ?йська за м?сяцьПринцип роботи програми Speak English поляга? в правильному в?дтворенн? англ?йських сл?в (див. рис. 1.4). Користувач уважно слуха? ? запам'ятову?, як потр?бно правильно вимовляти те чи ?нше слово. Таким чином, можна вносити корективи в свою вимову, домагаючись його пол?пшення. Додаток дозволя? вибрати безл?ч сл?в або фраз, як? ? найб?льш поширеними. При бажанн?, кожен може оновити базу даних за допомогою ?нтернет-з'?днання. За допомогою Speak English можна займатися вивченням англ?йсько? мови в будь-якому зручному для вас м?сц? – вдома , на робот?, на навчанн?, в черз? або в громадському транспорт?. Додаток можна встановлювати на б?льш?сть верс?й операц?йно? системи Android [6].Рисунок 1.4 – ?нтерфейс програми Speak EnglishПор?вняльний анал?з аналог?в наведено в таблиц? 1.1Таблиця 1.1 – Пор?вняльний анал?з аналог?вХарактеристики LexiGramBusuuDuolingoАнгл?йська за м?сяцьSpeak English123456Теор?я по граматиц?+----Завдання по граматиц?++---Теор?я по лексиц?+--++Завдання по лексиц?+++++Словник +++++Ауд?о ресурси+++-+Продовження табл. 1.1123456В?део ресурси++---Використання зображень++-++Наявн?сть приклад?в++--+Наявн?сть пояснень++---Л?цензуваннябезкоштовнаплатнабезкоштовнаумовно безкоштовнабезкоштовнаМожлив?сть вивчення дек?лькох мов+++--1.3 Анал?з метод?в розв’язання задач?На сучасному етап? розвитку науки, культури та техн?ки знання ?ноземно? мови ? обов’язковим для спец?ал?ста будь-якого проф?лю.?ноземн? мови м?цно ув?йшли в наше повсякденне життя. Люди все част?ше сп?лкуються з людьми з р?зних м?ст ? кра?н, пишуть листи, говорять по телефону ? все част?ше сп?лкуються по ?нтернету. Таке сп?лкування може бути особистим ? у службових справах. Можна кожен раз вдаватися до послуг перекладач?в, але вони не завжди виявляються поруч, ? це п?дштовху? до вивчення ?ноземних мов, що ста? все б?льш необх?дним в нашому повсякденному житт?.Вивчення ?ноземно? мови включа? два найважлив?ших аспекти – когн?тивний (здатн?сть до розумового сприйняття ? переробки зовн?шньо? ?нформац??) ? комун?кативний (можлив?сть вступати в комун?кац??). Без когн?тивного елементу, тобто без знання сл?в, ст?йких фраз ? вираз?в, неможливо перейти до подальших комун?кац?й або розмовам ?ноземною мовою, оск?льки саме з сл?в будуються фрази ? пропозиц??, ?, чим б?льше словниковий запас ?ноземних сл?в у вас ?, тим легше розум?ти написаний текст ? висловлювати сво? думки.?снують два основних способи вивчення ?ноземно? мови - через читання ? через усну мову. Перший спос?б п?дходить людям, що волод?ють хорошою лог?чною пам'яттю, схильн?стю до сп?вставлення та анал?зу. Другий оптимальний для людей з хорошим слухом ? ?м?тац?йними зд?бностями, а також розвиненою механ?чною пам'яттю. Особливо це стосу?ться д?тей. Який би спос?б ви для себе не вибрали, необх?дно освоювати вс? види мовленн?во? д?яльност?. Для цього необх?дно пост?йно вчити нов? слова, а також переступити мовленн?вий бар'?р.Для усп?шного вивчення ?ноземно? мови необх?дний д?алог з викладачем. За допомогою ?нших способ?в можна навчитися писати ? читати, але для того щоб навчитися говорити ? слухати, найкращий ефект буде досягнутий п?д час сп?лкування. На даний момент розроблена методика навчання ?ноземним мовам з використанням мереж? ?нтернет.Вс? можливост? ?нтернету для вивчення ?ноземно? мови можна згрупувати в наступн? пункти:Лекц?? та уроки з мови, що дають запас ново? лексики, що роз'яснюють якусь граматичну конструкц?ю, доповнен? вправами на закр?плення.Сп?лкування онлайн з мовним учителем, який може навчати вас безкоштовно або за символ?чну плату (це залежить в?д вивчення ? квал?ф?кац?? викладача).Визначення свого р?вня ? перев?рка нових знань за допомогою р?зних мовних тест?в.Перегляд в?деоролик?в з подальшим розбором вс?х граматичних конструкц?й, фразеолог?зм?в, складних фраз ? особливостей сленгу. Це можуть бути в?деоролики св?жих новин, художн? ф?льми або ?х уривки, телепередач?, присвячен? будь-яким темам.Сп?лкування з нос??м мови або ?ншим користувачем ?нтернету, який вивча? мову, що дозволя? практикуватися в розмовн?й мов? ? краще розум?ти мову на слух.Тематичне сп?лкування на мов?, що вивча?ться в групах, р?зн? дискус?? та обговорення по конкретн?й тем?, з попередн?м вивченням вс??? необх?дно? лексики. Наприклад, це може бути дискус?я з яких-небудь гострих питань, обговорення основ д?лового листування, пол?тична дискус?я.Спектр ?ноземних мов, у вивченн? яких може допомогти ?нтернет, дуже широкий, в?д англ?йсько? мови до японського. Перш за все, такий метод вивчення зручний людям, як? потребують вивченн? якогось вузького спрямування мови, наприклад медично? сфери чи сфери д?лового сп?лкування. Також ?нтернет здатний допомогти ус?м, хто не ма? можливост? найняти хорошого репетитора або п?ти на мовн? курси.Висновки:В даному розд?л? було проведено анал?з предметно? област?, ?снуючих вар?ант?в розв’язання досл?джувано? задач?. Проведено пор?внальний анал?з програм для вивчення ?ноземно? мови Busuu, Duolingo, Англ?йська за м?сяць, Speak English. Пор?вняльна характеристигка аналог?в занесена до таблиц?. Також був проведений анал?з метод?в розв’язання задач?.2 АНАЛ?З ЗАСОБ?В РОЗРОБКИ програмного додатку для вивчення ?ноземно? мови2.1 Анал?з технолог?? розробки програмних додатк?в для вивчення ?ноземно? мовиВеб-програмування (Веб-розробка) – це розд?л програмування, ор??нтований на розробку динам?чних ?нтернет-додатк?в. Мови веб-програмування д?ляться на дв? групи: кл??нтську ? серверну.Кл??нтськ? мови обробляються на сторон? користувача (в основному в браузер?). В?дпов?дно обробка скрипта залежить в?д браузера користувача, ? користувач ма? повноваження налаштувати св?й браузер так, щоб той взагал? ?гнорував скрипти. При цьому якщо браузер старий, в?н може не п?дтримувати ту чи ?ншу мову або верс?ю мови, на яку спирався розробник. З сучасними браузерами таких проблем виникати не повинно, до того ж мови програмування не так вже й часто кардинально оновлюються (раз на к?лька рок?в) ? кращ? з них давно в?дом?. Код кл??нтського скрипта може подивитися кожен, вибравши в меню свого браузера "Вих?дний код стор?нки".Перевага кл??нтського мови поляга? в тому, що обробка скрипт?в на так?й мов? може виконуватися без в?дправки документа на сервер. Програма в?дразу перев?рить правильне заповнення форми перед в?дправкою, ?, якщо необх?дно, виведе помилку. Зв?дси ж виплива? ? те обмеження, що за допомогою кл??нтського мови програмування н?що не може бути записано на сервер.Найпоширен?шим з кл??нтських мов ? JavaScript, розробниками якого ? компан?я Netscape сп?льно з компан??ю Sun Microsystems. Ще один популярний мова – це VBScript. Кр?м цього останн?м часом набрали популярн?сть так? технолог?? як AJAX, Adobe Flash, Microsoft Silverlight та ?н.Важливою стороною роботи серверних мов ? Система управл?ння базами даних (СКБД). Це, по сут?, теж сервер, на якому в певному користувачем порядку збер?га?ться р?зна необх?дна ?нформац?я, яка може бути викликана в будь-який момент.HTML (англ. HyperText Markup Language – Мова розм?тки г?пертекстових документ?в) – стандартна мова розм?тки веб-стор?нок в ?нтернет?. Б?льш?сть веб-стор?нок створюються за допомогою мови HTML (або XHTML). Документ HTML оброблю?ться браузером та в?дтворю?ться на екран? у звичному для людини вигляд?.HTML ? пох?дною мовою в?д SGML, успадкувавши в?д не? визначення типу документу та ?деолог?ю структурно? розм?тки тексту.Попри те, що HTML – штучна комп'ютерна мова, вона не ? мовою програмування.HTML разом ?з каскадними таблицями стил?в та вбудованими скриптами – це три основн? технолог?? побудови веб-стор?нок. HTML впроваджу? засоби для: створення структурованого документу шляхом позначення структурного складу тексту: заголовки, абзаци, списки, таблиц?, цитати та ?нше;отримання ?нформац?? ?з Всесв?тньо? мереж? через г?перпосилання;створення ?нтерактивних форм;включення зображень, звуку, в?део, та ?нших об'?кт?в до тексту.Розм?тка в HTML склада?ться з чотирьох основних компонент?в: елемент?в (та ?хн?х атрибут?в), базових тип?в даних, символьних мнемон?к та декларац?? типу документа.Документ HTML 4.01 склада?ться з трьох частин:Декларац?я типу документу (англ. Document type declaration, Doctype), на початку документа, в як?й визнача?ться тип документа (DTD).Шапка документу (знаходиться в межах елементу head), в як?й записано загальн? техн?чн? в?домост? або додаткова ?нформац?я про документ, яка не в?дтворю?ться безпосередньо в браузер?;Т?ло документу (може знаходитися в елементах body або frameset), в якому м?ститься основна ?нформац?я документа.Розширювана мова розм?тки (англ. Extensible Markup Language, скорочено XML) – запропонований консорц?умом World Wide Web (W3C) стандарт побудови мов розм?тки ??рарх?чно структурованих даних для обм?ну м?ж р?зними застосунками, зокрема, через ?нтернет. ? спрощеною п?дмножиною мови розм?тки SGML. XML документ склада?ться ?з текстових знак?в, ? придатний до читання людиною.Стандарт XML (англ. Recommendation, перше видання в?д 10 лютого 1998, останн?, четверте видання 29 вересня 2006) визнача? наб?р базових лексичних та синтаксичних правил для побудови мови описання ?нформац?? шляхом застосування простих тег?в. Цей формат достатньо гнучкий для того, аби бути придатним для застосування в р?зних галузях. ?ншими словами, запропонований стандарт визнача? метамову, на основ? яко?, шляхом запровадження обмежень на структуру та зм?ст документ?в визначаються специф?чн?, предметно-ор??нтован? мови розм?тки даних. Ц? обмеження описуються мовами схем (англ. Schema), такими як XML Schema (XSD), DTD або RELAX NG. Прикладами мов, основаних на XML ?: XSLT, XAML, XUL, RSS, MathML, GraphML, XHTML, SVG, ? також XML Schema.Коректний документ (англ. well-formed document) в?дпов?да? вс?м синтаксичним правилам XML. Документ, що не ? коректним, не може називатись XML-документом. Сум?сний синтаксичний анал?затор (англ. Conforming parser) не повинен обробляти так? документи. Зокрема, коректний XML документ ма?:Лише один елемент у корен?.Непорожн? елементи розм?чено початковим та к?нцевим тегами (наприклад, <пункт>Пункт 1</пункт>). Порожн? елементи можуть позначатися ?закритим? тегом, наприклад <IAmEmpty />. Така пара екв?валентна <IAmEmpty></IAmEmpty>.Один елемент не може мати дек?лька атрибут?в з однаковою назвою. Значення атрибут?в перебувають або в одинарних ('), або у подв?йних (") лапках.Теги можуть бути вкладен?, але не можуть перекриватись. Кожен некореневий елемент мусить повн?стю перебувати в ?ншому елемент?.Документ ма? складатися т?льки з правильно закодованих дозволених символ?в Юн?коду. ?диними кодуваннями, як? обов'язково ма? розум?ти XML-процесор, ? UTF-16 та UTF-8. Фактичне та задеклароване кодування (англ. character encoding) документа мають зб?гатись. Кодування може бути задекларовано ззовн?, як у заголовку ?Content-Type? при передач? по протоколу HTTP, або в самому документ? використанням явно? розм?тки на самому початку документа. У раз? в?дсутност? ?нформац?? про кодування, документ ма? бути в кодуванн? UTF-8 (або його п?дмножин? ASCII).Документ назива?ться вал?дним (англ. valid), якщо в?н ? коректним, м?стить посилання на граматичн? правила та повн?стю в?дпов?да? обмеженням, вказаним у цих правилах (DTD або XML Schema або ?ншому под?бному документ?).Синтаксичним анал?затором (часто, парсер в?д англ. parser) назива?ться програма або компонент, що чита? XML-документ, проводить синтаксичний анал?з, та в?дтворю? його структуру. Якщо синтаксичний анал?затор перев?ря? документ на вал?дн?сть, то такий анал?затор називають вал?датором (англ. validating).Назви елемент?в чутлив? до рег?стру л?тер. Наприклад, наступна пара елемент?в правильна:<Step> … </Step>у той час як ця – н?:<Step> … </step>Правильний виб?р назв для XML елемент?в п?дкреслюватиме значення даних у створен?й мов? розм?тки. Це сприятиме полегшенню роботи людей з такими документами, збер?гаючи можливост? для комп'ютерно? обробки даних. Виб?р зм?стовних назв переда? семантику елемент?в та атрибут?в для людини, без посилання на зовн?шню документац?ю. Однак це може призвести до надм?рност? розм?тки, що ускладню? редагування й зб?льшу? розм?р файл?в [7].JavaScript (JS) – динам?чна, об'?ктно-ор??нтованa мова програмування. Реал?зац?я стандарту ECMAScript. Найчаст?ше використову?ться як частина браузера, що нада? можлив?сть коду на сторон? кл??нта (такому, що викону?ться на пристро? к?нцевого користувача) вза?мод?яти з користувачем, керувати браузером, асинхронно обм?нюватися даними з сервером, зм?нювати структуру та зовн?шн?й вигляд веб-стор?нки. Мова JavaScript також використову?ться для програмування на сторон? серверу (под?бно до таких мов програмування, як Java ? C#), розробки ?гор, стац?онарних та моб?льних додатк?в, сценар??в в прикладному ПЗ (наприклад, в програмах з? складу Adobe Creative Suite), всередин? PDF-документ?в тощо.JavaScript класиф?кують як прототипну (п?дмножина об'?ктно-ор??нтовано?), скриптову мову програмування з динам?чною тип?зац??ю. Окр?м прототипно?, JavaScript також частково п?дтриму? ?нш? парадигми програмування (?мперативну та частково функц?ональну) ? деяк? в?дпов?дн? арх?тектурн? властивост?, зокрема: динам?чна та слабка тип?зац?я, автоматичне керування пам'яттю, прототипне насл?дування, функц?? як об'?кти першого класу.Незважаючи на схож?сть назв, мови Java та JavaScript ? двома р?зними мовами, що мають в?дм?нну семантику, хоча й мають схож? риси в стандартних б?бл?отеках та правилах ?менування. Синтаксис обох мов отриманний ?у спадок? в?д мови С, але семантика та дизайн JavaScript ? результатом впливу мов Self та Scheme.JavaScript ма? низку властивостей об'?ктно-ор??нтовано? мови, але завдяки концепц?? прототип?в п?дтримка об'?кт?в в н?й в?др?зня?ться в?д традиц?йних мов ООП. Кр?м того, JavaScript ма? ряд властивостей, притаманних функц?ональним мовам, – функц?? як об'?кти першого класу, об'?кти як списки, карр?нг (currying), анон?мн? функц??, замикання (closures) – що дода? мов? додаткову гнучк?сть.JavaScript ма? C-под?бний синтаксис, але в пор?внянн? з мовою С? ма? так? кор?нн? в?дм?нност?:об'?кти, з можлив?стю ?нтроспекц?? ? динам?чно? зм?ни типу через механ?зм прототип?вфункц?? як об'?кти першого класуобробка винятк?вавтоматичне приведення тип?вавтоматичне прибирання см?ттяанон?мн? функц??JavaScript м?стить дек?лька вбудованих об'?кт?в: Global, Object, Error, Function, Array, String, Boolean, Number, Math, Date, RegExp. Кр?м того, JavaScript м?стить наб?р вбудованих операц?й, як?, строго кажучи, не обов'язково ? функц?ями або методами, а також наб?р вбудованих оператор?в, що управляють лог?кою виконання програм. Синтаксис JavaScript в основному в?дпов?да? синтаксису мови Java (тобто, зрештою, успадкований в?д C), але спрощений пор?вняно з ним, щоб зробити мову сценар??в легкою для вивчення. Так, прим?ром, декларац?я зм?нно? не м?стить ?? типу, властивост? також не мають тип?в, а декларац?я функц?? може стояти в текст? програми п?сля не?Семантика мови схожа з семантикою мови Self.Одна з популярних технолог?й, що дозволила зробити стор?нки динам?чн?шими ? забезпечити нов? можливост? – це динам?чне завантаження ? вставка даних в документ, що отримала назву AJAX.При використанн? в рамках технолог?? DHTML JavaScript код включа?ться в HTML-код стор?нки ? викону?ться ?нтерпретатором, вбудованим в браузер. Код JavaScript вставля?ться в теги <script></script> з обов'язковим по специф?кац?? HTML 4.01 атрибутом type="text/javascript", хоча в б?льшост? браузер?в мова сценар??в за умовчанням саме JavaScript [8].Microsoft Silverlight – це мультимед?йна технолог?я схожа з Adobe Flash. Також Microsoft Silverlight – це плаг?н для браузера, який дозволя? запускати додатки, що м?стять ан?мац?ю, векторну граф?ку ? ауд?о-в?део ролики, що характерно для RIA (Rich Internet application). Silverlight нада? граф?чну систему, схожу з Windows Presentation Foundation, ? об'?дну? мультимед?а, граф?ку, ан?мац?ю ? ?нтерактивн?сть в одн?й програмн?й платформ?. В?н був розроблений, щоб працювати з XAML ? з мовами Microsoft .NET. XAML використову?ться для розм?тки стор?нок, що використовують векторну граф?ку ? ан?мац?ю. Текст, що м?ститься в Silverlight додатках, доступний для пошукових систем, так як в?н не комп?лю?ться, а доступний у вигляд? XAML. Silverlight також можна використовувати для того, щоб створювати в?джети для Windows Sidebar в Windows Vista.Silverlight п?дтриму? в?дтворення WMV, WMA ? MP3 для вс?х п?дтримуваних браузер?в, не вимагаючи при цьому додаткових компонент?в, таких як Windows Media Player.Silverlight дозволя? динам?чно завантажувати XML ? використовувати DOM для вза?мод?? з ним так само, як це робиться в Ajax. Silverlight м?стить об'?кт Downloader, завдяки якому можна скачувати скрипти, мед?а файли ? т.д., якщо це необх?дно додатком. Починаючи з верс?? 2.0, лог?ка програми може бути описана в будь-як?й з мов .NET, включаючи динам?чн? мови програмування, так? як Iron Ruby ? Iron Python, як? в свою чергу виконуються в DLR (Dynamic Library Runtime), а не CLR (Common Language Runtime ).AJAX (Asynchronous JavaScript And XML) – п?дх?д до побудови користувацьких ?нтерфейс?в веб-застосунк?в, за яких веб-стор?нка, не перезавантажуючись, у фоновому режим? надсила? запити на сервер ? сама зв?дти довантажу? потр?бн? користувачу дан?. AJAX – один з компонент?в концепц?? DHTML.Про AJAX заговорили п?сля появи в лютому 2005-го року статт? Джес? Джеймса Гарретта (Jesse James Garrett) ?Новий п?дх?д до веб-застосунк?в?. AJAX – не самост?йна технолог?я. Це ?дея.AJAX – це не самост?йна технолог?я, а швидше концепц?я використання дек?лькох сум?жних технолог?й. AJAX п?дх?д до розробки, який призначений для користувач?в ?нтерфейс?в, комб?ну? к?лька основних метод?в ? прийом?в:Використання DHTML для динам?чно? зм?ни зм?сту стор?нки.Використання XMLHttpRequest для звернення до сервера ?на льоту?, не перезавантажуючи всю стор?нку повн?стю.Альтернативний метод – динам?чне п?двантаження коду JavaScript в тег <SCRIPT> з використанням DOM, що зд?йсню?ться ?з використанням формату JSON).Динам?чне створення доч?рн?х фрейм?вВикористання цих п?дход?в дозволя? створювати набагато зручн?ш? веб-?нтерфейси користувача на тих стор?нках сайт?в, де необх?дна активна вза?мод?я з користувачем. AJAX – асинхронний, тому користувач може переглядати дал? контент сайту, поки сервер все ще обробля? запит. Браузер не перезавантажу? web-стор?нку ? дан? посилаються на сервер без в?зуального п?дтвердження (кр?м випадк?в, коли ми сам? захочемо показати процес з’?днання з сервером). Використання AJAX стало найпопулярн?ше п?сля того, як компан?я Google почала активно використовувати його при створенн? сво?х сайт?в, таких як Gmail, Google Maps ? Google Suggest. Створення цих сайт?в п?дтвердило ефективн?сть використання даного п?дходу. – технолог?я створення веб-застосунк?в ? веб-серв?с?в в?д компан?? Майкрософт. Вона ? складовою частиною платформи ? розвитком стар?шо? технолог?? Microsoft ASP. У цей час останньою верс??ю ц??? технолог?? ? 4.5. зовн? багато в чому збер?га? схож?сть ?з стар?шою технолог??ю ASP, що дозволя? розробникам в?дносно легко перейти на . У той же час внутр?шн?й устр?й ?стотно в?др?зня?ться в?д ASP, оск?льки вона заснована на платформ?. NET ?, отже, використову? вс? нов? можливост?, що надаються ц??ю платформою.Хоча бере свою назву в?д старо? технолог?? Microsoft ASP, вона значно в?д не? в?др?зня?ться. Microsoft повн?стю перебудувала , ?рунтуючись на Common Language Runtime (CLR), який ? основою вс?х застосунк?в Microsoft. NET. Розробники можуть писати код для , використовуючи практично будь-як? мови програмування, що входять у комплект. NET Framework (C#, Visual , ? JScript. NET). ма? перевагу у швидкост? в пор?внянн? з? скриптовими технолог?ями, тому що при першому зверненн? код комп?лю?ться ? пом?ща?ться в спец?альний кеш, ? згодом т?льки викону?ться, не вимагаючи витрат часу на парсинг, оптим?зац?ю, ? т. д.Переваги перед ASP:Комп?льований код викону?ться швидше, б?льш?сть помилок в?дловлю?ться ще на стад?? розробки.Значно пол?пшена обробка помилок часу виконання, з використанням блок?в try .. catch.Користувальницьк? елементи управл?ння (controls) дозволяють вид?ляти часто використовуван? шаблони, так? як меню сайту.Використання метафор, вже застосовуються в Windows-застосунках, наприклад, таких як елементи керування та под??.Розширюваний наб?р елемент?в управл?ння ? б?бл?отек клас?в дозволя? швидше розробляти застосунки. спира?ться на багатомовн? можливост? .NET, що дозволя? писати код стор?нок на , , Visual C/C++ тощо.Можлив?сть кешування вс??? стор?нки або ?? частини для зб?льшення продуктивност?.Можлив?сть кешування даних, що використовуються на стор?нц?.Можлив?сть под?лу в?зуально? частини та б?знес-лог?ки з р?зних файл?в (?code behind?).Розширювана модель обробки запит?в.Розширена под??ва модель.Розширювана модель серверних елемент?в керування.Наявн?сть master-стор?нок для завдання шаблон?в оформлення стор?нок.П?дтримка CRUD-операц?й при робот? з таблицями через GridView.Вбудована п?дтримка AJAX. ма? перевагу у швидкост? в пор?внянн? з ?ншими технолог?ями, заснованими на скриптах.Можна навести певн? пор?вняння. Так, ASP – пох?дна в?д Win32, XML ? HTML; PHP – в?д XML, HTML, Java ? CDI, тод? – в?д HTML ? .NET (XML ? XAML в?дпов?дно). При цьому, якщо зазвичай Rich Media Application створюють за допомогою Flash, тепер це робиться за допомогою модуля Silverlight, так само через сам . – багатше середовище для розробки та розгортання веб-ресурс?в. У можна працювати з будь-якою .NET мовою, аж до Managed C++ ? Visual Basic, що дозволя? не замислюватися про перех?д на C#.Корпорац?я Майкрософт випустила к?лька розширень для : MVC FrameworkМодель-вигляд-контролер (або Модель-вид-контролер, англ. Model-view-controller, MVC) – арх?тектурний шаблон, який використову?ться п?д час проектування та розробки програмного забезпечення.Цей шаблон под?ля? систему на три частини: модель даних, вигляд даних та керування. Застосову?ться для в?докремлення даних (модель) в?д ?нтерфейсу користувача (вигляду) так, щоб зм?ни ?нтерфейсу користувача м?н?мально впливали на роботу з даними, а зм?ни в модел? даних могли зд?йснюватися без зм?н ?нтерфейсу користувача.Мета шаблону – гнучкий дизайн програмного забезпечення, який повинен полегшувати подальш? зм?ни чи розширення програм, а також надавати можлив?сть повторного використання окремих компонент?в програми. Кр?м того використання цього шаблону у великих системах призводить до певно? впорядкованост? ?х структури ? робить ?х зрозум?л?шими завдяки зменшенню складност?.Арх?тектурний шаблон Модель-Вид-Контролер (MVC) под?ля? програму на три частини. У тр?ад? до обов'язк?в компоненту Модель (Model) входить збер?гання даних ? забезпечення ?нтерфейсу до них. Вигляд (View) в?дпов?дальний за представлення цих даних користувачев?. Контролер (Controller) керу? компонентами, отриму? сигнали у вигляд? реакц?? на д?? користувача, ? пов?домля? про зм?ни компоненту Модель. Така внутр?шня структура в ц?лому под?ля? систему на самост?йн? частини ? розпод?ля? в?дпов?дальн?сть м?ж р?зними компонентами.MVC под?ля? цю частину системи на три самост?йн? частини: введення даних, компонент обробки даних ? виведення ?нформац??. Модель ?нкапсулю? ядро даних ? основний функц?онал з ?х обробки. Також компонент Модель не залежить в?д процесу введення або виведення даних. Компонент виводу Вигляд може мати дек?лька вза?мопов'язаних областей, наприклад, р?зн? таблиц? ? поля форм, в яких в?добража?ться ?нформац?я. У функц?? Контролера входить мон?торинг за под?ями, що виникають в результат? д?й користувача (зм?на положення курсора миш?, натиснення кнопки або введення даних в текстове поле).Заре?строван? под?? транслюються в р?зн? запити, що спрямовуються компонентам Модел? або об'?ктам, в?дпов?дальним за в?дображення даних. В?докремлення модел? в?д вигляду даних дозволя? незалежно використовувати р?зн? компоненти для в?дображення ?нформац??. Таким чином, якщо користувач через Контролер внесе зм?ни до Модел? даних, то ?нформац?я, подана одним або дек?лькома в?зуальними компонентами, буде автоматично в?дкоригована в?дпов?дно до зм?н, що в?дбулися.2.2 Постановка задач? розробкиУ ход? виконання роботи необх?дно:досл?дити предметну область; виконати анал?з ?снуючих вар?ант?в розв'язання досл?джувано? задач?;виконати анал?з метод?в розв’язання задач?; виконати анал?з технолог?? розробки програмних додатк?в для вивчення ?ноземно? мови;виконати анал?з мов програмування;виконати анал?з систем управл?ння базами даних;досл?дити CRUD-функц?ональн?сть;виконати анал?з метод?в та п?дход?в до навчання ?ноземно? мови.На основ? отриманих результат?в:розробити базу даних;розробити CRUD-функц?ональн?сть, яка дозволятиме:додавати записи в базу даних;зд?йснювати пошук ? зчитування запис?в;редагувати записи;видалити ?снуюч? записи;розробити систему тест?в ? алгоритму ?х оц?нювання;розробити теми ? заняття;розробити словник;розробити можлив?сть п?дбору тем за ?нтересами;розробити програмний додаток для вивчення ?ноземно? мови.2.3 Розробка засоб?в реал?зац?? програмного продукту2.3.1 Виб?р мови програмуванняC – ун?версальна, процедурна, ?мперативна мова програмування загального призначення, розроблена у 1972 роц? Ден?сом Р?тч? у Bell Telephone Laboratories з метою написання нею операц?йно? системи UNIX. Хоча С ? було розроблено для написання системного програмного забезпечення, нараз? вона досить часто використову?ться для написання прикладного програмного забезпечення. С – м?н?мал?стична мова програмування. Серед ?? головних ц?лей: можлив?сть прямол?н?йно? реал?зац?? комп?ляц??, використовуючи в?дносно простий комп?лятор, забезпечити низькор?вневий доступ до оперативно? пам'ят?, формувати лише дек?лька ?нструкц?й машинно? мови для кожного елементу мови, ? не вимагати обширно? динам?чно? п?дтримки. У результат?, код С придатний для б?льшост? системного програмного забезпечення, яке традиц?йно писалося асемблером. Незважаючи на ?? низькор?внев? можливост?, мова проектувалася для машинно-незалежного програмування. Сум?сна з? стандартами та машинно-незалежно написана мовою C програма, може легко комп?люватися на велик?й к?лькост? апаратних платформ та операц?йних систем з м?н?мальними зм?нами. Мова стала доступною для велико? к?лькост? платформ, в?д вбудованих м?кроконтролер?в до суперкомп'ютер?в.Як ? б?льш?сть ?мперативних мов, заснованих на традиц?? АЛГОЛ, C ма? можливост? для структурного програмування ? дозволя? зд?йснювати рекурс??, у той час, як система статично? тип?зац?? даних запоб?га? виникненню багатьох непередбачуваних операц?й. У С увесь виконуваний код м?ститься у функц?ях. Параметри функц?? завжди передаються за значеннями. Передача параметр?в за вказ?вником реал?зову?ться шляхом передач? значення вказ?вника. Гетерогенн? сукупност? тип?в даних (структури) дозволяють пов'язаним типам даних бути об'?днаними ? ман?пулювати ними, як ?диним ц?лим.C також ма? так? специф?чн? властивост?:зм?нн? можуть бути прихованими у вкладених блокахслабка тип?зац?я; наприклад, символи можуть використовуватися, як ц?л? числанизькор?вневий доступ до оперативно? пам'ят? шляхом перетворення машинних адрес вказ?вникивказ?вники на функц?? ? дан? п?дтримують динам?чний пол?морф?зммасив ?ндекс?в як вторинне поняття, визнача?ться у терм?нах арифметики вказ?вник?встандартизований препроцесор C для макроозначення, включення файлу з джерельним кодом, умовно? трансляц??, ? т. д.комплексна функц?ональн?сть, як то I/O, ман?пуляц?я рядками, ? делегування математичних функц?й б?бл?отекамв?дносно невелика к?льк?сть зарезервованих сл?в (32 у С89, ? 37 у C99)Лексичн? структури, як? нагадують B б?льше за ALGOL, наприклад:{ ... } на в?дм?ну в?д ALGOL'?вського begin ... endзнак р?вност? для призначення (коп?ювання), як це робиться у мов? Fortranдва знаки р?вност? використовуються для перев?рки р?вност? (под?бно до .EQ. у Fortran'? або одного знаку р?вност? у BASIC)&& та || на в?дм?ну в?д ALGOL'?вських and та or (цим вона семантично в?др?зня?ться в?д б?тових оператор?в & та |).велика к?льк?сть оператор?в об'?днання, на кшталт +=, ++, ……С ма? брак наступних можливостей, як? ? в ?нших мовах програмування, (хоча далеко не завжди брак деяких можливостей, наявних в якихось мовах, ? недол?ком):В?дсутн?сть нескалярних операц?й, на зразок коп?ювання масив?в або рядк?в.В?дсутн?сть автоматичного керування пам'яттю (зб?р см?ття).В?дсутня перев?рка меж масиву.В?дсутн?сть нап?в-динам?чних масив?в аж до С99.В?дсутн?сть синтаксису для масив?в, на зразок А..В, котр? використовують, як стар?ш?, так ? нов?ш? мови програмуванняВ?дсутн?сть вкладених функц?й (хоча, ця можлив?сть ? з деякими комп?ляторами, наприклад GCC. Однак знову ж, ? суперечливою сама потреба вкладених функц?й.В?дсутн?сть обробки винятк?в.В?дсутн?сть рудиментарно? п?дтримки модульного програмування.В?дсутн?сть статичного пол?морф?зму у форм? перевантаження функц?й або оператор?в.В?дсутн?сть п?дтримки об'?ктно-ор??нтованого програмування.В?дсутн?сть вбудовано? п?дтримки багатозадачност? та роботи з мережами, хоча ц? можливост? забезпечуються популярними б?бл?отеками.В?дсутн?сть стандартних б?бл?отек для роботи з граф?кою та деяких ?нших б?бл?отек для прикладного програмування.Ц? моменти абсолютно не завадили мов? бути добре прийнятою спец?ал?стами. Швидко були створен? комп?лятори для р?зних платформ. А в значн?й м?р? низькор?внева природа мови, надала програм?стам можлив?сть як?сно контролювати роботу програм, дозволяючи оптим?зувати ?х п?д конкретн? завдання. Це дозволило кодов? ефективно працювати на дуже обмеженому апаратному забезпеченн?, такому як вбудован? системи.Мова програмування ?С? використову? б?бл?отеки, як основний зас?б свого розширення. У ?С?, б?бл?отека – наб?р функц?й, котр? м?стяться в одному файл?. Кожна б?бл?отека, за звичай ма? заголовочний файл, в якому м?стяться прототипи функц?й, присутн?х у б?бл?отец?, яка може використовуватися, а також декларац?? спец?альних тип?в даних ? макро-символ?в, що використовують ц? функц??. Для того, щоб програма використовувала б?бл?отеку, заголовний файл ц??? б?бл?отеки ма? бути оголошений вгор? файлу ?з сирцевим кодом, ? б?бл?отека ма? бути зл?нкованою з програмою, що у багатьох випадках вимага? спец?ально? опц?? для комп?лятора (наприклад, -lmath).Загальною б?бл?отекою ?С? ? стандартна б?бл?отека С stdlib.h, що вказана у ISO та ANSI ?С? стандартах, ? розповсюджу?ться з кожним сучасним комп?лятором мови ?С?.?ншим загальним набором функц?й стандартно? б?бл?отеки С ? той, що використову?ться застосунками. Проектувалися вони для UNIX-под?бних систем, у першу чергу, для забезпечення ?нтерфейсу до ядра. Ц? функц?? детал?зуються у р?зноман?тних стандартах, на кшталт POSIX та Single UNIX Specification.C++ (С?-плюс-плюс) – мова програмування високого р?вня з п?дтримкою дек?лькох парадигм програмування: об'?ктно-ор??нтовано?, узагальнено? та процедурно?. Мова С++ багато в чому ? надмножиною С. Нов? можливост? С++ включають оголошення у вигляд? вираз?в, перетворення тип?в у вигляд? функц?й, оператори new ? delete, тип bool, посилання, розширене поняття константност? та зм?нност?, функц??, що п?дставляються, аргументи за замовчанням, перевизначення, простори ?мен, класи (включаючи ? вс? пов'язан? з класами можливост?, так? як успадкування, функц??-члени (методи), в?ртуальн? функц??, абстрактн? класи ? конструктори), перевизначення оператор?в, шаблони, оператор ::, обробку винятк?в, динам?чну ?дентиф?кац?ю ? багато що ?нше. С++ ? також мовою строгого типування ? наклада? б?льше вимагань щодо дотримання тип?в, пор?вняно з С.Назва ?С?++? була вигадана Р?ком Масситт? (Rick Mascitti) ? вперше було використана в грудн? 1983 року. Ран?ше, на етап? розробки, нова мова називалася ?С? з класами?. ?м'я, що вийшло у результат?, походить в?д оператора С? ?++? (зб?льшення значення зм?нно? на одиницю) ? поширеному способу присво?ння нових ?мен комп'ютерним програмам, що поляга? в додаванн? до ?мен? символу ?+? для позначення пол?пшень. Зг?дно з? Страуструпом, ?ця назва указу? на еволюц?йну природу зм?н Ci?. Виразом ?С+? називали ран?шню, не пов'язану з С?++, мову програмування.Деяк? програм?сти на С? можуть в?дм?тити, що якщо виконуються вирази x=3; y=x++; то в результат? вийде x=4 ? y=3, тому що x зб?льшу?ться т?льки п?сля присво?ння його у. Проте якщо другий вираз буде y=++x; то вийде x=4 ? y=4. Виходячи з цього, можна зробити висновок, що лог?чн?ше було б назвати мову не С?++, а ++С?. Проте обидва вирази c++ ? ++c зб?льшують с, а кр?м того вираз c++ поширен?ший.При створенн? С++ прагнули зберегти сум?сн?сть з мовою С. Б?льш?сть програм на С справно працюватимуть ? з комп?лятором С++. С++ ма? синтаксис, заснований на синтаксис? С.Нововведеннями С++ пор?вняно з С ?:п?дтримка об'?ктно-ор??нтованого програмування через класи;п?дтримка узагальненого програмування через шаблони;доповнення до стандартно? б?бл?отеки;додатков? типи даних;обробка винятк?в;простори ?мен;вбудован? функц??;перевантаження оператор?в;перевантаження ?мен функц?й;посилання ? оператори управл?ння в?льно розпод?леною пам'яттю.В 1998 роц? мова С?++ була стандартизована М?жнародною орган?зац??ю стандартизац?? п?д номером 14882:1998 – Мова Програмування С?++. Поточний стандарт – C++11, в?н був прийнятий у 2011 роц? робочою групою МОС п?сля десятир?чно? п?дготовки.Стандарт С?++ на 1998 р?к склада?ться з двох основних частин: ядра мови ? стандартно? б?бл?отеки. Стандартна б?бл?отека С++ ув?брала в себе б?бл?отеку шаблон?в STL, що розроблялася одночасно ?з стандартом. Зараз назва STL оф?ц?йно не вжива?ться, проте в колах програм?ст?в на С?++ ця назва використову?ться для позначення частини стандартно? б?бл?отеки, що м?стить визначення шаблон?в контейнер?в, ?тератор?в, алгоритм?в ? функтор?в.Стандарт С?++ м?стить нормативне посилання на стандарт С? в?д 1990 року ? не визнача? самост?йно т? функц?? стандартно? б?бл?отеки, як? запозичуються ?з стандартно? б?бл?отеки С?.Поза тим, ?сну? величезна к?льк?сть б?бл?отек С?++, котр? не входять в стандарт. У програмах на С?++ можна використовувати багато б?бл?отек С?.Стандартизац?я визначила мову програмування С?++, проте за ц??ю назвою можуть ховатися також неповн?, обмежен? достандартн? вар?анти мови. Спочатку мова розвивалася поза формальними рамками, спонтанно, у м?ру завдань, що ставилися перед ним. Розвиток мови супроводив розвиток кросс-комп?лятора Cfront. Нововведення в мов? в?дбивалися в зм?н? номера верс?? кросс-комп?лятора. Ц? номери верс?й кросс-комп?лятора розповсюджувалися ? на саму мову, але стосовно тепер?шнього часу мову про верс?? мови С?++ не ведуть.Стандартна б?бл?отека С?++ включа? стандартну б?бл?отеку С? з невеликими зм?нами, як? роблять ?? в?дпов?дн?шою для мови С?++. ?нша велика частина б?бл?отеки С?++ заснована на Стандартн?й Б?бл?отец? Шаблон?в (STL). Вона нада? так? важлив? ?нструменти, як контейнери (наприклад, вектори ? списки) ? ?тератори (узагальнен? вказ?вники), що надають доступ до цих контейнер?в як до масив?в. Кр?м того, STL дозволя? схожим чином працювати ? з ?ншими типами контейнер?в, наприклад, асоц?ативними списками, стеками, чергами.Використовуючи шаблони, можна писати узагальнен? алгоритми, здатн? працювати з будь-якими контейнерами або посл?довностями, доступ до член?в яких забезпечують ?тератори.Так само, як ? в С?, можливост? б?бл?отек актив?зуються використанням директиви #include для включення стандартних файл?в. Всього в стандарт? С?++ визначено 50 таких файл?в.STL до включення в стандарт С?++ була сторонньою розробкою, на початку – ф?рми HP, а пот?м SGI. Стандарт мови не назива? ?? ?STL?, оск?льки ця б?бл?отека стала нев?д'?мною частиною мови, проте багато людей дос? використовують цю назву, щоб в?др?зняти ?? в?д решти частини стандартно? б?бл?отеки (потоки введення/виведення (Iostream), п?дрозд?л С? тощо). Проект п?д назвою STLport, заснований на SGI STL, зд?йсню? пост?йне оновлення STL, IOstream ? рядкових клас?в. Деяк? ?нш? проекти також займаються розробкою приватних застосувань стандартно? б?бл?отеки для р?зних конструкторських завдань. Кожен виробник комп?лятор?в С?++ обов'язково поставля? якусь реал?зац?ю ц??? б?бл?отеки, оск?льки вона ? дуже важливою частиною стандарту ? широко використову?ться.Причиною усп?ху STL, зокрема ?? вх?д до стандартно? б?бл?отеки С++, була нац?лен?сть на широке коло завдань ? узагальнена структура. В цьому сенс?, близькою за духом STL на сьогодн? ? б?бл?отека Boost. Boost теж ? б?бл?отекою загального застосування ? теж вплива? на формування стандартно? б?бл?отеки С++.Мова С?++ багато в чому ? надмножиною С?. Нов? можливост? С?++ включають оголошення у вигляд? вираз?в, перетворення тип?в у вигляд? функц?й, оператори new ? delete, тип bool, посилання, розширене поняття константност? та зм?нност?, функц??, що п?дставляються, аргументи за замовчанням, перевизначення, простори ?мен, класи (включаючи ? вс? пов'язан? з класами можливост?, так? як успадкування, функц??-члени (методи), в?ртуальн? функц??, абстрактн? класи ? конструктори), перевизначення оператор?в, шаблони, оператор ::, обробку винятк?в, динам?чну ?дентиф?кац?ю ? багато що ?нше. С?++ ? також мовою строгого типування ? наклада? б?льше вимагань щодо дотримання тип?в, пор?вняно з С?.У С?++ з'явилися коментар? у вигляд? подв?йно? косо? риски (?//?), як? були в попереднику С? – мов? BCPL.Деяк? особливост? С?++ п?зн?ше були перенесен? в С?, наприклад ключов? слова const ? inline, оголошення в циклах for ? коментар? в стил? С?++ (?//?). У п?зн?ших реал?зац?ях С? також були представлен? можливост?, яких нема? в С?++, наприклад макроси vararg ? покращена робота з масивами-параметрами.Основним способом орган?зац?? ?нформац?? в С?++ ? класи. На в?дм?ну в?д типу структура (struct) мови С?, що склада?ться т?льки з пол?в, клас (class) С?++ склада?ться з пол?в ? функц?й-член?в або метод?в (англ. member functions). Поля бувають публ?чними (public), захищеними (protected) ? приватними (private). У С?++ тип структура аналог?чний типу клас, в?дм?нн?сть в тому, що за умовчанням поля ? функц??-члени у структури публ?чн?, а у класу – приватн?.З публ?чними полями можна робити зовн? класу все, що завгодно. До захищених ? приватних пол?в не можна звертатися ззовн? класу, щоб не порушити ц?л?сн?сть даних класу. Спроба такого звернення викличе помилку комп?ляц??. До таких пол?в можуть звертатися т?льки функц??-члени класу (а також так зван? функц??-друз? ? функц??-члени клас?в-друз?в; про поняття друз?в в C++ дивись нижче.) Поза т?лом функц?й-член?в (а також друз?в) захищен? ? власн? поля недоступн? нав?ть для читання. Такий захист пол?в назива?ться ?нкапсуляци?ю.Використовуючи ?нкапсуляц?ю, автор класу може захистити сво? дан? в?д некоректного використання. Кр?м того, вона замислювалася для полегшення сум?сно? розробки клас?в. Малося на уваз?, що зм?на способу збер?гання даних, якщо вони оголошен? як захищен? або приватн? не вимага? в?дпов?дних зм?н в класах, як? використовують зм?нений клас. Наприклад, якщо в стар?й верс?? класу дан? збер?галися у вигляд? л?н?йного списку, а в нов?й верс?? – у вигляд? дерева, т? класи, як? були написан? до зм?ни формату збер?гання даних, переписувати не буде потр?бно, якщо дан? були приватними або захищеними (у останньому випадку – якщо використовуюч? класи не були класами-нащадками), оск?льки жоден з них цих клас?в не м?г би безпосередньо звертатися до даних, а т?льки через стандартн? функц??, як? в нов?й верс?? мають вже коректно працювати з новим форматом даних. Нав?ть оператор доступу operator [] може бути визначений як така стандартна функц?я.Функц??-члени, як ? поля, можуть бути публ?чними, захищеними ? приватними. Публ?чн? функц?? може викликати будь-хто, а захищен? ? власн? – т?льки функц??-члени ? друз?.В мову були введен? конструктори ? деструктори. Конструктор виклика?ться щоразу, коли створю?ться об'?кт даного типу; деструктор – при знищенн?. При перетвореннях тип?в, присво?нн?, передач? параметра теж викликаються конструктори ? при необх?дност? деструкториДля створення клас?в з доданою функц?ональн?стю вводять успадкування. Клас-нащадок ма? поля ? функц??-члени базового класу, але не ма? права звертатися до приватних (private) пол?в ? функц?й базового класу. У цьому ? поляга? р?зниця м?ж приватними ? захищеними членами.Клас-нащадок може додавати сво? поля ? функц?? або перевизначати функц?? базового класу.За замовчуванням, конструктор нащадка без параметр?в виклика? конструктор базового класу, а пот?м конструктори доданих елемент?в. Деструктор працю? в зворотному порядку. ?нш? конструктори доводиться визначати щоразу наново. Також це можна зробити викликом конструктора базового класу.Нащадок – це б?льш н?ж базовий клас, тому в?н може використовуватися скр?зь, де використову?ться базовий клас, але не навпаки.Успадкування бува? публ?чним, захищеним ? приватним. При публ?чному успадкуванн?, публ?чн? ? захищен? члени базового класу збер?гають св?й статус, а до приватних не можуть звертатися нав?ть функц??-члени нащадка. Захищене успадкування в?др?зня?ться тим, що при н?м публ?чн? члени базового класу ? захищеними членами нащадка. При приватному успадкуванн?, до жодного члена базового класу нав?ть функц??-члени нащадка права звертатися не мають. Як правило, публ?чне успадкування зустр?ча?ться значно част?ше за ?нш?.Клас може бути нащадком дек?лькох клас?в. Це назива?ться множинним успадкуванням. Такий клас волод?? полями ? функц?ями-членами вс?х його предк?в.Переваги мови C++:Швидкод?я. Швидк?сть роботи програм на С++ практично не поступа?ться програмам на С, хоча програм?сти отримали в сво? руки нов? можливост? ? нов? засоби.Масштабован?сть. На мов? C++ розробляють програми для найр?зноман?тн?ших платформ ? систем.Можлив?сть роботи на низькому р?вн? з пам'яттю, адресами, портами. (Що, при необережному використанн?, може легко перетворитися на недол?к.)Можлив?сть створення узагальнених алгоритм?в для р?зних тип?в даних, ?хня спец?ал?зац?я, ? обчислення на етап? комп?ляц??, з використанням шаблон?в.П?дтримуються р?зн? стил? та технолог?? програмування, включаючи традиц?йне директивне програмування, ООП, узагальнене програмування, метапрограмування (шаблони, макроси).Недол?ки мови C++:Наявн?сть безл?ч? можливостей, що порушують принципи типобезпеки приводить до того, що в С++ програми може легко закрастися важковловима помилка. Зам?сть контролю з боку комп?лятора розробники вимушен? дотримуватися вельми нетрив?альних правил кодування. По сут?, ц? правила обмежують С++ рамками яко?сь безпечн?шо? п?дмови. Б?льш?сть проблем типобезпеки С++ успадкована в?д С, але важливу роль в цьому питанн? гра? ? в?дмова автора мови в?д ?де? використовувати автоматичне управл?ння пам'яттю (наприклад, зб?рку см?ття). Так в?зитною карткою С++ стали вразливост? типу ?переповнювання буфера?.Погана п?дтримка модульност?. П?дключення ?нтерфейсу зовн?шнього модуля через препроцесорну вставку заголовного файлу (#include) серйозно упов?льню? комп?ляц?ю, при п?дключенн? велико? к?лькост? модул?в. Для усунення цього недол?ку, багато комп?лятор?в реал?зують механ?зм прекомп?ляци? заголовних файл?в (англ.Precompiled Headers).Недостача ?нформац?? про типи даних п?д час комп?ляц?? (CTTI).Мова C++ ? складною для вивчення ? для комп?ляц??.Деяк? перетворення тип?в не?нту?тивн?. Зокрема, операц?я над беззнаковим ? знаковим числами вида? беззнаковий результат.Препроцесор С++ (успадкований в?д C) дуже прим?тивний. Це приводить з одного боку до того, що з його допомогою не можна (або важко) зд?йснювати деяк? завдання метапрограмування, а з ?ншою, в насл?дку сво?? прим?тивност?, в?н часто приводить до помилок ? вимага? багато д?й з обходу потенц?йних проблем. Деяк? мови програмування (наприклад, Scheme ? Nemerle) мають набагато могутн?ш? ? безпечн?ш? системи метапрограмування (також зван? макросами, але макроси С/С++ вони мало нагадують).З к?нця 1990-х в сп?втовариств? С++ набуло поширення так зване метапрограмування на баз? шаблон?в. По сут?, воно використову? особливост? шаблон?в C++ в ц?лях реал?зац?? на ?хн?й баз? ?нтерпретатора прим?тивно? функц?онально? мови програмування, що викону?ться п?д час комп?ляц??. Сама по соб? ця можлив?сть вельми приваблива, але, внасл?дкок вище згаданого, такий код вельми важко сприймати ? зневаджувати. Мови Lisp/Scheme, Nemerle ? деяк? ?нш? мають могутн?ш? ? водночас прост?ш? для сприйняття п?дсистеми метапрограмування. Кр?м того, в мов? D реал?зована пор?внянна за потужн?стю, але значно прост?ша в застосуванн? п?дсистема шаблонного метапрограмування.Хоча деклару?ться, що С++ мультипарадигмена мова, реально в мов? в?дсутня п?дтримка функц?онального програмування. Частково, даний пропуск усува?ться р?зними б?бл?отеками (Loki, Boost) що використовують засоби метапрограмування для розширення мови функц?ональними конструкц?ями (наприклад, п?дтримкою лямбд/анон?мних метод?в), але як?сть под?бних р?шень значно поступа?ться якост? вбудованих у функц?ональн? мови р?шень. Так? можливост? функц?ональних мов, як з?ставлення з? зразком взагал? украй складно емулювати засобами метапрограмування.C# (вимовля?ться як С?-шарп) – об'?ктно-ор??нтована мова програмування з безпечною системою тип?зац?? для платформи .NET. Розроблена Андерсом Гейлсбергом, Скотом В?лтамутом та П?тером Гольде п?д ег?дою Microsoft Research (при ф?рм? Microsoft). Синтаксис C# близький до С++ ? Java. Мова ма? строгу статичну тип?зац?ю, п?дтриму? пол?морф?зм, перевантаження оператор?в, вказ?вники на функц??-члени клас?в, атрибути, под??, властивост?, винятки, коментар? у формат? XML. Перейнявши багато що в?д сво?х попередник?в – мов С++, Delphi, Модула ? Smalltalk – С#, спираючись на практику ?хнього використання, виключа? деяк? модел?, що зарекомендували себе як проблематичн? при розробц? програмних систем, наприклад множинне спадкування клас?в (на в?дм?ну в?д C++).C# ? дуже близьким родичем мови програмування Java. Мова Java була створена компан??ю Sun Microsystems, коли глобальний розвиток ?нтернету поставив задачу роззосереджених обчислень. Взявши за основу популярну мову C++, Java виключила з не? потенц?йно небезпечн? реч? (типу вказ?вник?в без контролю виходу за меж?). Для роззосереджених обчислень була створена концепц?я в?ртуально? машини та машинно-незалежного байт-коду, свого роду посередника м?ж вих?дним текстом програм ? апаратними ?нструкц?ями комп'ютера чи ?ншого ?нтелектуального пристрою.Java набула чимало? популярност?, ? була л?цензована також ? компан??ю Microsoft. Але з плином часу Sun почала винуватити Microsoft, що та при створенн? свого клону Java робить ?? сум?сною виключно з платформою Windows, чим суперечить сам?й концепц?? машинно-незалежного середовища виконання ? порушу? л?ценз?йну угоду. Microsoft в?дмовилася п?ти назустр?ч вимогам Sun, ? тому з'ясування стосунк?в набуло статусу судового процесу. Суд визнав позиц?ю Sun справедливою, ? зобов'язав Microsoft в?дмовитися в?д позал?ценз?йного використання Java.У ц?й ситуац?? в Microsoft вир?шили, користуючись сво?ю вагою на ринку, створити св?й власний аналог Java, мови, в як?й корпорац?я стане повновладним господарем. Ця новостворена мова отримала назву C#. Вона успадкувала в?д Java концепц?? в?ртуально? машини (середовище .NET), байт-коду (MSIL) ? б?льшо? безпеки вих?дного коду програм, плюс врахувала досв?д використання програм на Java.Нововведенням C# стала можлив?сть легшо? вза?мод??, пор?вняно з мовами-попередниками, з кодом програм, написаних на ?нших мовах, що ? важливим при створенн? великих проект?в. Якщо програми на р?зних мовах виконуються на платформ? .NET, .NET бере на себе клоп?т щодо сум?сност? програм (тобто тип?в даних, за к?нцевим рахунком)Символ # у назв? мови можна ?нтерпретувати ? як дв? пари плюс?в ++, що натякають на новий крок у розвитку мови пор?вняно з C++ (под?бно до кроку в?д C до C++), ? як музичний символ д??з, разом з буквою C, що становить в англ?йськ?й мов? назву ноти до-д??з. Останн? й дало назву мов?. Попри те, що символ # (октоторп) насправд? ? символом для позначення номера на б?льшост? клав?атур ? в?др?зня?ться в?д символу д??з ? (Unicode U+266F), Microsoft, як автор мови, неодноразово зверталася до сво?х кл??нт?в з проханням прийняти таку стил?зац?ю.C# розроблялась як мова програмування прикладного р?вня для CLR ? тому вона залежить, перш за все, в?д можливостей само? CLR. Це стосу?ться, перш за все, системи тип?в C#. Присутн?сть або в?дсутн?сть тих або ?нших виразних особливостей мови дикту?ться тим, чи може конкретна мовна особлив?сть бути трансльована у в?дпов?дн? конструкц?? CLR. Так, з розвитком CLR в?д верс?? 1.1 до 2.0 значно збагатився ? сам C#; под?бно? вза?мод?? сл?д чекати ? надал?. (Проте ця законом?рн?сть буде порушена з виходом C# 3.0, що ? розширеннями мови, що не спираються на розширення платформи .NET.) CLR нада? C#, як ? вс?м ?ншим .NET-ор??нтованим мовам, багато можливостей, яких позбавлен? ?класичн?? мови програмування. Наприклад, зб?рка см?ття не реал?зована в самому C#, а проводиться CLR для програм, написаних на C# точно так, як ? це робиться для програм на , J# тощо.C# ма? ?препроцесорн? директиви? (хоча насправд? в?н не ма? препроцесора) на основ? препроцесора C, це да? програм?сту можлив?сть визначити символи, але не макроси. Умовн? директиви, так? як #if, #endif, чи #else також можлив?. Директиви типу #region дають натяк редактору для згортання фрагмент?в коду.Специф?кац?я C# визнача? м?н?мальний наб?р б?бл?отек тип?в ? клас?в, на який ма? розраховувати комп?лятор. На практиц?, C# найчаст?ше використову?ться з якоюсь реал?зац??ю Common Language Infrastructure (CLI), яка стандартизована як ECMA-335 Common Language Infrastructure (CLI)Титульним комп?лятором C# ? Microsoft Visual C#.?снують ?нш? комп?лятори C#, часто вони включають реал?зац?? Common Language Infrastructure ? б?бл?отеки клас?в .NET:Проект Microsoft Rotor (який тепер зветься Shared Source Common Language Infrastructure, л?цензований т?льки для навчального ? досл?дницького використання) забезпечу? реал?зац?? CLR runtime ? комп?лятор C#, ? п?дмножину б?бл?отек фреймворка Common Language Infrastructure, в?дпов?дно до специф?кац?? ECMA (до C# 2.0, ? з п?дтримкою т?льки Windows XP).Проект SharpDevelop в?д компан?? icsharpcode , який використову?ться як альтернатива Visual Studio . Забезпечу? повну реал?зац?ю Common Language Infrastructure. Остання стаб?льна верс?я IDE 4.4 ( 28 серпня 2013 ) , тестова верс?я 5.0 (13 лютого 2014. Зовн?шн?й вигляд IDE дуже нагаду? Microsoft Visual C#,що робить комфортним перех?д в?д одн??? середи до ?ншо?.Проект Mono, початий компан??ю Ximian ? продовжений ?? покупцем ? наступником Novell, забезпечу? в?дкритий комп?лятор C#, повну в?дкриту реал?зац?ю Common Language Infrastructure, включаючи потр?бн? б?бл?отеки фреймворка в?дпов?дно до специф?кац?? ECMA, ? близьку до повно? реал?зац?ю власницьких б?бл?отек клас?в Microsoft .NET до .NET 2.0, але не специф?чних б?бл?отек .NET 3.0 ? .NET 3.5, як для Mono 2.0.Проект DotGNU також нада? в?дкритий комп?лятор C#, близьку до повно? реал?зац?ю Common Language Infrastructure, включаючи потр?бн? б?бл?отеки фреймворка в?дпов?дно до специф?кац?? ECMA, ? п?дмножину деяких залишених власницьких б?л?отек клас?в Microsoft .NET до .NET 2.0 (як? не документован? або не включен? у специф?кац?? ECMA, але включен? у стандартне визначення Microsoft .NET Framework).DotNetAnywhere Micro Framework Common Language Runtime нац?лений на вбудован? системи, ? п?дтриму? майже вс? специф?кац?? C# 2.0.Верс??:Верс?я 1.0. Проект C# був початий в грудн? 1998 ? отримав кодову назву COOL (C-style Object Oriented Language). Верс?я 1.0 була анонсована разом з платформою .NET у червн? 2000 року, тод? ж з'явилася ? перша загальнодоступна бета-верс?я; C# 1.0 остаточно вийшов разом з Microsoft Visual Studio .NET у лютому 2002 року.Перша верс?я C# нагадувала за сво?ми можливостями Java 1.4, дещо ?х розширюючи: так, в C# були властивост? (що виглядають у код? як поля об'?кта, але, при зверненн? до них, можуть викликати пов'язан? методи класу), ?ндексатори (под?бн? до властивостей, але приймають параметр як ?ндекс масиву), под??, делегати, циклиforeach, структури, що передаються за значенням, автоматичне перетворення вбудованих тип?в в об'?кти при необх?дност? (boxing), атрибути, вбудован? засоби вза?мод?? з некерованим кодом (DLL, COM) тощо. Кр?м того, в C# вир?шено було перенести деяк? можливост? C++, в?дсутн? в Java: беззнаков? типи, перевизначення операц?й (з деякими обмеженнями, на в?дм?ну в?д C++), передача параметр?в у метод за посиланням, методи з? зм?нним числом параметр?в, оператор goto. Також у C# залишили обмежену можлив?сть роботи з вказ?вниками – в м?сцях коду, спец?ально позначених словом unsafe ? при вказ?вц? спец?ально? опц?? комп?лятору.Верс?я 2.0. Проект специф?кац?? C# 2.0 вперше був викладений Microsoft в жовтн? 2003 року; у 2004 роц? виходили бета-верс?? (проект з кодовою назвою Whidbey), C# 2.0 остаточно вийшов 7 листопада 2005 року разом з Visual Studio 2005 ? .NET 2.0.Нов? можливост? у верс?? 2.0:Частков? типи (розд?лення реал?зац?? класу б?льш н?ж на один файл).Узагальнен?, або параметризован? типи (generics, ?дженерики?). На в?дм?ну в?д шаблон?в C++, вони п?дтримують деяк? додатков? можливост? ? працюють на р?вн? в?ртуально? машини. Разом з тим, параметрами узагальненого типу не можуть бути вирази.Нова форма ?тератора, що дозволя? створювати сп?впрограми за допомогою ключового слова yield, под?бно Python ? Руб?.Анон?мн? методи, що забезпечують функц?ональн?сть замикання.Оператор ??: return obj1 ?? obj2; означа? (у нотац?? C# 1.0) return obj1!=null ? obj1 : obj2;.Типи-значення, що обнуляються (nullable), (що позначаються знаком питання, наприклад, int? i = null;) ? тими ж самими типами-значеннями, що можуть nfrj; приймати також значення null. Так? типи дозволяють пол?пшити вза?мод?ю з базами даних через мову SQL.Верс?я 3.0. В червн? 2004 року Андерс Гейлсберг вперше розпов?в на сайт? Microsoft про планован? розширення мови в C#3.0.. У вересн? 2005 року було випущено проектспециф?кац?? C# 3.0 ? бета-верс?я C# 3.0, що встановлю?ться у вигляд? доповнення до ?снуючих Visual Studio 2005 ? .NET 2.0. Оф?ц?йно верс?я C# 3.0 побачила св?т 19 листопада 2007 року у склад? .NET Framework 3.5.В C# 3.0 з'явилися так? радикальн? доповнення та зм?ни:Ключов? слова select, from, where, що дозволяють робити запити з SQL, XML, колекц?? тощо (запит, ?нтегрований в мову, англ. Language Integrated Query, або LINQ)?н?ц?ал?зац?я об'?кта разом з його властивостямиЛямбда-вирази (анон?мн? функц??)Автоматичне визначення тип?в локальних зм?ннихБез?менн? типиМетоди-розширення – додавання методу в ?снуючий клас за допомогою ключового слова this при першому параметр? статично? функц??.Верс?я 4.0. Нов? можливост? в верс?? 4.0:Динам?чна тип?зац?я об'?кт?в:динам?чний перех?д;динам?чний виклик методу.Саме тому для реал?зац?? програмного продукту було вибрано мову програмування C# [7].2.3.2 Виб?р системи управл?ння базами данихMicrosoft Access (повна назва Microsoft Office Access) – система управл?ння базами даних в?д компан?? Майкрософт, програма, що входить до складу пакету оф?сних програм Microsoft Office. Ма? широкий спектр функц?й, включаючи зв'язан? запити, сортування по р?зних полях, зв'язок ?з зовн?шн?ми таблицями ? базами даних. Завдяки вбудован?й мов? VBA, в самому Access можна писати п?дпрограми, що працюють з базами даних.Основн? компоненти MS Access:конструктор таблиць;конструктор екранних форм;конструктор SQL-запит?в (мова SQL в MS Access не в?дпов?да? стандарту ANSI);конструктор зв?т?в, що виводяться на друк.Таблиця – це основний об'?кт бази даних, призначений для збереження даних, документ?в та ?нших обл?кових запис?в. Запит – вибира? дан? з таблиць зг?дно з умовами, що задаються. Форма – в?добража? дан? з таблиць або запит?в в?дпов?дно до формат?в, описаних користувачем. Форма дозволя? переглядати, редагувати та друкувати дан?. Зв?т – в?добража? ? друку? дан? з таблиць або запит?в зг?дно з описаним користувачем форматом. У зв?т? дан? редагувати не можна.Oracle Database - перша в св?т? база даних, розроблена спец?ально для роботи в мережах розпод?лених обчислень Grid, призначена для ефективного розгортання на баз? р?зних тип?в устаткування, в?д невеликих сервер?в до могутн?х симетричних багатопроцесорних серверних систем, в?д окремих кластер?в до корпоративних розпод?лених обчислювальних систем. СУБД нада? можлив?сть автоматично? настройки ? управл?ння, яка робить ?? використання простим ? економ?чно виг?дним.Oracle Developer Suite - повний наб?р ?нтегрованих засоб?в для розробки web-додатк?в. Включа? зручне ?нтегроване середовище розробки ?з засобами моделювання, програмування, розробки компонент?в, б?знес-анал?за ? складання зв?т?в. Вс? ц? засоби використовують загальн? ресурси, що дозволя? сп?льно працювати над одним проектом груп? розробник?в. Компоненти Oracle Developer Suite: Oracle Developer Oracle Designer Oracle Forms Oracle Reports Oracle Warehouse Builder Oracle Discoverer Oracle Programmer Oracle Software Configuration Manager Сервер ORACLE забезпечу? ефективн? ? д??в? р?шення для основних засоб?в баз даних: управл?ння великими базами даних ? контроль управл?ння простором.ORACLE п?дтриму? найб?льш? бази даних, потенц?йного розм?ру до сотень г?габайт. Щоб забезпечити д??вий контроль за використанням дорогих дискових пристро?в, в?н нада? повний контроль розпод?лу простору. П?дтриму? велике число користувач?в, що одночасно виконують р?зноман?тн? застосування, як? оперують одними ? тими ж даними. Сервер м?н?м?зу? суперництво за дан? ? гаранту? узгоджен?сть даних.Щоб витягувати максимум переваг з дано? комп'ютерно? системи або мереж?, ORACLE дозволя? розд?ляти роботу сервером бази даних ? прикладними програмами кл??нт?в. Вся тяжк?сть управл?ння сп?льно використовуваними даними може бути зосереджена в комп'ютер?, що викону? СУБД, тод? як робоч? станц??, на яких працюють додатки, можуть концентруватися на ?нтерпретац?? ? в?дображенн? даних. У комп'ютерному оточенн?, сполучених мережами, ORACLE комб?ну? дан?, що ф?зично знаходяться на р?зних комп'ютерах у одну лог?чну базу даних, до яко? мають доступ все користувач? мереж?. Розпод?лен? системи волод?ють такими ж ступенем прозорост? для користувач?в ? узгодженост? даних, що ? нерозпод?лен? системи, надаючи в те ж час переваги управл?ння локальною базою даних. Програмне забезпечення ORACLE переносимо м?ж р?зними операц?йними системами ? однакове у вс?х системах. Додатки, що розробляються для ORACLE, можуть бути перенесен? в будь-яку операц?йну систему з м?н?мумом модиф?кац?й або взагал? без таких. ORACLE автоматично п?дтриму? ц?л?сн?сть даних, дотримуючи "орган?зац?йн? правила", як? диктують стандарти даних. Як насл?док, усуваються витрати на кодування ? супров?д перев?рок в численних додатках бази даних.Програмне забезпечення ORACLE сум?сно з промисловими стандартами, включаючи б?льш?сть стандартних операц?йних систем. Додатки, що розробляються для ORACLE, можуть використовуватися в будь-як?й операц?йн?й систем? з м?н?мумом модиф?кац?й або взагал? без таких. Програмне забезпечення ORACLE дозволя? р?зним типам комп'ютер?в ? операц?йних систем сп?льно використовувати ?нформац?ю за допомогою мереж.PostgreSQL – це об'?ктно-реляц?йна система управл?ння базами даних, що працю? як кл??нт-серверна система. Грунтуючись на базових поняттях реляц?йних БД, PostgreSQL п?дтриму? ? ряд "об'?ктних" операц?й, наприклад, спадко?мство. PostgreSQL в?дпов?да? базов?й специф?кац?? Sql99 ? п?дтриму? велике число можливостей описаних стандартом Sql92.У PostgreSQL реал?зовано багато можливостей, зазвичай присутн?х т?льки в комерц?йних СУБД, таких як Db2 ? Oracle. Нижче перерахован? основн? можливост? PostgreSQL:Об'?ктно-реляц?йна модель. Робота з даними в PostgreSQL заснована на об'?ктно-реляц?йн?й модел?, що дозволя? зад?ювати складн? процедури ? систем правил. Прикладами нетрив?альних можливостей ц??? категор?? ? декларативн? запити SQL, контроль паралельного доступу, п?дтримка багатокористувацького доступу, транзакц??, оптим?зац?я запит?в, п?дтримка спадко?мства ? масив?в. Простота розширення. У PostgreSQL п?дтримуються призначен? для користувача оператори, функц??, методи доступу ? типи даних. Повноланцюгова п?дтримка SQL. POSTGRESQL в?дпов?да? базов?й специф?кац?? Sql99 ? п?дтриму? так? нетрив?альн? засоби, як об'?днання стандарту Sql92. Перев?рка ц?л?сност? посилань. PostgreSQL п?дтриму? перев?рку ц?л?сност? посилань, що забезпечу? правильн?сть даних в баз?. Гнучк?сть API. Гнучк?сть API PostgreSQL дозволя? легко створювати ?нтерфейси до реляц?йно? СУБД PostgreSQL. В даний час ?снують програмн? ?нтерфейси для Object Pascal, Python, Perl, PHP, ODBC, Java, Ruby, TCL, C/ C+ ? Pike. Процедурн? мови. У PostgreSQL передбачена п?дтримка внутр?шн?х процедурних мов, зокрема спец?ал?зовано? мови Pl/pgsql, що ? аналогом Pl/sql, процедурно? мови Oracle. Одн??ю з переваг PostgreSQL ? можлив?сть використання Perl, PHP, Python ? TCL як внутр?шн? процедурн? мови. Технолог?я MVCC (Multi-version Concurrency Control) використову?ться в PostgreSQL для запоб?гання зайвого блокуванням (locking). Прост?ше кажучи, операц?? читання блокуються операц?ями, що проводять оновлення запис?в. Застосування технолог?? MVCC в PostgreSQL повн?стю вир?шу? цю проблему. MVCC краще за низькор?вневе блокування, оск?льки операц?? читання н?коли не блокуються операц?ями запису. Зам?сть цього PostgreSQL в?дстежу? вс? транзакц??, виконуван? користувачами бази даних, що дозволя? працювати ?з записами без оч?кування ?х зв?льнення.У СУБД PostgreSQL використову?ться арх?тектура ?кл??нт-сервер? з розпод?лом процес?в м?ж користувачами. В ц?лому вона нагаду? методику роботи з процесами в Apache 1.3.x. Головний (master) процес створю? додатков? п?дключення для кожного кл??нта, що намага?ться встановити з'?днання з PostgreSQL.Випереджаюча ре?страц?я зм?н (Write Ahead Logging, WAL) п?двищу? над?йн?сть даних. Вс? зм?ни даних протоколюються до ?х безпосередньо? актуал?зац?? в баз?. Наявн?сть протоколу зм?н гаранту?, що у раз? збою бази даних дан? можна буде в?дновити по запротокольованих транзакц?ях. П?сля в?дновлення системи користувач продовжу? роботу ?з стану, що безпосередньо передував збою. Окр?м основних можливостей, властивих будь-який SQL баз? даних, PostgreSQL п?дтриму?:Схеми, як? забезпечують прост?р ?мен на р?вн? SQL. Схеми м?стять таблиц?, в них можна визначати типи даних, функц?? ? оператор?в. Використовуючи повне ?м'я об'?кту можна одночасно працювати з дек?лькома схемами. Схеми дозволяють орган?зувати бази даних сукупн?сть дек?лькох лог?чних частин, кожна ?х яких ма? свою пол?тику доступу, типи даних. Для додатк?в, як? створюють нов? об'?кти в баз? даних зручно ? безпечно створювати окрему схему з тим, щоб уникнути можливо? кол?з?? з ?менами об'?кт?в ? зручн?стю оновлення додатку;Subqueries – п?дзапити (subselects), повна п?дтримка Sql92. П?дзапити роблять мову SQL гнучк?шою ? часто ефективн?шим;Outer Joins – зовн?шн? зв'язки (left, right, FULL);Rules – правила, зг?дно яким модиф?ку?ться початковий запит. Головна в?дм?нн?сть в?д тригер?в поляга? в тому, що rule працю? на р?вн? запиту ? перед виконання запиту, а тригер - це реакц?я системи на зм?ну даних, тобто тригер запуска?ться в процес? виконання запиту для кожного зм?неного запису (PER ROW). Правила використовуються для вказ?вки систем?, як? д?? треба провести при спроб? оновлення view;Views – уявн?, в?ртуальн? таблиц?. Реальних екземпляр?в цих таблиць не ?снують, вони матер?ал?зуються т?льки при запит?. Одним з основних призначень ?view? ? розд?лення прав доступу до батьк?вських таблиць ? до ?view?, а також забезпечення пост?йност? призначеного для користувача ?нтерфейсу при зм?н? батьк?вських таблиць;Cursors - курсори, дозволяють зменшити траф?к м?ж кл??нтом ? сервером, а також пам'ять на кл??нтов?, якщо потр?бно отримати не весь результат запиту, а т?льки його частина;Table Inheritance – спадко?мство таблиць, що дозволя? створювати об'?кти, як? успадковують структуру батьк?вського об'?кту ? додавати сво? специф?чн? атрибути. При цьому успадковуються значення атрибут?в за умовчанням (defaults) ? обмеження ц?л?сност? (constraints). Пошук по батьк?вськ?й таблиц? автоматично включа? пошук по доч?рн?м об'?ктам, при цьому збер?га?ться можлив?сть пошуку т?льки по н?й (only) ; Prepared Statements (п?дготовлен? запити) – це об'?кти, що живуть на сторон? сервера, як? ? ориг?нальним запитом п?сля команди prepare, який вже пройшов стад?? розбору запиту (parser), модиф?кац?? запиту (rewriting rules) ? створення плану виконання запиту (planner), внасл?док чого, можна використовувати команду execute, яка вже не вимага? проходження цих стад?й. Для складних запит?в це може бути великим виграшем; Stored Procedures – серверн? процедури дозволяють реал?зовувати лог?ку додатку на сторон? сервера. Кр?м того, вони дозволяють сильно зменшити траф?к м?ж кл??нтом ? сервером;Savepoints (nested transactions) – на в?дм?ну в?д "плоских транзакц?й", як? не мають пром?жних точок ф?ксац??, використання savepoints дозволя? в?дм?няти роботу частини транзакц??, наприклад у випадку помилково введено? команди, без впливу на частину, що залишилася, транзакц??. Це бува? дуже корисно для транзакц?й, як? працюють з великими об'?мами даних; Система обм?ну пов?домленнями м?ж процесами – listen ? notify дозволяють орган?зовувати под??ву модель вза?мод?? м?ж кл??нтом ? сервером (кл??нтов? переда?ться назва под??, призначена командою notify ? pid процесу);Cluster table – впорядковування запис?в таблиц? на диску зг?дно ?ндексу, що ?нод? за рахунок зменшення доступу до диска прискорю? виконання запиту [9].Microsoft SQL Server – комерц?йна система керування базами даних, що розповсюджу?ться корпорац??ю Microsoft. Мова, що використову?ться для запит?в – Transact-SQL, створена сп?льно Microsoft та Sybase. Transact-SQL ? реал?зац??ю стандарту ANSI/ISO щодо структуровано? мови запит?в (SQL) ?з розширеннями. Використову?ться як для невеликих ? середн?х за розм?ром баз даних, так ? для великих баз даних масштабу п?дпри?мства. Багато рок?в вдало конкуру? з ?ншими системами керування базами даних. SQL Server 2008 (кодова назва ?Katmai?) була представлена 6 серпня 2008 року. Мета випуску SQL Server 2008 – зробити керування даними самоналаштовуваним, самоорган?зованим та самоп?дтримуваним. SQL Server 2008 також включа? п?дтримку структурованих ? нап?вструктурованих даних, у тому числ? цифров? мед?а-формати для зображень, звук?в, в?део й ?нших мультимед?йних даних. Ключовим нововведенням SQL Server 2008 ? розвинен? засоби управл?ння ресурсами (resource governor), що дозволяють ефективно управляти ? розпод?ляти робоче навантаження за допомогою в?дстежування р?вня завантаження процесора ? обсягу пам'ят?, що займають працююч? застосунки. Microsoft вид?ля? засоби управл?ння на основ? пол?тик, розширен? можливост? з складання зв?т?в ? проведенню анал?зу, а також розвинен? засоби управл?ння ?нтелектуальними ресурсами п?дпри?мства. У продукт? з'явилася повноц?нна п?дтримка неструктурованих даних ? покращена система шифрування ?нформац??. Кр?м того, варто вид?лити розширен? функц?? роботи з геолокал?зованими даними.Серед нових можливостей ? удосконалень Microsoft SQL Server 2008 також сл?д зазначити появу нових тип?в даних, а саме – просторових даних, кращу сум?сн?сть з застосунками сторонн?х розробник?в, наприклад Oracle, т?сн?шу ?нтеграц?ю з Office, оптим?зован? засоби шифрування даних, засоби управл?ння на основ? пол?тик, а також покращен? ?нструменти зв?тност? ? анал?зу.SQL Server 2012 включа? низку вдосконалень для роботи з критичними б?знес-застосунками ? б?знес-анал?тикою як в традиц?йних дата-центрах, так ? в приватних, публ?чних ? г?бридних хмарних середовищах. Серед нових можливостей SQL Server 2012 вид?ляються SQL Server AlwaysOn (р?шення п?дтримки високого р?вня доступност? даних та авар?йного в?дновлення), xVelocity (технолог?я зб?льшення продуктивност? сховищ даних та програм б?знес-анал?тики), нов? р?шення в област? в?зуал?зац?? PowerPivot ? PowerView для створення зв?т?в ? анал?тичних програм з Excel ? SharePoint, покращен? ?нструменти для ?нтеграц?? даних ? управл?ння ними, включаючи SQL Server Data Quality Services ? Master Data Services, нова семантична модель б?знес-анал?тики та ?нструмент для адм?н?стратор?в баз даних ? розробник?в застосунк?в SQL Server Data Tools.Також Microsoft зробила значн? ?нвестиц?? в област? Big Data, а саме в ?нтеграц?ю SQL Server ? популярних ?нструмент?в для б?знес-анал?тики з неструктурованою ?нформац??ю [10].Саме тому для реал?зац?? бази даних було вибрано СУБД SQL Server 2012.Висновки:В даному розд?л? проведено анал?з технологiй розробки програмних додатк?в для вивчення ?ноземно? мови. Було проанал?зовано так? мови веб-програмування з? сторони кл??нта як HTML, XML, JavaScript. Розглянуто технолог?? створення веб-застосунк?в ? веб-серв?с?в Microsoft Silverlight, AJAX, . Також було проведено анал?з мов програмування ? систем управл?ння базами даних. На основ? отриманих даних мовою веб-програмування з? сторони кл??нта було обано JavaScript, технолог??ю створення веб-застосунк?в ? веб-серв?с?в - з арх?тектурним шаблоном MVC, мовою реал?зац?? програмного додатку - C#, системою управл?ння базами даних Microsoft SQL Server 2012.3 ПРОГРАМНА РЕАЛ?ЗАЦ?Я ТЕСТОВОГО ПРОГРАМНОГО ДОДАТКУ ДЛЯ ВИВЧЕННЯ ?НОЗЕМНО? МОВИ3.1 Виб?р середовища розробки програмного забезпеченняXcode (див. рис. 3.1) – ?нтегроване середовище розробки виробництва Apple. Дозволя? створювати програмне забезпечення з використанням таких технолог?й як GCC, GDB, Java та ?н. На сьогодн? ? ?диним засобом написання ?ун?версальних?(Universal Binary) прикладних програм для Mac OS X. Xcode включа? в себе б?льшу частину документац?? розробника в?д Apple та Interface Builder – застосунок, який використову?ться для створення граф?чних ?нтерфейс?в.Xcode нада? все, що потр?бно розробникам для створення програм для Mac, iPhone, IPad. Xcode дозволя? надати користувальницькому ?нтерфейсу дизайну, кодування, тестування ? налагодження всього в ?диний процесу. Xcode IDE у по?днанн? з рамками Cocoa, Cocoa Touch frameworks ? мовою програмування Swift зробив розробку додатк?в прост?шою ? весел?шою, н?ж коли-небудь ран?ше.Xcode включа? в себе Xcode IDE, Swift ? Objective-C комп?лятори, ?нструменти анал?зу, IOS симулятор, останн? OS X, пакет?в SDK IOS, ? сотн? потужних функц?й:?нновац?йн? можливост?:Swift революц?йно нова мову програмування, яка ? безпечною, швидкою ? сучасною;?гров? майданчики дозволяють експериментувати з Swift кодом та в?дображають митт?в? результати;Interface Builder – граф?чне дизайн полотно користувальницького ?нтерфейсу з попереднього перегляду застосування;перегляд налагодження показу? 3D стек вс?х шар?в ?нтерфейсу додатку п?д час виконання;редактор пом?чник показу? контент, пов'язаний з основним завданнямLive Issues в?добража? помилки, а Fix-It може виправити ?х.Пакет Xcode м?стить зм?нену верс?ю в?льного набору комп?лятор?в GNU Compiler Collection ? п?дтриму? мови C, C++, Objective-C, Swift, Java, AppleScript, Python ? Ruby з р?зними моделями програмування, включаючи (але не обмежуючись) Cocoa, Carbon ? Java. Сторонн?ми розробниками реал?зована п?дтримка GNU Pascal, Free Pascal, Ada, C #, Perl, Haskell ? D. Пакет Xcode використову? GDB в якост? back-end'а для свого в?дналагоджувача.Рисунок 3.1 – Середовище розробки XcodeGeany (див. рис. 3.2) – в?льний текстовий редактор з базовими елементами ?нтегрованого середовища розробки, побудований на основ? Scintilla з використанням б?бл?отеки GTK2, доступний для операц?йних систем: *BSD, Linux, Mac OS X, Solaris ? Windows. Geany поширю?ться зг?дно з GNU General Public License.Geany не м?стить комп?лятора. Для створення виконуваного коду використову?ться GNU Compiler Collection або, при необх?дност?, будь-який ?нший комп?лятор.Основним завданням при створенн? Geany було отримати компактне ? швидке ?нтегроване середовище розробки (IDE), з м?н?мальною залежн?стю в?д ?нших пакет?в. Другим завданням Geany була незалежн?сть в?д будь-яко? оболонки (KDE, GNOME ? т.п.) – Geany вимага? т?льки наявност? виконуваних б?бл?отек GTK2.Основн? функц?? Geany:вид?лення синтаксису;згортання блок?в коду (Code folding);автозавершення ?мен / сл?в;робота з фрагментами коду;автоматичне закриття тег?в XML ? HTML;поради;п?дтримка мов C, Java, PHP, HTML, Python, Perl, Pascal та ?нших;списки ?мен;нав?гац?я по коду;зб?рка – система для комп?ляц?? та виконання коду;просте управл?ння проектом;?нтерфейс для модул?в.Geany представлена як легка IDE (Integrated Development Environment), тобто ?нтегроване середовище розробки програмного забезпечення. Geany здатний виконувати практично вс? функц?? звичайного текстового редактора: ?нверс?ю рег?стр?в, дублювання поточного рядка або видалення, п?дсв?чування синтаксису багатьох мов програмування та розм?тки, розвинен? засоби пошуку та зам?ни (в тому числ? з використанням регулярних вираз?в ? escape-посл?довностей, урахуванням рег?стру ? так дал?), включати або вимикати динам?чне перенесення рядк?в; коротше, практично все, що потр?бно при набор? ? редагуванн? тексту.П?дтримка проект?в виводить цю програму в категор?ю редактор?в розвинених, роблячи ?? здатною до обробки сер?? вза?мопов'язаних файл?в. А вбудований емулятор терм?налу корисний не т?льки програм?стам, але незам?нний також для л?нуксописател?в. Автодоповнення мовних конструкц?й (маються на уваз? мови програмування ? розм?тки) – функц?я, яка ма? справу з? створенням HTML-документ?в.Засоби п?дтримки проект?в в Geany не надто багат?. По сут?, вони зводяться до створення проекту, в який об'?дну?ться група файл?в, що можуть бути в?дкритими або закритими за один раз.Рисунок 3.2 – Середовище розробки GeanyMonoDevelop (див. рис. 3.3) – в?дкрите ?нтегроване середовище розробки для платформ Linux, Mac OS X та Microsoft Windows, передус?м нац?лене на розробку програм, як? використовують ? Mono, ? Microsoft .NET framework. На даний момент п?дтримуються мови C#, Java, Boo, Visual , CIL, Python, Vala, C та C++. Також MonoDevelop п?дтриму? так? технолог??, як Gtk#, MVC, Silverlight, MonoMac и MonoTouch.MonoDevelop включа? можливост? под?бн? до NetBeans та Microsoft Visual Studio, так? як автоматичне доповнення, ?нтеграц?я контролю коду, граф?чний користувацький ?нтерфейс ? веб-дизайнер. В MonoDevelop ?нтегрований Gtk# GUI дизайнер п?д назвою Stetic.MonoDevelop волод?? вс?ма основними можливостями, необх?дними для сучасного ?нтегрованого середовища розробки:настроюване п?дсв?чування синтаксису;автоматичне доповнення коду;вид?лення блок?в коду з можлив?стю ?х згортання/розгортання;?нтелектуальна робота з в?дступами в код?;можливост? рефакторинга (перейменування клас?в ? метод?в, автоматична реал?зац?я ?нтерфейс?в в пох?дних класах);зручна нав?гац?я по коду (нав?гац?я по класах, методам, властивостям);в?зуальний редактор форм для проект?в на Gtk #;створення дек?лькох розкладок ?нтерфейсу ? перемикання м?ж ними;безл?ч стандартних шаблон?в проект?в;можлив?сть автоматичного створення б?нарних пакет?в та арх?в?в п?сля комп?ляц?? вих?дного коду;робота з базами даних;створення додатк?в з GUI, що п?дтриму? к?лька мов;?нтеграц?я з Subversion для управл?ння вих?дним кодом;п?дтримка NUnit для створення Unit-тест?в;автоматичне створення документац??;розширення можливостей за рахунок доповнень ? зовн?шн?х ?нструмент?в;можлив?сть ?нтеграц?? з Microsoft Visual Studio ? .NET Framework (в середовищ? Microsoft Windows).GUI MonoDevelop схожий на GUI ?нш? середовища розробки, тому для програм?ста зазвичай не склада? труднощ?в осво?тися в ньому.У в?кн? Solution (Р?шення) в?добража?ться список проект?в, що в?дносяться до активного р?шенням (solution – в терм?нолог?? Mono познача? групу проект?в). У в?кн? Classes (Класи) можна виконувати пошук по класах ? подв?йним клацанням по ?мен? класу або методу переходити до фрагмента коду, де цей клас або метод опису?ться. В?кно Files (Файли) використову?ться для нав?гац?? по файлам проект?в. У в?кн? Properties (Властивост?) налаштовуються властивост? активного в даний момент елемента (клас, в?кно, метод, проект). У в?кно Message Log (Журнал Пов?домлень) виводяться пов?домлення, попередження ? помилки, що виникають в процес? розробки та комп?ляц?? проекту.Програм?ст може налаштувати к?льк?сть, розташування ? повед?нку в?кон п?д конкретну задачу або стиль розробки. Для зб?льшення робочого простору можна розм?стити в?кна л?воруч ? праворуч в?д в?кна текстового редактора у вигляд? вертикальних вкладок, що випливають при наведенн? миш?.На вкладц? Build -> Compiler (Комп?лятор) можна задаюти параметри комп?ляц?? для кожно? з певних конф?гурац?й проекту. Нижче наведено опис доступних параметр?в комп?лятора:Generate overflow checks – генерац?я додаткового коду для перев?рки на переповнення.Enable optimizations – включення оптим?зац?? коду (рекоменду?ться для конф?гурац?й, використовуваних для випуску остаточно? верс?? проекту).Emit Debug Information – додавання в код налагоджувально? ?нформац?? (рекоменду?ться для налагоджувальних конф?гурац?й).Generate XML Documentation – генерац?я XML-документац?? з коду.Define Symbols – визначення директив. Використову?ться для умовно? комп?ляц??.Platform Target – платформа, для яко? буде генеруватися код.Warning Level – налаштування р?вня виведених попереджень, щоб ?гнорувати незначн? в?дхилення ? звертати увагу т?льки на серйозн?.Ignore Warnings – список попереджень, як? сл?д ?гнорувати.Threat warnings as errors – розглядати попередження як помилки, щоб заборонити зб?рку виконуваного модуля при наявност? попереджень у код?.Additional arguments – додатков? опц?? комп?лятора.У базовому вар?ант? Mono склада?ться з к?лькох компонент?в:Комп?лятор мови C# – комп?лятор з повною п?дтримкою верс?й 1.0 ? 2.0 мови C#. Кр?м того в останн?х верс?ях п?дтримуються практично вс? можливост? верс?? C# 3.0, а починаючи з верс?? Mono 2.6 включена п?дтримка можливостей верс?? C# 4.0 (поки т?льки як опц?я, повноц?нна п?дтримка заявлена у верс?? 2.8).Середовище виконання Mono – склада?ться з середовища виконання (CLI) безпосередньо, комп?лятора середовища виконання (Just-In-Time, JIT), генератора машинного коду (Ahead-Of-Time, AOT), завантажувача зборок, збирача см?ття, п?дсистеми управл?ння багатопоточн?сть ? компонент?в п?дтримки вза?мод?? м?ж зб?рками та COM (або аналогами в Linux, наприклад XCOM).Базова б?бл?отека клас?в – наб?р стандартних клас?в, сум?сних з класами Microsoft .NET Framework.Б?бл?отека клас?в Mono – наб?р клас?в, що п?дтримують додатков? функц?? для розробки Linux-додатк?в. Наприклад, класи для п?дтримки Zip, OpenGL, Cairo, GtkРисунок 3.3 – Середовище розробки MonoDevelopMicrosoft Visual Studio – сер?я продукт?в ф?рми Майкрософт, як? включають ?нтегроване середовище розробки програмного забезпечення та ряд ?нших ?нструментальних засоб?в. Ц? продукти дозволяють розробляти як консольн? програми, так ? програми з граф?чним ?нтерфейсом, в тому числ? з п?дтримкою технолог?? Windows Forms, а також веб-сайти, веб-застосунки, веб-служби як в р?дному, так ? в керованому кодах для вс?х платформ, що п?дтримуються Microsoft Windows, Windows Mobile, Windows Phone, Windows CE, .NET Framework, .NET Compact Framework та Microsoft Silverlight.Visual Studio включа? один або дек?лька з наступних компонент?в:Visual Basic .NET, а до його появи – Visual BasicVisual C++Visual C#Visual J#Visual F# (входить до складу Visual Studio 2010);Visual Studio DebuggerБагато вар?ант?в постачання також включають:Microsoft SQL Server абоMSDE Visual Source Safe – файл-серверна система управл?ння верс?ямиУ минулому, до складу Visual Studio також входили продукти:Visual InterDev;Visual J++;Visual J#;Visual FoxPro;Visual Source Safe – файл-серверна система управл?ння верс?ями.Microsoft Visual Studio – це нова розробка компан?? Microsoft, що дозволя? створювати додатки, що працюють на платформ? .net. Особлив?сть ц??? платформи поляга? в широкому набор? серв?с?в, як? доступн? в р?зних мовах програмування. При цьому серв?си реал?зуються у вигляд? пром?жного коду, який не залежить в?д базово? арх?тектури. Чи не головною метою створення тако? платформи було оснащення розробник?в спец?альними серв?сно-ор??нтованими програмами, як? могли б працювати на будь-як?й платформ?, починаючи в?д персонального комп'ютера ? зак?нчуючи моб?льним пристро?м.Microsoft Visual Studio об'?дну? в соб? величезну к?льк?сть функц?й, що дозволяють зд?йснювати розробки для Windows вс?х верс?й, у тому числ? ? 8, ?нтернету, SharePoint, р?зних моб?льних пристро?в ? хмарних технолог?й. У Visual Studio реал?зу?ться нове середовище розробника, завдяки якому створювати додатки стало прост?ше. Microsoft Visual Studio – це оновлене ??? спрощене програмне середовище, для якого характерна висока продуктивн?сть, причому вона не залежить в?д особливостей обладнання.Кожна нова верс?я програми склада?ться з нов?тн?х ?нструмент?в ? технолог?й, що дозволяють розробляти програми з урахуванням особливостей ? позитивних момент?в сучасних платформ.Операц?йне середовище розробки MS Visual Studio на сьогодн?шн?й день ? кращим вибором багатьох розробник?в, що працюють на платформ? Windows. Середовище дозволя? ефективно створювати складн? додатки протягом короткого пер?оду часу. На в?дм?ну в?д розглянутих вище операц?йних середовищ модель даного середовища повн?ша ? використову? так? поняття як р?шення (solution), проект, прост?р ?мен (namespace) ? зб?рка (assembly). Поняття проекту присутн? в багатьох середовищах, наприклад, в середовищ? Delphi. Файл проекту м?стить перерахування вих?дних файл?в та ?нших ресурс?в, з яких система буде будувати додаток. У р?шення середовища Visual Studio входять к?лька проект?в, як? можуть бути залежними або незалежними один в?д одного. Вид?ля?ться стартовий проект. Поняття зб?рки виходить з загальномовного виконавчо? середовища CLR (Common Language Runtime). Середа CLR ? найб?льш революц?йним винаходом, з появою якого процес написання ? виконання додатк?в ставати принципово ?ншим.Комп?лятор перетворю? файли з вих?дними кодами в коди на пром?жну мову MSIL (Microsoft Intermediate Language). Разом з метаданими ц? коди записуються PE-файли (Portal Executable), що мають розширення exe або dll в залежност? в?д типу проекту. Також може бути отриманий модуль з розширенням netmodule, який не м?стить метаданих.Програмний продукт Visual Studio 2012 Professional (див. рис. 3.4) м?стить ун?версальну ?нтегровану багатоплатформену середу р?зноб?чного тестування вс?х вид?в модул?в. Програма призначена для розробки р?зних веб-додатк?в, як? в?дпов?дають критер?ям щодо забезпечення коду оптимально? якост?. Використання продукту Visual Studio 2012 з п?дтримкою роботи на к?лькох мон?торах значно оптим?зу? процеси створення, налагодження та розгортання додатк?в на вс?х етапах проектування. Visual Studio 2012 – ун?версальний продукт, що п?дтриму? б?льшу частину розроблених платформ, наприклад Windows Server ? Windows, ? ?нтегрований з веб-середовищем ? хмарним середовищем, а також програмами SharePoint ? Office. Даним продуктом гаранту?ться стов?дсоткову коректн?сть к?нцевого коду.Ключовий функц?онал програмного додатку Visual Studio 2012 Professional:орган?зац?я робочого простору з можлив?стю одночасного застосування дек?лькох засоб?в розробки, редактор?в ? конструктор?в, необх?дних для створення програмного коду;процеси комп?ляц?? та тестування на р?вн? модул?в з можлив?стю використання при створенн? додатк?в Visual Studio 2012створення р?зноман?тних елемент?в: списк?в, веб-модул?в, робочих процес?в ? под?й, шляхом сп?льно? колективно? роботи над кодом в SharePoint.п?дтримка вбудованого ?нструментар?ю, наприклад: мультисенсорних технолог?й ? в?зуально настроюваного ?нтерфейсу, який застосову?ться для розробки ? створення додатк?в на платформ? Windows 8.можлив?сть створення ориг?нальних багатофункц?ональних веб-додатк?в, за допомогою використання даних баз .використання функц?? спрощеного розгортання для митт?вого перенесення параметр?в IIS ? схеми БД створених веб-додатк?в в середу виробництва, що знаходиться на ц?льовому сервер?.Саме тому середовищем розробки програмного забезпечення було вибрано Visual Studio 2012 [11].Рисунок 3.4 – Середовище розробки Visual Studio 20123.2 Розробка тем ? урок?в програмного додаткуПрограмний додаток дозволя? вивчення ?ноземно? мови за допомогою проходження набору певних тем. Кожна тема може м?стити в соб? вивчення лексики, вивчення граматики, проходження в?део урок?в. П?сля проходження теми автоматично розпочина?ться тест на перев?рку засво?них знань. Якщо при проходженн? тестових завдань були дан? неправильн? в?дпов?д?, користувач поверта?ться до повторного проходження теми ? пот?м знов проходить тести. Програма буде повертати користувача до повторного проходження теми ? тест?в до тих п?р, поки вс? в?дпов?д? на тести не будуть правильними.Адм?н?стратор може створювати нов? теми, додавати завдання з лексики, граматики, в?део уроки. Також адм?н?стратор може видаляти чи редагувати теми та ?х вм?ст.Також програмний додаток нада? можлив?сть вибору тем за ?нтересами (див. рис. 3.5).Рисунок 3.5 – Виб?р тем за ?нтересами3.3 Розробка вид?в тест?в ? алгоритму ?х оц?нюванняТест – система формал?зованих завдань, призначених для встановлення осв?тнього (квал?ф?кац?йного) р?вня особи. Педагог?чне тестування – форма оц?нювання знань учн?в, студент?в (аб?тур??нт?в), основана на застосуванн? педагог?чних тест?в.Тестування застосову?ться для визначення в?дпов?дност? предмета випробування заданим специф?кац?ям. У завдання тестування не входить визначення причин нев?дпов?дност? заданим вимогам (специф?кац?ям). Тестування – один з розд?л?в д?агностики.Процес тестування включа?:подачу тестового набору;визначення реакц?? об'?кта тестування на тестовий наб?р;оц?нку реакц?? ? висновки.Тести можна розд?ляти за багатьма ознаками. Основна класиф?кац?я – за спрямован?стю тесту: оц?нювати можна зд?бност? людини, його особист?сн? якост?, ?нтелект, окрем? псих?чн? функц?? (увага, пам'ять, уява), знання.?снують два основн? види тест?в: традиц?йн? ? нетрадиц?йн?.Тест волод?? складом, ц?л?сн?стю ? структурою. В?н склада?ться з завдань, правил ?х застосування, оц?нок за виконання кожного завдання ? рекомендац?й по ?нтерпретац?? тестових результат?в. Ц?л?сн?сть тесту означа? вза?мозв'язок завдань, ?х приналежн?сть загальному вим?рюваному фактору. Структуру тесту утворю? спос?б зв'язку завдань м?ж собою. В основному, це так звана факторна структура, в яко? кожне завдання пов'язане з ?ншими через загальний зм?ст ? загальну вар?ац?ю тестових результат?в.У сучасн?й тестолог?? розр?зняють 4 типи завдань у тестов?й форм?: завдання на виб?р одного або к?лькох правильних в?дпов?дей, завдання у в?дкрит?й форм? або на додаток, завдання на встановлення правильно? посл?довност? ? завдання на встановлення в?дпов?дностей. Найб?льш поширеною ? перша форма.Завдання на виб?р одного або к?лькох правильних в?дпов?дей для комп'ютерного контролю знань п?дходять найб?льше. Так? завдання зручно розд?лити на так? види: завдання з двома, трьома, чотирма, п'ятьма ? великим числом в?дпов?дей.Завдання ма? бути сформульовано коротко ? ч?тко, так, щоб його зм?ст був зрозум?лий при першому прочитанн?.Зм?ст завдання форму?ться як можна ясн?ше ? якомога коротше. Стисл?сть забезпечу?ться ретельним п?дбором сл?в, символ?в, граф?к?в, що дозволя? м?н?мумом засоб?в домогтися максимуму ясност? сенсу завдання. Необх?дно повн?стю виключити повтори сл?в, використання малозрозум?лих, р?дковживаних, а також нев?домих символ?в, що ускладнюють сприйняття сенсу. Добре, коли завдання м?стить не б?льше одного п?дрядного речення. Ще краще, коли короткими ? ? завдання ? в?дпов?дь.У завданнях в?дкрито? форми готов? в?дпов?д? не даються: ?х ма? придумати або отримати сам користувач. ?нод? зам?сть терм?ну ?завдання в?дкрито? форми? використовують терм?ни: ?завдання на доповнення? або ?завдання з конструйованою в?дпов?ддю?.Завдання на додаток бувають двох вид?в:з обмеженнями, що накладаються на в?дпов?д?, можливост? отримання яких в?дпов?дним чином визначен? за зм?стом ? формою подання;завдання з в?льно конструйованою в?дпов?ддю, в якому необх?дно дати розгорнуту в?дпов?дь у вигляд? повного вир?шення задач? або дати в?дпов?дь у вигляд? м?кро твору.У завданнях з обмеженнями заздалег?дь визнача?ться, що однозначно вважати правильною в?дпов?ддю, ? зада?ться ступ?нь повноти подач? в?дпов?д?. Зазвичай в?н бува? досить коротким – одне слово, число, символ ? т.д. ?нод? –б?льш довгим, але не перевищу? двох-трьох сл?в. Регламентована стисл?сть в?дпов?дей висува? певн? вимоги до сфери застосування, тому завдання першого виду в основному використовуються для оц?нки досить вузького кола ум?нь.Завдання другого типу з в?льно конструйованою в?дпов?ддю не мають н?яких обмежень на зм?ст ? форму подання в?дпов?дей. За певний час користувач може писати що завгодно ? як завгодно. Однак ретельна формулювання под?бних завдань передбача? наявн?сть еталона, в якост? якого зазвичай виступа? найб?льш правильну в?дпов?дь та описують його характеристиками ? ознаками якост?.У завданнях на встановлення в?дпов?дност? перев?ряються знання на зв'язки м?ж елементами двох множин. Елементи для з?ставлення записуються у два стовпц?: зл?ва зазвичай наводяться елементи множини, що м?стять постановку проблеми, а праворуч – елементи, що п?длягають вибору.Сл?д зазначити, що бажано, щоб у правому стовпц? елемент?в було б?льше, н?ж у л?вому. У ц?й ситуац?? виникають певн? труднощ?, пов'язан? з п?дбором правдопод?бних надлишкових елемент?в. ?нод? на один елемент л?вого стовпця необх?дно вибрати к?лька правильних в?дпов?дей ?з правого стовпця. Кр?м того, в?дпов?дност? можуть бути розширен? на три ? б?льше множин. Ефективн?сть завдання ?стотно знижу?ться, якщо неправдопод?бн? вар?анти будуть легко в?др?знятися.Тестов? завдання на встановлення правильно? посл?довност? призначен? для оц?нки р?вня волод?ння посл?довн?стю д?й, процес?в ? т.п. У завданнях наводяться в дов?льному, випадковому порядку д??, процеси, елементи, пов'язан? з певним завданням. Стандартна ?нструкц?я до цих завдань ма? вигляд: ?Встанов?ть правильну посл?довн?сть д?й?.Мета введення таких завдань у навчальний процес – формування алгоритм?чного мислення, алгоритм?чних знань, ум?нь ? навичок [12].Пор?вняльний анал?з характеристик тест?в наведено у таблиц? 3.1.Таблиця 3.1 – Пор?вняльний анал?з характеристик тестових завданьХарактеристикиЗавдання закрито? формиЗавдання на додатокЗавдання на встановлення в?дпов?дност?Завдання на встановлення посл?довност?12345Перев?рка знання факт?впридатн?придатн?придатн?придатн?Застосування знань за зразкомпридатн?придатн?придатн?придатн?Застосування знань у нестандартних ситуац?яхнепридатн?придатн?непридатн?придатн?Простота конструювання??неманемаВиняток вгадуванняне виключеноне виключеноне виключеноне виключеноОб'?ктивн?сть оц?нкитакн?тактакВиняток описокн?такн?н?Можлив?сть ориг?нального в?дпов?д?н?тактак/н?н?В програмному додатку для вивчення ?ноземно? мови використовуються дек?лька вар?ант?в тест?в: завдання закрито?, в?дкрито? форми, на встановлення полсл?довност?, тести закритого типу з використанням ауд?о файл?в. Тести в?дкрито? форми м?стять лише тести обмежено? форми. Тести на встановлення полсл?довност? под?ляються на: встановлення полсл?довност? побудови речення ? встановлення полсл?довност? побудови слова.Результат проходження тесту показу?ться одразу ж при в?дпов?д? на запитання (правильна в?дпов?дь вид?ля?ться зеленим, а неправильна – червоним). К?льк?сть правильних в?дпов?дей показу?ться також п?сля завершення тест?в. В?дпов?д? пройдених тест?в збер?гаються в баз? даних. При повторному проходженн? одного й того ж самого тесту данн? перезаписуються.Адм?н?стратор може створювати нов?, редагувати та видаляти тести.3.4 Розробка ?нтерфейсу вид?в тест?в програмного додатку?нтерфейс (в?д англ. Interface – поверхня розд?лу, перегородка) – сукупн?сть засоб?в, метод?в ? правил вза?мод?? (управл?ння, контролю ? т. д.) м?ж елементами системи. Цей терм?н використову?ться в багатьох галузях науки ? техн?ки. Його значення в?дноситься до будь-якого сполучення вза?мод?ючих сутностей (як природничих, так апаратних ? людино-машинних). П?д ?нтерфейсом розум?ють не т?льки пристро?, але й правила (протокол) вза?мод?? цих пристро?в.Залежно в?д контексту, поняття застосовне як до окремого елементу (?нтерфейс елементу), так ? до зв'язка елемент?в (?нтерфейс сполучення елемент?в).У контекст? окремого елемента ?нтерфейс елемента протилежний реал?зац?? елементу (внутр?шньому устрою та функц?онування). Користувачев? елемента нема? потреби знати, як реал?зований використовуваний елемент, щоб керувати ним, але використовуваний елемент ма? надати ?нтерфейс управл?ння.?нтерфейси ? основою вза?мод?? вс?х сучасних ?нформац?йних систем. Якщо ?нтерфейс якого-небудь об`?кта (персонального комп`ютера, програми, функц??) не зм?ню?ться, тобто ? стандартизованим, стаб?льним, то це да? змогу модиф?кувати сам об`?кт не перелаштовуючи принципи його вза?мод?? з ?ншими об`?ктами.В обчислювальн?й систем? вза?мод?я може виконуватися на р?вн? користувача, програмному та апаратному р?внях. Прийнято вид?ляти так? типи ?нтерфейс?в:?нтерфейс користувача – це сукупн?сть засоб?в, за допомогою яких користувач сп?лку?ться з р?зноман?тними пристроями;?нтерфейс командного рядка – ?нструкц?? комп`ютеру даються шляхом введення з клав?атури текстових рядк?в (команд);граф?чний ?нтерфейс користувача – програмн? функц?? представляються граф?чними елементами екрану;ф?зичний ?нтерфейс – спос?б вза?мод?? ф?зичних пристро?в;шлюз (телекомун?кац??) – пристр?й, що з`?дну? локальну мережу, наприклад, мережею ?нтернет;?нтерфейс програмування додатк?в (API) – наб?р стандартних б?бл?отечних метод?в, як? програм?ст може використовувати для доступу до функц?ональност? ?ншо? програми.?нтерфейс користувача – сукупн?сть засоб?в для обробки та в?дображення ?нформац??, максимально пристосованих для зручност? користувача; у граф?чних системах ?нтерфейс користувача реал?зову?ться багатов?конним режимом, зм?нами кольору, розм?ру, видимост? (прозор?сть, нап?впрозор?сть, невидим?сть) в?кон, ?хн?м розташуванням, сортуванням елемент?в в?кон, гнучкими налаштовуваннями як самих в?кон, так ? окремих ?хн?х елемент?в (файли, папки, ярлики, шрифти тощо), доступн?стю багатокористувацьких налаштувань [13].?нтерфейс тесту з закритим типом в?дпов?д? наведено на рис. 3.6 .Рисунок 3.6 – Тест з закритим типом в?дпов?д??нтерфейс тесту закритого типу в?дпов?д? з використанням ауд?о файл?в наведено на рис. 3.7.Рисунок 3.7 – Тест закритого типу в?дпов?д? з використанням ауд?о файл?в?нтерфейс тесту в?дкритого типу наведено на рис. 3.8.Рисунок 3.8 – Тест в?дкритого типу?нтерфейс тесту на встановлення полсл?довност? наведено на рис. 3.9.Рисунок 3.9 – Тест на встановлення полсл?довност?3.5 Розробка словник?в програмного додаткуСловниик – упорядкований в алфав?тному чи тематичному порядку список заголовних сл?в, лексикограф?чно опрацьованих.Словник – лексикограф?чний продукт, який м?стить впорядкований перел?к мовних одиниць (сл?в, словосполучень тощо) з короткими ?х характеристиками або характеристиками позначених ними понять, або з перекладом на ?ншу мову.?снують так? види словник?в, як д?алектн?, зворотн?, ?сторичн? (р?зновид тлумачного словника), ономастичн?, орфоеп?чн?, орфограф?чн? та перекладн? словники, а також етимолог?чний словник.Словник перекладний – словник, у якому ре?строве слово в р?зних його значеннях переклада?ться в?дпов?дниками ?ншо? мови.В програмному додатку для кожно? мови використову?ться св?й словник.В словнику можна виконувати ф?льтрац?ю в?дображувано? ?нформац??: показувати всю, зд?йснювати виб?рку за потр?бною буквою.При вибор? слова чи словосполучення з перел?ку словника, в?дбува?ться перех?д на стор?нку з перекладом слова чи словосполучення. Стор?нка перекладу м?стить переклад слова чи словосполучення, ауд?о файл, граф?чне зображення, пояснення на ?ноземн?й мов? ? його переклад, приклад використання (вживання) на ?ноземн?й мов? ? його переклад, перел?к тем, в яких зустр?ча?ться.Адм?н?стратор може додавати чи видаляти дан? словника, редагувати стор?нку перекладу видаляючи чи добавляючи дан?.3.6 Особливост? створення бази даних програмного додатку для вивчення ?ноземно? мови за допомогою SQL Server 2012База даних (скорочено – БД) – впорядкований наб?р лог?чно вза?мопов'язаних даних, що використовуються сп?льно та призначен? для задоволення ?нформац?йних потреб користувач?в.Головне завдання БД – гарантоване збереження значних обсяг?в ?нформац?? (так зван? записи даних) та надання доступу до не? користувачев? або ж прикладн?й програм?. Таким чином, БД склада?ться з двох частин: збережено? ?нформац?? та системи керування нею.Об’?кти бази даних:таблиц?;запити;форми;зв?ти.Таблиц? м?стять дан? у вигляд? двом?рно? таблиц?. Таблиц? – основа БД, в?д них залежать вс? ?нш? об'?кти БД. Кожна таблиця склада?ться ?з запис?в (рядк?в) та пол?в (стовпц?в). Робота з таблицями викону?ться у двох основних режимах: у режим? конструктора та режим? таблиц?.Запити використовуються для отримання даних з одн??? чи дек?лькох таблиць. В?дб?р потр?бних в?домостей в?дбува?ться на основ? критер??в, як? формулю? користувач.Форми використовують для зручного введення даних. Форма явля? собою д?алогове в?кно, яке дозволя? вводити, переглядати та друкувати дан?. У форм? можна в?добразити дан?, взят? з дек?лькох таблиць або запит?в.Зв?ти призначен? для в?дображення даних у зручному для користувача вигляд?. На основ? зв?ту може бути створений документ, який модна роздрукувати на принтер? чи додати до ?ншо? програми.При побудов? програмного додатку для вивчення ?ноземно? мови необх?дно збер?гати ?нформац?ю, що м?ститься в програм? ? програмно реал?зу?ться. Для цих ц?лей використовуються бази даних SQL Server 2012.База даних може бути заснована на одн?й модел? або на сукупност? дек?лькох.?сну? три основн? типи моделей даних: реляц?йна, ??рарх?чна та мережева.Терм?н ?реляц?йний? (в?д латин. rela?tio – в?дношення) указу? передус?м на те, що така модель збер?гання даних побудована на вза?мов?дношенн? частин, що ?? складають. У найпрост?шому випадку реляц?йна модель явля? собою двовим?рний масив або двовим?рну таблицю, а при створенн? складних ?нформац?йних моделей склада? сукупн?сть вза?мопов’язаних таблиць. Кожний рядок тако? таблиц? назива?ться записом, кожний стовпець – полем. Як правило, не вказу?ться максимально допустиме число стовпц?в у таблиц?, однак майже у вс?х комерц?йних СКБД ця межа ?сну? ?, як правило, склада? приблизно 255 стовпц?в. На в?дм?ну в?д стовпц?в, рядки таблиц? не мають визначеного порядку. Рядки таблиц? утворюють данн? р?зного формату ? р?зного типу, тобто можна стверджувати, що рядки таблиц? ? кортежами. У таблиц? може м?ститися будь-яка к?льк?сть рядк?в. Ц?лком припустиме ?снування таблиц? з нульовою к?льк?стю рядк?в. Така таблиця назива?ться порожньою. Порожня таблиця збер?га? структуру, визначену ?? стовпцями, просто в н?й не м?стяться дан?. Стандарти реляц?йних баз даних не накладають обмежень на к?льк?сть рядк?в у таблиц?, ? в багатьох СКБД розм?р таблиць обмежений лише в?льним дисковим простором комп’ютера.Як правило, в сучасних реляц?йних БД допуска?ться збереження символьних, числових даних, б?тових рядк?в, спец?ал?зованих числових даних (таких як "грош?"), а також спец?альних "темпоральних" даних (дата, час, часовий ?нтервал).Реляц?йна модель бази даних ма? так? властивост?:кожний елемент таблиц? – один елемент даних;ус? стовпц? в таблиц? ? однор?дними, тобто мають однаковий тип;кожний стовпець (поле) ма? ун?кальне ?м’я;однаков? рядки в таблиц? в?дсутн?;порядок сл?дування рядк?в у таблиц? може бути дов?льним ? може характеризуватися к?льк?стю пол?в, к?льк?стю запис?в, типом даних.Реляц?йна модель даних, як правило, склада?ться з дек?лькох таблиць, як? зв’язуються м?ж собою ключами. Ключ – поле, яке однозначно визнача? в?дпов?дний запис. Ключ може бути первинний ? зовн?шн?й. Первинний ключ – атрибут, або наб?р атрибут?в, що однозначно ?дентиф?ку? кортеж даного в?дношення. Первинний ключ обов'язково ун?кальний, в?н ?диний ? найголовн?ший ?з ун?кальних ключ?в.В реляц?йних базах даних первинний ключ зада?ться обмеженням PRIMARY KEY. Зовн?шн?й ключ – атрибут (наб?р атрибут?в) в деякому в?дношенн? R, який в?дпов?да? первинному ключу ?ншого в?дношення або того ж таки в?дношення R. В реляц?йних базах даних зовн?шн?й ключ зада?ться обмеженням FOREIGN KEY.Необх?дно зазначити, що зараз реляц?йна модель даних ? найб?льш зручною ? застосовною моделлю збер?гання даних. У реляц?йн?й модел? досяга?ться б?льш високий р?вень абстракц?? даних, н?ж в ??рарх?чн?й або мережев?й [14].Реляц?йна модель бази даних представлена на рис. 3.11 ? рис. 3.12Для опису моделей даних бази даних використову?ться ER-модель.Модель "сутн?сть-зв'язок" (ER-модель) (англ. Entity-relationship model або entity-relationship diagram) – модель даних, яка дозволя? описувати концептуальн? схеми за допомогою узагальнених конструкц?й блок?в. ER-модель – це мета-модель даних, тобто зас?б опису моделей даних. Сутн?сть (entity) – це об'?кт, який може бути ?дентиф?кований якимсь способом, що в?др?зня? його в?д ?нших об'?кт?в. Приклади: конкретна людина, п?дпри?мство, под?я ? т.д. ER – модель зручна при проектуванн? ?нформац?йних систем, баз даних, арх?тектур комп'ютерних застосунк?в та ?нших систем (моделей). За допомогою тако? модел? вид?ляють найсутт?в?ш? елементи (вузли, блоки) модел? ? встановлюють зв'язки м?ж ними. ?сну? ряд моделей для представлення знань. Одним з найзручн?ших ?нструмент?в ун?ф?кованого представлення даних, незалежного в?д реал?зовуючого його програмного забезпечення, ? модель "сутн?сть-зв'язок" (entity – relationship model, ER – model) [15].ER-модель бази даних зображена на рис. 3.13 ? рис. 3.14.Висновки:В даному розд?л? було проанал?зовано ? розроблено теми ? завдання, види тест?в та алгоритм ?х оц?нювання, розробка ?нтерфейсу тест?в, а також розробка словник?в. Також були визначен? особливост? створення бази даних для програмного додатку.Програмний додаток для вивчення ?ноземно? мови був розроблений таким чином, щоб забезпечити максимальну наочн?сть ? зручн?сть у користуванн?. Розроблений додаток п?дтриму? можливост? вдосконалення та покращення, що дуже важливо в умовах сучасного розвитку Internet технолог?й.4 Тестування програмного додатку4.1 ?нструкц?я користувачаПри запуску програмного додаткудля вивчення ?ноземно? мови завантажу?ться головне в?кно (див. рис. 4.1).Рисунок 4.1 – Головне в?кно програмиЩоб ув?йти у систему п?д власним ?менем, необх?дно спершу залог?нитись. Для цього необх?дно натиснути log in в верхньому правому кутку програмного в?кна. П?сля входження в систему, результати проходження тест?в користувачем будуть збер?гатися в баз? даних. При натисненн? на теми, в?дкрива?ться стор?нка з перел?ком вс?х ?снуючих тем (див. рис. 4.2). Додаток дозволя? зд?йснювати пошук по темам.Рисунок 4.2 – Перел?к темПри вибор? певно? теми в?дбува?ться перех?д на стор?нку з описом вм?сту теми: завдання з лексики, граматики ? т.д. (див. рис. 4.3). Рисунок 4.3 – Вм?ст темиПри в?дкритт? завдань з лексики в?дбува?ться завантаження стор?нка з уроками (див. рис. 4.4).Рисунок 4.4 – Завдання з лексикиПри вибор? в меню пункту граматика, в?дбува?ться перех?д на стор?нку з перекладом вс?х урок?в по граматиц?.4.2 Тестування програмного додатку Тестування програмного забезпечення (англ. Software Testing) – це процес техн?чного досл?дження, призначений для виявлення ?нформац?? про як?сть продукту в?дносно контексту, в якому в?н ма? використовуватись. Техн?ка тестування також включа? як процес пошуку помилок або ?нших дефект?в, так ? випробування програмних складових з метою оц?нки. Може оц?нюватись:в?дпов?дн?сть вимогам, якими керувалися проектувальники та розробники;правильна в?дпов?дь для ус?х можливих вх?дних даних;виконання функц?й за прийнятний час;практичн?сть;сум?сн?сть з програмним забезпеченням та операц?йними системами;в?дпов?дн?сть задачам замовника.Оск?льки число можливих тест?в нав?ть для нескладних програмних компонент практично неск?нченне, тому стратег?я тестування поляга? в тому, щоб провести вс? можлив? тести з урахуванням наявного часу та ресурс?в. Як результат програмне забезпечення (ПЗ) тесту?ться стандартним виконанням програми з метою виявлення ба??в (помилок або ?нших дефект?в).Тестування ПЗ може надавати об'?ктивну, незалежну ?нформац?ю про як?сть ПЗ, ризики в?дмови, як для користувач?в так ? для замовник?в.Тестування може проводитись, як т?льки створено виконуваний код (нав?ть частково завершено). Процес розробки зазвичай передбача? коли та як буде в?дбуватися тестування. Наприклад, при поетапному процес?, б?льш?сть тест?в в?дбува?ться п?сля визначення системних вимог ? тод? вони реал?зуються в тестових програмах. На противагу цьому, в?дпов?дно до вимог гнучко? розробки ПЗ, програмування ? тестування часто в?дбува?ться одночасно [15].П?д час проведення тестування програмного додатку для вивчення ?ноземно? мови виявлено, що додаток в?добража?ться однаково в найб?льш популярних браузерах, таких як Internet Explorer, Opera, Mozilla Firefox, Chrome. Перев?рка програми на юзаб?л?т? показала, що програмний додаток ? зручним для користувача, ма? зручну нав?гац?йну панель та ?нту?тивно зрозум?лу лог?чну структуру. П?д час перев?рки не виявлено помилок коду.Висновки:В даному розд?л? розглянута ?нструкц?я користувача. Також було проведено тестування програмного додатку для вивчення ?ноземно? мови. В ход? тестування жодних помилок не виявлено, програмний додаток працю? коректно.ВИСНОВКИМетою дано? бакалаврсько? роботи ? розробка програмного додатку для вивчення ?ноземно? мови. В дипломн?й робот? проведено анал?з предметно? област?, ?снуючих вар?ант?в розв’язання досл?джувано? задач?. Проведено пор?внальний анал?з програм для вивчення ?ноземно? мови Busuu, Duolingo, Англ?йська за м?сяць, Speak English. Пор?вняльна характеристигка аналог?в занесена до таблиц?. Також був проведений анал?з метод?в розв’язання задач?.В робот? було досл?джено та проанал?зовано найб?льш важливу ? актуальну ?нформац?ю щодо розробки додатк?в, а саме основн? принципи створення програмних додатк?в, ?х структуру ? функц?ональн?сть, вза?мод?ю основних компонент?в. Також були розглянут? нов?тн? та найб?льш перспективн? web-технолог??, як? з усп?хом вже використовуються користувачами по всьому св?т?. В результат? виконання бакалаврсько? роботи було розроблено програмний додаток для вивчення ?ноземно? мови, який в?дпов?да? заданим умовам. Мовою веб-програмування з? сторони кл??нта було обано JavaScript, технолог??ю створення веб-застосунк?в ? веб-серв?с?в - з арх?тектурним шаблоном MVC, мовою реал?зац?? програмного додатку - C#, системою управл?ння базами даних Microsoft SQL Server 2012. Середовищем розробки програмного забезпечення було вибрано Visual Studio 2012. Розробка програмного додатку включала так? етапи як: розробка бази даних, анал?з ? розробка тем ? занять, розробка вид?в тест?в, алгоритм оц?нювання, збереження результат?в тестування, розробка словник?в та можлив?сть зд?йснення п?дбору тем за ?нтересами [16].Програмний додаток для вивчення ?ноземно? мови був розроблений таким чином, щоб забезпечити максимальну наочн?сть ? зручн?сть у користуванн?. Розроблений додаток п?дтриму? можливост? вдосконалення та покращення, що дуже важливо в умовах сучасного розвитку Internet технолог?й.Також було проведено тестування програмного додатку для вивчення ?ноземно? мови. В ход? тестування жодних помилок не виявлено, програмний додаток працю? коректно.Таким чином, отриман? результати доводять доц?льн?сть розробки програмного додатку для вивчення ?ноземно? мови. В процес? розробки програмного додатку та оформлення бакалаврсько? роботи на практиц? були закр?плен? теоретичн? знання, вдосконален? навички програмування, проведено оформлення техн?чно? документац?? в текстових та граф?чних редакторах.Бакалаврська дипломна робота м?стить 24 рисунка , 2 таблиц?, 88 стор?нки без додатк?в.ПЕРЕЛ?К ПОСИЛАНЬВажлив?сть вивчення ?ноземних мов у сучасному св?т? [електронний ресурс] // Режим доступу: – Назва з екрану.Граматика [електронний ресурс] // Режим доступу: Граматика– Назва з екрану.Busuu 4.12.1.37 [електронний ресурс] // Режим доступу: – Назва з екрану.Duolingo 3.4.0 [електронний ресурс] // Режим доступу: – Назва з екрану.Английский за месяц 1.19 [електронний ресурс] // Режим доступу: – Назва з екрану.Speak English 2.3 [електронний ресурс] // Режим доступу: – Назва з екрану. Языки программирования [електронний ресурс] // Режим доступу: – Назва з екрану Java Script [електронний ресурс] // Режим доступу: - Назва з екрануСистема керування базами даних [електронний ресурс] // Режим доступу: Система_керування_базами_даних – Назва з екрану.MySQL [електронний ресурс] // Режим доступу: - Назва з екрану Среды разработки программного обеспечения [електронний ресурс] // Режим доступу: Виды тестов и формы тестовых заданий [електронний ресурс] // Режим доступу: Что такое интерфейс (interface)? [електронний ресурс] // Режим доступу: Реляц?йна модель даних [електронний ресурс] // Режим доступу: Реляц?йна_модель_даних – Назва з екрану/Айзенберг Брайан. Тестирование и оптимизация веб-сайтов: руководство по Google Website Optimizer / Брайан Айзенберг, Джон Кварто вон Тивадар, Лайза Т. Дэвис. – изд. Диалектика, 2009. – 336 с. – ISBN 978-5-8459-1542-9Романюк О.Н. Веб-дизайн ? комп’ютерна граф?ка. Навчальний пос?бник/ О.Н. Романюк, Д.?. Кат?льн?ков, О.П. Косовець. – В?нниця: ВНТУ, 2007. – 147с. ДОДАТКИДОДАТОК А.Техн?чне завданняВНТУЗАТВЕРДЖУЮЗав?дувач кафедри ПЗд.т.н., проф. А.М. П?тух“_____” ________ 2015 р.Техн?чне завдання на бакалаврську дипломну роботу з напряму п?дготовки 6.050103 – Програмна ?нженер?ястуденту групи 1П?-11б Доценко Тетян? Володимир?вн?1.1 Найменування та галузь застосуванняРозробка програмного додатку для вивчення ?ноземно? мови. Зг?дно отриманого завдання к?нцевий програмний продукт може використовуватись в навчальних ц?лях за допомогою глобально? мереж? ?нтернет.1.2 П?дстава для проведення роб?тЗавдання на роботу, яке затверджене на зас?данн? кафедри програмного забезпечення – протокол № ______ в?д __________. 1.3 Мета та призначення роботиМетою роботи ? розробка програмного додатку для вивчення ?ноземно? мови.Для досягнення поставлено? мети в робот? вир?шуються так? завдання:розробити базу даних;розробити CRUD-функц?ональн?сть;розробити систему тест?в ? алгоритму ?х оц?нювання;розробити теми ? заняття;розробити словник;розробити можлив?сть п?дбору тем за ?нтересами;розробити програмний додаток для вивчення ?ноземно? мови. Техн?чн? вимогиоперац?йна система – Windows; програмна платформа - .NET Framework;середовище розробки –Microsoft Visual Studio 2012;1.5 Перел?к техн?чно? документац??, що пред’явля?ться по зак?нченню роб?т:техн?чне завдання;л?стинги програми.1.6 Стад?? ? етапи розробкиЗавдання на проектування видане _________ 2015 року. Проектування та досл?дження повинно бути завершеним до 18 червня 2015 року. Об?рунтування доц?льност? розробки5.05.15Анал?з засоб?в розробки програмного додатку для вивчення ?ноземно? мови9.05.15Програмна реал?зац?я тестового програмного додатку для вивчення ?ноземно? мови15.05.15Тестування програмного додатку17.06.151.7 Порядок контролю ? прийманняПорядок контролю ? приймання роботи регламенту?ться в?дпов?дними документами ВНТУ ? державними стандартами. Завдання отримав Т.В. Доценко, студентка гр. 1 П?-11б Науковий кер?вник О.М. Рейда, к.т.н., доцент кафедри ПЗДОДАТOК Б. Код програми ContentReader.csusing System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;namespace LexiGramWeb.DAL{public class ContentReader{public static string GetTxtFileContent(string pathToFile){string content = "";if (!string.IsNullOrEmpty(pathToFile) && File.Exists(pathToFile)){try{using (StreamReader sr = new StreamReader(pathToFile)){content = sr.ReadToEnd();}}catch (Exception ex){content = ex.Message;}}return content;}}}DictionaryRepository.csusing System;using System.Collections.Generic;using System.Data;using System.Data.Entity;using System.Linq;using System.Linq.Expressions;using System.Text.RegularExpressions;using System.Web;using LexiGramWeb.Models;namespace LexiGramWeb.DAL{public class DictionaryRepository : IDictionaryRepository{private LexiGramEntities context = null;private DbSet<DictionaryEnUk> dbSetEn = null;private DbSet<DictionaryDeUk> dbSetDe = null;public DictionaryRepository(){this.context = new LexiGramEntities();dbSetEn = context.Set<DictionaryEnUk>();dbSetDe = context.Set<DictionaryDeUk>();}public DictionaryRepository(LexiGramEntities db){this.context = db;dbSetEn = db.Set<DictionaryEnUk>();dbSetDe = db.Set<DictionaryDeUk>();}public IEnumerable<AnyDictionary> SelectAll(LanguagesEnum l){switch (l){case LanguagesEnum.de:return dbSetDe.ToList().Select(d => (AnyDictionary)d).ToList();default:return dbSetEn.ToList().Select(d => (AnyDictionary)d).ToList();}}public AnyDictionary SelectByID(int id, LanguagesEnum l){switch (l){case LanguagesEnum.de:return dbSetDe.Find(id);default:return dbSetEn.Find(id);}}public AnyDictionary SelectByIDs(int originalId, int translationId, LanguagesEnum l){switch (l){case LanguagesEnum.de:return dbSetDe.FirstOrDefault(d => d.OriginalId == originalId && d.TranslationId == translationId);default:return dbSetEn.FirstOrDefault(d => d.OriginalId == originalId && d.TranslationId == translationId);}}public IEnumerable<AnyDictionary> SelectByOriginalId(int originalId, LanguagesEnum l){switch (l){case LanguagesEnum.de:return dbSetDe.Where(d => d.OriginalId == originalId).ToList().Select(d => (AnyDictionary)d).ToList();default:return dbSetEn.Where(d => d.OriginalId == originalId).ToList().Select(d => (AnyDictionary)d).ToList();}}public IEnumerable<AnyDictionary> SelectByOriginal(string original, LanguagesEnum l){original = original.ToLower();switch (l){case LanguagesEnum.de:return dbSetDe.Where(d => d.Original.Original.ToLower() == original).ToList().Select(d => (AnyDictionary)d).ToList();default:return dbSetEn.Where(d => d.Original.Original.ToLower() == original).ToList().Select(d => (AnyDictionary)d).ToList();}}public IEnumerable<AnyDictionary> SelectByOriginalPattern(string pattern, LanguagesEnum l){switch (l){case LanguagesEnum.de:return dbSetDe.ToList().Where(d => Regex.Match(d.Original.Original, pattern).Success).Select(d => (AnyDictionary)d);default:return dbSetEn.ToList().Where(d => Regex.Match(d.Original.Original, pattern).Success).Select(d => (AnyDictionary)d);}}public IEnumerable<AnyDictionary> SelectByTranslationId(int translationlId, LanguagesEnum l){switch (l){case LanguagesEnum.de:return dbSetDe.Where(d => d.TranslationId == translationlId).Select(d => (AnyDictionary)d).ToList();default:return dbSetEn.Where(d => d.TranslationId == translationlId).Select(d => (AnyDictionary)d).ToList();}}public void Insert(AnyDictionary dic){switch (dic.Language){case LanguagesEnum.de:DictionaryDeUk de = dic;dbSetDe.Add(de);context.SaveChanges();dic.DicId = de.DicId;break;default:DictionaryEnUk en = dic;dbSetEn.Add(en);context.SaveChanges();dic.DicId = en.DicId;break;}}public void Update(AnyDictionary dic){switch (dic.Language){case LanguagesEnum.de:DictionaryDeUk dicDe = dic;DictionaryDeUk dicDeOld = dbSetDe.Find(dic.DicId);if (dicDeOld != null){context.Entry(dicDeOld).CurrentValues.SetValues(dicDe);context.Entry(dicDeOld).State = EntityState.Modified;}else{dbSetDe.Attach(dicDe);context.Entry(dicDe).State = EntityState.Modified;}break;default:DictionaryEnUk dicEn = dic;DictionaryEnUk dicEnOld = dbSetEn.Find(dic.DicId);if (dicEnOld != null){context.Entry(dicEnOld).CurrentValues.SetValues(dicEn);context.Entry(dicEnOld).State = EntityState.Modified;}else{dbSetEn.Attach(dicEn);context.Entry(dicEn).State = EntityState.Modified;}break;}context.SaveChanges();}public void Delete(int id, LanguagesEnum l){switch (l){case LanguagesEnum.de:DictionaryDeUk dicDe = dbSetDe.Find(id);dbSetDe.Remove(dicDe);break;default:DictionaryEnUk dicEn = dbSetEn.Find(id);dbSetEn.Remove(dicEn);break;}context.SaveChanges();}public void Save(){context.SaveChanges();}}}ДОДАТОК В. ?люстративний матер?ал до захисту бакалаврсько? роботи?люстративний матер?ал до захисту бакалаврсько? роботиЗав?дувач кафедри ПЗ, д. т. н., професор _______________________ А. М. П?тухНауковий кер?вник, к.т.н., доцент кафедри ПЗ __________________ О.М.РейдаРецензент, зав?дувач кафедри МБ?С д. т. н., професор __________О. М. Ро?кНормоконтроль, к. т. н., доцент кафедри ПЗ____________________ О.М.Рейда Виконавець, студентка групи 1П?-11б_________________________Т.В.Доценко ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download