2 Tablice Tablice jednowymiarowe Tablice wielowymiarowe... 4

Podobne dokumenty
Stałe oznaczane są słowem kluczowym final. Do stałej wartość można przypisać tylko raz. Dobrą konwencją jest nazywanie stałych wielkimi literami

Tablice i łańcuchy znakowe jako obiektowe typy danych. dr Jarosław Skaruz

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Wykład 2: Podstawy Języka

Programowanie obiektowe

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wprowadzenie do języka Java

Platformy Programistyczne Podstawy języka Java

Podstawy i języki programowania

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Podstawowe części projektu w Javie

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Rozdział 4 KLASY, OBIEKTY, METODY

Klasy: String, Random, Math. Korzystanie z dokumentacji.

1 Podstawy c++ w pigułce.

Języki i techniki programowania Ćwiczenia 2

Wykład 3 Składnia języka C# (cz. 2)

Java Podstawy. Michał Bereta

Programowanie obiektowe

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Podstawy i języki programowania

Spis treści. 1 Java T M

Inicjacja tablicy jednowymiarowej

Wykład 4: Klasy i Metody

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy i języki programowania

Rozdzia l 3. Laboratorium 3. danych zawierajac

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Aplikacje w środowisku Java

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

1 Podstawy c++ w pigułce.

Dokumentacja do API Javy.

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Programowanie w języku Java

Podstawy programowania. Podstawy C# Tablice

Programowanie, algorytmy i struktury danych

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Struktury, unie, formatowanie, wskaźniki

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Microsoft IT Academy kurs programowania

Programowanie Komputerów

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Podstawy Języka Java

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Tworzenie aplikacji w języku Java

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

Definicje klas i obiektów. Tomasz Borzyszkowski

Lab 9 Podstawy Programowania

Typy sparametryzowane

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Ćwiczenie 1. Przygotowanie środowiska JAVA

Materiały do laboratorium I

Programowanie komputerowe. Zajęcia 5

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Powtórka algorytmów. Wprowadzenie do języka Java.

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Programowanie 2 - Tablice i łańcuchy

Komentarze. W Javie istnieją dwa rodzaje komentarze:

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Programowanie obiektowe

Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Definiowanie własnych klas

Przypomnienie o klasach i obiektach

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Podstawy Programowania C++

Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne

Programowanie 3 - Funkcje, pliki i klasy

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Programowanie i projektowanie obiektowe

Programowanie - instrukcje sterujące

Wstęp do wskaźników w języku ANSI C

W powyższym kodzie utworzono wyliczenie dni tygodnia.

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie i struktury danych

Wykład 2 Składnia języka C# (cz. 1)

Wykład 5: Więcej o Klasach i Metodach

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Język C++ wykład VIII

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Programowanie w języku Java

Podejście obiektowe. Tablice (1) obiektów

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Pliki. Informacje ogólne. Obsługa plików w języku C

1 Powtórzenie wiadomości

Zaawansowane aplikacje WWW - laboratorium

Transkrypt:

Spis treści 1 Podstawowe typy Java T M 1 2 Tablice 2 2.1 Tablice jednowymiarowe....................... 2 2.2 Tablice wielowymiarowe....................... 4 3 Opakowania typów prostych 4 4 Napisy 5 4.1 Klasa String.............................. 5 4.2 Konwersje............................... 6 4.3 Napisy i tablice............................ 6 4.4 Klasa StringBuffer......................... 6 Temat: Typy danych w Java T M Typy prymitywne. Tablice. Opakowania. Krótkie omówienie z punktu widzenia naszych zamiarów. 1 Podstawowe typy Java T M Podstawa: Arnold, Gosling; Java T M dysponuje bogatą kolekcją typów danych. Podstawowe typy proste pokazane są w tablicy. typ opis boolean true lub false char 16 bitowe znaki Unicode 1.1 byte 8 bitowe liczby całkowite short 16 bitowe liczby całkowite int 32 bitowe liczby całkowite long 64 bitowe liczby całkowite float 32 bitowe liczby całkowite double 54 bitowe liczby całkowite Oprócz nich istnieją klasy opakowujące dla typów prostych, np. Float. O tym powiemy później. Wiemy, że obieky w Java T M są określonego typu. Typem obiektu jest klasa, której obiekt jest egzemplarzem, instancją. Obiekty tworzy się za pomocą operatora new w procesie konkretyzacji. 1

P r z y k ł a d. 1.... class Punkt { public double x, y; Punkt lewydolny = new Punkt(); Punkt prawydolny = new Punkt(); lewydolny.x = 0.0; lewydolny.y = 0.0; Punkt prawygorny.x = 50d; Punkt prawygorny.y = 100d;... Każdy obiekt klasy Punkt jest niepowtarzalny i posiada własną kopię pól x, y. Pola obiektów nazywamy też zmiennymi instancyjnymi (przykładowymi). 2 Tablice Podstawa: Bruce Eckel, Thinking in Java T M 2.1 Tablice jednowymiarowe W celu zdefiniowania tablicy w Java T M wypisujemy nazwą tablicy wraz z pustymi nawiasami kwadratowymi []: int[] a1; Nawiasy można również postawić po nazwie tablicy: int a1[]; W Java T M można używać obu metod deklarowania tablic. Kompilator nie pozwala podać liczby elementów tablicy. Inicjalizacja elementów tablicy odbywa się w dowolnym miejscu programu. Można też podać zawartość tablicy w deklaracji. Np. int[] a1 = {1, 2, 3, 4, 5, 6; W Java T M można przypisac jedną tablicę drugiej: int[] a2; a2 = a1; Jest to możliwe dlatego, że tak naprawdę mamy doczynienia z referencjami, odniesieniami do tablic. Ostatnie polecenie jest przypisaniem referencji. / Fizyka komputerowa, IV, 2001. Java T M. Program #1. A. Baran, IFiz UMCS, 2000. http:tytan/umcs.lublin.pl/baran / 2

public class Tablice { Bruce Eckel public static void main(string[] args) { int[] a1 = {1, 2, 3, 4, 5; int[] a2; a2 = a1; for(int i = 0; i<a2.length; i++) { a2[i]++; for(int i = 0; i<a1.length; i++) { System.out.println( "a1[" + i + "] = " + a1[i]); W powyższym przykładzie wystąpiła składowa length, która mierzy długość tablic. Maksymalnym indeksem jst, podobnie jak w C++ lub perlu, length - 1. Warto wiedzieć, że Java T M sprawdza zakresy wskaźników tablic. Elementy tablic kreujemy w dowolnej chwili używajac operatora new. / Fizyka komputerowa, IV, 2001. Java T M. Program #2. A. Baran, IFiz UMCS, 2000. http:tytan/umcs.lublin.pl/baran / Bruce Eckel; c04 import java.util.*; public class NTablica { static Random rand = new Random(); static int prand(int mod) { return Math.abs(rand.nextInt()) % mod + 1; public static void main(string[] args) { int[] a; a = new int[prand(20)]; System.out.println( "length of a = " + a.length); for(int i = 0; i<a.length; i++) { System.out.println( 3

"a[" + i + "] = " + a[i]); Wynik działania programu mówi, że tablica kreowana jest w czasie wykonywania się programu (ang. at runtime). Dodatkowo widzimy, że elementy tablicy prymitywnego typu int są inicjowane jako zera. Z a d a n i e 1. Wykonać powyższy przykład uruchamiając kilkakrotnie otrzymany kod Java T M Inicjacji tablicy można dokonac też w jednym poleceniu int[] a = new int[prand(20)]; 2.2 Tablice wielowymiarowe / Fizyka komputerowa, IV, 2001. Java T M. Program #3. A. Baran, IFiz UMCS, 2000. http:tytan/umcs.lublin.pl/baran / Tablice wielowymiarowe public class MultiTab { static void prt(string s) { System.out.println(s); public static void main(string[] args) { int[][] a = { inicjalizacja tablicy 2-wym { 1, 2, 3, { 4, 5, 6, ; for(int i = 0; i < a.length; i++) for(int j = 0; j < a[i].length; j++) prt("a[" + i + "][" + j + "] = " + a[i][j]); Z a d a n i e 2. Zdefiniuj tablicę 3-wymiarową. Wydrukuj elementy tablicy. 4

3 Opakowania typów prostych Podstawa: Boone Java T M udostępnia klasy opakowujące dla prymitywnych typów danych. Podstawowe typy opakowań to: Integer, Long, Float, Double, Character, Boolean. Są to odpowiedniki typów prostych. Jak łatwo zauważyć ich nazwy zaczynają sie dużą literą i brzmią tak samo jak nazwy typów prostych. Obiekty opakowane"tworzymy podając reprezentowaną przez nie wartość, np. Integer opakint = new Integer(123); Character opakchar = new Character( g ); Opakowania dostarczają wielu przydatnych metod, głównie, konwertujących dane. Przykładowo, zmiana obiektu Integer na double wygląda następująco: double d = opakint.doublevalue(); Aby dostac napis piszemy: String tekst = opakint.tostring(); Jeśli zechcemy zamienic znaki wczytywane z klawiatury do postaci liczb zmiennoprzecinkowych double, wykonujemy następujące operacje: 1. tworzymy element typu String, zawierający wartość zapisaną w zmiennej typu StringBuffer (tutaj sb). 2. korzystamy z metody valueof() klasy Double aby utworzyć nowy obiekt klasy Double. 3. metoda doublevalue() kończy postawione zadanie i w wyniku dostajemy liczbę. Wygląda to tak: double d = Double.valueOf(sb.toString()).doubleValue(); 4 Napisy Do reprezentowania napisów w Java T M używa się klas String i StringBuffer. Obiekty klasy String dysponują wieloma użytecznymi metodami do opracowywania napisów. Bez zbędnych komentarzy podamy kilka publicznych metod tej klasy. 4.1 Klasa String Metody indexof() i lastindexof() podają wskaźnik, od którego zaczyna się znaleziona w napisie wartość, lub -1 jeśli wartość nie została znaleziona. Oto metody wyszukujące w przód. indexof(char ch) indexof(char ch, int start) indexof(string str) indexof(string str, int start) Podobnie działają metody lastindexof() wypisane niżej z tym, że przeszukują napis do tyłu. 5

lastindexof(char ch) lastindexof(char ch, int str) lastindexof(string str) lastindexof(string str, int start) Z a d a n i e 3. Napisać metodę, która zlicza wystąpienie wskazanego znaku w napisie. Inne metody klasy String public String replace(char stary, Char nowy) public String tolowercase() public String touppercase() public String trim() -- tworzy obiekt bez początkowej i końcowej spacji public String concat(string inny) W operacjach porównywania napisów nie należy używać operatora ==, gdyż porównuje on referencje do napisów, a nie napisy. Do porównywania napisów służy metoda compareto(string), która porównuje całe napisy oraz metoda public boolean regionmatches(int start, String inny, int istart, int tyle), która daje wynik true, gdy wskazane fragmenty napisów pokrywają się. Porównanie rozpoczyna sie na pozycji start pierwszego napisu i na pozycji ostart napisu inny. Porównuje się tyle znaków. Z a d a n i e 4. Napisz program wyszukiwania binarnego (patrz AG, str 166) Metoda public boolean regionmatches(boolean ignoruj, int start, String inny, int istart, int tyle) robi to samo w przypadku gdy ignoruj == false, a w przypadku ignoruj == true ignoruje wielkość liter. 4.2 Konwersje Konwersji napisów na wartości innych typów dokonuja metody: boolean String.valueOf(boolean) int String.valueOf(int) long String.valueOf(long) float String.valueOf(float) double String.valueOf(double) Obiekty różnych typów zamienimy na napis, korzystając z metod: new Boolean(String).booleanValue() Integer.parseInt(String, int base) Long parselong(string, int base) new Float(String).floatValue() new Double(String).doubleValue() 4.3 Napisy i tablice Napisy można traktować jako tablice znaków i odwrotnie. Metoda tochararray() zamienia obiekt String na tablicę znaków. 6

4.4 Klasa StringBuffer Klasa StringBuffer (różna niż String) pozwala modyfikować napisy bez konieczności tworzenia wielu obiektów klasy String do przechowywania pośrednich wyników. Poniższa metoda (replace) dokonuje modyfikacji "w miejscu", używając metod klasy StringBuffer. public static void replace(stringbuffer str, char from, char to) { Arnold, Gosling for(int i=0; i<str.length; i++) if(str.charat(i) == from) str.setcharat(i,to); Metoda setlength(...) skraca lub wydłuza napis w buforze. Metody append(...) i insert(...) zamieniaja swój argument na napis, który dołączony zostaje na końcu danego napisu lub wstawiony we wskazanym miejscu. Argumenty obu metod mogą być nasępujących typów: Object, boolean, String, char[], int, long, float, double. P r z y k ł a d. 2. int i = 5; StringBuffer buf = new StringBuffer(); buf.append("sqrt(").append(i).append( ) ); buf.append("=").append(math.sqrt(i)); System.out.println(buf.toString()); Metoda tostring() zamienia obiekt StringBuffer na napis. Wielkość bufora typu StringBuffer można ustawiać w chwili tworzenia obiektu konstruktorem public StringBuffer(int capacity). Metoda public synchronized void ensurecapacity(int minimum) zapewnia, że w buforze będzie można zmieścić co najmniej minimum znaków. Metoda public capacity() informuje o pojemności bufora. P r z y k ł a d. 3. Przykład ilustruje sposób wczytywania danych z klawiatury i wypisywania wyników na terminal. Wykorzystano klasy strumieni wejściawyjścia, klasy opakowujące, klasę StringBuffer, itp. Zilustrowano obsługę wyjątków. (patrz B. Boone, str 65) import java.io.datainputstream; do czytania wiersza znaków class Astronaut { Double earthweight; Astronaut (double weight) { konstruktor klasy Astronaut earthweight = new Double(weight); public double moonweight() { return earthweight.doublevalue() * 0.166; 7

class PlanetaryScale { Astronaut armstrong; waga void calculateweight() { armstrong = new Astronaut(getEarthWeight()); showmoonweight(armstrong.moonweight()); pobranie wartości wpisanej przez użytkownika double getearthweight() { double earthweight; DataInputStream stream = new DataInputStream(System.in); String strng; System.out.println("Podaj wagę ziemską."); próbuj czytać wiersz zklawiatury try { strng = stream.readline(); catch (java.io.ioexception e) { strng = "0.0"; przekształcanie do liczby try { earthweight = Double.valueOf(strng).doubleValue(); catch (java.lang.numberformatexception e) { earthweight = 0.0; return earthweight; wyświetl wynik void showmoonweight(double wt) { System.out.println("Na Księżycu ważysz " + String.valueOf(wt)); public static void main (String args[]) { PlanetaryScale ps = new PlanetaryScale(); ps.calculateweight(); 8