Pascal FAQ- dla poczatkujacych

Czy te FAQ przyda sie poczatkujacym ?

  • TAK

    Votes: 0 0,0%
  • NIE

    Votes: 0 0,0%

  • Total voters
    0

FLEJA

Użytkownik
Dołączył
Marzec 9, 2003
Posty
253
Kilka razy odpowiadalem w dziale programowanie w sprawach dotyczacych TP wiec napisalem FAQ dla pocatkujacych. Prosze o wyrozumialosc to moj pierwszy taki FAQ. Z gory dziekuje za pozytywne glosy jak i za negatywne bo nikt nie jest doskonaly ...

1. Wstep
2. Zasady pisania programow
3. Slowa kluczowe
4. Struktura programu
5. Pierwszy program
6. Kolejny program
7. Typy danych
8. Instrukcja przypisania :=
9. Instrukcja warunkowa IF...then...else
10. Instrukcja wyboru case...of...else
11. Petle
12. Dzialania na napisach
13. Procedury
14. Funkcje
15. End.
-------------------------------------------

1. Wstep:
Na wstepie chcialbym zaznaczyc, ze jest to moj pierwszy faq jaki napisalem i prosze o wyrozumialosc. FAQ poswiecony jest programowaniu w Turbo Pascalu i jest to jego pierwsza wersja. Jezeli ocena uzytkownikow z forum bedzie pozytywna postaram sie o dalsze ulepszanie tego materialu, a jezeli bedzie negatywna bede musial chyba od poczatku nad tym popracowac
smile.gif

Na wstepie chcialem jeszcze zaznaczyc, ze FAQ jest skierowane dla usero zaczynajacych swoja przygode z Pascalem. Oki po tym nudnym wstepie mozemy przejsc do konkretow.

2. Zasady pisania programow:
W zwiazku z tym, ze zaczynamy sie uczyc programowac od podstaw chcialem zwrocic uwage na czytelnosc kodu zrodlowego. Bardzo czesto mozemy sie spotkac z niedbalymi programistami, ktorzy nie zwracaja uwagi na "porzadek w kodzie". Ja jednak chcialem od poczatku nauczyc mlodych zapalencow Pascala, aby jednak dbali o takie zasady jak:

a) Przyjmijmy ze slowa kluczowe (np BEGIN, PROGRAM, END) w programach bedziemy pisac duzymi literami [pamietam jak nasza pani profesor od informatyki tego sie czepiala i zostalo mi to do dzis w glowie
smile.gif
]
<
W kazdym programie bedzie wystepowal naglowek programu, zawierajacy slowo kluczowe PROGRAM i nazwe programu, ktora nie moze zaczynac sie od liczby.
c) Pojedynczy odstep (spacja) wystepujacy w kodzie programu jest traktowany tak jak kazdy inny znak
d) W kodzie zrodlowym nie moga wystepowac polskie literowki (ą, ę, ć itp)
e) Po kazdej instrukcji jest umieszczany separator w postaci srednika " ; "
f) Komentarze wystepujace w programie bedziemy umieszczac w odpowiednich nawiasach. Sa to nawiasy {} oraz dodatkowo nawiasy "z gwiazdka" (* *)
g) Dla poprawienia czytelnosci kodu proponuje stosowanie wciec w programie.

3. Slowa kluczowe:
Zacznijmy moze od pojecia co to jest w ogole, a moze raczej co to sa te slowa kluczowe?
Otorz slowa kluczowe sa to wyrazy z jezyka angielskiego, ktore nie moga byc uzywane do definiowania typow, zmiennych, procedur- w skrocie sa to slowa "zastrzezone" (jest ich 51):

AND, ASM, ARRAY, BEGIN, CASE, CONST, CONSTRUCTOR, DESTRUCTOR, DIV, DO, DOWNTO, ELSE, END, EXPORTS, FILE, FOR, FUNCTION, GOTO, IF, IMPLEMENTATION, W, INLINE, INTERFACE, LABEL, LIBRAY, MOD, NIL, NOT, OBJECT, OF, OR, PACKED, PROCEDURE, PROGRAM, RECORD, REPEAT, SET, SHL, SHR, THEN, TO, TYPE, UNTIL.

Napewno o jakims zapomnialem, ale mniejsza z tym jak na razie
smile.gif


4. Struktura programu:
A oto jak wyglada program napisany w Pascalu (czyli jego struktura):

Program nazwa_programu; [jest to blok naglowkowy]
...

uses [tu zaczyna sie blok deklaracyjny]
const
var
itd.
....

begin...end [ jestesmy w bloku wykonawczym tu zawartye sa instrukcje naszego programu]
if..then..else
goto
while..do

program zawsze konczymy slowem kluczowym END. (END z kropka na koncu)

Moze ta struktura wyglada kiepsko, fakt ladniej wygladala by na kartce papieru, ale mam nadzieje, ze do tej pory wszystko jest jasne
smile.gif


5. Pierwszy program:
Skoro znamy juz strukture programu, mozemy napisac nasz pierwszy program
smile.gif
Puki co nie bedzie to jakis tam wielki wynalazek. Na nim poznamy pierwsza komende w Pascalu jaka jest "writeln"
Przeanalizujmy kod zrodlowy programu:

PROGRAM Lekcja1;

begin
writeln('To jest moj pierwszy program w Pascalu');
end.

Kod zrodlowy nie zajmuje zbyt duzo i program takze nie jest zbytnio genialny poniewaz wyswietla tylko na ekranie tekst "To moj pierwszy program w Pascalu" Za bardzo ambitny nie jest, ale od czagos musimy zaczac.

Nasz program rozpoczelismy slowem kluczowym PROGRAM nazwa_programu;
Przyjelo sie ze wlasnie tak w Pasaclu bedziemy zaczynac kazdy program jaki chcemy zrobic
smile.gif

Tresc programu jest zawarta pomiedzy slowami kluczowymi BEGIN (poczatek) oraz END (koniec). Tlumaczac to na ludzki jezyk slowem BEGIN rozpoczynamy nasz program, a slowem END. konczymy (PAMIETAJ!!! aby program zakonczyc musi byc na koncu slowo kluczowe END. koniecznie z kropka)

Pomiedzy BEGIN oraz END znajduje sie procedura "writeln" Pewnie sie juz domyslasz ze sluzy ona do wyswietlania na ekranie monitora informacji. W dlaszej czesci FAQ poznasz jaj druga funkje
smile.gif
[takze banalnie prosta khy khy]

Oki skoro kod zrodlowy zostal przetlumaczony mozemy uruchomic nasz program
smile.gif
Naciskamy kalwisz F9 program kompiluje sie.
Teraz chcemy zobaczyc wynik naszej pracy. W tym celu wybieramy z Menu polecenie RUN lub naciskamy bezposrednio klawisze CTRL+F9.

Jezeli to zrobiles pewnie zadziwiles sie
<
poniewaz Pascal nie dal ci nawet zobaczyc wynikow twojej pracy ... Musimy temu jakos zaradzic wiec mozemy to zrobic na dwa sposoby:

a) albo nacisniemy kalwisze ALT+F5 [zobaczymy efekt pracy]
<
wprowadzimy procedurke readln;

Procedura readln jest jak to moge nazwac odwrotnoscia procedury writeln poniewaz oczekuje ona na podanie danych lub na nacisniecie dowolnego klawisza. Zmodyfikujmy kod zrodlowy naszego programu do postaci:

PROGRAM Lekcja1;

begin
writeln('To jest moj pierwszy program w Pascalu');
readln;
end.

Teraz jak zauwazyliscie (o ile skompilowaliscie kod) Pascal czeka i czeka na nacisniecie dowlonego kalwisza. Udalo sie nam to dzieki wlasnie procedurze readln; W dlaszej czesci FAQ poznacie kolejna funkcje tej procedury.

6. Kolejny program:
Jak juz obiecalem tutaj dowiecie sie wiecej o procedurach writlen i readln oraz takze zeby nie zanudzac dowiecie sie o paru inych sprawach
smile.gif


Procedura writeln wygloda nastepujaco:

writeln('jakis txt');
ale w pascalu mamy takze takie cos jak procedura write ktora wyglada tak:

write('jakis txt');

Roznica pomiedzy nimi polega na tym, ze procedura writeln po wyswietleniu danego tekstu przechodzi do nastepnej linki, a procedura write po wyswietleniu tekstu znajdujacego sie w nawiasie poznostaje w nim. Dla przykladu podaje zrodelko prostego programu do wlasnej analizy (bo z tym nie powinno byc problemu):

PROGRAM liniki;

begin
writeln('lalala');
writeln('khykhy');
write('11111111');
write('22222222');
readln;
end;

Nie powinno z tym byc problemow, a efekt bedzie widoczny na ekranie
smile.gif

Obiecalem takze, ze napisze cos o procedurze readln. Jak wspominalem wczesniej posluzyla nam ona do zatrzymania programu (czeka na nacisniecie klawisza) i zobaczenia wynikow pracy. Lecz ma ona takze inna funkcje, a mianowice zapamietuje ona dane wpisane z klawiatury do programu. Oczywiscie przeanalizujmy to na przykladzie:

PROGRAM mnozenie;
var
L1, L2: integer;

begin
writeln('Program Mnozenie')
writeln('Podaj pierwsza liczbe');
readln(L1);
writeln('Podaj druga liczbe;);
readln(L2);
writeln(L1*L2);
readln;
end.

Dzieki temu prostemu zrodelku poznamy troche nowych informacji. Pierwsz nowascia jaka pewnie juz zauwazyles/as jest slowo kluczowe VAR wystepujace pod slowem PROGRAM.
VAR- znajduje sie w bloku deklaracyjnym (patrz struktura programu) i sluzy do deklarowania zmiennych w programie. Pamietaj aby zawsze deklarowac zmienne przed slowem kluczowym BEGIN.
Wiele razy mowilem juz o procedurze readln i tu macie jej przyklad po drugiej procedurze writlen wystepuje wlasnie nasz readln (ale namieszalem pewnie
smile.gif
). Oczekuje tutaj na podanie liczby z klawiaturki. Standardowo wyglada to tak:

readln(argumenty);

lub samo readln; ale o tym juz pisane bylo gdzies wyzej
<


Kolejna nowoscia moze byc writeln(L1*L2). Jak widzac nie ma w srodku nawiasu krecek '' Oznacza to ze Pascal w tym wypadku wykona mnozenie liczby L1 i L2. Mozesz tam dac dowlony znak artmetyczny.

Gdy deklarowalismy zmienne L1 i L2 nalezaly one do jakis typow danych, ale o tym w next dziale
<


7. Typy danych:
Typy danych- w skorcie mozna powiedziec ze jest to pewnie zakres liczbowy, zakres dozwolonych operacji w ktorych musi sie zmiescic programista. Przykladowo podam wam tu ich kilka:

integer- (liczba calkowita) zmienne przyjmuja wartosc z przedzialu -32768 do 32767
shortint- od -128 do 127
byte- od 0 do 255
char- tryb znakowy
boolean- zadeklarowane zmienne moga przyjmowac wartosci True albo False

Jest ich jeszcze troszeczke, ale sadze ze nie warto na razie opisywac ich wszystkich poniewaz mija sie to jak na razie z celem
<


8.Instrukcja przypisania:
Z tym nie powinno byc klopotow, lecz kiedys spotkalem sie z pytaniami na gg dotyczacymi "co to jest :=" dlatego tez odpowiem na to pytanie wlasnie w tym FAQ, a przyda sie to w dlaszej czesci napewno.
Otorz ten znaczek ( := ) w Pascalu czytamy doslownie jako: staje sie i oznacza to przypisanie np:

s:=0 (nadaje zmiennej wartosc 0)
s:=2 (nadaje zmiennej wartosc 2)

9. Instrukcja warunkowa IF...Then...Else
Instrukcja ta ma postac:

IF warunek
then instrukcja-1
else instrukcja-2

Jesli warunek jest speliony wykonana zostaje instrukcja-1, jezeli natomiast instrukcja-1 nie spelnia warunku to wykonuje sie instrukcja-2. Instrukcja moze byc pojedyncza instrukcja jak i grupa instrukcji objeta w slowa kluczowe BEGIN END.
Co do warunku moze byc to dowolne wyrazenie logiczne (liczba, znak, litera). Moze miec on wartosc TRUE lub FALSE (spelniony niespelniony).

10. Instrukcja wyboru case...of...else
Instrukcja case of else ma postac:

case warunek of
wartosc-1 : akcja-1;
wartosc-2 : akcja-2;
wartosc-n : akcja-n;
else
akcja-zastepcza
end;

Warunkiem w tej instrukcji moze byc dowolne wyrazenie (liczba, znak, napis), zas akcje (akcja-1, akcja-n) moga byc zarowno pojedynczymi instrukcjami jak i grupami zamknietymi przez slowa kluczowe begin-end.
Dzieki tej instrukcji jest mozliwe wielokrotne sprawdzanie warunku (wybor z listy mozliwosci).

Bardzo prosto mozesz zrozumiec dzialanie tej instrukcji na przykladzie:
Jest to program przyslowia (kiedys w szkole na informatyce robilem
<
):

program przyslowie;
uses crt;
var
p: byte;
przyslowie: string;
begin
clrscr;
Writeln('Wybierz liczbe a program poda ci przyslowie na dzien dzisiejszy..');
Writeln('Czekam na podanie liczby od 1 do 5');
readln(p);

CASE p OF
1: przyslowie :=' tu jakies przyslowie' ;
2: przyslowie :=' tu tez jakies przyslowie' ;
n: przyslowie :=' jak wyzej' ;
end;
writeln('Przyslowie na dzien dzisiejszy: ');
writeln(przyslowie);
readln;
end.

Tak mniej wiecej mozna zobrazowac te instrukcje
smile.gif


Dodatkowo w tym progogamie zadeklarowano modul crt (komenda uses crt) oraz wystapila nowa komenda- clrscr;
Moglem ja juz wczesniej opisac, lecz jakos dopiero tutaj przypomnialo mi sie o niej. Sluzy ona poprostu do czyszczenia ekranu.

11. Petle:
W tym podpukcie zapoznam was z trzema rodzajami petli. Beda to petle:
a) while do
<
repeat until
c) for to do

Zacznijmy moze od podania postaci jakie maja petle:

a)
while warunek
do instrukcja

Warunek w tej petli jest sprawdzany na poczatku, dlatego jezeli nie zostanie on spelniony petla moze nie wykonac sie ani razu.
Oto maly przykladzik:

program dodaj;
var
L1, L2 : byte;


begin
while L1 < 255 do
begin
writeln('Podaj L1);
readln(L1);
writeln('Podaj L2');
readln(L2);
......

kawalek kodu zrodlowego widnieje powyzej... mozesz na jego przykladzie napisac np program dzielenie, albo co tam chcesz.

Odwrotnoscia do petli while do jest petla repeat until


<

repeat instrukcja
until warunek

Jak widzimy w tej petli warunek znajduje sie na koncu, a nie na poczatku jak to mialo miejsce w poprzedniej petli.

c)
for licznik:= wartosc_poczatkowa to wartosc_koncowa do
instrukcja

Przeanalizujmy teraz przyklad tej oto petli:

program napisy;
uses crt;
var
i:integer;
begin
clrscr;
for i:=1 to 20 do
writeln(i:3)
end.

Jest to prosty przyklad i wedlug mnie nie wymaga dluzszego komentarza, poniewaz wyswietla on liczby od 1 do 20. Chyba juz wiecie ile czasu mozecie zaoszczedzic dzieki tej petli i nie bedziecie sie musieli bawic writeln
<


12. Dzialania na napisach:
Nie wiem czy to sie komus przyda, ale niech poczatkujacy wiedza ze mozna pobawic sie "napisami" w Pascalu. Dzialania na napisach rozpoczniemy od paru slow teori i poznamy kilka przydatynych komend :

a) LENGTH(x1)- dlugosc slowa x1
<
POS(x2,x1)- pozycja lancucha x2 w x1
c) COPY(x1, n, j)- kopiuj ze slowa x1 j- znakow od slowa(literki) n
d) DELETE(x1, n, j)- usun ze slowa x1 j-znakow od slowa(literki) n
e) CONCAT(x1, x2)- polacz slowa x1 i x2

Mozecie poprobowac swoich sil w Pascalu nie bedziecie mieli raczej z tym problemow bo jest to tylko zabawa ze slowami
smile.gif
ale czasem moze wyjsc z tego fajny program
<

W programie jezeli chcesz zastosowac ktoraas z podanych wyzej komend zrob tak:
writeln(CONCAT(x1,x2));

13. Procedury:
W tym punkcie dowiecie sie co nieco na temat procedur, oraz docenicie ich znaczenie w programie
smile.gif

Zacznijmy standardowo od przykladow procedur:

a) bez parametrow:
PROCEDURE gwiazdka1;
begin
for i:=1 to 20 do
write('*');
end;

<
parametr formalny:
PROCEDURE gwiazdka2 (ile: byte);
begin
for i:=1 to 20 ile do
write('*');
end;

c) zmienna:
PROCEDURE gwiazdka3 (var ile: byte);
begin
for i:=1 to ile do
write(*');
ile:= ile+10;
end;

Byly to przyklady trzech procedur jakie mozesz zastosowac w programie, a teraz przyjrzyj sie strukturze procedury:

PROCEDURE nazwa-procedury;
begin
{tresc}
end;

Jak widzisz rozpoczyna sie ona slowem kluczowym PROCEDURE po ktorym nastepuje nazwa owej procedury. Jezeli chcemy zadeklarowac jakies zmienne, stale itp w procedurze musimy to zrobic po slowie kluczowym PROCEDURE, a nie jak dotychczas po slowie BEGIN zapamietaj to !!! jest to bardzo wazne. Zadeklarowana tak np. zmienna bedzie widziana tylko w procedurze i nie bedzie miala wplywu na prace np innych procedur czy funkcji.
Jak wspomnialem gdzies wyzej docenisz zastosowanie procedur w Pascalu. Wyobraz sobie taki przyklad ze co 10 linijek musisz zrobic 10 writelnow. Zastanow sie czy bedzie ci sie chcialo pisac 10 razy slowo writeln ? Chyba nie ... Do tego sluza wlasnie procedury ! Jezeli napiszemy jedna procedure mozemy sie do niej w kazdej chwili odwolac. Jak to zrobic? Jest to bardzo proste. Wystarczy ze napiszesz nazwe procedury w miejscu gdzie ma byc ona wykonana. Przeanalizujmy to jednak na kodzie zrodlowym
smile.gif


program jakistam;
uses crt;

procedure fleja;
begin
writeln('S');
writeln('O');
writeln('S');
end;

begin
clrscr;
.........
{dalsza czesc programu}
fleja; <--- odwolanie sie do naszej procedurki
{itd}

Chyba zrozumieliscie o co mi chodzi. Definicje procedury najlepiej umiescic po naglowku "program" oraz po deklaracji zmiennych.
" W prawidlowo skonstruowanym programie deklaracje zmiennych poprzedzaja definicje procedur i funkcji, a te z kolei wystepuja przed czescia operacyjna".

14. Funkcje:
Odwrotnoscia procedur sa oczywiscie funkcje
smile.gif
Funkcje sa to rodzaje procedury ktora po wywolaniu zwraca obliczona przez siebie wartosc. Przyjzyjmy sie ogolnej postaci funkcji:

FUNCTION nazwa
{deklaracja zmiennych itp}
begin
{tresc funkcji}
nazwa:= obliczony-wynik
end;

Wywolanie funkcji jest podobne do wywolania w procedurach i wyglada tak:
zmienna:=nazwa-funkcji

Zasadnicza roznica pomiedzy procedura a funkcja jest fakt, ze funkcje pod swoja nazwa zwracaja oblicozna wartosc, a procedury- nie.

15. End.
Na zakonczenie jeszcze raz powtorze ze jest to FAQ dla poczatkujacych. Jest to moj pierwszy FAQ wiec prosze o wyrozumialosc khy khy
<
Za bledy ort i literowki przepraszam (postaram je poprawic). Wiem, ze wiele rzeczy nie ujelem w tym FAQ, ale jest to dopiero pierwsza jego wersja i mam nadzieje ze bedzie kolejna wzbogacona o inne porzyteczne i przydatne tresci. To tyle co mialem Wam do przekazania teraz czekam na wasze zdanie.
Czy FAQ jest przydatny dla poczatkujacych ???
 
Do góry Bottom