D'altra banda, a mesura que el càlcul es complica, s'ha de saber que la dificultat del programa es complica de manera geomètrica.
Aquest programa és només una aproximació a l'aprenentatge dialogat de les lleis de Mendel. Per a això s'utilitzarà un senzill exemple.
Suposem que tenim un caràcter hereditari concret, com el color. Utilitzarem G per a indicar el vermell i Z per a indicar el blanc. A més, no s'indicarà qui té prioritat.
Es considerarà un gen per cada cromosoma i, una vegada donats els genotips de totes dues persones amb precisió, es pretén conèixer el genotip dels fills de primera generació. Una vegada resposta, l'ordinador compararà amb la resposta real i decidirà si corregir o no.
Els primers genotips seran creats aleatòriament per l'ordinador i comunicats a l'usuari.
Per exemple, si un dels pares és BA i l'altre AD, el resultat real serà:
i el genotip dels fills de primera generació:
SS.CC. DG
Observacions: 1.- Com veuràs, en la línia 400 d'aquest programa s'ha utilitzat la funció CSRLIN. Aquesta funció retorna com a resultat la línia en la qual es troba el cursor en un moment donat. L'objectiu d'aquesta línia és substituir les preguntes que se li faran a l'usuari en la pantalla per altres noves en la columna 1. Per a això s'ha utilitzat la sentència LOCATE X, I, on X indicarà la línia i I la columna. En el nostre cas I serà el mateix durant tot el cicle, però X ha d'anar afegint cada vegada que s'executi la sentència. D'altra banda, aquesta sentència està inclosa en dues sentències FOR, per la qual cosa no és possible expressar la línia mitjançant els índexs I i J. Per tant, i atès que la sentència INPUT porta automàticament el cursor a la següent línia, n'hi ha prou amb utilitzar la funció CSRLIN. Si és necessari, se t'ocorrerà una altra solució possible, és a dir, posar espais en blanc a l'hora d'introduir el text en la sentència INPUT. No obstant això, sàpiga que també es pot utilitzar la funció CSRLIN. 2.- En la majoria dels programes de diàleg és necessari introduir pauses perquè l'usuari pugui llegir les pantalles que se li mostren. En molts casos, aquests passos solen ser fixos, és a dir, definits pel programador i són iguals cada vegada que es realitza el programa. Si tenim en compte que cada persona porta un ritme diferent, l'ideal és expressar el seu desig de continuar endavant prement una tecla i és el que es fa en aquest programa en les línies 250-290. D'altra banda, i atès que la funció INKEY té en compte totes les tecles premudes, és convenient que s'oblidi de les tecles que s'han premut abans que aparegui el missatge de prémer una tecla en la pantalla. Si no fos així, ens passaria sense temps per a llegir la pantalla. És el que es fa en les línies 270-280. |
10 ANÀLISI DE MENDEL REM 20 KEY OFF : CLS 30 LOCATE 5,31 : PRINT "ANÀLISI DE MENDEL" 40 LOCATE 9,7 : PRINT "L'objectiu d'aquest programa és realitzar una senzilla anàlisi de Mendel." 50 LOCATE 12,7 : PRINT "En ell s'analitzarà el genotip dels fills de primera generació. Bes- 60 LOCATE 14,7 : PRINT "només es tindrà en compte un gen per cada grup, cromosoma." 70 LOCATE 17,7 : PRINT "Les característiques s'expressaran amb les lletres G (VERMELLA) i Z (BLANCA)." 1$ THEY=160$ MES EXTRA 320 LOCATE 5,23 : PRINT "--------------------------------" 330 LOCATE 7,30 : PRINT "PARE" : LOCATE 7,46 : PRINT "MARE" 340 LOCATE 9,30 ; PRINT$ PRINT "Quina serà la configuració dels fills de primera generació?" 370 LOCATE 14,30 380 FOR I=1 TO 2 390 FOR J=1 TO 2 400 LOCATE CSRLIN,30 : INPUT E$(I,J) 410 NEXT J 420 NEXT I 430 REM EN F440 ! Resposta correcta." 520 GOTO 590 530 LOCATE 19,10 : PRINT "MALAMENT!! ! La resposta correcta és la següent: "; 540 FOR I=1 TO 2 550 FOR J=1 TO 2 560 PRINT, S.A$(I,J);"; 570 NEXT J 580 NEXT I 590 LOCATE 21,31 : PRINT "Programa finalitzat." 600 END 610 REM ANALISIS DE MENDEL AMAIA