EBieleninik
PWr II
1
Pojęcia podstawowe
Program – sposób zapisu algorytmu w celu jego realizacji przez komputer.
Program składa się ze zbioru instrukcji i struktur danych.
Instrukcja – opis operacji jaka ma być wykonana.
Struktury danych – różne postacie danych, na których są wykonywane operacje.
PROGRAM = ALGORYTM + STRUKTURY DANYCH
EBieleninik
PWr II
2
PROGRAM = ALGORYTM + STRUKTURY DANYCH
Program może być napisany w wybranej notacji.
Notacja taka powinna możliwie najlepiej pasować do problemu.
Jeżeli ma on być wykonany na komputerze, to musi być zapisany w
języku
programowania.
Język programowania – język używany do pisania programów realizowanych
przez komputer.
Rozróżnia się języki:
- niskiego poziomu
Zależne od typu komputera, duża pracochłonność
- wysokiego poziomu
EBieleninik
PWr II
3
- wysokiego poziomu
Niezależne od typu komputera, wykorzystują wyrażenia języków
naturalnych
Języki niskiego poziomu
• język maszynowy
• język asembler
Języki wysokiego poziomu
• FORTRAN, COBOL, ALGOL, PASCAL, C
• MODULA, ADA
EBieleninik
PWr II
4
• MODULA, ADA
• BASIC, VISUAL BASIC
• SIMULA, SMALLTALK
• C++, C#, JAVA
• PROLOG
Język maszynowy
Jest to język ściśle związany z typem komputera (procesora) i jest różny dla
różnych typów komputerów.
Instrukcje i dane są zapisywane w postaci
ciągów liczb szesnastkowych lub
binarnych.
Posługiwanie się tym językiem jest bardzo trudne i jest on stosowany niezwykle
rzadko
Językiem maszynowym posługiwano się w najwcześniejszym okresie użytko-
EBieleninik
PWr II
5
Językiem maszynowym posługiwano się w najwcześniejszym okresie użytko-
wania komputerów.
1010
0111
0000 0000 0001 1010
kod
rozkazu
nr
rejestru
adres pamięci
Język asembler
Jest to
język symboliczny
, w którym instrukcje mają postać nazwy symbolicznej.
Jednej instrukcji symbolicznej odpowiada jedna instrukcja maszynowa.
Programy asemblerowe są bardziej zrozumiałe dla człowieka niż maszynowe.
Języki asemblerowe także są różne dla różnych typów komputerów, ale mają
pewne cechy wspólne.
EBieleninik
PWr II
6
Język asembler
MOV
Z,0
// przesłanie 0 do Z
MOV
U,X
// przesłanie X do U
k2
ADD
Z,Y
// dodanie Y do Z
DEC
U
// odjęcie 1
JNZ
k2
// skok do k2 gdy U<>0
Przykład
EBieleninik
PWr II
7
1. z := 0
u := x
2. Powtarzaj
z := z+y
u := u-1
Aż u = 0
Języki wysokiego poziomu
Podstawowe cechy:
• niezależność od konkretnych typów komputerów
• pojedyncze instrukcje opisują złożone czynności
• oferują szereg ułatwień w pisaniu programów
EBieleninik
PWr II
8
• oferują szereg ułatwień w pisaniu programów
• języki proceduralne
- FORTRAN
- ALGOL
- BASIC
- PASCAL (starsze wersje)
- C
• języki obiektowe
Podział języków wysokiego poziomu
EBieleninik
PWr II
9
- C++
- VISUAL BASIC
- JAVA
- ADA
- PASCAL
- SMALLTALK
- LISP
• języki programowania logicznego
- PROLOG
• języki symulacyjne
- SIMULA
- SIMSCRIPT
• języki skryptowe (do pisania stron www)
- PHP
- JavaScript
Podział języków wysokiego poziomu
EBieleninik
PWr II
10
- JavaScript
- ASP
• języki bazodanowe (zapytań)
- SQL
- MySQL
Translatory
Program
w języku A
TRANSLATOR
Program
w języku B
EBieleninik
PWr II
11
Translator
to program narzędziowy służący do tłumaczenia programów z jednego
języka programowania na inny.
W szczególności program, aby był wykonywalny, musi być przetłumaczony na
język maszynowy.
Program
ź
ródłowy
KOMPILATOR
Program
wynikowy
Kompilator
- program tłumaczący z języka wysokiego poziomu (źródłowy) na
Kompilator
EBieleninik
PWr II
12
Kompilator
- program tłumaczący z języka wysokiego poziomu (źródłowy) na
język maszynowy (wynikowy).
Program źródłowy
- program w języku wysokiego poziomu, zrozumiałym przez
człowieka
Program wynikowy
- program w języku maszynowym, wykonywany przez
komputer.
Jeżeli w czasie translacji programu jest on jednocześnie wykonywany, to taki
translator nazywa się
interpreterem.
Program
ź
ródłowy
INTERPRETER
Wykonywanie
kolejnych instrukcji
Interpreter
EBieleninik
PWr II
13
translator nazywa się
interpreterem.
Językiem wejściowym interpretera może być język asembler albo język wysokie-
go poziomu.
Proces uruchamiania programu
Wprowadzenie programu
do komputera
Są błędy ?
Uruchomienie
Poprawa błędów
Kompilacja
T
N
EBieleninik
PWr II
14
Są błędy ?
Uruchomienie
Testowanie
Są błędy ?
Poprawa błędów
Poprawa błędów
T
N
T
N
Proces uruchamiania programu
Program.
pas
Kompilacja
Program.
exe
Po skompilowaniu, program wynikowy staje się samodzielnym „bytem”
i może być przenoszony na inne komputery i wielokrotnie wykonywany dla
różnych danych wejściowych.
EBieleninik
PWr II
15
Język programowania - definicje
•
Symbol - najmniejszy element języka
•
Alfabet - zbiór wszystkich symboli danego języka
•
Słowa kluczowe – zbiór słów języka
•
Syntaktyka (składnia) – określa reguły tworzenia poprawnych wyrażeń języka
•
Semantyka – określa znaczenie poprawnych składniowo wyrażeń.
Elementy języków programowania
• Dane różnych typów
• Wyrażenia (arytmetyczne, logiczne, relacyjne)
• Instrukcje
EBieleninik
PWr II
17
• Instrukcje
Dane w językach programowania
Dane dzielą się na
zmienne i stałe.
Ich znaczenie jest takie samo jak w matematyce.
Muszą posiadać nazwę i można im przypisywać wartości.
Nazwa
jest ciągiem znaków. Przykłady nazw:
x, Y, alfa, delta2, wsp_korelacji, liczbaOsob
EBieleninik
PWr II
18
Stałe nie zmieniają wartości, którą nadaje się im w jednym miejscu programu.
Zmienne mogą zmieniać wartość w trakcie wykonywania programu.
Zmienne i stałe mogą być
różnych typów
.
Dane w językach programowania
Typ określa rodzaj i zakres wartości, które mogą przyjmować zmienne i stałe.
Typy zmiennych i stałych muszą być podane w deklaracjach.
Deklaracje muszą poprzedzać użycie zmiennych i stałych w programie.
EBieleninik
PWr II
19
Dane mogą być typu
prostego
lub
złożonego.
Dane w językach programowania
Pascal – typy proste
Nazwa
Liczba bajtów
Zakres wartości
Uwagi
ShortInt
1
-128..127
Krótki całkowity
Integer
2
-32 768..32 767
Całkowity
LongInt
-2 147 483 648..
Długi całkowity
Real
6
-2.9E-39..1.7E38
Rzeczywisty
EBieleninik
PWr II
20
Double
8
5.0E-324..1.1E308
Podwójny rzeczywisty
Char
1
Znakowy
Boolean
1
True/False
Logiczny
Dane w językach programowania
Pascal – typy złożone (składają się z typów prostych)
1)
Typ łańcuchowy (napisowy)
x: string[15];
K
o
w
a
l
s
k
i
15
1
2
EBieleninik
PWr II
21
Jest wykorzystywany do pamiętania tekstów.
Dane w językach programowania
2)
Typ tablicowy
tab = array[1..20] of Integer;
x[3]
2
1
3
20
x: tab
7
T = array[1..8,1..10] of real;
tablica 1-wymiarowa
EBieleninik
PWr II
22
2
7
10
y: T
y[3,6]
1
1
2
3
3
8
tablica 2-wymiarowa
Dane w językach programowania
3)
Typ rekordowy
adres = record
kod:
string[6];
miejscowosc: string[25];
ulica:
string[30];
numer:
Byte;
mieszkanie:
Byte
end;
20
W r o c ł a w
K a r k o n o s k a
3
55-555
mój_adres: adres
EBieleninik
PWr II
23
end;
3
Wykorzystywany do pamiętania danych tekstowych i liczbowych.
Wyrażenia arytmetyczne
Elementy składowe wyrażeń arytmetycznych:
• stałe, zmienne (typu całkowitego lub rzeczywistego)
• operatory arytmetyczne
*
- mnożenie
/
- dzielenie
+
- dodawanie
EBieleninik
PWr II
24
+
- dodawanie
-
- odejmowanie (i znak ujemny)
div
- dzielenie całkowitoliczbowe
mod
– reszta z dzielenia całkowitoliczbowego
a+b*c-d
(a+b)*(c-d) 13 DIV 4 13 MOD 4
Elementy składowe wyrażeń logicznych:
•
stałe, zmienne (typu Boolean)
•
operatory logiczne
Wyrażenia logiczne
NOT - negacja
AND - iloczyn logiczny
OR
- suma logiczna
EBieleninik
PWr II
25
OR
- suma logiczna
Przykłady:
a := true;
b := false;
c := a OR b AND c;
Wyrażenia relacyjne
Operatory relacji:
=
- równe
< >
- różne
<
- mniejsze
>
- większe
EBieleninik
PWr II
26
>
- większe
<=
- mniejsze lub równe
>=
- większe lub równe
(a < b) OR (a>d)
delta >= 0
a< >0
Języki programowania
Instrukcje - Pascal
1.
Instrukcja przypisania
zmienna
:=
wyrażenie;
a := 10;
b := 5;
c := a + b;
:=
operator przypisania
EBieleninik
PWr II
27
c := a + b;
Języki programowania
2.
Podejmowanie decyzji w programie
if <warunek> then
instrukcja1
else
instrukcja2;
if <warunek> then
instrukcja1;
if delta>=0 then
EBieleninik
PWr II
28
if delta>=0 then
Begin
x1 := (-b – SQRT(delta))/(2*a);
x2 := (-b + SQRT(delta))/(2*a);
Writeln(x1, x2);
End
else
Writeln(„Delta ujemna”);
Języki programowania
3. Organizacja obliczeń cyklicznych
while <warunek> do
Instrukcja;
3.1 Instrukcja Dopóki
3.2 Instrukcja Powtarzaj
k :=1;
x := 0;
while k < 6 do
begin
x := x + k;
k := k + 1;
end;
oblicza sumę 1 + 2 + …+ 5
EBieleninik
PWr II
29
3.2 Instrukcja Powtarzaj
repeat
Instrukcja1;
Instrukcja2;
..................
until <warunek>;
k :=1;
x := 1;
repeat
x := x * k;
k := k + 1;
until k >= 6;
oblicza sumę 1 + 2 + …+ 5
oblicza iloczyn 1 *2 *3 *…*5
Języki programowania
3.3
Instrukcja Dla
for zm := wp to wk do
Instrukcja;
for zm := wp to wk do
begin
Instrukcja1;
suma := 0;
n := 10;
EBieleninik
PWr II
30
Instrukcja1;
Instrukcja2;
..................
end;
n := 10;
for i := 1 to 10 do
suma := suma + i;
oblicza sumę: 1 + 2 + … + 10
Języki programowania
4.
Instrukcje wejścia/wyjścia
4.1 Czytanie danych
read (lista_argumentów);
read (a,b);
writeln (‘a = ‘, a);
writeln (‘b = ‘, b);
readln (lista_argumentów);
EBieleninik
PWr II
31
4.2 Wyprowadzanie wyników
write (lista_argumentów);
writeln (‘b = ‘, b);
writeln (lista_argumentów);
Języki programowania - podprogramy
Podprogramy
Podprogram
to wyróżniona część programu komunikująca się z pozostałą w
ś
ciśle określony sposób.
Do komunikacji są wykorzystywane parametry, w definicji programu nazywane
parametrami formalnymi
, a w wywołaniu
parametrami aktualnymi.
Podprogram może być wielokrotnie wywoływany z części głównej programu
lub z innego podprogramu.
EBieleninik
PWr II
32
lub z innego podprogramu.
Wywoływanie podprogramu polega na podaniu jego nazwy oraz w nawiasach
parametrów.
pd :=
sqrt
(delta);
Języki programowania - podprogramy
Dlaczego stosuje się podprogramy ?
1. Program napisany z podziałem na podprogramy jest bardziej czytelny i zrozumiały
2. Pewne fragmenty programu, które się powtarzają lub realizują ściśle określone
operacje, powinny być wyodrębnione i zapisane w postaci jednego podprogramu.
3. Podczas uruchamiania programu można testować poszczególne podprogramy
oddzielnie, a następnie uruchomić cały program.
EBieleninik
PWr II
33
oddzielnie, a następnie uruchomić cały program.
Języki programowania - biblioteki
Dla poszczególnych języków programowania opracowano bogate biblioteki
podprogramów, zazwyczaj pogrupowanych tematycznie.
Przykładowe biblioteki:
• biblioteki obliczeń numerycznych
• biblioteki podprogramów graficznych
• biblioteki obliczeń statystycznych
EBieleninik
PWr II
34
• biblioteki obliczeń statystycznych
• biblioteki do przetwarzania tekstów
• biblioteki obliczeń ekonomicznych
Przykładowe funkcje standardowe w Pascalu:
• SIN(x), COS(x), SQRT(x), LOG(x), ABS(x), ........
Program Oblicz_silnie;
Var
n, i, silnia: Integer;
Begin
Writeln(‘ Podaj wartosc n ‘);
Readln (n);
silnia :=1;
Przykłady programów
EBieleninik
PWr II
35
silnia :=1;
for i := 2 to n do
silnia := silnia*i;
Writeln(‘silnia = ‘, silnia);
End.
Program MaxMin;
Var
max, min : Real;
a : array[1..20] of Real;
i, n: Integer;
Begin
................... czytanie danych
max := a[1]; min := a[1];
Przykłady programów
Program wyznacza liczbę
maksymalną i minimalną
w tablicy n liczb.
EBieleninik
PWr II
36
max := a[1]; min := a[1];
for i :=1 to n do
begin
if a[i] > max then max := a[i];
if a[i] < min then min := a[i];
end;
Writeln (max, min);
End.
Program SumaLiczb;
Var
a, suma: Real;
Begin
suma := 0;
Readln(a);
while (a <> 0) do
Przykłady programów
Program oblicza sumę liczb
czytanych z klawiatury.
EBieleninik
PWr II
37
while (a <> 0) do
Begin
suma := suma + a;
Readln(a);
End;
Writeln(suma);
End.
Program RownanieKwadratowe;
Var
a,b,c,delta,x1,x2,x: Real;
Begin
Writeln(‘Podaj wspolczynniki a, b, c ‘);
Readln (a,b,c);
if (a = 0) then
if (b = 0) then Writeln(‘Zle dane’)
else Begin
x := -c/b;
Writeln(x);
End;
PWr II
38
End;
else Begin
delta := b*b – 4*a*c;
if (delta >= 0) then
Begin
x1 := (-b - SQRT(delta))/(2*a);
x2 := (-b + SQRT(delta))/(2*a);
Writeln(x1,x2);
End
else Writeln(‘Delta ujemna’);
End
End.
EBieleninik
K O N I E C
EBieleninik
PWr II
39