Programowanie Proceduralne

Podobne dokumenty
Wstęp do programowania 1

Programowanie Proceduralne

Programowanie Proceduralne

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

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

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

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

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

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

2 Przygotował: mgr inż. Maciej Lasota

( wykł. dr Marek Piasecki )

Język C zajęcia nr 11. Funkcje

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

Programowanie strukturalne i obiektowe

Podstawy programowania w języku C i C++

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

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

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

Wykład 1

Programowanie Procedurale

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

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

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

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

Programowanie w języku C++

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

typ_zwracanej_wartości nazwa_funkcji(lista deklaracji argumentów) { ciało(treść) funkcji return Val; //zwracana wartość }

Wstęp do programowania

PROGRAMOWANIE w C prolog

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

Podstawy programowania C. dr. Krystyna Łapin

Język ludzki kod maszynowy

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

Instrukcje sterujące. Programowanie Proceduralne 1

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

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Uzupełnienie dot. przekazywania argumentów

Wstęp do programowania 1

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

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

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

Zmienne, stałe i operatory

ROZDZIAŁ 2. Operatory

Opisy funkcji /html_node/libc_528.html

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

Wstęp do Programowania 2

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

Dariusz Chaberski. UMK Toruń

Język C - podstawowe informacje

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

Wstęp do Programowania, laboratorium 02

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

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

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

Wykład Struktury i unie Deklarowanie i definiowanie struktur Dostęp do pól struktur Pola bitowe

Struktury Struktura polami struct struct struct struct

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

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

Wykład 2

Microsoft IT Academy kurs programowania

Struktury - wprowadzenie

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

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

6 Przygotował: mgr inż. Maciej Lasota

dr inż. Jarosław Forenc

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

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

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

Języki programowania - podstawy

Język ANSI C. Pierwsze starcie. Programowanie Proceduralne 1

Stuck in the loop. Sterowanie. Marcin Makowski. 29 października Zak lad Chemii Teoretycznej UJ

Język ANSI C. Pierwsze starcie. Programowanie Proceduralne 1

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Struktury typ definiowany przez uŝytkownika.

Spis treści JĘZYK C - STRUKTURY, POLA BITOWE, UNIE. Metodyki i techniki programowania. Instrukcja do pracowni specjalistycznej z przedmiotu

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

IX. Wskaźniki.(3 godz.)

Spis treści JĘZYK C - INSTRUKCJA SWITCH, OPERATORY BITOWE. Metodyki i techniki programowania. Instrukcja do pracowni specjalistycznej z przedmiotu

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Podstawy programowania 1

Podstawy programowania w języku C

dr inż. Jarosław Forenc

Programowanie obiektowe

Proste algorytmy w języku C

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

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

Wstęp do Informatyki

Programowanie w elektronice: Podstawy C

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

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Materiały pomocnicze do wykładu 3 - Elementy języka Java

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

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

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

Język C zajęcia nr 5

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

1 Podstawy c++ w pigułce.

Wskaźniki w C. Anna Gogolińska

. Podstawy Programowania 1. Struktury i unie. Arkadiusz Chrobot. 7 grudnia 2017

Wstęp do programowania

Transkrypt:

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, który pozwala przechowywać różne rodzaje danych w tym samym obszarze pamięci (ale nie równocześnie). Dzięki uniom można na przykład utworzyć tablice jednostek o jednakowej długości, z których każda może przechowywać dane innego typu. Definicja unii jest analogiczna do definicji struktury, z wyjatkiem tego, że stosowane jest słowo kluczowe union. Kompilator przydziela tyle miejsca dla unii, aby mogła ona przechowywać największa ze zmiennych będac a częścia szablonu unii.

Przyklady union magazyn { int cyfra; double l_rzeczywista; char znak; ; Trzy unie typu magazyn /*unia typu magazyn */ union magazyn a; /*tablica 10 unii typu magazyn */ union magazyn tab[10]; /* wskaźnik do unii typu magazyn */ union magazyn *wu;

Przyklady Rozmiary unii #include <stdio.h> #include <stdlib.h> union magazyn { int cyfra; double l_rzeczywista; char znak; ; int main(void) { system("clear"); union magazyn a; printf("union magazyn a: %ld bajtow \n", sizeof(a)); union magazyn tab[10]; printf("union magazyn tab[10]: %ld bajtow \n", sizeof(tab)); union magazyn *wu; printf("union magazyn *wu: %ld bajtow \n",sizeof(wu)); return 0;

Przyklady Wykonanie union magazyn a: 8 bajtow union magazyn tab[10]: 80 bajtow union magazyn *wu: 8 bajtow

Inicjalizacja Unie moga być inicjalizowane, ale zasady sa nieco inne niż w przypadku struktur. Istnieja dwie możliwości: nadanie unii wartości innej unii tego samego typu lub inicjalizacja pierwszego składnika unii. Pamiętanie o tym, jaki rodzaj informacji znajduje się w unii w każdym momencie, jest obowiazkem programisty. Dostęp do składowych unii odbywa sie w taki sam sposób jak w strukturach, czyli za pomoca operatora przynależności (kropki,.) lub operatora przynależności pośredniej (strzałki, >).

Inicjalizacja #include <stdio.h> #include <stdlib.h> union magazyn { int cyfra; double l_rzeczywista; char znak; ; void druk(const union magazyn); int main(void) { system("clear"); union magazyn a; a.znak = A ; union magazyn b=a; union magazyn c={777; puts("a: "); druk(a); puts("b: "); druk(b); puts("c: "); druk(c); union magazyn d = { znak : D ; puts("d: "); druk(d); return 0; void druk(const union magazyn a) { printf("[%d -- %lf -- %c] \n", a.cyfra, a.l_rzeczywista, a.znak);

Inicjalizacja Wykonanie a: [-974036927 -- 0.000000 -- A] b: [-974036927 -- 0.000000 -- A] c: [777 -- 0.000000 -- ] d: [68 -- 0.000000 -- D]

Inicjalizacja unia.c #include <stdio.h> #include <stdlib.h> union Test { int i; float f; ; int main(void) { system("clear"); union Test t; printf("union Test {\n int i;\n float f;\n;\n\n"); printf("union Test t;\n\n"); printf("rozmiar unii t = %ld bajty\n\n", sizeof(t)); printf("po przypisaniu wartosci 1024.0 do pola f\n"); t.f = 1024.0; printf("pole i = %d\tpole f = %f\n\n", t.i, t.f); t.i = 1234567890; printf("po przypisaniu wartosci 1234567890 do pola i\n"); printf("pole i = %d\tpole f = %f\n\n", t.i, t.f); return 0;

Inicjalizacja Wykonanie union Test { int i; float f; ; union Test t; Rozmiar unii t = 4 bajty Po przypisaniu wartosci 1024.0 do pola f Pole i = 1149239296 Pole f = 1024.000000 Po przypisaniu wartosci 1234567890 do pola i Pole i = 1234567890 Pole f = 1228890.250000

Struktury a unie, enum #include <stdio.h> #include <stdlib.h> enum symboltype {INT, DOUBLE, CHAR; union Data {int i; double d; char c;; struct TableEntry { char *name; enum symboltype type; union Data data; ; int main(void) { struct TableEntry symtab[] = { {"ch", CHAR, {c : @, {"counter", INT, {i : 0, {"pi", DOUBLE, {d : 3.1417, {"x", 5, {8 ; int size = sizeof(symtab) / sizeof(struct TableEntry); for (int k = 0; k < size; ++k) { printf("%s\t\t", symtab[k].name); switch (symtab[k].type) { case CHAR: printf("%c\n", symtab[k].data.c); break; case DOUBLE: printf("%f\n", symtab[k].data.d); break; case INT: printf("%d\n", symtab[k].data.i); break; default: printf("nieznany typ (%d), element %d\n", symtab[k].type, k); break; return 0;

Struktury a unie, enum Wykonanie ch @ counter 0 pi 3.141700 x Nieznany typ (5), element 3

Przykład 1 #include <stdio.h> typedef float Cena; typedef Cena Notowania[10000]; typedef int T; typedef T tablica[20]; int main(void) { Notowania wig = {0,1,2; printf("%.2f\n", wig[0]); wig[0] = 1000; printf("%.2f\n", wig[0]); tablica a; for(int i=0; i<10;i++) a[i]=i; for(int i=0; i<10;i++) printf("%d\t",a[i]); printf("\n"); return 0;

Przykład 1 Wykonanie 0.00 1000.00 0 1 2 3 4 5 6 7 8 9

Przykład 2 #include <stdio.h> #include <stdlib.h> typedef enum {INT, DOUBLE, CHAR symboltype; typedef union {int i; double d; char c; Data; typedef struct {char *name; symboltype type; Data data; TableEntry; int main(void) { TableEntry symtab[] = { {"ch", CHAR, {c: @, {"counter", INT, {i : 0, {"pi", DOUBLE, {d : 3.1417, {"x", 5, {8 ; int size = sizeof(symtab) / sizeof(tableentry); for (int k = 0; k < size; ++k) { printf("%s\t\t", symtab[k].name); switch (symtab[k].type) { case CHAR: printf("%c\n", symtab[k].data.c); break; case DOUBLE: printf("%f\n", symtab[k].data.d); break; case INT: printf("%d\n", symtab[k].data.i); break; default: printf("nieznany typ (%d), element %d\n", symtab[k].type, k); break; return 0;

Przykład 2 Wykonanie ch @ counter 0 pi 3.141700 x Nieznany typ (5), element 3

Zbiór operatorów - alternatywa ^ - różnica symetryczna & - koniunkcja << - logiczne przesuniecie w lewo >> - logiczne przesuniecie w prawo ~ - negacja

Przykład #include <stdio.h> // oblicza ile bitow zajmuje liczba typu int int wordlength(); // pobierz n bitów x od pozycji p unsigned getbit(unsigned x, int p); // ustaw na 1 bit na pozycji p unsigned setbiton(unsigned x, int p); // ustaw na 0 bit na pozycji p unsigned setbitoff(unsigned x, int p); // zaneguj bity unsigned negatebit(unsigned x, int p); // pobierz n bitów x od pozycji p unsigned getbits(unsigned x, int p, int n);

Przykład int main(void) { unsigned x; printf("podaj nieujemn liczbe calkowita: "); scanf("%u", &x); int n = wordlength(); unsigned w = getbits(x, 1, 3); printf("\nbits(%u, 1, 3) = %u\n\n", x, w); for (int k = n - 1; k >= 0; --k) { printf("%d", getbit(x, k)); printf("\n\n"); return 0;

Przykład int wordlength(){ unsigned x = ~0; int n = 0; while (x!= 0) { x >>= 1; ++n; return n; // sizeof(unsigned) == size(int)

Przykład unsigned getbit(unsigned x, int p){ return (x >> p) & 0x1; unsigned setbiton(unsigned x, int p){ return x (1 << p); unsigned setbitoff(unsigned x, int p){ return x & ~(1 << p); unsigned negatebit(unsigned x, int p){ return x ^ (1 << p); unsigned getbits(unsigned x, int p, int n){ return (x >> p) & ~(~0 << n);

Przykład Wykonanie Podaj nieujemn liczbe calkowita: 8 bits(8, 1, 3) = 4 00000000000000000000000000001000

Przykład Wykonanie Podaj nieujemn liczbe calkowita: 255 bits(255, 1, 3) = 7 00000000000000000000000011111111

Przykład Wykonanie Podaj nieujemn liczbe calkowita: 45 bits(45, 1, 3) = 6 00000000000000000000000000101101

Wykonanie #include <stdio.h> int main(void) { double a; a = 3.14; printf("%lg\n", a); a = (a++, 14, 2*a); printf("%lf\n", a); return 0; Wynik 3.14 8.280000