programowanie w języku pascal...2011-10-22 programowanie w języku pascal 18 schemat blokowy...
TRANSCRIPT
Algorytmy
• Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn Musy al-Chorezmi(z Chorezmu), który ok. 820 roku n.e. opisał pozycyjny system kodowania dziesiętnego liczb i sztukę liczenia w tym systemie. W XII w. Europie przetłumaczono jego książkę i rozpoczęto wykonywanie obliczeń metodą "pisemną".
2011-10-22 Programowanie w języku Pascal 2
Algorytmy
• Algorytmem nazywamy skończony ciąg instrukcji prowadzących do rozwiązania danego problemu lub zadania. Jest to przepis postępowania prowadzący do osiągnięcia jakiegoś celu.
• Implementacja to zapis algorytmu w języku programowania.
2011-10-22 Programowanie w języku Pascal 3
Algorytmy
• Rozwiązując jakikolwiek problem (zadanie) stosujemy zazwyczaj określoną metodę (przepis), która ma pozwolić na uzyskanie wyniku (rozwiązania). Warunkiem przystąpienia do rozwiązywania jakiegokolwiek problemu jest posiadanie niezbędnych wiadomości i doświadczenia
2011-10-22 Programowanie w języku Pascal 4
Algorytmy
• Algorytmika - podstawowy dział informatyki poświęcony poszukiwaniom, konstruowaniu i badaniom algorytmów, zwłaszcza w kontekście ich przydatności do rozwiązywania problemów za pomocą komputerów.
• Program komputerowy - to logicznie uporządkowany ciąg instrukcji języka programowania realizujący algorytm.
2011-10-22 Programowanie w języku Pascal 5
Algorytmizacja zadania
• Sformułowanie zadania• Określenie danych wejściowych• Określenie celu, czyli oczekiwanego wyniku• Poszukanie metody rozwiązania, czyli algorytmu• Przedstawienie algorytmu w postaci
– opisu słownego– listy kroków– schematu blokowego– języka programowania
• Analiza poprawności rozwiązania• Testowanie rozwiązania dla różnych danych –
ocena efektywności przyjętej metody
2011-10-22 Programowanie w języku Pascal 6
Cechy algorytmu
• Skończoność (realizowany ciąg operacji powinien mieć swój koniec).
• Określoność (zarówno operacje, jak i porządek ich wykonywania powinny być ściśle określone, nie zostawiając miejsca na dowolną interpretację użytkownika).
• Ogólność (algorytm nie ogranicza się do jednego, pojedynczego, szczegółowego przypadku, ale odnosi się do pewnej klasy zadań).
• Efektywność (algorytm powinien prowadzi do rozwiązania możliwie najprostszą drogą).
2011-10-22 Programowanie w języku Pascal 7
Algorytmy
• Przykład:Uporządkuj rosnąco (A-Z) zbiór nazwisk i imion uczniów klasy drugiej.
• Dane: nieuporządkowany zbiór nazwisk i imion uczniów klasy
• Wynik: uporządkowany alfabetycznie zbiór nazwiski imion uczniów klasy
2011-10-22 Programowanie w języku Pascal 8
Sposoby przedstawiania algorytmów
2011-10-22 Programowanie w języku Pascal 9
Opis słowny Lista kroków
Zapis z wykorzystaniem
jednego z języków programowania
Schemat blokowy
Opis słowny algorytmu
• Algorytm w postaci listy kroków– 1. Podejdź do telefonu
– 2. Podnieś słuchawkę
– 3. Sprawdź, czy jest sygnał...
– 4. ...
• Jest to początek algorytmu wykonania telefonu podany w postaci listy kroków
• Pamiętaj by w jednym punkcie (kroku) opisać t y l k o j e d n ą o p e r a c j ę
2011-10-22 Programowanie w języku Pascal 10
Schemat blokowy
• Algorytm w postaci schematu blokowego jest graficzną reprezentacją słownego zapisu algorytmu
2011-10-22 Programowanie w języku Pascal 11
Schemat blokowy
2011-10-22 Programowanie w języku Pascal 12
Skrzynki graniczne
START i STOP
mają kształt owalu -wskazują początek
i koniec wykonywania schematu blokowego.
START
STOP
Schemat blokowy
2011-10-22 Programowanie w języku Pascal 13
Skrzynka operacyjna
(instrukcji) ma kształt
prostokąta, w którym umieszcza się
instrukcje.
S a + b
Schemat blokowy
2011-10-22 Programowanie w języku Pascal 14
Skrzynka warunku
jest rombem, w którym umieszcza się warunek decydujący o dalszej
kolejności wykonywania operacji.
Ze skrzynki wychodzą dwa połączenia: jedno oznaczone
„Tak”, drugie oznaczone „Nie”.
S > 10 Tak
Nie
Schemat blokowy
2011-10-22 Programowanie w języku Pascal 15
Skrzynki wejścia/wyjścia
Jest równoległobokiem,w którym umieszcza się
dane lub wyniki.
Wprowadź
Wyprowadź
Schemat blokowy
• Obliczanie sumy dwóch liczb
2011-10-22 Programowanie w języku Pascal 16
Podaj (b)
S=: a + b
Piszsumę
STOP
START
Podaj (a)
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.
2011-10-22 Programowanie w języku Pascal 17
Start
Czytaj N
S := 0 L := N
CzyL > 0 ?
Tak
S := S + L (2)L := L – 1 (1)
Nie
Pisz S
Koniec
S := S + L (3)L := L – 1 (0)
Schemat blokowy
• Obliczanie największego wspólnego podzielnika dwóch liczb – algorytm Euklidesa
1. Dane są dwie niezerowe liczby naturalne a i b.
2. Dopóki liczby nie są równe powtarzaj krok 3, w przeciwnym razie przejdź do kroku 4.
3. Od większej liczby odejmij mniejszą i tę większą zastąp otrzymaną różnicą.
4. Wyprowadź wynik: NWD (największy wspólny dzielnik) jest równy pierwszej liczbie.
2011-10-22 Programowanie w języku Pascal 18
Schemat blokowy
2011-10-22 Programowanie w języku Pascal 19
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.
2011-10-22 Programowanie w języku Pascal 20
Programowanie
• algorytm rozwiązuje problem
• program realizuje algorytm
• komputer wykonuje program
2011-10-22 Programowanie w języku Pascal 21
Programowanie
2011-10-22 Programowanie w języku Pascal 22
PROBLEM
ALGORYTM
PROGRAM ŹRÓDŁOWY
KOMPUTER
PROGRAM WYKONYWALNY
1. IMPLEMENTACJA to zapis algorytmu w języku programowania
2. TRANSLACJA to tłumaczenie programu źródłowego na kod maszynowy
3. URUCHOMIENIE programu
4. TESTOWANIE programu
ETAPY PROGRAMOWANIA
0. WYBÓR-ZNALEZIENIE-OPRACOWANIE ALGORYTMU
Program źródłowy i wynikowy
2011-10-22 Programowanie w języku Pascal 23
PROGRAM (KOD) ŹRÓDŁOWY to algorytm zapisany w języku programowania (języku wysokiego poziomu)
� Przejrzysta struktura (reguły języka) – zrozumiały dla człowieka
� Niezależność od sprzętu
PROGRAM (KOD) WYNIKOWY to program zapisany w języku wewnętrznym (maszynowym) procesora
� Instrukcje odpowiadają instrukcjom konkretnego procesora
Program źródłowy i wynikowy
2011-10-22 Programowanie w języku Pascal 24
TRANSLACJA to tłumaczenie programu źródłowego na kod maszynowy. Używamy do tego programów zwanych translatorami. Dzielimy je na:
� INTERPRETERY – każde polecenie języka wysokiego poziomu jest na bieżąco zamieniane na kod maszynowy i wykonywane (do wykonania programu potrzebne jest uruchomienie interpretera)
� KOMPILATORY – cały program źródłowy jest tłumaczony na kod maszynowy i zapisywany w pliku wykonywalnym (*.exe). Raz skompilowany program jest „gotowy do użycia”.
Struktura programu w Pascalu
2011-10-22 Programowanie w języku Pascal 25
program polekola;
uses crt;
const
pi=3.14;
var
p,r:real;
begin
writeln(‘pole koła’);
writeln('podaj promień');
readln(r);
p:=pi*r*r*;
writeln(pole koła wynosi ‘,p:4:2)
end.
program nazwa;
nazwa jest jednym wyrazem (bez spacji)
nazwa nie zawiera polskich liter
uses lista modułów;
deklaracje modułów
moduły to zbiory funkcji i procedur, które
możemy wykorzystywać w naszych
programach
definicje stałych
deklaracje zmiennych
wszystkie zmienne występujące w
programie muszą być wcześniej
zadeklarowane
część wykonawcza
nagłówek programu
część
deklaracyjna
const
nazwa=wartość;
varlista zmiennych:typ;
begin
instrukcje
programu
end.Kolejność zapisywania instrukcji
odpowiada kolejności wykonywania
Instrukcje oddzielamy średnikiem
Zmienne
2011-10-22 Programowanie w języku Pascal 26
KAŻDA ZMIENNA UŻYWANA W PROGRAMIE MUSI BYĆ ZADEKLAROWANA
� dla każdej zadeklarowanej zmiennej rezerwowany jest fragment pamięci o określonym adresie i wielkości
� zmiennym nadajemy wartości • wczytując je z klawiatury lub pliku • używając instrukcji przypisania• przypisując nową wartość zmiennej automatycznie
„kasujemy” starą
Podstawowe typy danych
�PREDEFINIOWALNE TYPY DANYCH– liczby całkowite INTEGER
– liczby rzeczywiste REAL
– wartości logiczne BOOLEAN = {TRUE, FALSE}
– wartości znakowe CHAR
– łańcuchy STRING
STRING[n] – łańcuch ograniczony do n znaków
2011-10-22 Programowanie w języku Pascal 27
Instrukcje wejścia
• służą do wprowadzania danych do programu
2011-10-22 Programowanie w języku Pascal 28
Read(lista zmiennych);
wczytanie ( z klawiatury) zmiennych wymienionych w nawiasie
wczytanie ( z klawiatury) zmiennych wymienionych w nawiasie, a następnie przeniesienie kursora do następnej linii
Readln(lista zmiennych);
Instrukcje wejścia
• służą do wprowadzania danych do programu
2011-10-22 Programowanie w języku Pascal 29
Przykład – dla zmiennych x, y, z, t wprowadzamy odpowiednio wartości 4 12 6 8
instrukcja Sposób wprowadzenia (ekran)
read(x,y);read(z);read(t);
4 12 6 8 <ENTER>
readln(x,y);readln(z);read(t);
4 12 <ENTER>5 <ENTER>8 <ENTER>
Instrukcje wyjścia
• służą do wyprowadzania wyników lub komunikatów
2011-10-22 Programowanie w języku Pascal 30
Write(lista zmiennych);
wypisanie wartości zmiennych wymienionych w nawiasie
wypisanie wartości zmiennych wymienionych w nawiasie, a następnie przeniesienie kursora do następnej linii
Writeln(lista zmiennych);
Tekst ujęty w apostrofach zostanie wypisany na ekranie
Writeln(‘tekst komunikatu’ );
Instrukcje wyjścia
2011-10-22 Programowanie w języku Pascal 31
Przykład – dla zmiennych i, j, k o wartościach 12, 4 i 78
instrukcja Sposób wyprowadzenia (ekran)
write(‘oto liczby: ’);write(i);write(j);write(k);
oto liczby: 12 4 78
writeln(‘oto liczby:’);write(i);writeln(j);write(k);
oto liczby: 12 4 78
Formatowanie wydruku
2011-10-22 Programowanie w języku Pascal 32
liczby całkowite:writeln(zmienna:l_cyfr)
l_cyfr - „długość liczby” (w znakach),
Przykład – dla zmiennych n = 153, k = 76
instrukcja ekran
Write(n,k); 15376
Write(n:3,k:3); 153 76
Write(n:5,k:5); 153 76
Formatowanie wydruku
2011-10-22 Programowanie w języku Pascal 33
liczby rzeczywiste:writeln(zmienna:l_cyfr :c_dzies)
l_cyfr - „długość liczby” (w znakach) łącznie z przecinkiem
c_dzies – liczba cyfr po przecinku
Przykład – dla zmiennej x=9,75 instrukcja ekran
Write(X); 9.7500000E+00
Write(x:4:2) 9.75
Write(x:3:1) 9.8
Write(x:5:1) 9.8
Write(x:8:4) 9.7500
Instrukcja przypisania
• służy do nadawania wartości zmiennym przez program
2011-10-22 Programowanie w języku Pascal 34
zmienna := wyrażenie;
typ zmiennej musi być zgodny z typem wyrażenia
�wyrażenie (wzór) to zapis obliczeń składający się ze zmiennych, operatorów działań i funkcji
� wartość obliczona na podstawie wyrażenia zostanie przypisana zmiennej
Instrukcja przypisania
• służy do nadawania wartości zmiennym przez program
2011-10-22 Programowanie w języku Pascal 35
Operacje arytmetyczne+ dodawanie- odejmowanie* mnożenie/ dzielenie rzeczywiste przykład: 7/2=3,5div dzielenie całkowite przykład: 7 div 3 = 2mod reszta z dzielenia całkowitego
przykład: 7 mod 3 = 1
Budowa wyrażeń
• Zasady zapisu:– wszystkie działania muszą być jawne np. y:=2*a a
nie y:=2a
– do grupowania działań służy nawias zwykły npy:=1/((1/x)+1)
• Kolejność działań:– wartości funkcji
– wyrażenia w nawiasach
– mnożenie i dzielenie
– dodawanie i odejmowanie
2011-10-22 Programowanie w języku Pascal 36
Budowa wyrażeń
2011-10-22 Programowanie w języku Pascal 37
cd
ba +
1
12 +x
2cos
2sin2
βαβα −+
hba
2
+(a+b)/2*h
(a+b)/c*d
1/sqrt(x*x+1)
2*sin((a+b)/2)*cos((a-b)/2)
(a+b)/(c*d)
Funkcje standardowe• abs(x) - wartość bezwzględna• sqr(x) - kwadrat• sqrt(x) - pierwiastek kwadratowy• ln(x) - logarytm naturalny z x• exp(x) - ex
• sin(x) - sinus (x w radianach)• cos(x) - cosinus (x w radianach)• arctan(x) - arcus tangens x (wynik w mierze łukowej)• round(x) - zaokrąglenie do najbliższej liczby całkowitej
round(7.67)=8
• trunc(x) - obcięcie części ułamkowej trunc(7.67)=7
2011-10-22 Programowanie w języku Pascal 38
Instrukcja warunkowa
• Pozwala na podjęcie decyzji, którą instrukcję ma wykonać w zależności od postawionego warunku
2011-10-22 Programowanie w języku Pascal 39
IF warunek THEN
instrukcje_gdy_tak
- wykonywana jest gdy warunek jest spełniony
ELSEinstrukcje_gdy_nie;
- wykonywana jest gdy warunek nie jest spełniony
Instrukcja warunkowa
• Pozwala na podjęcie decyzji, którą instrukcję ma wykonać w zależności od postawionego warunku
2011-10-22 Programowanie w języku Pascal 40
Przykład 1:
if (x<>1) then
y:=0.5*x*x-4
else
y:=1/(x-1);
Przykład 2:
Readln(x);
if (x<0) then
x:=x*(-1);
Writeln(‘wartość bezwzględna=‘,x);
Warunek, operacja, operator
2011-10-22 Programowanie w języku Pascal 41
IF warunek THEN........
warunek = wyrażenie logiczne
� wyrażenie logiczne (warunek) to zapis warunku przy użyciu operatorów relacji lub operacji logicznych
�wyrażenie logiczne przyjmuje wartość TRUE lub FALSE (może być fałszywe lub prawdziwe)
Warunek, operacja, operator
2011-10-22 Programowanie w języku Pascal 42
przykłady wyrażeń logicznycha > b( a > b ) or ( a > c )( a <> 0 ) and ( ( a> b ) or ( a > c ) )
operatory relacji
= - równe
<> - różne
< - mniejsze
> - większe
<= - mniejsze lub równe
>= - większe lub równe
operacje logiczne
not - negacja
and - iloczyn logiczny
or - suma logiczna
Instrukcja złożona
2011-10-22 Programowanie w języku Pascal 43
� Służy do grupowania kilku instrukcji w celu łącznego wykonania (lub nie wykonania)
begin......
instrukcje programu;
.......
end;
Instrukcja złożona
2011-10-22 Programowanie w języku Pascal 44
if x=0 thenwriteln(‘ y nie istnieje’)
elsey:=1/x;writeln(‘y=’,y:5:2);
� Instrukcja warunkowa IF...THEN „sama z siebie” domyślnie warunkiem (na tak lub nie) obejmuje tylko jedną instrukcję programu
if x<>0 then writeln(‘ y nie istnieje’);
elsebeginy:=1/x;writeln(‘y=’,y:5:2)end;
elementem instrukcji warunkowej
jest tylko y:=1/x;writeln(‘y=‘,y:5:2); wykona się
niezależnie od wartości x
Obie instrukcje zostaną wykonane
(lub nie) - zależnie od wartości x
Instrukcja wyboru
• Pozwala na wybór jednej spośród kilku instrukcji w zależności od wartości wyrażenia sterującego (selektora)
2011-10-22 Programowanie w języku Pascal 45
CASE (wyrażenie) OFw
1:instrukcja 1;
w2:instrukcja 2;
w3:instrukcja 3;
.....END;
obliczana jest wartość wyrażenia w nawiasie
wyrażenie musi być typu całkowitego lub znakowego
wykonywana jest instrukcja odpowiadająca obliczonej wartościjeżeli obliczonej wartości wyrażenia nie ma na liście nie zostanie wykonana żadna z instrukcji
gdy dla jednej wartości wyrażenia należy wykonać kilka instrukcji stosujemy instrukcję złożoną (begin.... end)
Instrukcja wyboru
• Pozwala na wybór jednej spośród kilku instrukcji w zależności od wartości wyrażenia sterującego (selektora)
2011-10-22 Programowanie w języku Pascal 46
Case (kont div 90+1) of1:writeln(‘pierwsza ćwiartka’);2:writeln(‘druga ćwiartka’);3:writeln(‘trzecia ćwiartka’);4:writeln(‘czwarta ćwiartka’);
end;
Obliczane jest wyrażenie(kont div 90)+1
Wykonywana jest instrukcja informująca do której ćwiartki należy wartość kont
Instrukcja iteracyjna FOR
• Pozwala powtarzanie instrukcji określoną ilość razy
2011-10-22 Programowanie w języku Pascal 47
FOR zmienna:=wart.początkowa TO wart. końcowa DOinstrukcja;
FOR zmienna:=wart.początkowa DOWNTO wart. końcowa DOinstrukcja;
Instrukcja wykonywana jest tyle razy aby zmienna startując od wartości początkowej osiągnęła wartość końcową
zmienna musi być typu całkowitego
Po każdym wykonaniu instrukcji zmienna jest automatycznie modyfikowana o 1
w górę dla TOw dół dla DOWNTO
Instrukcja iteracyjna FOR
• Pozwala powtarzanie instrukcji określoną ilość razy
2011-10-22 Programowanie w języku Pascal 48
gdy pętlą jest objętych kilka instrukcji (linijek) trzeba stosować instrukcję złożoną
for i:=1 to 10 dosuma:=suma+i;
for i:=1 to 10 dobeginwrite(‘liczba=‘);readln(liczba);suma:=suma+liczba;end;
Instrukcja cykliczna repeat...until
• Pozwala na powtarzanie instrukcji nieokreśloną ilość razy – aż do spełnienia zadanego warunku
2011-10-22 Programowanie w języku Pascal 49
REPEATinstrukcja;
UNTIL warunek;
najpierw wykonywana jest instrukcja, a później sprawdzany jest warunek
instrukcja (instrukcje) umieszczone wewnątrz pętli będą wykonywane dopóki warunek nie zostanie spełniony;po spełnieniu warunku program opuści pętlę
między słowami kluczowymi repeat...untilmożemy umieścić kilka instrukcji -powtarzane są wszystkie
repeatwrite(‘liczba=‘);readln(liczba);suma:=suma+liczba;
until suma<=100;
Instrukcja cykliczna while...do
• Pozwala na powtarzanie instrukcji nieokreśloną ilość razy – tak długo jak długo warunek jest spełniony
2011-10-22 Programowanie w języku Pascal 50
WHILE warunek DOinstrukcja;
instrukcja jest powtarzana tak długo jak długo jest spełniony warunek
gdy warunek nie będzie spełniony program opuści pętlę
najpierw sprawdzany jest warunek, a później wykonywana jest instrukcja
Instrukcja cykliczna while...do
• Pozwala na powtarzanie instrukcji nieokreśloną ilość razy – tak długo jak długo warunek jest spełniony
2011-10-22 Programowanie w języku Pascal 51
gdy warunkiem jest objętych kilka instrukcji (linijek) trzeba stosować instrukcję złożoną
While (a*b)<>0 doif a>b then
a:=a mod belse
b:=b mod a;
while suma<100 dobeginwrite(‘liczba=‘);readln(liczba);suma:=suma+liczba;end;