Pascal -> striktní typová kontrola JAK JI OBEJÍT?? ---------------------------------- Typová kontrola: - zvýšení přehlednosti a průzračnosti - pomáhá psát optimální algoritmy - někdy komplikuje zápis Obcházení typové kontroly: 1. Chápání identického úseku paměti různými způsoby var A: shortint; begin A:=-109; write(byte(A)); Přetypování -- uživatel je odpovědný za výsledek type mnozina = set of 0..47; var R: real; i: byte; begin readln(R); for i:=0 to 47 do if i in mnozina(R) then write('1') else write('0'); ------------------- 2. Typové konverze str, val, implicitní: R := B ------------------ 3. Obecný ukazatel P: pointer; GetMem(P,1); readln(real(P^)); Variantní záznam record A: byte; case B: Boolean of false: (R: real); true: (M: mnozina) end; zaznam = record case boolean of false: (R: real); true: (M: mnozina) end; var Z:zaznam; begin readln(Z.R); for I:=0 to 47 do if I in Z.M then ... Soubory bez udání typu ---------------------- var F: file of char; B: string; assign(F,'neco.txt'); reset(F); read(F,B[4]); close(F); reset(F); seek(F,6); write(F,B[5]); rewrite(F); write(...); seek(F,1); read(F,...) var F: file; assign(F,'bin.bin'); reset(F,1); blockread(F,V,200,N); rewrite(F,N); blockwrite(F,V,100); close(f); seek(F,10); var G:file; begin assign(G,....); reset(G,1); seek(G,10); reset(G,2); seek(G,10); ------------------------- Příklad "databázového" souboru: var DB: file; nazev: string[8]; delka: byte; pocet: byte; begin assign(DB,'data.db'); rewrite(DB,1); pocet:=0; blockwrite(DB,Pocet,1); while not eof do begin inc(pocet); readln(nazev,delka); blockwrite(DB,nazev[1],8); blockwrite(DB,delka,1); end; seek(DB,1); blockwrite(DB,pocet,1); ... close(DB); end.