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