INFORMATYKA Laboratorium 1 Pierwszy program Na dysku C w katalogu Laboratorium wkatalog grupa_x gdzie x jest nr grupy studenta, za pomocą notatnika tworzymy plik program.java Edytując go w notatniku wpisujemy treść kodu programu: System.out.println("Hello World"); Zapisujemy plik (Ctrl+S) program.java i przechodzimy do wiersza poleceń systemu (Start->Uruchom->cmd). Kompilacja Plik źródłowy zostanie skompilowany do postaci byte-code (jest to kod, który zostanie wykonany w wirtualnej maszynie Javy JVM) poleceniem: javac program.java zostanie utworzony plik program.class zawierający kod bajtowy, który uruchamiamy za pomocą interpretera java, poleceniem: java program W przypadku popełnienia błędu zostaniemy poinformowani przez kompilator o nieprawidłowościach w kodzie programu. Główna klasa programu zawiera metodę main. Jest to metoda publiczna (public), statyczna (static). Metoda main posiada argument args będący tablicą elementów typu String. Argument args służy do odczytu parametrów wywołania programu podanych w linii poleceń systemu operacyjnego. Wydruk na konsoli realizujemy za pomocą metod print i println pola out typu PrintStream z klasy standardowej System. Kompilacja i uruchomienie programu za pomocą środowiska NetBeans Uruchamiamy środowisko NetBeans Wybieramy z menu programu opcję New Project
w polu nazwy (Project Name) projektu wpisujemy program Należy sprawdzić czy zaznaczone są opcje Set as Main Project oraz Create Main Class. Dodatkowo w polu obok zaznaczonej opcji Create Main Class można zmienić nazwę klasy głównej na program.program W kolejnym kroku uzupełniamy kod metody main. Projekt uruchamiamy za pomocą przycisku lub klawiszem F6. Efekt działania programu można zaobserwować w oknie Output
Komentarze W języku Java mamy do dyspozycji komentarze: Jednolinijkowe // od tego miejsca do końca linii Blokowe /* od tego miejsca To jest komentarz do tego miejsca */ Wewnętrzne typy danych Język Java udostępnia programiście szereg standardowych typów wartości. Typy te nazywane są 'intrinsic types', co przetłumaczyliśmy jako "typy wewnętrzne". W poniższej tabeli zawarto opis wewnętrznych typów danych, zawierający dla każdego typu jego nazwę oraz wielkość pamięci zajmowanej przez poszczególne wartości typu. Rodzaj danych Typ danych Rozmiar (w bitach) Zakres danych logiczne boolean 8 true lub false znakowe char 16 znaki Unicode/ 0 do 65535 całkowite byte 8-128 do 127 short 16-32768 do +32767 int 32-2147483648 do +2147483647 long 64-9223372036854775808L do +9223372036854775807L float 32 1.40129846432481707e-45F to 3.40282346638528860e+38F zmiennoprzecinkowe double 64 4.94065645841246544e-324D do 1.79769313486231570e+308D Zmienne typu char są reprezentowane na 16 bitach, ponieważ możemy jako wartość zmiennej typu char użyć dowolnego znaku ze zbioru znaków Unicode. Inicjalizacja zmiennych int a; // błąd zmienna a powinna mieć ustaloną wartość int a=10; System.out.println(a); boolean a=true; System.out.print("Zmienna a "+a+"\n"); byte b=127; System.out.print("Zmienna b="+b+"\n"); char c='a'; System.out.print("Zmienna c="+c+"\n"); short d=-32768; System.out.print("Zmienna d="+d+"\n"); int e=-2147483648; System.out.print("Zmienna e="+e+"\n"); long f=9223372036854775807l; System.out.print("Zmienna f="+f+"\n"); float g=3.40282346638528860e+38f; System.out.print("Zmienna g="+g+"\n"); double h=1.79769313486231570e+308d; System.out.print("Zmienna h="+h+"\n"); char znak1 = 'A'; char znak2 = '\u0321'; // znak ł (Unicode) char znak3 = 'ó'; char znak4 = '\u0009'; // znak tabulacji System.out.println(znak1); System.out.println(znak2); System.out.println(znak3); System.out.println(znak4); Znak Ą ą Ć ć Ę ę Ł ł Ń ń Ó ó Ś ś Ź ź Ż ż Kod dziesiętny Ą ą Ć ć Ę ę Ł ł Ń ń Ó ó Ś ś Ź ź Ż ż
Literały byte i = 22; // wartość dziesiętna short j = 011; // wartość ósemkowa int k = 0xFF; // wartość szesnastkowa long l = 1024L; // wartość typu long System.out.println(i); System.out.println(j); System.out.println(k); System.out.println(l); System.out.println("nowa \n linia"); System.out.println("tab \t ulacja"); System.out.println("bak\bspace"); System.out.println("\'apostrof\'"); System.out.println("\\ backslash"); Opis Literał New line (znak nowej linii) \n Horizontal tab (tabulacja pionowa) \t Backspace \b Carriage return (powrót karetki) \r From feed (znak nowej strony) \f Single quote (apostrof) \' Double quote (cudzysłów) \" Backslash (lewy ukośnik) \\ Rzutowanie typów int i=10; byte b=20; b=i; błąd java nie posiada automatycznego rzutowania typów w dół b=(byte)i; long l=i; tu jest dobrze Operatory W języku Java mamy do dyspozycji następujący zestaw operatorów: Arytmetyczne + - * / % int a=10; int b=20; int c; c=a+b; System.out.println("a="+a); System.out.println("b="+b); System.out.println("wynik operacji a+b="+c); Zadanie Wykonać przykłady dla pozostałych operatorów - * / % Zwiększania i zmniejszania (inkrementacji i dekrementacji): ++ -- int a=0; System.out.println(a++); System.out.println(++a); Przypisania: = += -= *= /= %= <<= >>= >>>= &= = ^=
int a=1; a+=10; System.out.println(a); Zadanie Wykonać przykłady dla pozostałych operatorów - -= *= /= %= <<= >>= >>>= Bitowe: & ^ ~ << >> >>> Inne:. () [] new?: Uwaga: operator << uzupełnia młodsze bity zerem; operator >> uzupełnia starsze bity bitem znaku; operator >>> uzupełnia starsze bity zerem; Bloki Zmienne deklarowane wewnątrz bloku są widoczne tylko dla tego bloku int a=10; int a=20; System.out.println(a); Wybrane operacje matematyczne System.out.println("Pierwiastek z 4 to "+Math.sqrt(4)); System.out.println("4 do kwadratu z 4 to "+Math.pow(4,2)); System.out.println("Wartośc bezwzględna z -3.4 to "+Math.abs(-3.4f)); System.out.println("Cosinus 2Pi to "+Math.cos(Math.PI)); System.out.println("Sinus 2Pi to "+Math.sin(Math.PI)); System.out.println("Wylosowana wartośc to "+Math.random()); Zadanie Rozwiązać układ równań x 2-2x-8=0 Instrukcja sterująca if Instrukcja if służy do warunkowego wykonania innej instrukcji. Najpierw obliczane jest wyrażenie-logiczne i jeśli jego wartością jest true, to wykonywana jest w przeciwnym razie wykonywana jest następna po instrukcji if. if (wyrażenie-logiczne) Operatory relacji używane w ch sterujących i pętlach: < <= > >= ==!= Operatory Logiczne używane w ch sterujących i pętlach: &&! Instrukcja if-else if (wyrażenie-logiczne) 1 else 2 Instrukcja if-else służy do warunkowego wykonania jednej z dwu instrukcji. Najpierw obliczane jest wyrażenie-logiczne i jeśli jego wartością jest true, to wykonywana jest 1, a jeśli false to wykonywana jest 2. int a=0;
if(a>=10) System.out.println("Prawda"); else System.out.println("Fałsz"); Zadanie Dla 3 ustalonych różnych wartości zmiennych a.b.c wyznacz liczbę największą Zadanie Rozwiązać układ równań postaci ax 2 -bx-c=0 dla zadanych parametrów a,b,c. Przeprowadzić dyskusję wyników w zależności od wartości współczynnika delta. Rozwiązanie podać tylko dla liczb rzeczywistych, w pozostałych przypadkach wyświetlić odpowiednie komunikaty. Instrukcja switch Instrukcja switch służy do warunkowego wykonania jednej z zestawu instrukcji w zależności od wartości wyliczonego wyrażenia nazywanego selektorem, który musi być wyrażeniem całkowitym. Obliczona wartość poszukiwana jest kolejno wśród wyrażeń całkowitych stałych podanych po słowie case i jeśli zostanie odnaleziona, to wykonywana jest odpowiednia podana po dwukropku. W przypadku nieodnalezienia odpowiedniego przypadku wykonywana jest z etykietą default lub następna po instrukcji switch, gdy opcjonalna klauzula default nie wystąpiła. switch (selektor) case wartość1: 1 case wartość2: 2... case wartośćn: N default: Domyślna Wykonanie instrukcji po etykiecie case lub default nie kończy wykonania instrukcji switch ani nie powoduje pominięcia instrukcji, które po niej następują, a gdy taka konieczność zachodzi należy zastosować instrukcję break. int a=15; switch (a) case 15:System.out.println("opcja pierwsza"); break; case 25:System.out.println("opcja druga"); break; default:system.out.println("brak opcji"); Instrukcja while Pętla while powoduje cykliczne wykonywanie instrukcji dopóki spełniony jest pewien warunek. Najpierw obliczane jest wyrażenie-logiczne i jeśli jego wartością jest true, to wykonywanie instrukcji (która może być blokiem) powtarzane jest tak długo, aż kolejne obliczenie wartości wyrażenia-logicznego da wartość false. while (wyrażenie-logiczne) Uwaga: jeśli wyrażenie-logiczne przyjmie wartość false już przy pierwszym obliczeniu, to pętli while nie wykona się ani razu. Instrukcja do-while Pętla do-while podobnie jak pętla while powoduje cykliczne wykonywanie instrukcji dopóki spełniony jest pewien warunek. Najpierw wykonywana jest, a następnie obliczne jest wyrażenie-logiczne. Jeśli ma ono wartość true, cały proces powtarzany jest ponownie. Wyjście z pętli następuje, gdy wyrażenie-logiczne przyjmie wartość false. do while (wyrażenie-logiczne); Uwaga: w pętli do-while wykonana jest przynajmniej raz. Instrukcja for Instrukcja for służy do cyklicznego wykonania pewnej instrukcji określoną ilość razy. Efekt ten uzyskuje się poprzez zastosowanie zmiennej sterującej i odpowiednią konstrukcję wyrażeń z jej użyciem w nagłówku pętli. Najpierw obliczane jest wyrażenie-inicjujące. Następnie w pętli wykonywane są kolejno czynności: obliczane jest wyrażenie-logiczne i jeśli ma wartość true, to wykonywana jest, po czym wyliczane jest wyrażenie krok. for (wyrażenie-inicjujące; wyrażenie-logiczne; krok)
Uwaga 1: wszystkie wyrażenia w nagłówku pętli tj. w obrębie nawiasów okrągłych po słowie for, są opcjonalne. Uwaga 2: wyrażenia w nagłówku pętli mogą mieć postać list wyrażeń rozdzielonych przecinkiem. int licznik=0; int zakres=10; System.out.println("pętla while"); while (licznik<zakres) System.out.println(licznik);licznik++; licznik=0; System.out.println("pętla do-while"); do System.out.println(licznik); licznik++; while (licznik<zakres); System.out.println("pętla for"); for (licznik=0;licznik<zakres;licznik++) System.out.println(licznik); Zadanie Za pomocą pętli while, do-while i for zrealizować następujące figury dla ustalonego parametru n. np dla n=4 **** * * * **** ** ** *** **** *** *** ***** **** **** **** ******* Zadanie Obliczyć pole powierzchni pola krzywej y=x 2 ograniczoną prostą y=4. Wynik podać dla iteracji odpowiednio z krokiem 0.5, 0.1, 0.01 Zadanie Obliczyć pole powierzchni pola krzywej y=x 2 ograniczoną prostą y=2x. Wynik podać dla iteracji odpowiednio z krokiem 0.5, 0.1, 0.01