L O A D I N G . . .

Programowanie w Turbo Pascal u. Darmowe kursy dla początkujących, informacje dla zaawansowanych, kody źródłowe, forum, download. Twoje źródło wiedzy o Turbo Pascal u. Turbo Pascal dla każdego!  »  Dwie części naszego kursu - "And :: or" - "Pętle (repeat, while, for)".
 »  Działy - "Dodatkowe" - "Kody źródłowe".
 »  Nareszcie ruszyło nasze Forum! Jeśli masz jakiś problem zapytaj na nim!
 »  Dział "Dla zaawansowanych". Tutaj programiści, którzy poznali już podstawy programowania, uzupełnią swoją wiedzę.
 »  Już teraz w dziale Download możecie ściągnąć pełną wersję programu Borland International Inc. Turbo Pascal 7.0

Pascal jest jednym z najpopularniejszych języków programowania komputerów. Powstał on w 1971 roku, kiedy to Niklaus Wirth opublikował pierwszy artykuł o nim. Upowszechnienie Pascala nastąpiło po roku 1974, w którym Wirth, opierając sie na poprawionym artykule, wydał wraz z Kathleem Jensen pierwszy podręcznik tego języka (drugie, poprawione wydanie podręcznika ukazało się w 1976 roku, a trzecie w roku 1985). W zamierzeniu Wirtha język Pascal miał służyć przede wszystkim do nauki programowania strukturalnego, czyli określania dużych elementów poprzez elementy niższego rzędu, aż do końcowych elementów programowych realizujących określone funkcje. Wraz z rozwojem techniki mikrokomputerów pojawiły sie liczne wersje języka Pascal. Światowy prymat należy jednak do tak zwanego Turbo Pascala, wprowadzonego na rynek w 1983 roku przez amerykańską firmę Borland International Inc.Stałe wzbogacanie i doskonalenie języka Turbo Pascal przez Borland doprowadziło do powstania pod koniec 1992 roku wersji 7.0 która pojawiła sie na rynku w postaci dwóch pakietów: Borland Pascal 7.0 i Turbo Pascal 7.0 .

Czym jest programowanie

"Gdy napiszesz, co komputer ma zrobić, będzie to nazywać się programowaniem. Najwspanialszy jest w tym wszystkim fakt, że można samemu określać zadania, które mają być wykonane. Po uruchomieniu programu komputer wykona wszystko to, czego od niego oczekujesz. Oczywiście nie oznacza to, że posprząta Twój pokój i przyniesie Ci do łóżka filiżankę kakao. Jednak z chwilą, gdy nauczysz się programować, zdobędziesz pełnię władzy nad swoim komputerem.

Niestety często właśnie podczas programowania zdarza się, że komputer nie chce zrobić czegoś, co chcielibyśmy aby zrobił. Najczęściej dzieje się tak wskutek błędu w programie. Jednak przyczyna może także znajdować się gdzie indziej – w komputerze albo w systemie operacyjnym. Głównym problemem w przypadku wystąpienia błędów jest to, że potrafią się one bardzo dobrze maskować i szukanie ich przyprawiło o ból głowy już niejednego programistę.

Jeśli mimo to nadal masz ochotę zająć się programowaniem, przed rozpoczęciem nauki potrzebne Ci będzie jeszcze odpowiednie środowisko programowe."

Co to jest środowisko programowe

"Aby powstał program, należy wcześniej go napisa, podobnie jak redagując list lub opowiadanie. Korzystamy przy tym z programu służącego do zapisywania tekstu, nazywanego edytorem tekstu. W przypadku programowania program taki może być bardzo prosty, gdyż tworzony w nim dokument nie będzie wymagać szczególnego rodzaju czcionki czy wyjątkowego sposobu prezentacji.

Po wpisaniu programu do komputera nie będzie on jeszcze w stanie przeczytać ani wykonać zawartych w nim poleceń. Program ten należy najpierw przetłumaczyć w taki sposób, aby komputer zrozumiał, czego od niego oczekujesz. Komputer używa bowiem całkiem innego języka niż Ty. W tym celu potrzebny jest tłumacz, który tłumaczy to w taki sposób, aby Twój język był zrozumiały dla komputera. Program, który pełni rolę tłumacza, to kompilator.

Przed oddaniem do użytku programy muszą być wielokrotnie edytowane, udoskonalane, testowane i stale rozwijane. Jest to możliwe dzięki wielu programom pomocniczym, które tworzą spójny system zwany środowiskiem programowym. "

Popularne języki programowania

"Niestety nie możemy programować dokłanie w sposób, w jakim mówimy. Język programowania musi być zbudowany tak, aby mogła się nim posługiwać możliwie duża grupa ludzi pochodzących z różnych krajów.

Ze względu na to, że na całym świecie wielu ludzi zna przynajmniej podstawy języka angielskiego, niemal każdy język programowania składa się ze słów angielskich. Wprawdzie podejmowane są próby programowania, np. w języku niemieckim, jednak najczęściej brzmienie nowych słów jest tak sztuczne, że każdy chętnie powraca do zwrotów angielskich."

Dzięki naszemu kursowi szybko nauczysz się programować w Turbo Pascal u!

  » W pierwszym wierszu znajduje się nazwa Twojego programu (1). Każdy program rozpoczyna się od słowa PROGRAM, a za nim umieszczona jest nazwa programu.

UWAGA!
  Nazwa programu musi składać się przynajmniej z jednego znaku! Jeżeli nazwa zawiera kilka słów nie można oddzielać ich spacją! Cyfra nie może znajdować się na początku nazwy.

  » Słowo VAR (2) to skrót od angilskiego słowa variable, czyli zmienna. Za tym słowem będziesz deklarował swoje zmienne. Dopiero wtedy w pamięci operacyjnej Twojego komputera nastąpi wydzielenie odpowiedniej ilości miejsca, dla danej zmiennej.

  » Właściwy program rozpocyna się dopiero po słowie BEGIN (3).

  » END. (4) analogicznie oznacza koniec programu. Kropka na końcu jest bardzo ważna, ponieważ ostatecznie zamyka cały program. Instrukcje napisane za tym słowem nie będą już uwzględniane przez kompilator.

Wskazówka
  Nie ważne, czy przy pisaniu programu stosujesz małe lub wielkie litery. Przykład:

program xxxxxxxxx_yyyy154864;
var
begin
end.

PROGRAM writeln_and_readln;

BEGIN
  writeln ('Witam Cię!') //1
  readln; //2
END.


  » Instrukcja write (1) wyświetla dowolny ciąg znaków na ekranie monitora. Tekst, który chcemy wyświetlić powinien znajdować się w nawiasach oraz cudzysłowiach pojedyńczych za słowem write.

Wskazówka
  Instrukcja write wypisuje coś na ekranie i pozostaje w tym samym wersie.
Writeln (WriteLine) po wypisaniu dowolnego ciągu znaków rozpoczyna nowy wers.

  » Readln (2) wczytuje z klawiatury dowolny ciąg znaków, aby zakończyć wprowadzanie znaków należy nacisnąć ENTER. W następnym dziale tego kursu dowiesz się, co zrobić, aby komputer zapisał te litery bądź cyfry w pamięci operacyjnej komputera.

Wskazówka
  Instrukcja readln często będzie pojawiała się w programach przed słowem end. Ponieważ nie pozwala ona komputerowi zakończyć programu bez naszej wiedzy. Zawsze, aby zakończyć będziemy musieli wcisnąć przycisk ENTER. Aby lepiej to zrozumieć skopiuj poniższy przykład, wklej go w programie i spróbuj go uruchomić. Tekst tylko mignie Ci przed oczami. Program wykonał swoje zadanie (wyświetlenie tekstu) i mógł zakończyć swoją pracę.

program witaj2;
var
begin
  writeln ('W I T A M ! ! !');
end.

PROGRAM imie;

VAR
  imie: string; //1
BEGIN
  writeln ('Witaj! Jak masz na imię?');
  readln (imie); //2
  writeln ('Miło Cię poznać ',imie); //3
  readln;
END.


  » Aby komputer mógł zapisać, a później wyświetlić daną zmienną musimy ją najpierw zadeklarować po słowie VAR (1). Dopiero wtedy przydzieli on określoną liczbę miejsca w pamięci operacyjnej komputera.

  » Typ zmiennej String (1) zapisuje w pamięci dowolny ciąg znaków, który później może wyświetlić na ekranie monitora.

  » Instrukcja readln (imie); (2) wczytuje ciąg znaków z klawiatury, zapisując je w zmiennej "imie".

  » W chwili, gdy program będzie musiał wyświetlić tekst na ekranie (3) odwoła się do okreslonego miejsca w pamięci.

Najpopularniejsze typy zmiennych

  » Byte   0..255
  » Real   ??????????
  » Shortint   -128 ..127
  » Longint   -2 147 483 648 ..2 147 483 647
  » Integer   -32768 ..32767
  » Word   0 ..65 535
  » Char   Pojedyńczy znak
  » String   Ciąg znaków (max: 255)

Wskazówka
  Nie każda zmienna może wykonać dane zadanie np. nie możemy wykonać działań matematycznych na zmiennej string.

PROGRAM wiek;

VAR
  latka: integer; //1
BEGIN
  writeln ('Witaj! Ile masz lat?');
  readln (latka);
  writeln ('No to zostało ci jeszcze ',100-latka, ' lat do setki'); //2
  readln;
END.


  » Do typu Integer (1) zaliczamy tylko liczby całkowite (bez ułamków dziesiętnych), a przeciez do podania wieku nie są nam potrzebne ułamki.

  » Program nie wyświetla wartości zmiennej "latka", ale wykonuje również nieskomplikowane działanie(2). Od 100 odejmuje wartość, którą wprowadził użytkownik (zmienna "latka"). Aby wyświetlić samą zmienną, wystarczyłoby wpisać: "writeln ('A wiec masz ',latka,' lat');".

Jedno zadanie :D

  » Napisz program, który oprócz pytania o imie zapyta Cię także o cztery inne rzeczy (data urodzenia, adres zamieszkania, nazwisko itp.) i wyświetli wszystko na ekranie.

PROGRAM samopoczucie;

VAR
  odpowiedz: string;
BEGIN
  writeln ('Jak się czujesz?');
  readln (odpowiedz);
    if odpowiedz = 'dobrze' then //1
      writeln ('Cieszę się!'); //2
    if odpowiedz = 'zle' then
      writeln ('Przykro mi!')
    else
      writeln ('Nie rozumiem');
  readln;
END.


  » Instrukcja if - then - else sprawdza co zostało wpisane w zmiennej (1), zależnie od tego wykonuje odpowiedni blok instrukcji (2). Jeżeli żaden z warunków nie może być spełniony (3) wykonuje inny blok instrukcji.



  » Niestety gdy uruchomimy program nawet jesli spełnisz pierwszy warunek, pojawi się tekst nie spełnionych warunków (else). Dzieje się tak dlatego, że else zawsze jest związane z konstrukcją if - then, która bezpośrednio ją wyprzedza.

  » Musimy więc zastosować przeplatanie:

PROGRAM samopoczucie;

VAR
  odpowiedz: string;
BEGIN
  writeln ('Jak się czujesz?');
  readln (odpowiedz);
    if odpowiedz = 'dobrze' then //1
      writeln ('Cieszę się!')
    else if odpowiedz = 'zle' then //2
      writeln ('Przykro mi!')
    else //3
      writeln ('Nie rozumiem');
  readln;
END.


  » Najpierw program sprawdza, czy odpowiedź brzmi "dobrze" (if - then) (1);

  » Jeżeli nie (else) sprawdza drugi warunek (if - then) (2)

  » We wszystkich innych przypadkach (else) wyświetla zdanie "nie rozumiem".

Wskazówka
  If - then - else to jedna konstrukcja, więc przed słowem Else nie stawiamy średnika.

PROGRAM matma;

VAR
  liczba1, liczba2, wynik: real;    operator: char;
BEGIN
  write ('Pierwsza liczba: ');
  readln (liczba1);
  write ('Operator (/,*,-,+): ');
  readln (operator);
  write ('Druga liczba: ');
  readln (liczba2);
    case operator of //1
      '+': wynik := liczba1 + liczba2; //2
      '-': wynik := liczba1 - liczba2;
      '*': wynik := liczba1 * liczba2;
      '/': wynik := liczba1 / liczba2;
    else //3
      writeln ('Podałeś zły znak!');
    end; //4
  writeln ('Wynik: ',wynik:4:2); //5
  readln;
END.


  » Struktura case-of (1) działa podobnie jak if - then, ale jest bardziej przejżystrza i nie musimy stosować przeplatania. Niestyty nie możemy w niej wykorzystywać zmienej string.

  » Instrukcja sprawdza, czy zmienna ("operator") przyjęła jedną z określonych wartości, jeśli tak wykonuje odpowiedni blok instrukcji. Każda wartość (2) jest oddzielona dwukropkiem od wyznaczonego jej bloku instrukcji. W przeciwnym wypadku (3) wykonuje inne polecenie. Ta instrukcja dotyczy wszystkich wypisanych wcześniej warunków, uaktywnia się dopiero wtedy, gdy żaden z nich nie został spełniony.

  » Całą strukturę kończy end z średnikiem (4).

  » Instrukcja writeln wraz z zmienną (5) pokazuje wynik działania. Cyfry za zmienną pokazują programowi w jakim formacie ma byc wyświetlny wynik. Można to przetłumaczyć w następujący sposób:
"Pokaż wynik tak, aby składał się łącznie z czterech znaków, z czego dwa znaki mają być po przecinku."

  » Wynik działania musi zostać zapisany, aby komputer mógł go później wyświetlić. Jest to moźliwe dzięki przypisywaniu (2). Operator przypisywania tworzy ":=" (brak odstępu pomiędzy nimi).

  » wynik := liczba1 * liczba 2;
Po lewej stronie znajduje się zmienna, której program przypisze wartość, jaką otrzyma w wyniku obliczenia.
Po prawej wzór matematyczny.

Wskazówka
  W instrukcji case-of można zasosować - od jakiej wartości do jakiej - program ma wykonać daną instrukcję (np. od liczby 20 do 50). Instrukcja wygląda w następujący sposób:

case wiek of
  0..12: writeln ('Jeszcze jesteś dzieckiem!');
  13..17: writeln ('Ah.. Ta dzisiejsza młodzież!');
  18..40: writeln ('Jesteś w sile wieku!');
  41..80: writeln ('Już nie te lata!');
  81..100: writeln ('Jak na te lata dobrze się trzymasz!');
end;

Podstawowe działania matematyczne

  » +   - dodawanie - np. wynik := a+b;
  » -   - odejmowanie - np. wynik := a-b;
  » *   - mnożenie - np. wynik := a*b;
  » /   - dzielenie - np. wynik := a/b;
  » div   - dzielenie całkowite - np. wynik := a div b;
  » mod   - reszta z dzielenia - np. wynik := a mod b;
  » sqrt   - pierwiastek 2 stopnia - np. sqrt(a);
  » sin   - sinus - np. sin(a);
  » cos   - cosinus - np. cos(a);
  » sqr   - kwadrat liczby - np. sqr(a);
  » abs   - wartość bezwzględna - np. abs(a);
PROGRAM waga1;

VAR
  waga: real;
BEGIN
  writeln ('Podaj wagę swojego ciała (kg):');
  readln (waga);
    if (waga > 1) and (waga <15) then //1
      writeln ('Jesteś lekki(a) jak piórko!'); //2
    if (waga >= 15) and (waga < 30) then
      writeln ('Możesz jeść desery bez zachamowań...');
    if (waga >= 30) and (waga < 70) then
      writeln ('Waga w normie :-)');
    if (waga >= 70) and (waga < 100) then
      writeln ('Pilnuj co ile ma kalorii...');
    if (waga >= 100) and (waga < 150) then
      writeln ('Nie czas na diete?');
    if (waga >= 150) and (waga < 300) then
      writeln ('Musisz prędko schudnąć');
    if (waga <= 0) or (waga >= 300) then //3
      writeln ('Błąd przy wpisywaniu danych...'); //4
  readln;
END.


  » Słowo And w pierwszej instrukcji if-then (1) pilnuje, aby blok instrukcji (2) był wykonany dopiero wtedy, gdy oba warunki zostaną spełnione. W naszym przypadku zmienna "waga" musi być większa od 1 oraz mniejsza od 15.

  » Słowo Or (3) oznacza, że tylko jeden z warunków musi być spełniony, aby program mógł wykonać blok instrukcji (4). W naszym programie jesli wpiszesz liczbę mniejszą lub równą 0, albo większą od 300 wtedy zostanie wyswietlony komunikat.

  » Nawiasy (1) dają do zrozumienia Turbo Pascal'owi, gdzie kończy się jeden warunek, a zaczyna następny.

Wskazówka
  Znaki np. >, <, =..., które występują w różnych warunkach to operatory porównawcze.

Operatory porównawcze

  » =   - równa się
  » <   - mniejszy od...
  » >   - większy od...
  » <>   - różny od...
  » >=   - większy lub równy
  » <=   - mniejszy lub równy

Jedno zadanie

  » Napisz program wiek, ktory bedzie prosił użytkownika o podanie wieku, a następnie korzystając z operatorów porównawczych wyświetlał odpowiednie komunikaty.

Jedno zadanie

  » Rozwiń swój program o conajmniej dwa przeplatania. Dodając do niego więcej warunków.

PROGRAM petla1;

VAR
  i: integer;
BEGIN
  repeat //1
    write ('Wpisz liczbę 100: ');
    readln (i);
  until i = 100; //2
  readln;
END.


  » Pętla (1) "zmusza" komputer do powtarzania wszystkiego co znajduje się pomiędzy słowami repeat - until aż do tej pory, gdy zostanie spełniony warunek (2).

  » Struktura kontroli (inna nazwa pętli) podobnie jak if - then ma za zadanie kontrolowanie czegoś. W naszym przypadku sprawdza, czy wartość zmiennej "i" wynosi 100 i zdecydować, czy powtórzyć instrukcję czy zakończyć pętle.

Wskazówka
  Instrukcja "break;" powoduje, że program przerywa pętle, a "halt;" zamyka cały program.

Pętla While - do

PROGRAM petla2;

VAR
  i: integer;
BEGIN
  i := 1;
  while i <= 100 do //1
  begin //2
    write ('Wpisz liczbę większą od 100: ');
    readln (i);
  end; //3
  readln;
END.


  » W konstrukcji while - do (1) warunek znajduje się na początku, więc program wcale nie musi wykonywać bloku instrukcji, jeżeli warunek jest już spełniony.

  » Jeżeli w strukturze kontroli while - do blok instrukcji zawiera więcej niż jedno polecenie trzeba wyraźnie zaznaczyć, gdzie się zaczyna (2), a gdzie kończy (3). Jest to możliwe za pomocą begin - end;. Ta czynność niepotrzebna jest w pętli repeat - until, gdyż w niej wyraźnie zaznaczone jest, gdzie znajduje się początek (repeat), a gdzie koniec (until).

Różnice pomiędzy pętlami
  While - do: warunek znajduje się na początku pętli, a kiedy warunek jest spełniony program powtarza pętlę.
  Repeat - until: warunek znajduje się na końcu pętli, a kiedy warunek jest spełniony program kończy pętlę.

PROGRAM petla3;

VAR
  i: integer
BEGIN
  for i := 0 to 5 do //1
  begin
    writeln ('Do zakończenia programu pozostało: ',i); //2
    readln;
  end;
  readln;
END.


  » Działanie pętli możemy przetłumaczyć w następujący sposób:
"DLA zmiennej, której wartość zmienia się od początkowej do końcowej, komputer powinien POWTARZAĆ blok instrukcji."

  » Konstrukcja for - do (1) również powtarza określony blok instrukcji (2) do tego czasu aż wartość początkowa, którą w naszym przypadku jest 1, będzie równa wartości końcowej [5]. Dzięki tej pętli szczegółowo zaplanujesz ile razy dany blok instrukcji zostanie wykonany. Już na początku pętli (1) ustalasz od jakiej liczby komputer będzie odliczał [1] do jakiej [5]. Za każdym razem, gdy komputer wykona dany blok instrukcji wartość początkowa zwiększy się o 1 itd. Ta czynność będzie trwała tak długo aż wartość początkowa i końcowa będą sobie równe.

Wskazówka
  Jeżeli chcesz, aby komputer odliczał do tyłu (np. od 5 do 0) zmiast instrukcji "to" (1), wstaw "downto". A jeżeli do przodu (np. od 0 do 100) wstaw instrukcje "to".