program ge4a;
(* interattivo *)
uses crt;
var fd,fr,f,s,sh,f1,f2,c,gd,gr,g1,g2,g:string[20];
      a1,a2,b1,b2:char;
      sk,sg:string;
      cd,cr:integer;

procedure pausa;
begin
textcolor(15);
gotoxy(5,23); writeln('premi INVIO');
readln;
textcolor(0);
gotoxy(5,23);writeln('premi INVIO');
textcolor(15);
end;

procedure sosta;
begin
delay(1000);
end;

procedure cancella;
begin
clrscr;
end;

procedure ipotesi;
begin
gotoxy(20,14);writeln('IPOTESI INTERPRETATIVA');
gotoxy(5,15);writeln('ogni genitore porta duplice copia di ogni fattore');
gotoxy(5,17);
writeln('nella gametogenesi ogni gamete riceve 1 fattore per ogni copia');
gotoxy(5,18);writeln('con la fecondazione,lo zigote riceve due fattori');
gotoxy(5,19);
writeln('uno di origine paterna,altro di origine materna per ogni copia');
end;

procedure meiosi;
begin
writeln('durante la gametogenesi,per meiosi');
writeln('le coppie di cromosomi omologhi');
writeln('formate da cromosomi di origine paterna e materna');
writeln('si separano in gameti distinti:ogni gamete contiene solo');
writeln('uno dei due cromosomi di ogni coppia');
writeln('SE I FATTORI responsabili dei caratteri ereditari');
writeln('sono collegati ognuno ad un cromosoma della coppia omologa');
writeln('si comprende come si separino in gameti distinti durante');
writeln('la gametogenesi');
end;

procedure seconda;
begin
sk:='    ';
sg:='      ';
gotoxy(5,4);writeln('fenotipo genitori ');
textcolor(cd);
gotoxy(30,4);writeln(fd,s,gd);
gotoxy(50,4);writeln(fd,s,gd);
gotoxy(5,5);writeln('genotipo genitori ');
gotoxy(30,5);writeln(a1,a2,s,b1,b2);
gotoxy(50,5);writeln(a1,a2,s,b1,b2);
sosta;
textcolor(15);
gotoxy(5,6);writeln('gameti con  fattori');
gotoxy(30,6);writeln(a1,b1,s,a1,b2,s,a2,b1,s,a2,b2);
gotoxy(50,6);writeln(a1,b1,s,a1,b2,s,a2,b1,s,a2,b2);
gotoxy(5,7);
writeln('combinazioni tra gameti '); sosta;
textcolor(cd);
gotoxy(15,10);writeln(a1,b1,sg,a1,b2,sg,a2,b1,sg,a2,b2);
textcolor(cr);
gotoxy(5,11);writeln(a1,b1);
gotoxy(5,12);writeln(a1,b2);
gotoxy(5,13);writeln(a2,b1);
gotoxy(5,14);writeln(a2,b2);
sosta;
gotoxy(15,11);
textcolor(15);
writeln(a1,a1,b1,b1,sk,a1,a1,b1,b2,sk,a1,a2,b1,b1,sk,a1,a2,b1,b2);
gotoxy(15,12);
writeln(a1,a1,b1,b2,sk,a1,a1,b2,b2,sk,a1,a2,b1,b2,sk,a1,a2,b2,b2);
gotoxy(15,13);
writeln(a1,a2,b1,b1,sk,a1,a2,b1,b2,sk,a2,a2,b1,b1,sk,a2,a2,b1,b2);
gotoxy(15,14);
writeln(a1,a2,b1,b2,sk,a1,a2,b2,b2,sk,a2,a2,b1,b2,sk,a2,a2,b2,b2);
textcolor(cd);
sosta;
gotoxy(5,15);writeln('fenotipi filiale 2 ');
gotoxy(5,16);writeln('3/4   ',fd,s,a1,'  1/4 ',fr,s,a2);
gotoxy(5,17);writeln('3/4   ',gd,s,b1,'  1/4 ',gr,s,b2);
textcolor(cr);
gotoxy(5,18);writeln('9/16  ',fd,s,a1,sh,gd,s,b1);
gotoxy(5,19);writeln('3/16  ',fd,s,a1,sh,gr,s,b2);
gotoxy(5,20);writeln('3/16  ',fr,s,a2,sh,gd,s,b1);
gotoxy(5,21);writeln('1/9   ',fr,s,a2,sh,gr,s,b2);
textcolor(cd);
gotoxy(15,22);writeln('alleli dominanti  =',fd,sh,a1,sh,gd,sh,b1);
textcolor(cr);
gotoxy(15,23);writeln('alleli recessivi  =',fr,sh,a2,sh,gr,sh,b2);
sosta;
end;



procedure dati;
begin
writeln('scrivere tutto usando le lettere minuscole ');
write('scrivi nome del 1 carattere considerato:es.colore ');readln(c);
write('scrivi fenotipo genitore 1:es.giallo =');readln(f1);
write('scrivi fenotipo genitore 2:es.verde =');readln(f2);
repeat
write('scrivi fenotipo filiale 1:es.giallo    =');readln(f);
until (f=f1) or (f=f2);
  if f=f1 then begin fd:=f1;fr:=f2;a1:=upcase(f1[1]);a2:=(f1[1]);end
   else begin fd:=f2;fr:=f1;a1:=upcase(f2[1]);a2:=f2[1];end;

write('scrivi nome del 2 carattere considerato:es.cute ');readln(c);
write('scrivi fenotipo genitore 1 =:liscio ');readln(g1);
write('scrivi fenotipo genitore 2 =:rugoso ');readln(g2);
repeat
write('scrivi fenotipo filiale 1    =liscio');readln(g);
until (g=g1) or (g=g2);
  if g=g1 then begin gd:=g1;gr:=g2;b1:=upcase(g1[1]);b2:=g1[1];end
   else begin gd:=g2;gr:=g1;b1:=upcase(g2[1]);b2:=g2[1];end;
cancella;
end;

procedure parentale;
begin
gotoxy(5,4);writeln('fenotipo genitori ');
textcolor(cd);gotoxy(30,4);writeln(fd,s,gd);
textcolor(cr);gotoxy(50,4);writeln(fr,s,gr);
sosta;
textcolor(cd);gotoxy(5,8);writeln('fenotipo filiale1 :100%');
gotoxy(40,8);writeln(fd,s,gd);
sosta;
textcolor(cd);gotoxy(5,12);writeln('alleli dominanti  =',fd,sh,a1,sh,gd,sh,b1);
textcolor(cr);gotoxy(5,13);writeln('alleli recessivi  =',fr,sh,a2,sh,gr,sh,b2);
textcolor(15);
sosta;
ipotesi;
sosta;
gotoxy(5,5);writeln('genotipo genitori ');
textcolor(cd);gotoxy(30,5);writeln(a1,b1,s,a1,b1);
textcolor(cr);gotoxy(50,5);writeln(a2,b2,s,a2,b2);
sosta;
textcolor(15);
gotoxy(5,6);writeln('gameti con fattori');
gotoxy(30,6);writeln(a1,b1);
gotoxy(50,6);writeln(a2,b2);
sosta;
gotoxy(5,7);writeln('unica combinazione tra gameti con ',a1,b1,s,a2,b2);
sosta;
textcolor(cd);
gotoxy(5,9);writeln('genotipo filiale1 :100% ');
gotoxy(40,9);writeln(a1,a2,s,b1,b2);
textcolor(15);
end;

procedure inizio;
begin
cancella;
textcolor(15);
writeln('esempio terza legge di MENDEL o della INDIPENDENZA ');
writeln('incrociando due individui omozigotici per due  caratteri');
writeln('uno con alleli dominanti e altro con alleli recessivi');
writeln('si ottiene nella prima generazione filiale il 100% di individui');
writeln('con fenotipo identico a quello del genitore dominante');
writeln('applicazione legge della DOMINANZA ');
pausa;cancella;
s:=' / ';
sh:='    ';
dati;parentale;pausa;cancella;meiosi;pausa;cancella;
textcolor(15);
writeln('incrociando due individui eterozigotici della filiale1 ');
writeln('si ottengono nella filiale2 individui con quattro fenotipi');
writeln('75% con fenotipo dominante  25% fenotipo recessivo 1 carattere');
writeln('75% con fenotipo dominante  25% con fenotipo recessivo 2 carattere');
writeln('altri due fenotipi con un allele dominante e uno recessivo ');
pausa;cancella;seconda;pausa;cancella;
end;

procedure scelta;
var ris:integer;
begin
cancella;
inizio;
writeln('per altra prova premi 1,per finire premi 2 ');
write('scrivi 1 o 2 ? ');readln(ris);
if ris=1 then scelta;
end;

begin
cancella;
writeln('scrivere il colore per dominante e recessivo');
writeln('usare numeri da 1 a 15 se video a colori ');
writeln('usare numeri 3,6 o 15 se bianco e nero ');
write('scrivi colore per dominante:3 o 15 ');readln(cd);
write('scrivi colore per recessivo:6 0 15 ');readln(cr);
scelta;
end.