fiaica

esci con turbofisica.htm

program fusi3;
(* processo di fusione e solidificazione *)
(* disco 70 dispensa 55 con turbo pascal v.5 *)

uses crt,graph;
type string15=string[20];
var
altro,sosta,f:integer;


procedure presenta;
begin
writeln('passaggi di stato :fusione e solidificazione');
writeln;
writeln('riscaldando una sostanza pura solida,si osserva un aumento');
writeln('della temperatura,che varia con la natura della sostanza,');
writeln('a parita di massa considerata');
writeln;
writeln('continuando a fornire energia si nota che la temperatura');
writeln('non aumenta piu:la sostanza inizia la fusione');
writeln('e durante tutta la fusione la temperatura rimane costante');
writeln;
writeln('quando tutta la sostanza risulta fusa,la temperatura ');
writeln('del liquido originato riprende ad aumentare se si fornisce');
writeln('altra energia.');
writeln;
writeln('il fenomeno inverso avviene con la solidificazione :');
writeln('il liquido cede calore e solidifica a temperatura costante');
writeln('temperatura che risulta uguale a quella di fusione');
writeln;
writeln('indica velocita simulazione 10=rapido...500=lento');
readln(sosta);
writeln('premi return,prego');readln;clrscr;
end;

procedure grafica; (* attiva pagina grafica*)
(* coordinate finestra,colore sfondo e disegno *)
var stringa:string;
sc,tp:integer;

begin
sc:=0;tp:=0;
stringa:='c:\tp\bgi'; (* indica ove cercare GRAPH *)
initgraph(sc,tp,stringa); (* attiva scheda grafica *)
setbkcolor(0); (* colore sfondo *)
end;

procedure testo(x,y:integer;nome:string); (* stampa legenda testo *)
begin
outtextxy(x,y,nome);
setcolor(14);
end;

procedure testo1(x,y:integer;nome:string); (* stampa legenda testo *)
begin
setcolor(1);
outtextxy(x,y,nome);
setcolor(14);
end;

procedure pausa; (* premere return per proseguire *)
var ch:char;
begin
testo(450,440,'premi return,prego');
ch:=readkey;
setcolor(1);
testo(450,440,'premi return,prego');
setcolor(14);
end;

procedure leggi;
begin
testo(100,40,'1.ogni sostanza pura fonde o solidifica ad una temperatura');
testo(100,50,' caratteristica della sostanza considerata');
testo(100,60,'2.temperatura di fusione = temperatura di solidificazione');
testo(100,70,'3.durante la fusione,solidificazione,la temperatura');
testo(100,80,' rimane costante');
setcolor(5);
testo(100,90,' calore di fusione assorbito per fondere completamente');
testo(100,100,' unita di massa alla temperatura di fusione');
setcolor(3);
testo(100,110,' calore di solidificazione ceduto per solidificare');
testo(100,120,' completamente unita di massa a temperatura di solid.ne');
end;

procedure assi;
begin
setfillstyle(2,5);
bar(10,50,50,400);
setcolor(2);
settextstyle(3,0,2);
line(30,50,30,400);
testo(20,20,'temperatura in variazione');
line(20,400,600,400);
settextstyle(1,0,1);
testo(20,420,'calore fornito (fusione) o ceduto(solidificazione)');
settextstyle(0,0,0);
end;

procedure disegno1(x1,x2,y,k,c:integer);
var a,x,z1:integer;

begin
x:=50;z1:=1;
setcolor(c);
outtextxy(530,110,'sostanza in');
for a:=x1 to x2 do
begin
putpixel(X+a,y-5,14);
line(x+a,300,x+a,y);
if (a<100) then outtextxy(300,50,'solido in riscaldamento');
if (a>200) and (a<=250) then outtextxy(300,60,'liquido in riscaldamento');
if (a>250) and (a<300) then outtextxy(300,70,'liquido in raffreddamento');
if (a>400) then outtextxy(300,80,'solido in raffreddamento');
if (a>=100) and (a<=200) then
begin
line(530,270-z1,618,270-z1);
z1:=z1+1;
outtextxy(530,120,'fusione');
outtextxy(10,180,'T.fusione= T.solidificazione');
end;
if (a>=300) and (a<=400) then
begin
line(530,170+z1,618,170+z1);
z1:=z1+1;
setcolor(1);
outtextxy(530,120,'fusione');
setcolor(14);
outtextxy(510,130,'solidificazione');
setcolor(c);
end;

sound(200+y);
delay(sosta);
y:=Y-k;
end;
setcolor(14);
line(300,300,300,150);
setcolor(2);
nosound;
end;

procedure disegno(x1,x2,y,k,c:integer);
var a,x:integer;

begin
x:=50;
setcolor(c);
for a:=x1 to x2 do
begin
putpixel(X+a,y-5,14);
putpixel(x+a,310,4);
sound(200+y);
delay(sosta);
y:=Y-k;
end;
nosound;
end;

procedure disegno2;
begin
line(50,300,550,300); (* orizzontale*)
line(150,300,150,200);
line(250,300,250,200);
line(300,300,300,150);
line(350,300,350,200);
line(450,300,450,200);
end;

procedure fine;
begin
exit;
end;

procedure fonde;
begin
rectangle (529,150,620,271);
setfillstyle(1,2);
bar(540,170,610,270);
end;

procedure metalli;
begin
setcolor(2);
outtextxy(100,60,'sostanza n.1:alto punto di fusione');
line(50,300,150,200);
line(150,200,300,200);
line(300,200,350,150);
setcolor(4);
outtextxy(100,70,'sostanza n.2:basso punto di fusione');
line(50,300,150,250);
line(150,250,300,250);
line(300,250,400,150);
testo(100,80,'curve di riscaldamento e fusione simili');
testo(100,90,'temperature di fusione e calore assorbito diversi');
testo(100,100,'per sostanze di natura diversa a parita di massa');
end;


procedure programma; (* procedura principale*)
procedure scelta;
begin
cleardevice;
setcolor(7);
testo(10,40,'per altra prova:scrivi velocita 10..100..return :1 return');
testo(10,60,'per finire :scrivi 0 e return...................:0 return');
read(sosta);read(altro);
if (altro=1) then programma
else if(altro=0) then fine;
end;
begin (* procedura fondamentale *)
grafica;
leggi;
pausa;
grafica;
assi;
metalli;
pausa;
grafica;assi;
fonde;
setcolor(2);
testo(50,330,'solido');
disegno(0,100,300,1,2); (* fusione *)
setcolor(5);
testo(50,360,'processo di fusione');
setcolor(4);
testo(150,320,'solido+liquido');
disegno(100,200,200,0,4);
setcolor(3);
testo(270,310,'liquido');
disegno(200,250,200,1,3);
pausa;
disegno(250,300,150,-1,3);(* solidificazione *)
setcolor(5);
testo(350,360,'processo di solidificazione');
setcolor(4);
testo(350,320,'liquido+solido');
disegno(300,400,200,0,4);
setcolor(2);
testo(500,330,'solido');
disegno(400,500,200,-1,2);
setcolor(14);
disegno2;
pausa;
setcolor(2);
testo(50,330,'solido');
disegno1(0,100,300,1,2); (* fusione *)
setcolor(5);
testo(50,360,'processo di fusione');
setcolor(4);
testo(150,320,'solido+liquido');
disegno1(100,200,200,0,4);
setcolor(3);
testo(270,310,'liquido');
disegno1(200,250,200,1,3);
disegno2;
pausa;
disegno1(250,300,150,-1,3);(* solidificazione *)
setcolor(4);
testo(350,320,'liquido+solido');
disegno1(300,400,200,0,14);
setcolor(5);
testo(350,360,'processo di solidificazione');
setcolor(2);
testo(500,330,'solido');
disegno1(400,500,200,-1,2);
pausa;
scelta;
end;

begin (* programma principale *)
clrscr;
presenta;
programma;
closegraph;restorecrtmode;
end.