, Programowanie, uzupełnienie notatek: dr Jerzy Białkowski
, 1 2 3 4
, Wczytywanie liczb
, Wczytywanie liczb 1 #include <s t d i o. h> 2 #include < s t d l i b. h> 3 4 int main ( ) { 5 int rozmiar, numer = 0 ; 6 7 scanf ( "%d", &rozmiar ) ; 8 float tab [ rozmiar ], liczba ; 9 10 while ( numer < rozmiar ) { 11 scanf ( "%f", &liczba ) ; 12 tab [ numer++] = liczba ; 13 }/* w h i l e */ 14 15 while ( numer ) { 16 printf ( "%f\n", tab[ numer ] ) ; 17 } 18 return 0 ; 19 }
, malloc, realloc i free Funkcja malloc zwraca wskaźnik do obszaru pamięci dla obiektu o rozmiarze rozmiar. void *malloc(size_t rozmiar);
, malloc, realloc i free Funkcja malloc zwraca wskaźnik do obszaru pamięci dla obiektu o rozmiarze rozmiar. void *malloc(size_t rozmiar); Funkcja malloc zwraca wskaźnik do obszaru pamięci dla tablicy ilosc elementów, z których każdy ma rozmiar rozmiar i zeruje go. void *calloc(size_t ilosc, size_t rozmiar);
, malloc, realloc i free Funkcja malloc zwraca wskaźnik do obszaru pamięci dla obiektu o rozmiarze rozmiar. void *malloc(size_t rozmiar); Funkcja malloc zwraca wskaźnik do obszaru pamięci dla tablicy ilosc elementów, z których każdy ma rozmiar rozmiar i zeruje go. void *calloc(size_t ilosc, size_t rozmiar); Funkcja realloc zmienia rozmiar pamięci dla obiektu wskazanego przez wsk. void *realloc(void *wsk, size_t rozmiar);
, malloc, realloc i free Funkcja malloc zwraca wskaźnik do obszaru pamięci dla obiektu o rozmiarze rozmiar. void *malloc(size_t rozmiar); Funkcja malloc zwraca wskaźnik do obszaru pamięci dla tablicy ilosc elementów, z których każdy ma rozmiar rozmiar i zeruje go. void *calloc(size_t ilosc, size_t rozmiar); Funkcja realloc zmienia rozmiar pamięci dla obiektu wskazanego przez wsk. void *realloc(void *wsk, size_t rozmiar); Funkcja free zwalnia obszar pamięci wskazany przez wsk. void free(void *wsk);
, 1 #include <s t d i o. h> 2 #include < s t d l i b. h> /* malloc, r e a l l o c, f r e e */ 3 int main ( ) { 4 size_t rozm = 1 0, numer = 0 ; 5 float * tab, * tmp, liczba ; 6 7 tab = ( float *) malloc ( rozm * sizeof ( float ) ) ; 8 9 while ( scanf ( "%f", &liczba )==1){ 10 if ( numer==rozm ) { 11 tmp = ( float *) 12 realloc ( tab, ( rozm *=2)*sizeof (* tab ) ) ; 13 tab = tmp ; 14 }/* i f */ 15 tab [ numer++] = liczba ; 16 }/* w h i l e */ 17 while ( numer ) 18 printf ( "%f\n", tab[ numer ] ) ; 19 20 free ( tab ) ; 21 return 0 ; 22 }
, Struktura jest obiektem złożonym z jednej lub kilku zmiennych różnych typów. struct nazwa { typ1 pole1; typ2 pole2;... } instancje; Uwaga: można opuścić nazwę nazwa (i mamy wówczas do czynienia ze strukturą anonimową) lub instancje (zmienne).
, 1 #include <s t d i o. h> 2 3 struct wektor { 4 double x ; 5 double y ; 6 } ; 7 8 int main ( ) { 9 struct wektor v1 = { 2, 3 } ; 10 11 struct wektor v2 ; 12 v2. x = 2; 13 v2. y = 3 ; 14 15 return 0 ; 16 }
, 1 #include <s t d i o. h> 2 #include <math. h> /* s q r t ( ) */ 3 4 struct wektor { 5 double x ; 6 double y ; 7 } ; 8 9 double dlugosc ( struct wektor * v ) { 10 return sqrt ( v >x * v >x + v >y * v >y ) ; 11 } 12 13 int main ( ) { 14 struct wektor v1={ 3,4}, *v2 ; 15 v2 = &v1 ; 16 printf ( "%f\n", v1. x ) ; 17 printf ( "%f\n", (* v2 ). x ) ; 18 printf ( "%f\n", v2 >x ) ; 19 printf ( "Dlugosc wektora: %f\n", dlugosc ( v2 ) ) ; 20 21 return 0 ; 22 }
, printf, scanf, fopen, fclose, fprintf, fscanf,... Zobacz Kernighan, Ritchie Język ANSI C.
, 1 #include <s t d i o. h> 2 3 int main ( ) 4 { 5 printf ( "Znaki %c %c \n", 'c', 70) ; 6 printf ( "Liczby rzeczywiste: %d %ld\n", 2010, 123456789 L ) ; 7 printf ( "Wypelnianie miejsca: %10d \n",2010) ; 8 printf ( " Wypelnianie miejsca zerami: %010d \n ", 2010) ; 9 printf ( " Liczby w roznych systemach: %d %x %o \n", 100, 100, 100) ; 10 printf ( " Liczby rzeczywiste: %3.2f %+.0e %E \ n", 3. 1 4 1 6, 33247382478374.1418378734738476,3.1416) ; 11 printf ( "%s \n", "Ala ma kota" ) ; 12 return 0 ; 13 }
, strcpy, strncpy, strcmp, strncmp, strlen,...
, atoi, atof, atol, rand, srand, malloc,, system,...
, sin, cos, tan, asin, acos, atan, exp, log, log10, pow, sqrt, floor,...
, Inne użyteczne konstrukcje języka C ˆ typy wyliczeniowe (enum) zastępują definicje (#define) ˆ unie (mają składnię podobną do struktur, zamiast słowa struct używamy union) wszystkie jej pola rozpoczynają się w tym samym obszarze pamięci ˆ o zmiennej liczbie parametrów (np. printf, scanf) ich deklaracje używają konstrukcji..., a implementacje używają pewnych makr ˆ zmienne zewnętrzne (których deklaracja poprzedzona jest słowem extern) używane, gdy definicja zmiennej znajduje się np. w innym pliku ˆ zmienne statyczne (których deklaracja poprzedzona jest słowem static) inicjalizowane są tylko raz, niezależnie od miejsca deklaracji (też dla funkcji) ˆ definiowanie typów (typedef) ˆ metody przekazywania argumentów do funkcji ˆ przez wartość ˆ przez adres
, Dziękuję za uwagę.