fisica

esci con turbofisica.htm

legge isobara

 

program isobara;
(* legge dei gas isobara,a pressione costante *)
(* disco 70 dispensa 55 con turbo pascal v.5 *)

uses crt,graph;
type string15=string[20];
type vet=array[1..800] of byte;
var stantu:vet;
sosta,tf,nu:integer;


procedure presenta;
begin
writeln('misura di volume di un gas contenuto in un recipiente');
writeln('la pressione del gas risulta uguale alla pressione atmosferica');
writeln;
writeln('indica valore temperatura gas nel contenitore in gradi C');
writeln('provare con valori compresi tra 0 e 100 ');
repeat
readln(tf);
until (tf>=0) and (tf<=100);
tf:=273+tf;
writeln('indica velocita simulazione 10=rapido...500=lento');
readln(sosta);
writeln('se desideri anche esempio numerico:scrivi 1..altrimenti 2');
readln(nu);
writeln('premi return,prego');readln;clrscr;
end;

procedure legge;
begin
writeln('per una determinata massa gassosa');
writeln('indipendentemente dalla natura chimica');
writeln('mantenendo costante la pressione iniziale');
writeln('e variando la temperatura del gas nel recipiente');
writeln('si trova che il volume aumenta con la temperatura');
writeln('per ogni grado di variazione della temperatura');
writeln('il volume aumenta di un valore costante');
writeln('pari a 1/273 del valore del volume iniziale del gas');
writeln('il volume finale risulta pari a quello iniziale');
writeln('aumentato del prodotto della costante Vo/273 ');
writeln('per la variazione di temperatura Dt');
writeln;
writeln('Vf = Vo + Vo*Dt/273 ');
writeln('modificando la formula precedente,per inserire ');
writeln('la temperatura assoluta T ,si ottiene:');
writeln('Vf = Vo(273+Dt)/273 ...=(Vo/273)*(273+Dt) ');
writeln('e ponendo K=Vo/273..........T=273+Dt ');
writeln('si ottiene V = KT............');
writeln;
writeln('IL VOLUME DI UN GAS,A PRESSIONE COSTANTE,RISULTA');
WRITELN('PROPORZIONALE ALLA TEMPERATURA ASSOLUTA.');
writeln;
writeln('premi return,prego');readln;clrscr;
end;

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

begin
sc:=0; (* valore risoluzione 0,1,2,3,4,5,8,9 *)
tp:=0; (* valore valido 1 - 0 palette *)
stringa:='bgi'; (* indica ove cercare GRAPH *)
initgraph(sc,tp,stringa); (* attiva scheda grafica *)
setbkcolor(f); (* colore sfondo *)
end;

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

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

procedure simula;
begin
settextstyle(1,0,4);
testo(20,20,'legge isobara dei gas');
setcolor(5);
settextstyle(3,0,3);
testo(20,60,'variazione del volume di un gas');
setcolor(2);
testo(20,100,'a pressione costante ');
setcolor(4);
testo(20,120,'proporzionale ad aumento di temperatura');
pausa;
end;

procedure calcolo;
var t,a,b:integer;
p:real;
begin
writeln('il volume varia con la temperatura assoluta');
writeln('temperatura', ' volume');
writeln;
writeln('temperatura iniziale=273 K...volume iniziale=273 litri');
writeln;
for t:=273 to 546 do
begin
p:=(273/273)*t;
writeln(t,' ',p);
delay(100);
case t of
290,310,330,350,370,390,410,430,450,470,490,510,530,546:begin
readln;clrscr;end;
end;
end;
readln;
writeln('il volume iniziale era 273 litri e la temperatura 273 kelvin');
writeln('aumentando di 1 grado kelvin la temperatura');
writeln('anche il volume aumenta di un valore costante');
writeln('pari a 1/273 del volume iniziale');
writeln;
writeln('aumentando quindi la temperatura di 273 gradi kelvin');
writeln('il volume aumentera fino a 546 litri');
writeln;
writeln('come segue dalla formula:V=(Vo/273)*Dt....= (273/273)*546 ');
writeln('semplificando: V = 273*2= 546 litri ');
writeln;
pausa;
end;

procedure disegni;
begin
setfillstyle(1,14);
bar(20,20,30,36);
getimage(20,20,30,36,stantu);
gotoxy(1,1);clreol;
gotoxy(1,2);clreol;
end;

procedure manometro(tf:integer);
var a:integer;
tfs:string[10];
begin
testo(300,50,'pressione atmosferica=760 mmHg');
settextstyle(1,0,2);
testo(150,30,'pressione del gas costante');
setcolor(2);
testo(180,190,'temperatura in aumento');
settextstyle(0,0,0);
setcolor(5);
testo(180,160,'volume del gas in aumemto');
str(tf,tfs);
circle(100,100,50);
testo(55,100,'pressione gas');
testo(75,110,'costante');

setcolor(2);
testo(300,410,'volume iniziale=273 litri');
setcolor(2);
testo(10,410,'temperatura iniziale=273 K');
setcolor(5);
testo(10,420,'temperatura finale='+tfs);
setcolor(14);
line(150,90,600,90); (* raccordo alto lungo *)
line(150,110,600,110); (* raccordo alto breve *)
line(180,140,600,140);
testo(180,60,'volume iniziale=273 litri');
for a:=1 to 420 do
begin
if (a/5 = trunc(a/5)) then line(180+a,130,180+a,150);
end;
end;

procedure inizio;
var a:integer;
begin

setcolor(14);
testo(400,390,'temperatura in aumento');
setcolor(3);
testo(350,280,'volume in aumento');
line(400,270,400,380);
line(400,380,600,380);
end;

procedure muove(tf:integer);
var a:integer;
ps,ps1,ts1:string[25];
pf,py:real;
begin
setcolor(14);
for a:=0 to tf-273 do
begin
py:=(273/273)*(273+a);
str(py,ps1);
pf:=(273/273)*tf;
str(273+a,ts1);
str(pf,ps);
setcolor(4);
testo(180+a,80,ps1);
setcolor(2);
testo(180+a,120,'kelvin='+ts1);
putimage(180+a,91,stantu,1);
putpixel(400+a,380-a,2);
delay(sosta);
putimage(180+a,91,stantu,1);
setcolor(1);
testo(180+a,80,ps1);
setcolor(1);
testo(180+a,120,'kelvin='+ts1);
end;
setcolor(5);
testo(300,420,'volume finale='+ps+' litri');
testo(180+a,80,'volume finale='+ps1);
testo(180+a,120,'kelvin='+ts1);
putimage(180+a,91,stantu,1);
end;


begin (* programma principale *)
clrscr;
(* parametri liquido manometrico e manometro *)

grafica(1);simula;textmode(2);
presenta;legge;
if (nu=1) then calcolo;
grafica(1);disegni;manometro(tf);inizio;pausa;muove(tf);pausa;
grafica(1);disegni;manometro(273);inizio;pausa;muove(273);pausa;
grafica(1);disegni;manometro(373);inizio;pausa;muove(373);pausa;
end.