Struktury, unie, wyliczenia oraz typedef

Wielkość: px
Rozpocząć pokaz od strony:

Download "Struktury, unie, wyliczenia oraz typedef"

Transkrypt

1 Struktury, unie, wyliczenia oraz typedef Przemysław Gawroński D-10, p. 234 Wykład 7 12 kwietnia 2019 (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

2 Outline 1 Wskaźniki do struktur 2 C99 - elastyczne składowe tablicowe 3 C99 - inicjatory desygnowane 4 C11 - struktury i unie anonimowe 5 Unie 6 Wyliczenia 7 Pola bitowe 8 typedef (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

3 Wskaźniki do struktur Ogólna postać deklaracji wskaźnika do struktury: struct etykieta *nazwa-zmiennej; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

4 Wskaźniki do struktur Ogólna postać deklaracji wskaźnika do struktury: struct etykieta *nazwa-zmiennej; Wskaźniki do struktur służą do: (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

5 Wskaźniki do struktur Ogólna postać deklaracji wskaźnika do struktury: struct etykieta *nazwa-zmiennej; Wskaźniki do struktur służą do: przekazywania struktur do funkcji przez referencję, (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

6 Wskaźniki do struktur Ogólna postać deklaracji wskaźnika do struktury: struct etykieta *nazwa-zmiennej; Wskaźniki do struktur służą do: przekazywania struktur do funkcji przez referencję, tworzenia dynamicznych struktur danych. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

7 Wskaźniki do struktur Ogólna postać deklaracji wskaźnika do struktury: struct etykieta *nazwa-zmiennej; Wskaźniki do struktur służą do: przekazywania struktur do funkcji przez referencję, tworzenia dynamicznych struktur danych. Przekazując strukturę do funkcji tworzona jest jej kopia na stosie. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

8 Wskaźniki do struktur Ogólna postać deklaracji wskaźnika do struktury: struct etykieta *nazwa-zmiennej; Wskaźniki do struktur służą do: przekazywania struktur do funkcji przez referencję, tworzenia dynamicznych struktur danych. Przekazując strukturę do funkcji tworzona jest jej kopia na stosie. Gdy funkcja otrzymuje wskaźnik do struktury tylko adres struktury umieszczany jest na stosie. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

9 Wskaźniki do struktur Ogólna postać deklaracji wskaźnika do struktury: struct etykieta *nazwa-zmiennej; Wskaźniki do struktur służą do: przekazywania struktur do funkcji przez referencję, tworzenia dynamicznych struktur danych. Przekazując strukturę do funkcji tworzona jest jej kopia na stosie. Gdy funkcja otrzymuje wskaźnik do struktury tylko adres struktury umieszczany jest na stosie. Funkcja może operować bezpośrednio na strukturze, a nie na jej kopii. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

10 Wskaźniki do struktur struct critter { const char * name ; const char * species ; }; struct critter muppets [] = { {" Kermit ", " frog "}, {" Piggy ", " pig "} }; void print_critter ( const struct critter * c){ printf ("%s, the %s\n", c->name, c-> species ); } print_critter (& muppets [0]) ; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

11 Wskaźniki do struktur int critter_cmp ( const void * c1, const void * c2){ return strcmp ( ( ( struct critter *) c1 ) - > name, ( ( struct critter *) c2 ) -> name ); } int cnt = sizeof ( muppets ) / sizeof ( struct critter ); qsort ( muppets, cnt, sizeof ( struct critter ), critter_cmp ); (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

12 Wskaźniki do struktur struct critter * find_critter ( const char * name, struct critter * muppets, int cnt ){ struct critter target ; target. name = name ; } return bsearch (& target, muppets, cnt, sizeof ( struct critter ), critter_cmp ); struct critter * result = find_critter (" Kermit ", muppets, cnt ); if( result ) print_critter ( result ); (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

13 Struktury - wyrównywanie granic struct cic { char a; // 1 int b; // 4 char c; /* 1 */ }; struct icc { int b; // 4 char a; // 1 char c; /* 1 */ }; struct cci { char a; // 1 char c; // 1 int b; /* 4 */ }; printf ("%ld\n", sizeof ( struct cic )); // 12 printf ("%ld\n", sizeof ( struct icc )); // 8 printf ("%ld\n", sizeof ( struct cci )); // 8 (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

14 Struktury - wyrównywanie granic size t offsetof(type, member) - makro z nagłówka stddef.h, określa przesuniecie member w stosunku do type, gdzie type to struktura bądź unia. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

15 Struktury - wyrównywanie granic size t offsetof(type, member) - makro z nagłówka stddef.h, określa przesuniecie member w stosunku do type, gdzie type to struktura bądź unia. struct cci { char a; // 1 char b; // 1 int c; // 4 } z; // Typ int zajmuje 4 bajty i musi zaczynac sie od adresu podzielnego przez 4. printf ("%ld\n", sizeof ( struct cci )); // 8 printf ("%p %p %p\n", &z.a, &z.b, &z.c); // 0 x7fffd65214a0 0 x7fffd65214a1 0 x7fffd65214a4 printf ("a=% ld\n",offsetof ( struct cci,a));// 0 printf ("b=% ld\n",offsetof ( struct cci,b));// 1 printf ("c=% ld\n",offsetof ( struct cci,c));// 4 (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

16 Struktury - wyrównywanie granic struct icc { int a; // 4 char b; // 1 char c; // 1 } y; printf ("%ld\n", sizeof ( struct icc )); // 8 printf ("%p %p %p\n", &y.a, &y.b, &y.c); // 0 x7fff09860fb0 0 x7fff09860fb4 0 x7fff09860fb5 printf ("a=% ld\n",offsetof ( struct icc,a));// 0 printf ("b=% ld\n",offsetof ( struct icc,b));// 4 printf ("c=% ld\n",offsetof ( struct icc,c));// 5 (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

17 Struktury - wyrównywanie granic struct cic { char a; // 1 int b; // 4 char c; // 1 } x; printf ("%ld\n", sizeof ( struct cic )); // 12 printf ("%p %p %p\n", &x.a, &x.b, &x.c); // 0 x7fff09860fc0 0 x7fff09860fc4 0 x7fff09860fc8 printf ("a=% ld\n",offsetof ( struct cic,a));// 0 printf ("b=% ld\n",offsetof ( struct cic,b));// 4 printf ("c=% ld\n",offsetof ( struct cic,c));// 8 (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

18 C99 - elastyczne składowe tablicowe Standard C99 pozwala zadeklarować tablicę o nieokreślonym rozmiarze jako ostatnią składową struktury. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

19 C99 - elastyczne składowe tablicowe Standard C99 pozwala zadeklarować tablicę o nieokreślonym rozmiarze jako ostatnią składową struktury. Struktura musi zawierać co najmniej jeden element przed elastyczna składową tablicową. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

20 C99 - elastyczne składowe tablicowe Standard C99 pozwala zadeklarować tablicę o nieokreślonym rozmiarze jako ostatnią składową struktury. Struktura musi zawierać co najmniej jeden element przed elastyczna składową tablicową. Taka składowa umożliwia umieszczenie w strukturach tablic o zmiennej długości. Rozmiar takiej struktury zwrócony przez operator sizeof nie uwzględnia pamięci przeznaczonej na taką tablicę. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

21 C99 - elastyczne składowe tablicowe Standard C99 pozwala zadeklarować tablicę o nieokreślonym rozmiarze jako ostatnią składową struktury. Struktura musi zawierać co najmniej jeden element przed elastyczna składową tablicową. Taka składowa umożliwia umieszczenie w strukturach tablic o zmiennej długości. Rozmiar takiej struktury zwrócony przez operator sizeof nie uwzględnia pamięci przeznaczonej na taką tablicę. Przykład. struct mys { int a; float fa []; }; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

22 C99 - elastyczne składowe tablicowe Standard C99 pozwala zadeklarować tablicę o nieokreślonym rozmiarze jako ostatnią składową struktury. Struktura musi zawierać co najmniej jeden element przed elastyczna składową tablicową. Taka składowa umożliwia umieszczenie w strukturach tablic o zmiennej długości. Rozmiar takiej struktury zwrócony przez operator sizeof nie uwzględnia pamięci przeznaczonej na taką tablicę. Przykład. struct mys { int a; float fa []; }; Przydział pamięci dla struktury zawierającej 10 elementową tablicę. struct mys * p = malloc ( sizeof ( struct mys ) + 10* sizeof ( float ) ); (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

23 C99 - inicjatory desygnowane Inicjatory desygnowane występują w dwóch odmianach: (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

24 C99 - inicjatory desygnowane Inicjatory desygnowane występują w dwóch odmianach: dla tablic [indeks]=val, (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

25 C99 - inicjatory desygnowane Inicjatory desygnowane występują w dwóch odmianach: dla tablic [indeks]=val, dla struktur.nazwa-składowej=val. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

26 C99 - inicjatory desygnowane Inicjatory desygnowane występują w dwóch odmianach: dla tablic [indeks]=val, dla struktur.nazwa-składowej=val. Przykład. int a [10]= {[0]=100, [3]=200}; struct strm { int a; int b; int c; } ob = {.c=30,.a =10}; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

27 C11 - struktury i unie anonimowe Struktury i unie anonimowe: struct foo { int m; struct { float x; int n; }; }; struct foo t; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

28 C11 - struktury i unie anonimowe Struktury i unie anonimowe: struct foo { int m; struct { float x; int n; }; }; struct foo t; Bezpośredni dostęp do pola struktury anonimowej: t.n = 1300; t.m = 2300 (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

29 Unie Unia to obszar w pamięci, który współdzieli kilka zmiennych różnego typu. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

30 Unie Unia to obszar w pamięci, który współdzieli kilka zmiennych różnego typu. Unia umożliwia (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

31 Unie Unia to obszar w pamięci, który współdzieli kilka zmiennych różnego typu. Unia umożliwia różną interpretację tej samej wartości binarnej (nietypowe zaokrąglenia), (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

32 Unie Unia to obszar w pamięci, który współdzieli kilka zmiennych różnego typu. Unia umożliwia różną interpretację tej samej wartości binarnej (nietypowe zaokrąglenia), tworzenie złożonych typów danych, jednocześnie oszczędzając miejsce w pamięci. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

33 Unie Unia to obszar w pamięci, który współdzieli kilka zmiennych różnego typu. Unia umożliwia różną interpretację tej samej wartości binarnej (nietypowe zaokrąglenia), tworzenie złożonych typów danych, jednocześnie oszczędzając miejsce w pamięci. Ogólna postać deklaracji unii: union [ etykieta ]{ typ pole_unii ; }[ lista - zmiennych ]; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

34 Unie Unia to obszar w pamięci, który współdzieli kilka zmiennych różnego typu. Unia umożliwia różną interpretację tej samej wartości binarnej (nietypowe zaokrąglenia), tworzenie złożonych typów danych, jednocześnie oszczędzając miejsce w pamięci. Ogólna postać deklaracji unii: union [ etykieta ]{ typ pole_unii ; }[ lista - zmiennych ]; union u_ type { int i; //4 bajty - int. char ch; // 1 bajt - char. } u; // cala unia zajmuje TYLKO 4 bajty. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

35 Unie Unia to obszar w pamięci, który współdzieli kilka zmiennych różnego typu. Unia umożliwia różną interpretację tej samej wartości binarnej (nietypowe zaokrąglenia), tworzenie złożonych typów danych, jednocześnie oszczędzając miejsce w pamięci. Ogólna postać deklaracji unii: union [ etykieta ]{ typ pole_unii ; }[ lista - zmiennych ]; union u_ type { int i; //4 bajty - int. char ch; // 1 bajt - char. } u; // cala unia zajmuje TYLKO 4 bajty. Dostęp do składowych unii umożliwiają operatory kropka i strzałka. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

36 Unie - 1/sqrt(x) Szybka odwrotność pierwiastka kwadratowego z 32-bitowej liczby zmiennoprzecinkowej w standardzie IEEE 754. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

37 Unie - 1/sqrt(x) Szybka odwrotność pierwiastka kwadratowego z 32-bitowej liczby zmiennoprzecinkowej w standardzie IEEE 754. Odwrotności pierwiastków kwadratowych są używane do obliczania kątów padania i odbicia dla oświetlenia i cieniowania w grafice komputerowej. (Quake III: Arena) (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

38 Unie - 1/sqrt(x) Szybka odwrotność pierwiastka kwadratowego z 32-bitowej liczby zmiennoprzecinkowej w standardzie IEEE 754. Odwrotności pierwiastków kwadratowych są używane do obliczania kątów padania i odbicia dla oświetlenia i cieniowania w grafice komputerowej. (Quake III: Arena) Algorytm wyznacza 1 w następujących krokach: x (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

39 Unie - 1/sqrt(x) Szybka odwrotność pierwiastka kwadratowego z 32-bitowej liczby zmiennoprzecinkowej w standardzie IEEE 754. Odwrotności pierwiastków kwadratowych są używane do obliczania kątów padania i odbicia dla oświetlenia i cieniowania w grafice komputerowej. (Quake III: Arena) Algorytm wyznacza 1 w następujących krokach: x zmiennoprzecinkowy wartość x interpretowana jest jako liczba całkowita, co może być sposobem na wyznaczenie przybliżenia log 2 (x) (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

40 Unie - 1/sqrt(x) Szybka odwrotność pierwiastka kwadratowego z 32-bitowej liczby zmiennoprzecinkowej w standardzie IEEE 754. Odwrotności pierwiastków kwadratowych są używane do obliczania kątów padania i odbicia dla oświetlenia i cieniowania w grafice komputerowej. (Quake III: Arena) Algorytm wyznacza 1 w następujących krokach: x zmiennoprzecinkowy wartość x interpretowana jest jako liczba całkowita, co może być sposobem na wyznaczenie przybliżenia log 2 (x) wyliczone przybliżenie zostaje przekształcone w przybliżoną wartość log 2 ( 1 x ) = 1 2 log 2(x) (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

41 Unie - 1/sqrt(x) Szybka odwrotność pierwiastka kwadratowego z 32-bitowej liczby zmiennoprzecinkowej w standardzie IEEE 754. Odwrotności pierwiastków kwadratowych są używane do obliczania kątów padania i odbicia dla oświetlenia i cieniowania w grafice komputerowej. (Quake III: Arena) Algorytm wyznacza 1 w następujących krokach: x zmiennoprzecinkowy wartość x interpretowana jest jako liczba całkowita, co może być sposobem na wyznaczenie przybliżenia log 2 (x) wyliczone przybliżenie zostaje przekształcone w przybliżoną wartość log 2 ( 1 x ) = 1 2 log 2(x) otrzymana liczba całkowita interpretowana jest jako zmiennoprzecinkowa, co pozwala obliczyć przybliżenie funkcji wykładniczej o podstawie 2 (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

42 Unie - 1/sqrt(x) Szybka odwrotność pierwiastka kwadratowego z 32-bitowej liczby zmiennoprzecinkowej w standardzie IEEE 754. Odwrotności pierwiastków kwadratowych są używane do obliczania kątów padania i odbicia dla oświetlenia i cieniowania w grafice komputerowej. (Quake III: Arena) Algorytm wyznacza 1 w następujących krokach: x zmiennoprzecinkowy wartość x interpretowana jest jako liczba całkowita, co może być sposobem na wyznaczenie przybliżenia log 2 (x) wyliczone przybliżenie zostaje przekształcone w przybliżoną wartość log 2 ( 1 x ) = 1 2 log 2(x) otrzymana liczba całkowita interpretowana jest jako zmiennoprzecinkowa, co pozwala obliczyć przybliżenie funkcji wykładniczej o podstawie 2 dokładność wyniku można zwiększyć stosując iteracje metody Newtona-Raphsona (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

43 Unie - 1/sqrt(x) # include <stdint.h> float Q_rsqrt_u ( float number ){ const float x2 = number * 0.5 F; union { float f; uint32_t i; } conv = { number }; conv.i = 0 x5f3759df - ( conv.i >> 1); conv.f *= (1.5 F - (x2 * conv.f * conv.f)); return } conv.f; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

44 Unie - mieszane typy danych # define INT_NUMBER 0 # define DOUBLE_NUMBER 1 struct number { union { double dvar ; int ivar ; } uvar ; char type ; }; struct number a,b; a. type = INT_NUMBER ; a. uvar. ivar =57; b. type = DOUBLE_NUMBER ; b. uvar. dvar =12.34; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

45 Unie - mieszane typy danych void print_number ( struct number tmp ){ } if ( tmp. type == INT_NUMBER ) printf (" int = %d\n", tmp. uvar. ivar ); else printf (" double = %lf\n", tmp. uvar. dvar ); print_number (a); print_number (b); (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

46 Wyliczenia Wyliczenie to zbiór stałych całkowitych o określonych nazwach. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

47 Wyliczenia Wyliczenie to zbiór stałych całkowitych o określonych nazwach. Ogólna postać wyliczenia: enum [ etykieta ] { lista wartosci } [ zmienne ]; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

48 Wyliczenia Wyliczenie to zbiór stałych całkowitych o określonych nazwach. Ogólna postać wyliczenia: enum [ etykieta ] { lista wartosci } [ zmienne ]; Przykład: enum moneta { penny, nickel, dime, quarter, half_ dolar, dolar }; enum moneta x;... x = dime ; if (x == quarter )... (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

49 Wyliczenia Każdy symbol wyliczenia reprezentuje stałą całkowitą. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

50 Wyliczenia Każdy symbol wyliczenia reprezentuje stałą całkowitą. Wyliczeń można używać tam gdzie można użyć liczby całkowitej. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

51 Wyliczenia Każdy symbol wyliczenia reprezentuje stałą całkowitą. Wyliczeń można używać tam gdzie można użyć liczby całkowitej. Każdy symbol otrzymuje wartość o jeden większą od wartości poprzedniego symbolu. Wartość pierwszego symbolu to zero. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

52 Wyliczenia Każdy symbol wyliczenia reprezentuje stałą całkowitą. Wyliczeń można używać tam gdzie można użyć liczby całkowitej. Każdy symbol otrzymuje wartość o jeden większą od wartości poprzedniego symbolu. Wartość pierwszego symbolu to zero. Można również określić wartości jednego lub kilku symboli. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

53 Wyliczenia Każdy symbol wyliczenia reprezentuje stałą całkowitą. Wyliczeń można używać tam gdzie można użyć liczby całkowitej. Każdy symbol otrzymuje wartość o jeden większą od wartości poprzedniego symbolu. Wartość pierwszego symbolu to zero. Można również określić wartości jednego lub kilku symboli. Przykłady: enum mnta { penny = 1, nickel = 2, dime = 3, quarter = 4, half_dolar = 5, dolar = 6}; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

54 Wyliczenia Każdy symbol wyliczenia reprezentuje stałą całkowitą. Wyliczeń można używać tam gdzie można użyć liczby całkowitej. Każdy symbol otrzymuje wartość o jeden większą od wartości poprzedniego symbolu. Wartość pierwszego symbolu to zero. Można również określić wartości jednego lub kilku symboli. Przykłady: enum mnta { penny = 1, nickel = 2, dime = 3, quarter = 4, half_dolar = 5, dolar = 6}; enum mntb { penny = 11, nickel = 22, dime = 13, quarter = 4, half_ dolar = 15, dolar = 66}; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

55 Wyliczenia Każdy symbol wyliczenia reprezentuje stałą całkowitą. Wyliczeń można używać tam gdzie można użyć liczby całkowitej. Każdy symbol otrzymuje wartość o jeden większą od wartości poprzedniego symbolu. Wartość pierwszego symbolu to zero. Można również określić wartości jednego lub kilku symboli. Przykłady: enum mnta { penny = 1, nickel = 2, dime = 3, quarter = 4, half_dolar = 5, dolar = 6}; enum mntb { penny = 11, nickel = 22, dime = 13, quarter = 4, half_ dolar = 15, dolar = 66}; enum mntc { penny, nickel = 7, dime, quarter, half_ dolar, dolar = 15}; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

56 Wyliczenia Przykład: int i; enum { CLUBS, DIAMONDS, HEARTS, SPADES } s; i = DIAMONDS ; // i = 1 s = 0; // s = 0 CLUBS s ++; // s = 1 DIAMONDS i = s + 2; // i = 3 (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

57 Unie + Wyliczenia = mieszane typy danych struct number { enum { INT_ NUMBER, DOUBLE_ NUMBER } type ; union { double dvar ; int ivar ; } uvar ; }; struct number number_ tab [ 10]; number_tab [i]. type = INT_NUMBER ; number_tab [i]. uvar. ivar = rand () %125; number_tab [i]. type = DOUBLE_NUMBER ; number_tab [i]. uvar. dvar =( double ) rand ()/ RAND_MAX ; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

58 Unie + Wyliczenia = mieszane typy danych enum e_typ {BOOK, MUG }; enum e_typ {BOOK, MUG }; struct sctm { int nmbr ; double prc ; enum e_ typ type ; }; struct { char title [45]; char author [25]; int num_pages ; } book ; struct { char design [35]; } mug ; struct ctm { int nmbr ; double prc ; enum e_ typ type ; union { struct { char title [45]; char author [25]; int num_pages ; } book ; struct { char design [35]; } mug ; } item ; }; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

59 Unie + Wyliczenia = mieszane typy danych printf (" sizeof struct ctm = %lu\n", sizeof ( struct ctm )); // 96 printf (" sizeof struct sctm = %lu\n", sizeof ( struct sctm )); // 136 struct ctm rtcl [ 10]; rtcl [0]. type = BOOK ; rtcl [0]. prc = 25.99; strcpy ( rtcl [0]. item. book. title," Pantaleon y las visitadoras "); strcpy ( rtcl [0]. item. book. author," Vargas Llosa "); rtcl [1]. type = MUG ; rtcl [1]. prc = 5.99; strcpy ( rtcl [1]. item. mug. design,"in on the Kill Taker "); (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

60 Pola bitowe Język C pozwala odwoływać się do konkretnych bitów za pośrednictwem pól bitowych. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

61 Pola bitowe Język C pozwala odwoływać się do konkretnych bitów za pośrednictwem pól bitowych. Pola bitowe pozwalają w jednym bajcie przechować kilka zmiennych logicznych. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

62 Pola bitowe Język C pozwala odwoływać się do konkretnych bitów za pośrednictwem pól bitowych. Pola bitowe pozwalają w jednym bajcie przechować kilka zmiennych logicznych. Pola bitowe to specjalny typ składowych struktury lub unii o długości określonej w bitach. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

63 Pola bitowe Język C pozwala odwoływać się do konkretnych bitów za pośrednictwem pól bitowych. Pola bitowe pozwalają w jednym bajcie przechować kilka zmiennych logicznych. Pola bitowe to specjalny typ składowych struktury lub unii o długości określonej w bitach. Ogólna postać definicji pola bitowego: typ nazwa : długość; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

64 Pola bitowe Język C pozwala odwoływać się do konkretnych bitów za pośrednictwem pól bitowych. Pola bitowe pozwalają w jednym bajcie przechować kilka zmiennych logicznych. Pola bitowe to specjalny typ składowych struktury lub unii o długości określonej w bitach. Ogólna postać definicji pola bitowego: typ nazwa : długość; typ to int, signed, unsigned. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

65 Pola bitowe Język C pozwala odwoływać się do konkretnych bitów za pośrednictwem pól bitowych. Pola bitowe pozwalają w jednym bajcie przechować kilka zmiennych logicznych. Pola bitowe to specjalny typ składowych struktury lub unii o długości określonej w bitach. Ogólna postać definicji pola bitowego: typ nazwa : długość; typ to int, signed, unsigned. długość to liczba bitów. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

66 Pola bitowe Z pól bitowych często korzysta się przy analizowaniu danych pochodzących z urządzeń zewnętrznych. Port statusu karty szeregowej - 1 bajt: struct status_type { unsigned int delta_cts :1; unsigned int delta_dsr :1; unsigned int tr_edge :1; unsigned int delta_rec :1; unsigned int cts :1; unsigned int dsr :1; unsigned int ring :1; unsigned int rec_line :1; } status ; status = get_port_status (); status. ring = 0; if ( status. cts ) printf (" clear to send "); (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

67 Pola bitowe Można jednocześnie umieszczać w strukturze zwykłe elementy oraz pola bitowe. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

68 Pola bitowe Można jednocześnie umieszczać w strukturze zwykłe elementy oraz pola bitowe. Można pominąć nieużywane bity: struct status_type { unsigned int : 4; // pomijamy nieuzywane unsigned int cts : 1; // interesuja nas unsigned int dsr : 1; // tylko bity 5 i 6 } status ; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

69 Pola bitowe Nie można pobrać adresu pola bitowego. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

70 Pola bitowe Nie można pobrać adresu pola bitowego. Nie można tworzyć tablic pól bitowych. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

71 Pola bitowe Nie można pobrać adresu pola bitowego. Nie można tworzyć tablic pól bitowych. Pól bitowych nie można deklarować jako statycznych. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

72 Pola bitowe Nie można pobrać adresu pola bitowego. Nie można tworzyć tablic pól bitowych. Pól bitowych nie można deklarować jako statycznych. Korzystanie z pól bitowych wiąże kod z konkretnym typem komputera; nie wiadomo czy pola bitowe układają się od lewej do prawej czy też odwrotnie. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

73 Pola bitowe Nie można pobrać adresu pola bitowego. Nie można tworzyć tablic pól bitowych. Pól bitowych nie można deklarować jako statycznych. Korzystanie z pól bitowych wiąże kod z konkretnym typem komputera; nie wiadomo czy pola bitowe układają się od lewej do prawej czy też odwrotnie. Kod operujący na polach bitowych jest zazwyczaj dużo jaśniejszy niż odpowiadające mu jawne operacje na maskach bitowych. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

74 Maski bitowe unsigned short int - 16 bitów, najbardziej znaczący bit to 15, a najmniej znaczący bit to 0. unsigned short int i = 0 x0000 ; // (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

75 Maski bitowe unsigned short int - 16 bitów, najbardziej znaczący bit to 15, a najmniej znaczący bit to 0. unsigned short int i = 0 x0000 ; // Ustawianie bitu - ustawianie 4 bitu przy pomocy maski bitowej. i = 0 x0010 ; // (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

76 Maski bitowe unsigned short int - 16 bitów, najbardziej znaczący bit to 15, a najmniej znaczący bit to 0. unsigned short int i = 0 x0000 ; // Ustawianie bitu - ustawianie 4 bitu przy pomocy maski bitowej. i = 0 x0010 ; // i = 0 x0000 ; i = 1 << 4; // (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

77 Maski bitowe Kasowanie bitu - kasowanie 4 bitu przy pomocy maski bitowej. i = 0 x00ff ; // i &= ~0 x0010 ; // (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

78 Maski bitowe Kasowanie bitu - kasowanie 4 bitu przy pomocy maski bitowej. i = 0 x00ff ; // i &= ~0 x0010 ; // i = 0 x00ff ; // i &= ~(1 << 4); // (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

79 Maski bitowe Kasowanie bitu - kasowanie 4 bitu przy pomocy maski bitowej. i = 0 x00ff ; // i &= ~0 x0010 ; // i = 0 x00ff ; // i &= ~(1 << 4); // Testowanie bitu - sprawdzanie czy 4 bit jest ustawiony. if ( i & 0 x0010 )... (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

80 Maski bitowe Kasowanie bitu - kasowanie 4 bitu przy pomocy maski bitowej. i = 0 x00ff ; // i &= ~0 x0010 ; // i = 0 x00ff ; // i &= ~(1 << 4); // Testowanie bitu - sprawdzanie czy 4 bit jest ustawiony. if ( i & 0 x0010 )... if ( i & 1 << 4)... (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

81 Maski bitowe # define BLUE 1 // bit 0 # define GREEN 2 // bit 1 # define RED 4 // bit 2 i = BLUE ; // ustawiamy bit BLUE i &= ~ BLUE ; // kasujemy bit BLUE if (i & BLUE )... // sprawdzamy bit BLUE i = BLUE GREEN ; // ustawiamy bity BLUE i GREEN i &= ~( BLUE GREEN ); // kasujemy bity BLUE i GREEN if (i & ( BLUE GREEN ))... // sprawdzamy czy bit BLUE lub GREEN jest ustawiony (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

82 typedef Używając słowa kluczowego typedef można zdefiniować nowe nazwy typów. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

83 typedef Używając słowa kluczowego typedef można zdefiniować nowe nazwy typów. Ogólna postać instrukcji: typedef typ nowa_nazwa_typu ; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

84 typedef Używając słowa kluczowego typedef można zdefiniować nowe nazwy typów. Ogólna postać instrukcji: typedef typ nowa_nazwa_typu ; Przykład: typedef float saldo ; saldo wrzesien ; typedef struct telement { int wiek ; struct telement * nast ; } element ; element * root ; // struct telement * root ; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

85 typedef Rozważmy poniższą deklarację: int *(* x [10]) ( void ); (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

86 typedef Rozważmy poniższą deklarację: int *(* x [10]) ( void ); Deklarator, który zaczyna się od oznacza wskaźnik. Deklarator, który kończy się [] oznacza tablicę. Deklarator, który kończy się () oznacza funkcję. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

87 typedef Rozważmy poniższą deklarację: int *(* x [10]) ( void ); Deklarator, który zaczyna się od oznacza wskaźnik. Deklarator, który kończy się [] oznacza tablicę. Deklarator, który kończy się () oznacza funkcję. Deklaracje odczytujemy od środka. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

88 typedef Rozważmy poniższą deklarację: int *(* x [10]) ( void ); Deklarator, który zaczyna się od oznacza wskaźnik. Deklarator, który kończy się [] oznacza tablicę. Deklarator, który kończy się () oznacza funkcję. Deklaracje odczytujemy od środka. Jeżeli poprzedza identyfikator a [] następuje po nim, to identyfikator reprezentuje tablicę. Jeżeli poprzedza identyfikator a () następuje po nim, to identyfikator reprezentuje funkcję. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

89 typedef Rozważmy poniższą deklarację: int *(* x [10]) ( void ); Deklarator, który zaczyna się od oznacza wskaźnik. Deklarator, który kończy się [] oznacza tablicę. Deklarator, który kończy się () oznacza funkcję. Deklaracje odczytujemy od środka. Jeżeli poprzedza identyfikator a [] następuje po nim, to identyfikator reprezentuje tablicę. Jeżeli poprzedza identyfikator a () następuje po nim, to identyfikator reprezentuje funkcję. Możemy użyć nawiasów by zmienić priorytet [] oraz () nad. (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

90 typedef Rozważmy poniższą deklarację: int *(* x [10]) ( void ); Deklarator, który zaczyna się od oznacza wskaźnik. Deklarator, który kończy się [] oznacza tablicę. Deklarator, który kończy się () oznacza funkcję. Deklaracje odczytujemy od środka. Jeżeli poprzedza identyfikator a [] następuje po nim, to identyfikator reprezentuje tablicę. Jeżeli poprzedza identyfikator a () następuje po nim, to identyfikator reprezentuje funkcję. Możemy użyć nawiasów by zmienić priorytet [] oraz () nad. Deklaracja z wykorzystaniem typedef typedef int * Fcn ( void ); typedef Fcn * Fcn_ ptr ; typedef Fcn_ ptr Fcn_ ptr_ array [ 10]; Fcn_ptr_array x; (Wykład 7) Struktury, unie, wyliczenia oraz typedef 12 kwietnia / 33

Struktury - wprowadzenie

Struktury - wprowadzenie Struktury - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 6 5 kwietnia 2019 (Wykład 6) Struktury - wprowadzenie 5 kwietnia 2019 1 / 12 Outline 1 Struktury (Wykład 6) Struktury - wprowadzenie 5

Bardziej szczegółowo

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

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1 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

Bardziej szczegółowo

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

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku

Bardziej szczegółowo

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

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

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury, , Programowanie, uzupełnienie notatek: dr Jerzy Białkowski , 1 2 3 4 , Wczytywanie liczb , Wczytywanie liczb 1 #include 2 #include < s t d l i b. h> 3 4 int main ( ) { 5 int rozmiar, numer

Bardziej szczegółowo

Język C zajęcia nr 11. Funkcje

Język C zajęcia nr 11. Funkcje Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji

Bardziej szczegółowo

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

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1 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,

Bardziej szczegółowo

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

KURS C/C++ WYKŁAD 7. struct Punkt { int x, y; int kolor; }; Typy pochodne. Referencje Referencja jest inną nazwą zmiennej. KURS C/C++ WYKŁAD 7 Referencje tworzymy przy pomocy unarnego operatora &: int a; int &refer = a; // referencja musi być inicjowana Powyższe

Bardziej szczegółowo

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

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1 Operatory Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1 Przypomnienie: operatory Operator przypisania = przypisanie x = y x y Operatory arytmetyczne

Bardziej szczegółowo

Wstęp do programowania 1

Wstęp do programowania 1 Wstęp do programowania 1 Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Struktura dla dat - przykład #include struct Date { int y; short m; short

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

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

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie

Bardziej szczegółowo

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

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h> Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch

Bardziej szczegółowo

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

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce.

Bardziej szczegółowo

Tablice, funkcje - wprowadzenie

Tablice, funkcje - wprowadzenie Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład

Bardziej szczegółowo

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

KURS C/C++ WYKŁAD 6. Wskaźniki Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można

Bardziej szczegółowo

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

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie

Bardziej szczegółowo

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

Różności w C++ Marek Pudełko Różności w C++ Marek Pudełko Kodowanie i reprezentacja liczb 2 Kodowanie uzupełnieniowe U1 i U2 Bity liczby numerujemy od 0 do k 1 Bitom nr j, j < k 1 przyporządkowuje się wagi w j =2 j Najstarszej pozycji

Bardziej szczegółowo

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

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17 Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

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

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część dziesiąta Rekordy w C/C++ struktury Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera skrót

Bardziej szczegółowo

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

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

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

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych

Bardziej szczegółowo

external Data Representation

external Data Representation Remote Procedure Call external Data Representation Opis standardu RFC 1014 Kanoniczna reprezentacja danych oparta na formacie IEEE Deklaratywny język opisu struktur danych (zbliżony do języka C) Koncepcja

Bardziej szczegółowo

Struktury czyli rekordy w C/C++

Struktury czyli rekordy w C/C++ Struktury czyli rekordy w C/C++ Wprowadzenie do programowania w języku C struktury. pola bitowe, unie Struktury (rekordy) są złożonymi zmiennymi, składającymi się z elementów różnych typów zwanych polami,

Bardziej szczegółowo

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

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur. Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur. 1. Identyfikator funkcji,

Bardziej szczegółowo

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

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Ł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Ł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 Tomasz Zieliński ZMIENNE O ZŁOŻONEJ BUDOWIE (1) Zmienne

Bardziej szczegółowo

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

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje

Bardziej szczegółowo

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

Program w C. wer. 10 z drobnymi modyfikacjami! Wojciech Myszka :28: Program w C wer. 10 z drobnymi modyfikacjami! Wojciech Myszka 2015-05-02 18:28:29 +0200 Tak wygląda program w języku C 1 / Hello World in C, Ansi s t y l e / 2 #include < s t d i o. h> 3 i n t main ( void

Bardziej szczegółowo

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

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst

Bardziej szczegółowo

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

Program w C. wer. 12 z drobnymi modyfikacjami! Wojciech Myszka :59: Program w C wer. 12 z drobnymi modyfikacjami! Wojciech Myszka 2018-06-29 14:59:06 +0200 Tak wygląda program w języku C 1 /* H e l l o World i n C, Ansi s t y l e */ 2 # i n c l u d e < s t d i o. h> 3

Bardziej szczegółowo

Wskaźniki. Programowanie Proceduralne 1

Wskaźniki. Programowanie Proceduralne 1 Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres

Bardziej szczegółowo

Struktury Struktura polami struct struct struct struct

Struktury Struktura polami struct struct struct struct 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

Bardziej szczegółowo

C-struktury wykład. Dorota Pylak

C-struktury wykład. Dorota Pylak C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.

Bardziej szczegółowo

Algorytmy i struktury danych. wykład 1

Algorytmy i struktury danych. wykład 1 Plan całego wykładu:. Pojęcie algorytmu, projektowanie wstępujące i zstępujące, rekurencja. Klasy algorytmów. Poprawność algorytmu, złożoność obliczeniowa. Wskaźniki, dynamiczne struktury danych: listy,

Bardziej szczegółowo

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia: Operatory logiczne Komputery i ich logika AND - && Podstawy programowania w C++ Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia: CPA: PROGRAMMING ESSENTIALS IN C++ https://www.netacad.com

Bardziej szczegółowo

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

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych: Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Unie, typdef, opeartory bitowe, operator przecinkowy Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Definicja Unia (ang. union) jest typem,

Bardziej szczegółowo

Sun RPC/XDR. Dariusz Wawrzyniak 1

Sun RPC/XDR. Dariusz Wawrzyniak 1 Remote Procedure Call external Data Representation trójwymiarowa identyfikacja procedur (nr programu, nr wersji, nr procedury) protokół RPC oparty na protokołach warstwy transportowej stosu TCP/IP (TCP

Bardziej szczegółowo

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

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to

Bardziej szczegółowo

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

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Tablice Wskaźniki Adresy pamięci Operator adresu

Bardziej szczegółowo

C-struktury wykład. Dorota Pylak

C-struktury wykład. Dorota Pylak C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.

Bardziej szczegółowo

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

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1 Remote Procedure Call external Data Representation trójwymiarowa identyfikacja procedur (nr programu, nr wersji, nr procedury) protokół RPC oparty na protokołach warstwy transportowej stosu TCP/IP (TCP

Bardziej szczegółowo

external Data Representation

external Data Representation Remote Procedure Call external Data Representation Dariusz Wawrzyniak (IIPP) 1 trójwymiarowa identyfikacja procedur (nr programu, nr wersji, nr procedury) protokół RPC oparty na protokołach warstwy transportowej

Bardziej szczegółowo

Szablony. Szablony funkcji

Szablony. Szablony funkcji Szablony Szablony sa mechanizmem ponownego wykorzystania kodu (reuse) W przypadku funkcji ponownie wykorzystany jest algorytm W przypadku klas ponownie wykorzystane sa wszystkie skladowe Deklaracja szablonu

Bardziej szczegółowo

Struktury, unie, formatowanie, wskaźniki

Struktury, unie, formatowanie, wskaźniki Struktury, unie, formatowanie, wskaźniki 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12, na rzecz swoich 143209 poddanych uchwalił dekret o 20 procentowej

Bardziej szczegółowo

6 Przygotował: mgr inż. Maciej Lasota

6 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 6 1/5 Język C Instrukcja laboratoryjna Temat: Wskaźniki. 6 Przygotował: mgr inż. Maciej Lasota 1) Wskaźniki. Wskaźniki (zmienne wskaźnikowe) stanowią jedno z fundamentalnych pojęć języka

Bardziej szczegółowo

Uzupełnienie dot. przekazywania argumentów

Uzupełnienie dot. przekazywania argumentów Uzupełnienie dot. przekazywania argumentów #include #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct nowa x); reprezentant.k=17;

Bardziej szczegółowo

Wskaźniki w C. Anna Gogolińska

Wskaźniki w C. Anna Gogolińska Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik

Bardziej szczegółowo

Podstawy programowania w języku C i C++

Podstawy programowania w języku C i C++ Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

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

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia Zmienna: [] [ '[' ']' ] ['=' ]; Zmienna to fragment pamięci o określonym

Bardziej szczegółowo

Programowanie strukturalne i obiektowe

Programowanie strukturalne i obiektowe Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie

Bardziej szczegółowo

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

Języki i metodyka programowania. Wskaźniki i tablice. Wskaźniki i tablice. Zmienna1 Zmienna2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Zmienna to fragment pamięci o określonym rozmiarze identyfikowany za pomocą nazwy, w którym może być przechowywana

Bardziej szczegółowo

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

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 typy złożone- tablice wielowymiarowe, struktury Wykład 6 Deklarowanie wskaźników nazwa_typu * nazwa_wskaznika; WSKAŹNIKI: PRZYPOMNIENIE Przypisywanie wskaźnikom wartości double * pn = &zmienna_typu_double;

Bardziej szczegółowo

Struktury. Przykład W8_1

Struktury. Przykład W8_1 Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla

Bardziej szczegółowo

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

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-19 Pętla while Pętla while Pętla

Bardziej szczegółowo

Języki programowania - podstawy

Języki programowania - podstawy Języki programowania - podstawy Andrzej Dudek Wydział Techniczno Informatyczny W Jeleniej Górze Dudek A. Informatyka przemysłowa tendencje i wyzwania 26.10.2015 1 /24 Algorytm określony sposób rozwiązania

Bardziej szczegółowo

MATERIAŁY DO ZAJĘĆ II

MATERIAŁY DO ZAJĘĆ II MATERIAŁY DO ZAJĘĆ II Zmienne w C# Spis treści I. Definicja zmiennej II. Hierarchia typów (CTS) III. Typy wbudowane IV. Deklaracja zmiennych V. Literały VI. Pobieranie i wypisywanie wartości zmiennych

Bardziej szczegółowo

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia

Bardziej szczegółowo

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

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ w C Zak lad Chemii Teoretycznej UJ 30 listopada 2006 1 2 3 Inicjalizacja zmiennych Zmienne jednowymiarowe można inicjować przy ich definicji. #include i n t x = 1 ; l o n g day = 1000L * 60L

Bardziej szczegółowo

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Podstawy programowania C dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Tematy Struktura programu w C Typy danych Operacje Instrukcja grupująca Instrukcja przypisania Instrukcja warunkowa Struktura

Bardziej szczegółowo

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

Podstawy programowania. Wykład 2 Zmienne i obsługa wejścia/wyjścia. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 2 Zmienne i obsługa wejścia/wyjścia Krzysztof Banaś Podstawy programowania 1 Programowanie Programowanie typowe kroki zapis kodu źródłowego w pliku tekstowym kompilacja usuwanie

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

Funkcja (podprogram) void

Funkcja (podprogram) void Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji

Bardziej szczegółowo

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

Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia Krzysztof Banaś Podstawy programowania 1 Typy danych Podstawowe wbudowane typy danych języka C: _Bool 0 i 1 (C99) znaki (char) 7

Bardziej szczegółowo

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

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

Programowanie Komputerów

Programowanie Komputerów Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 17 1. Typy i zmienne Jak wiemy, komputer

Bardziej szczegółowo

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

nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof 1 adres zmiennej Do pobrania adresu zmiennej używa się jednoargumentowego operatora & (uwaga & może mieć także znaczenie dwuargumentowego

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje

Bardziej szczegółowo

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia Język ANSI C część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia najbardziej podstawowe operacje na wskaźnikach int x = 1, y = 2, Tab[10]; int *ip; // czy

Bardziej szczegółowo

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

Podstawy algorytmiki i programowania - wykład 4 C-struktury 1 Podstawy algorytmiki i programowania - wykład 4 C-struktury Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy

Bardziej szczegółowo

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

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1 Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).

Bardziej szczegółowo

Typy danych. Przemysław Gawroński D-10, p lutego Wykład 1. (Wykład 1) Typy danych 25 lutego / 11

Typy danych. Przemysław Gawroński D-10, p lutego Wykład 1. (Wykład 1) Typy danych 25 lutego / 11 Typy danych Przemysław Gawroński D-10, p. 234 Wykład 1 25 lutego 2019 (Wykład 1) Typy danych 25 lutego 2019 1 / 11 Outline 1 Literatura 2 Programowanie proceduralne 3 Podstawowe typy danych (Wykład 1)

Bardziej szczegółowo

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 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 i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami

Bardziej szczegółowo

tablica: dane_liczbowe

tablica: dane_liczbowe TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica

Bardziej szczegółowo

Języki i paradygmaty programowania

Języki i paradygmaty programowania Języki i paradygmaty programowania Instytut Teleinformatyki ITI PK Kraków marzec 2012 Spis rzeczy 1 Operatory w C/C++ Operatory Operatory w C/C++ operator - rodzaj funkcji wbudowanej w język; różnica notacja

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 8/9 Wykład nr 4 (.3.9) Rok akademicki 8/9, Wykład nr 4 /33 Plan wykładu

Bardziej szczegółowo

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Służą do łatwiejszej kontroli nad stałymi Ustawianie parametrów o ściśle określonym zbiorze wartości

Bardziej szczegółowo

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

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom). Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154

Bardziej szczegółowo

Laboratorium 5: Tablice. Wyszukiwanie binarne

Laboratorium 5: Tablice. Wyszukiwanie binarne Wojciech Myszka Laboratorium 5: Tablice. Wyszukiwanie binarne 2016-05-07 09:02:17 +0200 1. Tablice Do tej pory nie było potrzeby odwoływać się do zmiennych złożonych. Programy były bardzo proste i korzystały

Bardziej szczegółowo

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

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli) Wykład 7 Abstrakcyjne typy danych słownik (lista symboli) Definicja słownika: Słownik (tablica lub lista symboli) to struktura danych zawierająca elementy z kluczami, która pozwala na przeprowadzanie dwóch

Bardziej szczegółowo

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze Podstawy Informatyki Metalurgia, I rok Wykład 3 Liczby w komputerze Jednostki informacji Bit (ang. bit) (Shannon, 1948) Najmniejsza ilość informacji potrzebna do określenia, który z dwóch równie prawdopodobnych

Bardziej szczegółowo

Stałe, tablice dynamiczne i wielowymiarowe

Stałe, tablice dynamiczne i wielowymiarowe Stałe, tablice dynamiczne i wielowymiarowe tylko do odczytu STAŁE - CONST tablice: const int dni_miesiaca[12]=31,28,31,30,31,30,31,31,30,31,30,31; const słowo kluczowe const sprawia, że wartość zmiennej

Bardziej szczegółowo

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

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale

Bardziej szczegółowo

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

// Liczy srednie w wierszach i kolumnach tablicy dwuwymiarowej // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib. Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy

Bardziej szczegółowo

Stałe i zmienne znakowe. Stała znakowa: znak

Stałe i zmienne znakowe. Stała znakowa: znak Stałe i zmienne znakowe. Stała znakowa: znak Na przykład: a, 1, 0 c Każdy znak jest reprezentowany w pamięci przez swój kod. Kody alfanumerycznych znaków ASCII to liczby z przedziału [32, 127]. Liczby

Bardziej szczegółowo

Wskaźniki. Informatyka

Wskaźniki. Informatyka Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą

Bardziej szczegółowo

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 8 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Podział kodu programu Struktury definiowanie struktur

Bardziej szczegółowo

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

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 12 Struktury, unie, pola bitowe 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Struktury 2 Struktury Struktury to złożone typy danych

Bardziej szczegółowo