Struktury Struktura polami struct struct struct struct

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

C-struktury wykład. Dorota Pylak

C-struktury wykład. Dorota Pylak

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

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

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

Wstęp do informatyki- wykład 11 Funkcje

Wstęp do informatyki- wykład 9 Funkcje

Programowanie komputerowe. Zajęcia 7

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

Podstawy Programowania Podstawowa składnia języka C++

IX. Wskaźniki.(3 godz.)

Programowanie - wykład 4

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

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

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

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Języki i metodyka programowania. Wprowadzenie do języka C

Podstawy Programowania

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

1 Podstawy c++ w pigułce.

Wstęp do programowania

C++ wprowadzanie zmiennych

Do czego służą klasy?

1 Podstawy c++ w pigułce.

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Program 22. #include <iostream> using namespace std; struct Osoba { string Imie; string Nazwisko; char Plec; int RokUr; };

Do czego służą klasy?

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

TEMAT : KLASY DZIEDZICZENIE

Programowanie strukturalne i obiektowe. Funkcje

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Struktury typ definiowany przez uŝytkownika.

Język ludzki kod maszynowy

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Wstęp do informatyki- wykład 9 Pętla while, do while,for -pętla w pętli- przykłady Funkcje

Wstęp do programowania

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

tablica: dane_liczbowe

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:

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

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

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

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

KLASY cz.1. Dorota Pylak

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

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

4. Funkcje. Przykłady

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

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

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

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

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

Część 4 życie programu

Język C zajęcia nr 11. Funkcje

Informatyka 2. Informatyka 2. Wykład nr 1 ( ) Dane podstawowe. - Wydział Elektryczny. Politechnika Białostocka. Program wykładu (1/2)

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

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

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

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

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

Pytania sprawdzające wiedzę z programowania C++

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

void Pobierz(Student &a); void Wypisz(Student a); void Ustaw_zaliczenia(Student t[],int r); void Wypisz_najlepszych(Student t[],int r, float prog);

Struktury, unie, formatowanie, wskaźniki

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

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

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

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

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

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

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

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

Inicjacja tablicy jednowymiarowej

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Tablice są typem pochodnym. Poniżej mamy przykłady deklaracji różnych tablic:

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 1. Wprowadzenie, środowisko programistyczne, pierwsze programy

Programowanie komputerowe. Zajęcia 1

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

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

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Podstawy algorytmiki i programowania - wykład 1 Tablice powtórzenie Tablice znaków Tablice dwuwymiarowe

Ćwiczenia podstawowe, zestaw 5, część 1

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Wstęp do informatyki- wykład 4 Deklaracja zmiennych Typy

Operacje wejścia/wyjścia odsłona pierwsza

Wstęp do programowania. Wykład 1

2 Przygotował: mgr inż. Maciej Lasota

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

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

Wstęp do programowania obiektowego, wykład 7

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

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

Program 14. #include <iostream> #include <ctime> using namespace std;

1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi:

Przekazywanie argumentów wskaźniki

Transkrypt:

Struktury Struktura jest zbiorem zmiennych występujących pod wspólna nazwą. Zmienne wchodzące w skład struktury nazywane są polami lub elementami, a czasem członkami struktury. Struktury używamy, jeśli chcemy zgrupować zmienne jako jeden rekord. Strukturę definiujemy korzystając ze słowa kluczowego struct Ogólna postać deklaracji struktury jest następująca struct nazwatypu [ typ nazwa pola[,nazwa pola[,...]];] [ typ nazwa pola[,nazwa pola[,...]];]... } lista_zmiennych_strukturowych; Uwagi: można albo pominąć nazwę typu albo listę zmiennych, ale nie można opuścić obu jednocześnie; ponieważ każda deklaracja struktury jest instrukcją, to deklarację struktury zawsze kończymy średnikiem; elementy lista_zmiennych_strukturowych są oddzielane przecinkami i mogą być identyfikatorami zmiennych strukturowych(strukturalnych) lub mogą identyfikatorami zmiennych z nadawanymi im wartościami początkowymi. Wtedy identyfikator_zmiennej = wartość_początkowa_struktury dostęp do poszczególnych pól struktury uzyskuje się poprzez zastosowanie operatora oznaczonego kropką wartość jednej zmiennej typu struktura można przypisać innej zmiennej tego samego typu za pomocą pojedynczej instrukcji przypisania użycie struktury jako parametru funkcji jest przekazaniem przez wartość (parametr aktualny musi być tego samego typu); struktury można zagnieżdżać tzn. polem struktury może być inna struktura nie anonimowa (nie może być ta, którą aktualnie definiujemy) tzn. musi być nazwa pola; aby zadeklarować inne zmienne strukturowe niż w definicji typu, to korzystamy z następującej instrukcji: struct nazwatypu listazmiennych; lub bez słowa kluczowego struct nazwatypu listazmiennych;

Deklarowanie typu strukturalnego. struct Data int dzien, rok; char miesiac[12];//tekst tablica znaków }; W tym przypadku nie mamy żadnej zmiennej. Określony jest typ Data będący strukturą o trzech polach. Aby zadeklarować teraz zmienną tego typu to należy zapisać struct Data DataUrodzin; Uwaga (przypomnienie z poprzedniej strony) W C++ można opuścić słowo struct. Po napotkaniu dopiero deklaracji zmiennej kompilator przydziela odpowiedni obszar pamięci. Deklaracja zmiennych strukturowych bez wprowadzania identyfikatora typu (anonimowych): struct int a; float b; } C,D; W tym przykładzie mamy zadeklarowane dwie zmienne strukturowe C, D. Każda z tych zmiennych zawiera po dwa pola: pole typu int o identyfikatorze a oraz pole typu float o identyfikatorze b. Gdybyśmy chcieli jeszcze w innym miejscu zadeklarować zmienną E o takiej budowie, to musimy całą specyfikację typu powtórzyć. Zatem taką konstrukcję deklaracji stosujemy wtedy, gdy deklaracja zmiennych o takiej budowie występuje tylko raz. Deklaracja typu i deklaracja zmiennych struct zwierz char nazwa [10]; unsigned int waga; unsigned char wiek; } z1, z2, z3;

Deklaracja ze strukturą zagnieżdżoną struct Punkt //definicja tylko typu float x,y; }; struct Okrag float promien; struct Punkt Srodek; } K1; Inny sposób deklaracji typu Okrag bezpośrednia definicja struktury zagnieżdżonej struct Okrag float promien; struct Punkt //można opuścić ten identyfikator float x,y;//tego identyfikatora nie można opuścić } Srodek; } K1; Wartości początkowe zmiennych typu struktury. Inicjalizacja struktury polega na umieszczeniu we nawiasach klamrowych inicjalizacji poszczególnych pól zgodnie z kolejnością ich występowania w definicji typu struktury. Ilość inicjalizacji nie może przekraczać ilości pól. W przypadku mniejszej ilości inicjalizacji niż pól, pozostałe pola liczbowe będą zainicjowane zerami, a pola typu wskaźnikowe adresami pustymi. Przykłady nadawania wartości początkowych definiowanym zmiennym typów wyżej zdefiniowanych: //punkt (1,3) Punkt A=1.0, 3.0}; //okrąg o środku w punkcie (1,1)i promieniu 5.5 Okrag K=5.5,1.0,1.0}}, //okrąg o środku w punkcie (0,0) i promieniu 1 K0=1.0}; lub jednocześnie z definicją typu

struct osoba char nazwisko [20]; int RokUr; char plec; } c1= Kowalski,1978, M }, c2="kot"}, c3; W tym przykładzie dla zmiennej c2 pola RokUr i plec zostaną wyzerowane, natomiast dla c3 wszystkie pola są nieokreślonej wartości (przypadkowe}. Dostęp do pól struktury. Dostęp do pól struktury uzyskujemy operatorem kropka. Ponadto należy pamiętać, że można używać w przypisaniach całych struktur. Program przykładowy. Program wczyta środek i promień koła i wyświetli informację o tym czy początek układu współrzędnych leży w kole czy na zewnątrz. Następnie sprawdzi to również dla koła o promieniu o 1 większym. #include <iostream> using namespace std; int main() struct Punktdouble x,y; } ; struct Kolo double r; Punkt S; } K, kw; cout << "Położenie punktu względem koła\n" ; cout<<"podaj srodek koła\nx= "; cin>>k.s.x; cout <<"y= "; cin>>k.s.y; cout<<"promien : "; cin>>k.r; cout<<"poczatek układu leży "; cout<< (K.S.x*K.S.x+K.S.y*K.S.y <=K.r*K.r? "w kole":"poza kołem"); kw=k;//przypisanie całej struktury (kw.r)++; //zwiększenie o 1 promienia koła kw

} cout<<"\npoczątek układu leży "; cout<< (kw.s.x*kw.s.x+kw.s.y*kw.s.y <=kw.r*kw.r? "w kole":"poza kołem")<<endl; system("pause"); Tablice struktur Tablice struktur definiujemy analogicznie jak inne tablice. Przykłady definiowania tablic struktur struct Punktdouble x,y; } ; Punkt T[100],P[2]=1,1},-3,4}}; oraz korzystania z elementów tablic: T[1]=P[1];// struktura przypisana strukturze P[1].x = P[0].x+11; Struktury i funkcje Struktury jako parametry i wyniki funkcji. Zadanie obliczania godziny i minuty po upływie zadanego okresu czasu w godzinach i minutach. #include <iostream> #include <iomanip> using namespace std; struct Czas int g,m;//godziny i minuty odpowiednio } ; /*Napisz funkcję, która dodaje do siebie dwa czasy będące parametramifunkcji. Jako wynik funkcja zwraca obliczoną sumę. */ Czas NowyCzas(Czas Teraz, Czas IleDodac) int r;//zmienna pomocnicza Czas Nowy; r= Teraz.m + IleDodac.m; Nowy.m=r % 60; Nowy.g=(Teraz.g+IleDodac.g+ r/60) %24; return Nowy; }

/* Napisz funkcję, która dodaje do siebie dwa czasy będące parametrami funkcji, a wynik funkcja przekazuje przez parametr. Funkcja nie zwraca żadnego wyniku. */ void NowyCzas1(Czas &Teraz, Czas IleDodac) int r; r= Teraz.m + IleDodac.m; Teraz.m=r % 60; Teraz.g=(Teraz.g+IleDodac.g+ r/60) %24; } int main() Czas Cz=8,45},w, d=4,20}; cout<<cz.g<<":"<<setw(2)<<setfill('0')<<cz.m<<endl; w=nowyczas(cz,d); cout<<w.g<<":"<<setw(2)<<w.m<<endl; NowyCzas1(Cz,d); cout<<cz.g<<":"<<setw(2)<<cz.m<<endl<<setfill(' '); system("pause"); }