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

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

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

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

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Tablice, funkcje - wprowadzenie

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

Struktury Struktura polami struct struct struct struct

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

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

C-struktury wykład. Dorota Pylak

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Wykład 8: klasy cz. 4

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

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

Podstawy Programowania Obiektowego

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

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

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

C-struktury wykład. Dorota Pylak

Wykład 5: Klasy cz. 3

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

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

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

Wskaźniki w C. Anna Gogolińska

Podstawy programowania w języku C++

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Język C zajęcia nr 12. Struktury i unie

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

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

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

Programowanie 2. Język C++. Wykład 3.

Podstawy programowania w języku C++

Struktury - wprowadzenie

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

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

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

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

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

Język C++ Różnice między C a C++

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

Lab 9 Podstawy Programowania

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

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Tablice, funkcje, wskaźniki - wprowadzenie

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

ALGORYTMY I STRUKTURY DANYCH

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

Struktury. Przykład W8_1

Wykład 4: Klasy i Metody

Języki programowania obiektowego Nieobiektowe elementy języka C++

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

ZASADY PROGRAMOWANIA KOMPUTERÓW

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

Podstawy programowania w języku C++

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

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

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

Wykład 1: Wskaźniki i zmienne dynamiczne

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Język C, tablice i funkcje (laboratorium, EE1-DI)

MATERIAŁY DO ZAJĘĆ II

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

Wskaźniki. Informatyka

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

Wstęp do Programowania 2

Wstęp do programowania

Wskaźniki. Programowanie Proceduralne 1

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

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

Deklaracja struktury w C++

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Wartości domyślne, przeciażenia funkcji

Podstawy programowania

Argumenty wywołania programu, operacje na plikach

Wartości domyślne, przeciażenia funkcji

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

Podstawy Programowania C++

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

1 Wskaźniki i listy jednokierunkowe

Podstawy programowania

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

IX. Wskaźniki.(3 godz.)

Laboratorium 6: Dynamiczny przydział pamięci. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler

6 Przygotował: mgr inż. Maciej Lasota

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

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

Programowanie w Internecie. Java

Programowanie Komputerów

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Wprowadzenie do szablonów szablony funkcji

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

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

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Dziedziczenie Dana jest klasa Punkt w pliku o nazwie Punkt.java:

Transkrypt:

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

są sposobem na przechowywanie w ramach pojedynczej zmiennej zestawu zmiennych różnych typów, zwane także rekordami, istnieją w wielu językach dla ułatwienia manipulowania złożonymi zestawami danych Pojedyncza zmienna będąca strukturą oznacza obszar pamięci, w którym istnieje szereg zmiennych słowem kluczowym do definiowania struktur jest struct po słowie struct, w nawiasie klamrowym, umieszczone są składowe struktury (pola struktury): struct{...} definiuje typ struct{...} zm_str definiuje pojedynczą zmienna takiego typu definicja struktury określa z jakich zmiennych jest złożona, np. struct { // początek definicji (deklaracji) int liczba_lat; // składowa będąca liczbą int char nazwa[25]; // składowa będąca tablicą znaków } Krzysztof Banaś Podstawy programowania 2

Część definicji struktury zawierająca jej składowe może mieć własną nazwę: struct punkt_2d { // struktura definiuje punkt w przestrzeni 2D double wsp_x; // współrzędna x punktu double wsp_y; // współrzędna y punktu }; struct punkt_2d punkt2d_1, punkt2d_2; // definicja dwóch zmiennych // typu: "struct punkt_2d" Składowe struktur mogą mieć takie same nazwy jak składowe innych struktur i zwykłe zmienne: struct punkt_3d { double wsp_x; double wsp_y; double wsp_z; }; struct punkt_3d punkt3d_1, punkt3d_2; // definicja dwóch zmiennych // typu: "struct punkt_3d" Krzysztof Banaś Podstawy programowania 3

Zmienna będąca strukturą traktowana jest podobnie jak zmienne innych typów: zmienna może być inicjowana (stałymi wartościami) struct punkt_2d p_srodek = {1.0, 2.0 }; wartość zmiennej może zostać przypisana (zawartość jest kopiowana) struct punkt_2d punkt_1 = p_srodek; można pobrać adres (początku) zmiennej printf("adres struktury %lu\n", &punkt_1); zmienna może być przesłana jako argument funkcji void wydrukuj_dane_kola( struct punkt_2d srodek, double promien); wydrukuj_dane_kola( p_srodek, 25.0 ); // przesłanie przez wartość zmienna może zostać zwrócona jako wartość wynikowa funkcji struct punkt_2d punkt_symetryczny( struct punkt_2d ); jest to drugi z możliwych sposobów na przekazanie większej niż 1 liczby wartości z funkcji struct punkt_2d punkt_2 = punkt_symetryczny( punkt_1 ); Krzysztof Banaś Podstawy programowania 4

Słowo struct może zostać wyeliminowane z definicji zmiennych poprzez nadanie nowej nazwy utworzonemu typowi służy do tego określenie typedef, które definiuje nową nazwę dla typu typedef może być używane dla dowolnego typu wbudowanego lub zdefiniowanego przez użytkownika typedef char* Napis; // nazwy char* i Napis znaczą odtąd to samo Napis wczytana_linia; // definicja zmiennej będącej napisem w przypadku zastosowania dla typów utworzonych, typedef pozwala uprościć definicje (deklaracje) zmiennych typedef struct { // definicja nowego typu będącego strukturą, // określającego punkt w przestrzeni 2D double wsp_x; // współrzędna x punktu double wsp_y; // współrzędna y punktu } punkt_2d; punkt_2d p_srodek = {1.0, 2.0 }; uwaga: typedef nie tworzy typu lecz nową nazwę dla typu Krzysztof Banaś Podstawy programowania 5

Dostęp do pola struktury jako zmiennej odbywa się za pomocą operatora. (kropka) punkt_2d p_srodek; p_srodek.wsp_x = 1.0; p_srodek.wsp_y = 2.0; printf("wsp x punktu %lf\n", p_srodek.wsp_x); Przypadki: jeśli elementem struktury jest tablica: struct osoba{ char imie[100]; char nazwisko[100]}; struct osoba zwykly_polak = { "Jan", "Kowalski" }; char inicjal = zwykly_polak.imie[0]; jeśli elementem struktury jest inna struktura struct odcinek { punkt_2d poczatek; punkt_2d koniec; } struct odcinek odc_1 = { {0.0, 0.0}, {1.0, 1.0} } double pocz_odc_1_wsp_x = odc_1.poczatek.x; itp. itd. Krzysztof Banaś Podstawy programowania 6

Do zmiennych będących strukturami można definiować standardowo wskaźniki posługując się nazwą typu punkt_2d* wsk_punkt_2d = &punkt_1; wskaźnik do struktury umożliwia dostęp do jej składowych istnieją dwie możliwe notacje: (*wsk_punkt_2d).wsp_x wsk_punkt_2d->wsp_x Stosowanie wskaźników do struktur umożliwia m.in. zmianę zawartości struktury wewnątrz wywoływanej funkcji jak zwykle istnieje wiele możliwości wykonania tej operacji void przesun_punkt_o_1_1( struct punkt_2d* punkt_in_out_p ){ (*punkt_in_out_p).wsp_x += 1.0; double wsp_y = punkt_in_out_p->wsp_y; wsp_y += 1.0; punkt_in_out_p->wsp_y = wsp_y; } Krzysztof Banaś Podstawy programowania 7

Tablice struktur Podobnie jak dla zmiennych typów wbudowanych, także dla struktur można definiować tablice: punkt_2d tab_punkt_2d[10] = {{0.0,0.0}}; Dostęp do pól struktury odbywa się za pomocą standardowej składni: tab_punkt_2d[0].wsp_x = 3.14; nazwa tablicy jest wskaźnikiem do jej pierwszego elementu Operator sizeof może zostać użyty do obliczenia liczby elementów tablicy: int n_el = sizeof tab_punkt_2d / sizeof( punkt_2d ) ; Tablice struktur mogą być alokowane dynamicznie posługując się zmiennymi będącymi wskaźnikami: punkt_2d* tab_dyn_punkt_2d = NULL; tab_dyn_punkt_2d = malloc ( n_el * sizeof( punkt_2d) ); Krzysztof Banaś Podstawy programowania 8