Post

Visualizzazione dei post da dicembre, 2015

APPENDere in Turbo Pascal per CP/M

Immagine
di  Francesco Sblendorio Prerequisiti tecnici: conoscenza della gestione dei file di testo in Turbo Pascal Consideriamo un programma scritto in  Turbo Pascal 3  che si occupi, in sequenza, di: Aprire un file di testo in scrittura, e scriverci una riga Aprire lo stesso file in  append , quindi scrittura in coda, e aggiungere una seconda riga Aprire lo stesso file in lettura e stamparne il contenuto a video Per esempio… PROGRAM TestAppend; VAR f: TEXT ; s: STRING [80]; BEGIN ASSIGN (f,'test.txt'); REWRITE (f); WRITELN (f,'First row'); CLOSE (f); APPEND (f); WRITELN (f,'Second row'); CLOSE (f); RESET (f); WHILE NOT EOF (f) DO BEGIN READLN (f,s); WRITELN (s) END ; CLOSE (f); END . Se compilato in  Turbo Pascal 3  per  MS-DOS , fila tutto liscio. Se compilato invece in  Turbo Pascal 3  ma sotto  CP/M  in fase di compilazione riceveremo il seguente messaggio di errore: Error 41: Unknown identifier or syntax error. Press <ESC>

Short-circuit boolean evaluation: mai dare niente per scontato

Immagine
di  Francesco Sblendorio Leggete questo segmento di codice java: if (list != null && list.size()>0) { doSomething(); } Ciò che fa è molto semplice: controlla se la collezione  list  è non nulla e con almeno un elemento e in tal caso esegue un metodo chiamato  doSomething() . La condizione booleana è un  AND  di due espressioni, e l’ordine in cui vengono calcolate non è affatto indifferente: viene valutata per prima  list != null , e se questa risulta già essere  FALSE , l’intera condizione viene fatta valere  FALSE  senza nemmeno valutare  list.size()>0 , anche perché in tal caso  list  sarebbe uguale a  null , quindi qualunque chiamata a metodo su  list  finirebbe in una  NullPointerException . Un discorso analogo viene fatto per l’operazione di  OR : se il primo operando risulta già essere  TRUE , l’espressione viene fatta valere  TRUE  senza valutare il secondo operando. Questa caratteristica (la valutazione parziale delle espressioni booleane) si chiama  Short-circ