esercizi di chimica con turbo pascal 1.1 su mac
Program CROMA1; (* cromatografia su colonna DIMOSTRATIVO *)
USES Memtypes,QuickDraw,OSIntf,ToolIntf;
VAR gPort: GrafPort; sagoma:EventRecord; gra1,gra2,gomma,cancella:rect; a,b,x,y1,y2,ay2,ay1,riga,conta:integer; sfondo6:pattern;
procedure cancellatesto; begin setrect(cancella,1,1,500,10); penpat(black); paintrect(cancella);penpat(white); end;
procedure pausa; begin moveto(10,10);drawstring('premi enter ');readln; cancellatesto; end;
procedure grafica; BEGIN InitGraf(@thePort); initfonts; InitCursor; HideCursor; OpenPort(@gPort); textfont(9); textface([outline]); PenPat(white); BackPat(Black); EraseRect(gPort.portRect); FrameRect(gPort.portRect); end;
procedure testo(x,y:integer;frase:string); begin penpat(white); moveto(x,y);drawstring(frase); end;
procedure cancellagrafo; begin setrect(gomma,1,1,500,370); penpat(black); paintrect(gomma); end;
procedure sosta; begin for a:=1 to 10000 do write(''); end;
procedure cilindro1; begin setrect(gra1,110,100,190,290);fillrect(gra1,gray); moveto(80,80);lineto(100,100);lineto(100,300);lineto(118,300); lineto(118,320); moveto(220,80);lineto(200,100);lineto(200,300);lineto(182,300); lineto(182,320); moveto(20,70); drawstring('cilindro per cromatrografia con fase fissa:amido..'); end;
procedure cilindro2; begin setrect(gra1,250,100,350,300);framerect(gra1); setrect(gra1,260,105,340,290);fillrect(gra1,gray); moveto(250,320);drawstring('colonna per controllo:tempo= 1 ora '); moveto(250,340);drawstring('con sostanze note A,B,C,D'); moveto(270,116);lineto(330,116);drawstring('sostanza A'); moveto(270,169);lineto(330,169);drawstring('sostanza B'); moveto(270,216);lineto(330,216);drawstring('sostanza C'); moveto(270,246);penpat(dkgray);lineto(330,246);drawstring('sostanza D'); end;
procedure bicchiere; begin moveto(100,310);lineto(100,350);lineto(200,350);lineto(200,310); moveto(20,360);drawstring('bicchiere per raccolta sostanze'); end;
procedure moto10; label salta; begin setrect(gra1,110,100,190,290);fillrect(gra1,gray); moveto(20,60);drawstring('soluzione da analizzare:ATTENDERE'); x:=120;y1:=90;y2:=90;ay2:=2;ay1:=1;riga:=16;conta:=1; for a:=1 to riga do begin conta:=conta+1;pensize(1,1); setrect(gra1,110,100,190,290);fillrect(gra1,gray); moveto(x,y1);penpat(white);lineto(180,y1); moveto(x,y2);penpat(dkgray);lineto(180,y2); if conta=riga then goto salta;sosta; if conta=13 then begin moveto(10,20); drawstring('sostanze riconosciute:B , D :tempo= 1 ora con SOLVENTE S1 '); sosta;sosta; testo(10,50,'bande evidenziabili se non gi colorate');pensize(10,10); moveto(x,y1);penpat(white);lineto(180,y1); moveto(x,y2);penpat(dkgray);lineto(180,y2); pausa;end; if conta=15 then begin moveto(100,40);drawstring('estrazione sostanza D ');pausa;end; penpat(black); moveto(180,y1);lineto(120,y1); moveto(180,y2);lineto(120,y2); ay1:=ay1+1;y1:=y1+ay1;x:=120;ay2:=ay2+2;y2:=y2+ay2; end; salta: end;
procedure moto4; label salta; begin setrect(gra1,110,100,190,290);fillrect(gra1,gray); moveto(20,60);drawstring('soluzione da analizzare NOTA B :ATTENDERE'); x:=120;y1:=90;ay1:=1;riga:=13;conta:=1; for a:=1 to riga do begin conta:=conta+1; setrect(gra1,110,100,190,290);fillrect(gra1,gray); moveto(x,y1);penpat(white);lineto(180,y1);sosta; if conta=13 then begin moveto(10,30); drawstring('sostanza :B spazio percorso in tempo= 1 ora con SOLVENTE S1'); goto salta;end; penpat(black); moveto(180,y1);lineto(120,y1); ay1:=ay1+1;y1:=y1+ay1;x:=120; end; salta: end;
procedure moto6; label salta; begin stuffhex(@sfondo6,'111111111111111111'); setrect(gra1,110,100,190,290);fillrect(gra1,sfondo6); moveto(20,60);drawstring('soluzione da analizzare NOTA B:ATTENDERE'); x:=120;y1:=90;ay1:=1;riga:=10;conta:=1; for a:=1 to riga do begin conta:=conta+1; setrect(gra1,110,100,190,290);fillrect(gra1,sfondo6); moveto(x,y1);penpat(white);lineto(180,y1);sosta; if conta=10 then begin moveto(10,30); drawstring('sostanza :B spazio percorso in tempo= 1 ora con SOLVENTE S2 '); goto salta;end; penpat(black); moveto(180,y1);lineto(120,y1); ay1:=ay1+1;y1:=y1+ay1;x:=120; end; salta: end;
procedure moto5; label salta; begin setrect(gra1,110,100,190,290);fillrect(gra1,gray); moveto(20,60);drawstring('soluzione da analizzare NOTA D :ATTENDERE'); x:=120;y2:=90;ay2:=2;riga:=13;conta:=1; for a:=1 to riga do begin conta:=conta+1; setrect(gra1,110,100,190,290);fillrect(gra1,gray); moveto(x,y2);penpat(dkgray);lineto(180,y2);sosta; if conta=13 then begin moveto(10,40); drawstring('sostanza :D spazio percorso in tempo = 1 ora con SOLVENTE S1'); goto salta;end; penpat(black); moveto(180,y2);lineto(120,y2); x:=120;ay2:=ay2+2;y2:=y2+ay2; end; salta: end;
procedure moto7; label salta; begin stuffhex(@sfondo6,'111111111111111111'); setrect(gra1,110,100,190,290);fillrect(gra1,sfondo6); moveto(20,60);drawstring('soluzione da analizzare NOTA D :ATTENDERE'); x:=120;y2:=90;ay2:=2;riga:=10;conta:=1; for a:=1 to riga do begin conta:=conta+1; setrect(gra1,110,100,190,290);fillrect(gra1,sfondo6); moveto(x,y2);penpat(dkgray);lineto(180,y2);sosta; if conta=10 then begin moveto(10,40); drawstring('sostanza :D spazio percorso in tempo = 1 ora con SOLVENTE S2 '); goto salta;end; penpat(black); moveto(180,y2);lineto(120,y2); x:=120;ay2:=ay2+2;y2:=y2+ay2; end; salta: end;
procedure pro1; begin testo(20,30,'per utilizzare il programma ,seleziona in modo consecutivo'); testo(20,40,'le varie opzioni proposte nel men principale '); testo(20,60,'4-5 per confrontare diversa velocit sostanze note B,D'); testo(20,70,'nel solvente S1 '); testo(20,90,'6-7 per confrontare diversa velocit sostanze note B,D'); testo(20,100,'nel solvente S2 '); testo(20,120,'8 per analisi cromatografica soluzione ignota '); pausa; end;
procedure pro4; (* B nota S1*) begin cilindro1;pausa; testo(20,320,'cromatografia con sostanza nota B in solvente S1 '); testo(20,340,'misura spostamento compiuto in una ora '); moto4;pausa;pausa; end;
procedure pro5; (* D nota S1 *) begin cilindro1;pausa; testo(20,320,'cromatografia con sostanza nota D in solvente S1 '); testo(20,340,'misura spostamento compiuto in una ora '); moto5;pausa;pausa; end;
procedure pro6; (* B nota S2 *) begin cilindro1;pausa; testo(20,320,'cromatografia con sostanza nota B in solvente S2 '); testo(20,340,'misura spostamento compiuto in una ora '); moto6;pausa;pausa; end;
procedure pro7; (* D nota S2 *) begin cilindro1;pausa; testo(20,320,'cromatografia con sostanza nota D in solvente S2 '); testo(20,340,'misura spostamento compiuto in una ora '); moto7;pausa;pausa; end;
procedure pro8; (* B,D ignote con S1 *) begin cilindro1;pausa;bicchiere;pausa;cilindro2;pausa;moto10; pausa;pausa; end;
procedure fine; begin writeln('fine operazione:confermare :premi enter'); readln; end;
procedure spiega; begin writeln;writeln;writeln; writeln('informazioni su analisi cromatografica'); writeln('tecnica di analisi per riconoscere sostanze presenti in soluzione'); writeln('ed eventualmente estrarle separatamente dalla soluzione stessa'); writeln('-----------------------------------------------------------------'); writeln('principi di funzionamento:'); writeln('si sfrutta la diversa velocit di scorrimento di sostanze diverse'); writeln('confrontate con solventi o substrati diversi,in funzione della'); writeln('diversa capacit di interagire con gli stessi ');readln; writeln('FACENDO SCORRERE una soluzione contenente sostanze diverse'); writeln('su un substrato adatto (carta,gelatina,sferette forate..) '); writeln('si verifica un rallentamento differenziato per le diverse '); writeln('molecole,in funzione della loro natura,e quindi dopo un tempo'); writeln('determinato,le molecole inizialmente mescolate nella soluzione'); writeln('risulteranno separate,avendo percorso spazi differenti ');readln; writeln('OPPURE le molecole risulteranno distanziate per la diversa'); writeln('solubilit in diversi tipi di solventi');readln;clearscreen; writeln('CONFRONTANDO le posizioni raggiunte dalle varie sostanze'); writeln('con quelle raggiunte da sostanze note in condizioni simili'); writeln('si risale alla natura delle sostanze presenti in soluzione'); readln;clearscreen; writeln('TIPI DI CROMATOGRAFIA in funzione della fase fissa o SUBSTRATO'); writeln('SU COLONNA DISCENDENTE:permette riconoscimento ed estrazione'); writeln('SU CARTA DISCENDENTE o ASCENDENTE:per riconoscimento'); writeln('altri tipi:cfr.testi...');readln; writeln('TARATURA TABELLE CROMATOGRAFICHE:'); writeln('si esegue una cromatografia con sostanza nota in condizioni '); writeln('sperimentali controllate e per tempo determinato:es. 1 ora'); writeln('si prende nota della distanza percorsa dalla sostanza '); writeln('si ripete esperimento per altre sostanze note '); writeln('si riporta in tabelle il risultato ottenuto con diversi tipi'); writeln('di substrati o di solventi ');readln;clearscreen; end;
procedure scelta; var s,sn:string;opzione:integer; begin clearscreen; writeln('seleziona opzione per CROMATOGRAFIA SU COLONNA '); writeln('1...COME USARE IL PROGRAMMA'); writeln('-------------------------------------------------------'); writeln('4...cromatografia di sostanza nota B con solvente S1'); writeln('5...cromatografia di sostanza nota D con solvente S1'); writeln('6...cromatografia di sostanza nota B con solvente S2'); writeln('7...cromatografia di sostanza nota D con solvente S2'); writeln('--------------------------------------------------------'); writeln('8..cromatografia con sostanze ignote e solvente S1 '); writeln('9...fine '); writeln('scelta =');readln(opzione); grafica; case opzione of 1:pro1;4:pro4;5:pro5;6:pro6;7:pro7;8:pro8; 9:fine; end; EraseRect(gPort.portRect); writeln('altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn); if ((sn='S') or (sn='s')) then scelta ; end;
begin clearscreen; spiega;readln; scelta; end.