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++) Tiny ompiler (T) MinGW (Minimalistic GNU for Windows) ygwin Borland ++ Microsoft Visual ++ { komentarz (* komentarz *) małe i wielkie litery nierozróżnialne średnik kończy wszystkie deklaracje i definicje, nagłówki programów, procedur i funkcji, oddziela instrukcje /* komentarz */ // komentarz do końca linii małe i wielkie litery rozróżnialne średnik kończy każdą prostą instrukcję i deklarację oraz definicje stałych, typów itp. Preprocesor Słowa kluczowe $include plik $include <plik> $define log2 0.3010 $define DEBUG $ifdef DEBUG $elseif $endif #include plik #include <plik> #define log2 0.3010 #define DEBUG #undef DEBUG #ifdef DEBUG #elseif #endif and, array,, case, const, div, do, downto, else, end, file, for, function, goto, if, in, label, mod, nil, not, of, or, packed, procedure, program, record, repeat, set, then, to, type, until,, while, with auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while #error komunikat #define max(a,b) (a>b)?(a):(b) 1
Budowa programu Zagnieżdżanie procedur i funkcji program nazwa_programu; { deklaracje zmiennych procedure { deklaracje procedur function { deklaracje funkcji { ciało programu end. #include <stdio.h> int funkcja // definicja funkcji int main() { int // deklaracje zmiennych return 0; procedure ala(); procedure ola(); procedure ula(); end; { ula { ola end; { ola { ala end; { ala Brak! Instrukcja grupująca (złożona) Instrukcja przypisania instrn end { instrn; zmienna := wyrażenie inc(n) dec(n) zmienna = wyrażenie z1 = z2 = z3 = wyrażenie n++, ++n n--, --n n+=wyr n-=wyr n*=wyr n/=wyr Operatory arytmetyczne i logiczne Typ logiczny, operatory relacyjne wyr1 + wyr2 wyr1 - wyr2 wyr1 * wyr2 wyr1 div wyr2 wyr1 mod wyr2 wyr_log1 AND wyr_log2 wyr_log1 OR wyr_log2 NOT wyr_log wyr1 + wyr2 wyr1 - wyr2 wyr1 * wyr2 wyr1 % wyr2 wyr_log1 && wyr_log2 wyr_log1 wyr_log2! wyr_log typ Boolean; wartości True, False wyr1 = wyr2 wyr1 <> wyr2 wyr1 > wyr2 wyr1 >= wyr2 wyr1 < wyr2 wyr1 <= wyr2 dowolny typ liczbowy; wartości niezero, 0 wyr1 == wyr2 wyr1!= wyr2 wyr1 > wyr2 wyr1 >= wyr2 wyr1 < wyr2 wyr1 <= wyr2 2
Deklaracje zmiennych Instrukcja warunkowa po nagłówku programu lub podprogramu, przed jego ciałem (częścią wykonawczą), czyli przed możliwe na początku każdego bloku instrukcji zaraz po dowolnym nawiasie klamrowym otwierającym if warunek then instrukcja if (warunek) instrukcja; zmienna: typ; zmienna1, zmienna2: typ; typ zmienna; typ zmienna1, zmienna2; if warunek then instr1 else instr2 if (warunek) else const licznik : integer = 0; int licznik = 0; wyr? wyr1 : wyr2 Instrukcja wyboru Instrukcje pętli case wyr of et1 : et2 : else instrn; end switch (wyr) { case et1 : break; case et2 : break; default : instrn; while warunek do instrukcja repeat while (warunek) instrukcja; do instrukcja while (warunek_kontynuacji); instrn until warunek_wyjścia for zm:=wyr1 to wyr2 do instr for (zm=wyr1; zm<=wyr2; zm++) instr; Deklaracja funkcji function nazwa(lista_parametrów_formalnych): typ_zwracany; lista_parametrów_formalnych to: zmienna: typ1; zmienna1, zmienna2: typ2 Deklaracja procedury procedure nazwa_procedury (lista_parametrów_formalnych); zwrócenie wartości: nazwa := wynik; typ_zwracany nazwa(lista_parametrów_formalnych) void nazwa_procedury(lista_parametrów_formalnych) lista_parametrów_formalnych to: typ1 zmienna, typ2 zmienna1, typ2 zmienna2 zwrócenie wartości i przerwanie funkcji: return wynik; 3
Przekazywanie parametrów procedure ala (a:integer; b:integer); ala(23,x) ala(y+6,x) record pole1 : typ_pola1; pole2 : typ_pola2; pole3,pole4 : typ_pola; end; Rekord / struktura struct nazwa_struktury { typ_pola1 pole1; typ_pola2 pole2; typ_pola pole3, pole4; ; void ala( int a, int *b) ala(23,&x); ala(y+6,&x); Definicja typu type nazwa_typu_1 = definicja_typu_1 ; nazwa_typu_2 = definicja_typu_2 ; Tablice zmienna_tab : array [1..10] of typ_elementu; zmienna_tab[1] := zmienna_tab[10] typedef definicja_typu_1 nazwa_typu_1 ; typedef definicja_typu_2 nazwa_typu_2 ; typ_elementu zmienna_tab[10]; zmienna_tab[0] = zmienna_tab[9]; Napisy Wejście/wyjście napis : string[80]; pierwszy_znak := napis[1] dlugosc := length(napis) x : integer; y : char; z : string[80]; int x; char y; char z[80]; char napis[80]; write(x) write( x=,x) writeln(x) writeln(x:10) writeln printf( %d,x); printf( x=%d,x); printf( %d\n,x); printf( %10d\n,x); printf( \n ); pierwszy_znak = napis[0]; długosc = strlen(napis); write(y) write(z) printf( %c,y); printf( %s,z); read(x) scanf( %d,&x); 4
shortint byte smallint word integer cardinal longint longword int64 qword real single double extended Typy danych char unsigned char short int unsigned shor int int unsigned int long int unsigned long int (zakresy w pliku limits.h) float double 5