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

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

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

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

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

Wykład 1: Wskaźniki i zmienne dynamiczne

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

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

ZASADY PROGRAMOWANIA KOMPUTERÓW

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Laboratorium nr 10. Temat: Funkcje cz.2.

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

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

Wykład nr 3. Temat: Wskaźniki i referencje. Edward Morgan Forster

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Języki i techniki programowania Ćwiczenia 2

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

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

LABORATORIUM 7: Problem komiwojażera (TSP) cz. 2

Lab 9 Podstawy Programowania

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

Zmienne i struktury dynamiczne

Wykład 8: klasy cz. 4

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

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

Podstawy Programowania Obiektowego

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Programowanie w języku C++

Techniki Programowania wskaźniki

Wskaźniki. Informatyka

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

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

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

Podstawy programowania. Podstawy C# Tablice

Zaawansowane programowanie w języku C++ Klasy w C++

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

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

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

DYNAMICZNE PRZYDZIELANIE PAMIECI

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

Wykład 5: Klasy cz. 3

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

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

Podstawy programowania w języku C++

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

Języki Programowania z Programowaniem Obiektowym laboratorium (30 godzin/semestr)

Konstruktor kopiujacy

Wykład 4: Klasy i Metody

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

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

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

Wykład 9: Polimorfizm i klasy wirtualne

Wykład 3 Składnia języka C# (cz. 2)

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

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

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

Definicje klas i obiektów. Tomasz Borzyszkowski

Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Definiowanie własnych klas

Paradygmaty programowania

Materiały do zajęć VII

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Podstawy programowania skrót z wykładów:

Podstawy programowania. Wykład: 6. Tablice statyczne. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

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

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

Programowanie obiektowe W3

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

IX. Wskaźniki.(3 godz.)

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

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

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

KURS C/C++ WYKŁAD 6. Wskaźniki

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

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Programowanie I C6

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

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Podstawy Programowania

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Wskaźniki w C. Anna Gogolińska

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Rok akademicki: 2013/2014 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Konstruktor destruktor Programowanie obiektowe

Tablice. Jones Stygar na tropie zmiennych

PODSTAWOWE ZASADY PROGRAMOWANIA OBIEKTOWEGO NA BAZIE PAKIETU ROOT

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

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

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

Algorytmy i język C++

Stałe, tablice dynamiczne i wielowymiarowe

Transkrypt:

Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Języki programowania z programowaniem obiektowym Laboratorium 9: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne Opracowali: dr hab. inż. Witold Beluch witold.beluch@polsl.pl dr inż. Jacek Ptaszny jacek.ptaszny@polsl.pl Gliwice 2015

Języki programowania z programowaniem obiektowym. Laboratorium 9 1 1. Wskaźniki 1.1. Wskaźnik To obiekt, który przechowuje adres innego obiektu (zmiennej). Zastosowania wskaźników: przyspieszenie operacji tablicowych; funkcje mogą zmieniać wartość przesyłanych do nich argumentów; dynamiczny przydział pamięci (tablice dynamiczne); dostęp do specjalnych komórek pamięci. Wskaźniki mogą pokazywać na: zmienne różnych typów; tablice i ich elementy; inne obiekty. 1.2. Przykłady definicji W jaki sposób zdefiniować wskaźnik pokazano poniżej: Przed użyciem wskaźnika należy go przypisać do konkretnego obiektu (przypisać mu adres tego obiektu). Wskaźnik można przestawić tak, by pokazywał na inny obiekt tego samego typu. Za pomocą wskaźnika można zmodyfikować zawartość obiektu, na który ten wskaźnik pokazuje, np.: 1.3. Wskaźniki a tablice Wskaźniki mogą wskazywać na elementy tablic: Nazwa tablicy jest adresem jej początku! lub: Nazwa tablicy jest stałym wskaźnikiem (takim, którego nie można przesuwać) do jej elementu o indeksie 0.

Języki programowania z programowaniem obiektowym. Laboratorium 9 2 Zatem możemy wskazać np. na czwarty element tablicy (czyli element o indeksie 3) w sposób następujący: 2. Referencje Referencja to inna nazwa tego samego obiektu. Podczas definiowania referencji trzeba ją od razu zainicjalizować: Referencja nie jest kopią zmiennej, ale tą samą zmienną pod inną nazwą modyfikacja referencji powoduje modyfikację oryginału! Referencje są przydatne do przekazywania do funkcji argumentów, które mogą być przez tą funkcję modyfikowane: Wywołanie, np.: Z wywołania funkcji nie wynika, że może ona modyfikować oryginał!

Języki programowania z programowaniem obiektowym. Laboratorium 9 3 3. Dynamiczny przydział pamięci 3.1. Operatory new/new[] oraz delete/delete[] Operatory new oraz new[] służą do tworzenia obiektów korzystając z dostępnego zapasu pamięci (sterty). Operatory delete oraz delete[] służą do zwalniania pamięci przydzielonej odpowiednio operatorami new oraz new[]. Mogą być wykorzystane dla dowolnego typu danych, tj. wbudowanego lub zdefiniowanego przez użytkownika. Obiekty takie nie mają nazwy; dostęp do nich umożliwiają wskaźniki. Np.: stworzenie zmiennej dynamicznej typu double: lub i jej usunięcie: 3.2. Cechy tak stworzonych obiektów Obiekty istnieją od momentu ich utworzenia operatorem new / new[] do momentu skasowania operatorem delete / delete[]. Obiektów tych nie obowiązują zwykłe zasady o zakresie ważności, czyli to, w których miejscach programu są widzialne lub nie. Jeśli w danym momencie jest dostępny jakikolwiek wskaźnik pokazujący na taki obiekt, to obiekt ten jest dostępny. Jeśli z jakiegoś powodu nie ma żadnego wskaźnika pokazującego na taki obiekt, to nie ma możliwości usunięcia takiego obiektu! W obiektach takich zaraz po ich po ich utworzeniu tkwią przypadkowe wartości, należy zatem zadbać o ich zapisanie w nich sensownych wartości, np. poprzez inicjalizację: Po zwolnieniu pamięci operatorem delete[] warto ustawić wskaźnik na 0, co zabezpiecza przed przypadkowym ponownym usunięciem obiektu :

Języki programowania z programowaniem obiektowym. Laboratorium 9 4 3.3. Tworzenie dynamicznych tablic operatorem new[] Rozmiar takich tablic nie musi być znany w momencie kompilacji! Dynamiczne tablice jednowymiarowe: Np.: stworzenie dynamicznej tablicy: lub i jej usunięcie: Nie da się elementom tak tworzonej tablicy nadać wartości początkowych (nie jest możliwa inicjalizacja, jak w przypadku tablic statycznych). Należy zadbać o wypełnienie tablicy sensownymi wartościami... Po zwolnieniu pamięci operatorem delete[] warto ustawić wskaźnik na 0, np.: Przykład: Dynamiczne tablice n-wymiarowe: Dynamiczna tablica n-wymiarowa składa się ze wskaźników do tablic (n-1)-wymiarowych. Niezbędna jest konstrukcja programistyczna w postaci wskaźnik na wskaźnik, np.: Alokacja pamięci odbywa się n-etapowo (patrz: przykład).

Języki programowania z programowaniem obiektowym. Laboratorium 9 5 Przykład: Czy wiesz, że... Heurystyka w informatyce to szczególny, niepełnowartościowy algorytm, pozwalający znaleźć przybliżone rozwiązanie zadania uznanego za trudne. Jednym z przedmiotów realizowanych na specjalności Modelowanie i symulacja systemów mechatronicznych jest przedmiot Metody heurystyczne. W ramach tego przedmiotu zapoznasz się z popularnymi heurystykami i metaheurystykami, jak algorytmy ewolucyjne, sztuczne sieci neuronowe i inne. Więcej na www.imio.polsl.pl/me3_mh.aspx.