Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 1: Wprowadzenie do programowania © Jan Kaczmarek
Co to jest programowanie Co to jest programowanie ? Programowanie to zapisywanie algorytmów w postaci programów w językach zrozumiałych przez komputer (czyli językach programowania), a właściwie zrozumiałych przez specjalne programy zwane kompilatorami lub interpreterami (interpretatorami), a ogólniej translatorami, które mogą je (te programy) przekształcić (przetłumaczyć) do języka zwanego językiem maszynowym i znanego przez komputer, w celu zmuszenia komputera do wykonania pewnych czynności, np. obliczenia pola powierzchni, obliczenia podatku, narysowania na ekranie koła itp.
Języki służące do formułowania algorytmów przeznaczonych do wykonania przez komputery nazywamy językami programowania. Algorytm zapisany w takim języku nazywamy programem.
Programując możemy stosować: 1 Programując możemy stosować: 1. języki niskiego poziomu, zorientowane maszynowo: - język wewnętrzny komputera (język maszynowy), który składa się z rozkazów procesora - język asemblera, w którym kody binarne rozkazów i adresy binarne komórek pamięci zastępuje się adresami i kodami symbolicznymi. 2. języki wysokiego poziomu, zorientowane problemowo Uniwersalne, operują poleceniami ukierunkowanymi na potrzeby dziedziny, której mają służyć, a nie dobranymi, jak w przypadku asemblera, według specyfiki rozkazów procesora komputera. Programowanie w tych językach zwalnia programistę od myślenia o szczegółach sprzętowych.
Komputer bez dodatkowego oprogramowania umie jedynie wykonywać programy w języku maszynowym. Wszystkie inne programy wymagają przetłumaczenia na ten język. Służą do tego specjalne programy zwane translatorami. Proces tłumaczenia programu z jednego języka na inny nazywa się translacją. Danymi dla tego rodzaju programów jest program źródłowy napisany w języku wysokiego poziomu, a wynikiem jest program w języku maszynowym. Dwa główne rodzaje translacji to:
Kompilacja – program zwany kompilatorem tłumaczy program na język wewnętrzny, poddając go ewentualnej optymalizacji. Po kompilacji następuje tzw. linkowanie, dołączające niezbędne biblioteki i inne elementy już skompilowane, by otrzymać wynik końcowy w postaci programu wykonywalnego z rozszerzeniem .COM lub .EXE. Kompilator operuje na całym tekście programu źródłowego i generuje tekst przekładu jako całość. Do wykonania programu w postaci wynikowej możemy przystąpić dopiero po zakończeniu procesu translacji. Interpretacja – interpretatory tłumaczą i wykonują każde polecenie osobno, przez co nie jest możliwa optymalizacja i nie uzyskuje się pełnego kodu wynikowego. Interpretator jest translatorem, który operuje na poszczególnych jednostkach programu źródłowego i generuje ich przekłady. Fragmenty programu wynikowego możemy wykonywać nie czekając na zakończenie translacji całości.
Co to jest algorytm ? W potocznym rozumieniu algorytm to metoda rozwiązywania jakiegoś problemu (zadania, wykonywania pewnych czynności), inaczej mówiąc, to nie dopuszczający wieloznacznej interpretacji formalny przepis (recepta) postępowania. Algorytm obrazuje metodę rozwiązywania danego problemu za pomocą skończonej liczby czynności, gdy rozwiązanie istnieje lub też metodę zatrzymującą postępowanie po skończonej liczbie czynności, gdy rozwiązanie nie istnieje.
Przykłady algorytmów - Przepisy kulinarne, np Przykłady algorytmów - Przepisy kulinarne, np. przepis gotowania makaronu - Różnego typu instrukcje obsługi i montażu, np. montaż pralki - Instrukcje przeprowadzania doświadczeń, np. doświadczeń chemicznych (jak otrzymać sól kuchenną z kwasu i zasady) - Obliczanie pola powierzchni prostokątnej działki, gdy znamy jej wymiary - Obliczanie podatku od podanej kwoty, gdy znamy wielkość kwoty i stopę podatku - Rozwiązywanie równania kwadratowego ax2+bx+c = 0
Zwykle do rozwiązania jakiegoś problemu lub zadania musimy znać jakieś dane, np. długość i szerokość działki, wielkość kwoty i stopę podatku. W efekcie rozwiązania zadania uzyskamy oczekiwane przez nas wyniki, np. pole działki, wielkość podatku. Algorytm opisuje, jakie czynności musimy wykonać z danymi aby uzyskać oczekiwane przez nas wyniki. Nie ma to być jednak przepis postępowania tylko dla jednego zestawu danych. Ten przepis musi być uniwersalny i musi być „dobry” dla różnych zestawów danych, np. dla różnych długości i szerokości działki, różnych kwot i stóp procentowych.
Do opisu algorytmu można używać: - języka naturalnego (nie rozumie go komputer !!!) - języka schematów blokowych (też nie rozumie go komputer, ale nam będzie on pomocny do tworzenia programów) - języka programowania (rozumie go komputer). Komputer potrafi przetłumaczyć zapisany przez nas program (algorytm zapisany w języku programowania) na zestaw rozkazów (zapisanych w języku maszynowym), które może wykonać procesor komputera.
ALGORYTM PROGRAM ZESTAW ROZKAZÓW DANE WYNIKI KOMPUTER
Każde działanie (czynność) wymaga istnienia pewnego obiektu, na którym ono przebiega i po zmianie stanu którego można sądzić o efekcie tego działania. Opisanie działania (czynności) nazywać będziemy instrukcją. Podstawową instrukcją w algorytmach jest instrukcja podstawiania (przypisania) postaci: N := W (czytaj: weź podstaw, staje się), gdzie N jest nazwą obiektu, W jest wyrażeniem, a „:=” to symbol (operator) podstawiania (przypisania). Instrukcja ta poleca obliczyć wartość wyrażenia W, po czym obliczoną wartość przyjąć za nową wartość obiektu o nazwie N. Przykłady: P:=a*b, P:=K*S, delta:=b*b-4*a*c, i:=i+1, j:=j-1
Schematy blokowe to graficzne przedstawienie ciągu wykonywanych czynności, uwzględniające ich wzajemną kolejność. Składa się ono z figur geometrycznych zwanych skrzynkami, określających wykonywane czynności i łączących je strzałek, wskazujących kolejność realizacji tych czynności. Zalety tego sposobu opisu algorytmu to: - czytelność i obrazowość sposobu rozwiązania zadania - ułatwienie uwzględnienia wszystkich, mogących wystąpić sytuacji (w złożonym algorytmie) - uproszczenie procesu kodowania algorytmu w języku programowania. Wady: - komputer „nie rozumie” schematów, ostatecznie trzeba zapisać algorytm w języku programowania
A A Skrzynki schematów blokowych Skrzynki graniczne i łącznikowe: początek i koniec działania algorytmu START STOP A łączą te same punkty schematu A
Skrzynki wprowadzania danych i wyprowadzania wyników: czytaj (pobierz) a,b pisz (wypisz) x,y Skrzynki operacyjne (zwykle z instrukcją podstawiania): delta := b*b-4*a*c
Skrzynki warunkowe – selekcje (sprawdzanie warunku): warunek TAK
Przykład: Algorytm obliczania pola działki START czytaj dł, szer pole := dł * szer pisz pole STOP
W bardziej złożonych sytuacjach obliczenia mogą się rozgałęziać W bardziej złożonych sytuacjach obliczenia mogą się rozgałęziać. Przykład: Algorytm znajdowania większej z dwóch podanych liczb START czytaj a, b TAK NIE max := a a > b max := b pisz max STOP
lub prowadzić do powtarzania w pętli zestawu czynności lub prowadzić do powtarzania w pętli zestawu czynności. Przykład: Algorytm znajdowania iloczynu il = 1*2*3*…*n dla danego n START czytaj n il := 1; i := 1 NIE i ≤ n i := i + 1 TAK il := il * i pisz il STOP