PODSTAWY PROGRAMOWANIA

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

Download "PODSTAWY PROGRAMOWANIA"

Transkrypt

1 PODSTAWY PROGRAMOWANIA Andrzej Marciniak Prezentacja multimedialna przygotowana za pomocą systemu Corel Presentations X3 Copyright by Andrzej Marciniak PP-8(1 z 78)

2 Na poprzednim wykładzie... # instrukcje (cd.) instrukcje strukturalne (iteracyjne, wiążąca, obsługi warunków i stanów wyjątkowych) instrukcja asemblerowa # funkcje i procedury definicje funkcji i procedur rodzaje parametrów PP-8(2 z 78)

3 Na tym wykładzie... # funkcje i procedury (cd.) przeciążanie funkcji i procedur przykłady definicji funkcji i procedur wywołanie funkcji i procedury konwencje wywoływania funkcji i procedur oraz dyrektywa inline funkcje i procedury anonimowe funkcje i procedury asemblerowe podprogramy zewnętrzne # przetwarzanie obiektów definicje metod konstruktory i destruktory metody statyczne, wirtualne, dynamiczne i abstrakcyjne przeciążanie metod PP-8(3 z 78)

4 Przeciążanie funkcji i procedur W obrębie tego samego zakresu ważności identyfikatorów można zdefiniować więcej niż jedną funkcję i (lub) procedurę o takiej samej nazwie. Wielokrotne definiowanie funkcji i procedur o takich samych nazwach nazywa się przeciążaniem (ang. overloading). W definicjach funkcji i procedur przeciążanych jest konieczne wyspecyfikowanie dyrektywy języka overload. PP-8(4 z 78)

5 Przeciążanie funkcji i procedur Jeśli dwie lub więcej funkcji i (lub) procedur przeciążonych ma taką samą nazwę, to powstaje pytanie: w jaki sposób następuje identyfikacja odpowiedniej funkcji i (lub) procedury w chwili wywołania? Odpowiedzią na to pytanie jest reguła, że takie funkcje i procedury muszą różnić się liczbą lub typami parametrów. W chwili wywołania funkcji lub procedury przeciążonej właśnie po liczbie lub typach argumentów następuje odpowiednia identyfikacja.pp-8(5 z 78)

6 Przeciążanie funkcji i procedur Przykład Załóżmy, że zdefiniowano dwie funkcje przeciążone: function suma (a, b, c : Real) : Real; overload; begin Result:=a+b+c end; function suma (a, b, c : Integer) : Integer; overload; begin Result:=a+b+c end; W instrukcji x:=suma(1, 2, 3); zostanie wywołana druga funkcja suma, a w instrukcji z:=suma(1, 2, 3.0); pierwsza (pierwsze dwa argumenty zostaną zamienione na typ Real). PP-8(6 z 78)

7 Przykłady definicji funkcji i procedur Iloczyn macierzy A i B, gdzie dim A = m n i dim B = n p, jest macierzą C, przy czym dim C = m p. Procedura znajdująca macierz C może mieć następującą postać: procedure ilm (const m, n, p : Integer; const a : matrix1; const b : matrix2; out c : matrix3); var i, j, k : Integer; s : Extended; begin for i:=1 to m do for k:=1 to p do begin s:=0; for j:=1 to n do s:=s+a[i,j]*b[j,k]; c[i,k]:=s end end; PP-8(7 z 78)

8 Przykłady definicji funkcji i procedur Dodawanie dwóch liczb zespolonych można zrealizować za pomocą funkcji function addcomplex (const a, b : complex) : complex; begin with Result do begin re:=a.re+b.re; im:=a.im+b.im end end; gdzie complex oznacza typ zdefiniowany następująco: type complex = record re, im : Extended end; PP-8(8 z 78)

9 Przykłady definicji funkcji i procedur Za pomocą funkcji function porownaj (var zmienna1, zmienna2; const rozmiar : Cardinal) : Boolean; type bajty = array [0..Maxint 1] of Byte; var i : Cardinal; begin i:=0; while (i<rozmiar) and (bajty(zmienna1)[i]=bajty(zmienna2)[i]) do i:=i+1; porownaj:=i=rozmiar end; można porównać wartości dowolnych dwu zmiennych o dowolnym rozmiarze. Typy argumentów odpowiadające parametrom nie są tu PP-8(9 z 78) istotne, gdyż zmienne te są porównywane bajt po bajcie.

10 Za pomocą procedury Przykłady definicji funkcji i procedur procedure zerowanie (var a : array of Extended); var i : Integer; begin for i:=0 to High(a) do a[i]:=0 end; można wszystkim elementom różnych tablic o elementach rzeczywistych (typu Extended) przypisać wartość 0. PP-8(10 z 78)

11 Przykłady definicji funkcji i procedur Za pomocą następującej procedury: procedure wypelnienie_tablicy (var a : array of Extended; const wartosc : Extended = 0); var i : Integer; begin for i:=0 to High(a) do a[i]:=wartosc end; można przypisywać wszystkim elementom tablic (niekoniecznie jednowymiarowych) albo domyślną wartość 0, albo wartość podaną w wywołaniu procedury. Jedynym wymaganiem jest, aby elementy tablic były typu Extended. PP-8(11 z 78)

12 Przykłady definicji funkcji i procedur Parametry o domyślnej wartości określone w definicji typu proceduralnego są nadrzędne w stosunku do takich parametrów podanych dla aktualnej funkcji lub procedury. PP-8(12 z 78)

13 Przykłady definicji funkcji i procedur Załóżmy, że zdefiniowano typ proceduralny type typ_proc = procedure (var x : Real; const i : Integer = 0); oraz procedurę o nagłówku procedure alfa (var z : Real; const k : Integer = 1); Po zadeklarowaniu zmiennych: var proc : typ_proc; y : Real; wykonanie następujących instrukcji: proc:=alfa; y:=1.123; proc (y); spowoduje wywołanie procedury alfa dla pierwszego argumentu o wartości i drugiego argumentu równego 0. PP-8(13 z 78)

14 Wywołanie funkcji Wywołanie funkcji może nastąpić za pomocą podania nazwy funkcji jako argumentu dowolnego wyrażenia. Jeśli funkcja zawiera parametry, to przy wywołaniu bezpośrednio za nazwą funkcji podaje się w nawiasach listę argumentów, przy czym poszczególne argumenty oddziela się przecinkami. Liczba argumentów musi być przy tym zgodna z liczbą parametrów formalnych, a typ każdego argumentu musi być zgodny (w określonym sensie) z typem odpowiadającego mu parametru formalnego. PP-8(14 z 78)

15 Wywołanie funkcji W przypadku parametrów o domyślnej wartości możliwe jest opuszczenie odpowiadających im argumentów. Jeśli jednak takich parametrów jest kilka i domyślną wartość przyjmuje się dla któregoś z nich, to opuszczając odpowiadający mu argument należy także opuścić wszystkie argumenty odpowiadające następnym parametrom domyślnym. Oznacza to, że dla funkcji o nagłówku np. function funkcja (a : Extended = 1.5; b : Integer = 0; c : Integer = 1) : Boolean; nie jest dozwolone wywołanie postaci funkcja (,, 0) Możliwe są wywołania: funkcja ( ) oraz funkcja PP-8(15 z 78)

16 Wywołanie funkcji Dla funkcji o nagłówku function suma_tablicy (const tablica : array of Shortint) : Longint; (z tablicowym parametrem otwartym) można zastosować wywołanie postaci suma_tablicy([m+2, 123, n]) Zapis [m+2, 123, n] nazywa się konstruktorem tablicy otwartej. Odpowiada on utworzeniu tymczasowej zmiennej typu tablicowego (nazwijmy ją tab_tymcz) o trzech elementach i przypisaniu im wartości: tab_tymcz[0]:=m+2; tab_tymcz[1]:=123; tab_tymcz[2]:=n; a następnie wywołaniu funkcji dla tej zmiennej, tj. suma_tablicy(tab_tymcz); PP-8(16 z 78)

17 Wywołanie funkcji W języku Delphi można definiować funkcje rekurencyjne. W części operacyjnej takiej funkcji następuje wywołanie tej samej funkcji. Jest to analogia do znanego w matematyce rekurencyjnego definiowania pewnych wzorów. PP-8(17 z 78)

18 Przykłady Wywołanie funkcji Definicja funkcji obliczającej n! może mieć postać: function silnia (const n : Byte) : Integer; begin if n=0 then silnia:=1 else silnia:=n*silnia(n 1) {*} end; Zastosowanie zmiennej lokalnej Result (niejawnie deklarowanej w każdej funkcji) zamiast identyfikatora funkcji (silnia) w instrukcji oznaczonej gwiazdką byłoby błędne. Użycie zmiennej Result nie powoduje bowiem wywołania funkcji. PP-8(18 z 78)

19 Przykłady Zastosowanie w podanej funkcji instrukcji try...except w celu zabezpieczenia przed przekroczeniem zakresu liczb typu Integer, tj. zdefiniowanie funkcji następująco: Wywołanie funkcji {$Q+} function silnia (const n : Byte) : Integer; begin if n=0 then silnia:=1 else try silnia:=n*silnia(n 1) except on EIntOverflow do begin ShowMessage ( Argument + wywołania funkcji jest za duży + obliczenie silni nie jest + możliwe ); raise end end end; nie jest właściwe, gdyż z uwagi na rekurencyjne wywoływania warunek EIntOverflow mógłby PP-8(19 z 78) powstać wiele razy.

20 Przykłady Zabezpieczenia przed wystąpieniem warunku EIntOverflow należy wykonać poza funkcją, na przykład tak, jak we fragmencie programu obok. Wywołanie funkcji... try s:=silnia(n) except on EIntOverflow do ShowMessage ( Argument + wywołania funkcji jest + za duży + obliczenie silni nie jest + możliwe ) end;... PP-8(20 z 78)

21 Wywołanie funkcji W języku Delphi funkcja może być wywoływana w taki sam sposób, jak procedura za pomocą instrukcji wywołania funkcji postaci nazwa-funkcji lub nazwa-funkcji (lista-parametrów-aktualnych) Wywołania te powodują wykonanie instrukcji stanowiących część operacyjną funkcji, ale obliczona wartość funkcji jest bez znaczenia. PP-8(21 z 78)

22 Wywołanie procedury Do wywołania procedury służy instrukcja wywołania procedury postaci nazwa-procedury lub nazwa-procedury (lista-parametrów-aktualnych) PP-8(22 z 78)

23 Wywołanie procedury Wywołanie procedury (lub funkcji) o parametrach przekazywanych przez zmienną dla argumentów o identycznych identyfikatorach może doprowadzić do błędnego wykonania takiej procedury (funkcji). Przykład Rozważmy następującą definicję procedury: procedure divcplx (var a, b, c : complex); var divn : Extended; begin divn:=sqr(b.re)+sqr(b.im); c.re:=(a.re*b.re+a.im*b.im)/divn; c.im:=(a.im*b.re a.re*b.im)/divn end; Wszystkie parametry są tu przekazywane przez zmienną. PP-8(23 z 78)

24 Wywołanie procedury Wywołanie procedury (lub funkcji) o parametrach przekazywanych przez zmienną dla argumentów o identycznych identyfikatorach może doprowadzić do błędnego wykonania takiej procedury (funkcji). Przykład Wywołanie tej procedury postaci divcplx (z, s, z); spowoduje wykonanie procedury dla argumentów z, s i z (będących zmiennymi), które zastąpią parametry odpowiednio a, b i c. Instrukcje procedury będą więc interpretowane jak następujące instrukcje: divn:=sqr(s.re)+sqr(s.im); z.re:=(z.re*s.re+z.im*s.im)/divn; z.im:=(z.im*s.re z.re*s.im)/divn; PP-8(24 z 78)

25 Przykład Wywołanie procedury divn:=sqr(s.re)+sqr(s.im); z.re:=(z.re*s.re+z.im*s.im)/divn; z.im:=(z.im*s.re z.re*s.im)/divn; Na skutek wykonania drugiej instrukcji przypisania, wartość zmiennej z.re w wyrażeniu występującym w trzeciej instrukcji przypisania, będzie różna od pierwotnej wartości pierwszego argumentu procedury, co w efekcie spowoduje błędne obliczenie wartości z.im. Taka sytuacja nie wystąpi przy wywołaniu procedury dla argumentów (zmiennych) o różnych identyfikatorach. PP-8(25 z 78)

26 Wywołanie procedury Niewłaściwe użycie parametrów przekazywanych przez wartość może także doprowadzić do nieoczekiwanych wyników. PP-8(26 z 78)

27 Wywołanie procedury Przykład W wyniku wykonania następującego programu tekstowego: program programam; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; var x : Integer; procedure val_param (z : Integer); begin z:=z+1; Writeln (z) end; begin x:=1; val_param (x); Writeln (x); Readln end. na ekranie otrzymamy napisy: 2 1 PP-8(27 z 78)

28 Konwencje wywoływania funkcji i procedur W języku Delphi występuje pięć dyrektyw (register, pascal, cdecl, stdcall i safecall), za pomocą których ustala się sposób przekazywania parametrów w funkcjach, procedurach i metodach. Ustalenia te, zwane konwencjami wywołania, dotyczą: # kolejności przekazywania parametrów, # automatycznego usuwania parametrów ze stosu, # używania rejestrów przez parametry, # obsługi warunków błędów i stanów wyjątkowych. PP-8(28 z 78)

29 Konwencje wywoływania funkcji i procedur register dyrektywa domyślna (nie wymaga określania); parametry są przekazywane od strony lewej do prawej, a więc w kolejności ich wyspecyfikowania; przy przekazywaniu parametrów zostanie wykorzystanych od jednego do trzech rejestrów procesora (EAX, EDX oraz ECX); po wykonaniu funkcji lub procedury wszystkie parametry zostaną automatycznie usunięte ze stosu pascal jw., ale rejestry procesora nie będą używane PP-8(29 z 78)

30 Konwencje wywoływania funkcji i procedur stdcall przekazywanie parametrów od strony prawej do lewej i brak używania w tym procesie rejestrów procesora; po zakończeniu wykonywania funkcji lub procedury parametry zostaną usunięte ze stosu cdecl jw., ale usunięcie parametrów ze stosu musi być zabezpieczone w miejscu wywołania danej funkcji lub procedury (po jej wykonaniu i przekazaniu z niej sterowania); zaprogramowanie odpowiednich instrukcji (zwykle w asemblerze) jest zadaniem programisty. safecall dotyczy wyłącznie metod łącz dualnych (pomijamy) PP-8(30 z 78)

31 Konwencje wywoływania funkcji i procedur Domyślna konwencja wywoływania (register) jest najbardziej efektywna, gdyż wskutek wykorzystywania rejestrów procesora często nie potrzeba umieszczać parametrów w stosie (dzieje się tak zawsze, gdy liczba parametrów nie przekracza trzech). Konwencje określone dyrektywami pascal i cdecl stosuje się zwykle przy wywoływaniu funkcji i procedur z bibliotek łączonych dynamicznie napisanych w językach C, C++ lub innych. W przypadku wywoływania funkcji środowiska Windows stosuje się konwencję określoną dyrektywą stdcall. PP-8(31 z 78)

32 Dyrektywa inline Dyrektywa inline podana w nagłówku funkcji, procedury lub metody powoduje wprowadzenie przez kompilator kodu wewnętrznego w miejscu wywołania (zamiast utworzenia w tym miejscu odwołania do miejsca zapisu funkcji procedury lub metody w kodzie wynikowym programu). Zastosowanie dyrektyw jest ograniczone, m.in.: - nie może być użyta dla konstruktorów, destruktorów, metod wirtualnych i metod obsługujących wiadomości (będzie dalej), - nie jest dozwolone jej stosowanie w funkjcach, procedurach i metodach z parametrami otwartymi i w zapowiedziach definicji (łącznie z dyrektywą forward). PP-8(32 z 78)

33 anonimowe anonimowe to fragmenty kodu programowego, które mogą być przypisane zmiennym lub użyte jako parametry. Definicja typu procedury anonimowej: type identyfikator-typu = reference to procedure [(lista-parametrów)]; Definicja typu funkcji anonimowej: type identyfikator-typu = reference to function [(lista-parametrów)] : typ-wartości-funkcji; PP-8(33 z 78)

34 anonimowe Definicje funkcji i procedur anonimowych nie mają nazw i nie występują samodzielnie (są zwykle przypisywane zmiennym typów funkcji i procedur anonimowych). Definicja procedury anonimowej: procedure [(lista-parametrów-formalnych)] część-opisowa begin ciąg-instrukcji end; Uwaga: Na końcu nagłówka brak średnika. PP-8(34 z 78)

35 anonimowe Definicja funkcji anonimowej: function [(lista-parametrów-formalnych)] : typ-wyniku część-opisowa begin ciąg-instrukcji end; Uwaga: Na końcu nagłówka brak średnika. PP-8(35 z 78)

36 Przykłady 1) Po definicji typów: anonimowe type fun_anonim = reference to function (const a : Byte) : Word; proc_anonim = reference to procedure (var x : Extended); i zadeklarowaniu zmiennych: var funkcja : fun_anonim; procedura : proc_anonim; Zmiennym tym mogą być przypisane odpowiednio funkcja i procedura anonimowa (z parametrami), np.: PP-8(36 z 78)

37 Przykłady 1) anonimowe funkcja:= function (const a : Byte) : Word var b : Word; begin b:=10000; Result:=a+2*b end; procedura:= procedure (var x : Extended) begin x:=x end; Jeśli następnie w programie tekstowym zostaną wykonane instrukcje: PP-8(37 z 78)

38 Przykłady 1) anonimowe Writeln (funkcja(100)); z:=1.2346; procedura (z); Writeln (z); gdzie z oznacza zmienną typu Extended, to na ekranie ukażą się napisy: E-0004 PP-8(38 z 78)

39 Przykłady anonimowe 2) Niech typ fun_anonim i zmienna funkcja będą zdefiniowane tak, jak w poprzednim przykładzie. Zdefiniujmy ponadto procedurę: procedure moja_procedura (parametr : fun_anonim); begin Writeln ( wynik =, parametr(10)+10) end; parametr typu funkcji anonimowej Wywołanie tej procedury (w programie tekstowym) postaci moja_procedura (funkcja); spowoduje pojawienie się napisu wynik = argument typu funkcji anonimowej PP-8(39 z 78)

40 Przykłady anonimowe 2) Taki sam napis uzyskamy, gdy procedurę wywołamy następująco: moja_procedura (function (const a : Byte) : Word var b : Word; begin b:=10000; Result:=a+2*b end;); definicja metody anonimowej jako argumentu wywołania procedury PP-8(40 z 78)

41 asemblerowe Jeżeli cała treść procedury lub funkcji paskalowej jest napisana w asemblerze, to zamiast zastosowania instrukcji złożonej, wewnątrz której znajduje się instrukcja asemblerowa, można posłużyć się dyrektywą języka assembler, napisaną w nagłówku funkcji lub procedury, a treść ograniczyć do instrukcji asemblerowej. Zastosowanie dyrektywy języka assembler powoduje wykonanie przez kompilator optymalizacji kodu wynikowego. PP-8(41 z 78)

42 Przykład asemblerowe function iloczyn (x, y : Shortint) : Smallint; begin Result:=Smallint(x)*y end; W postaci funkcji asemblerowej: function iloczyn (x, y : Shortint) : Smallint; assembler; asm MOV AL,x IMUL y end; PP-8(42 z 78)

43 Podprogramy zewnętrzne Język Delphi umożliwia korzystanie w programie z podprogramów zewnętrznych (procedur i funkcji) napisanych w asemblerze i zapisanych w zbiorach.obj (ang. Intel relocatable object files). W celu dołączenia procedury lub funkcji zewnętrznej należy ją zadeklarować poprzez podanie jej nagłówka zakończonego dyrektywą języka external. Ponadto należy kompilatorowi wskazać, za pomocą dyrektywy $L ($LINK), nazwę zbioru.obj zawierającego daną procedurę lub funkcję. Dołączone procedury lub funkcje zewnętrzne wywołuje się w taki sam sposób, jak zwykłe procedury i funkcje. PP-8(43 z 78)

44 Podprogramy zewnętrzne Przykład Zbiór AM.OBJ, znajdujący się w bieżącym skorowidzu, zawiera funkcję i procedurę o nazwach odpowiednio AFUN i APROC. program program24; {$APPTYPE CONSOLE} {$R *.res}... var k : Integer; y : Double; znak : Char; {$LINK AM} procedure aproc (n : Integer; var x : Double); external; function afun : Char; external; begin... aproc (k, y);... znak:=afun;... end. PP-8(44 z 78)

45 Przetwarzanie obiektów Obiektem nazywa się rodzaj danych będący połączeniem danych i działającego na nich kodu programowego. Do opisu obiektów służą w języku Delphi typy klasowe. Zmienne typów klasowych (nazywane też zmiennymi obiektowymi lub krótko obiektami) nie zawierają obiektu, ale są wskaźnikami do bloków pamięci, które zostały przydzielone obiektom (za pomocą specjalnych metod, tzw. konstruktorów). PP-8(45 z 78)

46 Przetwarzanie obiektów Definicje metod W ogólności metody określają czynności wykonywane na obiekcie i za ich pomocą następuje dostęp do pól danych obiektu. Metoda jest to procedura lub funkcja, której deklaracja (nie definicja!) występuje w definicji typu klasowego. Definicja metody występuje poza definicją odnośnego typu klasowego i po niej (w przypadku modułu w jego części implementacyjnej). PP-8(46 z 78)

47 Przetwarzanie obiektów Definicje metod W nagłówku definicji metody jej nazwa jest kwalifikowana. Kwalifikacja ta wskazuje na typ klasowy, którego dana metoda dotyczy i ma postać identyfikator-typu-klasowego.nazwa-metody Nagłówek definicji metody może (ale nie musi) zawierać powtórzenia listy parametrów formalnych z jej deklaracji w obrębie typu klasowego. Jeśli jednak taka lista występuje, to musi ona specyfikować parametry w tej samej kolejności, o takich samych nazwach i typach, a w przypadku metodyfunkcji jej typ wartości musi być identyczny z typem podanym w deklaracji. PP-8(47 z 78)

48 Przykład Przetwarzanie obiektów Definicje metod type polozenie = class x, y : Integer; procedure poczatek (nowe_x, nowe_y : Integer); end;... procedure polozenie.poczatek (nowe_x, nowe_y : Integer); begin x:=nowe_x; y:=nowe_y end; To można opuścić! PP-8(48 z 78)

49 Przykład Przetwarzanie obiektów Definicje metod type polozenie = class x, y : Integer; procedure poczatek (nowe_x, nowe_y : Integer); end;... procedure polozenie.poczatek; begin x:=nowe_x; y:=nowe_y end; PP-8(49 z 78)

50 Przetwarzanie obiektów Konstruktory i destruktory Do przydzielania pamięci obiektom (i tym samym do ich utworzenia) służą konstruktory, a do zwalniania pamięci zajętej przez obiekty destruktory. Ponieważ każdy typ klasowy jest potomkiem predefiniowanego typu klasowego TObject, którego definicja zawiera konstruktor Create i destruktor Destroy, więc z uwagi na dziedziczenie konstruktory i destruktory są elementami każdego typu klasowego. Niezależnie od dziedziczonych konstruktorów i destruktorów programista może w definicji typu klasowego określić własne konstruktory i (lub) destruktory danego typu (ich liczba nie musi być ograniczona do jednego konstruktora i jednego destruktora). PP-8(50 z 78)

51 Przetwarzanie obiektów Konstruktory i destruktory Poza specjalnym przeznaczeniem (do przydziału i zwalniania pamięci dla obiektów), konstruktory i destruktory są takimi samymi metodami, jak inne metody typu klasowego, a więc mają cechy dziedziczności i pokrywania. Deklaracje i definicje konstruktorów i destruktorów różnią się od deklaracji i definicji zwykłych metod występowaniem w ich nagłówkach słów kluczowych odpowiednio constructor i destructor (zamiast procedure lub function). PP-8(51 z 78)

52 Przetwarzanie obiektów Konstruktory i destruktory W celu utworzenia nowego obiektu konstruktor musi być wywołany jako odwołanie do klasy (!), a więc odpowiednia instrukcja powinna mieć postać zmienna-obiektowa:=typ-klasowy.nazwa-konstruktora przy czym zmienna obiektowa oznacza zmienną typu klasowego, a po nazwie konstruktora może jeszcze wystąpić lista argumentów (o ile konstruktor został zdefiniowany z listą parametrów). PP-8(52 z 78)

53 Przetwarzanie obiektów Konstruktory i destruktory Za pomocą wywołania o podanej postaci następuje: # przydzielenie obiektowi bloku pamięci w stosie, # wyzerowanie przydzielonej pamięci, tj. przypisanie wartości 0 wszystkim polom o porządkowym typie wartości, adresu pustego (nil) wszystkim polom o wartościach typów wskaźnikowych i klasowych oraz łańcucha pustego wszystkim polom o wartościach typów łańcuchowych, # przypisanie podanej zmiennej obiektowej odwołania do obiektu (typem wartości tego odwołania jest typ klasowy wyspecyfikowany w podanej konstrukcji). PP-8(53 z 78)

54 Przetwarzanie obiektów Konstruktory i destruktory Gdy konstruktor zostanie wywołany jako odwołanie do obiektu, a więc tak, jak zwykła metoda, tj. za pomocą instrukcji postaci zmienna-obiektowa.nazwa-konstruktora jego działanie jest analogiczne do zwykłej metody, tzn. zostaną wykonane operacje określone w treści konstruktora, ale w pamięci nie zostanie utworzony żaden nowy obiekt, ani też nie zostanie przez konstruktor przekazana żadna wartość określająca odwołanie do obiektu. PP-8(54 z 78)

55 Przetwarzanie obiektów Konstruktory i destruktory Na ogół wywołanie konstruktora w postaci odwołania do obiektu występuje tylko w celu wykonania konstruktora z typu nadrzędnego (dziedziczonego) i wówczas zamiast podanej instrukcji stosuje się instrukcję dziedziczenia: lub inherited nazwa-konstruktora inherited nazwa-konstruktora (lista-parametrów-aktualnych) Nazwa konstruktora oznacza tu nazwę konstruktora nadrzędnego typu klasowego, a druga postać instrukcji dziedziczenia konstruktora dotyczy PP-8(55 z 78) przypadku, gdy konstruktor ten ma listę parametrów.

56 Przetwarzanie obiektów Konstruktory i destruktory Przykład Rozważmy następującą definicję typu klasowego: type druk = class autor, tytul : string; rok_wydania, numer_katalogowy : Word; private... public constructor Inicjuj (aut, tyt : string; rok : Word);... end; Konstruktory zawsze deklaruje się w sekcji public, gdyż powinny one być ogólnie dostępne. PP-8(56 z 78)

57 Przykład Przetwarzanie obiektów Konstruktory i destruktory Definicja konstruktora Inicjuj typu druk może mieć postać constructor druk.inicjuj; begin inherited Create; autor:=aut; tytul:=tyt; rok_wydania:=rok; numer_katalogowy:=0 end; Pierwszą instrukcją jest wywołanie konstruktora typu nadrzędnego (typem tym jest domyślnie typ standardowy TObject). Instrukcja taka powinna być zawsze pierwszą instrukcją każdego definiowanego konstruktora. PP-8(57 z 78)

58 Przykład Przetwarzanie obiektów Konstruktory i destruktory Jeśli zadeklarujemy zmienną: var moj_druk : druk; to w celu zainicjowania rozważanego obiektu należy wykonać instrukcję moj_druk:=druk.inicjuj( A. Marciniak, Język programowania Delphi, 2012); Oczywiście argumenty są tu przykładowe. PP-8(58 z 78)

59 Przetwarzanie obiektów Konstruktory i destruktory Jeśli konstruktor w typie potomnym ma zmienić wartości pewnych pól (lub własności) ustalonych w konstruktorze typu nadrzędnego, to należy zadeklarować go z dyrektywą języka override, np. constructor Create (wlasciciel : TComponent); override; Jeżeli podczas wykonywania konstruktora wystąpi błąd, następuje automatyczne wywołanie destruktora Destroy (jest on zdefiniowany w pierwotnym typie klasowym TObject i tym samym dziedziczony we wszystkich typach klasowych). Destruktor ten usuwa z pamięci konstruowany (niedokończony) obiekt. PP-8(59 z 78)

60 Przetwarzanie obiektów Konstruktory i destruktory Destruktor jest specjalną metodą, która służy do destrukcji obiektu, tj. do zwolnienia zajętej przez niego pamięci. Zwolnienie tej pamięci jest ostatnią czynnością wykonywaną przez destruktor wcześniej zostaną wykonane instrukcje podane w jego definicji. Instrukcjami tymi są zazwyczaj zwolnienia pamięci wewnętrznych obiektów i zasobów przydzielonych obiektowi. Tak, jak w przypadku konstruktora, pierwszą instrukcją jest wywołanie konstruktora nadrzędnego typu klasowego, ostatnią instrukcją destruktora powinno być wywołanie destruktora PP-8(60 z 78) tego typu.

61 Przetwarzanie obiektów Konstruktory i destruktory Dla obiektów predefiniowanych typów klasowych bezpośrednie wywoływanie destruktora Destroy nie jest zalecane należy raczej posługiwać się metodą Free (zdefiniowaną w standardowym typie klasowym TObject). Jej zaletą jest uprzednie sprawdzenie, czy zwalniany obiekt nie jest określony przez adres pusty (nil): procedure TObject.Free; begin if Self<>nil then Destroy end; PP-8(61 z 78)

62 Przykład Przetwarzanie obiektów Konstruktory i destruktory Deklaracja destruktora w typie ksztalt pokrywającego destruktor z typu nadrzędnego (w sekcji public): destructor Destroy; override; Definicja destruktora: destructor ksztalt.destroy; begin pioro.free; pedzel.free; inherited Destroy end; wywołanie destruktora typu nadrzędnego PP-8(62 z 78)

63 Przetwarzanie obiektów Metody statyczne W typie potomnym można określić metodę o takiej samej nazwie. Powoduje to, że podczas wykonywania programu jednocześnie mogą być dostępne dwie (lub większa liczba) metod o takich samych identyfikatorach. Dla zwykłych metod, które domyślnie są metodami statycznymi, o tym która metoda ma być wykonana, decyduje zadeklarowany typ klasowy zmiennej obiektowej (zmiennej typu klasowego) użytej w wywołaniu metody. PP-8(63 z 78)

64 Przetwarzanie obiektów Metody statyczne Przykład Załóżmy, że zdefiniowano dwa typy klasowe: type druk = class procedure do_katalogu;... end; ksiazka = class (druk) procedure do_katalogu;... end; W obu definicjach występuje metoda o takiej samej nazwie. PP-8(64 z 78)

65 Przetwarzanie obiektów Metody statyczne Przykład Zadeklarujmy zmienne obiektowe obu typów: var moj_druk : druk; moja_ksiazka : ksiazka; i rozważmy następujące instrukcje: moj_druk:=druk.create; moj_druk.do_katalogu; moj_druk.free; moj_druk:=ksiazka.create; moj_druk.do_katalogu; moj_druk.free; wywołanie metody do_katalogu typu druk wywołanie metody do_katalogu typu druk PP-8(65 z 78)

66 Przetwarzanie obiektów Metody statyczne Przykład Zadeklarujmy zmienne obiektowe obu typów: var moj_druk : druk; moja_ksiazka : ksiazka; i rozważmy następujące instrukcje: moja_ksiazka:=ksiazka.create; moja_ksiazka.do_katalogu; wywołanie metody do_katalogu typu ksiazka moja_ksiazka.free; Z podanego przykładu wynika, że przy wywoływaniu metod statycznych ważny jest typ klasowy podany w deklaracji zmiennej obiektowej, a nie typ wyspecyfikowany w instrukcji tworzącej obiekt w pamięci. PP-8(66 z 78)

67 Przetwarzanie obiektów Metody wirtualne Metodę nazywamy metodą wirtualną, jeśli jej deklaracja w typie klasowym zawiera dodatkowo dyrektywę języka virtual. Metody, które w typach potomnych pokrywają metodę wirtualną, powinny być zadeklarowane z dyrektywą języka override (metody takie też są metodami wirtualnymi). Jeśli metoda wirtualna ma parametry, to odpowiadająca jej metoda pokrywająca musi mieć tę samą liczbę parametrów, wyspecyfikowanych w takiej samej kolejności, a typy parametrów muszą być identyczne z typami parametrów metody wirtualnej. PP-8(67 z 78)

68 Przetwarzanie obiektów Metody wirtualne Pominięcie dyrektywy override w deklaracji metody o takiej samej nazwie w typie potomnym powoduje, że będzie ona zwykłą metodą statyczną, która przesłoni metodę z typu nadrzędnego. W przypadku metod wirtualnych o identycznych identyfikatorach o tym, która metoda ma być wykonana, decyduje aktualny (a nie deklarowany) typ zmiennej obiektowej. PP-8(68 z 78)

69 Przetwarzanie obiektów Metody wirtualne Przykład Niech w typie klasowym druk metoda do_katalogu będzie zadeklarowana jako wirtualna: type druk = class procedure do_katalogu; virtual;... end; PP-8(69 z 78)

70 Przetwarzanie obiektów Metody wirtualne Przykład Zdefiniujmy ponadto dwa potomne typy klasowe z metodami pokrywającymi metodę do_katalogu: type ksiazka = class (druk) procedure do_katalogu; override;... end; czasopismo = class (druk) procedure do_katalogu; override;... end; PP-8(70 z 78)

71 Przetwarzanie obiektów Metody wirtualne Przykład Zadeklarujmy zmienną moj_druk typu druk: var moj_druk : druk; Rozważmy następujące instrukcje: moj_druk:=ksiazka.create; moj_druk.do_katalogu; wywołanie metody do_katalogu typu ksiazka moj_druk.free; moj_druk:=czasopismo.create; moj_druk.do_katalogu; wywołanie metody do_katalogu typu czasopismo moj_druk.free; O tym, która metoda zostanie wywołana, decyduje aktualny PP-8(71 z 78) typ zmiennej moj_druk.

72 Przetwarzanie obiektów Metody wirtualne Metody wirtualne służą przede wszystkim do wywoływania metod o takich samych nazwach, które zwykle wykonują inne czynności i które są zadeklarowane w kolejnych typach potomnych. Jeśli w typie potomnym dla metody wirtualnej z typu nadrzędnego pominiemy dyrektywę override, to będzie ona uważana za zwykłą metodę statyczną przesłaniającą odpowiednią metodę typu nadrzędnego. W takim przypadku kompilator wygeneruje jednak ostrzeżenie o przesłonięciu metody wirtualnej zadeklarowanej w typie nadrzędnym. Jeśli przesłonięcie metody wirtualnej z typu nadrzędnego jest zamierzone, to w celu wyeliminowania ostrzeżenia kompilatora należy metodę przesłaniającą zadeklarować z dyrektywą języka reintroduce. PP-8(72 z 78)

73 Przetwarzanie obiektów Metody dynamiczne Metody dynamiczne deklaruje się za pomocą dyrektywy języka dynamic. Semantycznie są one identyczne z metodami wirtualnymi, a różnią się od nich tylko szybkością wywołań podczas wykonywania programu. Dla metod wirtualnych kompilator generuje kod wynikowy, który jest optymalny z punktu widzenia szybkości wywoływania metod, a dla metod dynamicznych optymalny z uwagi na rozmiar kodu. PP-8(73 z 78)

74 Przetwarzanie obiektów Metody abstrakcyjne Metoda abstrakcyjna jest to metoda wirtualna lub dynamiczna, której definicja nie jest podana dla klasy, w której została zadeklarowana. W deklaracji takiej metody oprócz dyrektywy virtual lub dynamic należy wyspecyfikować dyrektywę języka abstract. W metodzie pokrywającej metodę abstrakcyjną nie jest dozwolone odwołanie się do niej za pomocą instrukcji inherited. Próba wywołania metody abstrakcyjnej zakończy się wygenerowaniem warunku błędu. PP-8(74 z 78)

75 Przetwarzanie obiektów Przeciążanie metod Zastosowanie dyrektywy overload w deklaracji metody oznacza jej redeklarację. Jeśli redeklarowana metoda ma przy tym inne parametry niż występujące w typie nadrzędnym, oznacza to tzw. przeciążenie metody nadrzędnej bez jej przesłonięcia. W takim przypadku jest możliwe wywołanie zarówno metody przodka, jak i metody przeciążonej. O tym, która metoda zostanie wywołana, decyduje zgodność argumentów w wywołaniu metody z jej parametrami. PP-8(75 z 78)

76 Przetwarzanie obiektów Przeciążanie metod Przykład. Rozważmy definicje: type alfa = class... procedure metoda (a : Real); overload; virtual; end; beta = class (alfa)... procedure metoda (znak : Char); reintroduce; overload; end; Jeśli utworzymy obiekt obiekt typu beta, to instrukcja obiekt.metoda ( ); spowoduje wywołanie metody metoda z typu alfa, a instrukcja obiekt.metoda ( A ); PP-8(76 z 78) wywoła metodę metoda zadeklarowaną w typie beta.

77 Przetwarzanie obiektów Metody klasowe Metoda klasowa jest to specjalna metoda, która służy do przetwarzania klas (dokładniej: dotyczy zmiennych typu odwołania do klasy), a nie obiektów (ściślej: zmiennych typu klasowego). Deklaracja (w typie klasowym) i definicja (poza definicją typu klasowego) metody rozpoczyna się od słowa kluczowego class. PP-8(77 z 78)

78 Nareszcie koniec!!!... tak, koniec, ale tylko na dzisiaj! PP-8(78 z 78)

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

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

Bardziej szczegółowo

Język programowania PASCAL

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

Bardziej szczegółowo

PODSTAWY PROGRAMOWANIA

PODSTAWY PROGRAMOWANIA PODSTAWY PROGRAMOWANIA Andrzej Marciniak Prezentacja multimedialna przygotowana za pomocą systemu Corel Presentations X3 Copyright 2003-2016 by Andrzej Marciniak PP-7(1 z 84) Na poprzednim wykładzie...

Bardziej szczegółowo

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia

Bardziej szczegółowo

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 Uwaga: DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 1. Zostały pominięte diagramy: CYFRA, CYFRA SZESNASTKOWA, ZNAK i LITERA. Nie została uwzględniona możliwość posługiwania się komentarzami. 2. Brakuje

Bardziej szczegółowo

Delphi Laboratorium 3

Delphi Laboratorium 3 Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,

Bardziej szczegółowo

Zapis programu z wykorzystaniem modułu (Podstawy Delphi 2.1, 2.2, 2.3 str11 )

Zapis programu z wykorzystaniem modułu (Podstawy Delphi 2.1, 2.2, 2.3 str11 ) Przypomnienie dziedziczenie obiektów Przykład (p6) Zapis programu z wykorzystaniem modułu (Podstawy Delphi 2.1, 2.2, 2.3 str11 ) Przykład (p7) przypomnienie zapis z wykorzystaniem rekordu W pliku projektu

Bardziej szczegółowo

Wykład 5: Klasy cz. 3

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

Bardziej szczegółowo

Podstawy Programowania semestr drugi. Wykład czternasty

Podstawy Programowania semestr drugi. Wykład czternasty Wykład czternasty 1. Polimorfizm Ostatni wykład zakończyliśmy stwierdzeniem, że możemy obiektowi dowolnej klasy przypisa ć obiekt klasy dziedziczącej po tej klasie. Przypisanie takie obejmuje jednak jedynie

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

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale

Bardziej szczegółowo

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

PODSTAWY PROGRAMOWANIA PODSTAWY PROGRAMOWANIA Andrzej Marciniak Prezentacja multimedialna przygotowana za pomocą systemu Corel Presentations X3 Copyright 2003-2017 by Andrzej Marciniak PP-4(1 z 88) Na poprzednim wykładzie...

Bardziej szczegółowo

PODSTAWY PROGRAMOWANIA

PODSTAWY PROGRAMOWANIA PODSTAWY PROGRAMOWANIA Andrzej Marciniak Prezentacja multimedialna przygotowana za pomocą systemu Corel Presentations X3 Copyright 2003-2016 by Andrzej Marciniak PP-5(1 z 93) Na poprzednim wykładzie...

Bardziej szczegółowo

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe Podstawy programowania Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe 1 Podstawy programowania Część I Łańcuchy znaków 2 I. Zmienne łańcuchowe Klasyfikacja zmiennych statycznych

Bardziej szczegółowo

Szablony klas, zastosowanie szablonów w programach

Szablony klas, zastosowanie szablonów w programach Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do

Bardziej szczegółowo

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych: Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym

Bardziej szczegółowo

Ada-95. Dariusz Wawrzyniak

Ada-95. Dariusz Wawrzyniak Część I Wskaźniki Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Wskaźniki

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

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 PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem. Podstawy programowania Wykład PASCAL Zmienne wskaźnikowe i dynamiczne 1 dr Artur Bartoszewski - Podstawy prograowania, sem. 1- WYKŁAD Rodzaje zmiennych Zmienne dzielą się na statyczne i dynamiczne. Zmienna

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma}; INSTRUKCJA PUSTA Nie składa się z żadnych znaków i symboli, niczego nie robi Przykłady: for i := 1 to 10 do {tu nic nie ma}; while a>0 do {tu nic nie ma}; if a = 0 then {tu nic nie ma}; INSTRUKCJA CASE

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

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

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

Wprowadzenie do programowania w języku C

Wprowadzenie do programowania w języku C Wprowadzenie do programowania w języku C Część trzecia Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów

Bardziej szczegółowo

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale

Bardziej szczegółowo

Tworzenie własnych komponentów

Tworzenie własnych komponentów Tworzenie własnych komponentów 1. Tworzenie nowego komponentu W tym celu należy wykorzystać menu Component. Interesujące są dwie opcje menu New Component i Install Component. Pierwsze polecenie służy do

Bardziej szczegółowo

Wstęp do programowania. Różne różności

Wstęp do programowania. Różne różności Wstęp do programowania Różne różności Typy danych Typ danych określa dwie rzeczy: Jak wartości danego typu są określane w pamięci Jakie operacje są dozwolone na obiektach danego typu 2 Rodzaje typów Proste

Bardziej szczegółowo

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? 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

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem.

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem. Podstawy programowania Wykład PASCAL Wstęp do programowania obiektowego 1 Programowanie obiektowe - definicja Programowanie obiektowe paradygmat programowania, w którym programy definiuje się za pomocą

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje

Bardziej szczegółowo

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie

Bardziej szczegółowo

Lekcja 6: Pascal. Procedura i funkcja

Lekcja 6: Pascal. Procedura i funkcja Lekcja 6: Pascal. Procedura i funkcja S. Hoa Nguyen 1 Materiał Książka: Programowanie w języku Pascal. Rozdział 9. Podprogramy Podprogramy - motywacja Skrócenie zapisu (wielokrotne powtórzenia tej samej

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

Do czego służą klasy?

Do czego służą klasy? KLASY Dorota Pylak 2 Do czego służą klasy? W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można wykonywać

Bardziej szczegółowo

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Informatyka I Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Dziedziczenie klas

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski

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

Pascal - wprowadzenie

Pascal - wprowadzenie Pascal - wprowadzenie Ogólne informacje o specyfice języka i budowaniu programów Filip Jarmuszczak kl. III c Historia Pascal dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część piąta Proste typy danych w języku Pascal Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura

Bardziej szczegółowo

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę. Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji

Bardziej szczegółowo

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów Funkcje. Spotkanie 5 Dr inż. Dariusz JĘDRZEJCZYK Tworzenie i używanie funkcji Przekazywanie argumentów do funkcji Domyślne wartości argumentów Przeładowanie nazw funkcji Dzielenie programu na kilka plików

Bardziej szczegółowo

Podstawy programowania skrót z wykładó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

Bardziej szczegółowo

KLASY cz.1. Dorota Pylak

KLASY cz.1. Dorota Pylak KLASY cz.1 Dorota Pylak Do czego służą klasy? 2 W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można

Bardziej szczegółowo

Procedury i funkcje - powtórzenie i uzupełnienia. Przykład funkcji potęgowanie przy wykładniku naturalnym

Procedury i funkcje - powtórzenie i uzupełnienia. Przykład funkcji potęgowanie przy wykładniku naturalnym Procedury i funkcje - powtórzenie i uzupełnienia Przykład funkcji potęgowanie przy wykładniku naturalnym program potegowanie; {$APPTYPE CONSOLE} uses SysUtils; var x: real; n: integer; function Potega(podstawa:

Bardziej szczegółowo

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne: Instrukcje podsumowanie Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne: - grupująca end - warunkowa if

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 II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe Podstawy programowania Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe 1 I. Składnia Składnia programu Program nazwa; Uses biblioteki; Var deklaracje zmiennych;

Bardziej szczegółowo

Wykład 9: Polimorfizm i klasy wirtualne

Wykład 9: Polimorfizm i klasy wirtualne Programowanie obiektowe Wykład 9: i klasy wirtualne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Programowanie obiektowe i metody wirtualne 2 W programowaniu obiektowym polimorfizm

Bardziej szczegółowo

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

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

Bardziej szczegółowo

Dziedziczenie jednobazowe, poliformizm

Dziedziczenie jednobazowe, poliformizm Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie jednobazowe 2. Polimorfizm część pierwsza 3. Polimorfizm część druga Zofia Kruczkiewicz, ETE8305_6 1 Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie

Bardziej szczegółowo

Programowanie w Turbo Pascal

Programowanie w Turbo Pascal Skróty: ALT + F9 Kompilacja CTRL + F9 Uruchomienie Struktura programu: Programowanie w Turbo Pascal Program nazwa; - nagłówek programu - blok deklaracji (tu znajduje się VAR lub CONST) - blok instrukcji

Bardziej szczegółowo

.NET Klasy, obiekty. ciąg dalszy

.NET Klasy, obiekty. ciąg dalszy .NET Klasy, obiekty ciąg dalszy Przeciążanie operatorów 1 W języku C# istnieje możliwość zdefiniowania funkcjonalności dużej części operatorów dla typów stworzonych przez użytkownika. Dzięki takiemu zabiegowi,

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować

Bardziej szczegółowo

Programowanie, część I

Programowanie, część I Programowanie, część I Rafał J. Wysocki Instytut Fizyki Teoretycznej, Wydział Fizyki UW 22 lutego 2011 Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część I 22 lutego 2011 1 / 80 Wstęp Informacje organizacyjne

Bardziej szczegółowo

Wykład 1: Wskaźniki i zmienne dynamiczne

Wykład 1: Wskaźniki i zmienne dynamiczne Programowanie obiektowe Wykład 1: Wskaźniki i zmienne dynamiczne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Podstawy programowania w C++ Wskaźniki 2 dr Artur Bartoszewski - Programowanie

Bardziej szczegółowo

Definicje klas i obiektów. Tomasz Borzyszkowski

Definicje klas i obiektów. Tomasz Borzyszkowski Definicje klas i obiektów Tomasz Borzyszkowski Podstawy Do tej pory używaliśmy klas jedynie po to, by zdefiniować metodę main(). Klasy mają znacznie szersze zastosowanie w Java. W OOP (także w Java) klasy

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 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

10. Programowanie obiektowe w PHP5

10. Programowanie obiektowe w PHP5 Ogólnie definicja klasy wygląda jak w C++. Oczywiście elementy składowe klasy są zmiennymi PHP, stąd nieśmiertelne $. Warto zauważyć, że mogą one mieć wartość HHH mgr inż. Grzegorz Kraszewski TECHNOLOGIE

Bardziej szczegółowo

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

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

Bardziej szczegółowo

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania 1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie w języku C++

Programowanie w języku C++ Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1 Podstawy programowania Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1 1 I. Składnia Składnia programu Program nazwa; Uses biblioteki; Var deklaracje zmiennych; Begin

Bardziej szczegółowo

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,

Bardziej szczegółowo

Do czego służą klasy?

Do czego służą klasy? KLASY Dorota Pylak 2 Do czego służą klasy? W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można wykonywać

Bardziej szczegółowo

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop. 2010 Spis treści Wstęp 11 Część I PASCAL - wprowadzenie do programowania strukturalnego

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka

Bardziej szczegółowo

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;

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

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

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy PRAWA PRZYJACIÓŁ KLASY. Dostęp z zewnątrz: Dostęp z wewnątrz:

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy PRAWA PRZYJACIÓŁ KLASY. Dostęp z zewnątrz: Dostęp z wewnątrz: Prawa dostępu do składowych klasy PRAWA PRZYJACIÓŁ KLASY 91 Dostęp z zewnątrz: double limit; ; water_temp T; T.limit = 100; Dostęp z wewnątrz: double set_temp(double nt) { if (nt0) ; water_temp

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl

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

Podstawy Programowania 2

Podstawy Programowania 2 Podstawy Programowania 2 Laboratorium 7 Instrukcja 6 Object Pascal Opracował: mgr inż. Leszek Ciopiński Wstęp: Programowanie obiektowe a programowanie strukturalne. W programowaniu strukturalnym, któremu

Bardziej szczegółowo

Abstrakcyjny typ danych

Abstrakcyjny typ danych Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są

Bardziej szczegółowo

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,

Bardziej szczegółowo

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20. i łączenie podprogramów a z programem napisanym w Ze względu na duże rozpowszechnienie języka, szczególnie

Bardziej szczegółowo

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word Pascal - powtórka Alfabet, Nazwy W odróŝnieniu do C w Pascal nie odróŝnia małych i duŝych liter. Zapisy ALA i ala oznaczają tę samą nazwę. Podobnie np. słowo kluczowe for moŝe być zapisane: FOR. W Pascalu

Bardziej szczegółowo

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Podstawy algorytmiki i programowania - wykład 4 C-struktury 1 Podstawy algorytmiki i programowania - wykład 4 C-struktury Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy

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

C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm POLIMORFIZM

C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm POLIMORFIZM POLIMORFIZM Podstawowe pytanie, które nieustannie ma towarzyszyć autorowi programowi: czy gdyby nagle okazało się, że jest więcej... (danych na wejściu, typów danych, czynności, które program ma wykonać,

Bardziej szczegółowo