JĘZYKI I PARADYGMATY

Wielkość: px
Rozpocząć pokaz od strony:

Download "JĘZYKI I PARADYGMATY"

Transkrypt

1 JĘZYKI I PARADYGMATY PROGRAMOWANIA JĘZYKI I PARADYGMATY PROGRAMOWANIA- UWAGI WSTĘPNE

2 Informacje ogólne Kontakt: Konsultacje: pok.116 WI 2 Materiały:

3 Zakres Przegląd paradygmatów programowania Przegląd języków programowania Dane Typy Podprogramy Obiekty Programowanie imperatywne: C, C++ Programowanie obiektowe: C++, Java, C#, Python, Ruby Programowanie funkcyjne: Lisp, Haskell, Clojure, Python, Ruby Programowanie logiczne: Prolog Inne paradygmaty programowania

4 Literatura P.Van Roy, S.Haridi- Programowanie. Koncepcje techniki i modele, Helion, Język C: B.Kernighan, D.Ritchie- Język ANSI C, WNT, 2007 Język C++: B.Eckel- Thinking in C++ tom I/II, Helion, 2002, 2004 Język JAVA: B.Eckel- Thinking in Java, Wydanie IV, Helion, 2006 Język C#: K.Michelsen, Język C#. Szkoła programowania, Helion, 2007 Język Python M.Summerfield- Python 3. Kompletne wprowadzenie do programowania. Wydanie II, Helion, 2010 Język Ruby P.Cooper- Programowanie w Ruby. Od podstaw, Helion,

5 Zagadnienia Paradygmat oraz paradygmat programowania Język programowania i jego cechy Przegląd paradygmatów programowania Ewolucja języków programowania

6 Co to jest paradygmat? gr.παράδειγμα (parádeigma)- wzorzec, przykład 1. (filozofia) przyjęty sposób widzenia rzeczywistości w danej dziedzinie, doktrynie, itp. (np.paradygmat ontologiczny, mentalistyczny, lingwistyczny) 2. (językoznawstwo) zespół form fleksyjnych (deklinacyjnych lub koniugacyjnych) właściwy danemu typowi wyrazów; wzorzec, model deklinacyjny lub koniugacyjny (Słownik Języka Polskiego)

7 Co to jest paradygmat programowania? Nie jest to wzorcowy sposób pisania programów. Nie są to przykłady poprawnych programów. Zestaw typowych dla danej grupy języków programowania mechanizmów oferowanych programiście Zbiór sposobów interpretacji owych mechanizmów przez semantykę języka czyli jak rzeczywistość (zewnętrzna (modelowana) oraz wewnętrzna (maszynowa)) jest postrzegana poprzez pryzmat danego języka

8 Co różni paradygmaty programowania? sposób patrzenia na dane (struktury danych + język programowania) sposób patrzenia na kod (algorytm + język programowania) sposób wiązania kodu z danymi sposób patrzenia na przepływ sterowania

9 Paradygmaty programowania paradygmat programowania model obliczeniowy oparty na tzw. języku kernelowym (zawierajacym niewiele programistycznie istotnych elementów) (istotna cecha- typy abstrakcji, np. model obiektowy) programowanie multiparadygmatowe (używanie rozmaitych modeli obliczeniowych w jednym programie)

10 Paradygmatów w tworzeniu systemu informatycznego Paradygmaty programowania dotyczą: implementacji testowania integracji (połączenie w całość poszczególnych komponenetów) systemu informatycznego Paradygmat programowania definiuje paradygmat projektowania programowania (wzorce projektowe, komponenty, architekturę oprogramowania, frameworki)

11 Co to jest język programowania? Języki programowania- jezyk formalny (sztuczny) służący do zapisu programów komputerowych. Dokładniej: język formalny zapewniający komunikację człowieka z komputerem i przeznaczony do opisu danych oraz algorytmów ich przetwarzania w komputerze z zastosowaniem słów kluczowych (np. main) oraz symboli (np. [ ]).

12 Języki programowania- podstawowe cechy Każdy język programowania jest określony przez swoją syntaktykę oraz semantykę, tj. zbiór reguł określających, jakie rodzaje wyrażeń można wykorzystać w pisaniu programów i jakie jest ich znaczenie funkcjonalne

13 Języki programowania- podstawowe cechy Syntaktyka (składnia, gramatyka, forma)- zbiór reguł, mówiących jak wygląda poprawny program w danym języku, czyli np.: jak tworzy się polecenia i wyrażenia. jaką postać mają struktury sterowania (instrukcje warunkowe, pętle, skoki). jak zapisuje się deklaracje.

14 Syntaktyka Założenie: dany jest ustalony alfabet A (zbiór skończony, niepusty), np. A={0,1} lub A=ASCII Elementy zbioru A nazywamy symbolami, znakami lub literami alfabetu Słowem nazywamy ciąg symboli alfabetu Zbiór wszystkich napisów, jakie można utworzyć ze znaków alfabetu A, oznaczamy A* Każdy podzbiór zbioru A* to pewien język Wniosek: język to zbiór napisów złożonych ze znaków danego alfabetu

15 Klasy gramatyk (wg hierarchii Chomsky ego) Klasa 3- Gramatyki regularne do opisu leksemów (tokenów) czyli podstawowych (atomowych) elementów języka, takich jak słowa kluczowe (np. if, while),literały (np. 4), operatory (np. +, *) identyfikatory (np. x) wyrażenia regularne (ang. regular expressions (regex)) wzorce opisujące zbiór poprawnych leksemów, ich podział na poszczególne podzbiory

16 Klasy gramatyk (wg hierarchii Chomsky ego) Klasa 2- Gramatyki bezkontekstowe do opisu składni, czyli wyglądu wyrażeń, instrukcji czyli elementów składających się z poprawnych leksemów odpowiednio względem siebie ustawionych notacja BNF (Backusa-Naura) oraz EBNF (Extended BNF)

17 Notacja Backusa-Naura BNF Sposób zapisu języków programowania Definicja języka w notacji BNF = zbiór reguł Ogólna postać reguły: <symbol> ::= <definicja_symbolu> symbol- pojedynczy symbol nieterminalny (pomocniczy (do definiowania języka)) definicja_symbolu- ciąg symboli terminalnych (należących do alfabetu języka (docelowych)) oraz nieterminalnych Sens reguły: symbol występujący po lewej stronie znaku ::= można zastąpić tym, co pojawia się po prawej stronie. (Innymi słowy, stwierdzamy, że to, co stoi po lewej stronie, może wyglądać jak to, co stoi po prawej.)

18 Rozszerzenia w EBNF Często stosuje się dodatkowe konwencje oraz symbole uproszczające zapis: alternatywne warianty reguły (pionowa kreska ): pojęcie ::= wariant1 wariant2 wariant3 opcjonalna część reguły (nawiasy kwadratowe [...]): pojęcie ::= część-konieczna [ część-opcjonalna ] dowolne wielokrotne powtórzenie (nawiasy klamrowe {...}): pojęcie ::= część-konieczna { część-powtarzalna } Grupowanie alternatywnych fragmentów definicji (nawiasy okrągłe (...)): pojęcie ::= ( coś coś-innego ) coś-jeszcze-innego

19 Rozszerzenia w EBNF Jednoznakowe symbole terminalne umieszcza się w cudzysłowie, dla odróżnienia ich od symboli samej notacji BNF. Symbole terminalne pisze się czcionką wytłuszczoną; nie jest wówczas konieczne pisanie nawiasów kątowych wokół symboli nieterminalnych. Np. def. rekurencyjna niepustej listy identyfikatorów, rozdzielonych przecinkami: lista_identyfikatorów ::= identyfikator lista_identyfikatorów "," identyfikator Wersja alternatywna zawierająca nawias klamrowy: lista_identyfikatorów ::= identyfikator { "," identyfikator } Przykład: (język C) pętla-dopóki ::= while "(" wyrażenie ")" instrukcja

20 Języki programowania- podstawowe cechy Semantyka (znaczenie, treść)- znaczenie form zapisanych zgodnie ze składnią języka, czyli co one robią. Przykład: (instrukcja warunkowa) (język C) 1. Składnia: if "(" wyrażenie ")" instrukcja 2. Semantyka: (opis potoczny- nie formalny, ale zrozumiały) sprawdź podane wyrażenie i jeśli jest prawdziwe, to wykonaj podaną instrukcję.

21 Języki programowania- podstawowe cechy Język programowania jest językiem sztucznym opierającym się na jezyku etnicznym lub na wyrazach sztucznych o brzmieniu łatwym do zapamiętania

22 Paradygmaty i języki programowania, a implementacja algorytmów Ten sam algorytm można zaimplementować na różne sposoby zgodnie z różnymi paradygmatami programowania i różnymi językami programowania Wybór paradygmatu programowania oraz języka programowania ma nieraz kluczowy wpływ na łatwość/jakość implementacji algorytmów

23 Paradygmaty i języki programowania, a implementacja algorytmów Zastosowanie odpowiedniego paradygmatu programowania oraz języka programowania do realizacji zadania programistycznego jest bardzo ważne, ale nie może rozwiązać samego problemu. Język programowania to środek do realizacji założeń paradygmatu

24 Paradygmaty i języki programowania, a implementacja algorytmów Język może: zawierać środki pozwalające wyrażać pardygmat wprost (wsparcie bezpośrednie) pozwalać wyrażać paradygmat kosztem dodatkowego kodowania (tzn. łatwiej jest programować w oparciu o dany paradygmat, ale można też kodować z zastosowaniem mechanizmów innego).

25 Generacje języków programowania Języki programowania można podzielić na pięć wyraźnie różniących się generacji języków wyskiego poziomu (ang. high-level language) Generacje języków opisują zaawansowanie (rozbudowanie) struktury języka, co jest równocześnie związane z łatwością posługiwania się nimi.

26 Generacje języków programowania Początki: pierwszy język programowania (opisany): Plankalkühl, Konrad Zuse ( ) języki maszynowe (lowest-level programming language) języki asemblerowe (podobna struktura, zbiór instrukcji, wprowadzenie nazw w miejsce liczb)

27 Generacje języków programowania Przykładowy fragment programu w pamięci: Interpretacja w postaci symboli asemblera 8D 7D C0 lea edi,[ebp-40h] B mov ecx,10h B8 CC CC CC CC mov eax,0cccccccch F3 AB rep dword ptr [edi] C6 05 D A mov byte ptr [c (004225d8)],0Ah A0 D mov al,[c (004225d8)] add al,5 A2 D mov [c (004225d8)],al B mov eax,1

28 Generacje języków programowania 1GL ( ) Fortran I (FORmula TRANslation) (1957) Algol 58 (ALGOrithmic Language) (1958) FLOW-MATIC (Business Language version 0) podstawa obliczeń- wyrażenia matematyczne

29 Generacje języków programowania 2GL ( ) nowość: wykorzystanie paradygmatu imperatywnego COBOL (Common Business Oriented Language) (1959) wprowadzenie: podprogramów (Fortran II) struktury blokowej programów i typów danych (Algol 60) obsługa plików (COBOL)

30 Ewolucja języków programowania 2GL ( ) nowość: wykorzystanie paradygmatu funkcyjnego język LISP (LISt Processing) (1959)

31 Ewolucja języków programowania 3GL ( ) PL/1- próba stworzenia języka uniwersalnego (everything for everybody) (Fortran + COBOL + Algol) (IBM) (1964) BASIC (Beginners All-purpose Symbolic Instruction Code ) nowość: wykorzystanie paradygmatu obiektowego Simula 67 (rozszerzenie Algola 60) Smalltalk (pierwszy obiektowy język programowania) (1968)

32 Ewolucja języków programowania 4GL ( ) programowanie to nauka C (a portable systems language) (Kernighan, Ritchie) (1972) (książka 'The C Programming Language' (1978) Pascal (simplicity by design) (Wirth) (1971)

33 Ewolucja języków programowania 4GL ( ) nowość: wykorzystanie paradygmatu logicznego PROLOG (PROgramming Based on LOGic) (1971) Scheme (dialekt Lispa) (1975)

34 Ewolucja języków programowania 5GL (1980-) języki obiektowe: C C++ (C with classes) (Bjarne Stroustrup) (1983) Pascal Object Pascal Modula-2 Modula-3 języki programowania logiki: Prolog Mercury

35 Ewolucja języków programowania 5GL (1980-) języki programowania funkcyjnego: Erlang (1986) Haskell (1990) programowanie współbieżne Linda (1986)

36 Ewolucja języków programowania 5GL (1980-) języki skryptowe: Perl (Larry Wall) (1987) Python (G. van Rossum) (1991) Ruby (Yukihiro Matsumoto) (1993) PHP (Rasmus Lerdorf) (1994) JavaScript (poprzednia nazwa LiveScript) (Netscape) (1995)

37 Ewolucja języków programowania 5GL (1980-) języki tworzenia aplikacji internetowych: Java (an Imperative-Based Object-Orientd Language) (Sun Microsystems) (1995) C# (a C-Based Language for the New Millennium) (Microsoft) (2000)\ Go ('code less, compile quicker, execute faster have more fun') (Google) (2009)

38 Ewolucja języków programowania 5GL (1980-) języki oparte na JVM (Java Virtual Machine): Jyhon (1997) JRuby (2001) Scala (2003) Groovy (2003) Clojure (2007)

39 Ewolucja języków programowania 5GL (1980-) języki oparte na CLI (Common Language Infrastructure): VB.NET (2001) J# (2002) F# (2005) IronPython (2006) IronRuby (2010)

40 Ewolucja języków programowania 5GL (1980-) wykorzystanie paradygmatu programowania generycznego (uniezależnienie od siebie algorytmów oraz struktur danych) język Ada (ANSI Ada 1983) biblioteka STL (C++)

41 Ewolucja języków programowania 5GL (1980-) hybrydowe języki programowania/znaczników XSLT (extensible Stylesheet Language Transformations) (W3C) (końcówka lat 1990-ych) JSP (Java Server Pages)

42

43 Ewolucja języków programowania Tendencja rozwojowa: od języków programowania bliskich maszynie do języków programowania bliskich rozwiązywanym problemom zmniejsza się liczba instrukcji zwiększa się czytelność kodu

44 Paradygmaty programowania Imperatywne imperatywne obiektowe proceduralne strukturalne Deklaratywne funkcyjne logiczne Specyficzne dla dziedziny (ang. specific domain) współbieżne, równoległe, rozproszone sterowane przepływem danych komponentowe aspektowe zdarzeniowe agentowe generyczne...

45 Programowanie imperatywne Najbardziej naturalny paradygmat dla maszyny Program- lista instrukcji (rozkazów) Instrukcje- mniej lub bardziej elementarne Instrukcje wykonywane są sekwencyjnie. Skoki: bezwarunkowe (instrukcja goto) warunkowe

46 Programowanie imperatywne Powstałe w oparciu o abstrakcyjną architekturę von Neumanna

47 Architektura von Neumanna maszyna składa się z pamięci oraz jednostki centralnej, która wykonuje rozkazy (procesora); rozkazy oraz dane zapisane są w tej samej pamięci w ten sam sposob; rozkazy są kolejno z pamięci wczytywane do jednostki centralnej i wykonywane; każdy rozkaz powoduje zmianę stanu maszyny rozumianego jako zawartość całej pamięci włącznie z rejestrami i znacznikami procesora; rozkazy mogą zmieniać wewnętrzne ustawienie jednostki centralnej, w tym miejsce, z którego będzie czytany następny rozkaz.

48 Programowanie imperatywne Języki wysokiego poziomu posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego Przykład wykorzystania abstrakcji: zmienne- abstrakcja komórek pamięci

49 Programowanie imperatywne Przykłady języków: C C++ Fortran Ada Pascal Object Pascal Basic

50 Programowanie imperatywne Przykład programu imperatywnego (język C, C++): int a, b, pole; int main() { a=2; b=3; pole=a*b; return 0; }

51 Programowanie proceduralne Rozszerzenie programowania imperatywnego Wykorzystanie stosu oraz rozkazów jego obsługi (TOP, PUSH, POP)

52 Programowanie proceduralne Podział zadania programistycznego na podzadania i ich niezależna (od siebie nawzajem) implementacja w postaci podprogramów (procedur, funkcji, metod, operacji) Procedury mogą być wielokrotnie (również rekurencyjnie) wywoływane z różnymi parametrami, Niezalecane jest korzystanie z efektów ubocznych (rozumianych, jako zmiana wartości zmiennych globalnych) lecz przekazywanie danych i wyników w parametrach procedur

53 Programowanie proceduralne Przykład programu proceduralnego (język C): #include <stdio.h> void delta(int a, int b, int c) { int delta = b*b-4*a*c; printf("delta wynosi: %d\n"); } int main() { delta(5,3,4); delta(1,2,3); return 0; }

54 Programowanie proceduralne Umożliwienie powstania techniki programowania bottom-up Projektowanie oprogramowania od małych części (podalgorytmów) zapisywanych w postaci podprogramów. Na ich bazie są budowane większe podprogramy, z nich jeszcze większe, itd. Ułatwienie pracy nad programem, w szczególności w fazach projektowania oraz usuwania błędów Umożliwienie rozwoju: programowania zespołowego bibliotek programowania

55 Programowanie proceduralne Przykłady języków: C C++ Fortran Ada Pascal Object Pascal Basic Python Ruby

56 Programowanie strukturalne Udoskonalenie paradygmatu proceduralnego Używanie prostych, dobrze zdefiniowanych struktur (konstrukcji programistycznych) Dla małych jednostek programu (zestawu elementarnych instrukcji) wyróżniamy 3 typy struktur sterujących (wg Dijkstry): sekwencja (konkatenacja)-wykonywanie instrukcji w określonej kolejności- operator ; (wiele języków) selekcja (wybór)-wykonywanie jednej z wielu instrukcji zależnie od stanu programu- if,if...else, switch (wiele języków) iteracja- powtarzanie instrukcji tak długo, jak długo spełniony (lub niespełniony) jest dany warunek- pętle for, while, do...while (wiele języków)

57 Programowanie strukturalne Używanie prostych, dobrze zdefiniowanych struktur (konstrukcji programistycznych) Dla dużych jednostek programu rozbicie ich na mniejsze jednostki (zgodnie z zasadą rozumienia fragmentu bez konieczności rozumienia całości): podprogram- pozwala wydzielony podalgorytm zapisać, nazwać i wywoływać wielokrotnie, z zastrzeżeniem, że ma dokładnie jeden punkt wejścia oraz dokładnie jeden punkt wyjścia rekurencja- definiowanie podprogramu za pomocą tego samego podprogramu unikanie skoków bezwarunkowych (wg Dijkstry) (goto - Pascal)

58 Programowanie strukturalne Wersja liberalna programowania strukturalnego Motto: wygoda jest ważniejsza niż wygląd Wprowadzenie tzw. skoków strukturalnych instrukcja return- pozwala tworzyć funkcje z wieloma punktami wyjścia instrukcja break- pozwala opuścić pętlę w dowolnym miejscu instrukcja continue- pozwala przeskoczyć część bieżącej iteracji pętli w dowolnym miejscu obsługa wyjątków daje możliwość zajęcia się sytuacjami wyjątkowymi bez mnożenia zbędnych bytów (zmiennych, warunków itp.) instrukcja goto (wyjątkowo dopuszczalna)

59 Programowanie strukturalne Przykład 1 programu strukturalnego (język C) #include< stdio.h > int main(){ int a[50],n,count_neg=0,count_pos=0,i; printf( Wprowadz rozmiar tablicy ); scanf( %d,&n); printf( Wprowadz elementy tablicy ); for (I=0;I < n;i++) scanf( %d,&a[i]); for(i=0;i < n;i++){ if(a[i] < 0) count_neg++; else count_pos++; } printf( Mamy %d liczb ujemnych w tablicy,count_neg); printf( Mamy %d liczb dodatnich w tablicy,count_pos); return 0; }

60 Programowanie strukturalne Przykład 2 programu strukturalnego (język C++) #include <iostream.h> #include <conio.h> int factorial(int); int main() { int number; cout << "Wprowadz liczbe nieujemna: "; cin >> number; if (number < 0) cout << "To nie jest liczba nieujemna.\n"; else cout << number << " silnia wynosi: " << factorial(number) << endl; getch(); return 0; } int factorial(int number) { int temp; if(number <= 1) return 1; temp = number * factorial(number - 1); return temp; }

61 Programowanie strukturalne Umożliwienie powstania techniki programowania top-down Podzielenie zadania programistycznego na mniejsze podzadania, zgodnie z przewidywaną strukturą na najwyższym poziomie, wypełnienie tej struktury rozkazami elementarnymi (tam gdzie jest to możliwe), a następnie (tam gdzie nie można było wstawić rozkazów elementarnych) zastosowanie rekurencyjnego dzielenia w głąb, do coraz drobniejszych zadań. Technika top-down jest odwrotna do techniki buttom-up.

62 Programowanie strukturalne Przykłady języków: C C++ Fortran Ada Pascal Object Pascal Basic Python Ruby

63 Programowanie obiektowe ang. Object Oriented Programming (OOP) Programowanie obiektowe jest do pewnego stopnia rozszerzeniem paradygmatu programowania proceduralnego i strukturalnego Rozszerzenie formalne: klasa class obiekt (instancja klasy)

64 Programowanie obiektowe (OOP) Program to zbiór porozumiewających się ze sobą aktywnych obiektów, czyli jednostek zawierających pewne dane i umiejących wykonywać na nich pewne operacje Ważną nową cechą jest powiązanie danych (czyli stanu) z operacjami na nich ( metodamiforma podprogramu) w całość, stanowiącą odrębną jednostkę obiekt

65 Programowanie obiektowe Konsekwecje rozszerzenia formalnego: dziedziczenie pozwala tworzyć obiekty bardziej skomplikowane na bazie prostszych dziedziczenie klas przekłada się na zawieranie się jednej w drugiej, a to oznacza, że obiekty mogą należeć jednocześnie do wielu klas, co ma istotne znaczenie dla polimorfizmu polimorfizm dynamiczny (polimorfizm obiektowy) dzięki dziedziczeniu pozwala obiektom automatycznie dobierać odpowiednie metody do swojego aktualnego typu enkapsulacja (hermetyzacja) polega na tym, że tylko pewne dane i metody obiektu (stanowiące jego interfejs) sa widoczne na zewnatrz, dla innych obiektów; jego implementacja jest ukryta przed umyślnym bądź przypadkowym uszkodzeniem czy też złym wykorzystaniem

66 Programowanie obiektowe Konsekwecje rozszerzenia formalnego: abstrakcja danych wynika bezpośrednio z hermetyzacji i dziedziczenia można w prosty sposób definiować ogólne obiekty (czy też klasy), które są jedynie wzorcami pewnych bardziej skomplikowanych, doprecyzowanych obiektów

67 Programowanie obiektowe Paradygmat obiektowy najlepiej odzwierciedla sposób, w jaki ludzie myślą o świecie Podobieństwo modelu obiektowego do świata rzeczywistego Paradygmat obecnie dominujący (TIOBE Programming Community Index) Luty 2013: 1. Java 3. Objective-C 4. C++ 5. C# 7. Python 10. Ruby

68 Programowanie obiektowe Przykład programu obiektowego (język Java): public class HelloWorld { public static void main(string[] args) { System.out.println("Hello, World!"); } }

69 Programowanie obiektowe Przykłady języków: Java C# C++ Ada Objective-C Smalltalk Python Ruby

70 Programowanie deklaratywne Programista pisząc program podaje (deklaruje) programowi pewne zależności oraz cele, które program ma osiągnąć (co ma być osiągnięte?) Wygodny sposób komunikowania poleceń Nie podaje wprost sposobu osiągnięcia wyników (jak w przypadku programowania imperatywnego- jak osiągnąć wynik?)

71 Programowanie funkcyjne Podstawa matematyczna- rachunek lambda (Alons Church, 1941) w oparciu o wyrażenie lambda ( λ- wyrażenie) z możliwością zdefiniowania funkcji bez nadawania jej nazwy (funkcje anonimowe) Postać ogólna: λ parametry.wartość funkcji Przykład 1. λ x.x 2 to funkcja obliczająca kwadrat danego parametru (λ x.x 2 (3)=3 2 =9) Przykład 2. λ x y.x+y to funkcja obliczająca sumę parametrów (λ x y.x+y (3 4)=3+4=7)

72 Programowanie funkcyjne Funkcje anonimowe mogą być argumentem innej funkcji Wartością zwracaną może być funkcja Przykład 3. Pochodna(F) = F' Pochodna(λ x.x 2 ) = (λ x.2*x)

73 Programowanie funkcyjne-c.d. Program to złożona funkcja (w sensie matematycznym), która otrzymawszy dane wejściowe wylicza na ich podstawie pewien wynik Zasadniczą różnicą w stosunku do poprzednich paradygmatów jest brak dostępu do stanu maszyny Nie ma zmiennych modelujących komórki pamięci Nie ma efektów ubocznych (bo nie ma stanu funkcji)

74 Programowanie funkcyjne-c.d. Nie ma tradycyjnie rozumianych pętli (bo wymagają zmiennych (lub innego dostępu do stanu maszyny) do sterowania ich przebiegiem) Funkcje dla tych samych parametrów zwracają zawsze to samo (przezroczystość odniesień) Przykład (Język C (programowanie imperatywne)): time(null) time(null) #include <stdio.h> #include <time.h> int main() { } time_t seconds; seconds = time(null); printf("%ld sekund od 1 stycznia 1970 GMT", seconds); return 0;

75 Programowanie funkcyjne-c.d. Konstruowanie programów to składanie funkcji zazwyczaj z istotnym wykorzystaniem rekurencji (zamiast pętli) oraz wyrażeń warunkowych Charakterystyczne jest definiowanie funkcji wyższego rzędu (dla których argumentami oraz których wynikami mogą być funkcje (a nie tylko proste dane jak liczby lub napisy- patrz język C)

76 Programowanie funkcyjne-c.d. Przykład programu funkcyjnego Język LISP USER(1)> (* 2 (cos 0) (+ 4 6)) ; *,+,cos to funkcje numeryczne ==> 20 Język Clojure USER> (* 2 (Math/cos 0) (+ 4 6)) ; *,+,Math/cos to funkcje numeryczne ==> 20

77 Programowanie funkcyjne-c.d. Przykład języków: Lisp Haskell Erlang Clojure Scala F# Python Ruby

78 Programowanie logiczne Podstawowa koncepcja- predykat np. ojciec (jacek, agata) Na program składa się: zbiór zależności (przesłanek) pewne stwierdzenie/pytanie (cel) Wykonanie programu to próba udowodnienia stwierdzenia w oparciu o podane przesłanki Obliczenia wykonywane są przy okazji dowodzenia stwierdzenia Podobnie jak w programowaniu funkcyjnym, brak jest rozkazów Opisujemy to co wiemy oraz co chcemy uzyskać

79 Programowanie logiczne Przykład jezyka logicznego (język Prolog) Znane fakty: Adam jest ojcem Grzegorza Grzegorz jest ojcem Jana i Joanny bycie dziadkiem oznacza bycie ojcem ojca ojciec(adam, grzegorz). ojciec(grzegorz, ja). ojciec(grzegorz, joanna). dziadek(x, Z) :- ojciec(x, Y), ojciec(y, Z).?- dziadek(x, jan).

80 Paradygmat programowania równoległego Rozdział procesu wykonywania programu na wiele procesorów (CPU, GPU) (multiprocesormaszyna wieloprocesorowa ze wspólną pamięcią) lub wiele rdzeni procesora w tym samym czasie Wykorzystanie języków zorientowanych obiektowo (C++ (biblioteka OpenMP), Java (interfejs JOMP) lub imperatywnych (C, Fortran (biblioteka OpenMP), CUDA C)

81 Paradygmat programowania równoległego Model OpenMP Rozszerzenie modelu strukturalnego / obiektowego: mechanizm synchronizacji procesów oraz wątków (np. wykorzystanie modelu fork and join) mechanizm współdzielenia pamięci i innych zasobów komputera (wykorzystanie klauzul: shared, private)

82 Paradygmat programowania równoległego - przykład #include <omp.h> int main(int argc, char **argv) { const int N = ; int i, a[n]; //równoległa inicjalizacja wartości dużej tablicy //każdy wątek wykonuje część pracy #pragma omp parallel for for (i = 0; i < N; i++) a[i] = 2 * i; } return 0;

83 Modele programowania równoległego Cilk Plus (zintegrowany z kompilatorami C/C++) Wyrażenie równoległości w oparciu o model fork and join: cilk_spawn / cilk_sync (asynchroniczne wywołanie funkcji / synchronizacja wywołań) cilk_for (umożliwienie równoległego wykonywania iteracji pętli for)

84 Modele programowania równoległego Przykład 1 cilk_spawn hello(); cilk_spawn world(); cilk_sync; Przykład 2 cilk_for(int i =0; i<1000; i++) sum+=i;

85 Inne modele programowania równoległego Threading Building Blocks (biblioteka dla kompilatorów zgodnych z ISO C++) Array Building Blocks CUDA (GPUs) OpenCL (GPUs, CPUs, APUs)

86 Paradygmat programowania rozproszonego Rozdział procesu wykonywania programu na wiele maszyn (procesorów połącznych siecią) w tym samym czasie Wykorzystanie języków zorientowanych obiektowo (C++) lub imperatywnych (C, Fortran) Standard programowania rozproszonego: MPI (Message Passing Interface)

87 Paradygmat programowania rozproszonego - przykład #include <mpi.h> int main(int argc, char *argv[]){ int npes; int myrank; // Inicjalizacja podsystemu MPI MPI_Init(&argc, &argv); // Pobierz rozmiar globalnego komunikatora MPI_Comm_size(MPI_COMM_WORLD, &npes); // Pobierz numer procesu w globalnym komunikatorze MPI_Comm_rank(MPI_COMM_WORLD, &myrank); printf("jestem %d procesem z %d\n",myrank, npes); MPI_Finalize(); return 0; }

88 Programowanie współbieżne Nadparadygmat wykonywanie wielu zadań obliczeniowych w tym samym czasie (równoczesne wykonywanie zadań przez wiele procesorów wraz z podziałem czasu jednego procesora między wiele zadań)

89 Paradygmat programowania generycznego Programowanie rodzajowe (uogólnione) Umożliwia tworzenie jednostek (klas, obiektów, funkcji, typów) parametrycznych (polimorficznych, uogólnionych), ktore stają sie pełnoprawnymi jednostkami w chwili ich dookreślenia (może to zostać odłożone do momentu skorzystania z ich definicji w gotowym programie). Tworzenie algorytmów i struktur danych operujących na danych (prawie) dowolnego typu Uogólnienie paradygmatu programowania obiektowego Przykłady języków: C++ (STL), Ada, Java, C#, Haskell

90 Paradygmat programowania generycznego - przykład #include <iostream> Output: #include <string> Max(i, j): 10 using namespace std; Max(f1, f2): 1.5 template <typename T> Max(s1, s2): Ruby inline T const& Max (T const& a, T const& b) { return a < b? b:a; } int main (){ int i = 10; int j = 1; cout << "Max(i, j): " << Max(i, j) << endl; double f1 = 0.8; double f2 = 1.5; cout << "Max(f1, f2): " << Max(f1, f2) << endl; string s1 = "Python"; string s2 = "Ruby"; cout << "Max(s1, s2): " << Max(s1, s2) << endl; return 0; }

91 Paradygmat programowania modularnego Pośredni między programowaniem obiektowym, a proceduralnym. W tym paradygmacie główną jednostką planowania programu i jego tworzenia jest moduł (pakiet) zawarty zwykle w osobnym pliku i w wielu aspektach traktowany jako obiekt Przykłady jezyków: Ada, Python

92 Paradygmat programowania aspektowego Tworzenie programów w oparciu o tzw. aspekty (reprezentacje zagadnień) ze wspomaganiem separacji zagadnień i rozdzielenia programu na części w jak największym stopniu niezwiązane funkcjonalnie Rozszerzenie paradygmatu obiektowego Przykłady jezyków: AspectJ

93 Paradygmat programowania komponentowego Paradygmat związany z modularyzacją programów, a jednocześnie z programowaniem obiektowym Komponenty to samodzielne obiekty wyposażone w ściśle wyspecyfikowany interfejs, wykonujace określone usługi Przykłady: EJB, COM+, Corba,

94 Paradygmat programowania sterowanego przepływem danych Program postrzegany jest jako graf operacji, między którymi przepływają dane. Moment wykonania danej operacji nie jest więc zależny od liniowej sekwencji instrukcji, lecz od dostępności danych w tym podejściu dane są najważniejsze (analogia- linia produkcyjna fabryki) Ten model bardzo dobrze nadaje się do równoległego wykonywania programu na wielu procesorach. Rozkład zadań na procesory uzyskujemy automatycznie, bez konieczności rozdzielania zadań (czyli tworzenia dodatkowego kodu)

95 Paradygmat programowania zdarzeniowego Programowanie sterowane zdarzeniamizamiast zasadniczego nurtu sterowania mamy wiele drobnych programów obsługi zdarzeń, uruchamianych w chwili wystąpienia odpowiedniego zdarzenia (vs. programowanie z własnym wątkiem sterowania) Paradygmat programowania powiązany z programowaniem komponentowym i obiektowym Przykład: VB.NET

96 Paradygmat programowania agentowego Rozszerzenie paradygmatu obiektowego Podstawowa jednostka- agent czyli wyspecjalizowany i odporny na błędy i niepowodzenia, a jednoczesnie samodzielny obiekt, ktory w środowisku heterogenicznym (np. w sieci komputerowej) może pracować sam, a w potrzebie komunikować się z innymi agentami Istota- zapewnnie maksymalnej odporności na błędy i utratę wyników kosztem dublowania swych czynności lub samoreplikacji Przykład: framework JADE (Java Agent DEvelopment Framework)

97 Paradygmat programowania prototypowego Wariacja paradygmatu obiektowego, w którym nie występują klasy, a funkcję klas pełnią prototypy Podstawowa jednostka- prototyp czyli specjalnie oznaczony egzemplarz obiektu po którym inne obiekty dziedziczą pola, metody oraz można rozszerzać go o nowe metody. Dziedziczenie- w oparciu o tzw. łańcuch prototypów (istotna jest tutaj długość łańcucha) (wydajność) Przykłady: JavaScript, ActionScript, IO

98 Paradygmat programowania refleksyjnego Podstawowe pojęcie mechanizm refleksji Program komputerowy może być modyfikowany w trakcie działania w sposób zależny od własnego kodu oraz od zachowania w trakcie jego wykonania Istota- zarządzanie kodem jak danymi (kod = dane) Przykłady: Ruby, Python, Objective C, Java

Paradygmaty programowania

Paradygmaty programowania Wg. J. Bylina, B. Bylina Przegląd języków i paradygmatów programowania, UMCS, Lublin 2011 Paradygmaty programowania Paradygmat (gr. Paradeigma) - wzorzec lub przykład Def. słownikowa: przyjęty sposób widzenia

Bardziej szczegółowo

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka. Wstęp do Programowania Obiektowego Wykład 13 Paradygmaty. Składnia i semantyka. 1 PRZEGLĄD PODSTAWOWYCH PARADYGMATÓW 2 Cztery podstawowe paradygmaty 1. Programowanie imperatywne. 2. Programowanie funkcyjne.

Bardziej szczegółowo

Paradygmaty programowania

Paradygmaty programowania Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów

Bardziej szczegółowo

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład V Rzut okiem na języki programowania 1 Kompilacja vs. interpretacja KOMPILACJA Proces, który przetwarza program zapisany w języku programowania,

Bardziej szczegółowo

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Literatura Języki i paradygmaty programowania Wykład 2 1. C. S. Horstman, G. Cornell, core Java 2 Podstawy, Helion 2003

Bardziej szczegółowo

Modelowanie i Programowanie Obiektowe

Modelowanie i Programowanie Obiektowe Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby

Bardziej szczegółowo

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 O mnie prowadzący wykład: Dariusz Wardowski pokój: A334 dyżur: środa, godz. 10.00 12.00 e-mail: wardd@math.uni.lodz.pl

Bardziej szczegółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Języki i paradygmaty programowania

Języki i paradygmaty programowania Języki i paradygmaty programowania Instytut Teleinformatyki ITI PK Kraków marzec 2012 Sprawy Organizacyjne Dane kontaktowe: e-mail: tchmaj@pk.edu.pl konsultacje: wtorki 14:45 15:45 budynek Houston, p.102,

Bardziej szczegółowo

Praktyka Programowania

Praktyka Programowania Praktyka Programowania Dariusz Dereniowski Materiały udostępnione przez Adriana Kosowskiego Katedra Algorytmów i Modelowania Systemów Politechnika Gdańska deren@eti.pg.gda.pl Gdańsk, 2010 strona przedmiotu:

Bardziej szczegółowo

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga! Programowanie I O czym będziemy mówili Podstawy programowania w językach proceduralnym ANSI C obiektowym Java Uwaga! podobieństwa w podstawowej strukturze składniowej (zmienne, operatory, instrukcje sterujące...)

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

Spis treści. 1 Java T M

Spis treści. 1 Java T M Spis treści 1 Java T M 1 2 Co to jest Platforma Java T M 1 3 Przygotowanie komputera 2 4 Pierwszy program 2 5 Dokumentacja 3 6 Budowa aplikacji. Klasy. 3 7 Pola i metody 4 8 Konstruktory 5 9 Inne proste

Bardziej szczegółowo

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Jerzy Nawrocki, Wprowadzenie do informatyki

Jerzy Nawrocki, Wprowadzenie do informatyki Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Cel wykładu Programowanie imperatywne i język C Zaprezentować paradygmat programowania imperatywnego

Bardziej szczegółowo

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24 Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.

Bardziej szczegółowo

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/ Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia ZP/ITS/11/2012 Załącznik nr 1a do SIWZ ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia Przedmiotem zamówienia jest: Przygotowanie zajęć dydaktycznych w postaci kursów e-learningowych przeznaczonych

Bardziej szczegółowo

Języki i paradygmaty programowania

Języki i paradygmaty programowania Języki i paradygmaty programowania WYDZIAŁ ELEKTRONIKI i INFORMATYKI dr inż. Robert Arsoba Politechnika Koszalińska Wydział Elektroniki i Informatyki POLITECHNIKA KOSZALIŃSKA 2009/2010 Materiały do wykładu

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie

Bardziej szczegółowo

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania Wstęp do Informatyki Program, proces tworzenia programu Środowisko programistyczne Języki programowania Program - definicje Program jest przekładem problemu użytkownika na język maszyny Niklaus Wirth:

Bardziej szczegółowo

Podstawy programowania wykład

Podstawy programowania wykład Podstawy programowania wykład WYDZIAŁ ELEKTRONIKI i INFORMATYKI dr inż. Robert Arsoba Politechnika Koszalińska Wydział Elektroniki i Informatyki POLITECHNIKA KOSZALIŃSKA 2009/2010 1 Materiały do wykładu

Bardziej szczegółowo

Języki programowania wprowadzenie

Języki programowania wprowadzenie Języki programowania wprowadzenie Prof. dr hab. inż. Mariusz J. Giergiel KRiDM AGH dr hab. inż.. Mariusz Giergiel, prof. n. AGH Pok. 412, VIp, D-1 konsultacje czwartek 10:00 11:00 giergiel@agh.edu.pl Telefon

Bardziej szczegółowo

dr inż. Paweł Myszkowski Wykład nr 5 (16.03.2016)

dr inż. Paweł Myszkowski Wykład nr 5 (16.03.2016) dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2015/2016 Wykład nr 5 (16.03.2016) Plan prezentacji:

Bardziej szczegółowo

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy Programowanie w C++ 1.Czym jest programowanie Pisanie programów to wcale nie czarna magia, tylko bardzo logiczna rozmowa z komputerem. Oczywiście w jednym ze specjalnie stworzonych do tego celu języków.

Bardziej szczegółowo

Funkcja (podprogram) void

Funkcja (podprogram) void Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji

Bardziej szczegółowo

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL Programowanie Pascal - język programowania wysokiego poziomu Klasa 2 Lekcja 9 PASCAL Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany

Bardziej szczegółowo

Organizacja kursu, paradygmaty, ogólnie o C i C++

Organizacja kursu, paradygmaty, ogólnie o C i C++ Organizacja kursu, paradygmaty, ogólnie o C i C++ Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechniki Wrocławskiej Kurs: Copyright c 2015 Bogdan

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Programowanie strukturalne i obiektowe

Programowanie strukturalne i obiektowe Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie

Bardziej szczegółowo

Programowanie MorphX Ax

Programowanie MorphX Ax Administrowanie Czym jest system ERP? do systemu Dynamics Ax Obsługa systemu Dynamics Ax Wyszukiwanie informacji, filtrowanie, sortowanie rekordów IntelliMorph : ukrywanie i pokazywanie ukrytych kolumn

Bardziej szczegółowo

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++ Jednostka prowadząca: Wydział Techniczny Kierunek studiów: Elektronika i telekomunikacja Nazwa przedmiotu: Język programowania C++ Charakter przedmiotu: podstawowy, obowiązkowy Typ studiów: inŝynierskie

Bardziej szczegółowo

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

Bardziej szczegółowo

SPIS TREŚCI Funkcje systemu operacyjnego Zapewnia obsługę dialogu między użytkownikiem a komputerem Nadzoruje wymianę informacji między poszczególnymi urządzeniami systemu komputerowego Organizuje zapis

Bardziej szczegółowo

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki Programowanie obiektowe W1 Wprowadzenie Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki Ogólna charakterystyka języka C++ C++ jest obiektowym językiem programowania,

Bardziej szczegółowo

Programowanie obiektowe. Wprowadzenie

Programowanie obiektowe. Wprowadzenie 1 Programowanie obiektowe Wprowadzenie 2 Programowanie obiektowe Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część pierwsza Od języka symbolicznego do języka wysokiego poziomu Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

Projektowanie klas c.d. Projektowanie klas przykład

Projektowanie klas c.d. Projektowanie klas przykład Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej

Bardziej szczegółowo

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie obiektowe, wykład nr 6. Klasy i obiekty Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl Komputerowe Systemy Przemysłowe: Modelowanie - UML Arkadiusz Banasik arkadiusz.banasik@polsl.pl Plan prezentacji Wprowadzenie UML Diagram przypadków użycia Diagram klas Podsumowanie Wprowadzenie Języki

Bardziej szczegółowo

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: - Nazwa modułu: Programowanie obiektowe Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3 Wydział: Zarządzania Kierunek: Informatyka i Ekonometria Specjalność: - Poziom studiów: Studia I stopnia

Bardziej szczegółowo

Historia i podstawowe koncepcje. Tomasz Borzyszkowski

Historia i podstawowe koncepcje. Tomasz Borzyszkowski Historia i podstawowe koncepcje Tomasz Borzyszkowski Język C W latach 1960-70 trwają intensywne prace nad pierwszymi językami programowania zapewniającymi: Łatwość użycia Efektywność kodu Łatwość rozszerzania

Bardziej szczegółowo

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Laboratorium 3 Instrukcje wyboru 1 INSTRUKCJE WYBORU Instrukcje sterujące to takie instrukcje, które sterują przebiegiem programu w zależności od spełnienia

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Informatyka na UG... Witold Bołt (ja@hope.art.pl)

Informatyka na UG... Witold Bołt (ja@hope.art.pl) Informatyka na UG... Witold Bołt (ja@hope.art.pl) >> Agenda Co to jest informatyka? Czym zajmuje się informatyk? Czego można nauczyć się na UG? Jak wyglądają studia informatyczne na UG? Co po studiach?

Bardziej szczegółowo

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76 . p. 1 Algorytmem nazywa się poddający się interpretacji skończony zbiór instrukcji wykonania zadania mającego określony stan końcowy dla każdego zestawu danych wejściowych W algorytmach mogą występować

Bardziej szczegółowo

Język programowania PASCAL

Język programowania PASCAL Język programowania PASCAL (wersja podstawowa - standard) Literatura: dowolny podręcznik do języka PASCAL (na laboratoriach Borland) Iglewski, Madey, Matwin PASCAL STANDARD, PASCAL 360 Marciniak TURBO

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 11: Procedury zaawansowane Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Ramki stosu Rekurencja INVOKE, ADDR, PROC,

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Definiowanie własnych klas

Definiowanie własnych klas Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:

Bardziej szczegółowo

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa 1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko

Bardziej szczegółowo

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie. Wykład 4 Algorytmy + struktury danych = programy Niklaus Wirth Algorytm = logika + sterowanie Robert Kowalski J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 80 / 277 algorytm program język

Bardziej szczegółowo

Microsoft IT Academy kurs programowania

Microsoft IT Academy kurs programowania Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego

Bardziej szczegółowo

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne dr inż. Marcin Szlenk Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych m.szlenk@elka.pw.edu.pl Paradygmaty

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Programowanie, algorytmy i struktury danych

Programowanie, algorytmy i struktury danych 1/44 Programowanie, algorytmy i struktury danych materiały do wykładu: http://cez.wipb.pl/moodle/ email: m.tabedzki@pb.edu.pl strona: http://aragorn.pb.bialystok.pl/~tabedzki/ Marek Tabędzki Wymagania

Bardziej szczegółowo

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu Programowanie V Dariusz Skibicki Wydział Inżynierii Mechanicznej Uniwersytet Technologiczno-Przyrodniczy im. Jana i Jędrzeja Śniadeckich w Bydgoszczy dariusz.skibicki(at)utp.edu.pl Programowanie Projektowanie

Bardziej szczegółowo

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH ZATWIERDZAM Prorektor ds. dydaktyki i wychowania S Y L A B U S 1 Tytuł (stopień) naukowy oraz imię i nazwisko wykładowcy: dr hab.,

Bardziej szczegółowo

Programowanie komputerów

Programowanie komputerów Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych

Bardziej szczegółowo

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

Java jako język programowania

Java jako język programowania Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

#include int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); } OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;

Bardziej szczegółowo

Rekurencja (rekursja)

Rekurencja (rekursja) Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 1 dr inż. Literatura ogólna Ben-Ari, M.: Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa, 2009. Czech, Z.J:

Bardziej szczegółowo

Programowanie deklaratywne

Programowanie deklaratywne Programowanie deklaratywne Artur Michalski Informatyka II rok Plan wykładu Wprowadzenie do języka Prolog Budowa składniowa i interpretacja programów prologowych Listy, operatory i operacje arytmetyczne

Bardziej szczegółowo

Materiały do laboratorium MS ACCESS BASIC

Materiały do laboratorium MS ACCESS BASIC Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I

Bardziej szczegółowo

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński ppelczynski@swspiz.pl

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński ppelczynski@swspiz.pl Programowanie niskopoziomowe dr inż. Paweł Pełczyński ppelczynski@swspiz.pl 1 Literatura Randall Hyde: Asembler. Sztuka programowania, Helion, 2004. Eugeniusz Wróbel: Praktyczny kurs asemblera, Helion,

Bardziej szczegółowo

Programowanie w języku C++

Programowanie w języku C++ INE 2022 JĘZYKI PROGRAMOWANIA 1 INE 0050 WSTĘP DO PROGRAMOWANIA Programowanie w języku C++ ( wykł. dr Marek Piasecki ) Literatura: do wykładu dowolny podręcznik do języka C++ na laboratoriach Borland C++

Bardziej szczegółowo

Podstawy programowania - 1

Podstawy programowania - 1 Podstawy programowania - 1 doc. dr inż. Tadeusz Jeleniewski Wykład: sobota B, godz. 10.30 12.55 sala 12 Laboratorium: sobota B, godz. 13.00 15.25 sala 2 sobota B, godz. 15.30-17.55 sala 2 e-mail: tadeusz.jeleniewski@pwr.wroc.pl

Bardziej szczegółowo

Wykład I. Wprowadzenie do baz danych

Wykład I. Wprowadzenie do baz danych Wykład I Wprowadzenie do baz danych Trochę historii Pierwsze znane użycie terminu baza danych miało miejsce w listopadzie w 1963 roku. W latach sześcdziesątych XX wieku został opracowany przez Charles

Bardziej szczegółowo

Programowanie I. Kornel Warwas. ATH Katedra Matematyki i Informatyki

Programowanie I. Kornel Warwas. ATH Katedra Matematyki i Informatyki Programowanie I Kornel Warwas ATH Katedra Matematyki i Informatyki 2 Algorytm Algorytm skończony, uporządkowany ciąg zdefiniowanych czynności, koniecznych do wykonania określonego zadania w ograniczonej

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,

Bardziej szczegółowo

Programowanie w języku Java WYKŁAD

Programowanie w języku Java WYKŁAD Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 26.05.2014 WYKŁAD 13 Refleksja Data Access Object

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

Analiza i projektowanie aplikacji Java

Analiza i projektowanie aplikacji Java Analiza i projektowanie aplikacji Java Modele analityczne a projektowe Modele analityczne (konceptualne) pokazują dziedzinę problemu. Modele projektowe (fizyczne) pokazują system informatyczny. Utrzymanie

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Literatura David Harel. Rzecz o istocie informatyki. Algorytmika. Wydawnictwa Naukowo-Techniczne. Wydanie trzecie. Seria: Klasyka informatyki. Warszawa 2000. Niklaus Wirth. Algorytmy

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo