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

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

Wykład VI PASCAL procedury i funkcje przekazywanie parametrów,

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

Wykład 1: Wskaźniki i zmienne dynamiczne

Wykład PASCAL - Pliki tekstowe

Wykład 8: klasy cz. 4

Wykład 9: Polimorfizm i klasy wirtualne

Wykład III PASCAL - iteracja cz, 2, - liczby losowe, - tablice

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

Wykład V PASCAL - operacje na znakach i łańcuchach; - dźwięk,

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

Wykład 5: Klasy cz. 3

ZASADY PROGRAMOWANIA KOMPUTERÓW

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

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

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

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Języki i techniki programowania Ćwiczenia 2

PARADYGMATY PROGRAMOWANIA Wykład 4

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

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

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

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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Podstawy programowania 2. Temat: Wprowadzenie do wskaźników. Przygotował: mgr inż. Tomasz Michno

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

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

Wykład 9: Metody wirtualne i polimorfizm

Lista 5 Typy dynamiczne kolejka

Lab 9 Podstawy Programowania

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

Wykład 4: Klasy i Metody

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

PODSTAWOWE ZASADY PROGRAMOWANIA OBIEKTOWEGO NA BAZIE PAKIETU ROOT

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

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

Wskaźniki. Informatyka

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.

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Języki i metodyka programowania. Wskaźniki i tablice.

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Zmienne i struktury dynamiczne

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

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

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

Podstawy programowania w języku C++

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

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

Tablice. Jones Stygar na tropie zmiennych

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

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

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

Programowanie komputerowe. Zajęcia 4

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:

Podstawy programowania. Wykład: 11. Trochę różnych przykładów. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Rozdział 4 KLASY, OBIEKTY, METODY

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

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

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

Delphi Laboratorium 3

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

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Dziedziczenie jednobazowe, poliformizm

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

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

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

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

Oczywiście plik musi mieć rozszerzenie *.php

Dynamiczne struktury danych: listy

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

Wstęp do programowania 2

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

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Techniki Programowania wskaźniki

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

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

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

MATERIAŁY DO ZAJĘĆ II

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

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

ZMIENNE. Podstawy PHP

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

Deklaracja struktury w C++

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

Wprowadzenie do programowania w języku C

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy Programowania C++

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

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

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

Struktury, unie, formatowanie, wskaźniki

Transkrypt:

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 statyczna tworzona jest w trakcie kompilacji programu i istnieje do momentu jego zakończenia lub też do momentu zakończenia funkcji lub procedury, w której została zadeklarowana. Zmienną dynamiczną nazywamy zmienną utworzoną w trakcie wykonywania programu. Zmienne te tworzone są na tzw. stercie, której rozmiar jest na ogół różny. W odróżnieniu od statycznej, zmienną dynamiczną można w dowolnym momencie usunąć, zwalniając w ten sposób niepotrzebnie zajmowaną pamięć. 2

Typy wskaźnikowe Do pracy ze zmiennymi dynamicznymi używa się typów wskaźnikowych. Elementami tych typów są zmienne wskaźnikowe, nazywane wskaźnikami. Wskaźnik jest adresem pewnej zmiennej określonego typu. Mówiąc o wskaźniku zawsze mamy na myśli zmienną, której adres zawiera wskaźnik. Ze względu na różny typ zmiennych mówimy o wskaźniku na liczbę typu Byte, wskaźniku na liczbę rzeczywistą Real, wskaźniku na łańcuch typu String itd - zawsze ze wskaźnikiem związany jest typ zmiennej na którą wskazuje dany wskaźnik. 3

Podstawy programowania Zmienne wskaźnikowe 4

Typy wskaźnikowe Definiowanie i deklarowanie typów wskaźnikowych: Każdy typ danych w Pascalu ma odpowiadający mu typ wskaźnikowy. Jest to typ, który nazywa się tak samo jak typ, któremu odpowiada, tylko poprzedzony jest znakiem ^. Na przykład: dla typu Integer jest to ^Integer. Zmienna takiego typu może przechowywać adres pewnych danych w pamięci wskazuje na coś To samo w wersji skróconej: 5

Typy wskaźnikowe Operacje na zmiennych wskaźnikowych: przypisanie wartości jednego wskaźnika innemu wskaźnikowi, x:=y relacja, tj. badanie czy wskaźniki mają identyczne wartości, co oznacza, że wskazują na ten sam obiekt w pamięci, x = y x <> y Uwaga: w obu powyższych przykładach x i y muszą być zmiennymi wskaźnikowymi tego samego typu. 6

Typy wskaźnikowe Operacje na zmiennych wskaźnikowych: przypisanie wartości jednego wskaźnika innemu wskaźnikowi, x:=y relacja, tj. badanie czy wskaźniki mają identyczne wartości, co oznacza, że wskazują na ten sam obiekt w pamięci, x = y x <> y Uwaga: w obu powyższych przykładach x i y muszą być zmiennymi wskaźnikowymi tego samego typu. 7

Adresy zmiennych Adresy zmiennych pobrać możemy za pomocą operatora @ Aby poznać adres zmiennej zmienna, wystarczy, że napiszemy @zmienna. Odwołanie do wartości obiektu wskazywanego odbywa się poprzez operator ^ Umieszczamy ^ za nazwą zmiennej wskaźnikowej. 8

Adresy zmiennych W Pascalu znak ^ ma dwa znaczenia: 1. Może oznaczać typ wskaźnikowy, wtedy znajduje się przed nazwą typu. To zastosowanie zazwyczaj ma miejsce tylko w sekcji var. 1. Może oznaczać operację pobrania wartości zmiennej z pamięci, wtedy znajduje się za nazwą zmiennej wskaźnikowej. Należy uważać, żeby nie pomylić się, w którym miejscu umieścić znak ^ 9

Adresy zmiennych Przypisanie wartości zmiennej dynamicznej do zmiennej statycznej k:=x^; Przypisanie wartości zmiennej dynamicznej do zmiennej dynamicznej y^:=x^; Porównanie zmiennej dynamicznej i zmiennej statyczne x^<k; 10

Adresy zmiennych Niezależnie od typu wskaźnika zawsze można mu przypisać tzw. adres pusty, który w języku Pascal oznaczamy słowem Nil - wskaźnik o wartości Nil nie wskazuje niczego. 11

Podstawy programowania Zmienne dynamiczne 12

Tworzenie i usuwanie zmiennych dynamicznych Tworzenie i usuwanie zmiennych odbywa się wewnątrz programu za pomocą procedur New( ) oraz Dispose( ). Procedury te wymagają jako argumentu zmiennej wskaźnikowej. NEW(p) tworzenie zmiennej dynamicznej typu zgodnego ze zmienną wskaźnikową p. Odbywa się w dwóch etapach: 1. utworzona zostaje zmienna dynamiczna wartości nieokreślonej (rezerwacja pamięci); 2. zmiennej p zostaje przypisana nowa wartość będąca wskazaniem (adresem) nowo utworzonej zmiennej. Do wartości tak utworzonej zmiennej dynamicznej można się odwoływać poprzez nazwę: p^. 13

Tworzenie i usuwanie zmiennych dynamicznych DISPOSE(p) usuwanie zmiennej dynamicznej wskazywanej przez wskaźnik p 1. zmiennej p zostaje przypisana wartość nieokreślona, tj. zmienna p nie wskazuje już na żaden określony obiekt w pamięci; 2. zwolniona zostaje pamięć zajmowana przez zmienną dynamiczną i może być od tej pory wykorzystana do innych celów. 14

Źródło: http://main.edu.pl/pl/user.phtml?op=lesson &n=18&page=pascal 15

Źródło: http://main.edu.pl/pl/user.phtml?op=lesson &n=18&page=pascal 16

Literatura: W prezentacji wykorzystano przykłady i fragmenty: R. Jarża, Turbo Pascal. Szkoła programowania, Wydawnictwo Robomatic 2000. (dostępne w bibliotece uczelni) http://pascal.kurs-programowania.pl http://4programmers.net T. M. Sadowski, Turbo Pascal. Programowanie, Helion 1996. 17 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD