Programming
C++
Turbo Pascal
Delphi
Ver. 1.0 Beta, Don't have a compiler? Now you can write simple scripts ONLINE! This is a basic version -does not include all the Pascal statements. Only to learn basics
Tworzenie podstawowych programów w Turbo Pascalu. WriteLn, ReadLn
Pierwsze programy w Turbo Pascal'u
Jak "myśli" komputerKomputer wykonuje zawsze dokładnie to co mu każesz. Nie myli się. Zaczyna w określonej kolejności -od linijki kodu, która jest u góry bloku programu, do następnej linii i następnej... Jeśli go nie zaprogramujesz inaczej, sam nie zmieni tej kolejności. Świadomość ta ułatwia wykrywanie błędów i analizowanie programów. Gdy coś programujesz, masz pewność, że wszystko będzie się działo w sposób uporządkowany. W tym samym czasie w Pascalu wykonuje się tylko jedno polecenie. EstetykaZanim zaczniesz programować postanów sobie zachowywać pewne normy estetyczne. Nie są one wymagane aby program działał poprawnie, ale naprawdę ułatwiają życie. Ułatwią pracę nie tylko nauczycielowi, czy innym osobom, które będą oglądały Twoją pracę, ale i Tobie. Pokażę Tobie przykład estetyki kodów z historii uczącego się programisty. Początki: procedure plot; begin tlo(nx,ny); if GetPixel(nx,ny)<>k then begin if sp=0 then begin punkt(nx,ny,k); Writeln(F,'punkt'); r:=r+15; Str(nx,t); Writeln(F,t); r:=r+Length(t); Str(ny,t); Writeln(F,t); r:=r+Length(t); Str(k,t); Writeln(F,t); r:=r+Length(t); end; end; if ((sp=1) and (roznice)) then begin linia(sx,sy,ex,ey,k); Writeln(F,'linia'); Str(sx,t); r:=r+17; Writeln(F,t); r:=r+Length(t); Str(sy,t); Writeln(F,t); r:=r+Length(t); Str(ex,t); Writeln(F,t); r:=r+Length(t); Str(ey,t); Writeln(F,t); r:=r+Length(t); Str(k,t); Writeln(F,t); r:=r+Length(t); end; status3; kursor(nx,ny); end; Kilka lat później: unit Doors; {**********************************************************} interface uses Errors, {OBSLUGA I KODY BLEDOW} Graph10E, {GRAFIKA W VESA, TRYB 10Eh} Standard, {STANDARDOWE POLECENIA} Fonts; {OBSLUGA CZCIONEK} {**********************************************************} const MaxEvents=15; {WSZYSTKICH ROZNYCH ZDARZEN} MINI_BUTTON_SIZE =10; {ROZMIAR PRZYCISKU NA OKNIE} MAX_OBJECTS =10; {**********************************************************} {NAZWY OBIEKTOW SYSTEMU SKKS DOORS} DOORS_FORM = 1; {OKNO, NA KTORYM USTAWIA SIE OBIEKTY} DOORS_BUTTON = 2; {PRZYCISK} DOORS_EDIT = 3; {POLE TEKSTOWE} DOORS_PANEL = 4; {PANEL NA KTORYM BEDA INNE OBIEKTY} DOORS_ICON = 5; DOORS_LABEL = 6; {NAPIS OBIEKTOWY} Ty nie musisz tracić kilku lat na wypracowanie u siebie własnego stylu programowania. Wystarczy, że od początku będziesz zachowywał estetyczny kod. Proponuję wcinać go po każdym rozpoczęciu bloku instrukcji i powracać w lewo po jego zakończeniu. Jeśli masz bałagan w kodzie zajrzyj do skrótów klawiszowych opisanych we wstępie i uporządkuj swoje źródła. Dobrze jest pisać słowa kluczowe, takie jak: unit, begin, end, const małymi literami. Dlaczego? Prawdopodobnie zetkniesz się w przyszłości z Delphi. Delphi sam dopisuje znaczną część kodu. Gdy tworzysz w Delphi blok instrukcji, on tworzy kod, gdzie słowa kluczowe są napisane małymi literami. Żeby nie bałaganić w jego kodzie pisanego małymi literami swoim -dużymi, do którego się przyzwyczaisz -pisz słowa kluczowe małymi literami. Warto czasem stosować komentarze, czyli swoje opisy, co robi dany kod. W praktyce nie ma czasu na pisanie komentarzy przy każdej instrukcji dlatego nie wpadaj w skrajności. Opisuj to co naprawdę potrzebne i ułatwi Tobie pracę, a nie zbierze dużo czasu. Napisy na ekranie, WriteLnŻeby napisać prosty program trzeba wiedzieć jak wygląda jego ogólna budowa w Pascalu. Pisanie kodu zaczynamy od słowa begin, a kończymy słowem end z kropką. program nazwa; {nagłówek programu – nie jest konieczny} begin {cały kod źródłowy kończymy słowem } end. Jeśli chcesz nazwać swój program warto napisać słowo program a za nim jakąś nazwę. Niestety nazwa nie może zawierać polskich znaków. Słowo program nie jest konieczne. Niektórzy nauczyciele mogą wymagać wpisywania słowa program dla odróżnienia od innej wersji kodu źródłowego -modułu: unit. Przypuśćmy, że chcesz napisać coś na ekranie, wystarczy wpisać: begin WriteLn(‘napis na ekranie’); end. Aby uruchomić program wciśnij CTRL+F9 lub wybierz z menu górnego polecenia Run->Run. Prawdopodobnie obraz tylko raz mignie, bo program się zakończył. Aby zrobić podgląd tego co było na ekranie wciśnij ALT+F5. Teraz zobaczysz: napis na ekranie Do programu została użyta instrukcja WriteLn, która wypisuje tekst. Tekst musi się znaleźć między apostrofami. WriteLn jest odpowiedzialne za przesłanie danych na tzw. Standardowe wyjście. Standardowo wyjściem tym jest ekran. Użytkownik w dosie może przy uruchamianiu przekierować standardowe wyjście np. na jakiś plik lub na drukarkę, a wtedy dane z programu trafiają do odpowiedniego miejsca -mogą zostać zapisane do pliku, być wczytane przez inny program lub zostać wydrukowane. Można też bardziej urozmaicić program, napisać kilka linii kodu begin WriteLn(‘WITAMY W PIERWSZYM PROGRAMIE’); WriteLn(‘NAPISANYM W PASCALU 7.0’); WriteLn(‘------------’); WriteLn; WriteLn('koniec.’); end. Uruchomienie CTRL+F9 Podgląd (Alt+F5) WITAMY W PIERWSZYM PROGRAMIE NAPISANYM W PASCALU 7.0 ------------ koniec. Można też użyć Write bez Ln. Ln oznacza, że po napisaniu tekstu komputer przejdzie do kolejnej linii, więc begin Write(‘Ten napis będzie ’); WriteLn(‘w pierwszej linii’); WriteLn(‘a ten w następnej’); end. Podgląd (Alt+F5) Ten napis będzie w pierwszej linii a ten w następnej Operacje matematyczneZa pomocą WriteLn można wyświetlać rozwiązania operacji matematycznych, nawet tych skomplikowanych. Przykład: Proste dodawanie begin WriteLn(‘2 + 2 = ’, 2 + 2); end. Podgląd (Alt+F5) 2 + 2 = 4 Proste mnożenie begin WriteLn(‘2 * 2 = ’, 2 * 2); end. Podgląd (Alt+F5) 2 * 2 = 4 Z nawiasami begin WriteLn(‘2 * (2 – 3) = ’, 2 * (2 – 3)); end. Podgląd (Alt+F5) 2 * (2 – 3) = -2 Dzielić można na dwa sposoby. Dzielenie całkowite „DIV” z resztą „MOD” oraz zwykłe dzielenie znakiem „/” begin WriteLn(‘25 div 4 = ’, 25 div 4); end. Podgląd (Alt+F5) 25 div 4 = 6 A zwykłe, ułamkowe begin WriteLn(‘25 / 4 = ’, 25 / 4); end. Da wynik: 25 / 4 = 6.2500000000E+00 Inne podstawowe operacje matematyczne: Formatowanie liczbMało kto chciałby otrzymywać wyniki z dzielenia z wieloma miejscami po przecinku. Do formatowania liczb służą pewne operatory. Przykład: begin WriteLn(‘25 / 4 = ’, 25 / 4 : 4 : 3); end. Da wynik: 25 / 4 = 6.250 Dlaczego? „: 4” oznacza, że poświęcamy miejsce na 4 znaki cyfr, „: 3” oznacza, że 3 z nich będą miejscami po przecinku. Gdy damy :10 : 3, znaczy to, że aż 10 znaków będzie poświęconych na wyświetlenie tej liczby. Jeśli liczba cyfr jest krótsza liczba zostanie wyrównana do prawej. Kompilacja, tworzenie exeŻeby użytkownicy komputera mogli bez edytora Pascala używać Twojego programu musisz go skompilować, czyli zamienić kod źródłowy na program wykonywalny. Trzeba zbudować plik .exe. Do budowy exe służy część menu Compile. Znajduje się tu ważny parametr Destination. Oznacza on miejsce docelowe kompilacji. Inaczej mówiąc gdy testujesz program, pascal nie musi za każdym razem tworzyć na dysku pliku exe. Standardowo Destination jest ustawione na memory. Twój program jest więc kompilowany i uruchamiany z pamięci RAM. Jeśli chcesz zbudować plik .exe na dysku twardym zmień Destination na Disk. Teraz, gdy potrzebujesz, skompiluj wszystkie moduły (Build), potem uruchom program. Wystarczy. Program zostanie utworzony w lokalizacji podanej w 'Options->Directories->EXE & TPU'. Jeśli nie ustawiłeś tych ścieżek, polecam zajrzeć do pierwszego rozdziału tego kursu. Zmienne, ReadLnZmienne są pewnym obszarem pamięci do którego możemy wstawiać różne dane. W zmiennej możemy przechowywać imię lub nazwisko jakiejś osoby, która aktualnie obsługuje nasz program, jej wiek, adres zamieszkania -cokolwiek wymyślimy. Dzięki temu możemy się do użytkownika zwracać po imieniu kiedy tylko nam się podoba. Zawartość zmiennej można wyświetlać metodą WriteLn. Niestety żebyśmy mieli dostęp do jakiejś zmiennej musimy poinformować o tym komputer. Służy do tego instrukcja (słowo kluczowe) VAR (Variables). Zmienne można deklarować tylko przed częścią wykonywalną programu. Każda zmienna musi mieć swoją nazwę. Możesz wymyślić co Ci się tylko podoba, najważniejsze żeby nie zawierała w sobie spacji ani polskich znaków, itp. Zmienna powinna się także kojarzyć z wartością, którą zawiera. Np. jeśli przechowuje imię dobrze jest ją nazwać Imie, jeśli nazwisko -Nazwisko, itp… Programiści dość często przed nazwą zmiennej dodają małą literkę, która oznacza jej typ. Jeśli byłaby to zmienna tekstowa nazwisko (typ: string) -nazwaliby ją sNazwisko lub s_nazwisko. Zmiennymi mogą być liczby, napisy, nawet miejsce w pamięci gdzie są rysunki, dźwięki itp. My zajmiemy się napisami i liczbami. Każda zmienna ma swoje przeznaczenie. W zależności od przeznaczenia komputer wie, ile pamięci jej przydzielić i co z nią można zrobić. Musimy więc podczas deklaracji zmiennej podać jej typ (np. czy liczba czy napis). Żeby zdać jakikolwiek egzamin, napisać program bezbłędnie, musisz zapamiętać podstawowe typy zmiennych. Najczęściej stosowane to INTEGER (liczba) oraz STRING (łańcuch znaków –inaczej napis). Każdy typ zmiennej ma swoje właściwości, np. zakres jaki obejmuje liczba lub ilość znaków w napisie. Tabelka będzie przedstawiała czym dokładnie się różnią.
Pascal ma pewne ograniczenia. Gdy mamy zmienną typu string, która przechowuje jakąś liczbę np. wpisaną przez użytkownika, nie możemy do niej dodawać innej liczby. Komputer nie będzie wiedział o co chodzi. Tylko do zmiennej typu integer, można dodać inny integer, do zmiennej typu string nie da się dodać zmiennej typu integer (można natomiast przekonwertować string na integer i odwrotnie -służą do tego polecenia val i str). Dla Pascala próba dodania zmiennej Integer do string to tak jakbyś w matematyce na sprawdzianie pisał: "dwa razy dwa równa się cztery". Nawet gdyby wynik był dobry, nauczycielka zwróciła by Ci uwagę, że nie stosujesz matematycznych opisów. Pascal wyświetli błąd: "Error 26: Type mismatch". Przykład będzie demonstrował w jaki sposób zadeklarować zmienną typu tekstowego, wczytać imię do zmiennej a następnie ją wyświetlić. var imie: string; begin WriteLn(‘Podaj swoje imie: ’); ReadLn(imie); WriteLn(‘Nazywasz sie ’,imie); end. Łatwo zauważyć, że do wczytywania danych sluży polecenie ReadLn. Aby wypisać jakiś napis, a po nim zmienną można zamknąć apostrof i po przecinku wpisać nazwę zmiennej. Warto przypomnieć, że istnieją podobne instrukcje do WriteLn i ReadLn. Są nimi Write i Read, które również wypisują coś na ekranie, różnica polega na tym że WriteLn i ReadLn przenosi kursor piszący do następnej lini, a bez Ln nie. Przypuśmy, że chcesz podstawić do zmiennej konkretną liczbę, lub wartość innej zmiennej, możesz to zrobić tak: var a, b: integer; begin a:= 10; b:= 5; {Podstawienie liczby 5 do zmiennej b} a:= b; {Podstawienie wartości b do zmiennej a} end. {Wyniki: a=5, b=5} Poeksperymentuj trochę, spróbuj wczytać imię i nazwisko, może wiek i wyświetlić wszystko. Nie zapomnij o ALT+F5 aby zobaczyć wynik. Sposobem na uniknięcie wciskania Alt+F5 jest np. wpisanie na końcu ReadLn; Teraz program będzie czekał na wciśnięcie klawisza ENTER. Co można zrobić ze zmiennymi? var a, b: integer; s : string; begin a := 1; b := a; s := 'Ala '; {wolno podstawiać} a : = a + 1; {wolno dodawać do samej siebie} s := s + 'ma kota'; {napisy można łączyć} {NIE WOLNO s := s + a;} {NIE WOLNO TEŻ s:='1'; s := s + 2;} {wolno eksperymentować :) } end. Przykłady eksperymentów: Prosty kalkulator mnożący var a, b: integer; begin WriteLn(‘Program mnożący a*b’); Write(‘Podaj liczbę a: ’); ReadLn(a); Write(‘Podaj liczbę b: ’); ReadLn(b); WriteLn(a, ‘ * ’, b, ' = ', a * b); ReadLn; end. Wynik działania: Program mnożący a*b Podaj liczbę a: 3 Podaj liczbę b: 5 3 * 5 = 15 Stałe (const)Stałe to komórki pamięci, które mają takie same wartości przez cały czas działania programu. Najczęściej programiści nadają im nazwy dużymi literami -w odróżnieniu od zmiennych. Stałe są wygodne przy podstawianiu pewnych wartości, któe będą miały wpływ na działanie całego programu. Definiuje się je na początku kodu programu. Stalą jest np. liczba π – stała nazywa się PI, stałe możesz tworzyć samemu, może to być prędkość światła c, stała grawitacji g, itd. const STALA_G = 9.81; var t, s : Real; begin WriteLn(‘Ile czasu spadało na ziemię ciało?’); ReadLn(t); s := STALA_G * sqr(t) / 2; WriteLn('Ciało pokonało drogę ',s : 10 : 3, 'm'); ReadLn; end. Program oblicza drogę spadania dowolnego ciała w podanym przez użytkownika czasie. Gdyby programista zmienił stałą, może np. obliczać drogę spadania ciała na Księżycu. Zmiana stałej w nagłówku kodu źródłowego jest znacznie łatwiejsza niż poszukiwanie i wiele zmian konkretnych liczb wewnątrz kodu. |
ON-LINE scripts!