listati per programmi in turbo pascal
fusione e solidifcazione
fonde, fonde1, fusi2, fusi3
Program fonde; (* grafico per simulazione leggi della FUSIONE *) (* derivato da FUSIONE1 *) uses crt,graph; var a,x,y,z,valore,t2:integer; procedure grafica; (* attivazione comandi grafici *) var sc,tp:integer;stringa:string; BEGIN sc:=0; tp:=0; stringa:='c:\tp\bgi'; initgraph(sc,tp,stringa); rectangle(1,1,630,400); setbkcolor(black); setcolor(white); end; procedure pausa; (* attesa che si prema enter *) var ch:char; begin setcolor(white); outtextxy(500,10,'premi enter '); ch:=readkey; setcolor(black); outtextxy(500,10,'premi enter'); setcolor(white); end; procedure testo(x,y:integer;frase:string); begin setcolor(white); outtextxy(x,y,frase); end; procedure cancellagrafo; begin cleardevice; end; procedure sosta1; begin delay(t2); end; procedure sosta2; begin delay(valore); end; procedure assi; begin setcolor(white); moveto(20,100);lineto(20,300);lineto(400,300); testo(30,100,'temperatura di fusione,solidificazione'); testo(30,320,'calore fornito a solido e liquido'); testo(200,330,'calore ceduto da liquido e solido'); pausa; end; procedure assi2; begin setcolor(white); moveto(20,100);lineto(20,300);lineto(400,300); rectangle(400,100,450,300); rectangle(460,100,510,300); bar(405,250,445,300); setcolor(6); bar(465,200,505,300); testo(30,100,'temperatura di fusione'); testo(30,320,'calore fornito a solido e liquido');pausa; moveto(1,1); end; procedure moto1(x,y,z:integer); (* solido *) begin for a:=1 to 60 do begin moveto(x,300);setcolor(6);lineto(x,z);sosta2; x:=x+1;z:=z-1; end; end; procedure moto2(x,y,z:integer); (* fusione *) begin for a:=1 to 60 do begin moveto(x,300);setcolor(white);lineto(x,z);sosta2; x:=x+1; end; end; procedure moto3(x,y,z:integer); begin for a:=1 to 60 do begin moveto(x,y);setcolor(6);lineto(x,z);sosta2; x:=x+1;z:=z-1; end; end; procedure moto4(x,y,z:integer); begin for a:=1 to 60 do begin moveto(x,y);setcolor(6);lineto(x,z);sosta2; x:=x+1;z:=z+1; end; end; procedure moto1a(x,y,z:integer); (* solido *) begin for a:=1 to 60 do begin moveto(x,z);setcolor(6);lineto(x,z-1);sosta2; x:=x+1;z:=z-1; end; end; procedure moto2a(x,y,z:integer); (* fusione *) begin for a:=1 to 60 do begin moveto(x,z);setcolor(white);lineto(x+1,z);sosta2; x:=x+1; end; end; procedure moto1b(x,y,z:integer); (* solido *) begin for a:=1 to 40 do begin moveto(x,z);setcolor(white);lineto(x,z-2);sosta2; x:=x+1;z:=z-2; end; end; procedure moto2b(x,y,z:integer); (* fusione *) begin for a:=1 to 40 do begin moveto(x,z);setcolor(white);lineto(x+1,z);sosta2; x:=x+1; end; end; procedure moto1c; begin moveto(20,300);lineto(80,200);lineto(140,200);lineto(200,150); end; procedure moto2c; begin setlinestyle(3,3,3); moveto(20,300);lineto(120,200);lineto(220,200);lineto(300,150);sosta1; setlinestyle(1,1,1); end; procedure modelli; begin circle(100,100,50); circle(200,100,50); circle(300,100,50); circle(400,100,50);setlinestyle(1,1,1); moveto(100,100);lineto(200,100); setlinestyle(1,1,3);moveto(300,100);lineto(400,100);setlinestyle(1,1,1); testo(100,20,'sostanza A');testo(100,40,' EcA = EcB '); testo(100,60,' FaA < FaB '); testo(300,20,'sostanza B'); testo(300,40,' EcB = EcA ');testo(300,60,' FaB > FaA '); testo(100,90,' EcA > FaA ');testo(300,90,' EcB < FaB ');pausa; testo(20,200,'alla temperatura T si verifica che EcA = EcB '); testo(20,210,'se la ...................EcA > FaA la sostanza A fonde '); moveto(100,100);setcolor(black);lineto(200,100);setcolor(white); testo(20,220,'mentre se la .....EcB < FaB la sostanza B non fonde ');pausa; testo(20,240,'si deve aumentare la T in modo che anche la EcB diventi'); testo(20,250,'maggiore della FaB ');pausa; circle(100,260,50); circle(200,260,50); setlinestyle(1,1,1); moveto(100,260);lineto(200,260); testo(20,350,'nella solidificazione si libera energia dovuta ai legami'); testo(20,360,'che si formano:la temperatura rimane costante'); setlinestyle(0,0,1); end; procedure ipotesi; begin testo(20,20,'1..le particelle costituenti i corpi solidi,liquidi,gassosi'); testo(20,30,'sono animate da moti vibratori,dotate di energia cinetica Ec'); testo(20,40,'proporzionale alla temperatura Ec =kT '); testo(20,50,'uguale per tutte le particelle alla stessa temperatura EcA=EcB '); pausa; testo(20,70,'2..le particelle si attirano a causa delle forze di '); testo(20,80,'interazione,in funzione della diversa natura delle sostanze '); testo(20,90,'e dei diversi tipi di legami:ionici,covalenti,deboli.. '); testo(20,100,'EcA = EcB ....FaA <> FaB ');pausa; testo(20,120,'3..un corpo solido se riceve energia aumenta la sua Ec: '); testo(20,130,'indicata da aumento di temperatura ');pausa; testo(20,150,'4..se la energia fornita permette alla Ec di superare la '); testo(20,160,'forza di attrazione Fa , ( Ec > Fa ) ,il corpo inizia la '); testo(20,170,'fusione:la energia fornita durante la fusione viene tutta '); testo(20,180,'utilizzata per compiere il lavoro di separazione delle '); testo(20,190,'particelle,e quindi la temperatura non aumenta ');pausa; testo(20,210,'5..terminata la fusione,altra energia fornita fa crescere '); testo(20,220,'energia cinetica del liquido,indicata da temperatura che '); testo(20,230,'riprende a crescere ');pausa; testo(20,250,'6..essendo diverse le FaA e FaB ,risultera necessario '); testo(20,260,'fornire diverse quantita di energia per raggiungere la '); testo(20,270,'fusione,e quindi diverse temperature in funzione di A e B '); testo(20,280,'es. se (FaA < FaB) e (EcA = EcB) e (FaA < EcA e FaB > EcB) '); testo(20,290,'potra fondere sostanza A e non sostanza B '); pausa;cancellagrafo; testo(20,20,'8..il calore necessario per fondere completamente una mole '); testo(20,30,'di una sostanza,varia in funzione della forza dei legami '); testo(20,40,'da vincere tra le diverse particelle:CALORE di FUSIONE '); pausa; testo(20,60,'9..durante la SOLIDIFICAZIONE la temperatura rimane costante '); testo(20,70,'anche se il corpo cede calore,perche si vanno formando dei '); testo(20,80,'legami tra le particelle che solidificano,e tali legami '); testo(20,90,'liberano energia che subentra a quella ceduta ');sosta1; testo(20,110,'10..il calore ceduto da una mole che solidifica equivale '); testo(20,120,'al calore assorbito durante la fusione '); testo(20,130,'CALORE di FUSIONE = CALORE di SOLIDIFICAZIONE '); pausa;cancellagrafo;setcolor(white); modelli;pausa; end; procedure leggif; begin testo(20,20,'1..ogni sostanza pura fonde a una temperatura caratteristica'); testo(20,30,'2..durante la fusione,la temperatura rimane costante'); sosta1; testo(20,40,'1..ogni sostanza pura solidifica a una temperatura caratteristica'); testo(20,50,'2..durante la solidificazione la temperatura rimane costante'); sosta1; testo(20,70,'3..temperatura di fusione = temperatura di solidificazione'); sosta1; end; procedure pro1; begin outtextxy(20,20,'sostanze diverse A,B a parita di moli'); outtextxy(20,30,'ricevono le stesse quantita di calore'); outtextxy(20,40,'tabella delle temperature misurate'); outtextxy(20,50,'----------------------------------------'); outtextxy(20,60,'prendi nota della tabella e disegna i diagrammi Calore/Ta,Tb'); outtextxy(20,70,'cerca di esprimere le leggi osservate');pausa; outtextxy(20,80,'------------------------------------------'); outtextxy(20,100,'calore...tB....tA '); outtextxy(20,110,'10.......10....15 '); outtextxy(20,120,'20.......20....30 '); outtextxy(20,130,'30.......30....45 '); outtextxy(20,140,'40.......40....60 '); outtextxy(20,150,'50.......50....60 '); outtextxy(20,160,'60.......60....60 '); outtextxy(20,170,'70.......70....75 '); outtextxy(20,180,'80.......80....90 '); outtextxy(20,190,'90.......80...105 '); outtextxy(20,200,'100......80...120 '); outtextxy(20,210,'110......90...135 '); outtextxy(20,220,'120.....100...150 '); pausa;cancellagrafo; testo(20,200,'esperimento e curva di riscaldamento e fusione'); testo(20,230,'sostanze diverse A,B sono rifornite con la stessa energia'); testo(20,240,'1..entrambe mostrano un aumento di temperatura proporzionale'); testo(20,250,' alla energia fornita,ma diverso per le diverse sostanze'); testo(20,260,'2..entrambe cessano di aumentare la temperatura,pur '); testo(20,270,' continuando ad assorbire energia termica'); testo(20,280,'3..il valore della temperatura che permane immutato varia'); testo(20,290,' con la natura delle sostanze tA=60...tB=80 '); testo(20,300,'4..ad un certo punto entrambe le sostanze riprendono ad'); testo(20,310,' aumentare la temperatura'); testo(20,320,'5..INTERPRETAZIONE e ANALISI del fenomeno '); pausa; end; procedure pro2; begin assi2; testo(20,20,'diagramma di riscaldamento e fusione sostanze pure diverse'); testo(20,30,'con uguale numero di moli'); testo(350,80,'sostanza A :tA=60'); moto1a(20,0,300);sosta1;moto2a(80,0,240);sosta1;moto1a(140,0,240); pausa;testo(370,100,'sostanza B :tB=80'); moto1b(20,0,300);sosta1;moto2a(60,0,220);sosta1;moto1b(120,0,220);sosta1; testo(20,50,'curva di riscaldamento simile in A e B '); testo(20,60,'cambia temperatura di fusione,pendenza grafico');pausa; cancellagrafo; end; procedure pro3; begin outtextxy(20,20,'sostanze uguali A1,A2 con diverso numero di moli'); outtextxy(20,30,'ricevono le stesse quantita di calore'); outtextxy(20,40,'tabella delle temperature misurate');pausa; outtextxy(20,60,'calore ..tA1.....tA2'); outtextxy(20,70,'10.......10.......5'); outtextxy(20,80,'20...... 20.......10'); outtextxy(20,90,'30.......30.......15'); outtextxy(20,100,'40.......40.......20'); outtextxy(20,110,'50.......50.......25'); outtextxy(20,120,'60.......60.......30' ); outtextxy(20,130,'70.......60.......35' ); outtextxy(20,140,'80.......60.......40' ); outtextxy(20,150,'90.......70.......45' ); outtextxy(20,160,'100......80.......50' ); outtextxy(20,170,'110......90.......55' ); outtextxy(20,180,'120.....100.......60' ); outtextxy(20,190,'130.....110.......60' ); outtextxy(20,200,'140.....120.......60' ); outtextxy(20,210,'150.....130.......60' ); outtextxy(20,220,'160.....140.......60' ); outtextxy(20,230,'170.....150.......60' ); outtextxy(20,240,'180.....160.......65' ); outtextxy(20,250,'190.....170.......70' ); pausa; outtextxy(20,260,'----------------------------------------'); outtextxy(20,270,'prendi nota della tabella e disegna i diagrammi Calore/tA1,tA2'); outtextxy(20,280,'cerca di esprimere le leggi osservate'); pausa; end; procedure pro4; begin assi2; testo(20,20,'diagramma di riscaldamento e fusione sostanze pure uguali'); testo(20,30,'con diverso numero di moli A1 < A2 '); testo(350,80,'sostanza A1 '); moto1c;pausa;testo(400,100,'sostanza A2'); moto2c; testo(20,340,'esprimi le tue osservazioni sui diagrammi');pausa; testo(20,50,'curva di riscaldamento simile in A1 e A2 '); testo(20,60,'cambia calore fornito ,pendenza grafico'); testo(20,70,'temperatura di fusione identica tA1 = tA2 '); pausa; end; procedure pro5; begin assi; testo(20,340,'processo di riscaldamento e FUSIONE'); testo(20,80,'SOLIDO riscaldato:temperatura aumenta');moto1(20,0,300); sosta1;testo(30,200,'Tfusione');testo(10,240,'----'); testo(40,70,'FUSIONE in corso:temperatura costante');moto2(80,0,240); sosta1; testo(60,60,'LIQUIDO riscaldato:temperatura aumenta');moto3(140,300,240); pausa; testo(100,350,'processo di raffreddamento e SOLIDIFICAZIONE'); testo(100,10,'LIQUIDO cede calore:temperatura decresce'); moto4(200,300,180);sosta1;testo(30,190,'Tsolidificazione'); testo(120,20,'SOLIDIFICAZIONE in corso:temperatura costante'); moto2(260,300,240);sosta1; testo(140,30,'SOLIDO cede calore:temperatura decresce'); moto4(320,300,240); moveto(200,180);setcolor(white);lineto(200,300); testo(30,280,'Solido');testo(90,230,'So+Li');testo(180,260,'Liquido'); testo(270,230,'Li+So');testo(330,280,'Solido'); pausa;cancellagrafo; testo(20,200,'osservazioni sperimentali'); testo(20,230,'permettono di ricavare le leggi della FUSIONE,SOLIDIFICAZIONE'); leggif;pausa;cancellagrafo; testo(20,20,'si definisce CALORE latente di FUSIONE'); testo(20,30,'il calore assorbito dalla unita di massa che si trovi alla'); testo(20,40,'temperatura di fusione,per fondere completamente:'); testo(20,50,'Calore caratteristico per ogni sostanza pura');pausa; testo(20,120,'si definisce CALORE latente di SOLIDIFICAZIONE'); testo(20,130,'il calore ceduto dalla unita di massa che si trovi alla'); testo(20,140,'temperatura di solidificazione,per solidificare completamente:'); testo(20,150,'Calore caratteristico per ogni sostanza pura');pausa; testo(20,170,'Calore di fusione = Calore di solidificazione '); pausa;cancellagrafo; testo(20,20,'ripetendo esperimento con altre sostanze pure,si ottiene'); testo(20,30,'lo stesso risultato,espresso nelle leggi precedenti'); testo(20,40,'CAMBIA il valore della temperatura di fusione,solidificazione'); testo(20,50,'CAMBIA il valore dei calori di fusione e solidificazione'); testo(20,60,'in funzione delle diverse sostanze,e delle diverse forze'); testo(20,70,'di coesione che interessano le diverse sostanze'); pausa;cancellagrafo; end; procedure pro6; begin ipotesi; end; procedure pro7; begin testo(20,20,'fine esperimento:rivedi con calma e prepara la relazione:'); testo(20,40,'arrivederci ');pausa; end; procedure fine; (* conferma uscita operazione *) begin outtextxy(30,30,'fine operazione:confermare :premi enter'); readln; end; procedure scelta; (* procedura con scelta opzioni e uscita *) var s,sn:string;opzione:integer; begin cancellagrafo; setcolor(white); outtextxy(20,20,'seleziona opzione per FUSIONE e SOLIDIFICAZIONE'); outtextxy(20,30,'1...sostanze DIVERSE:curva riscaldamento e fusione'); outtextxy(20,40,'2...sostanze diverse:continua precedente'); outtextxy(20,50,'3...sostanze UGUALI:curva riscaldamento e fusione '); outtextxy(20,60,'4...sostanze uguali:continua precedente '); outtextxy(20,70,'5...UNA sostanza:diagramma FUSIONE e SOLIDIFICAZIONE'); outtextxy(20,80,'6...interpretazione leggi della fusione e solidificazione'); outtextxy(20,90,'7...conclusione '); outtextxy(20,100,'9...fine '); outtextxy(20,110,'scelta =');readln(opzione); cancellagrafo;setcolor(white); case opzione of 1:pro1;2:pro2;3:pro3;4:pro4;5:pro5;6:pro6;7:pro7; 9:fine; end; cancellagrafo; setcolor(white); outtextxy(30,50,'altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn); if ((sn='S') or (sn='s')) then scelta ; end; begin (* programma di lancio *) grafica; t2:=20; outtextxy(20,30,'');outtextxy(20,40,''); outtextxy(20,60,'esempio sperimentazione su comportamento delle sostanze pure'); outtextxy(20,70,'in rapporto alla energia fornita o ceduta'); outtextxy(20,90,'FUSIONE e SOLIDIFICAZIONE '); outtextxy(20,110,'------------------------------------------------------------'); outtextxy(20,110,'dipositivi necessari:'); outtextxy(20,120,'contenitori per sostanze da riscaldare'); outtextxy(20,130,'termometri per misurare temperature '); outtextxy(20,140,'sorgente di calore da fornire in modo misurabile'); outtextxy(20,150,'------------------------------------------------------------'); outtextxy(20,160,'COME USARE il PROGRAMMA:attivare in modo consecutivo le varie'); outtextxy(20,170,'opzioni ,1,2,3,4,5,6,7.9..come indicato nel corso del programma'); outtextxy(20,180,'possibile anche vedere solo parti separate o con altro ordine'); outtextxy(20,190,'');pausa;cancellagrafo; repeat setcolor(white); outtextxy(20,210,'indica velocita simulazione ,minore di 101 '); outtextxy(20,220,'prova per vedere velocemente la prima volta :1 '); outtextxy(20,230,'poi riprova lentamente con 5..10..20..50..100 '); outtextxy(20,240,'scrivi valore scelto ');readln(valore); until ((valore>0) and (valore<101)); scelta; end.
Program fonde1; (* grafico per simulazione leggi della FUSIONE *) (* derivato da fonde *) uses crt,graph; var a,x,y,z,valore,t2:integer; procedure grafica; (* attivazione comandi grafici *) var sc,tp:integer;stringa:string; BEGIN sc:=0; tp:=0; stringa:='c:\tp\bgi'; initgraph(sc,tp,stringa); rectangle(1,1,630,400); setbkcolor(black); setcolor(white); end; procedure pausa; (* attesa che si prema enter *) var ch:char; begin setcolor(white); outtextxy(500,10,'premi enter '); ch:=readkey; setcolor(black); outtextxy(500,10,'premi enter'); setcolor(white); end; procedure testo(x,y:integer;frase:string); begin setcolor(white); outtextxy(x,y,frase); end; procedure cancellagrafo; begin cleardevice; end; procedure sosta1; begin delay(t2); end; procedure sosta2; begin delay(valore); end; procedure assi; begin setcolor(white); setlinestyle(0,0,1); moveto(20,100);lineto(20,300);lineto(400,300); testo(30,100,'temperatura di fusione,solidificazione'); testo(30,320,'calore fornito a solido e liquido'); testo(200,330,'calore ceduto da liquido e solido'); pausa; end; procedure assi2; begin setcolor(white); setlinestyle(0,0,1); moveto(20,100);lineto(20,300);lineto(400,300); rectangle(400,100,450,300); rectangle(460,100,510,300); bar(405,250,445,300); setcolor(6); bar(465,200,505,300); testo(30,100,'temperatura di fusione'); testo(30,320,'calore fornito a solido e liquido');pausa; moveto(1,1); end; procedure moto1(x,y,z:integer); (* solido *) begin setlinestyle(1,0,1); for a:=1 to 60 do begin moveto(x,300);setcolor(white);lineto(x,z);sosta2; x:=x+1;z:=z-1; end; end; procedure moto2(x,y,z:integer); (* fusione *) begin setlinestyle(0,0,1); for a:=1 to 60 do begin moveto(x,300);setcolor(white);lineto(x,z);sosta2; x:=x+1; end; end; procedure moto3(x,y,z:integer); begin setlinestyle(1,0,1); for a:=1 to 60 do begin moveto(x,y);setcolor(white);lineto(x,z);sosta2; x:=x+1;z:=z-1; end; end; procedure moto4(x,y,z:integer); begin setlinestyle(1,0,1); for a:=1 to 60 do begin moveto(x,y);setcolor(white);lineto(x,z);sosta2; x:=x+1;z:=z+1; end; end; procedure moto1a(x,y,z:integer); (* solido *) begin setlinestyle(0,0,1); for a:=1 to 60 do begin moveto(x,z);setcolor(white);lineto(x,z-1);sosta2; x:=x+1;z:=z-1; end; end; procedure moto2a(x,y,z:integer); (* fusione *) begin setlinestyle(0,0,1); for a:=1 to 60 do begin moveto(x,z);setcolor(white);lineto(x+1,z);sosta2; x:=x+1; end; end; procedure moto1b(x,y,z:integer); (* solido *) begin setlinestyle(0,0,1); for a:=1 to 40 do begin moveto(x,z);setcolor(white);lineto(x,z-2);sosta2; x:=x+1;z:=z-2; end; end; procedure moto2b(x,y,z:integer); (* fusione *) begin setlinestyle(0,0,1); for a:=1 to 40 do begin moveto(x,z);setcolor(white);lineto(x+1,z);sosta2; x:=x+1; end; end; procedure moto1c; begin setlinestyle(0,0,1); moveto(20,300);lineto(80,200);lineto(140,200);lineto(200,150); end; procedure moto2c; begin setlinestyle(0,0,1); moveto(20,300);lineto(120,200);lineto(220,200);lineto(300,150);sosta1; setlinestyle(0,0,1); end; procedure modelli; begin circle(100,100,50); circle(200,100,50); circle(300,100,50); circle(400,100,50);setlinestyle(0,0,1); moveto(100,100);lineto(200,100); setlinestyle(0,0,3);moveto(300,100);lineto(400,100);setlinestyle(0,0,1); testo(100,20,'sostanza A');testo(100,40,' EcA = EcB '); testo(100,60,' FaA < FaB '); testo(300,20,'sostanza B'); testo(300,40,' EcB = EcA ');testo(300,60,' FaB > FaA '); testo(100,90,' EcA > FaA ');testo(300,90,' EcB < FaB ');pausa; testo(20,200,'alla temperatura T si verifica che EcA = EcB '); testo(20,210,'se la ...................EcA > FaA la sostanza A fonde '); moveto(100,100);setcolor(black);lineto(200,100);setcolor(white); testo(20,220,'mentre se la .....EcB < FaB la sostanza B non fonde ');pausa; testo(20,240,'si deve aumentare la T in modo che anche la EcB diventi'); testo(20,250,'maggiore della FaB ');pausa; circle(100,260,50); circle(200,260,50); setlinestyle(0,0,1); moveto(100,260);lineto(200,260); testo(20,300,'nella solidificazione si libera energia dovuta ai legami'); testo(20,320,'che si formano:la temperatura rimane costante'); setlinestyle(0,0,1); end; procedure ipotesi; begin testo(20,20,'1..le particelle costituenti i corpi solidi,liquidi,gassosi'); testo(20,30,'sono animate da moti vibratori,dotate di energia cinetica Ec'); testo(20,40,'proporzionale alla temperatura Ec =kT '); testo(20,50,'uguale per tutte le particelle alla stessa temperatura EcA=EcB '); pausa; testo(20,70,'2..le particelle si attirano a causa delle forze di '); testo(20,80,'interazione,in funzione della diversa natura delle sostanze '); testo(20,90,'e dei diversi tipi di legami:ionici,covalenti,deboli.. '); testo(20,100,'EcA = EcB ....FaA <> FaB ');pausa; testo(20,120,'3..un corpo solido se riceve energia aumenta la sua Ec: '); testo(20,130,'indicata da aumento di temperatura ');pausa; testo(20,150,'4..se la energia fornita permette alla Ec di superare la '); testo(20,160,'forza di attrazione Fa , ( Ec > Fa ) ,il corpo inizia la '); testo(20,170,'fusione:la energia fornita durante la fusione viene tutta '); testo(20,180,'utilizzata per compiere il lavoro di separazione delle '); testo(20,190,'particelle,e quindi la temperatura non aumenta ');pausa; testo(20,210,'5..terminata la fusione,altra energia fornita fa crescere '); testo(20,220,'energia cinetica del liquido,indicata da temperatura che '); testo(20,230,'riprende a crescere ');pausa; testo(20,250,'6..essendo diverse le FaA e FaB ,risultera necessario '); testo(20,260,'fornire diverse quantita di energia per raggiungere la '); testo(20,270,'fusione,e quindi diverse temperature in funzione di A e B '); testo(20,280,'es. se (FaA < FaB) e (EcA = EcB) e (FaA < EcA e FaB > EcB) '); testo(20,290,'potra fondere sostanza A e non sostanza B '); pausa;cancellagrafo; testo(20,20,'8..il calore necessario per fondere completamente una mole '); testo(20,30,'di una sostanza,varia in funzione della forza dei legami '); testo(20,40,'da vincere tra le diverse particelle:CALORE di FUSIONE '); pausa; testo(20,60,'9..durante la SOLIDIFICAZIONE la temperatura rimane costante '); testo(20,70,'anche se il corpo cede calore,perche si vanno formando dei '); testo(20,80,'legami tra le particelle che solidificano,e tali legami '); testo(20,90,'liberano energia che subentra a quella ceduta ');sosta1; testo(20,110,'10..il calore ceduto da una mole che solidifica equivale '); testo(20,120,'al calore assorbito durante la fusione '); testo(20,130,'CALORE di FUSIONE = CALORE di SOLIDIFICAZIONE '); pausa;cancellagrafo;setcolor(white); modelli;pausa; end; procedure leggif; begin testo(20,20,'1..ogni sostanza pura fonde a una temperatura caratteristica'); testo(20,30,'2..durante la fusione,la temperatura rimane costante'); sosta1; testo(20,40,'1..ogni sostanza pura solidifica a una temperatura caratteristica'); testo(20,50,'2..durante la solidificazione la temperatura rimane costante'); sosta1; testo(20,70,'3..temperatura di fusione = temperatura di solidificazione'); sosta1; end; procedure pro1; begin outtextxy(20,20,'sostanze diverse A,B a parita di moli'); outtextxy(20,30,'ricevono le stesse quantita di calore'); outtextxy(20,40,'tabella delle temperature misurate'); outtextxy(20,50,'----------------------------------------'); outtextxy(20,60,'prendi nota della tabella e disegna i diagrammi Calore/Ta,Tb'); outtextxy(20,70,'cerca di esprimere le leggi osservate');pausa; outtextxy(20,80,'------------------------------------------'); outtextxy(20,100,'calore...tB....tA '); outtextxy(20,110,'10.......10....15 '); outtextxy(20,120,'20.......20....30 '); outtextxy(20,130,'30.......30....45 '); outtextxy(20,140,'40.......40....60 '); outtextxy(20,150,'50.......50....60 '); outtextxy(20,160,'60.......60....60 '); outtextxy(20,170,'70.......70....75 '); outtextxy(20,180,'80.......80....90 '); outtextxy(20,190,'90.......80...105 '); outtextxy(20,200,'100......80...120 '); outtextxy(20,210,'110......90...135 '); outtextxy(20,220,'120.....100...150 '); pausa;cancellagrafo; testo(20,200,'esperimento e curva di riscaldamento e fusione'); testo(20,230,'sostanze diverse A,B sono rifornite con la stessa energia'); testo(20,240,'1..entrambe mostrano un aumento di temperatura proporzionale'); testo(20,250,' alla energia fornita,ma diverso per le diverse sostanze'); testo(20,260,'2..entrambe cessano di aumentare la temperatura,pur '); testo(20,270,' continuando ad assorbire energia termica'); testo(20,280,'3..il valore della temperatura che permane immutato varia'); testo(20,290,' con la natura delle sostanze tA=60...tB=80 '); testo(20,300,'4..ad un certo punto entrambe le sostanze riprendono ad'); testo(20,310,' aumentare la temperatura'); testo(20,320,'5..INTERPRETAZIONE e ANALISI del fenomeno '); pausa; end; procedure pro2; begin assi2; testo(20,20,'diagramma di riscaldamento e fusione sostanze pure diverse'); testo(20,30,'con uguale numero di moli'); testo(350,80,'sostanza A :tA=60'); moto1a(20,0,300);sosta1;moto2a(80,0,240);sosta1;moto1a(140,0,240); pausa;testo(370,100,'sostanza B :tB=80'); moto1b(20,0,300);sosta1;moto2a(60,0,220);sosta1;moto1b(120,0,220);sosta1; testo(20,50,'curva di riscaldamento simile in A e B '); testo(20,60,'cambia temperatura di fusione,pendenza grafico');pausa; cancellagrafo; end; procedure pro3; begin outtextxy(20,20,'sostanze uguali A1,A2 con diverso numero di moli'); outtextxy(20,30,'ricevono le stesse quantita di calore'); outtextxy(20,40,'tabella delle temperature misurate');pausa; outtextxy(20,60,'calore ..tA1.....tA2'); outtextxy(20,70,'10.......10.......5'); outtextxy(20,80,'20...... 20.......10'); outtextxy(20,90,'30.......30.......15'); outtextxy(20,100,'40.......40.......20'); outtextxy(20,110,'50.......50.......25'); outtextxy(20,120,'60.......60.......30' ); outtextxy(20,130,'70.......60.......35' ); outtextxy(20,140,'80.......60.......40' ); outtextxy(20,150,'90.......70.......45' ); outtextxy(20,160,'100......80.......50' ); outtextxy(20,170,'110......90.......55' ); outtextxy(20,180,'120.....100.......60' ); outtextxy(20,190,'130.....110.......60' ); outtextxy(20,200,'140.....120.......60' ); outtextxy(20,210,'150.....130.......60' ); outtextxy(20,220,'160.....140.......60' ); outtextxy(20,230,'170.....150.......60' ); outtextxy(20,240,'180.....160.......65' ); outtextxy(20,250,'190.....170.......70' ); pausa; outtextxy(20,260,'----------------------------------------'); outtextxy(20,270,'prendi nota della tabella e disegna i diagrammi Calore/tA1,tA2'); outtextxy(20,280,'cerca di esprimere le leggi osservate'); pausa; end; procedure pro4; begin assi2; testo(20,20,'diagramma di riscaldamento e fusione sostanze pure uguali'); testo(20,30,'con diverso numero di moli A1 < A2 '); testo(350,80,'sostanza A1 '); moto1c;pausa;testo(400,100,'sostanza A2'); moto2c; testo(20,340,'esprimi le tue osservazioni sui diagrammi');pausa; testo(20,50,'curva di riscaldamento simile in A1 e A2 '); testo(20,60,'cambia calore fornito ,pendenza grafico'); testo(20,70,'temperatura di fusione identica tA1 = tA2 '); pausa; end; procedure pro5; begin setlinestyle(1,0,1); assi; testo(20,340,'processo di riscaldamento e FUSIONE'); testo(20,80,'SOLIDO riscaldato:temperatura aumenta');moto1(20,0,300); sosta1;testo(30,200,'Tfusione');testo(10,240,'----'); testo(40,70,'FUSIONE in corso:temperatura costante');moto2(80,0,240); sosta1; testo(60,60,'LIQUIDO riscaldato:temperatura aumenta');moto3(140,300,240); pausa; testo(100,350,'processo di raffreddamento e SOLIDIFICAZIONE'); testo(100,10,'LIQUIDO cede calore:temperatura decresce'); moto4(200,300,180);sosta1;testo(30,190,'Tsolidificazione'); testo(120,20,'SOLIDIFICAZIONE in corso:temperatura costante'); moto2(260,300,240);sosta1; testo(140,30,'SOLIDO cede calore:temperatura decresce'); moto4(320,300,240); moveto(200,180);setcolor(white);lineto(200,300); testo(30,280,'Solido');testo(90,230,'So+Li');testo(180,260,'Liquido'); testo(270,230,'Li+So');testo(330,280,'Solido'); pausa;cancellagrafo; testo(20,200,'osservazioni sperimentali'); testo(20,230,'permettono di ricavare le leggi della FUSIONE,SOLIDIFICAZIONE'); leggif;pausa;cancellagrafo; testo(20,20,'si definisce CALORE latente di FUSIONE'); testo(20,30,'il calore assorbito dalla unita di massa che si trovi alla'); testo(20,40,'temperatura di fusione,per fondere completamente:'); testo(20,50,'Calore caratteristico per ogni sostanza pura');pausa; testo(20,120,'si definisce CALORE latente di SOLIDIFICAZIONE'); testo(20,130,'il calore ceduto dalla unita di massa che si trovi alla'); testo(20,140,'temperatura di solidificazione,per solidificare completamente:'); testo(20,150,'Calore caratteristico per ogni sostanza pura');pausa; testo(20,170,'Calore di fusione = Calore di solidificazione '); pausa;cancellagrafo; testo(20,20,'ripetendo esperimento con altre sostanze pure,si ottiene'); testo(20,30,'lo stesso risultato,espresso nelle leggi precedenti'); testo(20,40,'CAMBIA il valore della temperatura di fusione,solidificazione'); testo(20,50,'CAMBIA il valore dei calori di fusione e solidificazione'); testo(20,60,'in funzione delle diverse sostanze,e delle diverse forze'); testo(20,70,'di coesione che interessano le diverse sostanze'); pausa;cancellagrafo; end; procedure pro6; begin ipotesi; end; procedure pro7; begin testo(20,20,'fine esperimento:rivedi con calma e prepara la relazione:'); testo(20,40,'arrivederci ');pausa; end; procedure pro8; begin pro1;cancellagrafo;pro2;cancellagrafo; cancellagrafo;pro3;cancellagrafo; cancellagrafo;pro4;cancellagrafo;pro5; cancellagrafo;pro6;cancellagrafo;pro7; cancellagrafo; end; procedure fine; (* conferma uscita operazione *) begin outtextxy(30,30,'fine operazione:confermare :premi enter'); readln; end; procedure scelta; (* procedura con scelta opzioni e uscita *) var s,sn:string;opzione:integer; begin cancellagrafo; setcolor(white); outtextxy(20,20,'seleziona opzione per FUSIONE e SOLIDIFICAZIONE'); outtextxy(20,30,'1...sostanze DIVERSE:curva riscaldamento e fusione'); outtextxy(20,40,'2...sostanze diverse:continua precedente'); outtextxy(20,50,'3...sostanze UGUALI:curva riscaldamento e fusione '); outtextxy(20,60,'4...sostanze uguali:continua precedente '); outtextxy(20,70,'5...UNA sostanza:diagramma FUSIONE e SOLIDIFICAZIONE'); outtextxy(20,80,'6...interpretazione leggi della fusione e solidificazione'); outtextxy(20,90,'7...conclusione '); outtextxy(20,100,'8..serie AUTOMATICA simulazione '); outtextxy(20,110,'9...fine '); outtextxy(20,120,'scelta =');readln(opzione); cancellagrafo;setcolor(white); case opzione of 1:pro1;2:pro2;3:pro3;4:pro4;5:pro5;6:pro6;7:pro7;8:pro8; 9:fine; end; cancellagrafo; setcolor(white); outtextxy(30,50,'altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn); if ((sn='S') or (sn='s')) then scelta ; end; begin (* programma di lancio *) grafica; t2:=20; outtextxy(20,30,'');outtextxy(20,40,''); outtextxy(20,60,'esempio sperimentazione su comportamento delle sostanze pure'); outtextxy(20,70,'in rapporto alla energia fornita o ceduta'); outtextxy(20,90,'FUSIONE e SOLIDIFICAZIONE '); outtextxy(20,110,'------------------------------------------------------------'); outtextxy(20,110,'dipositivi necessari:'); outtextxy(20,120,'contenitori per sostanze da riscaldare'); outtextxy(20,130,'termometri per misurare temperature '); outtextxy(20,140,'sorgente di calore da fornire in modo misurabile'); outtextxy(20,150,'------------------------------------------------------------'); outtextxy(20,160,'COME USARE il PROGRAMMA:attivare in modo consecutivo le varie'); outtextxy(20,170,'opzioni 8,1,2,3,4,5,6,7.9..come indicato nel corso del programma'); outtextxy(20,180,'possibile anche vedere solo parti separate o con altro ordine'); outtextxy(20,190,'');pausa;cancellagrafo; repeat setcolor(white); outtextxy(20,210,'indica velocita simulazione ,minore di 101 '); outtextxy(20,220,'prova per vedere velocemente la prima volta :1 '); outtextxy(20,230,'poi riprova lentamente con 5..10..20..50..100 '); outtextxy(20,240,'NOTA:quando rispondi,non si vede quello che scrivi'); outtextxy(20,250,'appare solo un segnetto in alto..SCRIVI ESATTO!!!'); outtextxy(20,260,'scrivi valore scelto ');readln(valore); until ((valore>0) and (valore<101)); scelta; closegraph;restorecrtmode; end.
program fusi2; (* processo di fusione e solidificazione *) (* disco 70 dispensa 55 con turbo pascal v.5 cfr.fusione *) uses crt,graph; const nota1:array[1..9] of string[70]= ('1.ogni sostanza pura fonde o solidifica ad una temperatura', ' caratteristica della sostanza considerata', '2.temperatura di fusione = temperatura di solidificazione', '3.durante la fusione,solidificazione,la temperatura', ' rimane costante', ' calore di fusione assorbito per fondere completamente', ' unita di massa alla temperatura di fusione', ' calore di solidificazione ceduto per solidificare', ' completamente unita di massa a temperatura di solid.ne'); 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(f,sc,tp:integer); (* attiva pagina grafica*) (* coordinate finestra,colore sfondo e disegno *) var stringa:string; begin stringa:='c:\tp\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 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 titolo; begin settextstyle(5,0,4); setcolor(5); outtextxy(20,20,'passaggi di stato '); settextstyle(4,0,4); setcolor(2); outtextxy(50,50,'F U S I O N E'); testo(120,70,'e'); setcolor(7); outtextxy(50,100,'solidificazione'); end; procedure blocco1(a1,a2,c1:integer); var h,m:integer; begin m:=15; for h:=a1 to a2 do begin setcolor(c1); outtextxy(10,m,nota1[h]); m:=m+10; c1:=c1+1; end; end; procedure assi; begin setfillstyle(2,5); bar(10,50,50,400); setfillstyle(1,5); bar(20,400,40,50); 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,e:integer; begin x:=50;z1:=1; setcolor(c); outtextxy(500,120,'sostanza in'); outtextxy(500,130,'trasformazione'); for a:=x1 to x2 do begin putpixel(X+a,y-5,14); line(x+a,300,x+a,y); if (a<250) then setfillstyle(1,15) else if (a>=250) then setfillstyle(1,5); bar(20,y,40,y); if (a<100) then outtextxy(300,50,'solido in riscaldamento'); if (a>=100) and (a<=200) then outtextxy(300,60,'solido in fusione'); if (a>200) and (a<=250) then outtextxy(300,70,'liquido in riscaldamento'); if (a>250) and (a<300) then outtextxy(300,80,'liquido in raffreddamento'); if (a>=300) and (a<=400) then outtextxy(300,90,'liquido in solidificazione'); if (a>400) then outtextxy(300,100,'solido in raffreddamento'); if (a>50) and (a<100) then begin line(531,270-z1,619,270-z1); z1:=z1+2;end; if (a>=100) and (a<=200) then begin line(531,270-z1,619,270-z1); z1:=z1+1; outtextxy(10,180,'T.fusione= T.solidificazione');end; if (a>200) and (a<250) then begin line(531,170+z1,619,170+z1);z1:=z1+2;end; if (a>=250) and(a<300) then begin line(531,170+z1,619,170+z1);z1:=z1+2;end; if (a>=300) and (a<=400) then begin line(531,170+z1,619,170+z1);z1:=z1+1;end; if (a>400) and (a<500) then begin line(531,170+z1,619,170+z1);z1:=z1+1;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); if (a<250) then setfillstyle(1,15) else if (a>=250) then setfillstyle(1,5); bar(20,y,40,y); sound(300+y); delay(sosta); y:=y-k; end; setcolor(14); line(300,300,300,150); setcolor(2); 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 (530,150,620,271); setfillstyle(1,14); bar(531,170,619,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 setcolor(white); cleardevice; 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 grafica(1,9,0); titolo; pausa;grafica(1,9,0); blocco1(1,9,4); pausa; grafica(1,0,0); assi; metalli; pausa; grafica(1,0,0);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,7);(* 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; pausa; end.
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.