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

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

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

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

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Programowanie Proceduralne

Wstęp do programowania 1

2 Przygotował: mgr inż. Maciej Lasota

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Różności w C++ Marek Pudełko

Programowanie strukturalne i obiektowe

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Język ludzki kod maszynowy

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

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

external Data Representation

Wskaźniki. Programowanie Proceduralne 1

Język C - podstawowe informacje

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

Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia. Krzysztof Banaś Podstawy programowania 1

Funkcja (podprogram) void

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

Podstawy programowania C. dr. Krystyna Łapin

Języki programowania - podstawy

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

PROGRAMOWANIE w C prolog

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

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

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

Programowanie strukturalne język C - wprowadzenie

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

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

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

tablica: dane_liczbowe

Co nie powinno być umieszczane w plikach nagłówkowych:

Wykład 1

Zmienne, stałe i operatory

Język C zajęcia nr 11. Funkcje

Struktury - wprowadzenie

MATERIAŁY DO ZAJĘĆ II

Inżynieria Wytwarzania Systemów Wbudowanych

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

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

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

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

Podstawy programowania w języku C

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

1. Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C, WNT, Warszawa 1998.

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Wprowadzenie do języka Java

KURS C/C++ WYKŁAD 7. struct Punkt { int x, y; int kolor; };

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

( wykł. dr Marek Piasecki )

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

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

Algorytmy i struktury danych. wykład 1

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1

Podstawy programowania w języku C++

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

Instrukcje sterujące. Programowanie Proceduralne 1

Program w C. wer. 10 z drobnymi modyfikacjami! Wojciech Myszka :28:

Microsoft IT Academy kurs programowania

Programowanie w języku C++

DYNAMICZNE PRZYDZIELANIE PAMIECI

Wprowadzenie do szablonów klas

Przeciążenie (przeładowanie nazw) funkcji

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

wykład I uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Wstęp do języka C wykład I dr Jarosław Mederski Spis Ogólne informacje

Programowanie obiektowe

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Podstawy programowania. Wykład 2 Zmienne i obsługa wejścia/wyjścia. Krzysztof Banaś Podstawy programowania 1

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

Struktury Struktura polami struct struct struct struct

Projektowanie klas c.d. Projektowanie klas przykład

Sun RPC/XDR. Dariusz Wawrzyniak 1

C-struktury wykład. Dorota Pylak

Na ekranie monitora zostaną wyświetlone w dwu liniach teksty Pierwsza linia Druga linia

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

Typ użyty w deklaracji zmiennej decyduje o rodzaju informacji, a nazwa zmiennej symbolicznie opisuje wartość.

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

1. Wprowadzanie danych z klawiatury funkcja scanf

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Program w C. wer. 12 z drobnymi modyfikacjami! Wojciech Myszka :59:

external Data Representation

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)

C-struktury wykład. Dorota Pylak

1 Podstawy c++ w pigułce.

Wstęp do programowania

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Programowanie komputerowe. Zajęcia 4

ROZDZIAŁ 2. Operatory

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

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

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Szablony funkcji i szablony klas

ECLIPSE wnioski z dwóch pierwszych laboratoriów

nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

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

Transkrypt:

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

Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy Programowanie Proceduralne 2

Typy złożone Typ wyliczeniowy enum Tablice Struktury struct Unie union Pola bitowe Wskaźniki na funkcje i wskaźniki na typy złożone Programowanie Proceduralne 3

Typ wyliczeniowy Deklaracja enum nazwa typu element1, element2,... }; Przykład enum kolory czerwony, niebieski, zielony, czarny } ; int main ( ) enum kolory n ; n = 0 ; if ( n == czerwony ) printf ( " To kolor czerwony \n" ) ; } Programowanie Proceduralne 4

Typ wyliczeniowy Typ wyliczeniowy enum to liczba całkowita (prawie to samo co int) Operacje arytmetyczne takie same jak na typie całkowitym enum kolory n=zielony ; n++; n=n +100; Poprawia czytelność kodu Może być zastąpiony przez odpowiednie dyrektywy, np.: #define ZIELONY 1 #define CZERWONY 2 int kolor = ZIELONY ; Programowanie Proceduralne 5

Przykład: 1 # include <s t d i o. h> 2 3 enum kolory zielony, niebieski, czerwony, czarny } ; 4 5 int main ( ) 6 7 enum kolory n ; 8 9 for ( n=zielony ; n<=czarny ; n++) 10 printf ( "%d\n", n ) ; 11 12 return 0 ; 13 } 0 1 2 3 enum1.c Programowanie Proceduralne 6

Przykład: 1 # include <s t d i o. h> 2 3 enum kolory zielony =3, niebieski =7, czerwony, czarny } ; 4 5 int main ( ) 6 7 enum kolory n ; 8 9 printf ( "sizeof = %d\n", sizeof ( n ) ) ; 10 11 for ( n=zielony ; n<=czarny ; n++) 12 printf ( "%d\n", n ) ; 13 14 return 0 ; sizeof = 4 3 4 5 6 7 8 9 enum2.c Programowanie Proceduralne 7

typedef Polecenie typedef pozwala nadać własne nazwy dowolnym typom Deklaracja typu wygląda identycznie jak deklaracja zmiennej, należy tylko dodać słowo typedef na początku typedef float liczba ; typedef float punkt [ 4 ] ; typedef enum false, true } bool ; typedef float wskaznik ; int main ( ) liczba x = 3. 1 4 ; punkt y ; bool czy_koniec = false ; wskaznik w = &x ; } Programowanie Proceduralne 8

typedef i struktury Polecenie typedef pozwala uniknąć powtarzania słowa struct lub enum struct student char nazwisko [ 1 0 0 ] ; int indeks ; } ; typedef struct student student_s ; void wypisz_student ( student_s s ) printf ( " Nazwisko : %s\n", s. nazwisko ) ; } Programowanie Proceduralne 9

Operator -> umożliwia dostęp do pola struktury za pomocą wskaźnika. wskaznik->pole jest równoważne z (*wskaznik).pole 1 # include <s t d i o. h> 2 3 typedef enum M, K } plec ; 4 5 typedef struct 6 7 char nazwisko [ 1 0 0 ] ; 8 int indeks ; 9 plec p ; 10 } student ; 11 12 void wypisz_studenta ( const student s ) 13 14 printf ( "Nazwisko : %s\n", s >nazwisko ) ; 15 printf ( "Indeks : %d\n", ( s ). indeks ) ; 16 printf ( "Plec : %s\n", s >p == M? "M" : "K" ) ; 17 } 18 19 int main ( ) 20 21 student s = "Zenon Adamski ", 123456, M } ; 22 wypisz_studenta(&s ) ; 23 return 0 ; 24 } Wskaźniki do struktur struct2.c Programowanie Proceduralne 10

Unie, podobnie jak struktury, przechowują w polach zmienne dowolnego typu W odróżnieniu od struktur, wszystkie zmienne umieszczone są pod tym samym adresem (przechowywana jest pojedyncza wartość). Modyfikacja jednego pola zmienia wartośc pozostałych. 1 union ufloat 2 3 float f ; 4 unsigned int i ; 5 unsigned char c [ 4 ] ; 6 } ; Unie union1.c Programowanie Proceduralne 11

1 # include <s t d i o. h> 2 3 union liczba 4 5 float f ; 6 unsigned int i ; 7 unsigned char c ; 8 } ; 9 10 int main ( ) 11 12 union liczba x ; 13 14 x. f = 3. 1 4 ; 15 16 printf ( "sizeof = %d\n", sizeof ( union liczba ) ) ; 17 18 printf ( "adres pola f = %p\n", &x. f ) ; 19 printf ( "adres pola i = %p\n", &x. i ) ; 20 printf ( "adres pola c = %p\n", &x. c ) ; 21 22 printf ( " wartosc pola f = %f\n", x. f ) ; 23 printf ( " wartosc pola i = %x\n", x. i ) ; 24 printf ( " wartosc pola c = %x\n", x. c ) ; 25 26 } union2.c Programowanie Proceduralne 12

Pola bitowe Pola bitowe to pola struktury o określonej liczbie bitów Pozwalają zoptymalizować zużycie pamięci w reprezentacji zmiennych całkowitych Wykorzystywane m. in. przy obsłudze urządzeń zewnętrznych przez porty struct data unsigned int dzien : 5 ; unsigned int miesiac : 4 ; unsigned int rok : 11 ; } ; Programowanie Proceduralne 13

Pola bitowe 1 #include<s t d i o. h> 2 3 typedef struct 4 5 unsigned int dzien : 5 ; 6 unsigned int miesiac : 4 ; 7 unsigned int rok : 11 ; 8 } data ; 9 10 int main ( ) 11 12 data dzis = 24, 1, 2017 } ; 13 14 printf ( "Data: %u-%u-%u\n", 15 dzis. dzien, dzis. miesiac, dzis. rok ) ; 16 17 printf ( "sizeof(data)=%ld\n", sizeof ( data ) ) ; 18 19 return 0 ; bitfield.c Programowanie Proceduralne 14

Pola bitowe Pola bitowe pozwalają poprawić czytelnośc kodu zawierającego operacje na bitach, jednak działają wolniej niż operatory bitowe. typedef struct int prawo_odczytu : 1 ; int prawo_zapisu : 1 ; int prawo_wykonania : 1 ; } atrybuty_pliku ; int main ( ) atrybuty_pliku plik ; } if ( plik. prawo_odczytu ) /... / } Programowanie Proceduralne 15

Podsumowanie deklarowanie własnych typów poleceniem typedef struktury, unie i pola bitowe typ wyliczeniowy enum Programowanie Proceduralne 16