listati per programmi in turbo pascal
su argomenti di chimica, con interazione e correzione

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.

program lega11;
(* determinazione tipo geometria molecolare VALUTAZIONE *)
(* simile a LEGA10 con grafica migliorata *)

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
writeln('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
 setlinestyle(0,0,0);
 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
 setlinestyle(0,0,0);
 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);
 setlinestyle(3,2,2);
 setcolor(5);line(100,250,300,250);
 line(100,250,200,380);line(300,250,200,380);
 outtextxy(370,320,'angolo 120 gradi,planare');
 end;

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


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

procedure dise5;
begin
 setlinestyle(0,0,0);
 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,340);
 line(200,300,220,380);line(200,300,200,220);
 setlinestyle(3,2,2);
 setcolor(5);line(200,220,100,350);line(200,220,300,340);
 line(200,220,220,380);
 line(100,350,300,340);line(100,350,220,380);line(300,340,220,380);
 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 = ');
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.

program lega12;
(* determinazione tipo geometria molecolare VALUTAZIONE *)
(* simile a LEGA11 con grafica migliorata *)

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;
    e:array[1..k] of string[5];
    f:array[1..k] of string[5];
    v:array[1..k] of string[5];
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
writeln('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';e[1]:='H';f[1]:='O'; v[1]:='';
s[2]:=('BeCl2....Be  s2');g[2]:='1';  e[2]:='Cl';f[2]:='Be'; v[2]:='';
s[3]:=('NH3......N   s2p3');g[3]:='4';e[3]:='H';  f[3]:='N'; v[3]:='';
s[4]:=('AlCl3....Al  s2p1');g[4]:='2';e[4]:='Cl'; f[4]:='Al';v[4]:='';
s[5]:=('PH3......P   s2p3');g[5]:='4';e[5]:='H';  f[5]:='P'; v[5]:='';
s[6]:=('Cl2O.....O   s2p4');g[6]:='5';e[6]:='Cl'; f[6]:='O'; v[6]:='';
s[7]:=('SO3......S   s2p4');g[7]:='2';e[7]:='O';  f[7]:='S'; v[7]:='';
s[8]:=('HIO4.....I   s2p5');g[8]:='3';e[8]:='O';  f[8]:='I'; v[8]:='H';
s[9]:=('H2CO3....C   s2p2');g[9]:='2';e[9]:='O';  f[9]:='C'; v[9]:='H';
s[10]:=('H2SO3...S   s2p4');g[10]:='2';e[10]:='O';f[10]:='S';v[10]:='H';
s[11]:=('HClO4...Cl  s2p5');g[11]:='3';e[11]:='O';f[11]:='Cl';v[11]:='H';
s[12]:=('HClO3...Cl  s2p5');g[12]:='4';e[12]:='O';f[12]:='Cl';v[12]:='H';
s[13]:=('HBrO2...Br  s2p5');g[13]:='5';e[13]:='O';f[13]:='Br';v[13]:='H';
s[14]:=('AlBr3...Al  s2p1');g[14]:='2';e[14]:='Br';f[14]:='Al';v[14]:='';
s[15]:=('BeBr2...Be  s2');g[15]:='1';  e[15]:='Br';f[15]:='Be';v[15]:='';

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]:=('HIO4....S.....4 legame 0 liberi');
h[9]:=('H2CO3....C.....3 legame (2 semplici e uno doppio) 0 liberi');
h[10]:=('H2SO3...S.....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
 setlinestyle(0,0,0);
 setcolor(2);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);
 setcolor(14);
 outtextxy(370,320,'angolo 180 gradi,lineare');outtextxy(200,300,f[a]);
 outtextxy(100,300,e[a]);outtextxy(300,300,e[a]);
 end;
procedure dise2;
begin
 setlinestyle(0,0,0);
 setcolor(2);circle(200,300,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);
 setlinestyle(3,2,2);
 setcolor(5);line(100,250,300,250);
 line(100,250,200,380);line(300,250,200,380);
 setcolor(14);outtextxy(370,320,'angolo 120 gradi,planare');
 outtextxy(100,250,e[a]);outtextxy(300,250,e[a]);
 outtextxy(200,380,e[a]);outtextxy(200,300,f[a]);
 outtextxy(90,250,v[a]);outtextxy(310,250,v[a]);
 end;

procedure dise3;
begin
setlinestyle(0,0,0);
setcolor(2);circle(200,300,20);
 setcolor(3);circle(100,350,20);circle(300,340,20);circle(220,380,20);
 circle(200,220,20);
 setcolor(4);line(200,300,100,350);line(200,300,300,340);
 line(200,300,220,380);line(200,300,200,220);
 setlinestyle(3,2,2);
 setcolor(5);line(200,220,100,350);line(200,220,300,340);
 line(200,220,220,380);
 line(100,350,300,340);line(100,350,220,380);line(300,340,220,380);
 setcolor(14);outtextxy(370,320,'angolo di 109 gradi,tetraedrico');
 outtextxy(200,220,e[a]);outtextxy(100,350,e[a]);
 outtextxy(220,380,e[a]);outtextxy(300,340,e[a]);outtextxy(200,300,f[a]);
 outtextxy(310,340,v[a]);
 end;


procedure dise4;
begin
 setlinestyle(0,0,0);
 setcolor(2);circle(200,300,20);
 setcolor(3);circle(100,350,20);circle(300,340,20);circle(220,380,20);
 setcolor(4);line(200,300,100,350);line(200,300,300,340);
 line(200,300,220,380);
 line(200,300,200,220);
 setlinestyle(3,2,2);
 setcolor(5);line(200,220,100,350);line(200,220,300,340);
 line(200,220,220,380);
 line(100,350,300,340);line(100,350,220,380);line(300,340,220,380);
 setcolor(14);outtextxy(370,320,'angolo di 107 gradi, piramidale');
 outtextxy(100,350,e[a]);
 outtextxy(220,380,e[a]);outtextxy(300,340,e[a]);outtextxy(200,300,f[a]);
 outtextxy(310,340,v[a]);
 end;

procedure dise5;
begin
 setlinestyle(0,0,0);
 setcolor(2);circle(200,300,20);
 setcolor(3);circle(100,350,20);circle(220,380,20);
 setcolor(4);line(200,300,100,350);line(200,300,300,340);
 line(200,300,220,380);line(200,300,200,220);
 setlinestyle(3,2,2);
 setcolor(5);line(200,220,100,350);line(200,220,300,340);
 line(200,220,220,380);
 line(100,350,300,340);line(100,350,220,380);line(300,340,220,380);
 setcolor(14);outtextxy(370,320,'angolo di 104 gradi,angolare');
 outtextxy(100,350,e[a]);
 outtextxy(220,380,e[a]);outtextxy(200,300,f[a]);
 outtextxy(90,350,v[a]);
 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(20,100);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.

program lega13;
(* didattico per mostrare formazione legami chimici GRAFICA scheda *)

uses crt,graph;
var
    a,c1,c2,c0,C3,C4,tx:integer;
    dp,dn:string;

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

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

procedure cancella;
begin
grafica;
end;

procedure pau;
begin
delay(tx);
end;


procedure pulire;
begin
clrscr;
end;

procedure frase;
begin
outtextxy(500,390,'premi enter');readln;
end;


procedure omopo(x,y,s,c:integer);
begin
 setfillstyle(s,c); fillellipse(x,y,50,50);
 setfillstyle(1,14);fillellipse(x,y,5,5);
end;

procedure omopo1(x,y,s,c:integer);
begin
 setfillstyle(s,c); fillellipse(x,y,20,20);
 setfillstyle(1,14);fillellipse(x,y,5,5);
end;


procedure lega(x,y,rx,ry:integer);
begin
setfillstyle(7,6);fillellipse(x,y,rx,ry);
end;

procedure lega1(x,y,rx,ry:integer);
begin
setfillstyle(7,5);fillellipse(x,y,rx,ry);
end;

procedure orbi(x,y,f:integer);
var rx,ry:integer;
begin
rx:=30;ry:=20;setfillstyle(f,f);fillellipse(x,y,rx,ry);
end;

procedure sx(x,y:integer;s:string);
begin
outtextxy(x,y,s);
end;

procedure tipo;
begin
setcolor(4);outtextxy(100,400,'orbitale di legame');
end;

procedure carica(a,b:integer;s:string);
begin
outtextxy(a,b,s);
end;

procedure cloro;
begin
omopo(200,200,7,2);pau;omopo(400,200,7,2);pau;
sx(200,180,'s2');sx(400,180,'s2');
orbi(260,200,3);orbi(340,200,3);sx(260,240,'pz1+');sx(340,240,'pz1-');
orbi(160,160,7);orbi(160,240,7);sx(160,120,'px2');sx(160,280,'py2');
orbi(440,160,7);orbi(440,240,7);sx(440,120,'px2');sx(440,280,'py2');
frase;lega(300,200,70,30);tipo;frase;cancella;
end;

procedure solfo;
begin
omopo(200,200,7,2);pau;omopo(400,200,7,2);pau;
sx(200,180,'s2');sx(400,180,'s2');
orbi(150,200,7);orbi(450,200,7);sx(150,200,'px2');sx(450,200,'px2');
orbi(250,160,3);orbi(250,240,4);sx(250,120,'py1+');sx(250,280,'pz1+');
orbi(350,160,3);orbi(350,240,4);sx(350,120,'py1-');sx(350,280,'pz1-');
frase;lega(300,240,80,30);lega1(300,160,80,30);
tipo;frase;cancella;
end;

procedure azoto;
begin
omopo(200,200,7,2);pau;omopo(400,200,7,2);pau;
sx(200,180,'s2');sx(400,180,'s2');
orbi(250,200,3);orbi(350,200,4);sx(130,200,'px2');sx(450,200,'px2');
orbi(250,160,3);orbi(350,160,4);sx(250,120,'py1+');sx(250,270,'pz1+');
orbi(250,240,3);orbi(350,240,4);sx(350,120,'py1-');sx(350,270,'pz1-');
frase;lega(300,240,80,30);lega1(300,160,80,30);lega1(300,200,80,30);
tipo;frase;cancella;
end;

procedure polare;
begin
omopo(200,200,7,2);pau;omopo1(370,200,6,2);pau;
carica(400,200,dp);carica(100,200,dn);
sx(200,180,'s2');sx(400,180,'s1-');
orbi(260,200,3);sx(260,240,'pz1+');
orbi(160,160,7);orbi(160,240,7);sx(160,120,'px2');
sx(160,280,'py2');
frase;lega(300,200,70,30);tipo;frase;cancella;
end;

procedure doppio;
begin
omopo(200,200,7,2);pau;omopo1(350,160,6,2);omopo1(350,240,6,2);pau;
sx(200,180,'s2');
carica(50,200,dn);carica(400,160,dp);carica(400,240,dp);
orbi(150,200,7);sx(150,200,'px2');orbi(250,160,3);orbi(250,240,3);
sx(250,130,'py1+');sx(250,280,'pz1+');
sx(350,130,'s1-');sx(350,280,'s1-');
frase;lega(290,240,50,20);lega(290,160,50,20);
tipo;frase;cancella;
end;

procedure tipox(a,b:string);
begin
outtextxy(100,350,'carica parziale positiva su '+a);
outtextxy(100,360,'carica parziale negativa su '+b);
end;


procedure triplo;
begin
omopo(200,200,7,2);pau;omopo1(370,200,7,2);pau;
omopo1(370,160,6,2);omopo1(370,240,6,2);pau;
sx(200,180,'s2');sx(400,200,'s1-');
carica(50,200,dn);carica(400,150,dp);carica(400,230,dp);
carica(400,190,dp);
orbi(250,200,3);sx(130,200,'px2');
orbi(250,160,3);sx(250,120,'py1+');sx(250,270,'pz1+');
orbi(250,240,3);sx(400,240,'s1-');sx(400,160,'s1-');
frase;lega(310,240,50,20);lega(310,160,50,20);lega(310,200,50,20);
tipo;frase;cancella;
end;

procedure dativo;
begin
omopo(300,200,7,2);sx(300,180,'s2');
orbi(350,160,3);sx(350,120,'py1+');
orbi(350,240,3);sx(350,280,'pz1+');
orbi(250,200,7);sx(250,160,'px2');pau;
omopo(500,200,7,3);sx(500,180,'s2');
orbi(450,160,3);sx(450,120,'py1-');
orbi(450,240,3);sx(450,280,'pz1-');
orbi(550,200,7);sx(550,160,'px2');pau;
lega(400,160,70,20);
outtextxy(100,350,'legame covalente polare sigma');pau;
lega(400,240,70,20);
outtextxy(100,360,'legame covalente polare pigreco');pau;
omopo(100,200,7,3);sx(100,180,'s2');
orbi(50,160,7);sx(50,120,'px2');
orbi(50,240,7);sx(50,280,'py2');
orbi(150,200,0);sx(150,160,'pz0');
lega(200,200,70,20);
outtextxy(100,380,'legame covalente polare dativo sigma');
outtextxy(100,390,'Zolfo donatore doppietto di legame');
outtextxy(100,400,'Ossigeno accettore con orbitale vacante');
end;

procedure ionico;
begin
setcolor(c2);circle(250,200,70);
setcolor(c3);circle(400,200,70);
outtextxy(200,300,'atomo neutro');
outtextxy(400,300,'atomo neutro');
frase;
setfillstyle(7,3);fillellipse(250,200,40,40);
setfillstyle(7,4);fillellipse(400,200,90,90);
setcolor(2);circle(400,200,50);
outtextxy(100,320,'catione con carica positiva diffusa');
outtextxy(300,80,'anione con carica negativa diffusa');
outtextxy(100,340,'forza elettrostatica genera legame ionico');
end;

procedure ionico2;
begin
setcolor(c2);circle(250,200,70);
setcolor(c3);circle(400,200,70);
setcolor(c3);circle(100,200,70);
outtextxy(200,300,'atomo neutro');
outtextxy(400,300,'atomo neutro');
outtextxy(50,300,'atomo neutro');
frase;
setfillstyle(7,3);fillellipse(250,200,40,40);
setfillstyle(7,4);fillellipse(400,200,90,90);
setfillstyle(7,4);fillellipse(100,200,90,90);
setcolor(2);circle(400,200,50);circle(100,200,50);
outtextxy(100,320,'catione con carica positiva diffusa');
outtextxy(100,80,'anioni con carica negativa diffusa');
outtextxy(100,340,'forza elettrostatica genera legame ionico');
end;

procedure pro1;
begin
outtextxy(100,20,'legame covalente omopolare H2  H-H   De=0 ');
outtextxy(100,30,'1s1+     1s1-  con condivisione doppietto elettroni');
outtextxy(100,40,'per raggiungere configurazione stabile s2');
omopo(100,100,5,2);pau;omopo(300,100,3,2);pau;
sx(100,170,'s1+');sx(300,170,'s1-');frase;
lega(200,100,80,30);tipo;frase;cancella;

outtextxy(100,20,'legame covalente omopolare Cl2  Cl-Cl   De=0');
outtextxy(100,30,'3pz1+     3pz1-  con condivisione doppietto elettroni');
outtextxy(100,40,'per raggiungere configurazione stabile s2,p6');
cloro;
outtextxy(100,20,'legame covalente omopolare F2  F-F   De=0');
outtextxy(100,30,'2pz1+     2pz1-  con condivisione doppietto elettroni');
outtextxy(100,40,'per raggiungere configurazione stabile s2,p6');
cloro;
outtextxy(100,20,'legame covalente omopolare I2  I-I   De=0');
outtextxy(100,30,'5pz1+     5pz1-  con condivisione doppietto elettroni');
outtextxy(100,40,'per raggiungere configurazione stabile s2,p6');
cloro;
outtextxy(100,20,'legame covalente omopolare Br2  Br-Br   De=0');
outtextxy(100,30,'4pz1+     4pz1-  con condivisione doppietto elettroni');
outtextxy(100,40,'per raggiungere configurazione stabile s2,p6');
cloro;pausa;
outtextxy(100,20,'legame covalente omopolare O2  O=O   De=0');
outtextxy(100,30,'2py1+...2py1-   2pz1+...2pz1- condivisione di due doppietti');
outtextxy(100,40,'per raggiungere configurazione stabile s2,p6');
outtextxy(100,350,'legame doppio: 1 sigma+forte,1 pigreco+debole');
solfo;pausa;
outtextxy(100,20,'legame covalente omopolare N2  N---N   De=0');
outtextxy(100,30,'(2px1+.2px1-) (2py1+.2py1-) (2pz1+.2pz1-) condivisione di tre doppietti');
outtextxy(100,40,'per raggiungere configurazione stabile s2,p6');
outtextxy(100,350,'legame triplo: 1 sigma+forte,2 pigreco+debole');
azoto;pausa;
outtextxy(100,20,'legame covalente polare HCl    H-Cl  con De<1.7');
outtextxy(100,30,'pz1+   s1-  con condivisione doppietto elettroni');
outtextxy(100,40,'per raggiungere configurazione stabile s2p6   s2');
tipox('H','Cl');polare;pausa;
outtextxy(100,20,'legame covalente polare HBr    H-Br  con De<1.7');
outtextxy(100,30,'pz1+   s1-  con condivisione doppietto elettroni');
outtextxy(100,40,'per raggiungere configurazione stabile s2p6   s2');
tipox('H','Br');polare;pausa;
outtextxy(100,20,'legame covalente polare HI    H-I  con De<1.7');
outtextxy(100,30,'pz1+   s1-  con condivisione doppietto elettroni');
outtextxy(100,40,'per raggiungere configurazione stabile s2p6   s2');
tipox('H','I');polare;pausa;
outtextxy(100,20,'legame covalente polare H2O    H-O-H  con De<1.7');
outtextxy(100,30,'(pz1+ s1-) (py1+ s1-)  con condivisione doppietto elettroni');
outtextxy(100,40,'per raggiungere configurazione stabile s2p6   s2');
tipox('H','O');doppio;pausa;
outtextxy(100,20,'legame covalente polare H2S    H-S-H  con De<1.7');
outtextxy(100,30,'(pz1+ s1-) (py1+ s1-)  con condivisione doppietto elettroni');
outtextxy(100,40,'per raggiungere configurazione stabile s2p6   s2');
tipox('H','S');doppio;pausa;
outtextxy(100,20,'legame covalente polare NH3      con De<1.7');
outtextxy(100,30,'(pz1+ s1-) (py1+ s1-)  (pz1+ s1-) con condivisione doppietto elettroni');
outtextxy(100,40,'per raggiungere configurazione stabile s2p6   s2');
tipox('H','N');triplo;pausa;cancella;
outtextxy(20,20,'legame covalente in SO2     con De<1.7 ');
outtextxy(20,30,'S s2,px2,py1+,pz1+    O s2,px2,py1,pz1-   O s2,px2,py2,pz0');
outtextxy(20,40,'per raggiungere configurazione stabile');
outtextxy(20,60,'S  3s2,3p6     O  2s2,2p6 ');
outtextxy(20,70,'legame covalente polare sigma,pigreco tra S=O ');
outtextxy(20,80,'legame covalente polare dativo sigma tra  S-->O ');
dativo;pausa;cancella;

outtextxy(20,20,'legame ionico in NaCl  Na+  Cl-   con De>1.7 ');
outtextxy(20,30,'s1-   pz1+   con cessione acquisto di elettrone');
outtextxy(20,40,'per raggiungere configurazione stabile');
outtextxy(20,60,'Na 3s1 ---> 2s2,2p6     Cl 3s2,3p5 ---> 3s2,3p6 ');
ionico;pausa;cancella;

outtextxy(20,20,'legame ionico in KF  K+  F-   con De>1.7 ');
outtextxy(20,30,'s1-   pz1+   con cessione acquisto di elettrone');
outtextxy(20,40,'per raggiungere configurazione stabile');
outtextxy(20,60,'K  4s1 ---> 3s2,3p6     F 2s2,2p5 ---> 2s2,2p6 ');
ionico;pausa;cancella;

outtextxy(20,20,'legame ionico in CaF2  Ca++  2 F-   con De>1.7 ');
outtextxy(20,30,'s2   pz1+ pz1+   con cessione acquisto di elettroni');
outtextxy(20,40,'per raggiungere configurazione stabile');
outtextxy(20,60,'Ca  4s2 ---> 3s2,3p6     F 2s2,2p5 ---> 2s2,2p6 ');
ionico2;pausa;cancella;

outtextxy(20,20,'legame ionico in MgF2  Mg++  2 F-   con De>1.7 ');
outtextxy(20,30,'s2   pz1+ pz1+   con cessione acquisto di elettroni');
outtextxy(20,40,'per raggiungere configurazione stabile');
outtextxy(20,60,'Ca  3s2 ---> 2s2,2p6     F 2s2,2p5 ---> 2s2,2p6 ');
ionico2;pausa;cancella;
end;


begin
pulire;
dp:='delta+';dn:='delta-';
c1:=2;c2:=3;c0:=0;C3:=4;C4:=14;
writeln('formazione di legami tra atomi:');
writeln('LEGAME COVALENTE OMOPOLARE o PURO : se De<=0.2 ');
writeln('LEGAME COVALENTE POLARE           : se 0.2 < De < 1.7 ');
writeln('LEGAME COVALENTE POLARE DATIVO    : se 0.2 < De < 1.7');
writeln('LEGAME IONICO o ETEROPOLARE       : se De  > 1.7 ');
writeln('------------------------------------------------------');
writeln('1..si deve scrivere la configurazione ultimo livello secondo Lewis');
writeln('   per ogni elemento da legare');
writeln('2..si deve cercare il valore della elettronegativit… per ogni');
writeln('   elemento da legare');
writeln('3..si deve fare la differenza tra i valori delle elettronegativit…');
writeln('4..si prevede il tipo di legame probabile seguendo le regole');
writeln('   indicate in precedenza');
writeln;
repeat
 write('scrivi valore per velocit… : da 1 veloce a 200 lento ');readln(tx);
 until tx<201;
pausa;pulire;grafica;pro1;closegraph;restorecrtmode;textmode(2);
end.