Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty, bo słowa ułatwiają rozumienie kodu. Przeczytaj: język niskiego poziomu, kod maszynowy. Etapy powstawania programu: 1. Implementacja - tworzenie kodu źródłowego (w TP rozszerzenie pas) 2. Kompilacja - tłumaczenie kodu programu na kod maszynowy, kompilator - program służący do kompilacji 3. Konsolidacja (linkowanie) - łączenie z bibliotekami, Program: konsolidator = linker 4. Powstanie kodu wynikowego - czyli kodu maszynowego (rozumianego przez maszynę). Typy błędów: W wyniku kompilacji zostają wskazane błędy składniowe (błędy kompilacji) np. brak średnika itp. Inny typ błędów to błędy wykonywania (błędy logiczne) np. źle wpisany przez programistę wzór na pole trójkąta. W wyszukiwaniu tych błędów przydaje się program - debugger (odpluskiwacz), który śledzi kod programu krok po kroku. Zmienna - jest to pewne miejsce w pamięci komputera, któremu możemy przypisywać różne wartości. Deklaracja zmiennej to rezerwacja pamięci dla niej. Polega na podaniu nazwy zmiennej i jej typu. np: var a:integer; {a-nazwa zminnej; integer-typ zmiennej; {w TP zm deklarujemy po słowie kluczowym var z ang. variable - zmienna} Typy zmiennych: 1. boolean - 1 bit - 0, 1 - wartość logiczna 2. char - 4 bity - 0-128 - znak w ASCII 3. byte - 1 bajt- 0-255 - liczba naturalna 4. word - 2 bajty 0-65535 - liczby naturalne 5. integer - 2 bajty -32768-32767 - liczby całkowite 6. real - 4 bajty - liczby rzeczywiste 7. string - 256 bajtów - napisy Są jeszcze inne, typu longint, excended, ale są rzadziej stosowane.
Do zmiennej przypisujemy wartość przez wykorzystanie operatora przypisania ":=". Oto instukcja przypisania: a:=7; {oczywiście po wcześniejszej deklaracji a:integer} znak:='b'; {oczywiście po wcześniejszej deklaracji znak:char} imie:='ala'; {oczywiście po wcześniejszej deklaracji imie:string} Standardowe funkcje wyjścia i wejścia: funkcja wyjścia - przykłady zastosowania: writeln('ala ma kota'); writeln('wartosc zmiennej a wynosi ', a, ' i juz '); funkcja wejścia readln(a); readln(a,b,c); {jednocze wczytanie kilku zmiennych} Operatory arytmetyczne: +, -, *, /, div, mod relacyjne: <, >, <=, >=, =, <> (różne) logiczne: or, and, not, Priorytety operatorów w języku pascal: logiczne, arytmetyczne, relacyjne Instrukcja warunkowa if warunek then instrukcja1 else instrukcja2; używanie else nie jest konieczne np: if wiek<18 then writeln('jestes pewnie jeszcze uczniem'); gdy po if musimy wykonac wiele instrukcji używamy bloku begin..end; np: if bok>0 then begin pole:=bok*bok; {dwie instrukcje, wymagają begin..end} writeln('pole wynosi ', pole); end else writeln('nie ma figury o ujemnym boku'); {jedna instrucja, nie wymaga begin..end} Zagnieżdżanie instrukcji warunkowej - gdy program "wymaga więcej niż dwóch dróg" np:
if a=0 then writeln('liczba jest zerem') else if a>0 then writeln('liczba jest dodatnia') else writeln('liczba jest ujemna'); Częste zagadnienia przy instrukcji warunkowej: 1. Sprawdź, czy liczba a jest parzysta if a mod 2 = 0 then writeln('liczba jest parzysta') else writeln('liczba nie jest parzysta'); 2. Sprawdź, czy liczba a należy do przedziału [5,10] if (a >=5) and (a<=10) then writeln('należny do przedziału'); UWAGA: W tym przykładzie pojawiły się nawiasy, bo and ma wyższy priorytet od operatorów relacyjnych <=, >=. 3. Sprawdź, czy liczba jest jednocyfrowa dodatnia if (a>0) and (a<10) then writeln('liczba jest jednocyfrowa dodatnia'); 4. Sprawdź, czy liczba jest z przedniału (-niesk,0) suma (10,niesk) if (a<0) or (a>10) then writeln('liczba jest z zadanego przedziału'); UWAGA: tutaj koniecznie or!!! ALGORYTMIKA Algorytm - skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do rozwiązania problemu algorytmicznego. Cechy algorytmu: Poprawny - dla każdego zestawu danych, po wykonaniu skończonej liczby czynności, prowadzi do poprawnych wyników, Jednoznaczny - w każdym przypadku jego zastosowania, dla tych samych danych uzyskamy ten sam wynik, Szczegółowy - aby wykonawca algorytmu rozumiał opisane czynności i potrafił je wykonać,
Uniwersalny, aby posłużył do rozwiązywania pewnej grupy zadań, a nie tylko jednego zadania (np. algorytm jest przepisem na rozwiązanie równania postaci ax+b=0 dla dowolnych współczynników a i b, a nie - jednego konkretnego równania, np. 2x+3=0. Sposoby przedstawienia algorytmu: Zapis w postaci ciągu kroków ( języka potocznego) Zapis w postaci graficznej - schematy blokowe Zapis w języku symbolicznym Zapis w języku programowania Skrzynka graniczna Początek algorytmu lub koniec Skrzynka operacyjna Skrzynka wejścia / wyjścia (I/O) Skrzynka warunkowa (deczyzjna) Wykonywanie różnych działań, np. sumowania Wprowadzanie (czytanie) danych lub wyprowadzanie (drukowanie, pisanie) wyników Sprawdzanie warunku, np. czy N > 0 Przed zbudowaniem schematu blokowego należy stworzyć tzw. specyfikację problemu algorytmicznego, podajemy w niej dane wejściowe, wyjściowe oraz zmienne pomocnicze wraz z ich typami (czasem też z opisem zmiennych) Przykład: Specyfikacja problemu algorytmicznego: Dane wejściowe: a, b, c - liczby całkowite (składniki sumy) Dane wyjściowe: Suma - liczba całkowita (suma liczb a, b, c) Schemat blokowy:
Przykładowa lista kroków: Krok 1.START ALGORYTMU Krok 2.WPROWADŹ a, b, c Krok 3.OBLICZ Suma = A+B+C Krok 4.WYPROWADŹ Suma Krok 5.KONIEC ALGORYTMU. Zadanie: 1. Przesłaną notatkę wydrukuj w formacie swojego zeszytu i wklej ją 2. Rozwiąż wszystkie zadania z załączonej listy zadań. Dla każdego zadania w zeszycie stwórz specyfikację oraz schemat blokowy lub listę kroków, tak by w połowie zadań była lista, a w połowie schemat.