Algorytmy z przykładami
w Turbo Pascal 7.0
Zagadnienia
•
•
Etapy rozwiązywania problemów.
•
Zapis algorytmu w postaci graficznej – schematy
•
•
Iteracja, czyli działanie w pętli.
•
•
•
Prezentacja algorytmu w języku programowania.
•
Co to jest algorytm ?
Na lekcjach matematyki czy fizyki większość zadań
rozwiązujemy według pewnych schematów ( wypisanie
danych, sprecyzowanie, które wartości trzeba wyliczyć,
czyli określenie „szukanych” ).Wypisujemy wzory
łączące dane z szukanymi lub szukamy twierdzenia ,
które można by zastosować. Rozwiązanie staramy się
opisać w możliwie jasny sposób.
Na lekcjach z informatyki również określaliśmy w
zadaniach dane i warunki, które muszą one spełniać,
np. czy ma to być tekst, liczba ( jej format ), data …
Co to jest algorytm ?
Określaliśmy też wyniki, które chcemy otrzymać, a także
warunki, jakie powinny one spełniać. Rozpoczynaliśmy
jednak od sformułowania zadania.
Opisanie zadania, czyli szukanie związku, jaki zachodzi
między danymi a wynikami, nazywamy specyfikacją
zadania.
Przedstawienie rozwiązania zadania w sposób
uporządkowany (tj. wyszczególnienie kolejnych czynności)
nazywamy algorytmem.
Etapy rozwiązywania problemów
1.
Sformułowanie zadania.
2.
Określenie danych wejściowych.
3.
Określenie celu, czyli wyniku.
4.
Poszukiwanie metody rozwiązania, czyli algorytmu.
5.
Przedstawienie algorytmu w postaci:
- opisu słownego
- listy kroków
- schematu blokowego
- jednego z języków programowania
6.
Analiza poprawności rozwiązania.
7.
Testowanie rozwiązania dla różnych danych.
Zapis algorytmu w postaci
graficznej – schematy blokowe
Sposoby rozwiązania zadań, czyli algorytmy, można prezentować
w postaci graficznej jako schematy blokowe.
W schemacie blokowym poszczególne operacje przedstawione są
za pomocą odpowiednio połączonych skrzynek (klocków,
bloków). Połączenia określają kolejność i sposób wykonywania
operacji realizujących dany algorytm. Schemat blokowy jest więc
niczym innym , jak graficznym przedstawieniem ciągu kroków
algorytmu.
W literaturze informatycznej przyjęto pewne standardowe
oznaczenia poszczególnych działań (są to figury geometryczne).
Zapis algorytmu w postaci
graficznej – schematy blokowe
Oznaczenie miejsca rozpoczęcia
(begin);, zakończenia (end) lub
przerwania działania programu.
Wykonywanie róznych działań,
np. sumowania.
Operacje wprowadzania (read),
wyprowadzania (write) danych
do,
z pamięci operacyjnej
komputera.
Start
Z := A + B
Wprowadź Z
Zapis algorytmu w postaci
graficznej – schematy blokowe
Operacja warunkowa (if),
określająca wybór jednej z
dwóch
możliwych dróg działania.
Proces określony poza
programem i z tego powodu nie
wymagający zdefiniowania w
rozpatrywanym programie
(podprogram).
Określa kierunek przepływu
danych lub kolejności
wykonywania zadań.
Z > 0
f1
Sytuacje warunkowe
Z sytuacjami warunkowymi stykamy się w każdej dziedzinie
wiedzy i życia codziennego. Na pytanie: „Czy pada deszcz ?”
odpowiedź może brzmieć „tak” lub „nie”. W zależności od
tego czy warunek jest spełniony czy nie , wybieramy inne
rozwiązanie.
Z sytuacją warunkową mamy więc do czynienia wówczas,
gdy wynik lub dalsze działanie zależy od spełnienia warunku.
Czy
pada
deszcz ?
Tak
Tak
Nie
Zostaję w domu
.
Idę na spacer.
Iteracja, czyli działanie w pętli
Czasem trzeba wykonać te same operacje na wielu
liczbach. W takich przypadkach nie jest konieczne
wielokrotne opisywanie takich samych działań. Stosujemy
wówczas iterację. Działania te wykonywane są w pętli.
Liczba powtórzeń tych samych działań może być z góry
określona lub zależeć od spełnienia warunku.
Start
Czytaj N (2)
S := 0
L := N (2)
Czy
L > 0
?
S := S + L (2)
L := L - 1 (1)
Tak
S := S + L (3)
L := L – 1 (0)
Nie
Pisz S
Koniec
Przykład schematu blokowego
Start
Czytaj x
Czy
x >= 0
?
Nie
Pisz -x
Koniec
Pisz x
Koniec
Tak
Wstęp do programowania
Do tej pory tworzyliśmy własne dokumenty – rysunki, teksty,
tabele arkusza kalkulacyjnego, proste bazy danych –
korzystając z gotowych programów komputerowych. Własne
programy piszemy posługując się językami programowania,
takimi jak Pascal, język C, Basic. Do programowania służą
programy – specjalne edytory wchodzące w skład środowiska
programowania, zawierające zwykle oprócz edytora
kompilator i inne narzędzia wspomagające programowanie,
np.: Turbo Pascal, C++, Visual Basic, Delphi.
Program jest to ciąg instrukcji wykonujący określony
algorytm. Aby zatem napisać własny program, musimy
poznać nie tylko instrukcje danego języka programowania,
ale przede wszystkim metody programowania.
Prezentacja algorytmu w języku
programowania
Aby przedstawić algorytm w postaci programu, trzeba go
napisać jako ciąg instrukcji języka programowania. Każda
instrukcja podobnie jak skrzynka w schemacie blokowym
odpowiada określonej operacji, dlatego też kolejność
występowania instrukcji w programie określa kolejność
wykonywania operacji.
Nauka programowania nie polega jednak na nauczeniu się
na pamięć instrukcji danego języka, ale na zrozumieniu
zasad ich działania oraz na umiejętnym ich zastosowaniu.
Prezentacja algorytmu w języku
programowania
•
•
Instrukcje wyjścia (write i writeln).
•
Instrukcje wejścia (read i readln).
•
Zmienne i najczęściej stosowane typy
.
•
•
Struktura programu
Poprawny program w Turbo Pascalu ma określoną strukturę.
Wygląda ona następująco:
Program nazwa_programu;
{ blok deklaracji }
Begin
{ blok instrukcji }
End.
W bloku deklaracji znajdują się deklaracje zmiennych.
Blok instrukcji zawiera ciąg instrukcji przeznaczonych do
wykonania
przez program, oddzielonych od siebie średnikami.
Komentarze zaznaczamy nawiasami klamrowymi {…..}.
Instrukcje wyjścia (write i writeln)
Write() - powoduje wypisanie wartości
wyrażenia zawartego w nawiasie.
Writeln() - powoduje wypisanie wartości
wyrażenia zawartego w nawiasie i
przejście do nowego wiersza.
Instrukcje wyjścia (write i writeln)
Program wypisuje imię i nazwisko w pierwszym wierszu a w
drugim adres osoby.
Program obrazujący instrukcje
wyjścia
Start
Pisz imię
i nazwisko
Przejście do
nowego wiersza
Pisz adres
Koniec
Program obrazujący instrukcje
wyjścia
Program Dane;
{ Program wypisuje imię i nazwisko w pierwszym wierszu }
{ a w drugim adres osoby.
}
Begin
Writeln (‘Marek Pawlak’);
Writeln (‘ul. Ptasia 7, 68-300 Lubsko’);
End.
Instrukcje wejścia (read i readln)
Bardzo często zdarza się taka sytuacja, że chcielibyśmy, aby
użytkownik podał dane, które następnie będą przez program
przetwarzane. Służą do tego instrukcje read i readln.
Read - powoduje odczytanie danych z klawiatury w takiej liczbie, ile
miała argumentów i takich typów, jakie dla nich zadeklarowano.
Wpisywanie danych musi zostać zakończone wciśnięciem klawisza
Enter.
Readln – jak powyżej tylko po wykonaniu instrukcji powoduje
przejście
do nowego wiersza.
Instrukcje wejścia (read i
readln)
Program wczytuje dwie liczby i wypisuje ich sumę.
Program obrazujący instrukcje
wejścia
Start
Czytaj 1 liczbę
Czytaj 2 liczbę
Suma := 1 liczba + 2 liczba
Wypisz Suma
Koniec
Program obrazujący instrukcje
wejścia
Program Sumowanie;
{ Program wczytuje dwie liczby i wypisuje ich sumę. }
Var
Liczba1, Liczba2, Suma : Integer;
Begin
Write (‘Podaj pierwsza liczbe: ‘);
Readln (Liczba1);
Write (‘Podaj drugą liczbe: ‘);
Readln (Liczba2);
Suma := Liczba1 + Liczba2;
Writeln (‘Podales ‘,Liczba1, ‘ i ‘,Liczba2,’. Ich suma to: ‘,Suma);
End.
Zmienne i najczęściej stosowane
typy
Zmienne można sobie wyobrazić jako pojemniki, przechowujące
dane
w trakcie wykonania programu. Zmienne posiadają swoje nazwy,
poprzez które można odwoływać się do ich zawartości. Muszą zostać
zadeklarowane w bloku deklaracji w sekcji Var. Po tym słowie
kluczowym można je definiować, posługując się postacią nazwa :
typ. Kolejne deklaracje należy oddzielać średnikami.
Przykład:
Program Przykład;
Var
A : Integer;
B : String;
…
Typy zmiennych
Cechą nieodłącznie związaną z każdą zmienną jest jej typ,
czyli rodzaj danych, które może pamiętać. Typ zmiennej należy
określić
już przy jej deklaracji i nie można go zmieniać.
Najczęściej stosowane typy to:
Byte - Liczba stałoprzecinkowa z zakresu 0.255.
Integer - Liczba stałoprzecinkowa z zakresu -32768…32767.
Char - Pojedynczy znak ASCII.
String – Łańcuch znaków (czyli tekst), nie dłuższy niż 255
znaków.
Real – Liczba zmiennoprzecinkowa.
Boolean – Wartość logiczna.
Warunkowa instrukcja IF
Działa w ten sposób, że sprawdzana jest wartość warunku.
Jeżeli jest
on prawdziwy wykonywany jest blok instrukcji 1, a jeżeli nie –
blok instrukcji 2.
Przykład:
If Warunek Then
{ blok instrukcji 1 }
Else
{ blok instrukcji 2 }
Warunkowa instrukcja If
Program wczytuje dwie liczby i wypisuje największą z nich.
Program obrazujący instrukcję If
Program Warunek;
{ Program wczytuje dwie liczby i wypisuje największą z nich. }
Var
Liczba1, Liczba2 : Integer;
Begin
Write (‘Podaj pierwsza liczbę: ‘);
Readln (Liczba1);
Write (‘Podaj drugą liczbę: ‘);
Readln (Liczba2);
If (Liczba1>Liczba2) Then
Writeln (‘Największa z liczb to: ‘,Liczba1);
Else
Writeln (‘Największa z liczb to: ‘,Liczba2);
Readln;
End.
Program obrazujący instrukcję If
Start
Czytaj 1 liczbę
Czytaj 2 liczbę
Wypisz 2 liczba
Koniec
If 1 liczba > 2
liczba
Nie
Tak
Wypisz 1 liczba
Koniec
Pętla For
Często zdarza się w programie, że jakąś czynność chcemy wykonać
wiele razy. Pascal oferuje nam kilka możliwości „zapętlenia”,
czyli wielokrotnego wykonywania bloku instrukcji. Najprostszą jest
pętla
for. Ma ona postać:
For zmienna := początek To koniec Do
{ blok instrukcji }
Cóż oznacza taki zapis ? Otóż blok instrukcji będzie wykonywany
wielokrotnie, dla zmiennej przyjmującej kolejno każdą wartość od
początek do koniec.
Zmienna, której wartość jest sprawdzana w pętli, nosi nazwę
zmiennej
sterującej.
Pętla For
Program wypisuje na ekranie liczby od 1 do 10.
Algorytm
Kod źródłowy
Uruchomienie programu
Program obrazujący instrukcję For
Program Petla;
{ Program wypisuje liczby od 1 do 10. }
Var
i : Byte;
Begin
For i := 1 To 10 Do
write (i, ‘ ‘);
Writeln;
Readln;
End.
Program obrazujący instrukcję For
Start
Koniec
i = 10
Nie
Wypisz wartość
liczby i
i=i+1
Tak
Zakończenie
Obecnie istnieje mnóstwo innych języków programowania - w tej chwili
bardzo popularnych, o których dużo się pisze, i w których dużo się
pisze. Kto dzisiaj pisze prawdziwe programy w Turbo Pascalu ?
Odpowiedź brzmi – nikt. Pascal jest jednak najlepszym sposobem
opisu rozwiązywania problemów informatycznych ( czyli prezentacji
algorytmów ). Jego trzon powstał właśnie w tym celu i ciągle do nauki
podstaw programowania jest niezastąpiony. Naukę tego języka
programowania należy traktować jedynie jako środek do nauki
myślenia programistycznego, a nie jako cel sam w sobie. Znając ten
język, nauka innych nie będzie dla Ciebie dużym problemem, a metody
rozwiązywania postawionych zadań będą podobne.