raggio catione e anione

esci chimicaturbo.htm

program raggio5;
(* didattico per mostrare variazione raggio atomo catione anione *)

uses crt,graph;
const k=18;
var
a,c1,c2,c0,C3,C4,tx:integer;
s:array[1..k] of string;
g:array[1..k] of string;
p:array[1..K] of string;
q: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]:=('H 1s1..Z=1....solo nucleo');g[1]:='..solo nucleo';
s[2]:=('Li 2s1..Z=3....1s2');g[2]:='..1s2';
s[3]:=('Na 3s1..Z=11...2s2,2p6');g[3]:='..tre livelli occupati';
s[4]:=('K 4s1..Z=19...3s2,3p6');g[4]:='..quattro livelli occupati';
s[5]:=('Rb 5s1..Z=37...4s2,4p6');g[5]:='..5 livelli occupati';
s[6]:=('Cs 6s1..Z=55...5s2,5p6');g[6]:='..6 livelli occupati';
s[7]:=('Fr 7s1..Z=87...6s2,6p6');g[7]:='..7 livelli occupati';
s[8]:=('Be 2s2..Z=4....7s2,7p6');g[8]:='..2 livelli occupati';
s[9]:=('Mg 3s2..Z=12...2s2,2p6');g[9]:='..3 livelli occupati';
s[10]:=('Ca 4s2..Z=29...3s2,3p6');g[10]:='..4 livelli occupati';
s[11]:=('Sr 5s2..Z=38...4s2,4p6');g[11]:='..5 livelli occupati';
s[12]:=('Ba 6s2..Z=56...5s2,5p6');g[12]:='..6 livelli occupati';
s[13]:=('Ra 7s2..Z=88...6s2,6p6');g[13]:='..7 livelli occupati';
s[14]:=('F 2s2,2p5..Z=9....2s2,2p6');g[14]:='..2 livelli occupati';
s[15]:=('Cl 3s2,3p5..Z=17...3s2,3p6');g[15]:='..3 livelli occupati';
s[16]:=('Br 4s2,4p5..Z=35...4s2,4p6');g[16]:='..4 livelli occupati';
s[17]:=('I 5s2,5p5..Z=53...5s2,5p6');g[17]:='..5 livelli occupati';
s[18]:=('At 6s2,6p5..Z=85...6s2,6p6');g[18]:='..6 livelli occupati';
end;

procedure frase;
begin
outtextxy(50,400,'premi enter');
readln;
end;


procedure dise1(f,y:integer);(* raggio elementi 1 gruppo *)
var co,ra,x:integer;
begin
co:=1;ra:=10;x:=50;
outtextxy(300,10,'elementi primo gruppo');
for a:=1 to f do
begin
setcolor(co);
circle(x,y,ra); outtextxy(100+x,y,s[f]);
ra:=ra+5;co:=co+1;delay(tx);
end;
setfillstyle(a,a);
delay(tx);fillellipse(x,y,ra-10,ra-10);
fillellipse(x+350,y,ra-10,ra-10);
outtextxy(100,420,'raggio atomo neutro > raggio catione ');
outtextxy(100,430,'si perde ultimo livello ');
outtextxy(50,350,'atomo neutro');
outtextxy(250+X,350,'catione');
end;

procedure dise2(f,y:integer);
var co,ra,x:integer;
begin
ra:=5;co:=1;x:=50;
outtextxy(300,10,'elementi secondo gruppo');
for a:=1 to f do
begin
setcolor(co);
circle(x,y,ra);outtextxy(100+x,y,s[f+6]);
ra:=ra+5;co:=co+1;delay(tx);
end;
setfillstyle(a,a);
delay(tx);fillellipse(x,y,ra-10,ra-10);
fillellipse(350+x,y,ra-10,ra-10);
outtextxy(100,420,'raggio atomo neutro > raggio catione ');
outtextxy(100,430,'si perde ultimo livello ');
outtextxy(50,350,'atomo neutro');
outtextxy(250+X,350,'catione');
end;

procedure dise3(f,y:integer);
var co,ra,x:integer;
begin
ra:=5;co:=1;x:=50;
outtextxy(300,10,'elementi settimo gruppo');
for a:=1 to f do
begin
setcolor(co);
circle(x,y,ra);outtextxy(100+x,y,s[f+12]);
ra:=ra+5;co:=co+1;delay(tx);
end;
setfillstyle(a,a);
delay(tx);fillellipse(x,y,ra-10,ra-10);
fillellipse(400+x,y,ra+5,ra+5);
outtextxy(100,420,'raggio atomo neutro < raggio anione ');
outtextxy(100,430,'aumenta raggio ultimo livello ');
outtextxy(50,350,'atomo neutro');
outtextxy(350+X,350,'anione');
end;

procedure pro1;
begin
setbkcolor(c0);setcolor(c3);cancella;
dise1(1,20);dise1(2,60);dise1(3,110);dise1(4,170);dise1(5,230);
dise1(6,300);dise1(7,380);setcolor(c4);frase;cancella;
dise2(2,20);dise2(3,60);dise2(4,110);dise2(5,170);dise2(6,230);
dise2(7,300);frase;cancella;
dise3(2,20);dise3(3,60);dise3(4,110);dise3(5,170);dise3(6,230);
setcolor(c4);frase;cancella;
end;


begin
pulire;
c1:=2;c2:=3;c0:=0;C3:=4;C4:=14;
writeln('Considerazioni sulla variazione del raggio e volume atomico');
writeln('ATOMO NEUTRO > CATIONE');
writeln('ATOMO NEUTRO < ANIONE');
writeln('------------------------------------------------');
repeat
write('scrivi valore per velocit…: da 1 veloce a 200 lento ');readln(tx);
until tx<200;
pausa;pulire;dati;grafica;pro1;closegraph;restorecrtmode;textmode(2);
end.