100 likes | 217 Views
Concetti fondamentali. 1.1 Il concetto di processo 1.2 Test e verifica di un programma 1.3 Linguaggi di programmazione e macchine astratte 1.4 Meccanismi di astrazione 1.5 Proprietà di un programma. stato iniziale. stato finale. S2. S3. S4. S5. S1.
E N D
Concetti fondamentali 1.1 Il concetto di processo 1.2 Test e verifica di un programma 1.3 Linguaggi di programmazione e macchine astratte 1.4 Meccanismi di astrazione 1.5 Proprietà di un programma
stato iniziale stato finale S2 S3 S4 S5 S1 a - - 18 18 18 6 6 6 b - - -- 30 12 12 6 6 MCD - - - - - - - - - - - - 6 tempo 1.1 traccia dell’esecuzione di un programma • int MCD (int x, int y) { • int a, b; • a = x; • b= y; • while (a != b) • if (a > b) a = a - b; • else b = b - a; • return a; • }
1.1 grafo di precedenza del processo • int MCD (int x, int y) { • int a, b; • a = x; • b= y; • while (a != b) • if (a > b) a = a - b; • else b = b - a; • return a; • } inizio a=18 b=30 b=12 a=6 b=6 MCD=6 fine
stato iniziale stato finale SU SI S2 S1 (a= =x) (a= =x) MCD(x,y)= = MCD(a,b) MCD(x,y)= = MCD(a,b) MCD(x,y)= =a && && (b= =y) (a= =b) tempo 1.2 traccia simbolica del programma • int MCD (int x, int y) { • int a, b; • a = x; • b= y; • while (a != b) • if (a > b) a = a - b; • else b = b - a; • return a; • }
verifica del programma inizio a = x; {S1} b = y; {ST1} {S2} {SI} no (a!=b) si {SF1} no si (a>b) a=a-b; b=b-a; {SU} {ST2} {SF2} {SI} MCD=a; SF1: {(a<b && MCD(x,y) = = MCD(a,b-a)} SF2 {(0<b && MCD(x,y) = = MCD(a,b)} ST1: {(a>b && MCD(x,y) = = MCD(a-b,b)} ST2 {(a>0 && MCD(x,y) = = MCD(a,b)} fine
Asserzioni: (precondizioni e postcondizioni) {P} S {Q} { P} S { Q }
assegnamento {b + c = = 100} a = b + c; {a = = 100}
regola di composizione {P} {P} Sa; Sa; Sb; {Q} Sb; {R} {R}
regola condizionale {P} {P} {P && C} {P && !C} si no C if(C) Sa; else Sb; Sa; Sb; {Q} {R} {W} {W}
regola ripetitiva {I} {I&& !C} {I} no C si {I&&C} while(c) S; S {I} {I && !C} Continua…