środa, 22 października 2008

Swap - C++

Wszystko zostało skomentowane wcześniej, więc nie będziemy się zagłębiać w szczegóły jak to działa, gdyż opis jest zarówno w poście "SWAP - Delphi" jak i "Na dobry początek - SWAP". W razie niejasności pisać to wytłumaczy się co i jak. Tak wygląda funkcja swap napisana w języku c++.
void swap( int& a, int& b )
{
         int temp = a;
         a = b;
         b = temp;
}

Wywołanie funkcji w programie wygląda następująco:
swap(a,b);

Aby wszystko pięknie działało na początku programu przed funkcją główną umieszczamy nagłówek:
void swap( int& a, int& b );

A na samym końcu kodu wklejamy funkcję swap.

wtorek, 21 października 2008

SWAP - Delphi

Postaramy się pokazać wygląd algorytmu SWAP w Delphi firmy Borland (funkcja SWAP występuje w Delphi i zamienia miejscami starszy bajt z młodszym, ale nie oto nam chodzi). Otóż kod wyglądałby mniej więcej tak:
var
    a, b, c : Byte; {użyliśmy typu Byte (zakres 0 do 255), ponieważ liczby na których będziemy operowali są dosyć małe. W zależności od zapotrzebowania deklarujemy typ, który nam odpowiada}

begin
    a := 2;
    b := 5;
{przypisaliśmy zmiennym wartości; zmienna c jest pomocniczą (domyślnie ma wartość 0)}

    c := a; {przypisaliśmy wartość a do zmiennej c; c = a = 2}
    a := b; {teraz a = 5, czyli nasze b}
    b := c; {b przyjmuje wartość c, czyli 2}
{teraz a = 5, b =2}

    ShowMessage('a = ' + FloatToStr(a) + ' b = ' + FloatToStr(b)); {ta komenda wyświetli komunikat pokazując wartości naszych liczb}
end;

Wystarczy wkleić powyższy kod pod napisem Procedure, aby przekonać się o działaniu algorytmu. SWAP jest wstępem do algorytmu losowania, który omówimy za jakiś czas. Postaramy się również napisać przykładowe programy działające według podanych na blogu kodach.

niedziela, 19 października 2008

Na dobry początek - SWAP.

Pierwszym algorytmem, który omówimy będzie SWAP. Brzmi nieco tajemniczo, ale nie ma się czym przejmować. To bardzo prosty i popularny algorytm. Jak działa? To proste - SWAP zamienia miejscami dwa elementy. No tak, zamienia miejscami, ale po co? Otóż algorytm ten jest wykorzystywany m. in. przy sortowaniu danych. Wygląda mniej więcej tak:
Swap(zmienna1, zmienna2)

Jak działa? Otóż tworzy w pamięci trzecią zmienną (pomocniczą). Wartość zmienniej1 przypisuje nowej zmiennej, natomiast wartość zmienniej2 przypisuje zmienniej1. Następnie wartość zmiennej3 przypisuje zmienniej2. Wiem, wiem, brzmi skomplikowanie, ale wcale takie nie jest. Postaramy się to pokazać:
Mamy dwie zmiennie: a = 2 i b = 5.
Algorytm tworzy zmienną pomocniczą: c = 0.
Teraz następuje przypisanie: c = a. {c przyjmuje wartość a, czyli teraz c = 2}
Następnie: a = b. {a przyjmuje wartość b, czyli teraz a = 5}
No i finalnie: b = c. {b przyjmuje wartość c, czyli wcześniejszego a; b = 2}
Efekt: Obie zmienne zamieniły się wartościami. {a = 5, b = 2}

Algorytm prosty i jednocześnie bardzo przydatny. W kolejnych notkach postaramy się pokazać zastosowanie SWAP-a w różnych językach programowania.

Czym są algorytmy?

Z szeroko pojętymi algorytmami każdy z nas spotykał się w swoim życiu już od najmłodszych lat. Nie wierzysz? A robiłeś sobie kiedyś kanapki? "Przepis" jak zrobić te kanapki to właśnie algorytm.
1. Weź kromkę chleba.
2. Posmaruj ją masłem.
3. Połóż na to np. ser/wędlinę.

Z innymi algorytmami spotykaliśmy się już w wieku 6-7 lat. Było nim dodawanie. Naprawdę! A algorytm ten wygląda następująco (dodamy tu 3+2):
1. Masz zaciśniętą rękę.
2. Licząc prostujesz palce.
3. Policz na palcach do 3.
4. Od miejsca w którym skończyłeś liczyć policz jeszcze do 2.
5. Policz od początku ile masz palców wyprostowanych.

Jak widzisz, od zawsze mamy do czynienia z algorytmami. Spytaj się np. mechanika jak On wymienia olej w samochodach. Zależnie od marki samochodu algorytm wymiany oleju silnikowego nieznacznie się zmienia.
Jak widzisz Algorytmy są to przepisy jak coś wykonać. Aby mogły one funkcjonować, muszą składać się ze skończonej liczby instrukcji/kroków. Wyobraźmy sobie powyższy algorytm na robienie kanapki, gdy po kroku 2-gim dodamy krok "wróć do kroku 1".
1. Weź kromkę chleba.
2. Posmaruj ją masłem.
3. Wróć do kroku 1.
4. Połóż na to np. ser/wędlinę.

Teraz nigdy nie dojdziemy do kroku 4-tego. Ponieważ będziemy wiecznie wracać do kroku 1. Dlatego w/w przykład już nie jest algorytmem.

Na tym blogu postaramy się w łatwy i zrozumiały sposób przedstawiać algorytmy informatyczne, a może czasem też matematyczne. Zaczynając od tych najprostszych.