Більш складні типи даних – масиви. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Більш складні типи даних – масиви.



Для створення масиву необхідно:
- оголосити масив – задати тип елементів, котрі будуть зберігатись в масиві і присвоїти йому ім’я;
- виділити для масиву пам’ять – задати кількість його елементів;
- ініціалізувати масив, помістивши в його елементи необхідні дані.

 

Приклад:
short theCounter[] = new short[10];
float aSetOfFloats = {3.14159, 2.171828} – створення масиву і його ініціалізація.

Оператори керування кодом програми.

Оператори if, if-else.

Для виконання програми з різними умовами в Java використовуються логічні оператори: if, if-else, switch.

Оператор if в Java має такий синтаксис:
if (логічний-вираз)

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

 

Аналогічно до більшості мов програмування, Java підтримує також оператор if-else:
if(логічний-вираз)

else

Якщо при виконанні оператора if або else необхідно передати керування групі операторів, то необхідно використовувати складний оператор, обрамлений круглими дужками:

if(i>0)

{
//виконати певні дії …

}
else

Оператори switch.

Припустимо, програмі необхідно передати керування одній із віток, в залежності від виконання ряду умов. Це можна реалізувати з допомогою наступного коду:
if(Умова1)

{
doThis();
}

else if (Умова2)
{

doThat();
}

else if (Умова3)
{

doSomethingElse();

}

 

Наведений код не вирізняється простотою. Його можна замінити таким чином, щоб умова перевірки була ціле число:
switch(theTestCodition)
{
case 0: doThis();
break;

case 1: doThat();
break;

case 2: doSomethingElse();

break;

default: doThedefauktThink();

}

 

Оператори циклу

В будь-якій мові програмування повинні бути передбачені оператори, котрі б дозволяли виконати ітераційні процедури або цикли. В Java підтримується три оператори циклу: while, do-while і for.

Якщо задані дії необхідно виконати нуль або більше разів – необхідно використати оператор while.

Якщо задані дії необхідно виконати хоча б один раз – необхідно використати оператор do-while.

 

Приклад оператора while:
int x[]=new int[10];
int i=0;
while(i<10)
{
x[i] = i*i;

System.out.println(“x=”,x);
i++;

}

 

Приклад оператора do-while:
int x[]=new int[10];
int i=0;
do
{
x[i] = i*i;

System.out.println(“x=”,x);
i++;

} while(i<10)

 

Приклад оператора for:
int x[]=new int[10];
for(int i=0;i<10;i++)
{
x[i] = i*i;

System.out.println(“x=”,x);
}

Порядок виконання роботи

1) Ознайомитися з IDEA.

2) Ознайомитися з jdk.

3) Навчитися запускати IDEA ("C:\Program Files\JetBrains\IntelliJ IDEA 7.0.3\bin\idea.exe") та підключати jdk (C:\Program Files\Java\jdk1.6.0_06\).

4) Написати наступну просту програму та запустити її:

Public class Lab1

{

public static void main(String[] args)

{

System.out.println("Hello World");

}

}

5) Модифікувати програму так, щоб вона виводила 10 раз ваше ім'я, прізвище та порядковий номер.

Приклад:

1) Романчук Василь

2) Романчук Василь

3) Романчук Василь

4) ……..

6) Написати наступну просту програму, яка виводить вікно:

public class Lab1_1 extends JFrame

{

 

public Lab1_1()

{

setTitle("Work #3");

setSize(300,300);

setVisible(true);

}

 

public static void main(String[] args)

{

new Lab1_1();

}

}

 

7) Модифікувати програму таким чином: замінити назву віна на свою фамілію.

8) Зробити висновки.

9) Оформити звіт. У звіті повинно бути текст програми і скріншоти результатів.

10) Прикріпити до VNS файл [Ваша Фамілія].zip в архіві повинно бути файли програм [Ваша Фамілія]_labN_k.class,a також файли звіту [Ваша Фамілія]_Zvit_LabN.mdb, де N – номер лабораторної роботи, k – номер програми.

 

 

Контрольні питання

1) Що таке клас?

2) Що таке об’єкт?

3) Які прості типи даних використовуються в мові Java 2SE?

4) Конструкція оператора умовного розгалуження if?

5) Конструкція оператора умовного розгалуження if-else?

6) Конструкція оператора умовного розгалуження switch.

 


Лабораторна робота №6 (Знайомство з динамічними масивами)

 

Тема роботи: Знайомство з динамічними масивами.

Мета роботи: Навчитися писати програми з використанням динамічних масивів.

План роботи

1. Ознайомитися з інтерфейсами та їх властивостями: Collection, List, Set.

2. Ознайомитися з класами: ArrayList, HeshSet, TreeSet.

3. Модифікувати програми для класів ArrayList, HeshSet, TreeSet згідно свого варіанту

4. Ознайомлення з колекціями класів, визначених програмістом.

5. Доробити програму з колекціями класів, визначених програмістом.

Теоретичні відомості

В Java 2 було запропоновано одне із найбільш цікавих доповнень – колекції. Структура колекцій стандартизує спосіб, з допомогою якого ваші програми обробляють групи об’єктів. В попередніх версіях Java для збереження і маніпулювання даними служили класи Dictionary, Vector, Stack і Properties. Хоча ці класи були досить корисними, відчувалась нестача уніфікованого, централізованого підходу при роботі з групами об’єктів. Наприклад, спосіб використання класу Vector відрізнявся від використання класу Properties.

Інтерфейси колекцій

Нагадаємо, інтерфейс – це набір функцій, котрі повинні бути реалізовані (визначені) в класі.

Інтерфейс Collection.

Інтерфейс Collection – основа, на якій формується структура колекцій. В ньому оголошуються методи, котрі визначаються всіма колекціями.

Основні методи колекцій:

boolean add(Object obj) Додає obj до колекції. Повертає true, якщо obj був доданий до колекції, і false якщо obj уже був доданий до колекції і якщо колекція не допускає дублікатів
void clear() Видаляє всі елементи із колекції
boolean contains(Object obj) Повертає true, якщо колекція містить obj, false – якщо ні
Iterator iterator() Повертає ітератор (iterator) для колекції
boolean remove(Object obj) Видаляє один екземпляр obj із колекції. Повертає true якщо елемент був видалений і false - якщо ні
int size() Повертає кількість елементів, котрі містяться в колекції
Object toArray() Повертає масив, котрий містить всі елементи колекції

 

Об’єкти додаються в колекцію з допомогою методу add(). Зверніть увагу, що add() отримує аргумент типу Object. Оскільки Object – суперклас для всіх класів, в колекції можна зберігати об’єкт будь-якого типу. Однак, примітивні типи зберігати не можна.

Для видалення об’єктів служить метод remove().

Інтерфейс List.

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

 

Методи інтерфейсу List.

void add(int index, Object obj) Вставляє obj в колекцію в позицію з індексом index. Будь-які елементи, котрі існували раніше в точці вставки або вище неї будуть зсунуті (тобто елементи не перезаписуються поверх існуючих)
Object get(int index) Повертає об’єкт, котрий зберігається в позиції index
int indexOf(Object obj) Повертає індекс першого екземпляру obj. Якщо obj не знайдено – повертається -1
Object remove(int index) Видаляє елемент із позиції index. В результаті список ущільнюється (тобто, індекси наступних елементів зменшуються на 1)
Object set(int index) Встановлює об’єкт obj в позиції під номером index

Інтерфейс Set.

Цей інтерфейс повторює інтерфейс Collection і оголошує поведінку колекції, котра не допускає дублювання елементів. Тому метод add() повертає false, якщо здійснюється спроба додати в набір дублюючі елементи.

Класи колекцій

Це класи – котрі реалізують вищезгадані інтерфейси, тобто реалізовують всі методи.

Клас ArrayList.

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

 

Приклад 1.

import java.util.ArrayList;

 

public class Lab2

{

public static void main(String[] args)

{

//створюємо динамічний масив

ArrayList al = new ArrayList();

System.out.println("Starting size of al: "+al.size());

//додаємо елементи в масив

al.add("C");

al.add("A");

al.add("B");

al.add("D");

al.add("C");

al.add("F");

al.add(1,"A2");

System.out.println("Size of al after add: "+al.size());

 

//показати на екрані список масиву

System.out.println("al consists of: "+al);

 

//видалити елементи із списку

al.remove("F");

al.remove(2);

 

System.out.println("Size of al after removing: "+al.size());

 

//показати на екрані список масиву

System.out.println("al consists of after removing: "+al);

}

}

Клас HashSet.

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

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

Приклад 2.

import java.util.HashSet;

 

public class Lab2

{

public static void main(String[] args)

{

//створюємо динамічний масив

HashSet hs = new HashSet();

//додаємо елементи в масив

hs.add("C");

hs.add("A");

hs.add("B");

hs.add("D");

hs.add("C");

hs.add("F");

//показати на екрані список масиву

System.out.println("hs consists of: "+hs);

}

}

 

Клас TreeSet.

Цей клас теж реалізує інтерфейс Set, але на відміну від класу HasSet, об’єкти в ньому зберігаються в відсортованому вигляді.

Приклад 3.

import java.util.TreeSet;

public class Lab2

{

public static void main(String[] args)

{

//створюємо динамічний масив

TreeSet ts = new TreeSet();

//додаємо елементи в масив

ts.add("C");

ts.add("A");

ts.add("B");

ts.add("D");

ts.add("C");

ts.add("F");

//показати на екрані список масиву

System.out.println("ts consists of: "+ts);

}

}



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 269; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.240.205 (0.041 с.)