Podstawy Informatyki dla Nauczyciela

Transkrypt

Podstawy Informatyki dla Nauczyciela
Podstawy Informatyki dla Nauczyciela
Bożena Woźna-Szcześniak
[email protected]
Jan Długosz University, Poland
Wykład 11
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
1 / 39
Jezyki
˛
porgramowania
Co to jest ?
Jezyk
˛
programowania jest “sztucznym” jezykiem
˛
pozwalajacym
˛
na
zapisywanie algorytmów i innych zadań jakie komputer ma
wykonać.
Jezyk
˛
programowania jest jezykiem
˛
komunikacji człowiek komputerem.
Jezyk
˛
programowania jest zestawem poleceń dla komputera,
których odpowiednie połaczenie
˛
tworzy zorganizowany program.
Jezyk
˛
programowania posiada swoja˛ “gramatyk˛e” czyli zasady
określajace
˛ jego użycie. (tzw. Składnia).
Jezyk
˛
programowania posiada swoja˛ “semantyk˛e” czyli zasady
jego interpretacji.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
2 / 39
Elementy jezyka
˛
Gramatyka - Składnia
Składnia to zbiór reguł określajacy
˛ formalnie poprawne
konstrukcje jezykowe.
˛
Składnia jest głównym elementem, za pomoca˛ którego rozróżnia˛
sie˛ jezyki
˛
programowania. Dla przykładu operator przypisania w
jezyku
˛
Pascal ma postać: := a w jezyku
˛
C++ ma postać =.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
3 / 39
Elementy jezyka
˛
Gramatyka - Składnia
Składnia to zbiór reguł określajacy
˛ formalnie poprawne
konstrukcje jezykowe.
˛
Składnia jest głównym elementem, za pomoca˛ którego rozróżnia˛
sie˛ jezyki
˛
programowania. Dla przykładu operator przypisania w
jezyku
˛
Pascal ma postać: := a w jezyku
˛
C++ ma postać =.
BNF
Składnia jezyków
˛
programowania (formalnych) jest zapisywana w tzw.
notacji Backusa-Naura (ang. Backus-Naur form). Została ona
wymyślona przez Johna Backusa w latach 50. w czasie praca nad
jezykiem
˛
Fortran, a nastepnie
˛
zmodyfikowana przez Petera Naura i
użyta do zdefiniowania składni jezyka
˛
Algol.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
3 / 39
Gramatyki bezkontekstowe
Alfabet V = {v0 , . . . , vn } - dowolny skończony i niepusty zbiór
symboli (liter), z których bed
˛ a˛ zestawiane słowa jezyka.
˛
Słowo nad alfabetem V - wszystkie skończone, uporzadkowane
˛
ciagi
˛ złożone z elementów alfabetu.
Słowo puste, e - słowo nie majace
˛ żadnej litery.
Jezyk
˛
uniwersalny V ∗ - zbiór wszystkich słów nad alfabetem V .
Jezyk
˛
- dowolny podzbiór jezyka
˛
uniwersalnego V ∗ nad V .
Gramatyka˛ formalna˛ nazywamy sposób opisu jezyka
˛
formalnego, czyli podzbioru zbioru wszystkich słów skończonej
długości nad danym alfabetem.
Przykład: Jeśli V = {a, b}, to
V ∗ = {e, a, b, aa, ab, bb, aaa, aab, . . .}.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
4 / 39
Gramatyki bezkontekstowe
Formalnie gramatyka to krotka G = (V , T , P, S), gdzie:
V - zbiór symboli terminalnych - skończony, niepusty zbiór symboli
końcowych, z których budowane sa˛ słowa generowane przez
gramatyk˛e (zwany czasem alfabetem końcowym),
T - zbiór symboli nieterminalnych - skończony, niepusty zbiór
symboli pomocniczych,
P - lista produkcji - reguły gramatyki,
S - symbol startowy (aksjomat) - jest to wyróżniony symbol
pomocniczy, z niego wyprowadzane sa˛ wszystkie generowane
przez gramatyk G słowa.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
5 / 39
Gramatyki bezkontekstowe
Przykład:
Reguły definiujace
˛ jezyk
˛
postaci V ∗ = {1, 11, 111, . . .}, sa˛
nastepuj
˛ ace:
˛
Symbol poczatkowy:
˛
S
Produkcje (reguły zastepowania):
˛
1: S → 1
2: S → S 1
Wywód:
1:= S ⇒1 1
111 := S ⇒2 S1 ⇒2 S11 ⇒1 111
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
6 / 39
BNF
Przykład
Gramatyka (bezkontekstowa) generujaca
˛ liczby binarne:
<liczba binarna> ::=<liczba binarna><cyfra>
<liczba binarna> ::=<cyfra>
<cyfra> ::= 0|1
Gramatyka ma wiec
˛ nastepuj
˛ ac
˛ a˛ postać ogólna˛ G = (V , T , P, S):
V = {0, 1},
T = {< liczbabinarna >, < cyfra >},
P = {< liczbabinarna >::=< liczbabinarna >< cyfra >; <
liczbabinarna >::=< cyfra >; < cyfra >::= 0|1},
S =< liczbabinarna >.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
7 / 39
BNF
Przykład
Gramatyka (bezkontekstowa) generujaca
˛ liczbe˛ naturalna:
˛
<zero>::= 0
Przykład wartości: 0
<cyfra niezerowa>::= 1|2|3|4|5|6|7|8|9
Przykład wartości: 1, 2, 3
<cyfra>::= <zero> | <cyfra niezerowa>
Przykład wartości: 0, 1, 2, 3
<ciag
˛ cyfr>::= <cyfra> | <cyfra><ciag
˛ cyfr>
Przykład wartości: 0, 1, 01, 23, 99, 10023, 000001
<liczba naturalna>::=
<cyfra> | <cyfra niezerowa><ciag
˛ cyfr>
Przykład wartości: 0, 1, 2, 3456, 406, 556066
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
8 / 39
Zadanie
Przykład
Dany jest jezyk
˛
L(G) nad gramatyka˛ G =< V , T , P, S >, gdzie
V = {a, b}, T = {S, A}, P = {
(1) S → aAS;
(2) S → a;
(3) A → SbA;
(4) A → SS;
(5) A → ba;
}.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
9 / 39
Zadanie
Przykład
Dany jest jezyk
˛
L(G) nad gramatyka˛ G =< V , T , P, S >, gdzie
V = {a, b}, T = {S, A}, P = {
(1) S → aAS;
(2) S → a;
(3) A → SbA;
(4) A → SS;
(5) A → ba;
}.
Czy słowo aabbaa należy do jezyka?
˛
TAK
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
9 / 39
Zadanie
Przykład
Dany jest jezyk
˛
L(G) nad gramatyka˛ G =< V , T , P, S >, gdzie
V = {a, b}, T = {S, A}, P = {
(1) S → aAS;
(2) S → a;
(3) A → SbA;
(4) A → SS;
(5) A → ba;
}.
Czy słowo aabbaa należy do jezyka?
˛
TAK
Uzasadnienie:
aabbaa := S ⇒1 aAS ⇒3 aSbAS ⇒2 aabAS ⇒5 aabbaS ⇒2 aabbaa.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
9 / 39
Zadanie
Przykład
Dany jest jezyk
˛
L(G) nad gramatyka˛ G =< V , T , P, S >, gdzie
V = {a, b}, T = {S, A, B}, P = {
(1) S → aSB; (2) S → aAS;
(3) S → abS; (4) S → Sba;
(5) S → ab; (6) A → aa;
(7) B → bb; }.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
10 / 39
Zadanie
Przykład
Dany jest jezyk
˛
L(G) nad gramatyka˛ G =< V , T , P, S >, gdzie
V = {a, b}, T = {S, A, B}, P = {
(1) S → aSB; (2) S → aAS;
(3) S → abS; (4) S → Sba;
(5) S → ab; (6) A → aa;
(7) B → bb; }.
Czy słowa aababbabb, aaaaabbb należa˛ do jezyka?
˛
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
10 / 39
Zadanie
Przykład
Dany jest jezyk
˛
L(G) nad gramatyka˛ G =< V , T , P, S >, gdzie
V = {a, b}, T = {S, A, B}, P = {
(1) S → aSB; (2) S → aAS;
(3) S → abS; (4) S → Sba;
(5) S → ab; (6) A → aa;
(7) B → bb; }.
Czy słowa aababbabb, aaaaabbb należa˛ do jezyka?
˛
aababbabb := S ⇒1 aSB ⇒7 aSbb ⇒3 aabSbb ⇒4 aabSbabb ⇒5
aababbabb: TAK
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
10 / 39
Zadanie
Przykład
Dany jest jezyk
˛
L(G) nad gramatyka˛ G =< V , T , P, S >, gdzie
V = {a, b}, T = {S, A, B}, P = {
(1) S → aSB; (2) S → aAS;
(3) S → abS; (4) S → Sba;
(5) S → ab; (6) A → aa;
(7) B → bb; }.
Czy słowa aababbabb, aaaaabbb należa˛ do jezyka?
˛
aababbabb := S ⇒1 aSB ⇒7 aSbb ⇒3 aabSbb ⇒4 aabSbabb ⇒5
aababbabb: TAK
aaaaabbb := S ⇒2 aAS ⇒6 aaaS ⇒1 aaaaSB ⇒7 aaaaSbb ⇒5
aaaaabbb: TAK
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
10 / 39
Zadanie
Podaj przykład gramatyki G generujacej
˛ jezyk
˛
L(G) = {an bn : n ∈ N}
Odpowiedź:
G =< V , T , P, S > jest postaci V = {a, b}, T = {S}, P = {
(1) S → e;
(2) S → aSb;
}.
Przykładowe słowo: aabb := S ⇒2 aSb ⇒2 aaSbb ⇒1 aaebb = aabb.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
11 / 39
Zadanie
Podaj przykład gramatyki G generujacej
˛ jezyk
˛
L(G) = {w : w ∈ {a, b}∗ ∧ w = w R }, który jest jezykiem
˛
wszystkich palindromów (wyrazów, które wygladaj
˛ a˛ tak samo
niezależnie od tego, czy czytamy je normalnie, czy od tyłu) nad
alfabetem {a, b}.
Odpowiedź:
G =< V , T , P, S > jest postaci V = {a, b}, T = {S}, P = {
(1) S → e;
(2) S → aSa;
(3) S → bSb;
(2) S → a;
(2) S → b;
}.
Przykładowe słowo:
abaaba := S ⇒2 aSa ⇒3 abSba ⇒2 abaSaba ⇒1 abaeaba = abaaba.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
12 / 39
Elementy jezyka
˛
Semantyka
Definiuje ona znaczenie poszczególnych symboli i funkcji. Najcz˛eściej
definiuje sie˛ ja˛ słownie ze wzgledu
˛
na zrozumiałość dla ludzi.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
13 / 39
Elementy jezyka
˛
Semantyka
Definiuje ona znaczenie poszczególnych symboli i funkcji. Najcz˛eściej
definiuje sie˛ ja˛ słownie ze wzgledu
˛
na zrozumiałość dla ludzi.
Typy danych
Każdy jezyk
˛
operuje na danych. Z tego wzgledu
˛
niezbedne
˛
jest
podzielenie ich na różne typy. Na przykład:
typ całkowity
typ rzeczywisty (liczby zmiennoprzecinkowe)
typ logiczny (false/true)
typ łańcuchowy (ciag
˛ znaków)
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
13 / 39
Elementy jezyka
˛
Standardowe Biblioteki
Biblioteka zawiera funkcje i procedury pozwalajace
˛ realizować różnego
rodzaju zadania. Na przykład:
Obsługa wejścia-wyjścia.
Obsługa plików.
Zarzadzanie
˛
pamieci
˛ a.
˛
Operacje na ciagach
˛
tekstowych.
Obsługa wielowatkowości.
˛
itp.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
14 / 39
Jezyki
˛
porgramowania
Obecnie na świecie istnieje wiele jezyków
˛
programowania i ciagle
˛
powstaja˛ nowe.
Najpopularniejsze jezyki
˛
programowania (kolejność zgodna z
http://www.tiobe.com/index.php/content/
paperinfo/tpci/index.html)
1
C
9
Perl
2
Java
10
JavaScript
3
C++
11
Ruby
4
Objective-C
12
Visual Basic .NET
5
C#
13
PL/SQL
6
PHP
14
Delphi/Object Pascal
7
Visual Basic
15
Lisp
8
Python
16
Logo
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla 17
Nauczyciela
Wykład 11
15 / 39
Historia C i C++ w wielkim skrócie
Przed C++ istniał jezyk
˛
C.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
16 / 39
Historia C i C++ w wielkim skrócie
Przed C++ istniał jezyk
˛
C.
Jezyk
˛
C został zaprojektowany przez Dennisa Ritchie’ego w
laboratoriach Bella, w latach 70-tych XX wieku, a jego
poprzednikiem był interpretowany jezyk
˛
B, który Ritchie rozwinał˛
właśnie w jezyk
˛
C.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
16 / 39
Historia C i C++ w wielkim skrócie
Przed C++ istniał jezyk
˛
C.
Jezyk
˛
C został zaprojektowany przez Dennisa Ritchie’ego w
laboratoriach Bella, w latach 70-tych XX wieku, a jego
poprzednikiem był interpretowany jezyk
˛
B, który Ritchie rozwinał˛
właśnie w jezyk
˛
C.
Jezyk
˛
C przeznaczony był głównie do pisania platform
operacyjnych oraz aplikacji niższego rz˛edu.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
16 / 39
Historia C i C++ w wielkim skrócie
Przed C++ istniał jezyk
˛
C.
Jezyk
˛
C został zaprojektowany przez Dennisa Ritchie’ego w
laboratoriach Bella, w latach 70-tych XX wieku, a jego
poprzednikiem był interpretowany jezyk
˛
B, który Ritchie rozwinał˛
właśnie w jezyk
˛
C.
Jezyk
˛
C przeznaczony był głównie do pisania platform
operacyjnych oraz aplikacji niższego rz˛edu.
Pierwszy okres rozwoju jezyka
˛
C to lata 1969-1973. W
szczególności w roku 1973 w jezyku
˛
C udało sie˛
zaimplementować jadro
˛
(ang. kernel) systemu operacyjnego Unix.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
16 / 39
Historia C i C++ w wielkim skrócie
Przed C++ istniał jezyk
˛
C.
Jezyk
˛
C został zaprojektowany przez Dennisa Ritchie’ego w
laboratoriach Bella, w latach 70-tych XX wieku, a jego
poprzednikiem był interpretowany jezyk
˛
B, który Ritchie rozwinał˛
właśnie w jezyk
˛
C.
Jezyk
˛
C przeznaczony był głównie do pisania platform
operacyjnych oraz aplikacji niższego rz˛edu.
Pierwszy okres rozwoju jezyka
˛
C to lata 1969-1973. W
szczególności w roku 1973 w jezyku
˛
C udało sie˛
zaimplementować jadro
˛
(ang. kernel) systemu operacyjnego Unix.
W roku 1978 Brian Kernighan i Dennis Ritchie opublikowali
dokumentacje˛ jezyka:
˛
The C Programming Language (wydanie
polskie, Jezyk
˛
ANSI C). Englewood Cliffs, NJ: Prentice Hall. ISBN
0-13-110163-3.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
16 / 39
Historia C i C++ w wielkim skrócie
Wersja jezyka
˛
C opisana w The C Programming Language cz˛esto
nazywana jest K&R C (od nazwisk autorów), aby odróżnić ja˛ od
późniejszego standardu C89 wprowadzonego w roku 1989,
nazywanego dziś ANSI C lub też Standard C.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
17 / 39
Historia C i C++ w wielkim skrócie
Wersja jezyka
˛
C opisana w The C Programming Language cz˛esto
nazywana jest K&R C (od nazwisk autorów), aby odróżnić ja˛ od
późniejszego standardu C89 wprowadzonego w roku 1989,
nazywanego dziś ANSI C lub też Standard C.
W roku 1990 standard ANSI C został zmodyfikowany i nazwany
C90.
W roku 1999 standard C90 został zmodyfikowany i nazwany C99.
W roku 2007 ogłoszono prace˛ nad nowym standardem C1X.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
17 / 39
Historia C i C++ w wielkim skrócie
Wersja jezyka
˛
C opisana w The C Programming Language cz˛esto
nazywana jest K&R C (od nazwisk autorów), aby odróżnić ja˛ od
późniejszego standardu C89 wprowadzonego w roku 1989,
nazywanego dziś ANSI C lub też Standard C.
W roku 1990 standard ANSI C został zmodyfikowany i nazwany
C90.
W roku 1999 standard C90 został zmodyfikowany i nazwany C99.
W roku 2007 ogłoszono prace˛ nad nowym standardem C1X.
W latach 1983-1985, w laboratoriach Bella, jezyk
˛
C został
udoskonalony przez Bjarne Stroustrupa i nazwany jezykiem
˛
C++;
C++ wzbogacił C o możliwość programowania obiektowego.
C++ stał sie˛ jezykiem
˛
programowania powszechnego użytku, a
jego wielka˛ zaleta˛ jest zgodność jego kodu źródłowego z kodem
źródłowym jezyka
˛
C.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
17 / 39
Historia C i C++ w wielkim skrócie
W październiku 1985 roku po raz pierwszy wydano komercyjna˛
wersje˛ jezyka
˛
C++. W tym samym roku Bjarne Stroustrup
opublikował ksiażk˛
˛ e:“The C++ Programming Language”.
Mimo uniwersalności jezyka
˛
C++, dopiero w latach 90-tych XX
wieku został uznany jako jeden z najbardziej popularnych jezyków
˛
ogólnego użytku.
C++ poczatkowo
˛
był głównie przeznaczony dla systemów UNIX.
Wciaż
˛ jezyk
˛
ten jest udoskonalany - wprowadzane sa˛ poprawki
ułatwiajace
˛ prace informatyków, a obecnie obowiazujacy
˛
stndard
to: ISO/IEC 14882:2011.
Oficjalna strona T HE C++ S TANDARDS C OMMITTEE:
http://www.open-std.org/jtc1/sc22/wg21/.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
18 / 39
Program w jezyku
˛
C
Program w C to plik (zbiór) tekstowy, który zawiera instrukcje
jezyka
˛
C (czyli ciagi
˛ znaków), zgodne z obowiazuj
˛ acym
˛
standardem tego jezyka
˛
(obecnie c99).
Pliki z programami źródłowymi w jezyku
˛
C powinny mieć
rozszerzenie c.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
19 / 39
Kompilacja programu w C
Podstawowym (i najprostszym) poleceniem kompilacji pliku o
nazwie plik.c jest
gcc plik.c
które w przypadku pomyślnym generuje plik wykonywalny o
nazwie a.out umieszczony w tym samym katalogu, zaś w
przypadku niepomyślnym wyświetla liste˛ komunikatów o błedach.
˛
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
20 / 39
Kompilacja programu w C
Jeśli chcemy, żeby plik wynikowy miał dowolna˛ inna˛ ustalona˛
przez nas nazwe˛ (rozszerzenie out nie jest obowiazkowe),
˛
możemy użyć polecenia postaci:
gcc plik.c -o nazwa
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
21 / 39
Kompilacja programu w C
Jeśli chcemy, żeby plik wynikowy miał dowolna˛ inna˛ ustalona˛
przez nas nazwe˛ (rozszerzenie out nie jest obowiazkowe),
˛
możemy użyć polecenia postaci:
gcc plik.c -o nazwa
Polecenie gcc umożliwia również jednoczesna˛ kompilacje˛ i
połaczenie
˛
w całość kilku plików źródłowych zawierajacych
˛
różne
fragmenty (ale nie dowolne) jednego programu.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
21 / 39
Kompilacja programu w C
Aby kompilować programy zgodne z najnowszym standardem c99
należy użyć nastepuj
˛ acego
˛
polecenia:
gcc -std=c99 plik.c -o nazwa
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
22 / 39
Kompilacja programu w C
Aby kompilować programy zgodne z najnowszym standardem c99
należy użyć nastepuj
˛ acego
˛
polecenia:
gcc -std=c99 plik.c -o nazwa
Aby kompilator gcc traktował ostrzeżenia jako błedy
˛ należy użyć
nastepuj
˛ acego
˛
polecenia:
gcc -std=c99 -Wall plik.c -o nazwa
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
22 / 39
Kompilacja programu w C
Aby kompilować programy zgodne z najnowszym standardem c99
należy użyć nastepuj
˛ acego
˛
polecenia:
gcc -std=c99 plik.c -o nazwa
Aby kompilator gcc traktował ostrzeżenia jako błedy
˛ należy użyć
nastepuj
˛ acego
˛
polecenia:
gcc -std=c99 -Wall plik.c -o nazwa
Do przeprowadzania bardziej skomplikowanych kompilacji i łacze
˛ ń
zalecany jest program make współpracujacy
˛ z zawierajacym
˛
polecenia dla niego plikiem Makefile.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
22 / 39
Kompilacja programu w C
W przypadku pomyślnego przebiegu kompilacji kompilator gcc nie
wyświetla żadnego komunikatu, zwraca jedynie sterowanie do linii
poleceń.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
23 / 39
Kompilacja programu w C
W przypadku pomyślnego przebiegu kompilacji kompilator gcc nie
wyświetla żadnego komunikatu, zwraca jedynie sterowanie do linii
poleceń.
W przypadku błedów
˛
kompilator gcc wyprowadza na
standardowe wyjście błedów
˛
(czyli zazwyczaj na ekran) od razu
cała˛ liste˛ wykrytych błedów
˛
wraz z podanymi numerami linii
programu, w których wystepuj
˛ a.
˛
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
23 / 39
Prawie najprostszy program w C
#include <stdio.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
24 / 39
Przykładowy program w C
Operatory arytmetyczne
#include <stdio.h>
int main (void)
{
int a = 100, b = 2, c =25, d = 4, result;
result = a - b; // odejmowanie
printf ("a - b = %i\n", result);
result = b * c; // mnożenie
printf ("b * c = %i\n", result);
result = a / c; // dzielenie
printf ("a / c = %i\n", result);
result = a + b * c; // priorytety
printf ("a + b * c = %i\n", result);
printf ("a * b + c * d = %i\n", a * b + c * d);
return 0;
}
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
25 / 39
Przykładowy program w C
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, cyfra, suma = 0;
printf("n = ");
scanf("%d", &n);
printf("Liczba: %d\n", n);
do {
cyfra = n%10;
suma += cyfra;
n /= 10;
} while (n > 0);
printf("Suma cyfr: %d\n", suma);
return 0;
}
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
26 / 39
Kompilacja programu w C++
Program w C++ to zbiór funkcji, a każda funkcja to zbiór instrukcji.
Program w C++ to plik (zbiór) tekstowy, który zawiera instrukcje
jezyka
˛
C++ (czyli ciagi
˛ znaków), zgodne z obowiazuj
˛ acym
˛
standardem tego jezyka.
˛
Plik zawierajacy
˛ program w jezyku C++ powinien mieć
rozszerzenie cpp (typowe dla kompilatorów firmy Microsoft,
Borland) lub CC (typowe dla kompilatorów firmy Sun) lub cc.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
27 / 39
Prawie najprostszy program w C
#include<iostream>
int main()
{
std::cout << "Hello World!\n";
return 0;
}
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
28 / 39
Prawie najprostszy program w C
#include<iostream>
using namespace std;
int main()
{
cout << "Hello World!\n";
return 0;
}
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
29 / 39
Przykładowy program w C++
#include <iostream>
int main() {
int n, cyfra, suma = 0;
std::cout << "n = ";
std::cin >> n;
do {
cyfra = n%10;
suma += cyfra;
n /= 10;
} while (n > 0);
std::cout << "Suma cyfr: " << suma << "\n";
return 0;
}
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
30 / 39
Historia jezyka
˛
JAVA w wielkim skrócie
1990 - Bill Joy w raporcie “Further” sugeruje firmie Sun
Microsystems stworzenie środowiska obiektowego na bazie C++.
1991 - W ramach projektu “Green” powstaje jezyk
˛
OAK - “Object
Application Kernel” (kerownik: James Gosling), przeznaczony dla
aplikacji w elektronice powszechnego użytku.
1995 - zmiana nazwy na JAVA ze wzgledu
˛
na zastrzeżenie nazwy
OAK.
1996 - Pojawia sie˛ Netscape zgodny z Java˛ 1.0, Sun propaguje˛
darmowe środowisko JDK 1.0.
1999 - Java 2 Nowe oblicze Javy.
Java jest jezykiem
˛
tworzenia programów źródłowych
kompilowanych do kodu bajtowego, czyli postaci wykonywanej
przez maszyne˛ wirtualna.
˛
Jego podstawowe koncepcje zostały przejete
˛ z jezyka
˛
Smalltalk (maszyna wirtualna, zarzadzanie
˛
pamieci
˛ a)
˛ oraz z
jezyka
˛
C++ (duża cz˛eść składni i słów kluczowych).
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
31 / 39
Platformy JAVY
JSE (Java Standard Edition) – dostarcza środowiska
programistycznego do tworzenia aplikacji desktopowych oraz
apletów na strony WWW,
JEE (Java Enterprise Edition) – dostarcza środowiska
programistycznego do tworzenia rozbudowanych biznesowych
aplikacji, stanowi rozszerzenie platformy JSE,
JME (Java Micro Edition) – dostarcza środowiska
programistycznego do tworzenia aplikacji na niewielkie urzadzenia
˛
typu telefony komórkowe,
Java Card technology – dostarcza środowiska
programistycznego do tworzenia oprogramowania dla
inteligentnych kart (np. kart bankomatowych) o bardzo małej
pamieci
˛ i niewielkiej mocy obliczeniowej.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
32 / 39
Platformy JAVY
Firma Sun dostarcza dwa rodzaje platform JSE. Najbardziej
rozpowszechniona,
˛ jest JRE.
JRE (Java Runtime Environment) – środowisko zawierajace
˛
niezbedne
˛
biblioteki oraz JVM czyli Wirtualna˛ Maszyne˛ Javy. JRE
znajduje sie˛ na wiekszości
˛
komputerów osobistych, jest bowiem
niezbedne
˛
dla uruchamiania aplikacji Java w systemie.
JDK (Java Development Kit) – środowisko zawierajace
˛ JRE oraz
dodatkowo narz˛edzia programistyczne, takie jak kompilator i
debuger. JDK umożliwia pisanie własnych aplikacji.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
33 / 39
Jak działa Java ?
Program w jezyku
˛
Java to plik tekstowy zawierajacy program
zapisany w jezyku
˛
Java.
Zwyczajowo program zapisuje sie˛ w plikach z rozszerzeniem
.java, np. hello.java.
Kod źródłowy, czyli nasz plik z rozszerzeniem *.java
kompilowany jest przez kompilator (javac) do kodu wynikowego
– plik *.class. Ten natomiast interpretowany jest przy pomocy
interpretera (java) i uruchamiany w maszynie wirtualnej Javy.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
34 / 39
Prawie najprostszy program w C
public class z1 {
public static void main(String[] args) {
System.out.println("Witaj w swiecie JAVY");
}
}
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
35 / 39
Prawie najprostszy program w C
import
public
public
int
java.util.Scanner;
class z2 {
static void main(String[] args) {
n=34, cyfra, suma = 0;
System.out.print("n=");
Scanner in = new Scanner(System.in);
n = in.nextInt();
do {
cyfra = n%10;
suma += cyfra;
n /= 10;
} while (n > 0);
System.out.println("Suma cyfr: "+suma);
}
}
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
36 / 39
Krótka historia jezyka
˛
Python
Python to interpretowany, interaktywny, skryptowy jezyk
˛
programowania stworzony przez Guido van Rossuma w 1990.
Jezyk
˛
został tak nazwany w ślad za programem telewizyjnym BBC
“Latajacy cyrk Monty Pythona”.
Obecnie Python rozwijany jest jako projekt Open Source,
zarzadzany
˛
przez Python Software Foundation, bed
˛ ac
˛ a˛
organizacja˛ non-profit.
3 grudnia 2008 roku został wydany Python 3.0. W stosunku do
wcześniejszych wersji jezyka
˛
Python w wersji 3.0 wprowadzono
wiele istotnych zmian, które spowodowały brak zgodności wstecz.
Najnowsza˛ wersja˛ jezyka
˛
Python jest wersja 3.2.3, która została
wydana 11 kwietniu 2012 roku.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
37 / 39
Krótka historia jezyka
˛
Python
Python posiada w pełni dynamiczny system typów i automatyczne
zarzadzanie
˛
pamieci
˛ a,
˛ jest zatem podobny do takich jezyków,
˛
jak
Tcl, Perl, Scheme czy Ruby.
Do zarzadzania
˛
pamieci
˛ a˛ stosuje sie˛ architekture˛ garbage
collection podobnie jak w jezyku
˛
Ruby czy Java.
Python posiada wbudowane abstrakcyjne typy danych takie jak
np. listy, krotki, zbiory i słowniki.
W Pythonie możliwe jest programowanie obiektowe,
programowanie strukturalne i programowanie funkcyjne.
Cecha˛ wyróżniajac
˛ a˛ Pythona spośród innych jezyków jest
stosowanie wcieć
˛ do wydzielania bloków kodu.
Program napisany w jezyku Python najpierw kompilowany jest do
postaci pośredniej, która nastepnie
˛
wykonywana jest przez
Wirtualna Maszyne Pythona (PVM)
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
38 / 39
Kompilacja programu w Python
Program (skrypt) w Pythonie to plik tekstowy zawierajacy program
zapisany w jezyku
˛
Python.
Zwyczajowo skrypty Pythona zapisuje sie˛ w plikach z
rozszerzeniem .py, np. hello.py.
Aby wykonać skrypt hello.py wydajemy w konsoli polecenie:
python hello.py
Mozemy tez uruchomić skrypt hello.py wydajac w konsoli
polecenie: ./hello.py o ile w pierwszej linii pliku hello.py
znajduje sie˛ odwołanie do interpretera:
#!/usr/bin/env python3
a ponadto plik hello.py ma ustawiony atrybut wykonywalności.
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
39 / 39
Prawie najprostszy program w Python
#!/usr/bin/env python
print("Hello World!")
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
40 / 39
Prawie najprostszy program w Python
#!/usr/bin/env python
suma = 0
n = input("n=")
cyfra = n%10;
suma += cyfra;
n /= 10;
while (n > 0):
cyfra = n%10;
suma += cyfra;
n /= 10;
print("Suma cyfr: ", suma)
Bożena Woźna-Szcześniak (AJD)
Podstawy Informatyki dla Nauczyciela
Wykład 11
41 / 39