test su legami chimici

esci chimicaturbo.htm

program lega10;
(* determinazione tipo geometria molecolare VALUTAZIONE *)

uses crt,graph;
const k=15;
var
a,prove,esatte,errate,np,c1,c2,c0,C3,C4:integer;
tp,e1,e2,ds:string;
s:array[1..k] of string;
g:array[1..k] of string;
h:array[1..k] of string;

procedure grafica;
var tp,sc:integer;stringa:string;
begin
tp:=0;sc:=0;stringa:='c:\scheda\';
initgraph(sc,tp,stringa);
end;

procedure fine;
begin
writeln('premi enter');
readln;
end;

procedure pausa;
begin
write('premi ENTER ');readln;
end;

procedure cancella;
begin
grafica;
end;

procedure pulire;
begin
clrscr;
end;

procedure dati;
begin
s[1]:=('H2O......O s2p4');g[1]:='5';
s[2]:=('BeCl2....Be s2');g[2]:='1';
s[3]:=('NH3......N s2p3');g[3]:='4';
s[4]:=('AlCl3....Al s2p1');g[4]:='2';
s[5]:=('PH3......P s2p3');g[5]:='4';
s[6]:=('Cl2O.....O s2p4');g[6]:='5';
s[7]:=('SO3......S s2p4');g[7]:='2';
s[8]:=('H2SO4....S s2p4');g[8]:='3';
s[9]:=('H2CO3....C s2p2');g[9]:='2';
s[10]:=('HNO3....N s2p3');g[10]:='2';
s[11]:=('HClO4...Cl s2p5');g[11]:='3';
s[12]:=('HClO3...Cl s2p5');g[12]:='4';
s[13]:=('HBrO2...Br s2p5');g[13]:='5';
s[14]:=('AlBr3...Al s2p1');g[14]:='2';
s[15]:=('BeBr2...Be s2');g[15]:='1';

h[1]:=('H2O......O.....2 legame 2 liberi');
h[2]:=('BeCl2....Be....2 legame 0 liberi');
h[3]:=('NH3......N.....3 legame 1 libero');
h[4]:=('AlCl3....Al....3 legame 0 libero');
h[5]:=('PH3......P.....3 legame 3 1 libero');
h[6]:=('Cl2O.....O.....2 legame 2 liberi');
h[7]:=('SO3......S.....3 legame (2 semplici e uno doppio) 0 liberi');
h[8]:=('H2SO4....S.....4 legame 0 liberi');
h[9]:=('H2CO3....C.....3 legame (2 semplici e uno doppio) 0 liberi');
h[10]:=('HNO3....N.....3 legame (2 semplici e uno doppio) 0 liberi');
h[11]:=('HClO4...Cl....4 legame 0 liberi');
h[12]:=('HClO3...Cl....3 legame 1 libero');
h[13]:=('HBrO2...Br....2 legame 2 liberi');
h[14]:=('AlBr3...Al....3 legame 0 liberi');
h[15]:=('BeBr2...Be....2 legame 0 liberi');
end;

procedure dise1;
begin
setcolor(2);setfillstyle(2,3);fillellipse(200,300,20,20);
circle(200,300,20);
setcolor(3);circle(100,300,20);circle(300,300,20);
setcolor(4);line(100,300,190,300);line(210,300,300,300);
outtextxy(370,320,'angolo 180 gradi,lineare');
end;
procedure dise2;
begin
setcolor(2);circle(200,300,20);
setcolor(2);setfillstyle(2,3);fillellipse(200,300,20,20);
setcolor(3);circle(100,250,20);circle(300,250,20);circle(200,380,20);
setcolor(4);line(200,300,100,250);line(200,300,300,250);
line(200,300,200,380);
outtextxy(370,320,'angolo 120 gradi,planare');
end;

procedure dise3;
begin
setcolor(2);circle(200,300,20);
setcolor(2);setfillstyle(2,3);fillellipse(200,300,20,20);
setcolor(3);circle(100,350,20);circle(300,350,20);circle(220,380,20);
circle(200,220,20);
setcolor(4);line(200,300,100,350);line(200,300,300,350);
line(200,300,220,380);line(200,300,200,220);
outtextxy(370,320,'angolo di 109 gradi,tetraedrico');
end;


procedure dise4;
begin
setcolor(2);setfillstyle(2,3);fillellipse(200,300,20,20);
setcolor(3);circle(100,350,20);circle(300,350,20);circle(220,380,20);
setcolor(4);line(200,300,100,350);line(200,300,300,350);
line(200,300,220,380);line(200,300,200,220);
outtextxy(370,320,'angolo di 107 gradi, piramidale');
end;

procedure dise5;
begin
setcolor(2);circle(200,300,20);
setcolor(2);setfillstyle(2,3);fillellipse(200,300,20,20);
setcolor(3);circle(100,350,20);circle(220,380,20);
setcolor(4);line(200,300,100,350);line(200,300,300,350);
line(200,300,220,380);line(200,300,200,220);
outtextxy(370,320,'angolo di 104 gradi,angolare');
end;

procedure pro1;
begin
for a:=1 to k do
begin
setbkcolor(c0);
setcolor(c3);
outtextxy(10,10,'indica tipo di geometria con atomo centrale indicato in:');
outtextxy(10,30,s[a]);
str(a,ds);
outtextxy(200,30,' TOTALE DOMANDE=15..DOMANDA n.');
outtextxy(450,30,ds);
outtextxy(10,40,'------------------------------------------------');
outtextxy(10,60,'1=lineare...2=triangolare..3=tetraedrica..4=piramidale..5=angolare');
outtextxy(10,70,'------------------------------------------------');
SETCOLOR(C4);
outtextxy(10,90,'scrivi tipo di forza = ');
moveto(0,0);readln(tp);outtextxy(200,90,tp);
outtextxy(10,110,'------------------------------------------------');
if tp=g[a] then begin outtextxy(30,140,'esatto');
outtextxy(300,160,(h[a]));esatte:=esatte+1; end
else begin outtextxy(100,160,'errato:era ');outtextxy(250,160,g[a]);
outtextxy(100,180,'infatti era:');outtextxy(250,180,h[a]);errate:=errate+1;end;
if g[a]='1' then dise1;
if g[a]='2' then dise2;
if g[a]='3' then dise3;
if g[a]='4' then dise4;
if g[a]='5' then dise5;
outtextxy(100,210,'--------------------------------------------------------------');
str(esatte,e1);str(errate,e2);
setcolor(c1);
outtextxy(100,220,'esatte=');outtextxy(250,220,e1);
outtextxy(100,240, 'errate=');outtextxy(250,240,e2);
setcolor(c4);
pausa;cancella;
end;end;


begin
pulire;
c1:=2;c2:=3;c0:=0;C3:=4;C4:=14;
writeln('programma:determina tipo di geometria in molecole semplici');
writeln('secondo la teoria VSEPR :repulsione coppie elettroni di valenza');
writeln;
writeln('si devono rappresentare le strutture secondo Lewis');
writeln('si devono contare i doppietti elettronici attorno atomo CENTRALE');
writeln('si devono contare i doppietti di legame e quelli ancora liberi');
writeln('NOTA:un doppio legame equivale a 1 solo doppietto di legame');
writeln('e quindi prevedere tipo geometria molecolare');
writeln('-------------------------------------------------------');
writeln('si deve rispondere scrivendo dei NUMERI al posto della forza');
writeln('1 per tipo LINEARE ');
writeln('2 per tipo TRIANGOLARE');
writeln('3 per tipo TETRAEDRICO');
writeln('4 per tipo PIRAMIDALE');
writeln('5 per tipo ANGOLARE');
writeln('---------------------------------------------------');
writeln('RICORDARE che in generale la forma risulta:');
writeln('1..LINEARE........con 2 doppietti di legame,0 liberi');
writeln('2..TRIANGOLARE....con 3 doppietti di legame,0 liberi');
writeln('2..TRIANGOLARE....con 2 doppietti di legame,1 libero');
writeln('3..TETRAEDRICA....con 4 doppietti di legame,0 liberi ');
writeln('4..PIRAMIDALE.....con 3 doppietti di legame,1 libero');
writeln('5..ANGOLARE.......con 2 doppietti di legame,2 liberi');
writeln('---------------------------------------------------');
pausa;pulire;dati;grafica;
np:=k;pro1;
closegraph;restorecrtmode;textmode(2);
writeln('esatte =',esatte);
writeln('errate =',errate);
if esatte>errate then writeln('sufficiente')
else writeln('insufficiente:studia ancora');
writeln('chiama insegnante per integrare valutazione');
readln;

end.