Створення навчальної програми по вивченню іноземної мови

Розробка кросплатформового інструменту електронного тестування учнів молодших та середніх класів по іноземній мові. Вибір середовища розробки та системи контролю версій. Опис мови програмування Java та лістинг програми. Апаратні та програмні вимоги.

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

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

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

ВСТУП

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

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

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

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

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

В зв'язку з цим необхідно підкреслити, що завдяки комп'ютерному тестуванню:

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

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

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

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

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

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

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

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

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

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

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

В перспективі треба сформувати навколо проекту співтовариство розробників, які будуть доповнювати програму, шукати і виправляти помилки. Це буде можливо завдяки відкритим вихідним кодам і ліцензії GNU GPL. Ще важливу роль в цьому може зіграти правильний вибір мови програмування, середовища для розробки, хостингу для проекту і систему контролю версій коду.

1 Аналіз завдання дипломного проекту

1.1 Постановка завдання

Завдання: розробити простий, зручний у використанні, кросплатформовий інструмент для проведення електронного тестування учнів молодших та середніх класів по іноземній мові.

Програма тестування повинна відповідати таким вимогам:

- зручність створення уроків, данні знаходяться в CSV файлах і редагуються звичайними табличними процесорами, наприклад OpenOffice Calc;

- реєстрація в системі, введення прізвища та імені;

- вибір уроку із списку існуючих;

- тестування повинне бути обмежене по часу;

- введення відповіді повинно проходити з клавіатури;

- програма повинна мати візуальні та голосові підказки;

- результати тестування оцінюються у балах по кількості правильно написаних літер в слові та визначається оцінка від 2 до 5 балів;

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

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

- кросплатформеність;

- зручність у користуванні та розробці нових уроків;

- зручність у модернізації;

- розширюваність;

- адаптивність.

1.2 Вибір мови програмування

Так як одна із вимог це кросплатформеність, програма повинна без модернізацій працювати на різних платформах, наприклад Windows і Linux, а тому була вибрана об'єктно-орієнтована, кросплатформова мова програмування Sun Java версии 1.6. Синтаксис мови багато в чому походить від C та C++. У офіційній реалізації, Java програми компілюються у байткод, який при виконанні інтерпретується віртуальною машиною для конкретної платформи.

Sun Microsystems надає компілятор Java та віртуальну машину Java, які задовольняють специфікації Java Community Process, під ліцезією GNU General Public License.

Мова значно запозичила синтаксис із C і C++. Зокрема, взято за основу об'єктну модель С++, проте її модифіковано. Усунуто можливість появи деяких конфліктних ситуацій, що могли виникнути через помилки програміста та полегшено сам процес розробки об'єктно-орієнтованих програм. Ряд дій, які в С/C++ повинні здійснювати програмісти, доручено віртуальній машині. Передусім, Java розроблялась як платформо-незалежна мова, тому вона має менше низькорівневих можливостей для роботи з апаратним забезпеченням. При необхідності java дозволяє викликати підпрограми, написані на інших мовах програмування.

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

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

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

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

1.3 Вибір середовища розробки та системи контролю версій

Середовищем розробки був вибраний вільний, кросплатформений програмний продукт Eclipse під керуванням операційної системи GNU/Linux.

Eclipse -- вільне модульне інтегроване середовище розробки програмного забезпечення. Розробляється і підтримується Eclipse Foundation.

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

- можливість розробки програмного забезпечення на багатьох мовах програмування (рідною є Java);

- крос-платформова;

- модульна, призначена для подальшого розширення незалежним розробниками;

- з відкритим вихідним кодом;

- розробляється і підтримується фондом Eclipse, куди входять такі постачальники програмного забезпечення, як IBM, Oracle, Borland.

Спочатку проект розроблявся в IBM як корпоративний стандарт IDE, настановлений на розробки на багатьох мовах під платформи IBM. Потім проект було перейменовано на Eclipse і надано для подальшого розвитку спільноти розробників.

Eclipse, насамперед, повноцінна Java IDE, націлена на групову розробку, має засоби роботи з системами контролю версій (підтримка CVS входить у поставку Eclipse, активно розвиваються кілька варіантів SVN модулів, існує підтримка VSS та інших). З огляду на безкоштовність, у багатьох організаціях Eclipse -- корпоративний стандарт для розробки програмного забезпечення на Java.

Щодо системи контролю версій був, обраний хостинг проектів з відкритим сирцевим кодом - Google Code. Це швидка, надійна і відкрита служба хостингу сирцевого коду. Хостинг проектів на Google Code дає наступні можливості:

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

- хостинг коду Subversion -- вільна система управління версіями з об'ємом сховища в 1 гігабайт і підтримка хостингу завантажень з об'ємом сховища в 2 гігабайти;

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

2 Створення навчальної програми по вивченню іноземної мови

2.1 Апаратні та програмні вимоги

Для запуску програми потрібна операційна система MSWindows або GNU / Linux та встановлене виконавче середовище Java (JRE) версії 1.6.0 і вище.

Системні вимоги до Windows:

Windows 98 (1-й і 2-й випуски);

Windows ME;

Windows NT (з пакетом оновлення 6a);

Windows 2000 (з пакетом оновлення 3);

Windows XP Home;

Windows XP Professional (з пакетом оновлень 1);

Windows 2003 Server Edition.

Крім того, у системі повинен бути встановлений процесор Pentium з тактовою частотою від 166 МГц і вище, повинно бути як мінімум 125 МБ вільного дискового простору і не менше 32 МБ оперативної пам'яті.

Системні вимоги для Linux:

Будь-який дистрибутив Linux з ядром версії 2.4 і вище та встановленим X-Window (X11), наприклад openSUSE 11.0.

Крім того, комп'ютер повинен бути оснащений процесором Pentium з тактовою частотою не менш 166 МГц і оперативною пам'яттю ємністю не менше 32 МБ. Мінімальний обсяг вільного дискового простору - 75 МБ.

В якості робочого місця для учня рекомендовано використовувати INTEL Classmate PC (рис. 1).

Рисунок 1 - Персональний комп'ютер учня Classmate PC

Персональний комп'ютер учня Classmate PC має висновок державної санітарно-епідеміологічної експертизи про відповідність вимогам діючого законодавства України.

Рішенням Комісії із засобів навчання Науково-методичної ради з питань освіти МОН України визнано Персональний комп'ютер учня Classmate PC таким, що відповідає педагогічним вимогам (протокол №3 від 10 лютого 2010 року).

Classmate PC містить наступні компоненти:

- видозмінений міні-корпус розміром 245 x 196 x 44 мм;

- ЦПУ: мобільний Intel ® Celeron M (915GMS + ICH6-M);

- тактова частота ЦПУ: 900 МГц (кеш II рівня відсутній, FSB частотою 400 МГц);

- 800 x 480 LCD-екран з діагоналлю 7 ", LED-підсвічування;

- 256 Мб ОЗП типу DDR2;

- 2 Гб флеш-пам'яті NAND, підключеної через USB;

- мережева карта 10/100 Мбіт ethernet;

- бездротовий зв'язок Wi-Fi Realtek WLAN 802.11b/gc антеною, підключена по USB;

- графічний чіп Intel GMS915 integrated graphics (використовується 8 Мб основної пам'яті;

- вбудований мікрофон;

- вбудовані стереодинаміки;

- виходи і входи для стереозвуку;

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

- круглий тачпад з окремими правою і лівою кнопками;

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

- TPM1.2 (Trusted Platform Module компанії Infineon Technologies AG) для захисту від розкрадання даних;

- джерела живлення: акумулятор Li-Ion (приблизно на 4 години роботи) і зовнішній блок живлення.

Програмне забезпечення

Пристрій здатний працювати як з GNU / Linux, так і з Windows XP Pro. Intel веде роботу з різними спільнотами GNU / Linux для забезпечення сумісності з їх версіями. Зокрема, була перероблена версія Mandriva.

На даний момент Classmate PC підтримують наступні дистрибутиви:

- Debian GNU / Linux;

- openSUSE;

- Ubuntu;

- DSL;

- Mandriva;

Недоліки Classmate PC:

- маленький розмір екрану;

- малий об'єм носія даних (флеш пам'яті).

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

Наведемо деякі, вже типові несправності ноутбуків.

1. Лампа підсвічування. Якщо екран почав показувати занадто темно, перестало бути видно картинку, то справа саме в лампі підсвічування. У цьому випадку треба міняти інвертор або саму лампу.

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

3.Кольорові смуги. Якщо на екрані дисплея ви помітили тонкі кольорові смужки, або горизонтальні, або вертикальні, то треба замінити усю матрицю. Це ознака того, що відшарується шар скла.

4. Клацання всередині ноутбука. Періодичне клацання всередині ноутбука говорить про те, що треба скоріше міняти жорсткий диск.

5. Зменшился час автономної роботи. Якщо ноутбук став працювати від акумулятора всього 5-20 хвилин, то це ознака того, що акумулятор виходить з ладу. Його потрібно змінювати. Однак, для початку можна зробити пару раз «зарядку-розрядку» акумулятора. Іноді це допомагає усунути цю несправність.

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

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

Стрімке зростання технологій, пов'язаних з Інтернетом, WWW і “електронною комерцією”, додатково ускладнюють це завдання. Модний нині об'єктно-орієнтований підхід сам по собі не вирішує цих проблем, більш того, часто привносить нові.

Пропонований фірмою Sun Microsystems підхід, а саме система програмування на основі мови Java(ТМ) володіє наступними характеристиками:

- мова програмування об'єктно-орієнтована, в той же час досить проста для освоєння;

- цикл розробки програм скорочений за рахунок того, що система побудована на основі інтерпретатора;

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

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

- в інтерактивній графічній програмі вдається досягти високої продуктивності (швидкого відгуку на введення користувача) за рахунок вбудованої в систему багатопотоковості;

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

- в програму вбудована система безпеки, що не допускає незаконного доступу і проникнення вірусів.

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

Система повинна була увібрати в себе кращі риси з безлічі сучасних систем програмування: Eiffel, Smalltalk, Objective C, Cedar/Mesa і т.д..

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

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

Створена система розробки Java задовольняє всім цим вимогам:

- проста, тому може бути використана широким колом розробників;

- об'єктно орієнтована, що відповідає сучасному погляду на програмування;

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

- інтерпретіруєма, що забезпечує переносимість і покращує динамічні властивості.

Розглянемо кожну з цих властивостей окремо.

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

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

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

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

Модель роботи з пам'яттю, в якій виключено використання покажчиків, робить неможливим цілий клас помилок, характерних для С і С++.

Через те, що Java призначена для роботи в розподіленому середовищі, безпека стає надзвичайно важливою проблемою. Вимоги безпеки визначають багато рис як мови, так і реалізації всієї системи.

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

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

Цей стандарт фіксований в документі, Java Virtual Machine. Стандарт може бути реалізований на будь-якій апаратно-програмній платформі, що підтримує багатопотоковість.

Схема роботи системи і набір байт-кодів віртуальної машини Java такі, що дозволяють досягти високої продуктивності на етапі виконання програми:

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

- робота з базовими типами максимально ефективна, для операцій з ними зарезервовані спеціальні байт-коди;

- методи в класах не обов'язково зв'язуються динамічно;

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

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

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

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

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

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

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

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

Повна система Java включає готовий набір бібліотек, який можна розбити на наступні пакети:

java.lang -- базовий набір типів, відображених в самій мові; цей пакет обов'язково входить до складу будь-якої програми; містить описи класів Object і Class, а також підтримку багатопотоковості, виняткових ситуацій, оболонку для базових типів, а також деякі фундаментальні класи;

java.io -- потоки і файли довільного доступу; аналог бібліотеки стандартного введення-виведення системи UNIX; підтримка мережевого доступу (sockets, telnet, URL) міститься в пакеті java.net;

java.util -- класи-контейнери (Dictionary, HashTable, Stack) і деякі інші утиліти; кодування і декодування. Класи Date і Time;

java.awt -- Abstract Windowing Toolkit, незалежний віконний інтерфейс, що дозволяє запускати інтерактивні віконні Java-програми на будь-якій платформі; містить базові компоненти інтерфейсу, такі як події, кольори, шрифти, а також основні віконні елементи -- кнопки, scrollbars і т.п..

Результат -- новий підхід до розподілених обчислень.

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

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

В результаті С++ стала нескінченно складною і надмірною -- одну і ту ж операцію можливо реалізувати на мові безліччю способів.

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

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

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

- є джерелом складних і пізно розпізнаваних помилок.

В той же час в мові Java повністю збережений “дух” програмування на С++, досвідченим С++ - програмістам буде потрібно один-два тижні на освоєння самої мови, а величезний об'єм програмного забезпечення, вже створеного з використанням С++, може бути адаптований під нову мову відносно легко.

У мові Java, так само як і в С++, існує набір вбудованих типів даних, які (так само як і в С++) не є об'єктами. Набір їх також схожий з набором базових типів С++ за деякими виключеннями.

Numeric - характерною відмінністю від С++ є те, що бінарне представлення чисел відтепер фіксоване:

- цілі числа: 8-бит byte, 16-бит short, 32-бит int, 64-бит long; всі числа із знаком, ключ unsigned з мови видалені;

- числа з плаваючою крапкою; 32-біт float, 64-біт double; подання повинне відповідати стандарту IEEE 754.

Character - відрізняються від С++ як синтаксисом, так і уявленням. Тип character є 16-розрядне число без знаку (діапазон 0-65,535). Кодування відповідає стандарту Unicode. Внаслідок того, що це кодування в ідеалі повинне охоплювати всі мови, що існують в світі, це уявлення повинне полегшити локалізацію програм.

Boolean - тип даних не виділений в С++, проте неявно присутній практично у всіх програмах. У Java тип називається boolean, може приймати значення true і false і не може (на відміну від С++) бути перетворений в інший тип.

Доданий новий оператор >>> логічного зсуву управо (так як немає беззнакових цілих чисел). Вбудована операція злиття рядків (оператор +).

На відмінність від С++ масиви в Java є повноцінними об'єктами з певним runtime уявленням. Декларація:

- Point myPoints[]; резервує посилання на масив, а не місце під реальний об'єкт; сам масив може бути потім створений виконанням;

- myPoints = new Point[10]; а його елементи заповнені операцією типу: myPoints[2]= new Point(); розмір масиву може бути отриманий під час виконання програми: howMany = myPoints.length;

Значення індексу перевіряється при кожному зверненні, при помилці викликається виняткова ситуація.

Покажчики повністю виключені з мови разом з цілою категорією важко вловимих помилок “сповільненої дії”. До того ж наявність покажчиків суперечить вимогам безпеки і ускладнює реалізацію складальника сміття.

Рядки Strings в Java є повноцінними об'єктами. Вони діляться на текстові константи (Strings) і рядки, що модифікуються (StringBuffer). Компілятор дозволяє явно визначати текстові літерали в програмі подібно до того, як це робиться в С++.

String hello = “Hello world!”; Посилання hello ініціюється об'єктом класу String на основі представлення “Hello world!” у кодуванні Unicode.

Оператор “+” може бути застосований до рядків, наприклад: System.out.println(”There are” + num + “characters in the file.”);

В Java відсутній вираз goto. Аналіз С/С++ текстів показав, що переважне число випадків використання цього оператора пов'язане з необхідністю виходу з вкладеного циклу. Для відлагодження таких ситуацій в Java перед початком блоку може ставитися мітка, а інструкції break і continue також можуть супроводжуватися міткою, на яку повинен бути здійснений перехід. Наприклад: test: for(int i = 0; i < 10; i++) for(int j = 0; j < 10; j++) if( i > 3) break test;

Необхідність явно управляти пам'яттю в С/С++ програмах завжди була проблемою для програмістів. Мало того, що самі програми рясніли викликами функції free або операторами delete, безпосередньо до логіки програми вони відношення не мають.

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

Java повністю знімає цю турботу з програміста. Автоматичний збиральник сміття зобов'язаний бути вбудований в run-time системи. Пам'ять об'єктів, на які більше немає посилань, врешті-решт повертається в систему.

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

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

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

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

Конструкція typedef була успадкована С++ з С. Із Java вона викинута зовсім.

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

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

Єдина важлива функція препроцесора, що залишилася -- дозволити включення в програму файлів-заголовків з описами класів. Ця операція може бути виконана просто і ефективно, якщо дозволити компілятору читати підготовлені бінарні файли з описом класів. Останній напрямок був вибраний при створенні мови Java.

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

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

В цьому сенсі Java чисто об'єктно-орієнтована система. Функції і процедури, не прив'язані до контексту якого-небудь об'єкту, більше не присутні в системі. За ситуації, коли функція логічно не прив'язана до певного екземпляра класу, вона може бути створена як метод самого класу (тобто мати тип static).

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

Інтерфейс може також містити визначення деяких констант.

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

Досвід використання перевантажених операторів в С++ показує, що вони мають сенс в досить обмеженому наборі ситуацій. З іншого боку, зловживання цією властивістю може зробити програму абсолютно незрозумілою. Єдине “вбудоване” в мову Java виключення -- можливість використання оператора “+” для склеювання рядків.

В мові Java заборонено автоматичне перетворення типів, широко використовуване (і рекомендоване) в С++. Щоб перетворити елемент одного типу в іншій, необхідно вказати це явно, наприклад: int myInt; double myFloat = 3.14159; myInt = myFloat; // допустимо в С++, неприпустимо в Java myInt = (int)myFloat; // допустимо в Java. Виняток становить перетворення між вбудованими чисельними типами без втрати інформації.

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

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

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

- знайомий -- Java зберігає стиль програмування C і С++;

- простий -- кількість конструкцій мови в Java істотно скорочена в порівнянні із С і С++;

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

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

Ідейними спадкоємцями Java є такі мови, як C++, Eiffel, Smalltalk і Objective C. За винятком примітивних типів даних, практично все в мові є об'єктом.

Основні вимоги до об'єктно-орієнтованої системи:

- інкапсуляція -- захована реалізація за абстрактним інтерфейсом;

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

- спадкоємство -- нові класи можуть успадковувати дані і функціональність вже існуючих класів;

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

Клас є мовна конструкція, що визначає поля даних об'єктів даного класу (instance variables) і їх поведінку (methods). Практично клас в Java сам по собі не є об'єктом. Це лише шаблон, який визначає, з яких частин складатиметься об'єкт, створений за допомогою цього класу, і як він поводитиметься.

Простий приклад опису класу:

class Point extends Object { public double x; public double у; }

Створити об'єкт описаного вище класу можна декларацією: Point myPoint; // оголошення змінної типа Point myPoint = new Point(); myPoint.x = 10.0; myPoint.y = 25.7;.

При оголошенні класу можливо вказати методи спеціального вигляду, названі конструкторами і призначені для ініціалізації створеного об'єкту. Ім'я цих методів повинне співпадати з ім'ям класу, вони можуть мати певну кількість аргументів, наприклад: class Point extends Object { Point() { x = 0.0; у = 0.0; } Point(double x, double у) { this.x = x; this.y = у; } public double x; public double у; }, а використані вони можуть бути таким чином: Point а; Point b; а = new Point(); b = new Point(1.0, 2.0); - ім'я this у визначенні конструктора з аргументами використовується для позначення самого об'єкту, в методі якого ми знаходимося, в тих випадках, коли посилання на цей об'єкт не є явним.

Якщо один об'єкт в програмі примушує інший виконувати якусь операцію, то прийнято говорити, що він посилає повідомлення іншому об'єкту. Наприклад, ми можемо перевизначити наш клас таким чином: Pclass Point extends Object { private double x; private double у; public void setX(double x) { this.x = x; } public void setН(double у) { this.y = у; }… }. Ми тепер зробили поля x і у недоступними ззовні класу, але для зміни їх стану передбачили спеціальні методи setX і setY.

Спеціальне ім'я finalize зарезервоване для методу, який буде викликаний збирачем сміття перед тим, як об'єкт буде знищений. Внаслідок того, що Java звільняє нас від необхідності самим стежити за звільненням пам'яті, займаної об'єктами, необхідність в таких методах зазвичай виникає лише тоді, коли треба звільнити якісь зовнішні ресурси, наприклад, закрити відкритий файл: protected void finalize() { try { file.close(); } catch (Exception e) { } }.

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

Наприклад, ми можемо описати новий клас, відповідний координатам точки в тривимірному просторі, на основі вже описаного класу для точки на площині: class ThreePoint extends Point { protected double z; ThreePoint() { super(); z = 0.0; } ThreePoint(double x, double у, double z) { super(x, у); this.z = z; }}. Тут ми додали нову координату z, а поля x і у (і методи доступу до них) успадкували від класу Point.

Контроль доступу до даних і методів об'єкту в Java дещо відрізняється від С++. Крім трьох рівнів доступу, наявних в С++ (public, private, protected) є четвертий, такий, що знаходиться десь між рівнями public і protected. Він не має імені і використовується за умовчанням, коли явно не вказаний інший рівень. Поля цього типу доступні всередині тільки одного програмного пакету.

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

Також слід зазначити, що контроль доступу в C++ допомагає програмістові лише при побудові програми. Відмінності між полями, поміченими public і private, відсутні у виконуваному модулі, створеному з використанням цієї мови. У Java контроль доступу реальний, оскільки він здійснюється не тільки при компіляції, але і безпосередньо перед запуском кодів на виконання віртуальною машиною.

Як і С++ мова Java дозволяє використовувати змінні і методи, що належать класу цілком. Для визначення їх використовується ключове слово static. Природно, що методи самого класу не можуть оперувати даними і методами об'єкту класу, оскільки вони не відносяться ні до якогось певного об'єкту.

Наприклад, версія реалізації класу Rectangle може бути задана таким чином: class Rectangle extends Object { static final int version = 2 ; static final int revision = 0 ; } Ключове слово final означає, що значення поля остаточне і зміні не підлягає (це константа).

Абстрактні методи -- це методи, для яких в даному класі не визначена їх реалізація. Ми указуємо лише на необхідність наявності методів з даним протоколом. Конкретна реалізація повинна бути здійснена класами-спадкоємцями. В той же час інша, “неабстрактна” частина класу може містити конкретну інформацію, яка може бути використана похідними класами. Наприклад: abstract class Graphical extends Object { protected Point lowerLeft; protected Point upperRight; … public void setPosition(Point ll, Point ur) { lowerLeft = ll; upperRight = ur; } abstract void drawMyself(); } class Rectangle extends Graphical { void drawMyself() { …. } } Тут ми описали клас Graphical.

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

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

Таким чином ми висвітили наступні сторони Java як об'єктно-орієнтованої мови програмування:

- класи визначають шаблон, по якому створюються конкретні об'єкти;

- поля даних об'єкту визначають стан об'єкту;

- об'єкти обмінюються повідомленнями між собою; отримання повідомлення приводить до виклику одного з методів;

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

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

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

Компілятор Java проводить не “машинні коди” подібно до того, як це робить, наприклад, компілятор мови С. Замість цього генеруються так звані байт-коди: високорівневі, машинонезалежні коди для абстрактної машини, яка повинна бути реалізована у вигляді інтерпретатора Java і run-time системи.

Сама по собі ідея байт-кодів не нова, вони широко використовуються в різних системах починаючи з середини сімдесятих років. Особливості Java байт-машини наступні:

- набір її кодів легко не тільки інтерпретувати, але і ефективно скомпілювати “на льоту” безпосередньо в машинні коди для будь-якої сучасної апаратної платформи;

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

Окрім незалежності кодів від конкретної архітектури, Java жорстко специфікує формат базових типів даних. Без цього одна і та ж програма, скомпільована для різних апаратних платформ, поводилася б по-різному. Наприклад, стандарт С/С++ не передбачає конкретного уявлення для цілого типу int. Передбачається, що цьому типу відповідає основний формат машинного слова для даної архітектури. В результаті програма, написана для 32-розрядного процесора, найчастіше переноситься на 16-розрядну архітектуру з дуже великими зусиллями.

Таким чином, рішення зафіксувати формати базових типів даних в Java цілком природне. Кожна Java-машина зобов'язана реалізувати їх таким чином: byte 8-bit two's complement short 16-bit two's complement int 32-bit two's complement long 64-bit two's complement float 32-bit IEEE 754 floating point double 64-bit IEEE 754 floating point char 16-bit Unicode character. Вибір саме такого набору базових типів і їх формату обумовлений тим, що практично будь-який сучасний центральний процесор підтримує ці формати.

Більш того, перенесення самого середовища може бути здійснене досить просто. Компілятор Java сам написаний на цій мові. Віртуальна машина написана на ANSI C відповідно до стандарту POSIX. Специфікація мови не містить посилань типу “залежно від конкретної реалізації”.

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

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

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

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

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

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

2.3 Опис розробленої програми для вивчення

Іноземної мови

Структура шляхів

Структура директорій програми:

.

|-- lessons

| |-- first

| |-- second

| `-- test

|-- results.txt

|-- run.bat

|-- run.sh

`-- small.jar

Тут lessons -- директорія, в якій знаходяться директорії з уроками. results.txt файл з результатами тестів, run.bat -- пакетний файл для запуску програми в операційній системі MSWindows; run.sh -- пакетний файл для запуску програми в операційній системі GNU/ Linux; small.jar -- це Java архів з програмою, являє собою звичайний ZIP-архів, у якому міститься частина програми на мові Java.

Структура директорії тестом:

.

|-- images

|-- sounds

`-- words.csv

Тут каталог image містить фонові малюнки для слів тесту в форматі jpg з ім'ям співпадаючим зі словом в тесті.

Каталог sounds містить фонограми вимови для слів тесту в форматі wav з ім'ям співпадаючим зі словом в тесті.

Файл words.csv містить данні через ";" для тесту: такі, як тестове слово, слово з символом "_" замість пропущених букв, переклад та час в секундах, відведених на дане слово (якщо час 0 або відсутній, то таймер не вмикається).

Приклад: test;t_st;Тест;60

Структура каталогу с тестом first:

first

|-- images

| |-- apple.jpg

| |-- bear.jpg

| |-- bird.jpg

| |-- cat.jpg

| |-- clock.jpg

| |-- cloud.jpg

| |-- dog.jpg

| |-- doll.jpg

| |-- door.jpg

| `-- tree.jpg

|-- sounds

| |-- apple.wav

| |-- bear.wav

| |-- bird.wav

| |-- cat.wav

| |-- clock.wav

| |-- cloud.wav

| |-- dog.wav

| |-- doll.wav

| |-- door.wav

| `-- tree.wav

`-- words.csv

Вміст файлу words.csv директорії first:

apple;ap__e;Яблуко;60

cat;c_t;Кішка

dog;d_g;Собака;50

doll;d_ll;Лялька;0

tree;tre_;Дерево;40

door;d__r;Двері;30

clock;clo__;Годиник;30

bird;b_rd;Птах;20

cloud;cl__d;Хмара;20

bear;b__r;Ведмідь;10

Алгоритм програми

Запуск програми на платформі Windows здійснюється запуском пакетного файлу "run.bat". Зміст файлу run.bat:

@echo off

start javaw.exe -jar small.jar

Запуск програми на платформі GNU/Linux здійснюється запуском пакетного файлу "run.sh". Зміст файлу run.sh:

#!/bin/sh

java -jar small.jar $@

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

Після передачі jar файлу віртуальній машині Java на виконання, в класі Main викликається метод main(), із якого викликається метод doLogin() і створюється об'єкт login класу Login, відповідальний за створення вікна входу в програму, запит імені користувача, пошук існуючих тестів в директорії програми методом Scan() класу Login та вибір тесту користувачем (рис. 2).

Рисунок 2 - Вікно входу в програму

Метод Scan() виконує пошук в директорії lessons і шукає там піддиректорії, які містять в собі файл words.csv:

public void Scan(String d){

File dir = new File(d);

String[] files = dir.list();

for(int i=0;i<files.length;i++){

if(new File(d+"/"+files[i].toString()+"/"+Main.ftxt).exists()) {

addL(files[i].toString());

}

}

}

Тут Main.ftxt - константа, описана в класи Main:

final static String ftxt = "words.csv";

Після вводу ім'я користувача в відповідну форму в вікні, вибір тесту (рис. 3) та натиснені кнопки входу, усі данні передаються в клас Main методом setEnv(), а вікно об'єкта login знищується.

Рисунок 3 -- Вибір із існуючих уроків

Метод setEnv() класу Main викликає метод doTest(), який створює об'єкт test класу Test:

public static void setEnv(String n,String l){

name = n;

less = l;

login = null;

doTest();

}

Тут поле name - ім'я користувача, less - шлях до директорії вибраного тесту.

Клас Test відповідає за створення основного вікна програми, всіх елементів управління та взаємодії з користувачем, вивід інформації на екран: текст та картинки. Також клас Test відповідає за зчитування клавіш, натиснутих користувачем.

static void doTest(){

test = new Test();

SwingUtilities.invokeLater(new Runnable() {

public void run() {

test.getJFrame().setVisible(true);

}

});

words = new Words(workdir,lessdir+less+"/",name,ftxt);

}

Також в методи doTest() створюються об'єкт words класу Words, який містить методи обробки тестів. Також клас Words містить методи роботи з файлами, наприклад метод парсингу файла words.csv:

void readFiles(){

File f= new File(workdir+ldir+ftxt);

String[] sbuff;

n=0;

try {

BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(f), Main.iocharset));

try {

String line = null;

while (( line = input.readLine()) != null){

sbuff = line.split("[ \";,\t]+");

// Слово з пропущеними літерами

try {

word_test[n] = sbuff[1].toUpperCase();

} catch(ArrayIndexOutOfBoundsException e){

word_test[n]=sbuff[0].toUpperCase();

}

// Переклад слова

try {

word_rus[n] = sbuff[2];

} catch(ArrayIndexOutOfBoundsException e){

word_rus[n]="";

}

// Картинка

try{

image[n] = ldir+imgdir+sbuff[0]+".jpg";

} catch(ArrayIndexOutOfBoundsException e){

image[n]=defimg;

}

// Звук (вимова)

try{

wav[n] = ldir+snddir+sbuff[0]+".wav";

} catch(ArrayIndexOutOfBoundsException e){

wav[n]=defwav;

}

// Час на тест

try{

time[n] = Integer.parseInt(sbuff[3]);

} catch(ArrayIndexOutOfBoundsException e){

time[n]= 0;

}

// Слово

try {

word_orig[n] = sbuff[0].toUpperCase();

} finally {

n++;

}

}

}

finally {

input.close();

}

}

catch (IOException ex){

ex.printStackTrace();

}

}

Після чого програма чекає натиснення кнопки "Розпочати тест" (рис. 4).

Рисунок 4 - Вікно привітання

Коли тест розпочато і для даного слова є обмеження по часу, вмикається таймер реалізований об'єктом timer класу Timer. По закінченні часу об'єкт timer викликає метод Main.test.Click(), цей же метод викликається, коли користувач натискає кнопку "Дати відповідь" або клавішу Enter на клавіатурі.

Метод Main.test.Click() викликає приватний метод doClick() об'єкта test. Він перевіряє чи є ще тести в списку і, якщо нема, викликаєтеся метод doSumary(), який видає результат тесту на екран та записує їх в файл results.txt.

За вивід голосових підказок (звуку в форматі wav) відповідає клас Wave.

Рисунок 5 -- Елементи управління тестом

На рисунку 5 зображенні елементи управління та взаємодії тесту:

1 -- екран візуального зображення слова; якщо файл з картинкою відсутній, то буде показаний логотип програми;

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


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

  • Широкі можливості по використанню комп'ютерних навчальних систем. Розробка навчальної системи мультимедійного посібника з дисципліни "Інформатика і ОТ" на тему "Особливості мови програмування С++. Вказівники". Вимоги до розробки навчальної програми.

    курсовая работа [2,9 M], добавлен 23.11.2010

  • Аналіз особливостей мови програмування Java та середовища Android Studio. Розробка програмного забезпечення для якісного та ефективного вивчення іноземних слів. Побудова базових алгоритмів і структури даних. Вибір мови програмування, реалізація програми.

    курсовая работа [335,3 K], добавлен 11.01.2015

  • Розрахунок собівартості інструментальної системи створення електронних підручників. Вибір технології та мови програмування. Загальна характеристика програми і принцип роботи. Вибір мови програмування. Опис тегів, які підтримуються HTML-редактором.

    дипломная работа [112,7 K], добавлен 04.06.2010

  • Розробка та схема алгоритму проектованої гри. Особливості мови програмування та середовища "Microsoft Visual Studio C++ 2008 Express Edition". Лістинг програми та загальний опис її роботи, аналіз отриманих результатів та оцінка практичної ефективності.

    курсовая работа [762,8 K], добавлен 03.05.2015

  • Проектування бази даних (БД). Проектування логічної моделі БД. Реалізація БД та створення таблиць. Встановлення зв’язків, вибір мови та середовища програмування. Опис функціональних елементів та реалізація програми. Опис та тестовий приклад програми.

    дипломная работа [1,6 M], добавлен 07.01.2017

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

    курсовая работа [510,2 K], добавлен 03.06.2011

  • Розробка програми на мові програмування С++ з використанням об'єктно-орієнтованого програмування. Робота з файлами, графікою, класами, обробка числової інформації. Графічні засоби мови програмування. Алгоритм задачі та допоміжні програмні засоби.

    курсовая работа [102,5 K], добавлен 14.03.2013

  • Дослідження середовища візуального програмування Delphi. Вивчення процесу створення навчальної програми "Електронний словник". Опис графічного інтерфейсу. Характеристика структури та основних процедур даної програми. Аналіз роботи з програмним кодом.

    курсовая работа [831,2 K], добавлен 01.03.2014

  • Проектування архітектури гри "Тетріс". Аналіз вимог до неї. Вивчення особливостей реалізації, кодування та тестування програми. Алгоритм побудови робочого поля. Вибір мови програмування. Розробка і налагодження тексту програми. Інструкції з експлуатації.

    курсовая работа [460,9 K], добавлен 04.03.2014

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

    курсовая работа [343,9 K], добавлен 24.08.2012

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