Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Самостійна робота.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
989 Кб
Скачать
☆

2. Базові типи даних. Оператори. Управляючі конструкції.

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

Ключове слово

 

Тип

 

Розмір

Значення,       які        може зберігати

Значення        по замовчуванням

Byte

Байт

8 бит

значення в діапазоні від

–27 до 27–1

0

short

коротке ціле

16 бит

значення в діапазоні від

–216 до 216–1

0

Int

Ціле

32 бит

значення в діапазоні від

–232 до 232–1

0

Long

довге ціле

64 бит

значення в діапазоні від

–264 до 264–1

0

Float

плаваюча крапка

32 бит

значення         в          діапазоні від1.7*10–38 до 1.7*1038

0.0f

double

подвоєна точність

64 бит

значення в діапазоні від

–1.40239846E–45       до

3.40282347E+38

0.0d

Char

Символьний

16 бит

букви, цифри, символи, засновані на 16–бітовому наборі символів Unicode от /u0000 до /uffff

'0x0'

boolean

логічний

(булевою)

8 бит

true або false

false

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

В Java використовуються:

цілочисельні літерали: 1024, восьмеричні значення: 015, шістнадцяткові значення: 0х51.

Цілочисельні літерали створюють значення типу int . Якщо необхідно  визначити  довгий  літерал  типу  long,  в  кінці  вказується символ L ( наприклад: oxffffl ). Літерали дійсних чисел записуються з фіксованою крапкою 1.918 або в експоненціальній формі 0.112E–05 і відносяться до типу double.  Якщо необхідно визначити  літерал типу

float, то в кінці слід додати символ F(1.918f). Символьні літерали обмежуються апострофами (‘ a’, ‘ n’, ‘141’, ‘u005a’ ). Рядки беруться в лапки і є об'єктами (“alfa”). За літерали вважаються булеві значення true

і false, а також null – значення по замовчуванню для об'єктів. Літерали у арифметичних виразах автоматично приводяться до типу перетворення.

Java автоматично розширює тип кожного byte або short операнда до int. Для  звуження  перетворень  необхідно  проводити  явне  перетворення типу значення. Наприклад, byte b=(byte) 35;

Оператори. Операції над цілими числами: +, – *, \%, /, ++,-- та бітові операції &, |, ^, ~ аналогічні операціям більшості мов програмування. Ділення на нуль цілочисельного типу викликає виняткову ситуацію, переповнення не контролюється.

Операції над числами з плаваючою крапкою практично ті ж, що і в

інших  мовах,  але  за  стандартом  IEEE  754  введені  поняття нескінченності +infinity і –infinity і значення NAN (Not а Number), яке може бути отримано, наприклад, при знаходженні квадратного кореня з від’ємного числа.

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

Основні арифметичні оператори

Оператор

Короткий опис

Приклад

+

Додавання

3+2      або

“pre”+”fix”

–

Віднімання

12–3

*

Множення

length*width

/

Ділення

miles/gallons

\%

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

10\%4

&

Побітове І

Num&musk

|

Побітове АБО

This|that

^

Побітове виключаюче АБО

Tall^short

~

Побітове доповнення

mask=~item

<< 

Зрушення вліво

Var<<3

>> 

Зрушення вправо

Var>>12

<<< 

Зрушення вліво з додаванням нулів

Arg<<<howMuch

>>> 

Зрушення вправо з додаванням нулів

Arg>>>howMuch

Булеві операції

Символ

Дія

Приклад

 

Символ

Дія

Приклад

==

дорівнює

if (a==14)

 

&

побітове і

if ((a>14)&(a<17))

!=

не

if (a!=14)

 

&&

І

if((a>14)&&(b>17)

< 

менше ніж

if (a<14)

 

|

побітове

if((a==16)|(b==19))

> 

більше ніж

if (a>14)

 

||

Або

if ((a==25)||(a==8))

<=

менше або дорівнює

if (a<=1)

 

!

Ні

if

(!((a==16)||(a==3)))

>=

більше  або дорівнює

if (a>=4)

 

^

Виключаю че або

If ((a==16)^(a==19))

Оператор присвоювання

 Оператор

Еквівалентний оператор

 

 Оператор

 Еквівалентний оператор

a+=b

a=a+b

 

a&=b

a=a&b

a-=b

a=a-b

 

a|=b

a=a|b

a*=b

a=a*b

 

a^=b

a=a^b

a/=b

a=a/b

 

a<<=b

a=a<<b

a\%=b

a=a\%b

 

a>>=b

a=a>>b

Пріоритет і асоціативність операцій

Вищий пріоритет

.  ( ) [ ]

++  -- ! ~

New

* /        \%

+ –

<<  >>  <<<  >>>

<  > <=  >=

==  !=

&

^

|

&&

||

? :

=          +=        –=        *=        /=         \%=            &=       ||=

<<= >> = ^=

Нижчий пріоритет

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

Для перетворення базових типів застосовується операція (type), де

в якості (type) використовується один з сумісних базових типів. При приведенні  типів  даних  меншої  довжини  до  типів  більшої  довжини

ніяких операцій проводити не потрібно. Слід звернути увагу на те, що операція присвоювання результатів арифметичних операцій для базових типів char, byte, short викликає помилку компіляції, оскільки при обчисленнях проводиться перетворення до типу int, а Java не дозволяє привласнювати змінній значення більш довшого типу, якщо тільки це не константи. Виняток становлять оператори інкремента, декремента та оператори +=, –=, *=, /=.

В іменах змінних не можуть використовуватися символи арифметичних і логічних операторів, а також символ ‘#’. Припустимим є застосування символів ‘ $’ і ‘ _’,  в тому числі і в першій позиції імені.

public class TypeByte {

private static int j;

public static void main(String[] args) {

int i = 3; byte b = 1, b1 = 1 + 2;

//b = b1 + 1; //помилка приведення типів

b = (byte)(b1 + 1);//0 show(b);

//b = –b; // помилка приведення типів

b = (byte)–b;//1 show(b);

//b = +b1; // помилка приведення типів

b = (byte)+b1; //2 show(b);

b1*= 2; //3 show(b1); b1++; //4

show(b1);

//b = i; // помилка приведення типів

b = (byte)i; //5 show(b);

b+= i++; //працює!!! //6 show(b);

float f = 1.1f;

b /= f; //працює!!! //7 show(b);

}

static void show(byte b){ System.out.println(j + " res=" + b); j++;

}

}

 

В результаті буде виведено:

0 res=4

1 res=–4

2 res=3

3 res=6

4 res=7

5 res=3

6 res=6

7 res=5

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

До операторів відноситься також оператор визначення приналежності типу instanceof, оператор [ ] і тернарний оператор ?: (if– then–else).

Логічні операції виконуються над значеннями типу boolean (true

або false).

// приклад бітові оператори : Operators.java public class Operators {

Public static void main(String[] args) { System.out.println("5\%1=" + 5\%1 + " 5\%2=" + 5\%2); int b1 = 0xe;//14 или 1110

int b2 = 0x9;//9  или 1001

int i = 0;

System.out.println(b1 + "|" + b2 + " = " + (b1|b2)); System.out.println(b1 + "&" + b2 + " = " + (b1&b2)); System.out.println(b1 + "^" + b2 + " = " + (b1^b2)); System.out.println(            "~" + b2 + " = " + ~b2); System.out.println(b1 + ">>" + ++i + " = " + (b1>>i)); System.out.println(b1 + "<<" + i + " = " + (b1<<i++)); System.out.println(b1 + ">>>" + i +" = " + (b1>>>i));

}

}

Результатом виконання даного коду буде

5\%1=0  5\%2=1

14|9 = 15

14&9 = 8

14^9 = 7

~9 = –10

14>>1 = 7

14<<1 = 28

14>>>2 = 3

Тернарний оператор "?" використовується у виразах:

booleanexp ? value0 : value1

Якщо booleanexp = true, обчислюється значення value0 і воно стає результатом виразу, інакше результатом є значення value1.

Оператор        instanceof         повертає         значення         true,     якщо    об'єкт  є екземпляром даного класу,  наприклад:

Font obj = new Font("Courier", 1, 18);

if (obj instanceof java.awt.Font) {

/*оператори*/

}

Числові параметри при оголошенні об'єкту класу Font вказують на стиль і розмір шрифту. Результатом дії оператора instanceof буде істина, якщо об'єкт є об'єктом одного з підкласів класу, на приналежність до якого перевіряється даний об'єкт, але не навпаки. Перевірка на приналежність об'єкту до класу Object завжди дасть істину як результат. Результат застосування цього оператора по відношенню до null завжди хибність, тому що null не можна зарахувати до якого–небудь типу. А між тим літерал null можна передавати в методи по посиланню на будь– який об'єктний тип і використовувати як значення, що повертається.

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

if (boolexp) {

/*оператори*/

}

else { //може бути відсутнім

/*оператори*/

}

Цикли в мові Java можна організувати з допомогою операторів:

while (boolexpr) {

/*оператори*/

}

do {

/*оператори*/

} while (boolexp);

for(exp1; boolexp; exp3){

/*оператори*/

}

Оператори  циклу  виконуються  допоки   булевий  вираз  boolexp

знаходиться рівним true.

Оператор  switch.  Оператор  switch  передає  управління  на виконання одного з декількох операторів залежно від значення виразу exp.

switch(exp) {

case exp1:/*оператори, якщо exp==exp1*/

break;

case exp2:/*оператори, якщо exp==exp2*/

break;

default: /* оператори Java */

}

N–ого блоку до тих пір, поки не зустрінеться оператор break.

Розширення можливостей отримали оператор переривання циклу break і оператор переривання ітерації циклу continue, які можна використовувати з міткою, для забезпечення виходу з вкладених циклів, наприклад:

// приклад: вихід за цикл, помічений OUT

public class DemoLabel {

public static void main(String[] a) {

int j = –3;

OUT: while (j < 10) {

if (j == 0)

break OUT;

else { j++; System.out.println(j);

}

}

System.out.println("end");

}

}

Тут оператор break розриває цикл, помічений міткою OUT. При цьому немає необхідності у використанні оператора goto для виходу з вкладених циклів.

Цикл for. В операторі  for передбачені місця для всіх чотирьох частин циклу. Нижче приведена загальна форма оператора запису for.

for(ініціалізація; завершення; ітерація) тіло циклу;

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

Змінні  можна оголошувати  всередині розділу ініціалізації оператора for. Змінна, оголошена всередині оператора for, діє в межах цього оператора.

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

int[] array = {1, 3, 5, 11};

for(int i : array) System.out.print(" " + i);

Але    змінити  значення  елементів  масиву  за  допомогою  такого циклу не можливо.

Завдання

1. Вивчити призначення та написання основних операторів мови java.

2. Розібрати приклади використання основних операторів мови java.

Самостійна робота №12

Огляд мови програмування РНР

Довідкові відомості

РНР — це мова серверних скриптів яка вбудовується в HTML.

РНР являється процесором HTML.

Що це означає. Його робота побудована наступним чином, до того як сервер віддасть файл браузеру, його передивляється процесор інтерпретатор. І для того щоб дана дія виконувалась файли повинні мати визначене розширення .РНР тільки тоді вони будуть оброблятись процесором.

Перед відправкою сторінки код РНР продивляється на сервері і браузеру віддається результат в виді  HTML–сторінки, яка може сильно відрізнятись від тої яка присутня на сервері.

Звичайні сторінки з розширенням .HTML веб сервер відправляє браузеру без якої небуть обробки. Скрипти РНР точніше програму написану на РНР ви вбудовуєте в готову HTML–сторінку, використовуючи відкриваючий і закриваючий тег.<?PHP і ?> на відміну від інших програм написаних на інших мовах типу Perl і.т.д.

РНР називають мовою серверних скриптів на відміну від JavaScript Vbscript. Які являються мовою клієнтських скриптів. Це означає що РНР–скрипт виконується на сервері, а клієнту передається результат його роботи, тоді як  JavaScript повністю передається на клієнтську машину і там виконується браузером.

1— РНР це часто використовувана мова скриптів, яка була розроблена спочатку для веб–програмістів, і призначена для створення динамічних сторінок.

2 —  Коли РНР аналізує файл, тоді їде читання вмісту до тих пір поки не зустрінеться один із спеціальних операторів (тег відкриття <?PHP), який буде інтерпретувати текст як код РНР. Потім йде виконання коду до тих пір поки не зустрінеться спеціальний оператор (тег закриття ?>) Після чого продовжується читання коду. Таким чином РНР можна ввести в любий момент в любий код HTML.

3 — Обовязковим правилом створення коду РНР являється,

рядок повинен обовязково закриватись “;”

назва функції не чутливі до регістру (не має значення сіж використанням великих чи маленьких букв)

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

дужки використовуються двойні ” ” або одинарні ‘ ‘ (використання таких варіантів ” ‘ або ‘ ” буде помилкою)

код РНР обмежений  одним з наступних ноборів тегу відкриття і закриття

<?PHP текст закриття?> – рекомендована конструкція <? script language=”php”?>текст скрипта</script>

<?текст скрипта?> – застосування вимагає настройки РНР сервера.

4 — В РНР існує три способи за допомогою яких можна вставити коментарі, які не будуть відображатись в браузері, з метою додати необхідну інформацію програмісту. Все що слідує після символів # або // вважається коментарем.

5 — Змінні в РНР являють собою контейнер даних, який має імя і якому може бути присвоєно значення, яке може мінятись декілька разів і може бути збережено в базі даних.

Імя даних змінної починається  з символа $ а потім з маленької (a – z) або з великої (A – Z) або з символа “_”. Імя змінної не може починатись з цифри, і імя змінної не містиь пробіли.

6 — Збільшення числа на одиницю називається інкремента, а зменшення на одиницю декремента.

7 — Кожен РНР скрипт являє собою набур конструкцій. Конструкцією може бути присвоювання, виклик функції, цикл (повтор кода), порівняння а також конструкція яка нічого не робить (Пустий оператор). Конструкція завершується крапкою з комою.

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

В програмуванні РНР–конструкції дозволяють визначити умову а потім запустити деякі операції в залежності від запиту. if. else. elseif. switch.

8 — одною із важливих функцій РНР являється видобування даних із форм HTML і їх обробка. Елементи з якими ви будете працювати, коли будете робити видобування такі атрибути action і меьоди post і get

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

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

10 — Клас являється основним поняттям обєктно–орієнтованого програмування. Класс це опис методів і властивостей. Клас не створюється і не використовується в програмі.

Обєкт — це змінна, яка має властивості і методи, описані в класі, від якого він створюється. Можна створити декілька обєк5тів від одного класу.

Властивість — це та сама змінна тільки всередині обєкта.

Метод — це та сама функція, тільки всередині обєкта.