Розробка уроку

Тема: мова програмування Java і середовище програмування Eclipse.

Мета: ознайомити учнів з:

По завершенню вивчення учень:

Обладнання: комп’ютери зі встановленими ОС та інтегрованим середовищем програмування Eclipse, (дана) інструкція.

Структура уроку

  1. Організаційний момент.
  2. Актуалізація опорних знань.
  3. Вивчення нового матеріалу.
  4. Інструктаж з ТБ.
  5. Закріплення вивченого матеріалу.
  6. Підведення підсумків уроку.
  7. Домашнє завдання.

Хід уроку

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

2. Актуалізація опорних знань
Дати означення понять, які виділені жирним шрифтом.

Алгоритмце запис скінченої послідовності вказівок, виконання яких призводить до розв'язання певної задачі.

Вказівка (алгоритму) — це спонукальне речення, що вказує, яку дію має виконати виконавець алгоритму.

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

Система вказівок виконавцяце множина (сукупність) всіх вказівок, які може виконувати даний виконавець.

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

Властивості алгоритму: дискретність, визначеність, викону­ваність, скінченність, результативність, масовість, ефектив­ність.

Дискретність (латинською discretus — розділений, розривний) алгоритму означає, що виконання алгоритму зводиться до виконання окремих дій (кроків) у певній послідовності. Причому, кожну вказівку алгоритму виконують за скінченний проміжок часу.

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

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

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

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

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

  • або встановлюють відсутність таких розв'язків (множина розв'язків порожня);

  • або встановлюють неможливість розв'язання задачі.

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

Ефективність алгоритму описує час виконання і об'єм ресурсів, необхідних для виконання алгоритму: чим менше часу (часова ефектив­ність) і ресурсів (просторова ефектив­ність), тим ефектив­ність вища.

  1. Як називають такий порядок дій?
    1. Завантажити середовище Eclipse.
    2. Ввести текст програми.
    3. Запустити програму на компіляцію та виконання.
    4. Дочекатися виведення повідомлення.
  2. Звичайною мовою кажуть, що все йде за програмою, якщо:
    • дії виконують за допомогою комп'ютера;
    • дії відбуваються у повній відповідності з планом;
    • виконують дії до задачі.
  3. Процес роботи комп'ютера полягає у виконанні ...(чого?)
  4. Програми створюють люди за фахом ...
  5. Де виконують програми?

3. Вивчення нового матеріалу

У театрі хід подій на сцені попередньо визначено у найдрібніших деталях:

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

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

Щоб задати комп'ютеру послідовність дій, потрібно задати послідовність двійкових кодів відповідних вказівок. Писати такі програми — дуже складна й марудна справа.

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

Мова програмування (англійською programming language) — це система позначень для опису алгоритмів та структур даних.

Java — це об'єктно-орієнтована мова програмування.

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

У мові Java, як і в багатьох інших мовах програмування, для створення програми пишуть вихідний код, потім компілюють його. Компілятор перевіряє відповідність коду синтаксичним правилам мови. Початковою метою мови Java, було надання можливості для програмістів писати одну програму, яка могла б працювати на будь-якій платформі. Цю мету можна висловити такими словами: «Write once, run anywhere» — «Написати один раз, виконувати будь-де».

При написанні коду на ПК під керуванням ОС Windows створюють файл з розширенням java. Після компілювання цього файлу компілятор створює файл з розширенням class. Для роботи на інших платформах достатньо відкомпілювати вихідний код з бібліотеками, специфічними для цієї платформи.

Для створення програм мовою Java будемо використовувати вільно поширюване багатоплатформне інтегроване середовище програ­мування (IDE) Eclipse. Використання інтегрованого середовища програмування приховує більшість рутинних технічних подробиць роботи з мовою програмування Java, надає інструменти для прискорення та покращення роботи і просто є зручнішим способом розробки програм.

Спочатку середовище Eclipse було розроблене для мови Java. Нині існують розширення для підтримки інших мов: C, C++, Perl, PHP, JavaScript, Python, Ruby тощо.

Робочий простір Eclipse IDE

Після запуску середовища Eclipse буде запропоновано вказати теку для робочого простору (workspace).

Workspaceце тека, в якій буде збережено всі налаштування середовища.

Її рекомендують розташувати у теці, відмінній від директорії з встановленим IDE.

Першим кроком для написання програми є створення проекту Java.

Алгоритм створення Java-проекту

  1. Використати вказівку меню File / New / Project...

  2. У вікні діалогу New Project вибрати Java / Java Project і натиснути кнопку Next.

  3. У вікні діалогу New Java Project ввести назву проекту (наприклад, my) і натиснути кнопку Next.

  4. Залишити налаштування як усталено й натиснути Finish.

Основне вікно програми Eclipse

має такі складові:

Views — перегляди або представленняпанель для перегляду структур: список ваших проектів, файлова структура проекта, структура вихідного файлу, класу.

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

NetBeans — інше інтегроване середовище програмування, придатне для наочного програмування інтерфейсу з використанням JDK. При ОС Linux завантажують файл з розширенням sh. Для встановлення ПЗ потрібно виконати такі вказівки Терміналу (описано для версії 12.3).

cd Завантаження
chmod +x Apache-NetBeans-12.3-bin-linux-x64.sh
sudo ./Apache-NetBeans-12.3-bin-linux-x64.sh

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

netbeans_jdkhome="/usr/lib/jvm/java-11-openjdk-amd64"

у файлі netbeans.conf. Редагування файлу можна почати, виконавши під обліковим записом з адміністра­тивними правами таку вказівку Терміналу.

sudo nano /usr/local/netbeans-12.3/netbeans/etc/netbeans.conf

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

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

Головна особливість технології Javaпрограму компілюють у машинні вказівки не якогось конкретного процесора, а так званої віртуальної машини Java (Java Virtual Machine, JVM).

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

Віртуальна машина Java повністю стекова, їй не потрібні складна адресація осередків пам'яті й велика кількість регістрів. Тому вказівки JVM короткі, більшість із них має довжину 1 байт. Ось чому вказівки JVM називають байт-кодами (bytecodes), хоча є зустрічаються вказівки довжиною 2 і 3 байти. Середня довжина вказівки становить 1,8 байти. Повний опис вказівок і будови JVM подано у специфікації віртуальної машини Java (Virtual Machine Specification, VMS).

Динамічне компонування (dynamic binding) — підключення всіх використовуваних стандартних функцій до програми лише на етапі її виконання без включення до байт-кодів — інша особливість Java. Вона істотно зменшує об'єм скомпільованої програми.

Принцип Java "Write once, run anywhere" — "Написано одного разу, виконується будь-де" — полягає у наступному. Переклад програми байт-кодами не залежить від типу процесора чи архітектури комп'ютера. Його можна виконати один раз відразу після написання програми. Немає потреби перекомпілювати програму під різні платформи. Байт-коди записують в одному або декількох файлах. Їх можна зберігати у зовнішній пам'яті або передавати мережею. Це зручно завдяки невеликому розміру файлів із байт-кодами. Байт-код можна виконувати на будь-якому комп'ютері, що має JVM.

Інтерпретація байт-кодів та динамічне компонування значно уповільнюють виконання програм. Це неістотно у випадку передавання байт-коду мережею — мережа повільніша за будь-яку інтерпретацію. Але в інших випадках бажано використати потужний комп'ютер. Тому постійно йде удосконалення інтерпретаторів у бік збільшення швидкості інтерпретації. Розроблено JIT-компілятори (Just-In-Time), що запам'ятовують вже інтерпретовані ділянки коду в машинних вказівках процесора і які виконують ці ділянки при повторному обігу, наприклад у циклах. Корпорація Sun Microsystems розробила технологію HotSpot і включає її у свою віртуальну машину Java.

Найбільшу швидкість може дати лише спеціалізований процесор. Наприклад, компанія Sun Microsystems випустила мікропроцесори picoJava, що працюють на системі команд JVM. Є Java-процесори інших фірм. Ці процесори безпосередньо виконують байт-коди.

При виконанні програм Java на інших процесорах потрібна ще інтерпретація команд JVM у команди конкретного процесора, а значить, потрібна програма-інтерпретатор. Причому для кожного типу процесорів та кожної архітектури комп'ютера потрібно написати свій інтерпретатор. Це завдання вже вирішено практично всім комп'ютерних платформ. Для найпоширеніших платформ є кілька втілень JVM різних фірм. Зростає кількість операційних систем та систем керування базами даних, що включають втілення JVM у своє ядро. Створено і спеціальну операційну систему JavaOS, яку застосовують в електронних пристроях. У більшість браузерів вбудовано віртуальну машину Java. Операційна система Andriod містить віртуальну машину Java під назвою Dalvik, яка працює на ядрі Linux.

Крім JVM для виконання байт-кодів на комп'ютері ще потрібно мати набір функцій, які викликають з байт-кодів і динамічно компонують з ними. Цей набір оформлено як бібліотеки класів Java з одного чи кількох пакунків. Кожну функцію можна записати байт-кодами. Її зберігають на конкретному комп'ютері, тому її доцільно записати в системі вказівок саме цього комп'ютера й уникнути інтерпретації байт-кодів. Такі функції, написані найчастіше мовою C/C++ і скомпіловані під певну платформу, називають "рідними" методами (native methods). Застосування "рідних" методів прискорює виконання програми.

JDK (Java Development Kit)набір необхідних програмних інструментів для повного циклу роботи з мовою програмування Java: компіляції, інтерпретації, налагодження, що включає бібліотеку класів, і містить таке:

  • компілятор вихідного тексту до байт-кодів javac;
  • інтерпретатор java, що містить реалізацію JVM;
  • полегшений інтерпретатор jre (в останніх версіях відсутній);
  • налагоджувач jdb;
  • дизассемблер javap;
  • програми:
    • перегляду аплетів appietviewer, що замінює браузер;
    • архівації та стиснення jar;
    • збору та породження документації javadoc;
    • породження заголовних файлів мови С для створення "рідних" методів javah;
    • породження електронних ключів keytool;
    • native2ascii, що перетворює бінарні файли на текстові;
    • rmic та rmiregistry для роботи з віддаленими об'єктами;
    • seriaiver, яка визначає номер версії класу;
  • бібліотека та заголовні файли "рідних" методів;
  • бібліотека класів Java API (Application Programming Interface).

Корпорація Oracle, що купила фірму Sun Microsystems — творця технології Java, — безкоштовно поширює свій варіант JDK. Великою популярністю користується JDK корпорації IBM.

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

У тому числі інтерпретатор java (у попередніх версіях — полегшений інтерпретатор jre) та бібліотеку класів. Це частина JDK, що не містить компіляторів, налагоджувачів та інших засобів розробки. Саме Oracle JRE або його аналог, створений іншими фірмами, присутні у тих браузерах, які вміють виконувати програми мовою Java, в операційних системах та системах керування базами даних. Хоча JRE входить до складу JDK, корпорація Oracle розповсюджує цей набір окремим файлом.

Компіляція і виконання програм без середовищ програмування:

  • назва файлу з кодом програми має збігатися з назвою класу, описаного у файлі;
  • тип файлу з кодом програми — java;
  • файл з кодом програми не містить опис приналежності до пакунку;
  • у середовищі Термінала Linux (командного рядка Windows) виконати вказівки:

    • javac назви_файлів_через_пробіли — компіляція;
    • java назви_класів_через_пробіли — запуск на виконання.

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

І компіляцію, і виконання можна здійснити з додатковими параметрами, опис яких можна отримати виконанням таких вказівок:

javac -help
java -help

Навіть після встановлення JDK змінна середовища PATH може не містити шлях до бібліотеки javac. У цьому випадку потрібно знайти розташування бібліотеки javac засобами ОС (наприклад, /usr/lib/jvm/jdk-16.0.1/bin) і:

  • або явно вказувати шлях у вказівці компілювання, наприклад, таким чином

    /usr/lib/jvm/jdk-16.0.1/bin/javac назви_файлів_через_пробіли

  • або змінити значення змінної середовища PATH, наприклад, таким чином

    export PATH=$PATH:/usr/lib/jvm/jdk-16.0.1/bin

На ПК може бути попередньо встановлена бібліотека java версії, ранішої від використаної для компілятора javac. У цьому випадку можна отримати повідомлення, схоже на таке:

Error: LinkageError occurred while loading main class java.lang.UnsupportedClassVersionError: has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 55.0

Версії бібліотек (з поточної теки) можна встановити, виконавши такі вказівки Терміналу:

javac -version
java -version

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

/usr/lib/jvm/jdk-16.0.1/bin/java назви_класів_через_пробіли

Створення виконуваного файлу jar у середовищі Термінала Linux (командного рядка Windows) здійснюють виконанням вказівки такого вигляду:

jar cf назва_результату.jar назва_джерела.java

Назва файлу не з поточної теки повинна містити шлях до неї. Якщо шлях до файлу jar не відомий системі, цей шлях потрібно вказати. Наприклад, таким чином.

/usr/lib/jvm/jdk-16.0.1/bin/jar cf назва_результату.jar назва_джерела.java

4. Інструктаж з ТБ
5. Закріплення вивченного матеріалу


Завдання 1. Створити й виконати програму, яка виведе повідом­лення: «Ура! Запрацювала моя перша програма!», використавши застосунок Hello World середовища програмування Eclipse.

Вказівки до виконання

  1. У середовищі Eclipse обрати Create a Hello World aplication.

  2. Використати вказівку меню Window / Perspective / Open Perspective / Java Browsing, якщо це можливо, інакше — Window / Perspective / Open Perspective / Оther...,

    у вікні Open Perspective вибрати Java Browsing і натиснути кнопку OK.

  3. Використати вказівку меню File / New / Java Project.

  4. Ввести назву проекту HelloWorld і натиснути кнопку Finish.

  5. Використати вказівку меню File / New / Class.

  6. Ввести HelloWorld для назви класу, встановити прапорець, щоб створити метод Main, а потім натисність кнопку Finish.

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

  7. У коді методу Main додати такий оператор:

    System.out.println("Ура! Запрацювала моя перша програма!");

  8. Зберегти зміни, використавши вказівку меню File / Save або натиснувши клавіші Ctrl + S.

    Примітка Набираючи текст, можна помітити такі можливості редактора Eclipse.

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

    • Перевірка синтаксису. При збереженні коду його компілюють у фоновому режимі і перевіряють на наявність синтаксичних помилок. Як усталено, синтаксичні помилки буде підкреслено червоною лінією, а ліворуч на полях з'явиться мітка — на червоному крузі білий знак ×. Інші помилки буде позначено на полях символом електричної лампочки. Це ті проблеми, які редактор може виправити за програміста.

  9. Клацнути правою кнопкою миші в провіднику пакетів і вибрати у контекстному меню Run As / Java Application або натиснути відповідну кнопку на панелі інструментів.

  10. Дочекатися появи на консолі такого тексту:

    Ура! Запрацювала моя перша програма!

6. Підбиття підсумків уроку
Виставлення оцінок.

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


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

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

package назва_пакету;

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

Оголошення та визначення методу має такий вигляд:

тип_повернення  назва_методу (список_параметрів)
{ вказіка1; //тіло методу
  вказіка2;
  …
  вказікаn;
}

Тип поверненняце тип величини — результату застосування методу. Якщо метод нічого не повертає, то вказують ключове слово void.

Виклик методу здійснюють так:

об'єкт.метод(список_параметрів)

або

об'єктна_змінна.метод(список_параметрів)

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

У поданих прикладах використано модифікатори доступу.

Модифікатори доступу полів (властивостей) чи методів можуть бути такими:

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

Крім звичайних методів і полів клас може мати статичні (static) поля і методи. Наприклад, головний клас програми має саме такий метод main.

public static void main (String () arg);

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

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

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

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

Java — строго типізована мова. Інакше кажучи, у програмі мовою Java потрібно вказувати тип змінної при її оголошенні, який не змінюється протягом виконання прогами. В Java є 8 основних неструктурованих типів даних. П'ять із них — цілочисельні (включаючи символьний тип char), два — дійсні (float і double) і один логічний (булевий) тип даних.

Типи даних

НазваДовжина
у байтах
Діапазон зміни
booleanне
визна-
чено
{true, false}
byte1−128..127
char20..216−1, тобто 0..65535
short2−215..215−1, тобто −32768..32767
int4−231..231−1,
тобто −2147483648..2147483647
long8−263..263−1, тобто
приблизно −9.2·1018..9.2·1018
float4−(2−2−23)·2127..(2−2−23)·2127, тобто
приблизно −3.4·1038..3.4·1038
double8−(2−2−52)·21023..(2−2−52)·21023, тобто
приблизно −1.8·10308..1.8·10308

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

int k;
double salary;
char ourChar;

Назву змінної потрібно починатися з літери, далі — довільна послідовність літер і цифр. У Java використано кодування Unicode, тому змінні можна писати навіть кирилицею. Враховують регістр символів. Наприклад, K та k — це різні змінні. Не можна використовувати як назви зарезервовані слова. В одному рядку можна оголошувати декілька змінних:

int j,k,l,m,n;

Бажано давати змістовні назви змінним, бо це істотно полегшує роботу над текстом програми.

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

Арифметичні оператори:

+ — додавання;
+= — додаваня з наданням значення;
- — віднімання;
-= — віднімання з наданням значення;
* — множення;
*= — множення з наданням значення;
/ — ділення;
/= — ділення з наданням значення;
% — лишок від ділення;
%= — лишок від ділення з наданням значення;
++ — інкремент — збільшення значення на 1;
-- — декремент — зменшення значення на 1.

Описані вище оператори потрібно застосовувати лише до змінних цілого типу. Їх не можна використовувати для змінних булевого типу. Але їх можна застосовувати до величин з типом char.

Оператори відношення (операторами порівняння) порівнюють значення величин:
== — дорівнює (збігається з);
!= — не дорівнює (відмінне від);
> — більше (перевищує);
< — менше;
>= — не менше (більше або дорівнює);
<= — не перевищує (менше або дорівнює).

Результат порівняння має тип boolean з можливими значеннями true або false. Найчастіше оператори відношення використовують у виразах, що застосовуються в умовних інструкціях (IF) та у циклах. Оператори == і != можна застосовувати практично до всіх типів, інші — лише до числових типів.

Логічні оператори застосовують до величин типу boolean з таким самим типом результату:

ПозначенняОпис
&Логічне «і» (AND)
|Логічне «або» (OR)
^Логічне виняткове «або» (XOR)
||Коротке «або»
&&Коротке «і»
!Логічне заперечення «не» (NOT)
&=Логічне «і» з наданням значення
|=Логічне «або» з наданням значення
^=Виняткове «або» з наданням значення
==Рівність (еквівалентність)
!=Не рівність (нееквівалентність)
?:Тернарний if-then-else (якщо-тоді-інакше)


Таблиця істинності логічних операторів

ABA | BA & BA ^ B !A
FalseFalseFalseFalseFalseTrue
True FalseTrue FalseTrue False
FalseTrue True FalseTrue True
True True True True FalseFalse

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

class BoolLogic {
  public static void main(String args[])
  { boolean a = true;
    boolean b = false;
    System.out.println("              a = " + a);
    System.out.println("              b = " + b);
    System.out.println("          a | b = " + a | b);
    System.out.println("          a & b = " + a & b);
    System.out.println("          a ^ b = " + a ^ b);
    System.out.println("!a & b | a & !b = " + !a & b | a & !b);
    System.out.println("             !a = " + !a);
  }
}

У результаті її виконання на екран буде виведено такий текст:

                      a = true
                      b = false
                  a | b = true
                  a & b = false
                  a ^ b = true
        !a & b | a & !b = true
                     !a = false

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

int x = 5;
int k = x + 8;

У Java його можна використати й таким чином:

a = b = c = 100;

Ця можливість корисна при потребі надати одного й того самого значення багатьом змінним.

Оператор ?: має три операнди, може заміняти у певних випадках умовний оператор if … then … else … і має такий вигляд:

Вираз1 ? вираз2 : вираз3;

Розглянемо такий приклад:

int y = x==0 ? ++x : x;

Якщо x дорівнює 0, то його значення збільшують на 1 і надають у цього збільшеного значення. Інакше (якщо x відмінне від 0), то надають у значення x.

Пріоритет операторів

  1. ( ) [ ]
  2. ++ –– ~!
  3. * %
  4. + –
  5. >> >>> <<
  6. > >= < <=
  7. == !=
  8. &
  9. ^
  10. |
  11. &&
  12. ||
  13. ?:
  14. = op=

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

Умовний оператор (неповна форма)

if (умова) вказівка;

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

if (умова)
{ оператор1;
   …
  операторn;
}

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

Умовний оператор (повна форма)

if (умова) оператор1 else оператор2;

Цикл while (перекладається як «доки») – це цикл з передумовою, тіло якого (вказівку) виконують, поки умова істинна. Якщо умова з самого початку хибна, то вказівку не буде виконано жодного разу. Загальний вигляд:

while (умова) оператор;

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

while (умова)
{ оператор1;
  ...
  операторn
}

Див. приклад з грою — вгадуванням числа від 0 до 10. Програма породжує випадкове число при кожному повторі циклу і пропонує вгадати його. Після вводу користувачем числа виводить відповідне повідомлення про результат гри і запрошення здійснити нову спробу. Якщо користувач вводить з клавіатури «Y» або «y», то гру буде продовжено, інакше її буде завершено.

Для породження випадкових чисел використано вбудований клас Random, що містить відповідні методи. Зокрема, у прикладі програми використано метод nextInt для породження випадкових чисел.

Для зчитування з клавіатури використано клас Scanner для зручного введення з клавіатури. Метод nextInt — для зчитування цілого числа, next — рядка тексиу з клавіатури.

Для того, щоб переконатися у збіганні рядків, використано метод equals з класу String.

Пояснимо зміст таких рядків:

import java.util.*;
Random generator = new Random();
gn=generator.nextInt(10);

Необхідно мати генератор цілих випадкових чисел, який реалізовує класс Random у пакеті java.util. Для цього імпортовано відповідний клас. Далі в програмі створюємо змінну generator, яка вказуватиме на екземпляр класу random і дозволятиме звернення до методів даного класу.

new Random() — створено відповідний об'єкт. Для породження випадкових чисел використано метод nextInt() класу Random.

Цикл do whileцикл з післяумовою, що буде виконано хоча б один раз, має таку форму запису:

do вказівка while (умова);

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

Цикл з лічильником for застосовують при необхідності виконати оператори певну кількість раз з одночасним збільшенням або зменшенням певної змінної (лічильника). Наприклад, для виведення на консолі у стовпчик чисел від 1 до 10 включно:

for (int i = 1; i <= 10; i++) {System.out.println(i);}

Цикл for each призначено для перебору елементів масиву (програмне втілення поняття послідовності) або подібних до масиву типів даних. Загальний вигляд циклу такий:

for (type var : arr)
{ //тіло циклу
}

Наприклад, вивести елементи масиву а можна таким чином:

for (int element : a) System.out.println(element);

Оператор переривання виконання циклу break. При використанні вкладених циклів (один цикл в іншому) оператор break припинить цикл, у тілі якого його записано. Якщо його записано у внутрішньому циклі, то буде припинено виконання лише внутрішнього циклу, а зовнішній цикл буде виконано й надалі. Якщо потрібно повністю припинити виконання і внутрішнього, і зовнішнього циклів, то використовують оператор break з міткою - див. приклад програми, що виводить 2 числа, якщо використано оператор break з міткою і зациклюється, якщо використати оператор break без мітки.

Оператор припинення кроку (ітерації) continue переносить порядок виконання до заголовку оператора. Щоправда завжди уникнути використання вказівок break і continue.

Оператор вибору одного з багатьох варіантів switch дозволяє уникнути громіздких вкладень if … else … . Наприклад, таким чином:

Scanner in = new Scanner(System.in);
System.out.print("Введіть одне з таких чисел: 1, 2, 3, 4.");
int choice = in.nextInt();
switch (choice)
{ case 1: {System.out.print("Введено 1."); break;}
  case 2: {System.out.print("Введено 2."); break;}
  case 3: {System.out.print("Введено 3."); break;}
  case 4: {System.out.print("Введено 4."); break;}
  default:{System.out.print("Не те…");     break;}
}

Одновимірний (лінійний) масив — втілення у мові програмування поняття послідовності, члени якої занумеровано цілими числами. Формат оголошення масиву такий:

тип_елементів назва_масиву[];

Існує також інша форма оголошення масиву:

тип_елементів[] назва_масиву;

Перед роботою з масивом, необхідно виділити під нього пам'ять за допомогою операції new:

назва_масиву = new тип_елементів [кількість_елементів];

або зразу однією вказівкою:

тип_елементів назва-масиву[] = new тип_елементів [кількість_елементів];

Наприклад,

int month_days[] = new int[12];

Таким чином описують виділення пам'яті під масив і ініціалізації елементів масиву нулями. В подальшому можна напряму звертатися до елементів масиву, вказуючи індекс у квадратних дужках. Нумерацію елементів у масиві в java починають з нуля.

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

public class DaysOfMonth
{ public static void main(String[] args)
  { int month_days[] = {31,28,31,30,31,30,31,31,30,31,30,31};
    System.out.println("Травень має "+month_days[4]+" день");
  }
}

Результат виконання:

Травень має 31 день

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

int a[][]   = new int[2][3];    // створення масиву 4×5
int b[][][] = new int[2][3][4]; // створення масиву 5×5×5

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

int[][] Array={{5, 6, 1, 3},
               {3, 4, 2, 1},
               {1, 2, 2, 2}
              };

Рядок (тексту) — це втілення у мові програмування поняття послідовності символів.

Цю послідовність у тексті прогами записують між подвійними лапками: "Це рядок". Рядок може бути порожнім, тобто не містити жодного символа: "". Для запису спеціальних символів використовують зворотню похилу риску "\" (backslash). Наприклад, "\" - це лапки". Найчастіше це застосовують для запису ознаки кінця рядка:

System.out.println("Це перший рядок тексту, \nа це другий рядок тексту.");

Зберігати великі об'єми текстових даних радять зберігати і маніпулювати з ними не у класі String, а у класах StringBuilder або StringBuffer.

Kонкатенаціяце поєднання (злиття) двох рядків в один. Наприклад, результат у двох наступних вказівок один в і той самий:

String str = "Це рядок";
String str = "Це"+" рядок";

При використанні конкатенації рядків з іншими типами даних відбувається автоматичне зведення до типу String

String str = "цифра " + 5; //результат "цифра 5"

Також з'єднання двох рядків можна здійснити за допомогою методу concat:

String strEnd =" та вставайте";
String str = "Поховайте".concat(strEnd);

Метод length визначає довжину рядка:

String str = "Це рядок";
int j = str.length();
int k = "Це рядок".length();

Метод substring(j, k) використовують для отримання частину рядка довжини k, починаючи з символа j.

Наприклад, змінити рядок "Hello" на "Help!" можна таким чином:

String s = "Hello";
s = s.substring(0,3) + "p!";

Порівняння рядків здійснюють за допомогою методу equals: s1.equals(s2) повертає true, якщо s1 і s2 збігаються, інакше — false. Замість змінних (s1, s2) можна записувати рядкові сталі. Метод equals порівнює рядки з урахуванням регістру символів. Для того, щоб не враховувався регістр при порівнянні, використовують метод equalsIgnoreCase.

"Hello".equalsIgnoreCase("hello").

Примітка. Не використовуйте оператор ==, щоб перевірити рядки на збіг. Таким чином лише буде перевірено, чи рядкам відповідає та сама адреса у пам’яті.

Зведення до типу. Інколи потрібно звести тип String до інших типів і навпаки. Для таких випадків слугують, наприклад, методи parse*. Тут зірочкою * позначено клас, до якого належить метод, що перетворює рядок s типу String на представника цього класу — див. приклади застосування:

byte    b =    Byte.parseByte(s);  
Short  sh =   Short.parseShort(s); 
int     i = Integer.parseInt(s);        s = Integer.toString(i);      
long    l =    Long.parseLong(s);       s =    Long.toString(l);
float   f =   Float.parseFloat(s);      s =   Float.toString(f);
double  d =  Double.parseDouble(s);     s =  Double.toString(d);
boolean b = Boolean.parseBoolean(s);

Тут у другому стовпчику подано обернені перетворення числа у рядок.

Методи String
Для кожного методу вказано тип результату повернення, назву методу, тип і приклад назви аргумента (аргументів), опис дії):

StringBuilderаналог класу String, призначений для роботи з великими рядками, які потрібно часто змінювати, — див. приклади використання:

Конструктори StringBuilder:

Методи класу StringBuilder, пов’язані з довжиною і ємністю (відсутні для класу String):

Введення/виведення текстових даних з використанням інтерфейсу командного рядка (консолі) та файлі подано окремим описом. Немає нагальної потреби (особливо при першому знайомстві) читати весь опис. Достатньо ознайомитися з такими розділами:

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

Відеоуроки


Текст упорядкувала Толкачова Ірина Юріївна, вчитель середньої загально­освітньої школи № 35 Святошинського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 03.10.2016 по 07.10.2016.