fisica

esci con turbofisica.htm

legge isocora

 

program isocora;
(* legge dei gas isocora,a volume 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;
b1,b2,b3,b4,c1,c2,c3,sosta,tf:integer;


procedure presenta;
begin
writeln('misura di pressione di un gas contenuto in un recipiente');
writeln('mediante un MANOMETRO a mercurio aperto');
writeln;
writeln('su un ramo del manometro agisce la pressione atmosferica');
writeln('su un ramo del manometro agisce la pressione del gas ');
writeln;
writeln('la differenza eventuale di pressione viene misurata');
writeln('osservando la differenza di livello del liquido nei due rami');
writeln('del manometro:differenza misurata in mmHg come le pressioni');
writeln;
writeln('la pressione del gas risulta uguale alla pressione atmosferica');
writeln('piu la aggiunta della differenza osservata');
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('premi return,prego');readln;clrscr;
end;

procedure legge;
begin
writeln('per una determinata massa gassosa');
writeln('indipendentemente dalla natura chimica');
writeln('mantenendo costante il volume iniziale');
writeln('e variando la temperatura del gas nel recipiente');
writeln('si trova che la pressione aumenta con la temperatura');
writeln('per ogni grado di variazione della temperatura');
writeln('la pressione aumenta di un valore costante');
writeln('pari a 1/273 del valore della pressione iniziale del gas');
writeln('la pressione finale risulta pari a quella iniziale');
writeln('aumentata del prodotto della costante Po/273 ');
writeln('per la variazione di temperatura Dt');
writeln;
writeln('Pf = Po + Po*Dt/273 ');
writeln('modificando la formula precedente,per inserire ');
writeln('la temperatura assoluta T ,si ottiene:');
writeln('Pf = Po(273+Dt)/273 ...=(Po/273)*(273+Dt) ');
writeln('e ponendo K=Po/273..........T=273+Dt ');
writeln('si ottiene P = KT............');
writeln;
writeln('LA PRESSIONE DI UN GAS,A VOLUME 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 isocora dei gas');
setcolor(5);
settextstyle(3,0,3);
testo(20,60,'variazione della pressione di un gas');
setcolor(2);
testo(20,100,'a volume costante ');
setcolor(4);
testo(20,120,'proporzionale ad aumento di temperatura');
pausa;
end;

procedure calcolo;
var t,a,b:integer;
p:real;
begin
writeln('la pressione varia con la temperatura assoluta');
writeln('temperatura', ' pressione');
writeln;
writeln('temperatura iniziale=273 K...pressione iniziale=760 mmHg');
writeln;
for t:=273 to 546 do
begin
p:=(760/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('la pressione iniziale era 760 mmHg e la temperatura 273 kelvin');
writeln('aumentando di 1 grado kelvin la temperatura');
writeln('anche la pressione aumenta di un valore costante');
writeln('pari a 1/273 della pressione iniziale');
writeln;
writeln('aumentando quindi la temperatura di 273 gradi kelvin');
writeln('la pressione aumentera di 760 mmHg');
writeln;
writeln('come segue dalla formula:P=(Po/273)*Dt....= (760/273)*546 ');
writeln('semplificando: P = 760*2= 1512 mmHg ');
writeln;
pausa;
end;

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

procedure manometro(tf:integer);
var a:integer;
tfs:string[10];
begin
settextstyle(1,0,2);
testo(150,30,'manometro aria libera');
testo(150,50,'volume gas rimane costante');
settextstyle(0,1,1);
testo(120,200,'temperatura in aumento');
testo(140,160,'pressione del gas in aumemto');
settextstyle(0,0,0);
str(tf,tfs);
circle(100,100,50);
testo(70,100,'volume gas');
testo(75,110,'costante');
testo(300,260,'pressione atmosferica=760 mmHg');
setcolor(2);
testo(300,410,'pressione iniziale=760 mmHg');
setcolor(2);
testo(10,410,'temperatura iniziale=273 K');
setcolor(5);
testo(10,420,'temperatura finale='+tfs);
setcolor(14);
line(150,90,200,90); (* raccordo alto lungo *)
line(150,110,170,110); (* raccordo alto breve *)
line(170,110,170,400); (* verticale sinistra *)
line(200,90,200,370); (* verticale destra *)
line(170,400,280,400);
line(200,370,250,370);
line(282,400,282,90);
line(250,370,250,90);
line(220,90,220,370);
for a:=1 to 280 do
begin
if (a/5 = trunc(a/5)) then line(210,90+a,230,90+a);
end;
end;

procedure inizio;
var a:integer;
begin

bar(b1,c1,b2,c2);
bar(b1,c2,b3,c3);
bar(b4,c1,b3,c2);
setcolor(14);
testo(400,390,'temperatura in aumento');
setcolor(3);
testo(350,280,'pressione 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(1);
for a:=0 to tf-273 do
begin
py:=(760/273)*(273+a);
str(py,ps1);
pf:=(760/273)*tf;
str(273+a,ts1);
str(pf,ps);
testo(300,250-a,ps1);
testo(10,250-a,'kelvin='+ts1);
putimage(b4,c1-a,stantu,1);
putpixel(400+a,380-a,2);
delay(sosta);
setcolor(1);
testo(300,250-a,ps1);
setcolor(1);
testo(10,250-a,'kelvin='+ts1);
end;
setcolor(5);
testo(300,420,'pressione finale='+ps+' mmHg');
testo(300,250-a,'pressione finale='+ps1);
testo(10,250-a,'kelvin='+ts1);
end;


begin (* programma principale *)
clrscr;
(* parametri liquido manometrico e manometro *)
b1:=173;c1:=250;b2:=198;c2:=374;b3:=278;c3:=398;b4:=254;
grafica(1);simula;textmode(2);
presenta;legge;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.