Opis zagadnieo 1-3 Iteracja, rekurencja i ich realizacja
Iteracja Iteracja to czynnośd powtarzania (najczęściej wielokrotnego) tej samej instrukcji (albo wielu instrukcji) w pętli. Mianem iteracji określa się także operacje wykonywane wewnątrz takiej pętli
Przykład iteracji Czynnośd iteracji przedstawia pętla, zapisana w poniższym pseudokodzie: java: i=0 int i=0; dopóki i< 10 while(i<10) { inkrementuj i i++; przeskocz do góry W pierwszej iteracji otrzymamy wartośd i=1, w następnej i=2, potem i=3 i tak dalej, a iteracją jest powtarzana tu czynnośd, czyli zwiększanie zmiennej i o jeden.
Rekurencja Rekurencja (rekursja) jest podstawową techniką wykorzystywaną w językach programowania, dzięki której np. definicja lub funkcja może odwoład się do samej siebie. Programy rekurencyjne są często mniejsze i łatwiejsze do zrozumienia od ich iteracyjnych odpowiedników Nie wszystkie języki programowania mają możliwośd używania rekurencji. Przykładem jest np. COBOL
Silnia public int silnia(int x) { if(x==0) { return 1; return x*silnia(x-1); Przykład użycia silnia(3) Silnia(3) 3*Silnia(2) 2*silnia(1) 1*silnia(0) 1 1*1 2*1 3*2
Ciąg Fibonacciego F 0 = 1 ; F 1 = 1 ; F n = F n-1 + F n-2 public int fib(int x) { if(x<2) { return 1; return fib(x-1)+fib(x-2);
Ciąg Fibonacciego - iteracja package przyklad_1_fib; public class Przyklad_1_fib { public static void main(string[] args) { int liczba = 80; System.out.println( "Wynik dla liczby " + liczba + ": " + fib_i(liczba) ); public static long fib_i(int n) { long a = 0, b = 1; for(int i=0;i<n;i++) { b += a; //pod zmienną b przypisujemy wyraz następny czyli a+b a = b-a; //pod zmienną a przypisujemy wartośd zmiennej b return b;
Ciąg Fibonacciego - rekurencja package przyklad_1_fib; public class Przyklad_1_fib { public static void main(string[] args) { int liczba = 80; for(int i = 0; i <= 80 ; i++) { System.out.println( "Wynik dla liczby " + i + ": " + fib_r(i) ); public static long fib_r(int n) { if(n < 2) return 1; return fib_r(n-1) + fib_r(n-2);
Problemy rekurencji Najwięcej problemów związanych z rekurencją wiąże się z ograniczeniami stosu wywołao, a właściwie jego pojemności. Na stosie są odkładane kolejne wywołania danej metody i dopiero gdy dojdziemy do ostatniego elementu dane te są zbierane bardzo łatwo więc o sytuację, gdy po prostu stos przepełnimy.
Instrukcja warunkowa switch - case Instrukcja warunkowa wielokrotnego wyboru na podstawie tylko jednej zmiennej. Switch( zmienna ) { case 0: zmienna++; break; default: zmienna+=2; break;
Instrukcja warunkowa if if [else if] [else] Pozwala zmienid przebieg wykonywania kodu w zależności od wartości logicznej wyrażenia: if (warunek) { //instrukcje else if (warunek) { //instrukcje else { //instrukcje
Operator trójargumentowy Konstrukcja: wyrażenie? Prawda : fałsz ; Przykład: Person p = new Person(); int tmp = p.isemployed()? p.getsalary() : 0;
Pętla for Konstrukcja: for(i; warunek koncowy; operacje na i) Gdzie i to licznik petli, a operacje na i to zazwyczaj zwiększanie/zmniejszanie o 1. Dzięki swojej konstrukcji pozwala np na łatwe przechodzenie po tablicach/listach Pozwala na łatwe przejście po zakresie liczb np.: 10 50 lub 50 10 Warunek jest sprawdzany na początku pętli Pętla wykonuje się dopóki zachodzi dany warunek
For - przykład int suma = 0; for(int i=0;i<10;i++) { suma += i;
For - przykład package przyklad_1_fib; public class Przyklad_1_fib { public static void main(string[] args) { int suma = 0; for(int i=0; i<20 && i%5==0 ;i+=2) { if( i % 5 == 0) suma += i; System.out.println(suma);
Pętla foreach Odmiana pętli for, wykonująca się dla każdego elementu z pewnego zbioru/kolekji. Konstrukcja: for(element : zbior) W każdej iteracji element będzie kolejnym elementem zbioru.
Foreach przykład List<Person> persons = new ArrayList<Person>(); //wypełnianie tablicy persons Foreach(Person p : persons) { //instrukcje na p
Pętla while Konstrukcja: while(wyrazenie) { //instrukcje Wykonuje się dopóki dane wyrażenie zwraca true Warunek jest sprawdzany na początku pętli
Pętla while - przykład Int k = 100; while(k <= 1000000000) { //instrukcje k *= 10;
Pętla do-while Konstrukcja: do { //instrukcje while(wyrazenie); Wyrażenie sprawdzane jest po każdej iteracji Zatem pętla wykona się przynajmniej raz
Podprogram Podprogram (inaczej funkcja lub procedura) termin związany z programowaniem proceduralnym. Podprogram to wydzielona częśd programu wykonująca jakieś operacje. Podprogramy stosuje się, aby uprościd program główny i zwiększyd czytelnośd kodu
Sposoby przekazywania parametrów Przekazywanie przez wartośd. Przekazywanie przez wynik. Przekazywanie przez referencję. Przekazywanie przez nazwę.
Przykład przekazywania przez wartośd #include <iostream> using namespace std; void zmien_x(int x) { x *=2; cout << "X z procedury " << x << endl; int main() { int x = 4; zmien_x(x); cout << "X z main " << x << endl; return 0;
Przykład przekazywania przez #include <iostream> using namespace std; referencję void zmien_x_2(int & x) { x *= 2; cout << "X z procedury " << x << endl; int main() { int x = 4; zmien_x_2(x); cout << "X z main " << x << endl; return 0;