esercitazione a
livello didattico-liceale
con turbo pascal , su argomenti di chimica vari
assegnazione numeri di ossidazione
program noxi1a; (* determinazione numero ossidazione elementi composto DIMOSTRATIVO *) uses crt; const k1=64; var n:array[1..k1] of string; va:array[1..k1] of integer; q:array[1..k1] of integer; s,a,n1,n2,n3,v1,v2,h1,h2,h3,hy,ny:integer; y,e1,e2,e3:string; nx,hf,h2f,h2y:real; procedure datiy; begin n[1]:='Li';va[1]:=1;q[1]:=1; n[2]:='Na';va[2]:=1;q[2]:=1; n[3]:='K';va[3]:=1;q[3]:=1; n[4]:='Rb';va[4]:=1;q[4]:=1; n[5]:='Cs';va[5]:=1;q[5]:=1; n[6]:='Fr';va[6]:=1;q[6]:=1; n[7]:='Be';va[7]:=2;q[7]:=1; n[8]:='Mg';va[8]:=2;q[8]:=1; n[9]:='Ca';va[9]:=2;q[9]:=1; n[10]:='Sr';va[10]:=2;q[10]:=1; n[11]:='Ba';va[11]:=2;q[11]:=1; n[12]:='Ra';va[12]:=2;q[12]:=1; n[13]:='Sc';va[13]:=3;q[13]:=1; n[14]:='Y';va[14]:=3;q[14]:=1; n[15]:='La';va[15]:=3;q[15]:=1; n[16]:='Ac';va[16]:=3;q[16]:=1; n[17]:='Zr';va[17]:=4;q[17]:=1; n[18]:='Hf';va[18]:=4;q[18]:=1; n[19]:='Ku';va[19]:=4;q[19]:=1; n[20]:='Ta';va[20]:=5;q[20]:=1; n[21]:='Ag';va[21]:=1;q[21]:=1; n[22]:='Cd';va[22]:=2;q[22]:=1; n[23]:='Zn';va[23]:=2;q[23]:=1; n[24]:='Al';va[24]:=3;q[24]:=1; n[25]:='Ga';va[25]:=3;q[25]:=1; n[26]:='In';va[26]:=3;q[26]:=1; n[27]:='Ti';va[27]:=3;q[27]:=2; n[28]:='Ti';va[28]:=4;q[28]:=2; n[29]:='V';va[29]:=2;q[29]:=2; n[30]:='V';va[30]:=3;q[30]:=2; n[31]:='Cr';va[31]:=2;q[31]:=2; n[32]:='Cr';va[32]:=3;q[32]:=2; n[33]:='Mo';va[33]:=2;q[33]:=2; n[34]:='Mo';va[34]:=3;q[34]:=2; n[35]:='Mn';va[35]:=2;q[35]:=2; n[36]:='Mn';va[36]:=3;q[36]:=2; n[37]:='Fe';va[37]:=2;q[37]:=2; n[38]:='Fe';va[38]:=3;q[38]:=2; n[39]:='Co';va[39]:=2;q[39]:=2; n[40]:='Co';va[40]:=3;q[40]:=2; n[41]:='Ni';va[41]:=2;q[41]:=2; n[42]:='Ni';va[42]:=3;q[42]:=2; n[43]:='Pd';va[43]:=2;q[43]:=2; n[44]:='Pd';va[44]:=4;q[44]:=2; n[45]:='Pt';va[45]:=2;q[45]:=2; n[46]:='Pt';va[46]:=4;q[46]:=2; n[47]:='Cu';va[47]:=1;q[47]:=2; n[48]:='Cu';va[48]:=2;q[48]:=2; n[49]:='Au';va[49]:=1;q[49]:=2; n[50]:='Au';va[50]:=3;q[50]:=2; n[51]:='Hg';va[51]:=1;q[51]:=2; n[52]:='Hg';va[52]:=2;q[52]:=2; n[53]:='Sn';va[53]:=2;q[53]:=2; n[54]:='Sn';va[54]:=4;q[54]:=2; n[55]:='Pb';va[55]:=2;q[55]:=2; n[56]:='Pb';va[56]:=4;q[56]:=2; n[57]:='Sb';va[57]:=3;q[57]:=2; n[58]:='Bi';va[58]:=3;q[58]:=2; n[59]:='Po';va[59]:=2;q[59]:=2; n[60]:='Po';va[60]:=4;q[60]:=2; n[61]:='Th';va[61]:=4;q[61]:=2; n[62]:='Nd';va[62]:=3;q[62]:=2; n[63]:='U';va[63]:=3;q[63]:=2; n[64]:='Co';va[64]:=4;q[64]:=2; end; procedure fine; begin writeln('premi enter'); readln; end; procedure pausa; begin writeln('premi ENTER ');readln; end; procedure pro1; begin writeln('scrivi formula OSSIACIDO...idrogeno,non metallo,ossigeno '); writeln('scrivi simboli elementi e loro indici o numero di atomi'); e1:='H'; write('indice o numero atomi IDROGENO ');readln(n1); write('simbolo elemento intermedio ');readln(e2); write('indice o numero atomi elemento ');readln(n2); e3:='O'; write('indice o numero atomi OSSIGENO ');readln(n3); h1:=n1*1; h3:=n3*2; h2:=h3-h1; writeln('----------------------------------------------'); writeln('numeri ossidazione di ',e1,' = +',1); writeln('numeri ossidazione di ',e2,' = +',h2); writeln('numeri ossidazione di ',e3,' = -',2); end; procedure pro2; begin writeln('scrivi formula IDROSSIDO..metallo,ossigeno,idrogeno '); writeln('scrivi simboli elementi e loro indici o numero di atomi'); write('simbolo primo elemento ');readln(e1); write('indice o numero atomi elemento ');readln(n1); e2:='O'; write('indice o numero atomi ossigeno ');readln(n2); e3:='H'; n3:=n2; h3:=n3*1; h2:=n3*2; h1:=h2-h3; writeln('----------------------------------------------'); writeln(e1,h1,e2,h2,e3,h3); writeln('numeri ossidazione di ',e1,' = +',h1); writeln('numeri ossidazione di ',e2,' = -',2); writeln('numeri ossidazione di ',e3,' = +',1); end; procedure pro6; begin writeln('formula SALI OSSIGENATI '); WRITELN('nel caso di metalli con piu valenze,usare solo la valenza maggiore'); WRITELN('1,2=2...2,3=3...2,4=4 essendo programma ancora incompleto '); WRITELN('in caso contrario si avranno risposte non corrette '); writeln('----------------------------------------------------------------'); writeln('scrivi simboli elementi e loro indici o numero di atomi'); writeln('es.NaNO3....CaSO4...Ca(NO3)2..'); write('simbolo metallo ');readln(e1); write('indice o numero atomi elemento ');readln(n1); writeln('cerco valenza metallo '); writeln('Cm =valenza*indice metallo'); datiy; for a:=1 to k1 do if e1=n[a] then begin v1:=va[a];v2:=va[a+1]; h1:=va[a]*n1;hy:=va[a+1]*n1; end; write('simbolo elemento intermedio ');readln(e2); write('indice o numero atomi elemento ');readln(n2); e3:='O'; write('indice o numero atomi OSSIGENO ');readln(n3); writeln('cariche negative Cn = -2*indice ossigeno '); writeln('n.ossidazione ',e2,' (Cn-Cm)/indice elemento ',e2); h3:=2*n3; (* cariche negative ossigeno *) h2:=round((h3-h1)/n2); (* cariche positive elemento intermedio *) h2y:=round((h3-hy)/n2); if h2=(h3-h1)/n2 then h2f:=h2 else h2f:=h2y; writeln('-------------------------------------------------'); writeln(e1,n1,e2,n2,e3,n3); writeln(e1,n1,'(',e2,e3,n3/n2:0:0,')',n2); writeln('elemento ',e1:8,' numero ossidazione= +',v1); writeln('elemento ',e2:8,' numero ossidazione= +',h2f:0:0); writeln('elemento ',e3:8,' numero ossidazione= -2'); end; procedure pro3; begin writeln('scrivi formula IDRACIDI...idrogeno,non metallo '); writeln('scrivi simboli elementi e loro indici o numero di atomi'); e1:='H'; write('indice o numero atomi IDROGENO ');readln(n1); write('simbolo radicale acido ');readln(e2); write('indice o numero atomi RADICALE ');readln(n2); h2:=n1; writeln('----------------------------------------------'); writeln(e1,n1,e2,n2); writeln('numeri ossidazione di ',e1,' = +',1); writeln('numero ossidazione di ',e2,' = -',h2); end; procedure pro4; begin writeln('scrivi formula OSSIDO o ANIDRIDE ..elemento,ossigeno '); 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('----------------------------------------------------------------'); write('simbolo primo elemento ');readln(e1); write('indice o numero atomi elemento ');readln(n1); e2:='O'; write('indice o numero atomi OSSIGENO ');readln(n2); h2:=n2*2; nx:=h2/n1; writeln('----------------------------------------------'); writeln(e1,n1,e2,n2); writeln('numeri ossidazione di ',e1,' = +',nx:0:0); writeln('numero ossidazione di ',e2,' = -',2); end; procedure pro5; begin writeln('scrivi formula SALE binario...metallo,radicale acido '); 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('----------------------------------------------------------------'); write('simbolo elemento metallico ');readln(e1); write('indice o numero atomi elemento ');readln(n1); write('simbolo radicale acido ');readln(e2); write('indice o numero atomi radicale ');readln(n2); if e2='S' then nx:=n2*2/n1 else nx:=n2; if e2<>'S' then ny:=1 else ny:=2; writeln('----------------------------------------------'); writeln(e1,n1,e2,n2); writeln('numeri ossidazione metallo ',e1,' = +',nx:0:0); writeln('numero ossidazione radicale ',e2,' = -',ny); end; procedure scelta; var ancora:integer; begin clrscr; 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('6...composti ternari come SALI OSSIGENATI......NaNO3..CaSO4'); writeln('9...fine '); write('opzione=');readln(s); clrscr; case s of 1:pro1; 2:pro2; 3:pro3; 4:pro4; 5:pro5; 6:pro6; 9:fine; end; writeln('----------------------------'); writeln('altro problema:scrivi 1...fine:scrivi 2 ');readln(ancora); if ancora =1 then scelta else fine; end; begin clrscr; writeln('programma:determina numeri ossidazione in composto'); writeln('---------------------------------------------------'); writeln('premi enter');readln; scelta; end.