esercizi di chimica con turbo pascal 1.1 su mac
Program CROMA3; (* cromatografia su colonna e su carta 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,x1,x2: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 carta1; begin setrect(gra1,100,100,200,300);framerect(gra1); setrect(gra2,110,100,190,290);paintrect(gra2); 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 carta2; begin setrect(gra1,250,100,350,300);framerect(gra1); setrect(gra1,260,105,340,290);fillrect(gra1,gray); moveto(250,320);drawstring('carta 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('riconosciute:B , D Ignota G :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); moveto(x,150);lineto(180,150); 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 moto11; label salta; begin testo(10,360,'cromatografia su carta,discendente'); 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:=13;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);sosta; if conta=13 then begin moveto(10,20); drawstring('riconosciute:B , D Ignota G: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); moveto(x,150);lineto(180,150); 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,50,'2-3 per elettroforesi '); testo(20,60,'4-5 per confrontare diversa velocit sostanze note B,D'); testo(20,70,'nel solvente S1 su colonna'); testo(20,90,'6-7 per confrontare diversa velocit sostanze note B,D'); testo(20,100,'nel solvente S2 su colonna'); testo(20,120,'8-9 per confrontare diversa velocit sostanze note B,D'); testo(20,130,'nel solvente S1 su carta,discendente'); testo(20,160,'10 per analisi cromatografica soluzione ignota su colonna'); testo(20,170,'11 per analisi cromatografica soluzione ignota su carta'); pausa; end;
procedure pro2; begin testo(20,20,'generalit su analisi mediante ELETTROFORESI'); testo(20,40,'dispositivo sperimentale:'); testo(20,60,'nastro di carta o lastra con substrato adatto'); testo(20,70,'due elettrodi,catodo e anodo,collegati a batteria'); testo(20,90,'SOLUZIONE con sostanze da riconoscere,posta a distanza'); testo(20,100,'equivalente tra catodo e anodo');readln; testo(20,120,'LE SOSTANZE,se dotate di carica elettrica'); testo(20,130,'migrano verso gli elettrodi di segno opposto'); testo(20,150,'positive verso CATODO,negative verso ANODO'); testo(20,170,'con diversa velocit in funzione di vari parametri'); testo(20,200,'natura delle sostanze,segno carica positiva o negativa'); testo(20,210,'valore della carica,forma delle molecole '); testo(20,220,'massa delle molecole,interazione con fase fissa'); testo(20,230,'solubilit con il solvente,ecc. ');readln; testo(20,250,'---------------------------------------------------------'); testo(20,260,'si confronta la posizione raggiunta dalle diverse sostanze'); testo(20,270,'(eventualmente visualizzate con opportuni accorgimenti)'); testo(20,280,'dopo un tempo determinato:es.dopo 1 ora'); testo(20,290,'con la posizione di sostanze note riportata su carte'); testo(20,300,'elettroforetiche,ottenute in condizioni uguali a quelle'); testo(20,310,'della analisi elettroforetica della soluzione in esame'); testo(20,320,'e si verifica la corrispondenza delle sostanze trovate'); pausa; end;
procedure tara1; begin setrect(gra1,100,50,400,150);framerect(gra1); testo(100,30,'elettroforesi sostanze note per confronto'); end;
procedure tara2; begin setrect(gra2,100,200,400,300);framerect(gra2); testo(100,180,'fase fissa per analisi elettroforetica'); testo(20,250,'catodo - ');testo(420,250,'anodo +'); moveto(110,210);lineto(110,290); moveto(390,210);lineto(390,290); moveto(110,250);lineto(90,250);lineto(90,320);lineto(410,320); lineto(410,250);lineto(390,250); setrect(gra1,240,310,260,330);framerect(gra1); moveto(160,50);lineto(160,150);testo(160,40,'A'); moveto(295,50);lineto(295,150);testo(295,40,'B'); moveto(205,50);lineto(205,150);testo(205,40,'C'); moveto(350,50);lineto(350,150);testo(350,40,'G'); moveto(140,50);lineto(140,150);testo(140,40,'H'); testo(170,340,'polo - batteria polo + '); moveto(250,190);lineto(250,300); testo(150,190,'posizione iniziale della soluzione'); pausa; end;
procedure moto3; label salta; var conta:integer; begin x:=250;x1:=250;x2:=250;conta:=0; for a:=1 to 11 do begin conta:=conta+1; penpat(white); moveto(x,210);lineto(x,290); moveto(x2,210);penpat(gray);lineto(x2,290); moveto(x1,210);penpat(gray);lineto(x1,290);sosta; if conta=10 then begin testo(20,20,'riconoscimento sostanze A,B,C '); sosta;pensize(10,10); moveto(x,210);lineto(x,280); moveto(x2,210);penpat(gray);lineto(x2,280); moveto(x1,210);penpat(gray);lineto(x1,280); pensize(1,1);goto salta;end; penpat(black); moveto(x,210);lineto(x,290); moveto(x2,210);lineto(x2,290); moveto(x1,210);lineto(x1,290); x:=x-10;x1:=x1+5;x2:=x2-5; end; salta:pausa; end;
procedure pro3; begin tara1;pausa;tara2;moto3;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 pro8; (* B nota S1*) begin carta1;pausa; testo(20,320,'cromatografia su carta 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 pro9; (* D nota S1 *) begin carta1;pausa; testo(20,320,'cromatografia su carta 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 pro10; (* B,D ignote con S1 *) begin cilindro1;pausa;bicchiere;pausa;cilindro2;pausa;moto10; pausa;pausa; end;
procedure pro11; (* B,D ignote con S1 *) begin carta1;pausa;pausa;carta2;pausa;moto11; 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; writeln('altro tipo di analisi mediante ELETTROFORESI cfr.in seguito'); 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('2...ELETTROFORESI :informazioni '); writeln('3...ELETTROFORESI :esperimento '); writeln('4...cromatografia di sostanza nota B con solvente S1 su colonna'); writeln('5...cromatografia di sostanza nota D con solvente S1 su colonna' ); writeln('6...cromatografia di sostanza nota B con solvente S2 su colonna'); writeln('7...cromatografia di sostanza nota D con solvente S2 su colonna'); writeln('--------------------------------------------------------'); writeln('8...cromatografia di sostanza nota B su carta con S1 '); writeln('9...cromatografia di sostanza nota D su carta con S1 '); writeln('------------------------------------------------------'); writeln('10..cromatografia con sostanze ignote e solvente S1 su colonna'); writeln('11..cromatografia con sostanze ignote e solvente S1 su carta'); writeln('20...fine '); writeln('scelta =');readln(opzione); grafica; case opzione of 1:pro1;2:pro2;3:pro3; 4:pro4;5:pro5;6:pro6;7:pro7;8:pro8;9:pro9;10:pro10;11:pro11; 20: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.