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

Podobne dokumenty
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 10

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

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Tworzenie kwerend. Nazwisko Imię Nr indeksu Ocena

1 Historia i cechy C++ 2 PRZYDATNE KONSTRUKCJE

Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:

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

"Pies" P i e s \0. Prawidłowy zapis wymaga wykorzystania funkcji strcpy() z pliku nagłówkowego string.h: char txt[10]; strcpy(txt, Pies );

Wykład 1: Wskaźniki i zmienne dynamiczne

W dowolnym momencie można zmienić typ wskaźnika.

Instrukcja korzystania z serwisu Geomelioportal.pl. - Strona 1/12 -

Instrukcja użytkownika

Optymalne przydzielanie adresów IP. Ograniczenia adresowania IP z podziałem na klasy

imię kod ulica prześlij Dzięki formularzom możliwe jest pobieranie danych, a nie tylko ich wyświetlanie.

Przestrzeń papier / model

Przeciążanie metod i operatorów

Zarządzanie pamięcią operacyjną

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

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Zintegrowany system obsługi przedsiębiorstwa. Migracja do Firebird 2.x

Nowe funkcje w module Repozytorium Dokumentów

Wykład 8: klasy cz. 4

ZESPÓŁ LABORATORIÓW TELEMATYKI TRANSPORTU ZAKŁAD TELEKOMUNIKACJI W TRANSPORCIE WYDZIAŁ TRANSPORTU POLITECHNIKI WARSZAWSKIEJ

Nowe funkcje w programie Symfonia e-dokumenty w wersji Spis treści:

stworzyliśmy najlepsze rozwiązania do projektowania organizacji ruchu Dołącz do naszych zadowolonych użytkowników!

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37

INSTRUKCJA UŻYTKOWNIKA OTWARTEGO SYSTEMU ANTYPLAGIATOWEGO (OSA)

KASPERSKY LAB. Kaspersky Administration Kit wersja 6.0. Podręcznik administratora

Opis i specyfikacja interfejsu SI WCPR do wybranych systemów zewnętrznych

ZASADY PROGRAMOWANIA KOMPUTERÓW

Wykrywanie i usuwanie uszkodzeń w sieci

Sugerowany sposób rozwiązania problemów. Istnieje kilka sposobów umieszczania wykresów w raportach i formularzach.

Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wprowadzenie. Wprowadzenie

Operatory odległości (część 2) obliczanie map kosztów

SENTE CMS zarządzanie treścią witryny internetowej

Wstęp do MS ACCESS. 1. Wprowadzenie

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

WYKŁAD 2 Historia rozwoju technik programowania. Granica pomiędzy programem a agentem. Cykl życia i podstawowe elementy składowe agenta.

System CDN OPT!MA v Generator Raportów (GenRap) Kraków, Al. Jana Pawła II 41g tel. (12) , fax (12)

Programowanie warstwy klienta w aplikacji Java EE

1 Historia i cechy C++ 2 PRZYDATNE KONSTRUKCJE

MultiInfo SOHO. w Instrukcja obsługi dla administratora klienta

TEMAT: Rysowanie krzyżówek z wykorzystaniem programu komputerowego Microsoft Word.

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Zmiany funkcjonalne wprowadzone w wersji

System CDN OPT!MA v Generator Raportów (GenRap) Kraków, Al. Jana Pawła II 41g tel. (12) , fax (12)

GEO-I FO V Państwowy Rejestr Granic

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

Specyfikacja dotycząca modernizacji przepompowni ścieków należącej do oczyszczalni ścieków w Podrzeczu.

Writer edytor tekstowy.

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

Moduł Konsolidacji Sprawozdań wersja

B2B by CTI. Lista funkcjonalności

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

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Acronis Backup & Recovery 10 Server for Linux

COMARCH ERP E-SKLEP...

Instrukcja użytkownika AP-KOLCE

Bożena Czyż-Bortowska, Biblioteka Pedagogiczna w Toruniu

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Lista zmian Sello. Wersja Wersja Wersja

Lekcja 1:.Powtórka. <head> <title>kurs HTML</title> </head> <body> <p>to jest tresc...</p> </body>

Współpraca programów WINBUD Kosztorys i Symfonia Handel premium I Informacje ogólne

Warunki usług międzynarodowych. Aktualizacja - 25 października 2015 r.

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

Wykład 5: Klasy cz. 3

Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wprowadzenie o. Wprowadzenie o

Programowanie obiektowe W3

Regulamin obowiązujący do :

RGB16- TELEBIMY FULL KOLOR-PAMIĘĆ WBUDOWANA (RASTER 16mm) Oferta ważna od r.

Oznaczenie CE. Ocena ryzyka. Rozwiązanie programowe dla oznakowania

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Chcąc dopasować nasze treści do Twoich potrzeb korzystamy na naszych. stronach z technologii pozwalających nam zbierać Twoje dane osobowe.

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Konfiguracja Windows do pracy w sieci

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Polityka Prywatności. Kto jest administratorem danych osobowych?

WYSTAWIANIE FAKTUR I FAKTUR KORYGUJĄCYCH W DZIAŁALNOŚCI GOSPODARCZEJ ŚRODA Z KSIĘGOWĄ JOANNA MATUSIAK

B2B by CTI. Lista funkcjonalności

Podstawy programowania w języku C++

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

QuarkXpress skład i publikacja operacje podstawowe

Wstęp. 2. Definicje. 3. Warunki zawarcia umowy

Skróty klawiszowe Window-Eyes

Parametryzacja modeli części w Technologii Synchronicznej

Jak założyć blog na platformie blogów CEO w 3 krokach

Jak przekazujemy 1% w 2019 roku

PROGRAM SZKOLENIA DLA SPECJALISTÓW RYNKU PRACY Z UŻYTKOWANIA OPROGRAMOWANIA EIPD

Bożena Zwierzyńska, Pedagogiczna Biblioteka Wojewódzka w Katowicach, Filia w Bytomiu

Skaner mks_vir dla Exchange

Do zarządzania kontami uŝytkowników naleŝy ich zakładanie, usuwanie, modyfikowanie, zmiana hasła oraz szereg dodatkowych czynności.

RGB25- TELEBIMY FULL KOLOR-PAMIĘĆ WBUDOWANA (RASTER 25mm) Oferta ważna od r.

Acronis Backup & Recovery 10 Advanced Server

Sieci neuronowe model konekcjonistyczny

Zmiany funkcjonalne wprowadzone w Comarch ERP XL w wersji

WYMAGANIA EDUKACYJNE Z INFORMATYKI

Instrukcja obsługi aplikacji internetowej Oświatowe wskaźniki odniesienia

Transkrypt:

www.imi.plsl.pl JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 7 1

WSKAŹNIKI JAKO ARGUMENTY FUNKCJI www.imi.plsl.pl Ad. 2. Przekazywanie przez wskaźnik. Funkcja pracuje na ryginale przekazywanej zmiennej, mże ją mdyfikwać; np.: vid f16(duble *a) {... // ciał funkcji } funkcja inicjalizuje wskaźnik na pdstawie przekazaneg adresu Wywłanie np.: f16(&zm); przesyłamy adres zmiennej Ad. 3. Przekazywanie przez referencję. Funkcja pracuje na ryginale przekazywanej zmiennej, mże ją mdyfikwać; więcej przy referencjach 2

WSKAŹNIKI JAKO ARGUMENTY FUNKCJI Przykład: www.imi.plsl.pl 3

REFERENCJE www.imi.plsl.pl Referencja t inna nazwa ( przezwisk ) teg sameg biektu. Pdczas definiwania referencji trzeba ją d razu zainicjalizwać: int aaa; //definicja zmiennej aaa int &ref1=aaa; //definicja referencji nazwie ref1 i jej inicjalizacja // int &ref2; //Błąd! Definicja referencji bez jej inicjalizacji Referencja nie jest kpią zmiennej, ale tą samą zmienną pd inną nazwą mdyfikacja referencji pwduje mdyfikację ryginału! Referencje są przydatne d przekazywania d funkcji argumentów, które mgą być przez tą funkcję mdyfikwane: vid funkcja17(duble &x, int &y) {... // ciał funkcji } Wywłanie np.: funkcja17(aa,bb); Uwaga! Widać, że nic nie widać (patrz przykład 2 slajdy dalej...) 4

REFERENCJE Przykład: www.imi.plsl.pl 5

REFERENCJE JAKO ARGUMENTY FUNKCJI www.imi.plsl.pl Uwaga c.d.! Sam wywłanie funkcji nie wskazuje na t, że jakiś argument jest dbierany jak referencja (czyli że funkcja mże mdyfikwać ryginał)! Przykład: 6

PRZEKAZYWANIE TABLIC DO FUNKCJI www.imi.plsl.pl Tablice (jak całść) przekazywane są d funkcji przez referencję. Tablicę przesyła się d funkcji pdając jej nazwę (czyli adres jej pczątku ) Funkcja pracuje na ryginale i mże mdyfikwać elementy tablicy. Zwykle należy jeszcze wysłać rzmiar tej tablicy. Pjedyncze elementy tablicy są dmyślnie wysyłane d funkcji przez wartść. Tablicę w funkcji mżna debrać na 2 spsby: 1. jak tablicę; 2. jak wskaźnik. 7

PRZEKAZYWANIE TABLIC DO FUNKCJI Przykład: www.imi.plsl.pl 8

PRZEKAZYWANIE TABLIC DO FUNKCJI Przykład: www.imi.plsl.pl 9

WSKAŹNIKI RZUTOWANIE www.imi.plsl.pl Operatr rzutwania (przekształacania typu) dla wskaźników: reinterpret_cast Operatr ten pzwala na knwersję jedneg typu wskaźnika na inny, np.: Dla przypmnienia peratr rzutwania static_cast : cut<<5/3; // 1 //dzielenie całkwitliczbwe cut<<static_cast<flat>(5)/3; // 1.66667 10

TABLICE WSKAŹNIKÓW www.imi.plsl.pl Wskaźniki (adresy różnych miejsc w pamięci) mżna również przechwywać w tablicach, np.: duble *tab_wsk[6]; Czytamy: tab_wsk jest 6-elementwą tablicą wskaźników mgących pkazywać na biekty typu duble. 11

WSKAŹNIKI DO FUNKCJI www.imi.plsl.pl Wskaźnik d funkcji przechwuje adres funkcji w pamięci peracyjnej kmputera. W C++ nazwa funkcji (pdbnie jak nazwa tablicy) jest pczątkwym adresem w pamięci kmputera kdu wyknująceg zadanie tej funkcji. Np.: lub: int funkcja(); //deklaracja funkcji int(*wskfun)(); //definicja wskaźnika d funkcji zauważ nawiasy! wskfun=funkcja; //ustawienie wskaźnika na funkcję int funkcja(); int(*wskfun)()=funkcja; 3 warianty wywłania funkcji: (*wskfun)(); wskfun(); funkcja(); // za pmcą wskaźnika d funkcji // za pmcą wskaźnika d funkcji // za pmcą nazwy funkcji ( klasycznie ) 12

WSKAŹNIKI DO FUNKCJI www.imi.plsl.pl Wskaźniki d funkcji mgą być: przekazywane d innych funkcji, dbierane jak rezultat wyknania funkcji, przypisywane innym wskaźnikm d funkcji. P c? Przy przesyłaniu argumentów d innych funkcji: adres funkcji mżna wysłać jak argument d innej funkcji, która ma u siebie tę przesłaną funkcję wywłać; D twrzenia tablic wskaźników d funkcji w takiej tablicy mamy niejak listę działań (funkcji) d wyknania tym za chwilę... 13

WSKAŹNIKI DO FUNKCJI Przykład: www.imi.plsl.pl 14

TABLICE WSKAŹNIKÓW DO FUNKCJI www.imi.plsl.pl Wskaźniki d funkcji mgą być elementami tablicy. Np.: vid f1(); //deklaracja funkcji vid f2(); //deklaracja funkcji vid f3(); //deklaracja funkcji vid(*twf[3])(); // definicja tablicy wskaźników d funkcji twf[0]=f1; //ustawienie elementu tablicy na funkcję 1 twf[1]=f2; //ustawienie elementu tablicy na funkcję 2 twf[2]=f3; //ustawienie elementu tablicy na funkcję 3 lub: vid f1(); vid f2(); vid f3(); vid(*twf[3])()={f1,f2,f3}; 2 warianty wywłania funkcji (tu: w pętli): fr(int i=0; i<3; ++i) (*twf[i])(); // uwaga na nawiasy! //lub fr(int i=0; i<3; ++i) twf[i](); // mżna prściej... 15

INSTRUKCJA typedef www.imi.plsl.pl Instrukcja typedef pzwala nadać nwą nazwę istniejącemu typwi: typedef flat mj_typ; // nadajemy nwą nazwę typwi flat mj_typ zm1, zm2; // i krzystamy z teg (np. wielkrtnie w prgramie) // t sam c: flat zm1, zm2; P c? Jeśli chcemy np. zwiększyć dkładnść bliczeń t wystarczy : typedef duble mj_typ; Mżna też twrzyć nwe nazwy dla typów pchdnych: typedef int *wsk_d_int; wsk_d_int w1; // (czyli: int *w1; 16

OPERATOR sizef Operatr sizef zwraca rzmiar biektu (w bajtach) : www.imi.plsl.pl flat a; lng duble b; cut sizef(a); // 4 cut sizef(b); // 12 Lub (wywłanie na rzecz typu): cut sizef(flat); // 4 cut sizef(lng duble); // 12 Przydatne też jeśli twrzymy własne typy (klasy), np. jeśli mamy klasę Zwierze : cut sizef(zwierze); // 8 A jeśli istnieje jakiklwiek biekt klasy Zwierze: cut sizef(pies); // 8 17

OPERATOR: przecinek www.imi.plsl.pl Jeśli bk siebie sti kilka wyrażeń ddzielnych przecinkiem, t: całść jest też wyrażeniem; wartścią całeg wyrażenia jest wartść teg, c jest najbardziej z prawej; np.: wartścią (7+2, a<3.11, b*7, 13+24) jest 37. pnieważ wyrażenia składwe są bliczane d lewej d prawej, t mżna w dalszych wyrażeniach krzystać z wcześniejszych, np.: wartścią (a=6, b=7*a) jest 42. 18

DYNAMICZNY PRZYDZIAŁ PAMIĘCI www.imi.plsl.pl Przydzielanie pamięci: Wszystkie zmienne deklarwane w kdzie prgramu mają statycznie przydzielną pamięć stałym rzmiarze. Zmienne te mieszczą się w bszarze pamięci stałej wielkści zwanym stsem (ang. stack). Skutek np. graniczenie dpuszczalneg rzmiaru tablic. Pzstała część pamięci peracyjnej (tzw. sterta, ang. heap), niewykrzystana przez prgram w mmencie uruchmienia stanwi dstępny zasób pamięciwy. Aplikacje pdczas pracy mgą z nieg krzystać (dynamiczna alkacja pamięci) a następnie zwalniać ją d wspólnej puli. Ważne ilści alkwanej pamięci mżna decydwać w trakcie działania prgramu, np. na pdstawie wpisywanych przez użytkwnika danych. 19

DYNAMICZNY PRZYDZIAŁ PAMIĘCI www.imi.plsl.pl Operatry new / new[] raz delete / delete[] Operatry new raz new[] służą d twrzenia biektów krzystając z dstępneg zapasu pamięci (sterta). Operatry delete raz delete[] służą d zwalniania pamięci przydzielnej dpwiedni peratrami new raz new[]. Mgą być wykrzystane dla dwlneg typu danych, tj. wbudwaneg lub zdefiniwaneg przez użytkwnika. 20

DYNAMICZNY PRZYDZIAŁ PAMIĘCI www.imi.plsl.pl Operatry new / new[] raz delete / delete[] Dstęp d tak utwrznych zmiennych (biektów) umżliwiają wskaźniki. Np.: stwrzenie zmiennej dynamicznej typu duble: alb: duble *abc; abc=new duble; duble *abc=new duble; i jej usunięcie: delete abc; 21

DYNAMICZNY PRZYDZIAŁ PAMIĘCI www.imi.plsl.pl Cechy biektów stwrznych peratrami new i new[]: Obiekty istnieją d mmentu ich utwrzenia peratrem new / new[]d mmentu skaswania peratrem delete/delete[]. Obiekty takie nie mają nazwy; mżna nimi perwać tylk za pmcą wskaźników. Obiektów tych nie bwiązują zwykłe zasady zakresie ważnści, czyli t, w których miejscach prgramu są widzialne lub nie. jeśli w danym mmencie jest dstępny jakiklwiek wskaźnik pkazujący na taki biekt, t biekt ten jest dstępny; jeśli z jakiegś pwdu nie ma żadneg wskaźnika pkazująceg na taki biekt, t nie ma mżliwści usunięcia takieg biektu! 22

DYNAMICZNY PRZYDZIAŁ PAMIĘCI www.imi.plsl.pl Cechy biektów stwrznych peratrami new i new[]: W biektach takich zaraz p ich utwrzeniu tkwią przypadkwe wartści, należy zatem zadbać ich zapisanie w nich senswnych wartści, np. pprzez inicjalizację: duble *abc; abc=new duble(31.45); lub jednlinijkw : duble *abc=new duble(31.45); P zwlnieniu pamięci peratrem delete lub delete[] wart ustawić wskaźnik na 0, c zabezpiecza przed przypadkwym pnwnym usunięciem biektu : Kiedy mże się t stać? Np. gdy istnieją 2 wskaźniki pkazujące na ten sam biekt? Plecam pwieść pstnym Jasiu i balnikach : J. Grębsz, Symfnia C++ standard, t. 1, str. 268-269. 23

DYNAMICZNY PRZYDZIAŁ PAMIĘCI www.imi.plsl.pl Przykład: 24

DYNAMICZNY PRZYDZIAŁ PAMIĘCI www.imi.plsl.pl Przykład (t sam krócej): Pamiętaj: Zawsze zwalniaj zaalkwaną przez siebie pamięć! Niezwlnienie pamięci peracyjnej pwduje tzw. wyciek pamięci (ang. memry leak) - zaalkwana, a niezwlnina pamięć nie jest dstępna dla innych aplikacji. 25