listati per programmi turbo pascal e struttura atomica

periodi periodo raggio1 raggio2 raggio3 raggio4 raggio5

 

program periodi;
(* didattico per mostrare variazione periodica *)

uses crt,graph;
var tx,a:integer;
    e:array[1..32] of string;

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

procedure dati;
begin
 e[1]:='3..s1';
 e[2]:='4..s2';

 e[3]:='5..s2p1';e[4]:='6..s2p2';e[5]:='7..s2p3';
 e[6]:='8..s2p4';e[4]:='9..s2p5';e[7]:='10.s2p6';e[8]:='11.s1';
 e[9]:='12..s2';e[10]:='13.s2p1';e[11]:='14.s2p2';
 e[12]:='15.s2p3';e[13]:='16.s2p4';e[14]:='17.s2p5';e[15]:='18.s2p6';
 e[16]:='19.s1';e[2]:='20.s2'; e[17]:='31.s2p1';e[18]:='32.s2p2';
 e[19]:='33.s2p3';
 e[20]:='34.s2p4';e[21]:='35.s2p5';e[22]:='36.s2p6';e[23]:='37.s1';
 e[24]:='38.s2';e[25]:='49.s2p1';e[26]:='50.s2p2';
 e[27]:='51.s2p3';e[28]:='52.s2p4';e[29]:='53.s2p5';e[30]:='54.s2p6';

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 testo(x:integer;sx:string);
begin
outtextxy(x,20,sx);
end;

procedure frase;
begin
setcolor(14);
outtextxy(500,400,'premi enter');
readln;
end;

procedure testo1;
begin
 setcolor(14);
 outtextxy(10,300,'disponendo gli elementi secondo numero atomico crescente');
 outtextxy(10,310,'si osserva che alcune grandezze aumentano gradualmente');
 outtextxy(10,320,'procedendo da sinistra verso destra :da Z=3 a Z=10');
 outtextxy(10,330,'es.AFFINITA elettronica,ENERGIA ionizzazione,ELETTRONEGATIVITA');
 setcolor(2);
 outtextxy(20,340,'tuttavia con Z=11 si ritrovano valori improvvisamente bassi');
 outtextxy(20,350,'che vanno gradualmente aumentando fino a Z=18');
 setcolor(3);
 outtextxy(40,360,'e ugualmente con Z=19 fino a Z=36');
 outtextxy(40,370,'e ugualmente con Z=37 fino a Z=54');
 setcolor(5);
 outtextxy(50,380,'e ugualmente con Z=55 fino a Z= ');
 outtextxy(50,390,'e ugualmente con Z=   fino a Z= ');
end;

procedure testo9;
begin
 setcolor(14);
 outtextxy(10,300,'disponendo gli elementi secondo numero atomico crescente');
 outtextxy(10,310,'si osserva che alcune grandezze diminuiscono gradualmente');
 outtextxy(10,320,'procedendo da sinistra verso destra :da Z=3 a Z=10');
 outtextxy(10,330,'es.RAGGIO e VOLUME atomico');
 setcolor(2);
 outtextxy(20,340,'tuttavia con Z=11 si ritrovano valori improvvisamente alti');
 outtextxy(20,350,'che vanno gradualmente diminuendo fino a Z=18');
 setcolor(3);
 outtextxy(40,360,'e ugualmente con Z=19 fino a Z=36');
 outtextxy(40,370,'e ugualmente con Z=37 fino a Z=54');
 setcolor(5);
 outtextxy(50,380,'e ugualmente con Z=55 fino a Z= ');
 outtextxy(50,390,'e ugualmente con Z=   fino a Z= ');
end;


procedure pro1(x1,y1,h,z,n,g,w:integer);
var  s:string[10];
begin
for a:=1 to n do
 begin
  setcolor(a);
  setfillstyle(7,a);
  bar(x1,y1,x1+10,y1-h);
  str(z,s);
  outtextxy(x1,y1+w,s);
  sound(100+10*a);delay(tx);nosound;
  x1:=x1+20;h:=h+g;z:=z+1;
 end;
 testo1;
end;

procedure pro8(x1,y1,h,z,n,g,w:integer);
var  s:string[10];
begin
for a:=1 to n do
 begin
  setcolor(a);
  setfillstyle(7,a);
  bar(x1,y1,x1+10,y1+h);
  str(z,s);
  outtextxy(x1,y1-w,s);
  sound(1000-10*a);delay(tx);nosound;
  x1:=x1+20;h:=h-g;z:=z+1;
 end;
 testo9;
end;

procedure pro2(x1,y1,h,z,n,g,w:integer);
var  s:string[10];
begin
for a:=1 to n do
 begin
  setcolor(a+2);
  setfillstyle(7,a+2);
  bar(x1,y1,x1+10,y1-h);
  str(z,s);
  outtextxy(x1,y1+w,s);
  sound(100+10*a);delay(tx);nosound;
  x1:=x1+20;h:=h+g;z:=z+1;
 end;
end;

procedure pro9(x1,y1,h,z,n,g,w:integer);
var  s:string[10];
begin
for a:=1 to n do
 begin
  setcolor(a+2);
  setfillstyle(7,a+2);
  bar(x1,y1,x1+10,y1+h);
  str(z,s);
  outtextxy(x1,y1-w,s);
  sound(1000-10*a);delay(tx);nosound;
  x1:=x1+20;h:=h-g;z:=z+1;
 end;
end;

procedure pro3(x1,y1,h,z,n,g,w:integer);
var  s:string[10];
begin
for a:=1 to n do
 begin
  setcolor(a);
  setfillstyle(7,a);
  bar(x1,y1,x1+10,y1-h);
  str(z,s);
  outtextxy(x1,y1+w,s);
  sound(100+10*a);delay(tx);nosound;
  x1:=x1+20;h:=h+g;z:=z+1;
 end;
end;

 procedure pro4(x1,y1,h,z,n,g,w:integer);
var  s:string[10];
begin
for a:=1 to n do
 begin
  setcolor(a+2);
  setfillstyle(7,a+2);
  bar(x1,y1,x1+10,y1-h);
  str(z,s);
  outtextxy(x1,y1+w,s);
  sound(100+10*a);delay(tx);nosound;
  x1:=x1+20;h:=h+g;z:=z+1;
 end;
end;



procedure testop(x,y,c:integer;s:string);
begin
 setcolor(c);
 outtextxy(x,y,s);
end;
procedure testox(x,y,c:integer;s:string);
begin
setcolor(c);
outtextxy(x,y,s);
end;

procedure disegna(s:string);
begin
setcolor(14);
outtextxy(10,40,s);
outtextxy(10,50,'aumenta lungo una serie da sinistra verso destra');
testox(10,10,2,'2 periodo');pro1(1,200,50,3,8,10,10);
testox(162,10,3,'3 periodo');pro1(162,200,40,11,8,8,20);
testox(320,10,4,'4 periodo');pro1(320,200,30,19,2,5,30);
pro2(360,200,40,31,6,5,30);
testox(480,10,5,'5 periodo');pro1(480,200,15,37,2,3,40);
pro2(520,200,30,49,6,3,40);
frase;cleardevice;
end;

procedure prox(x,y,c:integer);
var s:string;
begin
 setcolor(c);
 for a:=1 to 8 do
  begin
  str(a,s);
  outtextxy(x,y,s);
  x:=x+20;
 end;
end;

procedure disegna8;
begin
setcolor(14);
outtextxy(10,40,'il RAGGIO atomico ');
outtextxy(10,50,'diminuisce lungo una serie da sinistra verso destra');
outtextxy(10,60,'aumenta lungo un gruppo da alto verso il basso');
testox(10,10,2,'2 periodo');pro8(1,200,80,3,8,10,10);
testox(162,10,3,'3 periodo');pro8(162,200,90,11,8,8,20);
testox(320,10,4,'4 periodo');pro8(320,200,100,19,2,5,30);
pro9(360,200,90,31,6,5,30);
testox(480,10,5,'5 periodo');pro8(480,200,110,37,2,3,40);
pro9(520,200,100,49,6,3,40);
prox(1,100,2);prox(162,110,3);prox(320,120,4);prox(480,130,5);
frase;cleardevice;
end;


procedure disegna3;
var x1,y1,a:integer;
    s:string;
begin
 x1:=1;y1:=440;
 setcolor(14);
 outtextxy(200,y1,'gruppi verticali da 1 a 8 ');
 for a:=1 to 8 do
  begin
   str(a,s);
   outtextxy(x1,y1,s);
   x1:=x1+20;
  end;
  y1:=100;
  for a:=1 to 4 do
   begin
    str(a+1,s);
    outtextxy(180,y1,s);
    y1:=y1+100;
   end;
 end;


 procedure testo4;
 begin
  setcolor(14);
  outtextxy(200,30,'disponendo le precedenti serie di elementi');
  outtextxy(200,50,'con caratteristiche gradualmente variabili');
  outtextxy(200,70,'in modo da sovrapporle,si ottiene una tabella');
  outtextxy(200,90,'con righe orizzontali dette PERIODI');
  outtextxy(200,110,'con righe verticali dette GRUPPI');
  setcolor(2);
  outtextxy(230,130,'i PERIODI risultano in numero di 7 (qui da 2 a 5 )');
  outtextxy(230,150,'i GRUPPI risultano in numero di 8');
  setcolor(3);
  outtextxy(200,170,'per gli elementi dello stesso PERIODO ');
  outtextxy(200,190,'le propriet… variano gradualmente da sinistra a destra');
  outtextxy(200,210,'per gli elementi dello stesso GRUPPO');
  outtextxy(200,230,'le propriet… risultano abbastanza simili');
  end;


procedure disegna2;
begin
pro3(1,100,30,3,8,10,10);
pro3(1,200,20,11,8,8,10);
pro3(1,300,15,19,2,5,10);
pro4(41,300,25,31,6,5,10);
pro3(1,400,10,37,2,3,10);
pro4(41,400,20,49,6,3,10);
end;

procedure testo5;
begin
 cleardevice;
 setcolor(14);
 outtextxy(200,100,'IPOTESI interpretativa della periodicit…');
 outtextxy(200,120,'osservata sperimentalmente');
 setcolor(4);
 outtextxy(200,140,'analizzando la configurazione elettronica');
 outtextxy(200,160,'dello ultimo livello degli elementi della tabella');
 outtextxy(200,180,'si osserva che gli elementi dello stesso GRUPPO');
 outtextxy(200,200,'presentano una configurazione identica');
 outtextxy(200,220,'per quanto riguarda il numero di elettroni e gli');
 outtextxy(200,240,'orbitali occupati:sempre e solo tipo - s,p -');
 outtextxy(200,260,'cambia invece il numero del livello ultimo occupato');
 setcolor(2);
 outtextxy(220,280,'probabilmente le propriet… simili entro un gruppo');
 outtextxy(220,300,'dipendono dalla configurazione elettronica simile');
 end;


 procedure disegna6;
  begin
    setcolor(2);
    outtextxy(10,30,'3..s1  4..s2  5..s2p1  6..s2p2  7..s2p3  8..s2p4  9..s2p5  10..s2p6');
    setcolor(3);
    outtextxy(10,50,'11.s1  12.s2  13.s2p1  14.s2p2  15.s2p3  16.s2p4  17.s2p5  18..s2p6');
    setcolor(4);
    outtextxy(10,70,'19.s1  20.s2  31.s2p1  32.s2p2  33.s2p3  34.s2p4  35.s2p5  36..s2p6');
    setcolor(5);
    outtextxy(10,90,'37.s1  38.s2  49.s2p1  50.s2p2  51.s2p3  52.s2p4  53.s2p5  54..s2p6');
    setcolor(14);
    outtextxy(10,110,'1      2      3        4        5        6        7        8 ');
    outtextxy(10,130,'gruppi con configurazione esterna simile');
    outtextxy(10,150,'numero di elettroni di valenza = numero gruppo ');
    outtextxy(10,170,'1       2      3        4        5        6        7        8 ');
    setcolor(5);
    outtextxy(10,190,'notare come lungo il periodo la configurazione passa');
    outtextxy(10,210,'gradualmente da s1 a s2p6');
    outtextxy(10,230,'in concordanza con la variazione sperimentalmente osservata');
   end;

 procedure finale;
 begin
  setcolor(14);
  outtextxy(100,300,'in conclusione possiamo affermare che ');
  outtextxy(100,310,'le caratteristiche fisico chimiche degli elementi');
  outtextxy(100,320,'si ripresentano periodicamente simili in elementi diversi');
  outtextxy(100,330,'quando siano ordinati secondo numero atomico crescente');
  setcolor(2);
  outtextxy(120,350,'variano gradualmente nei periodi da sinistra a destra');
  outtextxy(120,360,'variano gradualmente nei gruppi da alto al basso');
  setcolor(4);
  outtextxy(130,380,'sono molto simili allo interno dei gruppi');
  outtextxy(130,400,'sono in stretta relazione con configurazioni');
  outtextxy(130,410,'elettroniche esterne simili');
  settextstyle(1,0,2);
  outtextxy(20,100,'arrivederci');
 end;

begin
pulire;
writeln('Considerazioni sulla variazione periodica');
writeln('di alcune propriet… degli elementi ordinati secondo');
writeln('numero atomico crescente,osservate sperimentalmente');
writeln('nota:si prendono in esame solo alcuni elementi');
writeln('dal 3 a 54 escludendo elementi di transizione');
writeln;
writeln('si considerano alcune propriet… come:');
writeln('AFFINITA elettronica,ENERGIA di IONIZZAZIONE,ELETTRONEGATIVITA');
writeln;
repeat
write('scrivi valore per velocit…: da 1 veloce a 500 lento ');readln(tx);
until tx<501;
pausa;pulire;grafica;
disegna('variazione AFFINITA elettronica');
disegna('variazione ENERGIA IONIZZAZIONE');
disegna('variazione ELETTRONEGATIVITA');
disegna2;disegna3;frase;testo4;frase;
testo5;frase;cleardevice;
dati;disegna6;frase;cleardevice;
disegna2;disegna3;frase;cleardevice;disegna8;finale;frase;
closegraph;restorecrtmode;textmode(2);
end.


program periodo;
(* didattico per mostrare variazione periodica *)

uses crt,graph;
var tx,a:integer;
    e:array[1..32] of string;

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

procedure dati;
begin
 e[1]:='3..s1';
 e[2]:='4..s2';

 e[3]:='5..s2p1';e[4]:='6..s2p2';e[5]:='7..s2p3';
 e[6]:='8..s2p4';e[4]:='9..s2p5';e[7]:='10.s2p6';e[8]:='11.s1';
 e[9]:='12..s2';e[10]:='13.s2p1';e[11]:='14.s2p2';
 e[12]:='15.s2p3';e[13]:='16.s2p4';e[14]:='17.s2p5';e[15]:='18.s2p6';
 e[16]:='19.s1';e[2]:='20.s2'; e[17]:='31.s2p1';e[18]:='32.s2p2';
 e[19]:='33.s2p3';
 e[20]:='34.s2p4';e[21]:='35.s2p5';e[22]:='36.s2p6';e[23]:='37.s1';
 e[24]:='38.s2';e[25]:='49.s2p1';e[26]:='50.s2p2';
 e[27]:='51.s2p3';e[28]:='52.s2p4';e[29]:='53.s2p5';e[30]:='54.s2p6';

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 testo(x:integer;sx:string);
begin
outtextxy(x,20,sx);
end;

procedure frase;
begin
setcolor(14);
outtextxy(500,400,'premi enter');
readln;
end;

procedure testo1;
begin
 setcolor(14);
 outtextxy(10,300,'disponendo gli elementi secondo numero atomico crescente');
 outtextxy(10,310,'si osserva che alcune grandezze aumentano gradualmente');
 outtextxy(10,320,'procedendo da sinistra verso destra :da Z=3 a Z=10');
 outtextxy(10,330,'es.AFFINITA elettronica,ENERGIA ionizzazione,ELETTRONEGATIVITA');
 setcolor(2);
 outtextxy(20,340,'tuttavia con Z=11 si ritrovano valori improvvisamente bassi');
 outtextxy(20,350,'che vanno gradualmente aumentando fino a Z=18');
 setcolor(3);
 outtextxy(40,360,'e ugualmente con Z=19 fino a Z=36');
 outtextxy(40,370,'e ugualmente con Z=37 fino a Z=54');
 setcolor(5);
 outtextxy(50,380,'e ugualmente con Z=55 fino a Z= ');
 outtextxy(50,390,'e ugualmente con Z=   fino a Z= ');
end;

procedure testo9;
begin
 setcolor(14);
 outtextxy(10,300,'disponendo gli elementi secondo numero atomico crescente');
 outtextxy(10,310,'si osserva che alcune grandezze diminuiscono gradualmente');
 outtextxy(10,320,'procedendo da sinistra verso destra :da Z=3 a Z=10');
 outtextxy(10,330,'es.RAGGIO e VOLUME atomico');
 setcolor(2);
 outtextxy(20,340,'tuttavia con Z=11 si ritrovano valori improvvisamente alti');
 outtextxy(20,350,'che vanno gradualmente diminuendo fino a Z=18');
 setcolor(3);
 outtextxy(40,360,'e ugualmente con Z=19 fino a Z=36');
 outtextxy(40,370,'e ugualmente con Z=37 fino a Z=54');
 setcolor(5);
 outtextxy(50,380,'e ugualmente con Z=55 fino a Z= ');
 outtextxy(50,390,'e ugualmente con Z=   fino a Z= ');
end;


procedure pro1(x1,y1,h,z,n,g,w:integer);
var  s:string[10];
begin
for a:=1 to n do
 begin
  setcolor(a);
  setfillstyle(7,a);
  bar(x1,y1,x1+10,y1-h);
  str(z,s);
  outtextxy(x1,y1+w,s);
  sound(100+10*a);delay(tx);nosound;
  x1:=x1+20;h:=h+g;z:=z+1;
 end;
 testo1;
end;

procedure pro8(x1,y1,h,z,n,g,w:integer);
var  s:string[10];
begin
for a:=1 to n do
 begin
  setcolor(a);
  setfillstyle(7,a);
  bar(x1,y1,x1+10,y1+h);
  str(z,s);
  outtextxy(x1,y1-w,s);
  sound(100+10*a);delay(tx);nosound;
  x1:=x1+20;h:=h-g;z:=z+1;
 end;
 testo9;
end;

procedure pro2(x1,y1,h,z,n,g,w:integer);
var  s:string[10];
begin
for a:=1 to n do
 begin
  setcolor(a+2);
  setfillstyle(7,a+2);
  bar(x1,y1,x1+10,y1-h);
  str(z,s);
  outtextxy(x1,y1+w,s);
  sound(100+10*a);delay(tx);nosound;
  x1:=x1+20;h:=h+g;z:=z+1;
 end;
end;

procedure pro9(x1,y1,h,z,n,g,w:integer);
var  s:string[10];
begin
for a:=1 to n do
 begin
  setcolor(a+2);
  setfillstyle(7,a+2);
  bar(x1,y1,x1+10,y1+h);
  str(z,s);
  outtextxy(x1,y1-w,s);
  sound(100+10*a);delay(tx);nosound;
  x1:=x1+20;h:=h-g;z:=z+1;
 end;
end;

procedure pro3(x1,y1,h,z,n,g,w:integer);
var  s:string[10];
begin
for a:=1 to n do
 begin
  setcolor(a);
  setfillstyle(7,a);
  bar(x1,y1,x1+10,y1-h);
  str(z,s);
  outtextxy(x1,y1+w,s);
  sound(100+10*a);delay(tx);nosound;
  x1:=x1+20;h:=h+g;z:=z+1;
 end;
end;

 procedure pro4(x1,y1,h,z,n,g,w:integer);
var  s:string[10];
begin
for a:=1 to n do
 begin
  setcolor(a+2);
  setfillstyle(7,a+2);
  bar(x1,y1,x1+10,y1-h);
  str(z,s);
  outtextxy(x1,y1+w,s);
  sound(100+10*a);delay(tx);nosound;
  x1:=x1+20;h:=h+g;z:=z+1;
 end;
end;



procedure testop(x,y,c:integer;s:string);
begin
 setcolor(c);
 outtextxy(x,y,s);
end;
procedure testox(x,y,c:integer;s:string);
begin
setcolor(c);
outtextxy(x,y,s);
end;

procedure disegna(s:string);
begin
setcolor(14);
outtextxy(10,40,s);
outtextxy(10,50,'aumenta lungo una serie da sinistra verso destra');
testox(10,10,2,'2 periodo');pro1(1,200,50,3,8,10,10);
testox(162,10,3,'3 periodo');pro1(162,200,40,11,8,8,20);
testox(320,10,4,'4 periodo');pro1(320,200,30,19,2,5,30);
pro2(360,200,40,31,6,5,30);
testox(480,10,5,'5 periodo');pro1(480,200,15,37,2,3,40);
pro2(520,200,30,49,6,3,40);
frase;cleardevice;
end;

procedure disegna8;
begin
setcolor(14);
outtextxy(10,40,'il RAGGIO atomico ');
outtextxy(10,50,'diminuisce lungo una serie da sinistra verso destra');
testox(10,10,2,'2 periodo');pro8(1,200,80,3,8,10,10);
testox(162,10,3,'3 periodo');pro8(162,200,90,11,8,8,20);
testox(320,10,4,'4 periodo');pro8(320,200,100,19,2,5,30);
pro9(360,200,100,31,6,5,30);
testox(480,10,5,'5 periodo');pro8(480,200,110,37,2,3,40);
pro9(520,200,100,49,6,3,40);
frase;cleardevice;
end;


procedure disegna3;
var x1,y1,a:integer;
    s:string;
begin
 x1:=1;y1:=440;
 setcolor(14);
 outtextxy(200,y1,'gruppi verticali da 1 a 8 ');
 for a:=1 to 8 do
  begin
   str(a,s);
   outtextxy(x1,y1,s);
   x1:=x1+20;
  end;
  y1:=100;
  for a:=1 to 4 do
   begin
    str(a+1,s);
    outtextxy(180,y1,s);
    y1:=y1+100;
   end;
 end;


 procedure testo4;
 begin
  setcolor(14);
  outtextxy(200,30,'disponendo le precedenti serie di elementi');
  outtextxy(200,50,'con caratteristiche gradualmente variabili');
  outtextxy(200,70,'in modo da sovrapporle,si ottiene una tabella');
  outtextxy(200,90,'con righe orizzontali dette PERIODI');
  outtextxy(200,110,'con righe verticali dette GRUPPI');
  setcolor(2);
  outtextxy(230,130,'i PERIODI risultano in numero di 7 (qui da 2 a 5 )');
  outtextxy(230,150,'i GRUPPI risultano in numero di 8');
  setcolor(3);
  outtextxy(200,170,'per gli elementi dello stesso PERIODO ');
  outtextxy(200,190,'le propriet… variano gradualmente da sinistra a destra');
  outtextxy(200,210,'per gli elementi dello stesso GRUPPO');
  outtextxy(200,230,'le propriet… risultano abbastanza simili');
  end;


procedure disegna2;
begin
pro3(1,100,30,3,8,10,10);
pro3(1,200,20,11,8,8,10);
pro3(1,300,15,19,2,5,10);
pro4(41,300,25,31,6,5,10);
pro3(1,400,10,37,2,3,10);
pro4(41,400,20,49,6,3,10);
end;

procedure testo5;
begin
 cleardevice;
 setcolor(14);
 outtextxy(200,100,'IPOTESI interpretativa della periodicit…');
 outtextxy(200,120,'osservata sperimentalmente');
 setcolor(4);
 outtextxy(200,140,'analizzando la configurazione elettronica');
 outtextxy(200,160,'dello ultimo livello degli elementi della tabella');
 outtextxy(200,180,'si osserva che gli elementi dello stesso GRUPPO');
 outtextxy(200,200,'presentano una configurazione identica');
 outtextxy(200,220,'per quanto riguarda il numero di elettroni e gli');
 outtextxy(200,240,'orbitali occupati:sempre e solo tipo - s,p -');
 outtextxy(200,260,'cambia invece il numero del livello ultimo occupato');
 setcolor(2);
 outtextxy(220,280,'probabilmente le propriet… simili entro un gruppo');
 outtextxy(220,300,'dipendono dalla configurazione elettronica simile');
 end;


 procedure disegna6;
  begin
    setcolor(2);
    outtextxy(10,30,'3..s1  4..s2  5..s2p1  6..s2p2  7..s2p3  8..s2p4  9..s2p5  10..s2p6');
    setcolor(3);
    outtextxy(10,50,'11.s1  12.s2  13.s2p1  14.s2p2  15.s2p3  16.s2p4  17.s2p5  18..s2p6');
    setcolor(4);
    outtextxy(10,70,'19.s1  20.s2  31.s2p1  32.s2p2  33.s2p3  34.s2p4  35.s2p5  36..s2p6');
    setcolor(5);
    outtextxy(10,90,'37.s1  38.s2  49.s2p1  50.s2p2  51.s2p3  52.s2p4  53.s2p5  54..s2p6');
    setcolor(14);
    outtextxy(10,110,'1      2      3        4        5        6        7        8 ');
    outtextxy(10,130,'gruppi con configurazione esterna simile');
    outtextxy(10,150,'numero di elettroni di valenza = numero gruppo ');
    outtextxy(10,170,'1       2      3        4        5        6        7        8 ');
    setcolor(5);
    outtextxy(10,190,'notare come lungo il periodo la configurazione passa');
    outtextxy(10,210,'gradualmente da s1 a s2p6');
    outtextxy(10,230,'in concordanza con la variazione sperimentalmente osservata');
   end;

 procedure finale;
 begin
  setcolor(14);
  outtextxy(100,300,'in conclusione possiamo affermare che ');
  outtextxy(100,310,'le caratteristiche fisico chimiche degli elementi');
  outtextxy(100,320,'si ripresentano periodicamente simili in elementi diversi');
  outtextxy(100,330,'quando siano ordinati secondo numero atomico crescente');
  setcolor(2);
  outtextxy(120,350,'variano gradualmente nei periodi da sinistra a destra');
  outtextxy(120,360,'variano gradualmente nei gruppi da alto al basso');
  setcolor(4);
  outtextxy(130,380,'sono molto simili allo interno dei gruppi');
  outtextxy(130,400,'sono in stretta relazione con configurazioni');
  outtextxy(130,410,'elettroniche esterne simili');
  settextstyle(1,0,2);
  outtextxy(20,100,'arrivederci');
 end;

begin
pulire;
writeln('Considerazioni sulla variazione periodica');
writeln('di alcune propriet… degli elementi ordinati secondo');
writeln('numero atomico crescente,osservate sperimentalmente');
writeln('nota:si prendono in esame solo alcuni elementi');
writeln('dal 3 a 54 escludendo elementi di transizione');
writeln;
writeln('si considerano alcune propriet… come:');
writeln('AFFINITA elettronica,ENERGIA di IONIZZAZIONE,ELETTRONEGATIVITA');
writeln;
repeat
write('scrivi valore per velocit…: da 1 veloce a 500 lento ');readln(tx);
until tx<501;
pausa;pulire;grafica;
disegna('variazione AFFINITA elettronica');
disegna('variazione ENERGIA IONIZZAZIONE');
disegna('variazione ELETTRONEGATIVITA');
disegna2;disegna3;frase;testo4;frase;
testo5;frase;cleardevice;
dati;disegna6;frase;cleardevice;
disegna2;disegna3;frase;cleardevice;disegna8;finale;frase;
closegraph;restorecrtmode;textmode(2);
end.


program raggio1;
(* didattico per mostrare variazione raggio atomico *)

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 sosta;
begin
writeln('premi NVIO');readln;
end;

procedure pausa;
begin
outtextxy(30,400,'premi INVIO');readln;
end;

procedure cancella;
begin
grafica;
end;

procedure pulire;
begin
clrscr;
end;

procedure dati;
begin
s[1]:=('H     1s1..Z=1');g[1]:='..un solo livello occupato';
s[2]:=('Li    2s1..Z=3');g[2]:='..due livelli occupati';
s[3]:=('Na    3s1..Z=11');g[3]:='..tre livelli occupati';
s[4]:=('K     4s1..Z=19');g[4]:='..quattro livelli occupati';
s[5]:=('Rb    5s1..Z=37');g[5]:='..5 livelli occupati';
s[6]:=('Cs    6s1..Z=55');g[6]:='..6 livelli occupati';
s[7]:=('Fr    7s1..Z=87');g[7]:='..7 livelli occupati';
s[8]:=('Be    2s2..Z=4');g[8]:='..2 livelli occupati';
s[9]:=('Mg    3s2..Z=12');g[9]:='..3 livelli occupati';
s[10]:=('Ca   4s2..Z=29');g[10]:='..4 livelli occupati';
s[11]:=('Sr   5s2..Z=38');g[11]:='..5 livelli occupati';
s[12]:=('Ba   6s2..Z=56');g[12]:='..6 livelli occupati';
s[13]:=('Ra   7s2..Z=88');g[13]:='..7 livelli occupati';
s[14]:=('F    2s2,2p5..Z=9');g[14]:='..2 livelli occupati';
s[15]:=('Cl   3s2,3p5.Z=17');g[15]:='..3 livelli occupati';
s[16]:=('Br   4s2,4p5..Z=35');g[16]:='..4 livelli occupati';
s[17]:=('I    5s2,5p5.Z=53');g[17]:='..5 livelli occupati';
s[18]:=('At   6s2,6p5..Z=85');g[18]:='..6 livelli occupati';

p[1]:=('Li');   q[1]:=('2s1..........Z=3');
p[2]:=('Be');   q[2]:=('2s2..........Z=4');
p[3]:=('B');    q[3]:=('2s2,2p1......Z=5');
p[4]:=('C');    q[4]:=('2s2,2p2......Z=6');
p[5]:=('N');    q[5]:=('2s2,2p3......Z=7');
p[6]:=('O');    q[6]:=('2s2,2p4......Z=8');
p[7]:=('F');    q[7]:=('2s2,2p5......Z=9');
p[8]:=('Ne');   q[8]:=('2s2,2p6......Z=10');
p[9]:=('Na');   q[9]:=('3s1..........Z=11');
p[10]:=('Mg');  q[10]:=('3s2..........Z=12');
p[11]:=('Al');  q[11]:=('3s2,3p1......Z=13');
p[12]:=('Si');  q[12]:=('3s2,3p2......Z=14');
p[13]:=('P');   q[13]:=('3s2,3p3......Z=15');
p[14]:=('S');   q[14]:=('3s2,3p4......Z=16');
p[15]:=('Cl');  q[15]:=('3s2,3p5......Z=17');
p[16]:=('Ar');  q[16]:=('3s2,3p6......Z=18');
end;

procedure dise1(f,y:integer);
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(x,y,s[f]+g[f]);
 ra:=ra+5;co:=co+1;delay(tx);
 end; end;


 procedure dis1(f,y:integer);
var co,ra,x:integer;
begin
 co:=1;ra:=10;x:=50;
 outtextxy(100,10,'elementi primo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra); outtextxy(x,y,s[f]);
 ra:=ra+5;co:=co+1;delay(tx);
 end; end;


 procedure dise2(f,y:integer);
var co,ra,x:integer;
begin
 ra:=5;co:=1;x:=150;
 outtextxy(300,10,'elementi secondo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra);outtextxy(x,y,s[f+6]+g[f+6]);
 ra:=ra+5;co:=co+1; delay(tx);
 end; end;

 procedure dis2(f,y:integer);
var co,ra,x:integer;
begin
 ra:=5;co:=1;x:=200;
 outtextxy(200,20,'elementi secondo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra);outtextxy(x,y,s[f+6]);
 ra:=ra+5;co:=co+1;delay(tx);
 end; end;

 procedure dise3(f,y:integer);
var co,ra,x:integer;
begin
 ra:=5;co:=1;x:=150;
 outtextxy(300,10,'elementi settimo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra);outtextxy(x,y,s[f+12]+g[f+12]);
 ra:=ra+5;co:=co+1;delay(tx);
 end; end;

  procedure dis3(f,y:integer);
var co,ra,x:integer;
begin
 ra:=5;co:=1;x:=350;
 outtextxy(300,30,'elementi settimo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra);outtextxy(x,y,s[f+12]);
 ra:=ra+2;co:=co+1;delay(tx);
 end; end;

  procedure dise4;
var co,ra,y,x:integer;
begin
 ra:=25;co:=1;y:=50;x:=50;
 outtextxy(30,10,'elementi 2 periodo');
 for a:=1 to 8 do
 begin
 setcolor(co);
 circle(x,y,ra);circle(x,y,ra-2);outtextxy(x,y,p[a]);
 outtextxy(x,y+50+10*a,q[a]);
 ra:=ra-3;co:=co+1;x:=x+60;delay(tx);
 end; end;

  procedure dise5;
var co,ra,y,x:integer;
begin
 ra:=30;co:=1;y:=200;x:=50;
 outtextxy(30,160,'elementi 3 periodo');
 for a:=1 to 8 do
 begin
 setcolor(co);
 circle(x,y,ra);circle(x,y,ra-2);outtextxy(x,y,p[a+8]);
 outtextxy(x,y+50+10*a,q[a+8]);
 ra:=ra-3;co:=co+1;x:=x+60; delay(tx);
 end; end;

 procedure testo1(w:integer);
 begin
 outtextxy(w,330,'variazione raggio e volume atomico');
 outtextxy(w,340,'in un gruppo di elementi');
 outtextxy(w,350,'AUMENTA da alto verso il basso');
 outtextxy(w,360,'con aumentare del numero atomico');
 outtextxy(w,370,'per due motivi');
 outtextxy(w,390,'viene occupato un livello sempre pi— esterno');
 outtextxy(w,400,'aumenta effetto schermante di elettroni interni');
 outtextxy(w,410,'CONSEGUENZA:elettrone meno attirato');
 outtextxy(w,420,'raggio pi— grande');
 end;

 procedure testo2(w:integer);
 begin
 outtextxy(w,330,'variazione raggio e volume atomico');
 outtextxy(w,340,'in un periodo di elementi');
 outtextxy(w,350,'DIMINUISCE da sinistra verso destra:da 1 a 8 gruppo');
 outtextxy(w,360,'con aumentare del numero atomico');
 outtextxy(w,370,'AUMENTA numero protoni del nucleo con aumento di Z');
 outtextxy(w,390,'viene occupato sempre lo stesso ultimo livello');
 outtextxy(w,400,'rimane costante effetto schermante di elettroni interni');
 outtextxy(w,410,'CONSEGUENZA:elettrone pi— attirato dal nucleo');
 outtextxy(w,420,'raggio pi— piccolo');
 end;

procedure pro1;
begin
setbkcolor(c0);
setcolor(c3);
dise1(1,20);dise1(2,60);dise1(3,110);dise1(4,170);dise1(5,230);
dise1(6,300);dise1(7,380);
setcolor(c4);testo1(250);pausa;cancella;
dise2(2,20);dise2(3,60);dise2(4,110);dise2(5,170);dise2(6,230);
dise2(7,300);setcolor(c4);testo1(250);pausa;cancella;
dise3(2,20);dise3(3,60);dise3(4,110);dise3(5,170);dise3(6,230);
setcolor(c4);testo1(250);pausa;cancella;dise4;
setcolor(c4);testo2(180);
pausa;cancella;dise4;pausa;dise5;setcolor(c4);
testo2(180);pausa;cancella;
dis1(1,20);dis1(2,60);dis1(3,110);dis1(4,170);dis1(5,230);
dis1(6,300);dis1(7,380);setcolor(c4);pausa;
dis2(2,60);dis2(3,110);dis2(4,170);dis2(5,230);dis2(6,300);
dis2(7,380);pausa;
dis3(2,60);dis3(3,110);dis3(4,170);dis3(5,230);dis3(6,300);
setcolor(c4);pausa;cancella;
end;


begin
pulire;
c1:=2;c2:=3;c0:=0;C3:=4;C4:=14;
writeln('Considerazioni sulla variazione del raggio e volume atomico');
writeln('nei gruppi e nei periodi della tabella periodica');
writeln('Si evidenzia una variazione periodica del raggio lungo il periodo');
writeln('DIMINUISCE da sinistra verso destra ');
writeln('dal primo gruppo allo ottavo gruppo');
writeln('------------------------------------------------');
writeln('AUMENTA in ogni gruppo da alto verso il basso');
writeln('---------------------------------------------------');
repeat
 write('scrivi valore per velocit… :da 1 veloce a 200 lento ');readln(tx);
 until tx<201;
sosta;pulire;dati;grafica;pro1;closegraph;restorecrtmode;textmode(2);
end.


program raggio2;
(* didattico per mostrare variazione raggio atomico *)
 (* variante di raggio1 con visualizzazione schermatura *)

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');g[1]:='..un solo livello occupato';
s[2]:=('Li    2s1..Z=3');g[2]:='..due livelli occupati';
s[3]:=('Na    3s1..Z=11');g[3]:='..tre livelli occupati';
s[4]:=('K     4s1..Z=19');g[4]:='..quattro livelli occupati';
s[5]:=('Rb    5s1..Z=37');g[5]:='..5 livelli occupati';
s[6]:=('Cs    6s1..Z=55');g[6]:='..6 livelli occupati';
s[7]:=('Fr    7s1..Z=87');g[7]:='..7 livelli occupati';
s[8]:=('Be    2s2..Z=4');g[8]:='..2 livelli occupati';
s[9]:=('Mg    3s2..Z=12');g[9]:='..3 livelli occupati';
s[10]:=('Ca   4s2..Z=29');g[10]:='..4 livelli occupati';
s[11]:=('Sr   5s2..Z=38');g[11]:='..5 livelli occupati';
s[12]:=('Ba   6s2..Z=56');g[12]:='..6 livelli occupati';
s[13]:=('Ra   7s2..Z=88');g[13]:='..7 livelli occupati';
s[14]:=('F    2s2,2p5..Z=9');g[14]:='..2 livelli occupati';
s[15]:=('Cl   3s2,3p5.Z=17');g[15]:='..3 livelli occupati';
s[16]:=('Br   4s2,4p5..Z=35');g[16]:='..4 livelli occupati';
s[17]:=('I    5s2,5p5.Z=53');g[17]:='..5 livelli occupati';
s[18]:=('At   6s2,6p5..Z=85');g[18]:='..6 livelli occupati';

p[1]:=('Li');   q[1]:=('2s1..........Z=3');
p[2]:=('Be');   q[2]:=('2s2..........Z=4');
p[3]:=('B');    q[3]:=('2s2,2p1......Z=5');
p[4]:=('C');    q[4]:=('2s2,2p2......Z=6');
p[5]:=('N');    q[5]:=('2s2,2p3......Z=7');
p[6]:=('O');    q[6]:=('2s2,2p4......Z=8');
p[7]:=('F');    q[7]:=('2s2,2p5......Z=9');
p[8]:=('Ne');   q[8]:=('2s2,2p6......Z=10');
p[9]:=('Na');   q[9]:=('3s1..........Z=11');
p[10]:=('Mg');  q[10]:=('3s2..........Z=12');
p[11]:=('Al');  q[11]:=('3s2,3p1......Z=13');
p[12]:=('Si');  q[12]:=('3s2,3p2......Z=14');
p[13]:=('P');   q[13]:=('3s2,3p3......Z=15');
p[14]:=('S');   q[14]:=('3s2,3p4......Z=16');
p[15]:=('Cl');  q[15]:=('3s2,3p5......Z=17');
p[16]:=('Ar');  q[16]:=('3s2,3p6......Z=18');
end;

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

procedure disco;
begin
setfillstyle(4,2);fillellipse(500,40,20,20);
outtextxy(500,10,'effetto schermo..');
end;

procedure dise1(f,y:integer);
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]+g[f]);
 ra:=ra+5;co:=co+1;delay(tx);
 end;
 setfillstyle(a,a);
 delay(tx);fillellipse(x,y,ra-10,ra-10);
  end;


 procedure dis1(f,y:integer);
var co,ra,x:integer;
begin
 co:=1;ra:=10;x:=50;
 outtextxy(100,10,'elementi primo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra); outtextxy(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);
 end;


 procedure dise2(f,y:integer);
var co,ra,x:integer;
begin
 ra:=5;co:=1;x:=150;
 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]+g[f+6]);
 ra:=ra+5;co:=co+1;delay(tx);
 end;
 setfillstyle(a,a);
 delay(tx);fillellipse(x,y,ra-10,ra-10);
 end;

 procedure dis2(f,y:integer);
var co,ra,x:integer;
begin
 ra:=5;co:=1;x:=200;
 outtextxy(200,20,'elementi secondo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra);outtextxy(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);
  end;

 procedure dise3(f,y:integer);
var co,ra,x:integer;
begin
 ra:=5;co:=1;x:=150;
 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]+g[f+12]);
 ra:=ra+5;co:=co+1;delay(tx);
 end;
 setfillstyle(a,a);
 delay(tx);fillellipse(x,y,ra-10,ra-10);
 end;

  procedure dis3(f,y:integer);
var co,ra,x:integer;
begin
 ra:=5;co:=1;x:=350;
 outtextxy(300,30,'elementi settimo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra);outtextxy(x,y,s[f+12]);
 ra:=ra+2;co:=co+1;delay(tx);
 end;
 setfillstyle(a,a);
 delay(tx);fillellipse(x,y,ra-5,ra-5);
 end;

  procedure dise4;
var co,ra,y,x:integer;
begin
 ra:=25;co:=1;y:=50;x:=50;
 outtextxy(30,10,'elementi 2 periodo');
 for a:=1 to 8 do
 begin
 setcolor(co);
 circle(x,y,ra);circle(x,y,ra-2);outtextxy(x,y,p[a]);
 outtextxy(x,y+50+10*a,q[a]);
 ra:=ra-3;co:=co+1;x:=x+60;delay(tx);
 end; end;

  procedure dise5;
var co,ra,y,x:integer;
begin
 ra:=30;co:=1;y:=200;x:=50;
 outtextxy(30,160,'elementi 3 periodo');
 for a:=1 to 8 do
 begin
 setcolor(co);
 circle(x,y,ra);circle(x,y,ra-2);outtextxy(x,y,p[a+8]);
 outtextxy(x,y+50+10*a,q[a+8]);
 ra:=ra-3;co:=co+1;x:=x+60;delay(tx);
 end; end;

 procedure testo1(w:integer);
 begin
 outtextxy(w,330,'variazione raggio e volume atomico');
 outtextxy(w,340,'in un gruppo di elementi');
 outtextxy(w,350,'AUMENTA da alto verso il basso');
 outtextxy(w,360,'con aumentare del numero atomico');
 outtextxy(w,370,'per due motivi');
 outtextxy(w,390,'viene occupato un livello sempre pi— esterno');
 outtextxy(w,400,'aumenta effetto schermante di elettroni interni');
 outtextxy(w,410,'CONSEGUENZA:elettrone meno attirato');
 outtextxy(w,420,'raggio pi— grande');
 end;

 procedure testo2(w:integer);
 begin
 outtextxy(w,330,'variazione raggio e volume atomico');
 outtextxy(w,340,'in un periodo di elementi');
 outtextxy(w,350,'DIMINUISCE da sinistra verso destra:da 1 a 8 gruppo');
 outtextxy(w,360,'con aumentare del numero atomico');
 outtextxy(w,370,'AUMENTA numero protoni del nucleo con aumento di Z');
 outtextxy(w,390,'viene occupato sempre lo stesso ultimo livello');
 outtextxy(w,400,'rimane costante effetto schermante di elettroni interni');
 outtextxy(w,410,'CONSEGUENZA:elettrone pi— attirato dal nucleo');
 outtextxy(w,420,'raggio pi— piccolo');
 end;

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

dise2(2,20);dise2(3,60);dise2(4,110);dise2(5,170);dise2(6,230);
dise2(7,300);setcolor(c4);
testo1(250);frase;cancella;
dise3(2,20);dise3(3,60);dise3(4,110);dise3(5,170);dise3(6,230);
setcolor(c4);
testo1(250);frase;cancella;dise4;
setcolor(c4);testo2(180);frase;cancella;dise4;frase;dise5;
setcolor(c4);testo2(180);frase;cancella;disco;
dis1(1,20);dis1(2,60);dis1(3,110);dis1(4,170);dis1(5,230);
dis1(6,300);dis1(7,380);
dis2(2,60);dis2(3,110);dis2(4,170);dis2(5,230);dis2(6,300);
dis2(7,380);
dis3(2,60);dis3(3,110);dis3(4,170);dis3(5,230);dis3(6,300);
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('nei gruppi e nei periodi della tabella periodica');
writeln('Si evidenzia una variazione periodica del raggio lungo il periodo');
writeln('DIMINUISCE da sinistra verso destra ');
writeln('dal primo gruppo allo ottavo gruppo');
writeln('------------------------------------------------');
writeln('AUMENTA in ogni gruppo da alto verso il basso');
writeln('---------------------------------------------------');
repeat
 write('scrivi valore per velocit…: da 1 veloce a 200 lento ');readln(tx);
 until tx<201;
pausa;pulire;dati;grafica;pro1;closegraph;restorecrtmode;textmode(2);
end.


program raggio3;
(* didattico per mostrare variazione ionizzazione affinit… elettroneg *)
 (* variante di raggio2 con visualizzazione schermatura *)

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');g[1]:='..un solo livello occupato';
s[2]:=('Li    2s1..Z=3');g[2]:='..due livelli occupati';
s[3]:=('Na    3s1..Z=11');g[3]:='..tre livelli occupati';
s[4]:=('K     4s1..Z=19');g[4]:='..quattro livelli occupati';
s[5]:=('Rb    5s1..Z=37');g[5]:='..5 livelli occupati';
s[6]:=('Cs    6s1..Z=55');g[6]:='..6 livelli occupati';
s[7]:=('Fr    7s1..Z=87');g[7]:='..7 livelli occupati';
s[8]:=('Be    2s2..Z=4');g[8]:='..2 livelli occupati';
s[9]:=('Mg    3s2..Z=12');g[9]:='..3 livelli occupati';
s[10]:=('Ca   4s2..Z=29');g[10]:='..4 livelli occupati';
s[11]:=('Sr   5s2..Z=38');g[11]:='..5 livelli occupati';
s[12]:=('Ba   6s2..Z=56');g[12]:='..6 livelli occupati';
s[13]:=('Ra   7s2..Z=88');g[13]:='..7 livelli occupati';
s[14]:=('F    2s2,2p5..Z=9');g[14]:='..2 livelli occupati';
s[15]:=('Cl   3s2,3p5.Z=17');g[15]:='..3 livelli occupati';
s[16]:=('Br   4s2,4p5..Z=35');g[16]:='..4 livelli occupati';
s[17]:=('I    5s2,5p5.Z=53');g[17]:='..5 livelli occupati';
s[18]:=('At   6s2,6p5..Z=85');g[18]:='..6 livelli occupati';

p[1]:=('Li');   q[1]:=('2s1..........Z=3');
p[2]:=('Be');   q[2]:=('2s2..........Z=4');
p[3]:=('B');    q[3]:=('2s2,2p1......Z=5');
p[4]:=('C');    q[4]:=('2s2,2p2......Z=6');
p[5]:=('N');    q[5]:=('2s2,2p3......Z=7');
p[6]:=('O');    q[6]:=('2s2,2p4......Z=8');
p[7]:=('F');    q[7]:=('2s2,2p5......Z=9');
p[8]:=('Ne');   q[8]:=('2s2,2p6......Z=10');
p[9]:=('Na');   q[9]:=('3s1..........Z=11');
p[10]:=('Mg');  q[10]:=('3s2..........Z=12');
p[11]:=('Al');  q[11]:=('3s2,3p1......Z=13');
p[12]:=('Si');  q[12]:=('3s2,3p2......Z=14');
p[13]:=('P');   q[13]:=('3s2,3p3......Z=15');
p[14]:=('S');   q[14]:=('3s2,3p4......Z=16');
p[15]:=('Cl');  q[15]:=('3s2,3p5......Z=17');
p[16]:=('Ar');  q[16]:=('3s2,3p6......Z=18');
end;

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

procedure disco;
begin
setfillstyle(4,2);fillellipse(550,420,20,20);
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);
 outtextxy(100,420,'da ALTO a BASSO :raggio,schermatura: AUMENTO');
 outtextxy(100,430,'ionizzazione,affinit…,elettronegativit…:DIMINUZIONE');
  end;

procedure die1(f,y,ra,co:integer);(* ionizzazione elementi 1 gruppo *)
var x:integer;
begin
 x:=350;
 outtextxy(300,10,'elementi primo gruppo');
 setcolor(co);
 circle(x,y,ra);
 outtextxy(100+x,y,'energia ionizzazione');
 outtextxy(100+x,y+10,'affinit… elettronica');
 outtextxy(100+x,y+20,'elettronegativit…');
 delay(tx);
 end;


 procedure dis1(f,y:integer);
var co,ra,x:integer;
begin
 co:=1;ra:=10;x:=50;
 outtextxy(100,10,'elementi primo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra); outtextxy(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);
 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);
 outtextxy(100,420,'da ALTO a BASSO :raggio,schermatura: AUMENTO');
 outtextxy(100,430,'ionizzazione,affinit…,elettronegativit…:DIMINUZIONE');
 end;

 procedure dis2(f,y:integer);
var co,ra,x:integer;
begin
 ra:=5;co:=1;x:=200;
 outtextxy(200,20,'elementi secondo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra);outtextxy(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);
  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);
 outtextxy(100,420,'da ALTO a BASSO :raggio,schermatura: AUMENTO');
 outtextxy(100,430,'ionizzazione,affinit…,elettronegativit…:DIMINUZIONE');
 end;

  procedure dis3(f,y:integer);
var co,ra,x:integer;
begin
 ra:=5;co:=1;x:=350;
 outtextxy(300,30,'elementi settimo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra);outtextxy(x,y,s[f+12]);
 ra:=ra+2;co:=co+1;delay(tx);
 end;
 setfillstyle(a,a);
 delay(tx);fillellipse(x,y,ra-5,ra-5);
 end;

  procedure dise4;
var co,ra,y,x:integer;
begin
 ra:=25;co:=1;y:=50;x:=50;
 outtextxy(30,10,'elementi 2 periodo');
 for a:=1 to 8 do
 begin
 setcolor(co);
 circle(x,y,ra);circle(x,y,ra-2);outtextxy(x,y,p[a]);
 outtextxy(x,y+50+10*a,q[a]);
 ra:=ra-3;co:=co+1;x:=x+60;delay(tx);
 end; end;

 procedure die4;
var co,ra,y,x:integer;
begin
 ra:=5;co:=1;y:=250;x:=50;
 outtextxy(30,10,'elementi 2 periodo');
 for a:=1 to 8 do
 begin
 setcolor(co);
 circle(x,y,ra);outtextxy(x,y,p[a]);
 ra:=ra+3;co:=co+1;x:=x+60;delay(tx);
 end;
 setcolor(c4);
 outtextxy(100,300,'DA SINISTRA verso DESTRA:variazione');
 outtextxy(100,310,'raggio.....................DIMINUISCE');
 outtextxy(100,320,'schermatura costante');
 outtextxy(100,330,'numero atomico aumenta');
 outtextxy(100,340,'energia ionizzazione.......AUMENTA');
 outtextxy(100,350,'affinit… elettronica.......AUMENTA');
 outtextxy(100,360,'elettronegativit…..........AUMENTA');
 end;

  procedure dise5;
var co,ra,y,x:integer;
begin
 ra:=30;co:=1;y:=50;x:=50;
 outtextxy(30,160,'elementi 3 periodo');
 for a:=1 to 8 do
 begin
 setcolor(co);
 circle(x,y,ra);circle(x,y,ra-2);outtextxy(x,y,p[a+8]);
 outtextxy(x,y+50+10*a,q[a+8]);
 ra:=ra-3;co:=co+1;x:=x+60;delay(tx);
 end; end;

 procedure die5;
var co,ra,y,x:integer;
begin
 ra:=5;co:=1;y:=250;x:=50;
 outtextxy(30,160,'elementi 3 periodo');
 for a:=1 to 8 do
 begin
 setcolor(co);
 circle(x,y,ra);outtextxy(x,y,p[a+8]);
 outtextxy(x,y+50+10*a,q[a+8]);
 ra:=ra+3;co:=co+1;x:=x+60;delay(tx);
 end;
 setcolor(c4);
 outtextxy(100,370,'DA SINISTRA verso DESTRA:variazione');
 outtextxy(100,380,'raggio.....................DIMINUISCE');
 outtextxy(100,400,'schermatura costante');
 outtextxy(100,410,'numero atomico aumenta');
 outtextxy(100,420,'energia ionizzazione.......AUMENTA');
 outtextxy(100,430,'affinit… elettronica.......AUMENTA');
 outtextxy(100,440,'elettronegativit…..........AUMENTA');
 end;


 procedure testo1(w:integer);
 begin
 outtextxy(w,330,'variazione raggio e volume atomico');
 outtextxy(w,340,'in un gruppo di elementi');
 outtextxy(w,350,'AUMENTA da alto verso il basso');
 outtextxy(w,360,'con aumentare del numero atomico');
 outtextxy(w,370,'per due motivi');
 outtextxy(w,390,'viene occupato un livello sempre pi— esterno');
 outtextxy(w,400,'aumenta effetto schermante di elettroni interni');
 outtextxy(w,410,'CONSEGUENZA:elettrone meno attirato');
 outtextxy(w,420,'raggio pi— grande');
 end;

 procedure testo2(w:integer);
 begin
 outtextxy(w,330,'variazione raggio e volume atomico');
 outtextxy(w,340,'in un periodo di elementi');
 outtextxy(w,350,'DIMINUISCE da sinistra verso destra:da 1 a 8 gruppo');
 outtextxy(w,360,'con aumentare del numero atomico');
 outtextxy(w,370,'AUMENTA numero protoni del nucleo con aumento di Z');
 outtextxy(w,390,'viene occupato sempre lo stesso ultimo livello');
 outtextxy(w,400,'rimane costante effetto schermante di elettroni interni');
 outtextxy(w,410,'CONSEGUENZA:elettrone pi— attirato dal nucleo');
 outtextxy(w,420,'raggio pi— piccolo');
 end;

procedure pro1;
begin
setbkcolor(c0);
setcolor(c3);
testo1(200);frase;cancella;
dise1(1,20);dise1(2,60);dise1(3,110);dise1(4,170);dise1(5,230);
dise1(6,300);dise1(7,380);disco;setcolor(c4);frase;
die1(1,20,30,1);die1(2,60,25,2);die1(3,110,20,3);
die1(4,170,15,4);die1(5,230,10,5);
die1(6,300,8,6);die1(7,380,5,7);frase;cancella;

dise2(2,20);dise2(3,60);dise2(4,110);dise2(5,170);dise2(6,230);
dise2(7,300);frase;
die1(8,20,30,2);die1(9,60,25,3);die1(10,110,20,4);
die1(11,170,15,5);die1(12,230,10,6);
die1(13,300,8,7);frase;cancella;
dise3(2,20);dise3(3,60);dise3(4,110);dise3(5,170);dise3(6,230);
setcolor(c4);frase;
die1(14,20,30,2);die1(15,60,25,3);die1(16,110,20,4);
die1(17,170,15,5);die1(18,230,10,6);frase;cancella;
testo2(200);frase;cancella;
dise4;frase;die4;frase;cancella;
dise5;frase;die5;frase;cancella;
setcolor(c4);testo2(180);frase;cancella;disco;
dis1(1,20);dis1(2,60);dis1(3,110);dis1(4,170);dis1(5,230);
dis1(6,300);dis1(7,380);
dis2(2,60);dis2(3,110);dis2(4,170);dis2(5,230);dis2(6,300);
dis2(7,380);
dis3(2,60);dis3(3,110);dis3(4,170);dis3(5,230);dis3(6,300);
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('energia ionizzazione,affinit… elettronica,elettronegativit…');
writeln('nei gruppi e nei periodi della tabella periodica');
writeln('Si evidenzia una variazione periodica del raggio lungo il periodo');
writeln('DIMINUISCE da sinistra verso destra ');
writeln('dal primo gruppo allo ottavo gruppo');
writeln('------------------------------------------------');
writeln('AUMENTA in ogni gruppo da alto verso il basso');
writeln('---------------------------------------------------');
writeln('Energia di ionizzazione,Affinit… elettronica,Elettronegativit…');
writeln('DIMINUISCONO nel gruppo da alto verso il basso');
writeln('AUMENTANO nel periodo da sinistra verso destra');
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.


program raggio4;
(* didattico per mostrare variazione ionizzazione affinit… elettroneg *)
 (* variante di raggio3 con visualizzazione schermatura *)

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');g[1]:='..un solo livello occupato';
s[2]:=('Li    2s1..Z=3');g[2]:='..due livelli occupati';
s[3]:=('Na    3s1..Z=11');g[3]:='..tre livelli occupati';
s[4]:=('K     4s1..Z=19');g[4]:='..quattro livelli occupati';
s[5]:=('Rb    5s1..Z=37');g[5]:='..5 livelli occupati';
s[6]:=('Cs    6s1..Z=55');g[6]:='..6 livelli occupati';
s[7]:=('Fr    7s1..Z=87');g[7]:='..7 livelli occupati';
s[8]:=('Be    2s2..Z=4');g[8]:='..2 livelli occupati';
s[9]:=('Mg    3s2..Z=12');g[9]:='..3 livelli occupati';
s[10]:=('Ca   4s2..Z=29');g[10]:='..4 livelli occupati';
s[11]:=('Sr   5s2..Z=38');g[11]:='..5 livelli occupati';
s[12]:=('Ba   6s2..Z=56');g[12]:='..6 livelli occupati';
s[13]:=('Ra   7s2..Z=88');g[13]:='..7 livelli occupati';
s[14]:=('F    2s2,2p5..Z=9');g[14]:='..2 livelli occupati';
s[15]:=('Cl   3s2,3p5.Z=17');g[15]:='..3 livelli occupati';
s[16]:=('Br   4s2,4p5..Z=35');g[16]:='..4 livelli occupati';
s[17]:=('I    5s2,5p5.Z=53');g[17]:='..5 livelli occupati';
s[18]:=('At   6s2,6p5..Z=85');g[18]:='..6 livelli occupati';

p[1]:=('Li');   q[1]:=('2s1..........Z=3');
p[2]:=('Be');   q[2]:=('2s2..........Z=4');
p[3]:=('B');    q[3]:=('2s2,2p1......Z=5');
p[4]:=('C');    q[4]:=('2s2,2p2......Z=6');
p[5]:=('N');    q[5]:=('2s2,2p3......Z=7');
p[6]:=('O');    q[6]:=('2s2,2p4......Z=8');
p[7]:=('F');    q[7]:=('2s2,2p5......Z=9');
p[8]:=('Ne');   q[8]:=('2s2,2p6......Z=10');
p[9]:=('Na');   q[9]:=('3s1..........Z=11');
p[10]:=('Mg');  q[10]:=('3s2..........Z=12');
p[11]:=('Al');  q[11]:=('3s2,3p1......Z=13');
p[12]:=('Si');  q[12]:=('3s2,3p2......Z=14');
p[13]:=('P');   q[13]:=('3s2,3p3......Z=15');
p[14]:=('S');   q[14]:=('3s2,3p4......Z=16');
p[15]:=('Cl');  q[15]:=('3s2,3p5......Z=17');
p[16]:=('Ar');  q[16]:=('3s2,3p6......Z=18');
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;
 outtextxy(100,420,'da ALTO a BASSO :raggio,schermatura: AUMENTO');
 outtextxy(100,430,'ionizzazione,affinit…,elettronegativit…:DIMINUZIONE');
  end;

procedure die1(f,y,ra,co:integer);(* ionizzazione elementi 1 gruppo *)
var x:integer;
begin
 x:=50;
 outtextxy(300,10,'elementi primo gruppo');
 setcolor(c4);
 circle(x,y,ra);
 outtextxy(300+x,y,'energia ionizzazione');
 outtextxy(300+x,y+10,'affinit… elettronica');
 outtextxy(300+x,y+20,'elettronegativit…');
 delay(tx);
 end;


 procedure dis1(f,y:integer);
var co,ra,x:integer;
begin
 co:=1;ra:=10;x:=50;
 outtextxy(100,10,'elementi primo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra); outtextxy(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);
 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);
 outtextxy(100,420,'da ALTO a BASSO :raggio,schermatura: AUMENTO');
 outtextxy(100,430,'ionizzazione,affinit…,elettronegativit…:DIMINUZIONE');
 end;

 procedure dis2(f,y:integer);
var co,ra,x:integer;
begin
 ra:=5;co:=1;x:=200;
 outtextxy(200,20,'elementi secondo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra);outtextxy(x,y,s[f+6]);
 ra:=ra+5;co:=co+1;delay(tx);
end;  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);
 outtextxy(100,420,'da ALTO a BASSO :raggio,schermatura: AUMENTO');
 outtextxy(100,430,'ionizzazione,affinit…,elettronegativit…:DIMINUZIONE');
 end;

  procedure dis3(f,y:integer);
var co,ra,x:integer;
begin
 ra:=5;co:=1;x:=350;
 outtextxy(300,30,'elementi settimo gruppo');
 for a:=1 to f do
 begin
 setcolor(co);
 circle(x,y,ra);outtextxy(x,y,s[f+12]);
 ra:=ra+2;co:=co+1;delay(tx);
 end; end;

  procedure dise4;
var co,ra,y,x:integer;
begin
 ra:=25;co:=1;y:=50;x:=50;
 outtextxy(30,10,'elementi 2 periodo');
 for a:=1 to 8 do
 begin
 setcolor(co);
 circle(x,y,ra);circle(x,y,ra-2);outtextxy(x,y,p[a]);
 outtextxy(x,y+50+10*a,q[a]);
 ra:=ra-3;co:=co+1;x:=x+60;delay(tx);
 end; end;

 procedure die4;
var co,ra,y,x:integer;
begin
 ra:=5;co:=1;y:=50;x:=50;
 outtextxy(30,10,'elementi 2 periodo');
 for a:=1 to 8 do
 begin
 setcolor(c4);
 circle(x,y,ra);
 ra:=ra+3;co:=co+1;x:=x+60;delay(tx);
 end;
 setcolor(c4);
 outtextxy(100,300,'DA SINISTRA verso DESTRA:variazione');
 outtextxy(100,310,'raggio.....................DIMINUISCE');
 outtextxy(100,320,'schermatura costante');
 outtextxy(100,330,'numero atomico aumenta');
 outtextxy(100,340,'energia ionizzazione.......AUMENTA');
 outtextxy(100,350,'affinit… elettronica.......AUMENTA');
 outtextxy(100,360,'elettronegativit…..........AUMENTA');
 end;

  procedure dise5;
var co,ra,y,x:integer;
begin
 ra:=30;co:=1;y:=50;x:=50;
 outtextxy(30,160,'elementi 3 periodo');
 for a:=1 to 8 do
 begin
 setcolor(co);
 circle(x,y,ra);circle(x,y,ra-2);outtextxy(x,y,p[a+8]);
 outtextxy(x,y+50+10*a,q[a+8]);
 ra:=ra-3;co:=co+1;x:=x+60;delay(tx);
 end; end;

 procedure die5;
var co,ra,y,x:integer;
begin
 ra:=5;co:=1;y:=50;x:=50;
 outtextxy(30,160,'elementi 3 periodo');
 for a:=1 to 8 do
 begin
 setcolor(c4);
 circle(x,y,ra);
 ra:=ra+3;co:=co+1;x:=x+60;delay(tx);
 end;
 setcolor(c4);
 outtextxy(100,370,'DA SINISTRA verso DESTRA:variazione');
 outtextxy(100,380,'raggio.....................DIMINUISCE');
 outtextxy(100,400,'schermatura costante');
 outtextxy(100,410,'numero atomico aumenta');
 outtextxy(100,420,'energia ionizzazione.......AUMENTA');
 outtextxy(100,430,'affinit… elettronica.......AUMENTA');
 outtextxy(100,440,'elettronegativit…..........AUMENTA');
 end;


 procedure testo1(w:integer);
 begin
 outtextxy(w,330,'variazione raggio e volume atomico');
 outtextxy(w,340,'in un gruppo di elementi');
 outtextxy(w,350,'AUMENTA da alto verso il basso');
 outtextxy(w,360,'con aumentare del numero atomico');
 outtextxy(w,370,'per due motivi');
 outtextxy(w,390,'viene occupato un livello sempre pi— esterno');
 outtextxy(w,400,'aumenta effetto schermante di elettroni interni');
 outtextxy(w,410,'CONSEGUENZA:elettrone meno attirato');
 outtextxy(w,420,'raggio pi— grande');
 end;

 procedure testo2(w:integer);
 begin
 outtextxy(w,330,'variazione raggio e volume atomico');
 outtextxy(w,340,'in un periodo di elementi');
 outtextxy(w,350,'DIMINUISCE da sinistra verso destra:da 1 a 8 gruppo');
 outtextxy(w,360,'con aumentare del numero atomico');
 outtextxy(w,370,'AUMENTA numero protoni del nucleo con aumento di Z');
 outtextxy(w,390,'viene occupato sempre lo stesso ultimo livello');
 outtextxy(w,400,'rimane costante effetto schermante di elettroni interni');
 outtextxy(w,410,'CONSEGUENZA:elettrone pi— attirato dal nucleo');
 outtextxy(w,420,'raggio pi— piccolo');
 end;

procedure pro1;
begin
setbkcolor(c0);
setcolor(c3);
testo1(200);frase;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;
die1(1,20,30,1);die1(2,60,25,2);die1(3,110,20,3);
die1(4,170,15,4);die1(5,230,10,5);
die1(6,300,8,6);die1(7,380,5,7);frase;cancella;

dise2(2,20);dise2(3,60);dise2(4,110);dise2(5,170);dise2(6,230);
dise2(7,300);frase;
die1(8,20,30,2);die1(9,60,25,3);die1(10,110,20,4);
die1(11,170,15,5);die1(12,230,10,6);
die1(13,300,8,7);frase;cancella;
dise3(2,20);dise3(3,60);dise3(4,110);dise3(5,170);dise3(6,230);
setcolor(c4);frase;
die1(14,20,30,2);die1(15,60,25,3);die1(16,110,20,4);
die1(17,170,15,5);die1(18,230,10,6);frase;cancella;
testo2(200);frase;cancella;
dise4;frase;die4;frase;cancella;
dise5;frase;die5;frase;cancella;
setcolor(c4);testo2(180);frase;cancella;
outtextxy(300,10,'variazione raggi atomici');
dis1(1,20);dis1(2,60);dis1(3,110);dis1(4,170);dis1(5,230);
dis1(6,300);dis1(7,380);
dis2(2,60);dis2(3,110);dis2(4,170);dis2(5,230);dis2(6,300);
dis2(7,380);
dis3(2,60);dis3(3,110);dis3(4,170);dis3(5,230);dis3(6,300);
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('energia ionizzazione,affinit… elettronica,elettronegativit…');
writeln('nei gruppi e nei periodi della tabella periodica');
writeln('Si evidenzia una variazione periodica del raggio lungo il periodo');
writeln('DIMINUISCE da sinistra verso destra ');
writeln('dal primo gruppo allo ottavo gruppo');
writeln('------------------------------------------------');
writeln('AUMENTA in ogni gruppo da alto verso il basso');
writeln('---------------------------------------------------');
writeln('Energia di ionizzazione,Affinit… elettronica,Elettronegativit…');
writeln('DIMINUISCONO nel gruppo da alto verso il basso');
writeln('AUMENTANO nel periodo da sinistra verso destra');
repeat
 write('scrivi valore per velocir… :da 1 veloce a 200 lento ');readln(tx);
  until tx<200;
pausa;pulire;dati;grafica;pro1;closegraph;restorecrtmode;textmode(2);
end.

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.