Typy, operatory, wyrażenia. Wejście i wyjście.
Typy, operatory, wyrażenia Zmienna: [<modyfikator>] <typ> <nazwa> [ '[' <krotność>']' ] ['=' <wartosćdomyślna>]; Zmienna to fragment pamięci o określonym rozmiarze identyfikowany za pomocą nazwy, w którym może być przechowywana wartość określonego typu. int i; int j = 10; int k,l; char linia [10]; long int z; long y;
Typy, operatory, wyrażenia Wyrażenia stałe: Zawierają wyłącznie wartości stałe i są wyliczane w fazie kompilacji #define Rozmiar 100; int i [Rozmiar];
Typy, operatory, wyrażenia Stałe napisowe: I am a string. //a null string
Typy, operatory, wyrażenia Stałe wyliczeniowe: enum boolean {NO,YES} Pierwsza nazwa odpowiada wartości 0 druga 1. enum months {JAN=1,FEB,MAR,APR,MAY,JUN,JUL, AUG,SEP,OCT,NOV,DEC} enum wartosci {iks='x',igrek='y'}
Typy, operatory, wyrażenia Operatory arytmetyczne: + dodawanie, odejmowanie, * mnożenie, / dzielenie, % dz. modulo Operatory relacyjne: <, >, <=, >=, ==,!= Operatory logiczne: && logiczne i (AND) logiczne lub (OR)! negacja (NOT) z=++x; x=x+1;z=x; Operatory zwiększania i zmniejszania: ++, z=x++; z=x;x=x+1; Operatory bitowe: & bitowe i (AND), bitowe lub (OR), ^ różnica symetryczna (EXCLUSIVE OR, XOR), << przesunięcie w lewo, >> przesunięcie w prawo, ~ dopełnienie jedynkowe
Typy, operatory, wyrażenia Konwersja typów: Typ wyniku zależy od typów wartości danego wyrażenia Jeżeli jeden jest long double to wszystkie są przekształcane do long double Inaczej jeżeli jeden jest double to wszystkie są przekształcane do double Inaczej jeżeli jeden jest typu float to wszystkie są przekształcane do float Inaczej wartości char i short są przekształcane do int lub gdy jeden argument jest typu long wtedy do long
Typy, operatory, wyrażenia Wymuszona konwersja typów: (typ) wyrażenie
Typy, operatory, wyrażenia Operatory przypisania: zmienna = zmienna operatory wyrażenie; Skrócona forma: zmienna operator = wyrażenie; gdzie operatorem może być: + * / % << >> & ^
Typy, operatory, wyrażenia Operatory warunkowe: if (x!=0) z = ( x!= 0 )? 1 / x : 0; z=1/x; else z=0; Składnia: <zmienna> = <wyrażenie1>? <wyrażenie2> : <wyrażenie3>;
Typy, operatory, wyrażenia Operator ( ) [ ] ->.! ~ ++ -- - (type) * & sizeof * / % + - << >> < <= > >= ==!= & ^ &&?: = += -= *= /= %= ^= <<= >>=,
Wejście i wyjście Plik biblioteczny operacji wejścia wyjścia to stdio.h. #include <stdio.h> int getchar(void); - funkcja odczytuje znak i zwraca jego kod. int c = getchar ( ); void putchar(int c); - funkcja wypisuje znak o podanym kodzie. putchar ( int c ); Standardowe wejście klawiatura, wyjście monitor.
Wejście i wyjście Formatowanie wyjścia. int printf(const char * format, arg1, arg2,...); format to ciąg znaków zawierający przekształcenia definiujące sposób wyświetlania wartości przekazywanych jako argumenty. Przekształcenie rozpoczyna się od znaku % i kończy znakiem charakterystycznym dla danego przekształcenia specyfikatorem: %[flaga][długość][.precyzja][rozmiar]specyfikator
Wejście i wyjście flagi: wyrównanie do lewej + wyświetlenie znaku liczby (+ lub ) [spacja] jeśli nie będzie wyświetlony znak pozostanie miejsce puste # dla o, x, X odpowiednio 0, 0x, 0X wyświetlane dla wartości!=0 0 dla f, e, E zawsze będzie wyświetlana kropka dla g, G podobnie jak dla E tylko nie likwiduje zer po przecinku wyrównanie wartości do lewej uzupełniając zerami długość: wartość definiująca minimalną liczbę znaków precyzja: wartość określająca liczbę cyfr po przecinku rozmiar: h liczba krótka short (tylko dla i, d, o, u, x, X) l liczba długa long (tylko dla i, d, o, u, x, X) L liczba podwójna długa long (tylko dla e, E, f, g, G)
Wejście i wyjście Znak kończący definicję przekształcenia specyfikator, określa typ wyświetlanej wartości: d, i int liczba całkowita, dziesiętna ze znakiem x, X int liczba szesnastkowa bez znaku (małe i duże litery) o int liczba ósemkowa baz znaku u int liczba dziesiętna bez znaku f double liczba zmiennoprzecinkowa e, E double liczba zmiennoprzecinkowa w zapisie naukowym g, G double liczba zmiennoprzecinkowa format naukowy lub zwykły c int znak s char* łańcuch znaków p void* wskaźnik
Wejście i wyjście Formatowanie wejścia: int scanf(const char * format, arg1, arg2,...); Poza polem format argumenty muszą być wskaźnikami. Format: %[*][długość][modyfikator]typ * wartość jest czytana z stdin ale nie zapisywana do zmiennej długość maksymalna liczba znaków modyfikator: h l L short int long int long double
Wejście i wyjście Znak kończący definicję przekształcenia typ wartości: c char* znak d int* liczba całkowita e, E, f, g, G float* liczba zmiennoprzecinkowa o int* liczba ósemkowa s char* lańcuch znaków u unsigned int* liczba całkowita bez znaku x, X int* liczba szesnastkowa
Wejście i wyjście Obsługa plików: FILE * filepointername; Funkcja otwierająca plik: FILE * fopen (char * filename, char * mode); mode: r odczyt (plik musi istnieć) + z zapisem t tekst w zapis + z odczytem b liczby a dopisanie (plik musi istnieć) + z odczytem
Wejście i wyjście Funkcja zamykająca plik: int fclose (FILE * filepointername); Sformatowany dostęp do pliku: int fprintf (FILE * filepointername, const char * format, arg1, arg2,...); int fscanf (FILE * filepointername, const char * format, arg1, arg2, );
Wejście i wyjście #include <stdio.h> int main(int argc, char*argv[]) { int x; FILE * fp; fp=fopen( plik.txt, wt ); fprintf(fp, Hello World.\n ); x=10; fprintf(fp, i=%i,x); fclose(fp); fp=fopen( plik.txt, rt ); fscanf(fp, %i,&x); printf( x=%i\n,x); fclose(fp); return 0; }