2008/09/23

  • Надзвичайні вправи проводяться у четвер, 13.30 за Р7.
  • Умови кредитування наведені в першій презентації.
  • Кожен студент повинен пройти лише одну практичну вправу та теоретичну вправу

комп’ютерні вправи

трудомісткість

  • Понеділок, 7.20, P3
  • П’ятниця, 9.00, P3
  • вправи в п'ятницю о 14.00 скасовано через відсутність інтересу.

умови кредитування

  • участь у практичних вправах (20%)
  • домашнє завдання (один раз на дві вправи) (30%)
  • остаточний проект (30%)
  • тест після практики спадковості (20%)

Вправа 1 (17 вересня 2008 р.)

Вступ до Java. Класи та предмети. Об'єкти мають стан (змінні екземпляра) та поведінку (методи).

Вправа 2 (1 жовтня 2008 р.)

Змінні приватного екземпляра. Геттері та посуд. Перевантажені методи. Конструктори. Поля та списки. Методи ToString (), equals () та hashCode () .

Вправа 3 (8 жовтня 2008 р.)

Представлення даних. Посилання, нуль. Пакети. Винятки.

Вправа 4 (15 жовтня 2008 р.)

Склад і спадковість. Методи успадкування та перекриття. Поліморфізм на прикладі. Абстрактні класи та методи.

Вправа 5 (22 жовтня 2008 р.)

Модифікатори видимості. Спадкування змінних екземпляра. Спадщина конструкторів. Перепечатування. Винятки II. Презентація

Вправа 6 (29 жовтня 2008 р.)

Винятки III. Винятки під час виконання. Кидання винятків. Презентація

Вправа 7 (5 листопада 2008 р.)

Винятки IV - спадкування у винятках і винятки у спадщині. Інтерфейси. Статичні методи та змінні. Презентація

Вправа 8 (12 листопада 2008 р.)

Вправа 9 (21 листопада 2008 р.)

Вправа 10 (28 листопада 2008 р.)

Графічні користувальницькі інтерфейси в Swing 2 - менеджери компонування. % red% Також містить слайди, яких не було на лекції. Презентація PDF презентація

Вправа 11 (10 грудня 2008 р.)

Вправа 1 (29 вересня 2008 р.)

Божевільний вчений робить різні експерименти над рибою у своїй лабораторії. Він придбав кілька акваріумів, в яких використовував один вид риб. У кожному акваріумі є окремий експеримент (опромінення випромінюванням ЕЛТ-монітора, дозволяючи MC Erik та Barbara або Immortal годувати фаст-фудом ...). Після закінчення експерименту можуть статися такі речі:

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

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

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

Вправа 2 (6 жовтня 2008 р.)

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

  • Створіть клас «Риба» з вагою, розміром, видом та ідентифікатором.
  • Створіть метод подачі (), який випадковим чином змінює вагу та розмір людини. Вагу можна збільшити на величину від нуля до половини початкової ваги. Розмір можна збільшити на величину від нуля до чверті початкового розміру.
  • Тримайте людей в акваріумі в ArrayList. Нехай експерименти викинуть рибу зі списку або додадуть рибу до списку.
  • Додайте конструктор до класу Rybicka, який встановлює тип риби та встановлює інші значення автоматично (ім’я) або випадковим чином (вага та розмір).
  • Посиліть експеримент так, щоб при створенні нових індивідів він випадковим чином визначав двох, хто буде батьками нової особи. (Нехай види риб створюються з назв видів батьків.) Переконайтесь, що риба може пам’ятати своїх батьків.

Надішліть завдання у ZIP-файлі з назвою name2 (приклад: novotnyr2-zip) до неділі 12 червня електронною поштою.

Вправа 3 (13 жовтня 2008 р.)

Програмуйте симулятор машини Тьюрінга.

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

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

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

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

Прикладом інструкції є q_0 0 1 q_1 R. Це означає, що якщо машина Тьюрінга перебуває у стані q_0, а голова читає символ 0, вона повинна написати символ 1 у полі, перейти в стан q_1 і рухатися праворуч (R = вправо, вправо).

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

Така машина Тьюрінга не зупиниться. На початку він знаходиться в стані q_0, зчитує 0 зі стрічки, пише 1 і переміщує голову вправо і переходить у стан q_1. На наступному кроці він читає 0, пише 1, переміщує головку вправо і переходить у стан q_0. Стани q_0 і q_1 чергуються між собою (у стані q_0 пишемо одиниці, а в стані q_0 - 0). Зверніть увагу, що інструкції виконуються не зверху вниз, як у класичній програмі Java, а на основі стану машини Тьюрінга.

Іншим прикладом машини Тьюрінга є машина, яка записує три одиниці на стрічку:

Після закінчення машина Тьюрінга залишається в стані q_3.

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

Для простоти, поки що, враховуйте лише ті набори інструкцій, які гарантовано зупиняться (тобто вони не будуть продовжуватися нескінченно на стрічці або не будуть «затоптані» на місці).

  • Домашнє завдання з машиною Тьюрінга необхідно надіслати до 25 жовтня 2008 року.

Вправа 4 (20 жовтня 2008 р.)

Поверніться до акваріума з попередньої вправи. Довідкове втілення проекту тут.

В акваріумі ми хочемо реєструвати не тільки дрібних риб, але й інших особливих тварин.

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

Крім того, переконайтеся, що популяція акваріума завантажується з текстового файлу.

Вправа 5 (27 жовтня 2008 р.)

Виконайте попереднє завдання. Домашнє завдання необхідно надіслати електронною поштою.

Вправа 6 (4 листопада 2008 р.)

Ми хочемо додати в акваріум різні декоративні іграшки - камені, рослини, пластикову башточку ... Декоративні речі не впливають на експерименти, вони просто займають простір. Приклад: піч займає місце для 2 риб. Забезпечити підтримку декоративних предметів для акваріума.

Завантажте декоративні предмети з файлу.

Розумно обробляйте винятки протягом проекту. Поки що умови помилок були перелічені в блоці catch на консолі. Подумайте і переробіть обробку помилок.

Вправа 7 (10 листопада 2008 р.)

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

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

Вправа 8 (24 листопада 2008 р.)

Графічний інтерфейс користувача. Завантажте скелет компонентів графічного інтерфейсу: тестер.

Наразі форма має панель (JPanel) та дві кнопки (JButton): для завантаження та для етапу експерименту.

Виконайте такі функції:

  • кнопка завантаження завантажує набір риби з файлу при натисканні (завантаження повинно виконуватися). Для кожної риби він створює одну кнопку JButton на панелі у випадковому положенні. Переконайтеся, що кнопки видно. Розмір панелі становить 625 x 400 пікселів.
  • кнопка кроку запускає один крок експерименту. Потім відрегулюйте кількість кнопок: якщо риби більше, додайте кнопки. Якщо рибка зникла, приберіть відповідні кнопки.

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

Надішліть рішення електронною поштою до 7 грудня 2008 року.

Вправа 1 (1 жовтня 2008 р.)

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

Створюйте класи та відповідні методи.

Робота з методами введення-виведення - це окрема стаття.

Вправа 2 (9 жовтня 2008 р.)

Компанія Prachy s.r.o. він хоче заробляти на махінаціях з обмінними курсами за допомогою Інтернету. Їх метою є щоденний моніторинг курсів кількох банків та з’ясування найбільш вигідного курсу для кожної валюти для продажу та купівлі іноземної валюти.

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

На початку ми припускаємо лише один банк, Національний банк Словаччини, чий ризик обмінного курсу знаходиться на http://www.nbs.sk/KL/KLSL2008/KL081009.SDF.

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

Вправа (20 листопада 2008 р.)

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