Informatyka. Wykład /2018z

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

Download "Informatyka. Wykład /2018z"

Transkrypt

1 Informatyka Wykład /2018z Bogumil.Konopka@pwr.edu.pl

2 Plan Rekurencja Programowanie zorientowane obiektowo Zalety programowania obiektowego Korzystanie z obiektów Projektowanie własnej klasy Przeładowanie funkcji

3 Rekurencja - rekursja Odwoływanie się przez funkcję lub definicję do samej siebie Ciąg Fibonacciego: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, F 0 = 0 F 1 = 1 F n = F n 1 + F n 2, n 2 Silnia: 1, 1, 2, 6, 24, 120, 720, 0! = 1 n! = n n 1!, n 1

4 Podstawowe elementy funkcji rekurencyjnej Przypadek bazowy silnia N = 1 n = 0 n n 1!, n 1 Zmiana w kierunku przypadku bazowego Wywołanie rekurencyjne Liczenie silni: wartosc = silnia(n) { Jeżeli ( ) wartosc = 1 W przeciwnym wypadku wartosc = } Co w pustych polach?

5 Podstawowe elementy funkcji rekurencyjnej Przypadek bazowy silnia N = 1 n = 0 n n 1!, n 1 Liczenie silni: Zmiana w kierunku przypadku bazowego Wywołanie rekurencyjne wartosc = silnia(n) { Jeżeli (n == 0) wartosc = 1 W przeciwnym wypadku wartosc = n*silnia(n-1) }

6 Silnia liczona rekurencyjnie - przykład silnia(5)

7 Silnia liczona rekurencyjnie - przykład silnia(5) Czy 5 == 0? wartosc = 5*silnia(5-1) Czy 4 == 0? wartosc = 4*silnia(3) wartosc = silnia(n) { Jeżeli (n == 0) wartosc = 1 W przeciwnym wypadku wartosc = n*silnia(n-1) } Czy 3 == 0? wartosc = 3*silnia(2) Czy 2 == 0? wartosc = 2*silnia(1) Czy 1 == 0? wartosc = 1*silnia(0) wartosc = 1 Czy 0 == 0?

8 Czasami rekurencję można zastąpić pętlą %Obliczenie silni N=5 s=1 for n = 1:N s=s*n; %Fibonacci fib(1)=0 fib(2)=1 for n=3:n fib(n)=fib(n-2)+fib(n-1) s=prod(1:n) s=factorial(n)

9 Jakie operacje są wykonywane w czasie wykonywania funkcji? Wywołanie funkcji Na stosie rezerwowane jest miejsce dla wartości zwracanych przez funkcję oraz jej argumentów wejściowych Argumenty wejściowe są kopiowane w zarezerwowane miejsce Następuje przeskok do wywołanej funkcji Realizacja kodu funkcji Wynik funkcji jest kopiowany do zmiennych zwracanych Ze stosu usuwane są zmienne zakończonej funkcji Następuje powrót do miejsca wywołania funkcji Każda z czynności zajmuje czas!

10 Kiedy używać rekurencji? Gdy kod rekurencyjny jest bardziej zrozumiały Np. bardziej zgodny ze znaną definicją Gdy mamy do czynienia z zagnieżdżonymi strukturami danych Gdy złożony problem może być podzielony na serię prostszych problemów rozwiązywanych po sobie Przykład rozwiązywanie shinoku

11 Shinoku - zasady Pole gry macierz 4x4 Pole podzielona jest na 4 kratki 2x2 Pole wypełniane jest liczbami 1:4 Zasady wypełniania: Liczba występuje tylko raz w każdym wierszu, kolumnie, kratce 2x

12 Shinoku algorytm rozwiązania Jeżeli nie ma pustych pól to zakończ Przejdź do pierwszego pustego pola Próbuj kolejne liczby 1:4 Jeżeli liczba nie powoduje konfliktu, spróbuj uzupełnić następne pole Jeżeli nie ma możliwości wpisu, cofnij się w wypełnianiu i zmień wybór.

13 Implementacja w MATLABIE Jeżeli nie ma pustych pól to zakończ Przejdź do pierwszego pustego pola Próbuj kolejne liczby 1:4 Jeżeli liczba nie powoduje konfliktu, spróbuj uzupełnić następne pole Jeżeli nie ma możliwości wpisu, cofnij się w wypełnianiu i zmień wybór.

14 Implementacja w MATLABIE function rx = Shinoku(X) [w,k]=find(~x,1,'first'); % szukaj pierwszego zera if (isempty(w)) rx=x; return %jezeli cala macierz jest wypelniona to zwroc wynik % Jeżeli nie ma pustych pól to zakończ Przejdź do pierwszego pustego pola Próbuj kolejne liczby 1:4 Jeżeli liczba nie powoduje konfliktu, spróbuj uzupełnić następne pole Jeżeli nie ma możliwości wpisu, cofnij się w wypełnianiu i zmień wybór.

15 Implementacja w MATLABIE for proba=1:4 X(w,k)=proba if (SprawdzPoprawnosc(X(w,:)) &&... SprawdzPoprawnosc(X(:,k)) &&... SprawdzPoprawnosc(X(kratkaX,kratkaY))) rx=shinoku(x); %jezeli rx wrocilo kompletne to zwroc dalej %w przeciwnym wypadku kontynuj petle "for" if (isempty(find(~rx,1,'first'))) return X(w,k)=0; rx=x; Jeżeli nie ma pustych pól to zakończ Przejdź do pierwszego pustego pola Próbuj kolejne liczby 1:4 Jeżeli liczba nie powoduje konfliktu, spróbuj uzupełnić następne pole Jeżeli nie ma możliwości wpisu, cofnij się w wypełnianiu i zmień wybór.

16 Implementacja w MATLABIE for proba=1:4 X(w,k)=proba if (SprawdzPoprawnosc(X(w,:)) &&... SprawdzPoprawnosc(X(:,k)) &&... SprawdzPoprawnosc(X(kratkaX,kratkaY))) rx=shinoku(x); %jezeli rx wrocilo kompletne to zwroc dalej %w przeciwnym wypadku kontynuj petle "for" if (isempty(find(~rx,1,'first'))) return X(w,k)=0; rx=x; Jeżeli nie ma pustych pól to zakończ Przejdź do pierwszego pustego pola Próbuj kolejne liczby 1:4 Jeżeli liczba nie powoduje konfliktu, spróbuj uzupełnić następne pole Jeżeli nie ma możliwości wpisu, cofnij się w wypełnianiu i zmień wybór.

17 Rekurencja - podsumowanie Funkcja rekurencyjna musi mieć: Przypadek bazowy trywialne, natychmiastowe rozwiązanie Modyfikację w kierunku przypadku bazowego Wywołanie samej siebie ze zmodyfikowanymi parametrami wejściowymi Z rekurencji korzysta się, gdy: Problem można rozbić na ciągłe rozwiązywanie serii mniej skomplikowanych problemów Mamy do czynienia z drzewiastą strukturą danych Czytelność kodu jest większa niż w implementacji z pętlą iteracyjną

18 Programowanie proceduralne vs programowanie zorientowane obiektowo Programowanie Reprezentacja Danych Implementacja operacji Programowanie proceduralne Programowanie zorientowane obiektowo Dane Dane2 Dane3 Funkcja1 Funkcja2 Funkcja3 Dane2 Dane3 Dane4 Atrybut1 Metoda1 Atrybut2 Metoda2 Atrybut3 Metoda3

19 Programowanie proceduralne Dane Funkcja1 Dane2 Funkcja2 Dane3 Akcent położony jest na identyfikacji czynność, które muszą być wykonane Dane są zazwyczaj pojedynczymi zmiennymi. Funkcje wykonują jedną, bądź wiele operacji na danych

20 Programowanie zorientowane obiektowo 1. Identyfikacja elementów systemu, który zamierzamy zbudować 2. Identyfikacja schematów które elementy są używane wielokrotnie, które elementy mają wspólne cechy 3. Klasyfikacja elementów w oparciu o podobieństwa i różnice. 4. Implementacja klas, które zdefiniują obiekty używane w aplikacji Atrybut1 Metoda1 Atrybut2 Metoda2 Jaka jest różnica między klasą, a obiektem?

21 Gdzie mieliśmy do czynienia z obiektami? Wiele z funkcji w MATLABIE korzysta z obiektów np.: Dopasowywanie krzywych [g, gof, out ] = fit(x',y_exp',ftype) >> g g = General model: g(x) = 1/(1+exp(-b*x)) Coefficients (with 95% confidence bounds): b = (0.6541, ) Obsługa błędów za pomocą try/catch

22 Przykład - Obsługa błędów obiekt MException function [wynik,err] = MnozenieMacierzy(A,B) err=[]; try wynik=a*b catch err %zlap wyjątek err %wyświetl obiekt err sa=size(a); %pobierz rozmiary A sb=size(b); %pobierz rozmiary B warning('rozmiary A: %d x %d, Rozmiary B: %d x %d', sa, sb) wynik=[]; >> [wynik,err] = MnozenieMacierzy([2 1],[3 1]) Warning: Rozmiary A: 1 x 2, Rozmiary B: 1 x 2 > In MnozenieMacierzy at 8 wynik = [] err = MException with properties: identifier: 'MATLAB:innerdim' message: 'Inner matrix dimensions must agree.' cause: {0x1 cell} stack: [1x1 struct] >> class(err) ans = MException

23 Obiekty porządkują przechowywanie danych Dane są przechowywane jako atrybuty/właściwości obiektu >> properties(err) Properties for class MException: identifier message cause stack Do pól odnosimy się przez operator. >> err.stack ans = file: 'C:\Users\Bob\Documents\MATLAB\Inf_2014_2015\MnozenieMacierzy.m' name: 'MnozenieMacierzy' line: 4 >> class(err.stack) ans = struct

24 Obiekty same obsługują swoje dane Obiekt zawiera w sobie definicje operacji, które mogą być przeprowadzone na danych metody definiowane dla klasy. >> methods(err) Methods for class MException: addcause getreport ne throw eq isequal rethrow throwascaller Static methods: last >> err.getreport ans = Error using * Inner matrix dimensions must agree. Error in MnozenieMacierzy (line 4) wynik=a*b

25 Obiekty same obsługują swoje dane (2) Obiekt zawiera w sobie definicje operacji, które mogą być przeprowadzone na danych metody definiowane dla klasy. >> [wynik,err2]=mnozeniemacierzy([ ], [2 3]'); Warning: Rozmiary A: 1 x 4, Rozmiary B: 2 x 1 > In MnozenieMacierzy at 8 >> err.isequal(err2) % uruchomienie metody isequal na obiekcie err ans = 1 >> err==err2 %przeladowanie operatora == ans = 1

26 Kiedy należy rozważyć zastosowanie programowanie obiektowe w MATLABie? Proste, krótkie zadania mogą być realizowane w funkcjach (korzystając z programowania proceduralnego) Skomplikowane funkcje powinny być rozdzielone na mniejsze Jeżeli funkcji jest zbyt dużo i obsługa danych zaczyna być problematyczna, wówczas trzeba zastanowić się nad zastosowaniem programowania obiektowego.

27 Tworzenie własnej klasy schemat postępowania 1. Analiza problemu: Co jest obiektem? Jakie są cechy obiektu istotne dla problemu? Co może się dziać z obiektem? 2. Projekt: Dane i stany, które należy przechowywać Operacje, które będą wykonywane na obiekcie 3. Implementacja tworzenie klas 4. Testowania tworzenie obiektów Atrybut1 Metoda1 Atrybut2 Metoda2 Jaka jest różnica między klasą, a obiektem? Slajd w oparciu o W. Dyrka, Wykład 3, Informatyka 2012

28 Tworzenie własnej klasy - przykład Problem: Pomiar stężenia hormonu w próbie badanych Obiekt: Wyniki pomiarów stężenia Jakie są atrybuty obiektu: Wektor zmierzonych wartości Nazwa Rozmiar próby Wartość średnia Odchylenie standardowe Co może się stać z obiektem: Wyświetlić dane o próbie Wykreślić histogram Można połączyć z inną grupą Porównać wartość średnią z inną grupą Slajd w oparciu o W. Dyrka, Wykład 3, Informatyka 2012

29 Projekt klasy Klasa ProbaLosowa Atrybuty: stezeniewektor -wektor zmierzonych stężeń nazwa - nazwa próby rozmiar - liczba badanych sr - wartość średnia z badań odch - odchylenie standardowe Metody: rysuj dodaj porównaj - wyświetla wartości - łączy próby - porównuje dwie próby

30 Definiowanie klasy classdef ProbaLosowa %Klasa oblsugujaca wyniki pomiarów stezenia hormonow w %probie wybranych pacjentow properties nazwa % nazwa proby stezeniewektor % wektor zmierzonych stezen rozmiar % liczba badanych sr % wartosc srednia z badan odch % odchylenie standardowe methods

31 Tworzenie obiektu obiekt jak struktura >> pr1=probalosowa pr1 = ProbaLosowa with properties: nazwa:[] stezeniewektor: [] rozmiar: [] sr: [] odch: [] >> pr1.stezeniewektor=10+2*randn(1,100); >> pr1.sr=10; >> pr1 pr1 = ProbaLosowa with properties: nazwa:[] stezeniewektor: [1x100 double] rozmiar: [] sr: 10 odch: [] >> pr1.stezenie=[ ] No public field stezenie exists for class ProbaLosowa. >> class(pr1) ans = ProbaLosowa

32 Tworzenie obiektu - konstruktor Konstruktor to metoda, która służy do tworzenia obiektów danej klasy Nazwa konstruktora jest taka sama jak nazwa klasy Konstruktor powinien: Sprawdzać, czy argument wejściowy jest obiektem danej klasy, jeżeli tak to tworzyć jego kopię Jeśli nie, to powinien utworzyć obiekt z atrybutami podanymi jako argumenty wejściowe Konstruktor powinien sprawdzać poprawność wprowadzanych danych

33 Konstruktor - przykład function obj=probalosowa(wektor,nazwa) if (nargin==0) error('brak danych do utworzenia ProbyLosowej') elseif (isa(wektor,'probalosowa')) % kopiowanie obiektu obj=wektor; elseif (isvector(wektor)) if (sum(wektor<0))error('stezenie musi byc > 0'); if (nargin<2) nazwa='proba'; obj.stezeniewektor=wektor(:); else error('podano bledne dane') >> pr=probalosowa Error using ProbaLosowa (line 16) Brak danych do utworzenia ProbyLosowej >> pr=probalosowa([10,15,-1,14]) Error using ProbaLosowa (line 21) Stezenie musi byc > 0 >> pr=probalosowa([10,15;2,14]) Error using ProbaLosowa (line 25) Podano bledne dane

34 Enkapsulacja/hermetyzacja Oddzielenie i ukrycie wnętrzności klasy czyli implementacji (jak to działa?) Od powierzchowości klasy czyli interfejsu (jak z tego korzystać?) Ułatwia zachowanie poprawności obiektu ogranicza dostęp do danych Umożliwia ulepszenie sposobu działanie klasy bez zmiany sposobu korzystania z niej Podstawowa zasada programowania zorientowanego obiektowo Slajd W. Dyrka, Wykład 3, Informatyka 2012

35 Ustawienie wartości parametrów Ustawianie parametrów można kontrolować przez zdefiniowanie funkcji set (np. nazwa próby musi być łańcuchem znaków niezaczynającym się od liczby) function obj=set.nazwa(obj,nazwa) if (ischar(nazwa) && isempty(str2num(nazwa(1)))) obj.nazwa=nazwa; else error('zla nazwa!') >> pr.nazwa='1_pr' Error using ProbaLosowa/set.nazwa (line 36) Zla nazwa! >> pr=probalosowa([10,15,2,14],'2proba') Error using ProbaLosowa/set.nazwa (line 36) Zla nazwa! Error in ProbaLosowa (line 27) pr.nazwa=nazwa; Set działa również przy wywołaniu konstruktora!!

36 Pobieranie wartości parametrów dane zależne - liczba elementów, średnia, Klasa ProbaLosowa zawiera pola uzależnione od wektora zmierzonych wartości Rozmiar Średnia Odchylenie standardowe Nie trzeba ich trzymać w obiekcie można je obliczać. Tworzymy metody get, które będą je obliczać function rozmiar=get.rozmiar(obj) rozmiar=numel(obj.stezeniewektor) function sr=get.sr(obj) sr=mean(obj.stezeniewektor); function odch=get.odch(obj) odch=std(obj.stezeniewektor);

37 Liczba elementów, średnia, - dane zależne (2) Użytkownik nie powinien mieć możliwości ich nadpisywania. Tworzymy blok atrybutów zależnych (Depent) i edytowalnych tylko przez metody klasy (SetAccess=private): properties stezeniewektor % wektor zmierzonych stezen nazwa %nazwa proby properties (Depent=true,SetAccess=private) rozmiar % liczba badanych sr % wartosc srednia z badan odch % odchylenie standardowe

38

39 Kilka zasad Własności/atrybuty umieszczamy w blokach properties osobne bloki dla własności o różnych atrybutach Metody umieszczamy w blokach methods Konstruktor tworzy obiekt, nazywa się tak jak klasa function obj=probalosowa(wektor,nazwa) Funkcja get jest uruchamiana, gdy czytamy daną parametrem funkcji get jest obiekt, zwracana jest wartość własności function rozmiar=get.rozmiar(obj) Funkcja set jest uruchamiana gdy zmieniamy daną parametrami funkcji set są obiekt i nowa wartość, zwracany jest obiekt function obj=set.nazwa(obj,nazwa) Slajd W. Dyrka, Wykład 3, Informatyka 2012

40 Tworzenie własnej klasy co zostało? Problem: Pomiar stężenia hormonu w próbie badanych Obiekt: Wyniki pomiarów stężenia Jakie są atrybuty obiektu: Wektor zmierzonych wartości Nazwa Rozmiar próby Wartość średnia Odchylenie standardowe Co może się stać z obiektem: Wykreślić histogram Wyświetlić dane o próbie Można połączyć z inną grupą Porównać wartość średnią z inną grupą Slajd w oparciu o W. Dyrka, Wykład 3, Informatyka 2012

41 Rysowanie danych Chcemy wykreślić histogramy dla naszej próby Umieszczamy stosowną funkcję w bloku methods function rysuj(obj,n) %Rysuje histogram dla proby z podzialem na N koszykow. %Gdy N nie jest podane wylicza N wg. formuly Struga if (nargin==1) N = round(log2(obj.rozmiar)+1); hist(obj.stezeniewektor,n) tytul=['proba losowa ', obj.nazwa]; title(tytul) xlabel('stezenie') ylabel('n') %wywolanie >> pr.rysuj

42 Przeładowanie (przeciążanie) funkcji disp Do wyświetlania zmiennych służy funkcja disp >> disp(pr) ProbaLosowa with properties: stezeniewektor: [4x1 double] nazwa: 'pr1' rozmiar: 4 sr: odch: Chcemy wyświetlać obiekty naszej klasy w specjalny sposób. W bloku methods Definiujemy funkcję disp dla naszej klasy

43 Przeładowanie (przeciążanie) funkcji disp function disp(obj) %disp(proba) %Przeladowanie funkcji disp dla objektow klasy ProbaLosowa fprintf('parametry proby ''%s''\n Liczebnosc: %d\n Srednia: %.2f\n Odchylenie: %.2f\n',... obj.nazwa, obj.rozmiar, obj.sr, obj.odch) Działa przy każdym wyświetlaniu zmiennej >> disp(pr) Parametry proby 'proba1' Liczebnosc: 4 Srednia: Odchylenie: 5.91 >> pr=probalosowa([10,15,2,14],'proba1') pr = Parametry proby 'proba1' Liczebnosc: 4 Srednia: Odchylenie: 5.91

44 Przeładowanie operatorów dla klasy (1) Chcemy połączyć dwie badane próby za pomocą operatora + Operatory są związane z konkretnymi funkcjami

45 Przeładowanie operatorów dla klasy (2) Chcemy połączyć dwie badane próby za pomocą operatora + Operatory są związane z konkretnymi funkcjami Należy przeładować funkcję która nas interesuje (tutaj plus). function obj=plus(obj,obj2) %Przeladowanie operatora +, laczy wektory dwoch roznych prob %Nadaje nazwe nowej probie. obj.stezeniewektor=[obj.stezeniewektor;obj2.stezeniewektor]; nowanazwa=[obj.nazwa, '+', obj2.nazwa]; obj.nazwa=nowanazwa; >> pr=probalosowa(10+2*randn(1,100),'proba1'); >> pr2=probalosowa(5+0.5*randn(1,100),'proba2'); >> pr_polaczone=pr+pr2 pr_polaczone = Parametry proby 'proba1+proba2' Liczebnosc: 200 Srednia: 7.44 Odchylenie: 2.86

46 Przeładowanie operatorów dla klasy (3) Chcemy porównać średnie dwóch prób. Przeładujmy operator ==, czyli funkcję eq function [flag,h,p,ci,stats]=eq(obj,obj2) %Funkcja testuje hipoteze o rownosci srednich %Wykorzystuje test t-studenta, alpha = 0.05 [h,p,ci,stats]=ttest(obj.stezeniewektor,obj2.stezeniewektor); flag=not(h); >> pr == pr2 ans = 0 >>[flag,h,p,ci,stats]=pr==pr2; % dostajemy wszystkie parametry wyjsciowe

47 Programowanie zorientowane obiektowo - podsumowanie Poznanie obiektów już istniejących: class(obiekt), properties(obiekt), methods(obiekt) Tworzenie obiektów to proces: (1) analiza problemu, (2) projekt klas, (3) implementacja (4) testowanie. Enkapsulacja rozgraniczenie między działaniem, a korzystaniem z klasy Przeładowanie (przeciążanie) funkcji definiowanie istniejących funkcji, aby działały w sposób szczególny dla nowej klasy

48 Plan wykładów - podsumowanie 1. Wprowadzenie (historia, środowisko programistyczne, podstawowe komy) 2. Skrypty. Instrukcje sterujące. Budowanie funkcji. 3. Optymalizacja obliczeń. Przetwarzanie tekstu. Wizualizacja danych. Praca z plikami. Strukturyzacja danych. 4. Graficzny interfejs użytkownika. 5. Interpolacja oraz obliczenia numeryczne. 6. Rekurencja. Programowanie obiektowe. 7. Kolokwium termin I Kolokwium termin II

49 Co zostało do zrobienia. 1. Przygotować ciekawe projekty. 2. Zaliczyć zajęcia laboratoryjne. 3. Nauczyć się do kolokwium. 4. Zaliczyć wykład. 5. Wypełnić ankiety po zakończeniu kursu (wykład i laboratorium).

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 6 Podstawy programowania 2 Temat: Funkcje i procedury rekurencyjne Przygotował: mgr inż. Tomasz Michno Wstęp teoretyczny Rekurencja (inaczej nazywana rekursją, ang. recursion)

Bardziej szczegółowo

Informatyka Wykład 2

Informatyka Wykład 2 Informatyka Wykład 2 Plan M-pliki Skrypty Funkcje Skrypty vs funkcje Instrukcje sterujące Instrukcja warunkowa if Instrukcja wyboru switch Pętle: for, while Zmienna liczba argumetnów funkcji. Obsługa błędów.

Bardziej szczegółowo

Metody numeryczne Laboratorium 2

Metody numeryczne Laboratorium 2 Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje

Bardziej szczegółowo

Technologie obiektowe

Technologie obiektowe WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Technologie i usługi internetowe cz. 2

Technologie i usługi internetowe cz. 2 Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,

Bardziej szczegółowo

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH KATEDRASYSTEMÓWOBLICZENIOWYCH ALGORYTMY I STRUKTURY DANYCH 1.Rekurencja Rekurencja inaczej rekursja (ang. recursion) to wywołanie z poziomu metody jej samej. Programowanie z wykorzytaniem rekurencji pozwala

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych

Bardziej szczegółowo

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 13 Rekurencja 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Rekurencja - pojęcie 2 Rekurencja - pojęcie Rekurencja (rekursja) wywołanie

Bardziej szczegółowo

Projektowanie algorytmów rekurencyjnych

Projektowanie algorytmów rekurencyjnych C9 Projektowanie algorytmów rekurencyjnych wiczenie 1. Przeanalizowa działanie poniszego algorytmu dla parametru wejciowego n = 4 (rysunek 9.1): n i i

Bardziej szczegółowo

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Programowanie obiektowe

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

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

Wyjątki (exceptions)

Wyjątki (exceptions) Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

Metody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/

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

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -

Bardziej szczegółowo

Zad. 3: Układ równań liniowych

Zad. 3: Układ równań liniowych 1 Cel ćwiczenia Zad. 3: Układ równań liniowych Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium: Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH ĆWICZENIE NR 9 WYRAŻENIA LOGICZNE, INSTRUKCJE WARUNKOWE I INSTRUKCJE ITERACYJNE W PROGRAMIE KOMPUTEROWYM MATLAB Dr inż. Sergiusz Sienkowski ĆWICZENIE NR

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

Materiały do zajęć VII

Materiały do zajęć VII Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje

Bardziej szczegółowo

Wykład 5: Więcej o Klasach i Metodach

Wykład 5: Więcej o Klasach i Metodach Wykład 5: Więcej o Klasach i Metodach Przeciążanie Metod Klasa posiada dwie lub więcej metod o tej samej nazwie ale różnych deklaracjach parametrów. Java używa liczby i typów argumentów by ustalić którą

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja

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

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Laboratorium nr 1. i 2.

Laboratorium nr 1. i 2. Laboratorium nr 1. i 2. Celem laboratorium jest zapoznanie się ze zintegrowanym środowiskiem programistycznym, na przykładzie podstawowych aplikacji z obsługą standardowego wejścia wyjścia, podstawowych

Bardziej szczegółowo

do MATLABa programowanie WYKŁAD Piotr Ciskowski

do MATLABa programowanie WYKŁAD Piotr Ciskowski Wprowadzenie do MATLABa programowanie WYKŁAD Piotr Ciskowski instrukcje sterujące instrukcja warunkowa: if instrukcja wyboru: switch instrukcje iteracyjne: for, while instrukcje przerwania: continue, break,

Bardziej szczegółowo

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy Informatyka wprowadze do algorytmów (II) dr hab. inż. Mikołaj Morzy plan wykładu cechy algorytmów sposoby zapisu algorytmów klasyfikacja algorytmów przykłady algorytmów sumowa przeszukiwa ciągu liczb sortowa

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

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał REKURENCJA W JĘZYKU HASKELL Autor: Walczak Michał CZYM JEST REKURENCJA? Rekurencja zwana rekursją, polega na wywołaniu przez funkcję samej siebie. Algorytmy rekurencyjne zastępują w pewnym sensie iteracje.

Bardziej szczegółowo

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com Programowanie wykład dla I roku bioinformatyki semestr letni 2013 Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel. 58 523 2466 e-mail: danuta.makowiec at gmail.com Cel bloku

Bardziej szczegółowo

Projektowanie aplikacji internetowych laboratorium

Projektowanie aplikacji internetowych laboratorium Projektowanie aplikacji internetowych laboratorium Programowanie w języku Java Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne NetBeans 7 (zrzuty ekranów pochodzą z wersji

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty

Bardziej szczegółowo

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1 Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).

Bardziej szczegółowo

Programowanie w Scilab

Programowanie w Scilab 5 styczeń, 2006 Programowanie w Scilab Slajd 1 Programowanie w Scilab 5 styczeń, 2006 Programowanie w Scilab Slajd 2 Plan zajęć Wprowadzenie -operatory porównawcze: Pętle Przerywanie pętli Warunki Definiowanie

Bardziej szczegółowo

Zad. 5: Układ równań liniowych liczb zespolonych

Zad. 5: Układ równań liniowych liczb zespolonych Zad. 5: Układ równań liniowych liczb zespolonych 1 Cel ćwiczenia Wykształcenie zdolności abstrahowania operacji arytmetycznych od konkretnych typów. Unaocznienie problemów związanych z programowaniem uogólnionym

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

Język C++ wykład VIII

Język C++ wykład VIII Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,

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

Programowanie Obiektowe Ćwiczenie 4

Programowanie Obiektowe Ćwiczenie 4 Programowanie Obiektowe Ćwiczenie 4 1. Zakres ćwiczenia wyjątki kompozycja 2. Zagadnienia Założeniem, od którego nie należy odbiegać, jest by każdy napotkany problem (np. zatrzymanie wykonywanej metody)

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Rekurencja, metoda dziel i zwyciężaj Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk(Wydział Fizyki) WP w. VIII Jesień 2014 1 / 27 Rekurencja Recursion See Recursion. P. Daniluk(Wydział

Bardziej szczegółowo

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego Wprowadzenie do programowania obiektowego OOP - Object-Oriented Programming Z. Rudnicki Tradycyjne programowanie strukturalne Zalety: Sekwencyjne wykonywanie poleceń ułatwia tworzenie i sprawdzanie algorytmów

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

Mechanizm dziedziczenia

Mechanizm dziedziczenia Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia

Bardziej szczegółowo

Informatyka. Wykład 4. Witold Dyrka 2/04/2012

Informatyka. Wykład 4. Witold Dyrka 2/04/2012 Informatyka Wykład 4 Witold Dyrka witold.dyrka@pwr.wroc.pl 2/04/2012 Uwaga! Bardzo ważną częścią tego wykładu jest zapis wideo jak to zrobić? (przy użyciu programów: CamStudio, VideoDub, AVI ReComp) Znajdziesz

Bardziej szczegółowo

Wprowadzenie do programowania

Wprowadzenie do programowania do programowania ITA-104 Wersja 1 Warszawa, Wrzesień 2009 ITA-104 do programowania Informacje o kursie Zakres tematyczny kursu Opis kursu Kurs przeznaczony jest do prowadzenia przedmiotu do programowania

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

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty

Bardziej szczegółowo

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy

Bardziej szczegółowo

Enkapsulacja, dziedziczenie, polimorfizm

Enkapsulacja, dziedziczenie, polimorfizm 17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja

Bardziej szczegółowo

Listy powiązane zorientowane obiektowo

Listy powiązane zorientowane obiektowo Listy powiązane zorientowane obiektowo Aby zilustrować potęgę polimorfizmu, przeanalizujmy zorientowaną obiektowo listę powiązaną. Jak zapewne wiesz, lista powiązana jest strukturą danych, zaprojektowaną

Bardziej szczegółowo

Podstawy Języka Java

Podstawy Języka Java Podstawy Języka Java Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania, w którym programy definiuje się za pomocą obiektów elementów łączących

Bardziej szczegółowo

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Mgr inż. Witold BUŻANTOWICZ Wojskowa Akademia Techniczna SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD Streszczenie: W referacie przedstawiono możliwości

Bardziej szczegółowo

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch Wykład 8 Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. Smok podsuszony zmok (patrz: Zmok). Zmok zmoczony smok (patrz: Smok). L. Peter Deutsch Stanisław Lem Wizja lokalna J. Cichoń, P. Kobylański

Bardziej szczegółowo

PHP: bloki kodu, tablice, obiekty i formularze

PHP: bloki kodu, tablice, obiekty i formularze 1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania 2/32 Cel analizy Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie:

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt

Bardziej szczegółowo

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost; Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze

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

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

PHP 5 język obiektowy

PHP 5 język obiektowy PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje

Bardziej szczegółowo

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie

Bardziej szczegółowo

Konstruktor destruktor Programowanie obiektowe

Konstruktor destruktor Programowanie obiektowe Konstruktor destruktor Programowanie obiektowe Klasa w osobnym pliku Pracując w scalonym środowisku programistycznym mamy okno z nazwami wszystkich swoich klas ustawionych alfabetycznie Tworząc klasę w

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Funkcje i procedury Zasięg zmiennych Rekurencja Witold Marańda maranda@dmcs.p.lodz.pl 1 Modularyzacja programu Algorytmy strukturalne moŝna redukować, zastępując złoŝone fragmenty

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy

Bardziej szczegółowo

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej. Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.

Bardziej szczegółowo

Programowanie, część I

Programowanie, część I 11 marca 2010 Kontakt Wstęp Informacje organizacyjne Materiał na ćwiczenia Plan wykładu http://www.fuw.edu.pl/~rwys/prog rwys@fuw.edu.pl tel. 22 55 32 263 Materiał na ćwiczenia Informacje organizacyjne

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 1 - wprowadzenie do przedmiotu mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 16 października 2017 1 / 25 mgr inż. Krzysztof Szwarc Podstawy i

Bardziej szczegółowo

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology Funkcje Piotr Zierhoffer Institute of Computer Science Poznań University of Technology 7 października 2012 Funkcje Funkcja podprogram. Nazwany blok kodu realizujacy jakieś zadanie. sin(x), arccos(x), min(a,

Bardziej szczegółowo

Laboratorium 7 Blog: dodawanie i edycja wpisów

Laboratorium 7 Blog: dodawanie i edycja wpisów Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą

Bardziej szczegółowo

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego. Umiejętność czytania oraz tworzenia diagramów klas UML jest podstawą w przypadku zawodu programisty. Z takimi diagramami będziesz spotykał się w przeciągu całej swojej kariery. Diagramy klas UML są zawsze

Bardziej szczegółowo

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================

Bardziej szczegółowo

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 6 Katarzyna Grzelak kwiecień 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:

Bardziej szczegółowo

Wstęp do programowania. Wykład 1

Wstęp do programowania. Wykład 1 Wstęp do programowania Wykład 1 1 / 49 Literatura Larry Ullman, Andreas Signer. Programowanie w języku C++. Walter Savitch, Kenrick Mock. Absolute C++. Jerzy Grębosz. Symfonia C++. Standard. Stephen Prata.

Bardziej szczegółowo

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Bash - wprowadzenie. Bash - wprowadzenie 1/39 Bash - wprowadzenie Bash - wprowadzenie 1/39 Bash - wprowadzenie 2/39 Czym jest bash? Rysunek : Zadanie powłoki to ukrycie wywołań systemowych Bash - wprowadzenie 3/39 Czym jest bash? Przykład polecenia:

Bardziej szczegółowo

Mechanizm dziedziczenia

Mechanizm dziedziczenia Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia

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

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

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Krzysztof Kadowski. PL-E3579, PL-EA0312, Krzysztof Kadowski PL-E3579, PL-EA0312, kadowski@jkk.edu.pl Bazą danych nazywamy zbiór informacji w postaci tabel oraz narzędzi stosowanych do gromadzenia, przekształcania oraz wyszukiwania danych. Baza

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 7 - wprowadzenie do metod mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 27 listopada 2017 1 / 15 mgr inż. Krzysztof Szwarc Podstawy i języki

Bardziej szczegółowo

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura Programowanie komputerów Programowanie obiektowe. Typy zmiennych proste i złożone Typy zmiennych "wbudowane", tj. identyfikowane przez słowa kluczowe, są określane jako proste: int short long float double

Bardziej szczegółowo

Pisząc okienkowy program w Matlabie wykorzystujemy gotowe obiekty graficzne, lub możemy tworzyć własne obiekty dziedzicząc już zdefiniowane.

Pisząc okienkowy program w Matlabie wykorzystujemy gotowe obiekty graficzne, lub możemy tworzyć własne obiekty dziedzicząc już zdefiniowane. MATLAB Co to jest? program komputerowy będący interaktywnym środowiskiem do wykonywania obliczeń naukowych i inżynierskich oraz do tworzenia symulacji komputerowych. Nazwa Nazwa programu pochodzi od angielskich

Bardziej szczegółowo

Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Niestacjonarne (stacjonarne / niestacjonarne)

Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Niestacjonarne (stacjonarne / niestacjonarne) Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu Nazwa modułu Informatyka 2 Nazwa modułu w języku angielskim Computer science 2 Obowiązuje

Bardziej szczegółowo