Informatyka. Wykład 3. Witold Dyrka 19/3/2012
|
|
- Seweryn Piotrowski
- 8 lat temu
- Przeglądów:
Transkrypt
1 Informatyka Wykład 3 Witold Dyrka witold.dyrka@pwr.wroc.pl 19/3/2012
2 Program wykładów 0. Informatyka. Wprowadzenie do Matlaba ( ) 1. Matlab dla programistów C/C++ ( ) 2. Optymalizacja obliczeń. Grafika ( ) 3. Złożone typy danych. Programowanie zorientowane obiektowo (OOP) ( ) 4. OOP część 2 ( ) 5. Graficzny interfejs użytkownika ( ) 6. Obliczenia numeryczne ( ) 7. Kolokwium ( )
3 Dzisiejszy wykład w oparciu o... B. Mrozek, Z. Mrozek. MATLAB i Simulink. Poradnik użytkownika. Wydanie III. Helion Rozdział 5. MATLAB Product Documentation. Programming and Data Types. MATLAB Product Documentation. Object-Oriented Programming. Example Representing Structured Data Dave Foti. Inside MATLAB Objects in R2008a. Matlab Digest. Scott Gorlin. Advanced Matlab. OOPs, I wrote it again..., Advanced OOP.
4 Program na dziś (1) Złożone typy danych tablica komórkowa (cell) zmienna liczba argumentów funkcji przetwarzanie plików i tekstu struktura (struct) Programowanie zorientowane obiektowo
5 Ograniczenia zwykłych tablic Każda zwykła tablica zawiera jednorodne elementy nie można w jednej tablicy przechowywać łańcucha reprezentującego nazwisko oraz liczby reprezentującej wiek jednocześnie Każda tablica jest prostokątna każdy wiersz i kolumna muszą mieć równą długość np. w tablicy łańcuchów dopisywaliśmy spacje na końcu mało wygodne i mało uniwersalne Rozwiązanie: kontenery niejednorodne
6 Typ komórkowy Tablica n-wymiarowa Kontener niejednorodny Typ komórkowy (cell) tablica elementów różnych typów (n-wymiarowa prostokątna) 'Jan' 'Kowalski' 25 'Adam' 'Nowak' 28
7 Typ komórkowy (2) Tworzenie zmiennych typu komórkowego: operator { } >> K = {1, rand(5,10,2), speye(3); uint8((1:10)'), 'Super!', false} K = [ 1] [5x10x2 double] [3x3 double] [10x1 uint8] 'Super!' [ 0] >> P = {}; % pusta tablica komórkowa 0x0 konstruktor cell (puste elementy) >> R = cell(2,3,4); % t. komórkowa 2x3x4 pustych elementów
8 Typ komórkowy (3) % K = [ 1] [5x10x2 double] [3x3 double] % [10x1 uint8] 'Super!' [ 0] >> K{2,4} = R % R jest tablicą komórkowąą 2x3x4 K = [ 1] [5x10x2 double] [3x3 double] [] [10x1 uint8] 'Super!' [ 0] {2x3x4 cell}
9 Typ komórkowy (3) % K = [ 1] [5x10x2 double] [3x3 double] % [10x1 uint8] 'Super!' [ 0] >> K{2,4} = R % R jest tablicą komórkowąą 2x3x4 K = [ 1] [5x10x2 double] [3x3 double] [] [10x1 uint8] 'Super!' [ 0] {2x3x4 cell} >> cellplot(k) o t h e r 1 s t r u c t u r e s p a r s e S u p e r! 0 c h a r d o u b l e
10 Indeksowanie tablicy komórkowej (1) % K = [ 1] [5x10x2 double] [3x3 double] [] % [10x1 uint8] 'Super!' [ 0] {2x3x4 cell} Dostęp do elementów tablicy komórkowej nawiasy klamrowe (ang. curly braces) { } >> K{1,3} ans = (1,1) 1 % wynik jest typu 3x3 double sparse (2,2) 1 (3,3) 1 >> [lancuch, logik] = K{[4,6]} % zwraca łańcuch i zmienną logiczną lancuch = Super! logik = 0 >> K{1,3} = [] % podst. na poz. 1,3 pustej tablicy K = [ 1] [5x10x2 double] [] [] [10x1 uint8] 'Super!' [0] {2x3x4 cell}
11 Indeksowanie tablicy komórkowej (2) % K = [ 1] [5x10x2 double] [3x3 double] [] % [10x1 uint8] 'Super!' [ 0] {2x3x4 cell} Dostęp do zbioru komórek (podtablicy komórkowej) nawiasy okrągłe (ang. smooth parentheses) ( ) >> Klewa = K(:,1:2) % zwraca tablicę komórkową 2x2 Klewa = [ 1] [5x10x2 double] [10x1 uint8] 'Super!' >> Klewa(1,:) = { 'zmiana1', 'zmiana2' } % modyfikuje 2 komórki Klewa = 'zmiana1' 'zmiana2' [10x1 uint8] 'Super!' >> Klewa(:) = { 'koniec' } % modyfikuje wszystkie komórki Klewa = 'koniec' 'koniec' 'koniec' 'koniec' >> K(:,2:3) = [] % usuwa kolumny 2-3 z K K = [ 1] [] [10x1 uint8] {2x3x4 cell}
12 Wybrane funkcje operujące na tablicach komórkowych cell...tworzy pustą tablicę komórkową celldisp...wyświetla zawartość elementów tablicy komórkowej cellplot...rysuje strukturę tablicy komórkowej (2-wym.) mat2cell...konwertuje zwykłą tablicę na komórkową num2cell...konwertuje tablicę numeryczną na komórkową cell2mat...konwertuje tablicę komórkową na zwykłą iscell...sprawdza, czy zmienna jest tablicą komórkową
13 Zastosowania tablic komórkowych Obsługa niejednorodnych i nieustrukturyzowanych zbiorów danych, często tymczasowych, np. przekazywanie zmiennej liczby argumentów do i z funkcji przetwarzanie tekstu (np. wczytywanie plików)
14 Zmienna liczba argumentów funkcji Wiele funkcji Matlaba przyjmuje i zwraca zmienną liczbę argumentów, np. plot plot(x,y, 'b-') plot(x,y, 'b-', X2,Y2, 'g:') Podobnie mogą zachowywać się nasze funkcje, np. funkcja licząca środek geometryczny układu punktów [srodek] = srodek_geom(3, X,Y,Z) [sr1, sr2, sr3] = srodek_geom(2, X,Y, X2,Y2, X3,Y3)
15 Zmienna liczba argumentów funkcji (2) [srodek] = srodek_geom(3, X,Y,Z) zmienna liczba wymiar zmienna liczba środków wektorów współrzędnych [sr1, sr2, sr3] = srodek_geom(2, X,Y, X2,Y2, X3,Y3) Ponieważ rozmiary układów punktów mogą się różnić nie możemy upakować wszystkich współrzędnych w jedną zwykłą tablicę zastosujemy specjalną tablicę komórkową o nazwie varargin podobnie listę środków układów zapiszemy w tablicy komórkowej varargout
16 varargin i varargout varargout = { srodek } varargin = { X, Y, Z } [srodek] = srodek_geom(3, X,Y,Z) varargout varargin [sr1, sr2, sr3] = srodek_geom(2, X,Y, X2,Y2, X3,Y3) varargout={sr1,sr2,sr3} varargin={x,y,x2,y2,x3,y3} Nagłówek funkcji: function [varargout] = srodek_geom(wymiar, varargin)
17 Liczba argumentów WE i WY nargin i nargout nargout = 1 nargin = 4 [srodek] = srodek_geom(3, X,Y,Z) varargout varargin [sr1, sr2, sr3] = srodek_geom(2, X,Y, X2,Y2, X3,Y3) nargout = 3 nargin = 7
18 Zmienna liczba argumentów funkcji przykład function [varargout] = srodek_geom(wymiar, varargin) %SRODEK_GEOM - liczy srodek geometryczny ukladu punktow % Wywolanie: [srodek] = srodek_geom(1,x) % [srodek] = srodek_geom(3,x,y,z) % [srodek, srodek2,...] = srodek_geom(2, X,Y, X2,Y2, ) % WE: wymiar - liczba wymiarow przestrzeni % X, Y, Z - wektory kolumnowe przechowujace wsp. punktow ukladu % WY: srodek - wektor wierszowy wspolrzednych srodka geometrycznego % MIEJSCE NA WARUNKI POCZĄTKOWE... n=0; for k=1:wymiar:nargin-1 n=n+1; % iteracja po układach punktów, krok co wymiar % numer kolejny środka uklad = cell2mat(varargin(k:k+wymiar-1)); % - pobieramy fragment % tablicy wejściowej % zawierający n-ty ukł. % - konwertujemy go % na zwykłą tablicę end varargout{n} = mean(uklad); % środek układu współrzędnych % umieszczamy jako n-ty el. varargout
19 Testujemy >> X=rand(100,1); Y=rand(100,1); Z=rand(100,1); >> X2=rand(50,1)+1; Y2=rand(50,1)+1; Z2=rand(50,1)+1; >> [s,s2] = srodek_geom(1,x,x2) % 2x 1 wymiar s = % ok s2 = % ok >> s = srodek_geom(3,x,y,z) % 3 wymiary s = % ok >> [s,s2] = srodek_geom(2,x,y,x2,y2) % 2x 2 wymiary s = % ok s2 = % ok >> s = srodek_geom(3,x',y',z') % podajemy wektory wierszowe s = % co?? >> X3=rand(10)+2; Y3=rand(10)+2; >> s = srodek_geom(2,x3,y3) % podajemy macierze s = Columns 1 through Columns 9 through Columns 17 through % kolejne nieporozumienie
20 Poprawki function [varargout] = srodek_geom(wymiar, varargin) %SRODEK_GEOM - liczy srodek geometryczny ukladu punktow %... if (nargin<1) error('niepodano liczby wymiarow przestrzeni'); end if mod(nargin-1,wymiar) error('liczba wektor wspolrzednych niezgodna z wymiarem przestrzeni'); end numer=0; for k=1:wymiar:nargin-1 numer=numer+1; try % używamy try-catch uklad = cell2mat(varargin(k:k+wymiar-1)); % by dać sensowny catch % komunikat błędu error('niezgodny rozmiar wektorow wspolrzednych'); end if size(uklad,2)~=wymiar error('wymagane wektory kolumnowe'); end % tutaj załatwiamy nasz % problem z wierszowymi % wektorami współrzędnych end varargout{numer} = mean(uklad);
21 Przetwarzanie plików tekstowych Bardzo wiele danych jest przechowywanych w plikach tekstowych często łączą dane numeryczne i tekstowe (różnej długości): Janowski Adam 20 A.Nowak Miller Anna 32 D.Zuch czasami format zmienia się pomiędzy wierszami REMARK 1 PQR file generated by PDB2PQR (Version 1.8) ATOM 1 N GLY Matlab ma kilka użytecznych funkcji korzystających z tablic komórkowych
22 Wczytywanie plików tekstowych o jednorodnej strukturze Tekstowa baza pacjentów dane tekstowe i numeryczne, 1 wiersz nagłówka Nazwisko Imie Wiek Lekarz Ostatnia_wizyta Janowski Adam 20 A.Nowak Kowalski Jan 25 A.Nowak Miller Anna 32 D.Zuch >> fid = fopen('pacjenci.txt'); >> baza = textscan(fid,'%s %s %d %s %s','headerlines',1) baza = {3x1 cell} {3x1 cell} [3x1 int32] {3x1 cell} {3x1 cell} >> fclose(fid); J a n o w s k i A d a m A. N o w a k K o w a l s k i J a n A. N o w a k M i l l e r A n n a D. Z u c h
23 Wczytywanie plików tekstowych o niejednorodnej strukturze Chcemy wczytać plik PQR reprezentujący strukturę przestrzenną białka dane liczbowe i tekstowe: REMARK 1 PQR file generated by PDB2PQR (Version 1.8) REMARK 1 REMARK 6 Total charge on this protein: e REMARK 6 ATOM 1 N GLY ATOM 2 CA GLY ATOM 3 C GLY ATOM 4 O GLY ATOM 5 H2 GLY ATOM 6 H GLY ATOM 7 H3 GLY ATOM 8 HA2 GLY ATOM 9 HA3 GLY ATOM 10 N ILE ATOM 11 CA ILE ATOM 12 C ILE ATOM 13 O ILE ATOM 14 CB ILE ATOM 15 CG1 ILE ATOM 16 CG2 ILE ATOM 17 CD1 ILE
24 czytajpqr.m function [nr_at, at, aa, nr_aa, x, y, z, q, r] = czytajpqr(nazwa_pliku) %CZYTAJPQR - wczytuje strukture bialka z pliku PQR (tylko pola ATOM) % Wywolanie: [nr_at, at, aa, nr_aa, x, y, z, q, r] =czytajpqr(nazwa_pliku) % Wejscie: plik w formacie PQR % Wyjscie: % nr_at, at - numer, rodzaj atomu % aa, nr_aa rodzaj, numer aminokwasu, do którego nalezy atom % nr_aa - numer aminokwasu, do którego nalezy atom % x,y,z - pozycja atomu w przestrzeni % q, r - ladunek, promien atomu k=0; fid = fopen(nazwa_pliku,'r'); % otwiera plik do odczytu w trybie bin. while ~feof(fid) % dopóki nie natrafi na koniec pliku EOF linia = fgetl(fid); % wczytuje linie if strncmp(linia,'atom',4) % jesli linia zaczyna sie k = k+1; % od slowa kluczowego ATOM % rozbija ja wg formatu PQR [nr_at(k), at(k), aa(k), nr_aa(k), x(k), y(k), z(k), q(k), r(k)]=... strread(linia, '%*s %d %s %s %d %f %f %f %f %f\n'); end end fclose(fid); % zamyka plik PQR
25 Łańcuchy tekstowe zapisano jako tablice komórkowe % * nr_at at aa nr_aa x y z q r % ATOM 8 HA2 GLY % ATOM 9 HA3 GLY % ATOM 10 N ILE % ATOM 11 CA ILE % ATOM 12 C ILE >> [nr_at, at, aa, nr_aa, x, y, z, q, r] = czytajpqr('4ins.pqr'); Nazwy atomów (at) mają różne długości nie można zapisać ich w tablicy łańcuchów zostają zapisane w tablicy komórkowej >> class(at) ans = cell Funkcja strread zwraca łańcuchy znaków jako tablice komórkowe podobnie inne funkcje przetwarzające tekst
26 Wczytywanie plików tekstowych i parsowanie tekstu dane numeryczne + jednorodna struktura load, csvread, dlmread zwracają macierz dane alfanumeryczne + jednorodna struktura textscan zwraca tablicę komórkową textread zwraca listę zmiennych fscanf zwraca macierz dane alfanumeryczne + niejednorodna struktura fgetl czyta linia po linii, zwraca łańcuch + strread parsowanie łańcucha, zwraca listę zmiennych + textscan parsowanie łańcucha, zwraca tablicę komórkową
27 Struktura Tablica n-wymiarowa Kontener niejednorodny struktura (struct) składa się z nazwanych pól różnych typów częściowo podobna do typu struct w C Zastosowanie organizowanie danych, strukturyzacja bardzo użyteczne, patrz projekt z Języków programowania reprezentacja znaczenia danych często czytelniejszy kod
28 Tworzenie struktur (1) >> Pacjent.Nazwisko = 'Janowski'; % przez przypisanie >> Pacjent.Imie = 'Adam'; % wartości do pola >> Pacjent.Wiek = 20; >> Pacjent = % przez konstruktor struct('nazwisko','janowski','imie','adam','wiek',20); >> Pacjent(1) % >>Pacjent, gdy tylko jedna struktura ans = Nazwisko: 'Janowski' Imie: 'Adam' Wiek: 20 >> Pacjent(2) = % dodawanie kolejnego pacjenta struct('nazwisko','kowalski','imie','jan','wiek',25); >> Pacjent Pacjent = 2x1 struct array with fields: Nazwisko Imię Wiek >> Pacjent(2) ans = Nazwisko: 'Kowalski' Imie: 'Jan' Wiek: 25
29 Tworzenie struktur (2) % Nazwisko Imie Wiek Lekarz Ostatnia_wizyta % Janowski Adam 20 A.Nowak % Kowalski Jan 25 A.Nowak % Miller Anna 32 D.Zuch >> fid = fopen('pacjenci.txt'); >> baza = textscan(fid,'%s %s %d %s %s','headerlines',1) baza = {3x1 cell} {3x1 cell} [3x1 int32] {3x1 cell} {3x1 cell} >> fclose(fid); >> Pacjent = % tworzenie całej tablicy struktur z tablic komórkowych struct('nazwisko',baza{1},'imie',baza{2},'wiek',num2cell(baza{3})); Pacjent = 3x1 struct array with fields: Nazwisko imię Wiek
30 Odwołania do pól struktury przez nazwę pola >> Pacjent(1).Nazwisko ans = Janowski >> [p1, p2, p3] = Pacjent.Nazwisko p1 = Janowski p2 = Kowalski p3 = Miller dynamiczne nazwa pola jest zmienną >> pole = 'Wiek' >> Pacjent(2).(pole) ans = 20 >> pole = 'wiek'; % Uwaga na wielkość liter! >> Pacjent(2).(pole)??? Reference to non-existent field 'wiek'.
31 Wybrane funkcje operujące na strukturach struct...tworzy strukturę fieldnames...zwraca nazwy pól getfield,setfield...pobiera/ustawia wartość pola rmfield...usuwa pole num2cell...konwertuje tablicę numeryczną na komórkową isfield...sprawdza czy pole istnieje isstruct...sprawdza, czy zmienna jest strukturą struct2cell...zamienia tablicę struktur na tablicę komórkową cell2struct...zamienia tablicę komórkową na tablicę struktur
32 Ograniczenia struktur Struktury pozwalają organizować dane oraz reprezentować ich znaczenie Niestety bardzo słabo chronią przed błędami można niechcący dopisać nowe pole >> Pacjent(1).Weik = 21; >> Pacjent(1) ans = Nazwisko: 'Janowski' Imie: 'Adam' Wiek: 20 Weik: 21 nie można ograniczyć dostępu do danych
33 Program na dziś (2) Złożone typy danych Programowanie zorientowane obiektowo tworzenie klas w Matlabie własności i metody w Matlabie enkapsulacja Uwaga wymaga MATLABa R2008a (7.6) lub nowszego
34 Programowanie zorientowane obiektowo Object-oriented programming (OOP) W zasadzie zaczęliśmy już programować obiektowo na kursie Języki programowania nauczyliśmy się tworzyć proste klasy reprezentujące pojęcia i byty świata rzeczywistego tokeny, strumienie, daty (na wykładzie) pacjentów, karty medyczne itp. (w ramach projektu) Wiemy, że klasa określa przechowywane dane i dozwolone operacje na nich obiekt jest małżeństwem danych i operacji (Scott Gorlin) Dziś przeniesiemy tę wiedzę na grunt Matlaba
35 Typowy przepływ pracy (workflow) Analiza problemu co jest obiektem? jakie cechy obiektu są istotne dla danego problemu? co może się dziać z obiektem? Projekt dane i stany obiektu, które należy przechowywać operacje, które będą wykonywane na obiekcie Implementacja Testowanie
36 Przykład analiza problemu Problem: Liczenie modułu sprężystości (np. materiału na protezę) Co jest obiektem? seria pomiarów naprężenie odkształcenie Co się może dziać z obiektem? wprowadzanie pomiarów wyświetlanie pomiarów obliczanie modułu sprężystości wykreślanie krzywej
37 Przykład projekt klasy klasa PomiarElastycznosci dane (własności, ang. properties) % czyli zmienne Material % łańcuch znaków określający testowany materiał NumerProbki % numer próbki materiału Naprezenie % wektor liczb reprezentujących naprężenie % podczas testu Odksztalcenie % wektor liczb reprezentujących odkształcenie % podczas testu, odpowiednio do wektora Sila Modul % moduł sprężystości Younga operacje (metody, ang. methods) % czyli funkcje PomiarElastycznosci % konstruktor wyswietl % wyświetlanie danych liczmodul % obliczanie modułu sprężystości rysuj % rysowanie krzywej
38 Definiowanie własności klasy classdef PomiarElastycznosci end % classdef zamiast class %POMIARELASTYCZNOSCI przechowuje pomiary elastycznosci % i liczy modul Younga %... properties end Material = ''; NumerProbki = 0; Naprezenie Odksztalcenie Modul = 0; % wszystkie dane w sekcji % properties % zmienne można inicjować
39 Obiekt jako struktura o określonych polach pe = PomiarElastycznosci; % pusty obiekt pe.material = 'stal niestopowa'; pe.numerprobki = 001; pe.naprezenie = [2e4 4e4 6e4 8e4]; pe.odksztalcenie = [ ]; pe.modul = mean(pe.naprezenie./pe.odksztalcenie); >> pe pe = PomiarElastycznosci Properties: Material: 'stal niestopowa' NumerProbki: 1 Naprezenie: [ ] Odksztalcenie: [ ] Modul: e+005 Methods >> pe.materia = 'stal niestopowa' % literówka? Nie przejdzie! No public field Materia exists for class PomiarElastycznosci. >> class(pe) ans = PomiarElastycznosci % Ok, identyfikacja typu
40 Konstruktor Wpisywanie pole po polu jest niewygodne i błędogenne napiszmy konstruktor czyli funkcję tworzącą obiekt konstruktor nosi taką samą nazwę jak klasa function pe = PomiarElastycznosci(material,numprob,naprez,odkszt) warunki początkowe if nargin~=4 % Sprawdzamy poprawną liczbę danych error('wymagane 4 argumenty konstruktora...'); elseif length(odkszt)>length(naprez) % oraz zgodnosc pomiarow % odksztalcenia i naprezenia error('niezgodne liczby pomiarów odksztalcenia i naprezenia!'); end pe.material = material; pe.numerprobki = numprob; pe.naprezenie = naprez; pe.odksztalcenie = odszkt; end % PomiarElastycznosci
41 Konstruktor (2) >> pe = PomiarElastycznosci('stal niestopowa',001,[2e4 4e4 6e4 8e4],... [ ]) pe = PomiarElastycznosci Properties: Material: 'stal niestopowa' NumerProbki: 1 Naprezenie: [ ] Odksztalcenie: [ ] Modul: 0 Methods >> pe = PomiarElastycznosci('stal niestopowa',001,[2e4 4e4 6e4 8e4]) Error using PomiarElastycznosci (line 20) Wymagane 4 argumenty konstruktora >> pe = PomiarElastycznosci('stal niestopowa',001,[2e4 4e4],[ ]) Error using PomiarElastycznosci (line 22) Niezgodne liczby pomiarów odksztalcenia i naprezenia!
42 Enkapsulacja Oddzielenie i ukrycie wnętrzności klasy czyli implementacji (jak to działa?) od powierzchowności klasy czyli interfejsu (jak z tego korzystać?) Ułatwia zachowanie poprawności obiektu ogranicza dostęp do danych Umożliwia ulepszanie sposobu działania klasy bez zmiany sposobu korzystania z niej Podstawowa zasada programowania zorientowanego obiektowo
43 Enkapsulacja (2) Enkapsulacja (zwana też hermetyzacją) jest jedną podstawowych zasad inżynierii, odporność na błędy modularność kompatybilność
44 Enkapsulacja w C++ W obiektowym C++ lub Javie (zasadniczo) dane (i niektóre funkcje) są prywatne dane (i niektóre funkcje) są dostępne tylko przez funkcje publiczne Mamy kontrolę nad poprawnością obiektu (niezmienniki) Chcemy zmienić reprezentację danych w kolejnej wersji? dostosowujemy sposób działania publicznych funkcji nie modyfikujemy nagłówków funkcji korzystanie z nich nie ulega zmianie
45 Enkapsulacja w Matlabie W Matlabie też możemy ograniczyć dostęp do danych ale czasem to niewygodne i nieczytelne gdy operujemy na tablicach np. taki prosty kod x.data(1:2:end, 1:2:end) = y wyglądałby tak, gdyby Data było prywatne: temp = x.getdata; temp(1:2:end, 1:2:end) = y x.setdata(temp)
46 Enkapsulacja w Matlabie (2) Idziemy na kompromis ukrywanie danych nie sprawdzanie poprawności tak jeśli zdefiniujemy dla danej funkcje set i get Matlab wywoła je, gdy chcemy zmienić/odczytać wartość danej Zaraz zobaczymy to na naszym przykładzie
47 Sprawdzanie poprawności danych Założenie mierzymy elastyczność elementów z trzech rodzajów metalu: stali niestopowej, stali nierdzewnej i aluminium nie chcemy bałaganu w danych wymagamy by użytkownik stosował nazwy 'stal niestopowa', 'stal nierdzewna' i 'aluminium' potrzebujemy metody weryfikacji przy ustawianiu własności methods function obj = set.material(obj,material) % Pseudokod: % jeśli niewłaściwy material, zgłoś błąd % jeśli prawidłowy ustaw go, czyli: obj.material = material end % set.material end % methods >> pe.material = 'olow' Error using PomiarElastycznosci/set.Material (line 17) Akceptowany material to aluminium, stal nierdzewna, stal niestopowa
48 Weryfikacja danych (2) Założenie mierzymy elastyczność elementów z trzech rodzajów metalu: stali niestopowej, stali nierdzewnej i aluminium nie chcemy bałaganu w danych wymagamy by użytkownik stosował nazwy 'stal niestopowa', 'stal nierdzewna' i 'aluminium' potrzebujemy metody weryfikacji: methods function obj = set.material(obj,material) if ~(strcmpi(material,'aluminum')... strcmpi(material,'stal nierdzewna')... strcmpi(material,'stal niestopowa')) error('akceptowany material to aluminium, stal nierdzewna, stal niestopowa') end obj.material = material; end % set.material end % methods >> pe.material = 'olow' Error using PomiarElastycznosci/set.Material (line 17) Akceptowany material to aluminium, stal nierdzewna, stal niestopowa
49 Liczenie modułu sprężystości Moduł sprężystości łatwo policzyć na podstawie pomiarów (jest od nich zależny): Modul = Naprezenie / Odksztalcenie Wygodnie liczyć go używając funkcji get function modul = get.modul(obj) ind = find(obj.odksztalcenie > 0); % Tylko niezerowe odkształcenie modul = mean(obj.naprezenie(ind)./obj.odksztalcenie(ind)); end % get.modul
50 Liczenie modułu sprężystości (2) Moduł sprężystości łatwo policzyć na podstawie pomiarów (jest od nich zależny): Modul = Naprezenie / Odksztalcenie Wartości modułu nie trzeba przechowywać w obiekcie może ulec zmianie np. gdy dodamy nowe pomiary properties (Dependent = true) % własności zależne Modul end Użytkownik nie powinien niechcący nadpisać wartości Modul-u properties (Dependent = true, SetAccess = private) Modul end >> pe.modul = 1 Setting the 'Modul' property of the 'PomiarElastycznosci' class is not allowed.
51 classdef PomiarElastycznosci %POMIARELASTYCZNOSCI przechowuje pomiary elastycznosci... properties Material NumerProbki Odksztalcenie Naprezenie end % properties properties (Dependent = true, SetAccess = private) Modul end % Dependent + set-private properties Tak to wygląda teraz end methods function pe = PomiarElastycznosci(material,numprob,naprez,odkszt) %... function obj = set.material(obj,material) if ~(strcmpi(material,'aluminum')... strcmpi(material,'stal nierdzewna')... strcmpi(material,'stal niestopowa')) error('akceptowany material to aluminium...') end obj.material = material; end % set.material function modul = get.modul(obj) ind = find(obj.odksztalcenie > 0); % Tylko niezerowe odksztalcenie modul = mean(obj.naprezenie(ind)./obj.odksztalcenie(ind)); end % get.modul end % methods
52 Kilka zasad Własności 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 pe = PomiarElastycznosci(material,numprob,naprez,odkszt) funkcja get jest uruchamiana gdy czytamy daną parametrem funkcji get jest obiekt, zwracana jest wartość własności function modul = get.modul(obj) funkcja set jest uruchamiana gdy zmieniamy daną parametrami funkcji set są obiekt i nowa wartość, zwracany jest obiekt function obj = set.material(obj, material)
53 Nierozwiązany problem Konstruktor sprawdzał czy nie podano więcej wartości odkształcenia niż naprężenia Metoda set, np. dla Odksztalcenie, nie powinna sprawdzać długości wektora Naprezenie nie ma gwarancji kolejności w jakiej Matlab ładuje obiekt Możemy albo określić Odksztalcenie i Naprezenie jako prywatne rezygnujemy z wygodnego przypisywania albo zastosować nieco skomplikowane obejście problemu albo pogodzić się z potencjalnym błędem: >> pe.odksztalcenie = [ ]; >> pe.naprezenie = [2e4 4e4 6e4 8e4]; >> pe.modul Index exceeds matrix dimensions. Error in PomiarElastycznosci/get.Modul (line 44) modul = mean(obj.naprezenie(ind)./obj.odksztalcenie(ind));
54 Projekt klasy co nam zostało? klasa PomiarElastycznosci dane (properties) gotowe operacje (methods) PomiarElastycznosci % konstruktor - gotowe get.modul % obliczanie modułu - gotowe set.material % weryfikacja materiału - dodane i gotowe wyswietl % wyświetlanie danych - do zrobienia rysuj % rysowanie krzywej - do zrobienia
55 Wyświetlanie obiektu W Matlabie, do tekstowego wyświetlania danych, służy funkcja disp Napiszemy funkcję disp dla danych typu PomiarElastycznosci function disp(obj) %DISP wyswietla obiekt typu PomiarElastycznosci % Wywolanie: disp(obj) % obj - obiekt typu PomiarElastycznosci fprintf(1,'material: %s\nnumerprobki: %g\nmodul:%1.5g\n',... obj.material,obj.numerprobki,obj.modul); end % disp % 1 oznacza standardowe wyjście >> disp(pe) Material: stal niestopowa NumerProbki: 1 Modul:1.9005e+005 >> pe Material: stal niestopowa NumerProbki: 1 Modul:1.9005e+005
56 Przeładowanie funkcji (overloading) Właśnie przeładowaliśmy funkcję disp dla naszej klasy tzn. stworzyliśmy jej wersję specjalną uruchamianą dla typu PomiarElastycznosci >> help disp disp Display array. disp(x) displays the array, without printing the array name. In all other ways it's the same as leaving the semicolon off an expression except that empty arrays don't display. If X is a string, the text is displayed. See also int2str, num2str, sprintf, rats, format. Overloaded methods: opaque/disp PomiarElastycznosci/disp inline/disp... >> help PomiarElastycznosci/disp disp wyswietla obiekt typu PomiarElastycznosci Wywolanie: disp(obj) obj - obiekt typu PomiarElastycznosci
57 Rysowanie krzywej naprężenia W Matlabie, do rysowania wykresów służy funkcja plot Napiszemy funkcję plot dla danych typu PomiarElastycznosci function plot(obj,varargin) %PLOT rysuje wykres krzywej naprezenia plot(obj.odksztalcenie,obj.naprezenie,varargin{:}) % "zwykly" plot title(['krzywa naprezenia dla próbki',... num2str(obj.numerprobki)]) ylabel('naprezenie (psi)') xlabel('odksztalcenie %') 8 7 x K r z y w a n a p r e z e n i a d l a p r ó b k i 1 end % plot 6 N a p r e z e n i e ( p s i ) O d k s z t a l c e n i e %
58 Wersja 1 gotowe klasa PomiarElastycznosci dane (properties) gotowe operacje (methods) PomiarElastycznosci % konstruktor - gotowe get.modul % obliczanie modułu - gotowe set.material % weryfikacja materiału - dodane i gotowe disp % wyświetlanie danych - gotowe plot % rysowanie krzywej - gotowe
59 Kilka trików Obiekty można zapisywać i ładować: >> save 'moj_obiekt' pe, clear pe, load 'moj_obiekt' pe pe = Material: stal niestopowa NumerProbki: 1 Modul:1.9005e+005 Po modyfikacji własności oraz po dodaniu metody należy usunąć wszystkie obiekty danej klasy z pamięci aby zmiany odniosły skutek >> clear pe Wyświetlanie metod klasy: >> methods PomiarElastycznosci Methods for class PomiarElastycznosci: PomiarElastycznosci disp plot
60 Dziś najważniejsze było... Tablice komórkowe i ich zastosowanie dostęp do tablic komórkowych varargin i varargout Czytanie danych z plików tekstowych Programowanie zorientowane obiektowo tworzenie klas w Matlabie enkapsulacja naturalna potrzeba inżyniera
61 A za 2 tygodnie... Programowanie zorientowane obiektowo cd dziedziczenie polimorfizm uchwyty
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
Przykładowe pytania na kolokwium z Informatyki dla Inżynierii Biomedycznej
Wrocław, 2.05.2012 Przykładowe pytania na kolokwium z Informatyki dla Inżynierii Biomedycznej 14.05.2012 1. Krótko zdefiniuj następujące pojęcia i techniki. Krótko wyjaśnij do czego i dlaczego są stosowane:
WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA
WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA PRZEDMIOT : : LABORATORIUM PODSTAW AUTOMATYKI 1. WSTĘP DO
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
MATLAB Z3. Rafał Woźniak. Warsaw, Faculty of Economic Sciences, University of Warsaw
Faculty of Economic Sciences, University of Warsaw Warsaw, 09-03-2017 Generowanie liczb losowych rand(1) rand(1) generuje liczbę losową z przedziału (0,1) Jak można uzyskać liczby losowe z przedziału 1
Języki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
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
Informatyka. Wykład /2018z
Informatyka Wykład 6 2017/2018z Bogumil.Konopka@pwr.edu.pl Plan Rekurencja Programowanie zorientowane obiektowo Zalety programowania obiektowego Korzystanie z obiektów Projektowanie własnej klasy Przeładowanie
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/
Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:
Typy klasowe (klasy) 1. Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która definiuje programy za pomocą obiektów
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
Tablice. Jones Stygar na tropie zmiennych
Tablice Jones Stygar na tropie zmiennych Czym jest tablica? Obecnie praktycznie wszystkie języki programowania obsługują tablice. W matematyce odpowiednikiem tablicy jednowymiarowej jest ciąg (lub wektor),
4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku
Lista 7 Zad. 1 Pierwsza wersja programu 1. Przygotuj plik do w: plik tekstowy z pojedynczą liczbą. Umieść go w tym samym folderze, co projekt (*.cpp). 2. Nazwa pliku name nazwa zmiennej może być dowolna
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem
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ą
Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki
Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu
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
PODSTAWY INFORMATYKI 1 MATLAB CZ. 3
PODSTAWY INFORMATYKI 1 MATLAB CZ. 3 TEMAT: Program Matlab: Instrukcje sterujące, grafika. Wyrażenia logiczne Wyrażenia logiczne służą do porównania wartości zmiennych o tych samych rozmiarach. W wyrażeniach
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
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
Java - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
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ą
Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
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
Diary przydatne polecenie. Korzystanie z funkcji wbudowanych i systemu pomocy on-line. Najczęstsze typy plików. diary nazwa_pliku
Diary przydatne polecenie diary nazwa_pliku Polecenie to powoduje, że od tego momentu sesja MATLAB-a, tj. polecenia i teksty wysyłane na ekran (nie dotyczy grafiki) będą zapisywane w pliku o podanej nazwie.
Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje
Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje Opracował: Zbigniew Rudnicki Powtórka z poprzedniego wykładu 2 1 Dokument, regiony, klawisze: Dokument Mathcada realizuje
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:
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
Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki
Programowanie w Sieci Internet Blok 2 - PHP Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Podstawy podstaw, czyli małe wprowadzenie do PHP, Podstawy
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,
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
Deklaracja struktury w C++
Struktury to złożone typy danych pozwalające przechowywać różne informacje. Za pomocą struktur możliwe jest grupowanie wielu zmiennych o różnych typach w jeden obiekt. Strukturę można nazywać obiektem
Podstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
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
Dokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
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
Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą, jak
Przetwarzanie sygnałów
Spis treści Przetwarzanie sygnałów Ćwiczenie 1 Wprowadzenie do programu Octave 1 Operatory 1 1.1 Operatory arytmetyczne...................... 1 1.2 Operatory relacji.......................... 1 1.3 Operatory
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
Wykład 5: Klasy cz. 3
Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu
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
Programowanie obiektowe
Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018 Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
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,
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
Programowanie w języku Java
Katedra Inżynierii Wiedzy laborki 6 Czytanie z plików tekstowych import biblioteki io; klasa File; klasa FileReader; klasa BudderedReader; czytanie z pliku i metoda readline(); koniec dostępu do pliku;
SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania. Wykład 3. dr Artur Bartoszewski - WYKŁAD: Języki i Systemy Programowania,
SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania Wykład 3 1 SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania Przykład Bingo 2 Treść przykładu Jak wygląda karta do
Komputerowe wspomaganie eksperymentu 5
Komputerowe wspomaganie eksperymentu 5 Dr Piotr Sitarek Katedra Fizyki Doświadczalnej, Politechnika Wrocławska Temat na dziś Macierze, tablice, file i/o, konwersja typów ni.com (część materiałów zaczerpnięta
Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab
Podstawy Automatyki ćwiczenia Cz.1 Środowisko Matlab Podstawową jednostką obliczeniową w programie Matlab jest macierz. Wektory i skalary mogą być tutaj rozpatrywane jako specjalne typy macierzy. Elementy
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,
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,
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ść
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
Klasy i obiekty cz II
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy
Programowanie 3 - Funkcje, pliki i klasy
Instytut Informatyki Uniwersytetu Śląskiego Laborki funkcja; parametry funkcji; typ zwracany; typ void; funkcje bez parametrów; napis.length() - jako przykład funkcji. Zadania funkcja dodająca dwie liczby;
Mechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Wprowadzenie do środowiska
Wprowadzenie do środowiska www.mathworks.com Piotr Wróbel piotr.wrobel@igf.fuw.edu.pl Pok. B 4.22 Metody numeryczne w optyce 2017 Czym jest Matlab Matlab (matrix laboratory) środowisko obliczeniowe oraz
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
UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.
UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami
Ćwiczenie 1. Wprowadzenie do programu Octave
Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 1. Wprowadzenie do programu Octave Mimo że program Octave został stworzony do
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).
C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów
Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów
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
Podstawowe operacje na macierzach, operacje we/wy
26 listopad 2012 Podstawowe operacje na macierzach, operacje we/wy Slajd 1 Podstawowe operacje na macierzach, operacje we/wy Zakład Komputerowego Wspomagania Projektowania Semestr 1. 26 listopad 2012 Podstawowe
SKRYPTY. Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego
1 SKRYPTY Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego z = 1 y + 1+ ( x + 2) 3 x 2 + x sin y y + 1 2 dla danych wartości x = 12.5 i y = 9.87. Zadanie to można rozwiązać: wpisując dane i wzór wyrażenia
Wstęp do Informatyki dla bioinformatyków
Wstęp do Informatyki dla bioinformatyków Wykład 12 - Programowanie w BASHu Trochę bardziej zaawansowane Bartek Wilczyński 25.1.2016 Organizacyjne Bardzo proszę o wypełnienie ankiet w USOS Szczególnie zależy
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,
Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania
1) Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z podstawowymi elementami obiektowymi systemu Windows wykorzystując Visual Studio 2008 takimi jak: przyciski, pola tekstowe, okna pobierania danych
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności
Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik
Wizualne systemy programowania Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Kolekcje List
Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.
Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą
Laboratorium Algorytmy Obliczeniowe. Lab. 9 Prezentacja wyników w Matlabie
Laboratorium Algorytmy Obliczeniowe Lab. 9 Prezentacja wyników w Matlabie 1. Wyświetlanie wyników na ekranie: W Matlabie możliwe są następujące sposoby wyświetlania wartości zmiennych: a. wpisując w programie
Programowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
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.
Matlab, zajęcia 3. Jeszcze jeden przykład metoda eliminacji Gaussa dla macierzy 3 na 3
Matlab, zajęcia 3. Pętle c.d. Przypomnijmy sobie jak działa pętla for Możemy podać normalnie w Matlabie t=cputime; for i=1:20 v(i)=i; e=cputime-t UWAGA: Taka operacja jest bardzo czasochłonna i nieoptymalna
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
Lab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody
Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane
Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
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
Matlab Składnia + podstawy programowania
Matlab Składnia + podstawy programowania Matlab Matrix Laboratory środowisko stworzone z myślą o osobach rozwiązujących problemy matematyczne, w których operuje się na danych stanowiących wielowymiarowe
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
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Zanim zaczniemy GNU Octave
MatLab część I 1 Zanim zaczniemy GNU Octave 2 Zanim zaczniemy GNU Octave 3 Zanim zaczniemy GNU Octave 4 Środowisko MatLab-a MatLab ang. MATrix LABoratory Obliczenia numeryczne i symboliczne operacje na
Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup
Baltie 3 Podręcznik do nauki programowania dla klas I III gimnazjum Tadeusz Sołtys, Bohumír Soukup Czytanie klawisza lub przycisku myszy Czytaj klawisz lub przycisk myszy - czekaj na naciśnięcie Polecenie
Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.
Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory. Konstruktory Konstruktory w językach obiektowych są to specjalne metody wywoływane podczas tworzenia nowego obiektu i służące do
Podstawy programowania. Podstawy C# Tablice
Podstawy programowania Podstawy C# Tablice Tablica to indeksowany zbiór elementów Tablica jest typem referencyjnym (deklaracja tworzy tylko referencję, sama tablica musi być utworzona oddzielnie, najprościej
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
Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].
ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości
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.
Elementy metod numerycznych - zajęcia 9
Poniższy dokument zawiera informacje na temat zadań rozwiązanych w trakcie laboratoriów. Elementy metod numerycznych - zajęcia 9 Tematyka - Scilab 1. Labolatoria Zajęcia za 34 punktów. Proszę wysłać krótkie
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
STL: Lekcja 1&2. Filozofia STL
STL: Lekcja 1&2 Tematy: Filozofia STL Po co nam STL? Podstawowa zawartość STL Co warto znać zanim zaczniemy pracę z STL?: wskaźniki Praca na tekstach: klasa String Vector: nowy wymiar standardowych tablic.
Wprowadzenie do programu Mathcad 15 cz. 1
Wpisywanie tekstu Wprowadzenie do programu Mathcad 15 cz. 1 Domyślnie, Mathcad traktuje wpisywany tekst jako wyrażenia matematyczne. Do trybu tekstowego można przejść na dwa sposoby: Zaczynając wpisywanie
Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki
Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,
Programowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera
4. Funkcje. Przykłady
4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni