esercizi di chimica con turbo pascal 1.1 su mac
program noxi2; (* determinazione numero ossidazione elementi composto INTERATTIVO *)
var n:array[1..5] of string; h:array[1..5] of integer; s,no,nh,a,d,x:integer; y:string; nx:real;
procedure fine; begin writeln('premi enter'); readln; end;
procedure pausa; begin writeln('premi ENTER ');readln; end;
procedure pro1; begin nx:=0; writeln('scrivi simboli elementi e loro indici o numero di atomi'); for a:=1 to 3 do begin write('simbolo elemento ');readln(n[a]); write('indice o numero atomi elemento ');readln(h[a]); if n[a]='H' then nh:=h[a] else if n[a]='O' then no:=2*h[a] else y:=n[a]; end; nx:=no-nh; begin writeln('-----------------------------------------------------'); writeln('scrivi numeri ossidazione preceduti da segno + o - '); writeln(n[1],h[1],n[2],h[2],n[3],h[3]); write('numero ossidazione di ',n[1]);readln(x); if x=+1 then writeln('esatto ') else writeln('errato:era +1 '); write('numero ossidazione di ',n[2]);readln(x); if x=+nx then writeln('esatto ') else writeln('errato:era +',nx:0:0); write('numero ossidazione di ',n[3]);readln(x); if x=-2 then writeln('esatto ') else writeln('errato:era -2 '); end; end;
procedure pro2; begin nx:=0; writeln('scrivi simboli elementi e loro indici o numero di atomi'); for a:=1 to 3 do begin write('simbolo elemento ');readln(n[a]); write('indice o numero atomi elemento ');readln(h[a]); if n[a]='H' then nh:=h[a] else if n[a]='O' then no:=2*h[a] else y:=n[a]; end; nx:=no-nh; begin writeln('-----------------------------------------------------'); writeln('scrivi numeri ossidazione preceduti da segno + o - '); writeln(n[1],h[1],n[2],h[2],n[3],h[3]); write('numero ossidazione di ',n[1]);readln(x); if x=+nx then writeln('esatto ') else writeln('errato:era +',nx:0:0); write('numero ossidazione di ',n[2]);readln(x); if x=-2 then writeln('esatto ') else writeln('errato:era -2 '); write('numero ossidazione di ',n[3]);readln(x); if x=+1 then writeln('esatto ') else writeln('errato:era +1 '); end; end;
procedure pro3; begin nx:=0; writeln('scrivi simboli elementi e loro indici o numero di atomi'); for a:=1 to 2 do begin write('simbolo elemento ');readln(n[a]); write('indice o numero atomi elemento ');readln(h[a]); if n[a]='H' then nx:=h[a]; if n[a]<>'H' then y:=n[a]; end; begin WRITELN('-----------------------------------------------------'); writeln('scrivi numeri ossidazione preceduti da segno + o - '); writeln(n[1],h[1],n[2],h[2]); write('numero ossidazione di ',n[1]);readln(x); if x=+1 then writeln('esatto ') else writeln('errato:era +1 '); write('numero ossidazione di ',n[2]);readln(x); if x=-nx then writeln('esatto ') else writeln('errato:era -',nx:0:0); end; end;
procedure pro4; begin nx:=0; writeln('scrivi simboli elementi e loro indici o numero di atomi'); writeln('es.SO3....N2O5...CaO....Al2O3...'); writeln('----------------------------------------------------------------'); writeln('calcola :TOTALE cariche negative=atomi ossigeno*(-2)'); writeln('calcola :N.OSSIDAZIONE elemento =totale negative/indice elemento'); writeln('----------------------------------------------------------------'); for a:=1 to 2 do begin write('simbolo elemento ');readln(n[a]); write('indice o numero atomi elemento ');readln(h[a]); if n[a]<>'O' then begin y:=n[a];d:=h[a];end else no:=2*h[a] end; nx:=no/d; begin WRITELN('-----------------------------------------------------'); writeln('scrivi numeri ossidazione preceduti da segno + o - '); writeln(n[1],h[1],n[2],h[2]); write('numero ossidazione di ',n[1]);readln(x); if x=+nx then writeln('esatto ') else writeln('errato:era +',nx:0:0); write('numero ossidazione di ',n[2]);readln(x); if x=-2 then writeln('esatto ') else writeln('errato:era -2'); end;
end;
procedure pro5; label salta2,salta; begin nx:=0;no:=0; writeln('scrivi simboli elementi e loro indici o numero di atomi'); writeln('es.NaCl....CaF2...CaS..'); writeln('----------------------------------------------------------------'); writeln('calcola :TOTALE cariche negative=atomi alogeno*(-1)'); writeln('calcola :TOTALE cariche negative=atomi zolfo*(-2)'); writeln('calcola :N.OSSIDAZIONE elemento =totale negative/indice elemento'); writeln('----------------------------------------------------------------'); for a:=1 to 2 do begin write('simbolo elemento ');readln(n[a]); write('indice o numero atomi elemento ');readln(h[a]); if a=2 then no:=(h[a]); if n[a]='S' then no:=(2*h[a]); end; nx:=no/h[1]; writeln('----------------------------------------------'); begin writeln('scrivi numeri ossidazione preceduti da segno + o - '); writeln(n[1],h[1],n[2],h[2]); write('numero ossidazione di ',n[1]);readln(x); if x=+nx then writeln('esatto ') else writeln('errato:era +',nx:0:0); write('numero ossidazione di ',n[2]);readln(x); if n[2]='S' then goto salta2 ; if (x=-1) then writeln('esatto ') else writeln('errato:era -1');goto salta; salta2: if x=-2 then writeln('esatto ') else writeln('errato:era -2'); end; salta: end;
procedure scelta; var ancora:integer; begin clearscreen; writeln('seleziona tipo problema '); writeln('1...composti ternari come OSSIACIDI............H2SO4..HNO3 '); writeln('2...composti ternari come IDROSSIDI............NaOH..Ca(OH)2'); writeln('3...composti binari come IDRACIDI..............HCl....H2S '); writeln('4...composti binari come OSSIDI,ANIDRIDI.......Al2O3..SO3 '); writeln('5...composti binari come SALI di ALOGENI,ZOLFO.NaCl...CaS '); writeln('9...fine '); write('opzione=');readln(s); clearscreen; case s of 1:pro1; 2:pro2; 3:pro3; 4:pro4; 5:pro5; 9:fine; end; writeln('----------------------------'); writeln('altro problema:scrivi 1...fine:scrivi 2 ');readln(ancora); if ancora =1 then scelta else fine; end;
begin clearscreen; writeln('funzione programma'); writeln('---------------------------------------------------'); writeln('premi enter');readln; scelta; end.