esercizi di chimica con turbo pascal 1.1 su mac
Program varia1; (* esempi spostamento equilibrio chimico INTERATTIVO *)
const n=17; VAR re:array[1..n] of string; ri:array[1..n] of string; tr:array[1..n] of string; tp:array[1..n] of string; qr:array[1..n] of string; pd:array[1..n] of string; gr:array[1..n] of string; a,esatte,errate,prove:integer; ris:string;
procedure dati; begin
re[1]:='2A + 3B <----> 4C + 5H ..+Q ';qr[1]:='dimuisce temperatura'; ri[1]:='D';tr[1]:='aggiunto A ';tp[1]:='diminuisce pressione';pd[1]:='D'; gr[1]:='D'; re[2]:='2A + B <----> C + G ..+Q';qr[2]:='diminuisce temperatura'; ri[2]:='D';tr[2]:='aggiunto A ';tp[2]:='aumenta la pressione ';pd[2]:='A'; gr[2]:='D'; re[3]:='2A + 5B <----> 4C + AG ..+Q ';qr[3]:='diminuisce temperatura'; ri[3]:='D';tr[3]:='aggiunto B ';tp[3]:='aumenta la pressione';pd[3]:='A'; gr[3]:='D'; re[4]:='2A + B <----> C + FH ..+Q ';qr[4]:='diminuisce temperatura'; ri[4]:='D';tr[4]:='aggiunto B ';tp[4]:='aumenta la pressione';pd[4]:='A'; gr[4]:='D'; re[5]:='2A + B <----> C + HG ..+Q ';qr[5]:='aumenta temperatura'; ri[5]:='S';tr[5]:='aggiunto C ';tp[5]:='diminuisce la pressione';pd[5]:='D'; gr[5]:='A'; re[6]:='2A + 3B <----> 2C + 4E ...+Q ';qr[6]:='aumenta temperatura'; ri[6]:='S';tr[6]:='aggiunto E ';tp[6]:='aumenta la pressione';pd[6]:='A'; gr[6]:='A'; re[7]:='2A + 2B <----> 5C + 2E ...+Q';qr[7]:='diminuisce temperatura'; ri[7]:='D';tr[7]:='aggiunto A e sottratto C';tp[7]:='diminuisce pressione'; pd[7]:='D';gr[7]:='D'; re[8]:='2A + B <----> 5C + 4E ...-Q';qr[8]:='dimuisce temperatura'; ri[8]:='S';tr[8]:='sottratto B e aggiunto E ';tp[8]:='aumenta pressione'; pd[8]:='A';gr[8]:='D';
re[9]:='2A + 3B <----> 4C + 5E ..+Q ';qr[9]:='dimuisce temperatura'; ri[9]:='D';tr[9]:='aggiunto A ';tp[9]:='diminuisce pressione';pd[9]:='D'; gr[9]:='D'; re[10]:='2A + B <----> C + HE ..+Q';qr[10]:='diminuisce temperatura'; ri[10]:='D';tr[10]:='aggiunto A ';tp[10]:='aumenta la pressione ';pd[10]:='A'; gr[10]:='D'; re[11]:='2A + 5B <----> 4C + EG ..+Q ';qr[11]:='diminuisce temperatura'; ri[11]:='D';tr[11]:='aggiunto B ';tp[11]:='aumenta la pressione';pd[11]:='A'; gr[11]:='D'; re[12]:='2A + B <----> C + EH ..+Q ';qr[12]:='diminuisce temperatura'; ri[12]:='D';tr[2]:='aggiunto B ';tp[12]:='aumenta la pressione';pd[12]:='A'; gr[12]:='D'; re[13]:='2A + B <----> C + FE ..+Q ';qr[13]:='aumenta temperatura'; ri[13]:='S';tr[13]:='aggiunto C ';tp[13]:='diminuisce la pressione';pd[13]:='D'; gr[13]:='A'; re[14]:='2A + 3B <----> 2C + 4E ...+Q ';qr[14]:='aumenta temperatura'; ri[14]:='S';tr[14]:='aggiunto E ';tp[14]:='aumenta la pressione';pd[14]:='A'; gr[14]:='A'; re[15]:='2A + 2B <----> 3C + 2EH ...+Q';qr[15]:='diminuisce temperatura'; ri[15]:='D';tr[15]:='aggiunto A e sottratto C';tp[15]:='diminuisce pressione'; pd[15]:='D';gr[15]:='D'; re[16]:='2A + B <----> C + 4E ...-Q';qr[16]:='dimuisce temperatura'; ri[16]:='S';tr[16]:='sottratto B e aggiunto E ';tp[16]:='aumenta pressione'; pd[16]:='A';gr[16]:='D';
end;
procedure cancella; begin clearscreen; end;
procedure pausa; begin writeln('premi ENTER ');readln; end;
procedure fine; (* conferma uscita operazione *) begin writeln('fine operazione:confermare :premi enter'); readln; end;
procedure descrive; begin writeln('esempi di spostamento equilibrio chimico'); writeln('dovuti a perturbazioni indotte con variazione di parametri'); writeln('come CONCENTRAZIONE reattivi e prodotti,PRESSIONE,TEMPERATURA'); writeln('----------------------------------------------------------'); writeln('viene richiesto di indicare come si sposta un sistema in'); writeln('equilibrio dinamico,quando si provoca una perturbazione'); writeln('oppure viene richiesto tipo di perturbazione da applicare'); writeln('per ottenere uno spostamento nel senso desiderato '); writeln('----------------------------------------------------------'); pausa;cancella; writeln('principio da ricordare :Le Chatelier '); writeln('un AUMENTO di PRESSIONE favorisce reazione con contrazione'); writeln('di volume,diminuzione di particelle,e ostacola quella che '); writeln('avviene con aumento di volume,aumento di particelle ');pausa; writeln('una DIMINUZIONE di PRESSIONE ostacola reazione con contrazione'); writeln('di volume,diminuzione di particelle,e favorisce quella che '); writeln('avviene con aumento di volume,aumento di particelle ');pausa; writeln('un AUMENTO di TEMPERATURA favorisce la reazione endotermica '); writeln('e ostacola la reazione esotermica');pausa; writeln('una DIMINUZIONE di TEMPERATURA favorisce la reazione esotermica '); writeln('e ostacola la reazione endotermica');pausa; writeln('una VARIAZIONE di CONCENTRAZIONE produce effetti diversi in '); writeln('funzione del tipo di variazione (aumento,diminuzione) e del '); writeln('tipo di sostanze (reattivi,prodotti ) '); writeln;pausa;cancella; end;
procedure attiva2; begin dati; writeln('scrivere come si sposta equilibrio se perturbato'); writeln('premi D se si sposta da reattivi a prodotti ----> '); writeln('premi S se si sposta da prodotti a reattivi <--- '); writeln('premi I se risulta indifferente <----> '); pausa;cancella; for a:=1 to prove do begin writeln(re[a]); writeln(tr[a]); write('come si sposta equilibrio S,D,I ? ');readln(ris); if ris=ri[a] then begin writeln('esatto ');esatte:=esatte+1;end else begin writeln('errato:era :',ri[a]);errate:=errate+1;end;pausa; cancella;end;end;
procedure attiva3; begin dati; writeln('scrivere come si sposta equilibrio se perturbato'); writeln('premi D se si sposta da reattivi a prodotti ----> '); writeln('premi S se si sposta da prodotti a reattivi <--- '); writeln('premi I se risulta indifferente <----> '); pausa;cancella; for a:=1 to prove do begin writeln(re[a]); writeln(tp[a]); write('come si sposta equilibrio S,D,I ? ');readln(ris); if ris=ri[a] then begin writeln('esatto ');esatte:=esatte+1;end else begin writeln('errato:era :',ri[a]);errate:=errate+1;end;pausa; cancella;end;end;
procedure attiva4; begin dati; writeln('scrivere come si sposta equilibrio se perturbato'); writeln('premi D se si sposta da reattivi a prodotti ----> '); writeln('premi S se si sposta da prodotti a reattivi <--- '); writeln('premi I se risulta indifferente <----> '); pausa;cancella; for a:=1 to prove do begin writeln(re[a]); writeln(qr[a]); write('come si sposta equilibrio S,D,I ? ');readln(ris); if ris=ri[a] then begin writeln('esatto ');esatte:=esatte+1;end else begin writeln('errato:era :',ri[a]);errate:=errate+1;end;pausa; cancella;end;end;
procedure attiva5; begin dati; writeln('scrivere come si deve variare la PRESSIONE'); writeln('per ottenere lo spostamento di equilibrio richiesto '); writeln('premi A per aumento pressione '); writeln('premi D per diminuzione pressione '); writeln('premi I se risulta indifferente <----> '); pausa;cancella; for a:=1 to prove do begin writeln(re[a]); writeln('spostamento richiesto verso :',ri[a]); write('come cambiare la pressione A,D,I ? ');readln(ris); if ris=pd[a] then begin writeln('esatto ');esatte:=esatte+1;end else begin writeln('errato:era :',pd[a]);errate:=errate+1;end;pausa; cancella;end;end;
procedure attiva6; begin dati; writeln('scrivere come si deve variare la TEMPERATURA'); writeln('per ottenere lo spostamento di equilibrio richiesto '); writeln('premi A per aumento temperatura '); writeln('premi D per diminuzione temperatura '); writeln('premi I se risulta indifferente <----> '); pausa;cancella; for a:=1 to 8 do begin writeln(re[a]); writeln('spostamento richiesto verso :',ri[a]); write('come cambiare la temperatura A,D,I ? ');readln(ris); if ris=gr[a] then begin writeln('esatto ');esatte:=esatte+1;end else begin writeln('errato:era :',gr[a]);errate:=errate+1;end;pausa; cancella;end;end;
procedure pro1; begin descrive; end;
procedure pro2; begin attiva2; end;
procedure pro3; begin attiva3; end;
procedure pro4; begin attiva4; end;
procedure pro5; begin attiva5; end;
procedure pro6; begin attiva6; end;
procedure scelta; (* procedura con scelta opzioni e uscita *) var s,sn:string;opzione:integer; begin clearscreen; writeln('seleziona opzione per EQUILIBRIO CHIMICO DINAMICO'); writeln('1...decrizione'); writeln('2...con variazione concentrazione assegnata'); writeln('3...con variazione pressione assegnata'); writeln('4...con variazione temperatura assegnata'); writeln('5...come variare la pressione '); writeln('6...come variare la temperatura '); writeln('9...fine '); writeln('scelta =');readln(opzione);cancella; case opzione of 1:pro1; 2:pro2; 3:pro3; 4:pro4; 5:pro5; 6:pro6; 9:fine; end; writeln('risposte esatte =',esatte); writeln('risposte errate =',errate); if esatte>errate then writeln('sufficiente') else writeln('insufficiente'); writeln('chiama insegnante per la valutazione '); writeln('altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn); if sn='S' then scelta ; end;
begin (* programma di lancio *) clearscreen; esatte:=0;errate:=0; repeat write('indica numero di prove da eseguire :minore di ',n,'..');readln(prove); until prove<n; scelta; writeln('risposte esatte =',esatte); writeln('risposte errate =',errate); if esatte>errate then writeln('sufficiente') else writeln('insufficiente'); writeln('chiama insegnante per la valutazione '); pausa;cancella; end.