Na dysku C tworzymy katalog grupa_x gdzie x jest nr grupy stude
Transkrypt
Na dysku C tworzymy katalog grupa_x gdzie x jest nr grupy stude
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: Przykład class program { public static void main(String args[]) { 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ć 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 nazwę klasy głównej na 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 Rozmiar danych (w bitach) logiczne boolean znakowe całkowite zmiennoprzecinkowe Zakres danych 8 true lub false char 16 znaki Unicode/ 0 do 65535 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 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 Przykład class program {public static void main(String strargs[]) { int a; // błąd zmienna a powinna mieć ustaloną wartość int a=10; System.out.println(a); } } Przykład class program { public static void main(String args[]) { 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"); } } Przykład class program { public static void main(String args[]) { 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); } } Przykład class program Znak Ą ą Ć ć Ę ę Ł ł Ń ń Ó ó Ś ś Ź ź Ż ż Kod dziesiętny Ą ą Ć ć Ę ę Ł ł Ń ń Ó ó Ś ś Ź ź Ż ż { public static void main(String args[]) { 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); } } Literały Przykład class program { public static void main(String strargs[]) { 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 New line (znak nowej linii) Horizontal tab (tabulacja pionowa) Backspace Carriage return (powrót karetki) From feed (znak nowej strony) Single quote (apostrof) Double quote (cudzysłów) Backslash (lewy ukośnik) Rzutowanie typów Przykład class program { public static void main(String strargs[]) { 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 + - * / % Przykład class program { public static void main(String args[]) { 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): ++ -- Przykład class program { public static void main(String strargs[]) { int a=0; System.out.println(a++); System.out.println(++a); } } Przypisania: = += -= *= /= %= <<= >>= >>>= &= |= ^= Literał \n \t \b \r \f \' \" \\ Przykład class program { public static void main(String strargs[]) { int a=1; a+=10; System.out.println(a); } } Zadanie Wykonać przykłady dla pozostałych operatorów - -= *= /= %= <<= >>= >>>= Bitowe: & | ^ Inne: . () [] Uwaga: operator operator operator ~ << >> >>> new ?: << uzupełnia młodsze bity zerem; >> uzupełnia starsze bity bitem znaku; >>> uzupełnia starsze bity zerem; Bloki Zmienne deklarowane wewnątrz bloku są widoczne tylko dla tego bloku Przykład class program { public static void main(String strargs[]) { { int a=10; } int a=20; System.out.println(a); } } Wybrane operacje matematyczne Przykład class program { public static void main(String strargs[]) { 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ń x2-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 instrukcja w przeciwnym razie wykonywana jest następna instrukcja po instrukcji if. if (wyrażenie-logiczne) instrukcja Operatory relacji używane w instrukcjach sterujących i pętlach: < <= > >= == != Operatory Logiczne używane w instrukcjach sterujących i pętlach: && || ! Instrukcja if-else if (wyrażenie-logiczne) instrukcja1 else instrukcja2 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 instrukcja1, a jeśli false to wykonywana jest instrukcja2. Przykład class program { public static void main(String strargs[]) { 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 ax2-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 instrukcja podana po dwukropku. W przypadku nieodnalezienia odpowiedniego przypadku wykonywana jest instrukcja z etykietą default lub następna instrukcja po instrukcji switch, gdy opcjonalna klauzula default nie wystąpiła. switch (selektor) { case wartość1: instrukcja1 case wartość2: instrukcja2 ... case wartośćN: instrukcjaN default: instrukcjaDomyś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. Przykład class program { public static void main(String strargs[]) { 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) instrukcja Uwaga: jeśli wyrażenie-logiczne przyjmie wartość false już przy pierwszym obliczeniu, to instrukcja 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 instrukcja, 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 instrukcja while (wyrażenie-logiczne); Uwaga: instrukcja 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 instrukcja, po czym wyliczane jest wyrażenie krok. for (wyrażenie-inicjujące; wyrażenie-logiczne; krok) instrukcja 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. Przykład class program { public static void main(String strargs[]) { 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=x2 ograniczoną prostą y=4. Wynik podać dla iteracji odpowiednio z krokiem 0.5, 0.1, 0.01 Zadanie Obliczyć pole powierzchni pola krzywej y=x2 ograniczoną prostą y=2x. Wynik podać dla iteracji odpowiednio z krokiem 0.5, 0.1, 0.01