Commit 5b11de5c by Patryk Czarnik

Przykłady funkcji

parent 9958d4b3
......@@ -9,3 +9,6 @@
# IntelliJ configuration files
/.idea/
/*.iml
# Files produced by example programs
/silnia_100_tys.txt
......@@ -2,14 +2,17 @@ package pcz.p05_liczby;
public class BityIBajty {
/* Program wypisuje wartość zmiennej typu byte oraz jej zapis w pamięci w postaci ciągu 8 bitów, zwiększając w pętli wartość o 1.
* Widać zjawisko integer overflow: wartość +127 przechodzi w wartość -128.
* Dla zmiennych typu short, int, long jest analogicznie; różnica jest w długości ciągu bitów (16, 32 i 64) i zakresie liczb.
*/
public static void main(String[] args) {
System.out.println("Zwiększanie bajta:");
byte b = 0;
for(int i = 1; i <= 260; i++) {
for(int i = 0; i <= 512; i++) {
String bity = Integer.toBinaryString(Byte.toUnsignedInt(b));
bity = String.format("%8s", bity);
bity = bity.replace(' ', '0');
System.out.printf("%4d : %s%n", b, bity);
b++;
}
......
......@@ -25,7 +25,7 @@ public class Ciekawostki {
System.out.println("OK");
} else {
System.out.println("Nie OK");
System.out.println(3.6 - 3 * 1.2);
System.out.println("różnica: " + (oczekiwany - a * b));
}
System.out.println();
......
package pcz.p06_funkcje.gdyby_nie_bylo_static;
public class Geometria {
// W tej wersji metody geometryczne nie są static.
// Powoduje to konieczność utworzenia obiektu ("instancji") tej klasy, gdy ktoś chce użyć tych metod - zob. Program i Testy w tym pakiecie
double poleKwadratu(double a) {
return a * a;
}
double poleKola(double r) {
return Math.PI * Math.pow(r, 2);
}
}
package pcz.p06_funkcje.gdyby_nie_bylo_static;
public class TestyGeometrii {
public static void main(String[] args) {
// ponieważ w tej wersji metody nie są static, to aby je wywołać trzeba utworzyć obiekt
// System.out.println("Pole kwadratu 5 = " + Geometria.poleKwadratu(5.0));
Geometria geo = new Geometria();
System.out.println("Pole kwadratu 5 = " + geo.poleKwadratu(5.0));
System.out.println("Pole koła 5 = " + geo.poleKola(5.0));
}
}
package pcz.p06_funkcje.teoria;
import java.time.LocalTime;
public class Funkcje1_Void {
static void poczatek() {
// Funkcja typu void nie zwraca żadnego wyniku, tylko "coś robi"
System.out.println("To jest funkcja początek");
System.out.println("Funkcja początek kończy się");
}
static void nikt_mnie_nie_chce() {
// Jeśli funkcja nie jest wywoływana z main (bezpośrednio albo pośrednio), to
// jej treść się nie wykona.
System.out.println("To się nigdy nie wypisze");
}
static void ktoraGodzina() {
System.out.println("Godzina " + LocalTime.now());
}
public static void main(String[] args) {
System.out.println("Początek main");
poczatek(); // wywołanie / invoke
for(int i = 0; i < 10; i++) {
ktoraGodzina();
}
koniec();
}
// W Javie kolejność definicji metod (funkcji) nie ma znaczenia.
// Funkcja zdefiniowana wcześniej może wywoływać funkcję zdefiniowaną później.
static void koniec() {
System.out.println("Koniec");
System.out.print("Na koniec jest godzina: ");
ktoraGodzina(); // jedna funkcja może wywołać inną funkcję
}
}
package pcz.p06_funkcje.teoria;
public class Funkcje2_Parametry {
// Funkcja może mieć parametry:
static void zaprosNaKurs(String jezyk, int iloscDni) {
System.out.println("Zapraszamy na kurs języka " + jezyk + ", które będzie trwał " + iloscDni + " dni.");
}
static void powtorz(String napis, int ilosc) {
for(int i = 1; i <= ilosc; i++) {
System.out.println(napis);
}
}
public static void main(String[] args) {
// Wywołując funkcję sparametryzowaną musimy przekazać wartości parametrów, czyli "argumenty".
zaprosNaKurs("Java", 10);
zaprosNaKurs("Python", 10);
zaprosNaKurs("SQL", 4);
System.out.println();
// Zadeklarowane w funkcji: parametr, paramter formalny (formal parameter)
// Wartość przekazywana w wywołaniu: argument, parametr aktualny / bieżący (actual parameter)
powtorz("Ala ma kota", 5);
powtorz("Ola ma psa", 3);
}
}
package pcz.p06_funkcje.teoria;
public class Funkcje3_Wynik {
// Funkcja może zwrócić wynik:
static int liczba() {
return 13;
}
static int dodaj(int x, int y) {
return x + y;
}
static String napis() {
return "Hello world";
}
static String powitanie(String imie) {
return "Witaj " + imie + ", miło Cię poznać";
}
// Funkcja może zawierać wiele instrukcji return w różnych miejscach. Np. w zależości od warunku zwróć jedno lub drugie.
// Kompilator Javy sprawdza jednak, czy funkcja zwraca wynik w każdej sytuacji.
static int roznicaBezwzgledna(int x, int y) {
if(x >= y) {
return x - y;
} else {
return y - x;
}
}
public static void main(String[] args) {
liczba();
// Czy liczba 13 wypisze się na ekran? NIE
// To, że funkcja zwraca wynik, oznacza, że np. można ten wynik zapisać na zmienną:
int wynik = liczba();
System.out.println("Funkcja zwróciła wynik " + wynik); // dopiero tutaj
wynik = dodaj(13, 12);
System.out.println("Dodawanie zwróciło wynik " + wynik);
String napis;
napis = powitanie("Ala");
System.out.println("Powitanie 1: " + napis);
napis = powitanie("Karol");
System.out.println("Powitanie 2: " + napis);
String s = "Ola";
napis = powitanie(s);
System.out.println("Powitanie 2: " + napis);
}
}
package pcz.p06_funkcje.teoria;
public class Narnia {
public static void main(String[] args) {
System.out.println("Wszyscy są w domu");
System.out.println("Łucja chowa się w pokoju z szafą");
wejdzDoSzafy("Łucja");
System.out.println("Łucja wróciła do domu");
wejdzDoSzafy("Łucja", "Zuzanna", "Piotr", "Edmund");
System.out.println("Po wyeliminowaniu czarownicy wszyscy wrócili do domu.");
String[] kolejneOsoby = { "Ala", "Ola", "Ela" };
wejdzDoSzafy(kolejneOsoby);
}
// varargs - zmienna liczba argumentów
// taki parametr z trzema kropkami może występować tylko 1, na samym końcu listy parametrów
// wewnątrz funkcji on jest widziany jako tablica
// a z zewnątrz można przekazać 1 tablicę albo wiele elementów po przecinku
static void wejdzDoSzafy(String... kto) {
System.out.println();
System.out.println("Do Krainy Narni weszli:");
for(String imie: kto) {
System.out.println(" * " + imie);
}
System.out.println("Mają ciekawe przygody");
System.out.println("I w końcu wracają");
System.out.println();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment