Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра ЕОМ
Звіт
З лабораторної роботи №2
З дисципліни: «Кросплатформні засоби програмування»
На тему: «Дослідження базових конструкцій мови Java»
Прийняв: Миц А.М.
Львів 2018
Мета роботи: Ознайомитися з базовими конструкціями мови Java та оволодіти навиками
написання й автоматичного документування простих консольних програм мовою Java.
ТЕОРЕТИЧНІ ВІДОМОСТІ
Основні типи мови Java
Мова Java є строго типізованою. Це означає, що тип кожної змінної має бути
оголошеним. Мова має 8 основних (простих) типів, які не є класами та однаково
представляються на будь-якій машині, де виконується програма.
Масиви
Масив – структура даних, що зберігає набір значень однакового типу. Пам’ять під
масив виділяється у керованій кучі. При завершенні життєвого циклу масиву пам’ять, яку
він займав, вивільняється збирачем сміття. Доступ до елементів масиву здійснюється за
допомогою індексів. Індексація масивів у Java починається з 0. Для створення масиву у
Java необхідно оголосити змінну-масив та ініціалізувати її. При створенні за допомогою
оператора new масиву чисел всі його елементи ініціалізуються нулями (масиви типу
boolean ініціалізуються значеннями false, масиви об’єктів ініціалізуються значеннями
null). Після створення масиву змінити його розмір неможливо.
Синтаксиси оголошення та ініціалізації одновимірного масиву:
тип[] змінна = new тип[кількість_елементів_масиву];
тип[] змінна = {значення1, значення2,..., значенняN};
тип змінна[] = new тип[кількість_елементів_масиву];
тип змінна[] = {значення1, значення2,..., значенняN};
Java дозволяє створювати і анонімні масиви (без іменні). При створенні анонімного
масиву відбувається виділення необхідної кількості пам’яті для збереження елементів
масиву та ініціалізація масиву значеннями зі списку ініціалізації. Синтаксис створення
анонімного масиву:
new тип [] { значення1, значення2,..., значенняN };
Анонімні масиви корисні тоді, коли необхідно ініціалізувати існуючий масив
новими значеннями без створення нової змінної, коли необхідно повернути з методу
масив нульової довжини (пустий масив), або коли в метод необхідно передати масив
наперед відомих значень.
Багатовимірний масив – це масив, який складається з множини масивів. У Java
нема багатовимірних масивів в принципі, а багатовимірні масиви реалізуються як
множина одновимірних. Кількість вимірів масиву задається парами закриваючих і
відкриваючих прямокутних дужок. Як і одновимірнім масиви багатовимірні масиви перед
використанням необхідно оголосити і ініціалізувати.
Приклади оголошення та ініціалізації двовимірного масиву типу int:
int[][] arr = new int[2][5];
int[][] arr = {{1,2,3,4,5},{11,12,13,14,15}};
int arr[][] = new int[2][5];
int arr[][] = {{1,2,3,4,5},{11,12,13,14,15}};
Зубчаті масиви
Завдяки тому, що багатовимірні масиви у Java реалізуються як множина
одновимірних масивів, стає можливим реалізувати багатовимірні масиви з різною
кількістю елементів у межах виміру. Синтаксис оголошення зубчатого масиву нічим не
відрізняється від синтаксису оголошення звичайного багатовимірного масиву. Різниця є
лише у способі ініціалізації, де використовується виділення пам’яті під різну кількість
елементів у межах виміру.
Особливості використання масивів
Розмір масиву зберігається у властивості length.
Копіювання масивів не можна здійснити звичайним присвоюванням однієї змінної-
масиву іншій. У цьому випадку обидві змінні-масиви посилатимуться на одну і ту саму область пам’яті, тобто фізично на один і той самий масив. Для коректного копіювання масивів слід скористатися методом copyOf класу Arrays. Цей метод створює копію
масиву, що переданий через перший параметр методу, у пам’яті та повертає посилання на
нього. Кількість елементів масиву, що підлягають копіюванню, передається через другий
параметр методу.
Хід роботи:
Завдання:
1)Написати та налагодити програму на мові Java згідно варіанту. Програма має
задовольняти наступним вимогам:
- програма має розміщуватися в загальнодоступному класі Lab2ПрізвищеГрупа;
- програма має генерувати зубчатий масив, який міститиме лише заштриховані
області квадратної матриці згідно варіанту;
- розмір квадратної матриці і символ-заповнювач масиву вводяться з клавіатури;
- при не введені або введенні кількох символів-заповнювачів відбувається коректне
переривання роботи програми;
- сформований масив вивести на екран і у текстовий файл;
- програма має володіти коментарями, які дозволять автоматично згенерувати
документацію до розробленої програми.
2) Автоматично згенерувати документацію до розробленої програми.
Код програми:
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Lab2[ім’я автора приховано]KI43 {
public static void main(String[] args) {
try {
Scanner sc = new Scanner(System.in);
int size;
String str;
System.out.println("Enter size of matrix.");
size = sc.nextInt();
char[][] mas = new char[size][size];
sc.nextLine();
System.out.println("Enter elements of the array.(Only one sumbol!)");
str=sc.nextLine();
char [][] result = new char[size][];
int k=1;
for(int i=0;i<size;i++) {
result[i] = new char[k];
if(i<(size/2))k++;
else if(i==(size/2))k=size/2;
else if(i>(size/2))k--;}
if(str.length()>1) {
System.out.println("Error! You enter too many sumbols.");
System.exit(0);
}
else if(str.length()==0) {
System.out.println("Error! You don`t enter any sumbol.");
System.exit(0);
}
System.out.println("Input matrix:");
for(int i=0;i<size;i++) {
for(int j=0;j<size;j++) {
mas[i][j]=str.charAt(0);
System.out.print(mas[i][j]+" ");
}
System.out.println(" ");
}
for(int i=0;i<size;i++) {
int n=0;
for(int j=0;j<size;j++) {
if(i>=j) {
if(i+j<=size-1) {
result[i][n]=mas[i][j];
n++;
}
}
}
}
FileWriter fw = new FileWriter("result.txt");
System.out.println("Result:");
for(int i=0;i<size;i++) {
for(char j:result[i] ) {
System.out.print(j+" ");
fw.write(j+" ");
}
System.out.println(" ");
fw.write("\n");
}
fw.close();
sc.close();
}catch(IOException ex){
System.out.println(ex.getMessage());
}
}
}
б)
Рис. 1 Результати виконання програм: а) матриця розміром 7х7, б) матриця розміром 6х6
Висновок: Під час виконання даної лабораторної роботи я ознайомився з базовими конструкціями мови Java та оволодів навиками написання й автоматичного документування простих консольних програм мовою Java.