software center, download, programy, pliki, teledyski, mp3
Menu główne


line strona główna
line darmowy download
line baza artykułów i porad
line kontakt z nami
Programy
line Systemy
line Artykuły PDF

Security

line Skanery
line Sniffery
line Security

Windows

line Użytkowe
line Przeglądarki graficzne
line Kodeki
line Narzędzia plikowe
line Narzędzia dyskowe
line Narzędzia systemowe
line Sterowniki
line Szyfrowanie danych
line Zarządzanie hasłami
line Zarządzanie rejestrem
line Łaty i Patche
line Zarządzanie pamięcią
line Synchronizacja czasu
line Nagrywanie płyt
line Free Antivirus (Darmowe Antyvirusy)
line Sterowniki
line Obróbka dźwięku
line Edycja wideo

Internetowe

line Bezpieczeństwo
line Programy p2p
line Komunikatory
line Dodatki do przeglądarek
line Klienty poczty elektronicznej
line Narzędzia Antyspamowe
line Przeglądarki grup dyskusyjnych
line Przeglądarki Offline
line Serwery poczty elektronicznej
line Telefonia komórkowa
line Wyszukiwarki internetowe
line Zdalny dostęp
line Cybernianie
line Klienty FTP
line Narzędzia internetowe
line Prywatnośc
line Przeglądarki internetowe
line Serwery FTP
line Serwery WWW
line Wspomagacze ściągania
line Zarządzanie siecią lokalną

Tuning Systemu

line Diagnostyka i testowanie
line Inne
line Rozszerzenia pulpitu
line Tapety na pulpit
line Tuning Systemu
line Ikony
line Powłoki
line Tuning sprzętu
line Wygaszacze ekranu

Programowanie

line Kompilatory
line Biblioteki i komponenty
line Bazy danych
line Edytory programistyczne
line Środowiska programistyczne
line Debugery
line Tworzenie wersji instalacyjnych

Webmastering

line Użytkowe
line Kursy

Linux

line Użytkowe
line Internetowe
line Multimedialne

Programy biurowe

line Programy dla firm
line Pakiety biurowe
line Administracja
line Edytory tekstu
line Grafika prezentacyjna
line Kadry i płace
line Wspomaganie projektowania
line Zarządzanie projektami
line Bazy danych
line Finanse i księgowośc
line Handel
line Programy ewidencyjne
line Zarządzanie informacją osobistą (PIM)
Nasze serwisy

Programy download
Bramka SMS
Download
Gry
Gry Online
Linux
Muzyka
Newsy
Programowanie
Program TV
Śmieszne Filmy
Teledyski
Kobiety


Artykuły > Programowanie > Kurs TP - podstawy
KURS TURBO PASCAL - PODSTAWY
Lekcja 1 - Wstep
Lekcja 2 - Pierwsz program w jezyku turbo pascal
Lekcja 3 - Zmienne
Lekcja 4 - Instrukcje warunkowe
Lekcja 5 - Procedury i funkcje
Lekcja 5 - Petle
Lekcja 7 - Podsumowanie wiadomosci - piszemy gre


1. Wstep
We wstepie chcialbym powiedziec, ze ten kurs jest dla poczatkujacych programistow. Pszystepujac do tego kursu nie musisz znac ani tego, ani zadnego innego jezyka programowania. Piszac ten kurs staralem się, tlumaczyc wszystko w sposób jak najmniej skomplikowany i nie wdawac sie w zbedne szczegoly. W razie jakichkolwiek problemow z tym kursem, możesz zwrocic się do mnie o pomoc, jezeli będę miał wystarczajaco duzo umiejetnosci na pewno ci pomoge. Kurs ten można dowolnie rozpowszechniac, nie wolno jednak dokonywac w nim zadnych zmian (mozna poprawic bledy ortograficzne :) ) i należy zaznaczyc kto jest jego autorem. Cieszylbym się również, gdybys powiadomil mnie gdzie sie znajdzie mój kurs :).


2.Pierwszy program w jezyku Turbo Pascal
Program w turbo pascalu powinien zaczynac sie slowem Program (Powinien - nie musi, ale poprawia to czytelnosc programu), nastepnie wpisujemy nazwe programu (bez znakow specjalnych takich jak np. "-" , ":", ">"). Wszystko to co napiszemy w turbo pascalu konczymy srednikiem (no prawie, ale o tym pozniej). Wszystko powinno wygladac tak : program nazwa_porgramu ; . kolejna rzecza ktora musimy zrobic jest rozpoczecie programu, robi sie to slowem begin (uwaga! po tym slowie nie stawiamy srednika). Zeby zakaczyc program wpisujemy slowo end (z kropka na koniec!). Tak oto napisalismy najprostrzy program w turbo pascalu, powinien on wygladac tak :

Kod:

program pierwszy;
begin
end.

Jesli chcesz wlaczyc ten program nacisnij klawisz ctrl + f9. Jesli nie popelniles jakiegos bledu pojawil ci sie czarny ekran, ktory zaraz zniknal. Pewnie nie jestes zadowolony z takiego programu bo chcialbys zeby twoj program cos robil i od razu sie nie wylaczal. Dlatego teraz napiszemy drugi program. Jak wiesz najpierw napisz slowo program nastepnie nazwe programu, rozpocznij brogram slowem begin i w nastepnej lini napisz : Writeln('hello world');. Slowo writeln sluzy do wyswietlania na ekranie tekstu, ktory znajduje sie w nawiasie po apostrofie (jest to znak, ktory zwykle znajduje sie przed enterem i wyglada tak ( ' ). Cale wyrazenie konczymy sredniekiem. Nastepnie wpisujemy slowo readkey, ktore czeka na dowolny klawisz i konczymy je srednikiem. Kod programu powinien wygladac tak :

Kod:

program drugi; { to jest komentarz }
uses crt; { deklaracja modulu crt }
begin { poczatek programu }
writeln('hello world'); { hello world znaczy witaj swiecie }
readkey; { program czeka na nacisniecie jakiegos klawisza}
end. { koniec programu }

teraz wszystko powinno wygladac jak nalezy program wypisuje na ekranie slowo hello world i czeka na nacisniecie jakiegos klawisza. Dodam tylko jeszcze ze slowa wypowiedziane w nawiasach klamrowych {} nazywaja sie komentarze i sa ignorowane przez kompilator, wiec mozesz tam pisac co chcesz. Komentarze przydaja sie, gdy chcesz powrucic do kodu po jakims czasie. Pamietaj tylko, ze komentarze, ktore informuja o czyms oczywistym, Sa bezuzyteczne, moga byc nawet szkodliwe. Jednak to co jest oczywiste dla jednej osoby moga byc niezrozumiale dla drugiej, zatem musisz samodzielnie ocenic uzytecznosc komentarza. Ogolnie rzecz biorac komentarze powinny informowac o nie tym co sie dzieje, ale dlaczego tak sie dzieje. To by bylo na tyle w tej lekcji. Zapraszam do nastepnej.


3. Zmienne
Zmienne sa bardzo waznym elmentem jezyka turbo pascal. Zmiennych bedziesz uzywal/a w kazdym swoim programie. A wiec coz to sa te zmienne? Zmienne najprosciej mowiac sloza do przechowywania informacji. A mowiac nie prosciej :) jaest to takie miejsce w pamieci komputera, w ktorym mazesz umiescic jakas wartosc a nastepnie mozesz z niej zkorzystac po jakims czasie. Oczywiscie zmienne Sa kasowane po wylaczeniu programu. Jak ktos nie zrozumial to teraz powiem to samo dzialajac na wyobraznie :). Pamiec komputera mozna potraktowac jaka ogromna ilosc pudeleczek poustawianych obok siebie. Deklarujac zmienna (jak to sia robi powiem zaraz) wkladasz do tego pudelczka jakes informacje, a jak w jakiejs czesci programu chcesz z niej skorzystac to sie po prostu do tego pudeleczka odwolujesz. Od teoretyki przejdzmy do praktyki, powiem teraz jak tworzy się zmienne. Gdy definiujesz zmienna od razu musisz poinformowac kompilator jej rodzaju: czy jest to liczba calkowita, rzeczywista czy moze jakis znak, informacja taka powie kompilatorowi ile miejsca musi zarezerwowac dla zmiennej oraz jakie informacje beda w niej przechwywane. Ale teraz do rzeczy zmienna deklaruje sie od nadania jej nazwy, nazwa zmiennej moze byc prawie dowolna. Wiadomo, ze nie mozna uzywac znakow polskich i specjalnych, a takze slow kluczowych. Po nazwie stawiamy dwokropek a nastepnie typ zmiennej (najwazniejsze typy zmiennych przedstawilem ponizej). Calosc moze wygladac np. tak: zmienna1:byte Ok. moze teraz napiszemy krotki programik, ktory bedzie demonstrowal dzialanie zmiennych:

Kod:

program trzeci;
uses Crt;
var zmienna1:byte; {deklaracja zmiennej}
begin
Writeln('Ile masz lat?');
Readln(zmienna1); {wprowadzanie wartosci dla zmiennej}
Writeln('A wiec masz ',zmienna1,' lat/a'); {odczytywanie zmiennej}
readkey;
end.

Powinienes wiedziec co ten program robi, ale jak nie wiesz to ci powiem :). Pierwsze co moze rzucic Ci sie w oczy jest tajemnicze wyrazenie uses Crt;. Uses znaczy uzyj, crt jest to nazwa biblioteki, czyli takiego zbioru roznych przydatnych procedur. Nastepna linia reprezentuje slowo kluczowe var jest to slowo, ktore zawsze poprzedza deklaracje zmiennych. Po slowie var zadeklarowana jest wlasnie zmienna o nazwie zmienna1. Nastepnie program prosi cie, abys podal mu swoj wiek. Nastepnie program oczekuje na podanie jakiejs wartosci liczbowej, a gdy mu ja podasz to program ja wyswietla w nastepnej linijce, potem juz tylko czeka na nacisniecie jakiegos klawisza i konczy swoje dzialanie. na to by bylo na tyle zapraszam do nastepnej lekcji.


Najwazniejsze typy zmiennych :

Kod:

shortint od -128 do 127
byte od 0 do 255
integer od -32768 do 32767
word od 0 do 65535
longint od -2147483648 do 2147483647
char - znak kodu ascii boolean wartosc true lub false


4. Instrukcje warunkowe
W jezyku turbo pascal istnieja dwie instrukcje warunkowe: instrukcja if...then oraz instrukcja wyboru case. Jezeli chcesz pisac programy, w ktorych urzytkownik programu bedzie mial jaks wybor to ten rozdzial musisz koniecznie przeczytac. Najpierw przejdziemy do instrukcji warunkowej if...then. Najprosciej mozna przedstawic to w postaci wzoru. If (wyrazenie) then instrukcja; Wyrazenie w nawiasach moze byc dowolne, ale najczesciej jest to jedno z wyrazen relacji. Wyrazenie to moze miec dwie wartosci: prawda (true) wtedy instrukcja jest spelniana, albo falsz (false) wtedy instrukcja jest pomijana. tak moze wygladac przykladowy program :

Kod:

program czwarty;
uses crt;
var
liczba:byte;
begin
writeln('Podaj liczbe 1 albo 2');
readln(liczba);
if (liczba=1) or (liczba=2) then writeln('OK. wybrales liczbe 1 albo 2');
readkey;
end.

Program dziala bardzo prosto: najpierw prosi cie abys wcisnal liczbe 1 albo 2. Jezeli nacisniesz 1 to wyswietli sie napis, ze wybrales 1, a jak nacisniesz 2 to wyswietli sie napis, ze wybrales 2 :). Tylko jest jeden maly problem a mianowicie: co sie stanie jak nacisniesz na przyklad 3? No wiec nic sie nie stanie :) po prostu nic sie nie wyswietli i program po nacisnieciu jakiegos klawisza program skaczy swoje dzialanie. Dlatego w jezyku turbo pascal jest cos takiego jak slowo kluczowe else. Dzialanie tego slowa najlepiej tez przedstawic na podstawie wzoru. if (warunek) then instrukcja else instrukcja2; No to teraz mozemy wprowadzic modyfikacje do naszego poprzedniego programu.

Kod:

program czwarty2;
uses crt;
var
liczba:byte;
begin
writeln('Podaj liczbe 1 albo 2');
readln(liczba);
if (liczba='1') or (liczba='2') then writeln('OK. wybrales liczbe 1 albo 2');
else writeln('to nie jest ani 1 ani 2');
readkey;
end.

Teraz jak napiszesz na przyklad 3 albo jakas inna liczbe (0 do 255 jak nie wiesz dlaczego to przeczytaj dokladniej lekcje poprzednia)to program wyswitli napis, ze to nie jest ani liczba 1 ani 2. Mozemy natrafic tez na taki klopot, ze instrukcje if...then moze byc bardzo skomplikowana, dlatego czasem lepiej uzyc instrukcje wyboru Case. Instrukja case znacznie upraszcza te programy, w ktorycz potrzebne bylo uzycie wiekrzej liczby instrukcji if...then. Instrukcja case polega na wybraniu z wielu przypadkow jednego, na podstawie odpowiedniej listy zawierajacej ich spis. Instrukcja wyboru case ma postac:

Kod:

case wyrazenia of
wybor 1;
wybor 2;
.......;
wybor n;
else instrukcja
end;

Teraz jak zwykle napiszemy przykladowy program.

Kod:

program piaty;
uses crt;
var
liczba:byte;
begin
writeln('Podaj liczbe z przedzialu od 1 do 5');
readln(liczba);
Case liczba of
1: writeln('wybrales 1');
2: writeln('wybrales 2');
3: writeln('wybrales 3');
4: writeln('wybrales 4');
5: writeln('wybrales 5');
else writeln('Nie wybrales liczby z przedzialy 1-5');
end;
readkey;
end.

Teraz wyobraz sobie jak taki sam program wygladal by przy uzyciu if...then. nalezy jednak nie przesadzac ze stosowaniem instrukcji case, stosuj ja tylko tam gdzie jest to konieczne.To by bylo na tyle zapraszam do nastepnej lekcji.


5. Petle
Petle sluza do wielokrotnego powtarzania ciagu jakis instrukcji az do spelnienia jakiegos warunku. W turbo pascalu wystepuja trzy rodzaje petli :

- instrukcja "for...to...do" (dla)
- instrukcja "repeat...until" (powtarzaj)
- instrukcja "while" (dopoki)

Najpierw zajmiemy sie instrukcja for...to...do posiada ona nastepujacy wzor : FOR zmienna:=wartosc_poczatkowa TO wartosc_koncowa DO instrukcja. Przykladowy kod moze wygladac nastepujaco :

Kod:

FOR x:=1 TO 10 DO writeln(' ',x);
end;

W powyzszym fragmrncie petla spowoduje wyswietlenie liczb od 1 do 10, nastepnie petla skonczy swoje dzialanie. W taki sposow mozemy sobie odliczac liczby w gore, ale moze zdazyc sie tak ze chcemy odliczac w dol. Wtedy petla ma troszeczke inna postac, a mianowicie : FOR zmienna_poczatkowa DOWNTO wartosc_koncowa DO instrukcja. Przykladowy kod bedzie bardzo podobny do poprzedniego:

Kod:

FOR x:=10 DOWNTO 1 DO begin
writeln(' ',x);
end;

Petla bedzie odliczala w dol od liczby 10 do 1. Nastepna petla jest "repeat...until" ma ona nastepujaca postac :

Kod:

REPEAT
instrukcja_1;
instrukcja_2;
............;
instrukcja n;
UNTIL warunek

Cecha charakterystyczna tej instrukcji jest to, ze bez wzgledu na wartosc warunku musi zostac co najmniej raz wykonana. Instrukcja REPEAT powoduje wykonaniewszystkich instrukcji umieszczonych pomiedzy slowem kluczowym REPEAT a slowem kluczowym UNTIL. Wykonanie tych instrukcji konczy sie, jezeli wartosc warunku jest prawdziwe (true), w przeciwnym wypadku powtarzane jest ponownie. Przykladowy zapis instrukcji moze wygladac nastepujaco :

Kod:

REPEAT
Readln(x);
x:=x+1;
UNTIL x>200;

Program z umieszczonym fragmentembedzie prosil o podanie kolejnych wartosci x, jednoczesnie je sumujac, dopoki wartosc sumy nie przekroczy 200. OK pozostala na jeszcze tylko instrukcja white. Instrukcja while powoduje wykonywanie instrukcjitak dlugo, dopoki warunek (DO instrukcja) nie zostanie spelniony. Zapis tej instrukcji wyglada nastepujaco : While warunek DO instrukcja; Cecha charakterystyczna petli While jest sprawdzanie warunku przerywajacegojeszcze przed jej wykonaniem. Podana instrukcja moze byc zarowno pojedyncza instrukcja turbo pascala, jak i grupa instrukcji ujetych w "bloku" begin...end :

Kod:

WHILE warunek DO
instrukcja_1;
instrukcja_2;
............;
instrukcja_n;
end;

Przykladowy fragment programu moze wygladac nastepujaco :

Kod:

WHILE x<>100 DO Begin
x:=x+2;
writeln('x=',x ,')
end;

Jesli warunek przerywajacy przy rozpoczeciu petli while ma wartosc logiczna falsz (false), to instrukcje zawarte w bloku nie zostana wykonane ani razu. Jesli warunek przerywajacy ma wartosc prawda (true), to zmiana tej wartosci na falsz musi bey zawarta w bloku wykonawczym petli. Jezeli x osiagnie wartosc 100, nastapi przerwanie wykonywania petli while. uffff no to by bylo na tyle o petlach. W tej lekcji nie przedstawilem zadnego kompletnego programu, ale mysle, ze sam dasz sobie z tym rade, a jak nie to pisz do mnie chetnie ci wszystko wytlumacze. Zapraszam do nastepnej lekcji.


7. Podsumowanie wiadomosci - Piszemy gre
Tak naprawde to jeszcze nie wiele umiesz :) wiec pisana przez nas gra to niestety nie bedzie zaden Qlejk tylko prosta gra bez zadnej grafiki. W naszej grze komputer brdzie losowal pewna liczbe, a twoim zadaniem bedzie zgadniecie jaka to liczba. Oczywiscie to sa skrotowe zasady nasz a gra bedzie o wieeeeeele bardziej skomplikowana... ok zartuje :) Ale jest jaszcze jedna rzecz, o ktorej nie wiesz, a ktora bedzie nam bardzo potrzebna, a mianowicie o liczbach losowych. Aby wylosowac liczbe z przedzialu od 0 do x i zapisac ja do zmiennej a nalezy skozystac z nastepujacej funkcji: a:=random(x)+1. Jesli chcialbys wylosowac liczbe np. od jednego do stu i zapisac ja w zmiennej b to napisz tak: b:=random(99)+1 pamietaj, ze zero to tez liczba. Odpowiedni program bedzie wygladal nastepujaco :

Kod:

program losuj;
var b:word;
begin
randomize;
b:=random(99)+1;
end.

No spoko gdy juz wiesz jak losuje sie liczby powinienes juz umiec sam napisac nasza gre, ale jak nie to czytaj dalej. Teraz napisze jak zrobic tak, ze jak gracz nie trafil wylosowanej przez komputer liczyby to program podaje mu czy to jest liczba mniejsza czy wieksza. Ota jak po tych przerobkach wyglada nasza gra:

Kod:

program Gra;
var runda,liczba,wybor:word;
begin
randomize;
liczba:=random(999)+1;
repeat
write('Podaj liczbe:');
readln(wybor);
if wybor=liczba then writeln('Zgadles!') else
if wybor<liczba then writeln ('Sprobuj wieksza liczbe!') else
if wybor>liczba then writeln ('Sprobuj mniejsza liczbe!');
until wybor=liczba;
end.

Po skompilowaniu gra dziala poprawnie, ale mysle ze nie jest to szczyt twoich marzen. Gra po pierwsze wyglada brzydko po drugie wiele rzeczy jeszcze daloby sie w niej zrobic, np.dodac licznik tur i sprawic zeby gra wygladala bardziej przejrzyscie. Moze wygladac to tak : program totogra;

Kod:

uses crt;
var counter,liczba,wybor:word;
begin
clrscr; {czysci ekran}
randomize;
liczba:=random(1000)+1;
repeat
counter:=counter+1;
write('Podaj liczbe:');
readln(wybor);
clrscr;
if wybor=liczba then Writeln('Zgadles !!! Zajelo ci to : ',counter,' proby');
if wybor<liczba then writeln ('Sprobuj wieksza liczbe!') else
if wybor>liczba then writeln ('Sprobuj mniejsza liczbe!');
until wybor=liczba;
end.

Teraz gra sie znacznie przejrzysciej i jest takze licznik tur, ale sprubojmy jeszcze bardziej rozbudowac nasza gre dodajac po skaczonej rozgrywce komentarz komputera co do uzyskanego wyniku. Program bedzie wygladal nastepujaco :

Kod:

program totogra;
uses Crt; var counter,liczba,wybor:word;
begin
clrscr;
randomize;
liczba:=random(1000)+1;
repeat
counter:=counter+1;
write('Podaj liczbe:');
readln(wybor);
clrscr;
if wybor=liczba then begin
Writeln('Udalo ci sie poszukiwana byla liczba ',liczba);
Writeln('Zgadles po ',counter,' probach');
if (counter<4) then writeln('Jestes Mistrzem !!!');
if (counter=4) then writeln('Jestes Swietny !!!');
if (counter=5) or (counter=6) then writeln('Jestes Dobry !!!');
if (counter=7) then writeln('Uzyskales dosyc dobry wynik');
if (counter=8) then writeln('Niezle ale mozna lepiej !');
if (counter=9) or (counter=10) then writeln('Sredni wynik');
if (counter=11) or (counter=12) then writeln('Slabo !!!');
if (counter>12) then writeln('Jestes zalosny'); readkey end else
if wybor<liczba then writeln ('Sprobuj wieksza liczbe!') else
if wybor>liczba then writeln ('Sprobuj mniejsza liczbe!');
until wybor=liczba;

No, no, no teraz nasza gra prezentuje sie o wiele ciekawiej, ale denerwuje jeszcze jeden fakt po skonczonej rozgrywce nasza gra wylacza sie automatycznie i jezeli chcesz zagrac jeszcze raz musisz od nowa wlaczyc gre. Ten problem mozna jednak w bardzo prosty sposob naprawic. Mozemy tez dodac do naszej gry menu, ktore na samym poczatku bedziemy wybierali jedna z kilku opcji. Dobrze, wiec kod naszej pierwszej gry przedstawia sie nastepujaco :

Kod:

program totogra;
uses crt;
var jeszczeraz,menu,counter,liczba,wybor:word;

Procedure koniec;
begin
clrscr;
Writeln('Mam nadzieje ze podobala ci sie moja gra. Do zobaczenia !!! ');
readkey;
end;

Procedure gra;
begin
clrscr;
randomize;
liczba:=random(1000)+1;
repeat
counter:=counter+1;
write('Podaj liczbe:');
readln(wybor);
clrscr;
if wybor=liczba then begin
Writeln('Udalo ci sie poszukiwana byla liczba ',liczba);
Writeln('Zgadles po ',counter,' probach');
if (counter<4) then writeln('Jestes Mistrzem !!!');
if (counter=4) then writeln('Jestes Swietny !!!');
if (counter=5) or (counter=6) then writeln('Jestes Dobry !!!');
if (counter=7) then writeln('Uzyskales dosyc dobry wynik');
if (counter=8) then writeln('Niezle ale mozna lepiej !');
if (counter=9) or (counter=10) then writeln('Sredni wynik');
if (counter=11) or (counter=12) then writeln('Slabo !!!');
if (counter>12) then writeln('Jestes zalosny'); readkey end else
if wybor<liczba then writeln ('Sprobuj wieksza liczbe!') else
if wybor>liczba then writeln ('Sprobuj mniejsza liczbe!');
until wybor=liczba;
writeln('Grasz jeszcze raz? Jezeli tak nacisnij 1');
readln(jeszczeraz);
if (jeszczeraz=1)then gra else koniec;
end;

Procedure menuu;
begin
clrscr;
repeat
Writeln('Wybiez co chcesz zrobic :');
Writeln;
Writeln('1 - Nowa gra');
writeln('2 - Koniec');
readln(menu);
if (menu=1) then gra;
if (menu=2) then koniec;
until (menu=1) or (menu=2)
end;

begin
clrscr;
menuu;
end.

No i wlasnie tak dotarlismy do konca tworzenia naszej gry. jak pewnie zauwazyles poszczegolne czesci gry ujete sa w procedury co jest duzo wygodniejsze i bardziej przejrzyste. Mozesz sam napisac do tej gry jeszcze kilka udogodnien i smaczkow np. limit tur, mozesz dodac takze jakiesz kolorki wtedy gra bedzie wygladala duzo ladniej. Kolory deklaruje sie przy pomocy funkcji textcolor(nazwa_koloru) np. textcolor(red);. Oczywiscie mozliwosci jest nieskaczenie wiele, to co zrobisz zalezy tylko od ciebie i od twojej wyobrazni, a wiec do dziela !

Autor : Vitar
komentarz[3] |

programy download hacking program tv bramka sms teledyski kody do gier
trailery filmiki gry online antywirusy artykuły tutoriale systemy
© 2006-2009 haksior.com. Wszelkie prawa zastrzeżone.
Design by jPortal.info
0.031 |