ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º
ɻ˻ɻɻ˻ɻÉ˻ɻɻËɻɻÉ
ɻ˻ɻɻËÉ»
º
º
̼̹ººº»Ì¹Ì¹ºÊºÌ¹º ºººººº
ººÌ¹Ì¹È»ºº
º
º Ê
ÊÈȼȼÊÈÊÊÊ ÊÊÊȼÊȼ¼È¼
ȹʼÊÊȼÊȼ
º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º É˻ɻ˻»ÉË É»
É» º
º
º ºÊºººººººº ºº
¹ º
PROGRAMACION ESTRUCTURADA º
º Ê Êȼʼȼȼȼ
ȼ º
º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º
º
º
EN ESTA LECCION APRENDERAS...
º
º
º
º ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ º
º ³
³ º
º ³ þ A escribir nuevamente el programa
³ º
º ³ de Aritm‚tica pero
traucido al QBasic .......
2-9 ³ º
º ³
³ º
º ³
³ º
º ³
³ º
º ³
³ º
º ³
³ º
º ³
³ º
º ³
³ º
º ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ º
º
º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º É»Ë»Ë É»É» ɻɻɻ
º
º
º ººÌ¹º Ì º
¹ººÈ» º
PROGRAMACION DESCENDENTE PARTE III º
º ȹʼȼȼȼ ȼȼȼ
º
º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º É»Ë»Ë É»É» ɻɻɻ
º
º
º ººÌ¹º Ì º
¹ººÈ» º
PROGRAMACION DESCENDENTE PARTE III º
º ȹʼȼȼȼ ȼȼȼ
º
º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
En esta lecci¢n te daremos nuevamente
el programa de
aritm‚tica que hicimos en las lecciones 209 y 210 pero
traducido
al QBasic. Estudia
todos y cada uno de sus procedimientos.
Este
programa lo empezamos primero, claro est ,
con el siguiente
algoritmo:
PresentaPrograma
Instrucciones
EscogeOperacion
EscogeDificultad
ResuelveProblema
ImprimePuntuacion
RepitePrograma
DejaPrograma
Como aprendiste en la lecci¢n anterior, sabes que lo primero
que tienes que hacer es usar el
algoritmo de arriba para
construir la RUTINA PRINCIPAL del programa. Recuerda que antes
de escribir dicha rutina debes darle nombre al programa
con la
selecci¢n Save as... del FILE MENU.
Recuerda, tambi‚n, que te aconsej‚ que escribieras
los
nombres de los procedimientos en la RUTINA PRINCIPAL
dentro de
enunciados REMs en forma de comillas, con la intenci¢n de
que no
se ejecuten por el momento. Despu‚s que vayas
llenando los
mismos, uno a uno, le vas quitando las comillas (') REMs, de
modo
que puedas ejecutarlos y as¡ ver c¢mo funcionan.
La que sigue es la RUTINA PRINCIPAL...
'PROGRAMA DE ARITMETICA
'----------------------
CLS
'PresentaPrograma
'Instrucciones
'EscogeOperacion
'EscogeDificultad
'ResuelveProblema
'ImprimePuntuacion
'RepitePrograma
'DejaPrograma
END 'programa.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB305 PROGRAMACION
DESCENDENTE PARTE III 3
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Despu‚s de haber escrito la misma, procedes a llenar
cada
procedimiento, pero s¢lo con un mensaje que diga lo que el
mismo
hace, usando sentencias PRINT.
He aqu¡ como queda el programa despu‚s de
llenar los
procedimientos con las sentencias mencionadas...
DECLARE SUB ImprimePuntuacion ()
DECLARE SUB RepitePrograma ()
DECLARE SUB DejaPrograma ()
DECLARE SUB EscogeOperacion ()
DECLARE SUB EscogeDificultad ()
DECLARE SUB ResuelveProblema ()
DECLARE SUB Instrucciones ()
DECLARE SUB PresentaPrograma ()
'
'PROGRAMA DE ARITMETICA
'----------------------
CLS
PresentaPrograma
Instrucciones
EscogeOperacion
EscogeDificultad
ResuelveProblema
ImprimePuntuacion
RepitePrograma
DejaPrograma
END 'programa.
SUB DejaPrograma
'---------------
PRINT
"DEJA PROGRAMA"
END SUB
SUB EscogeDificultad
'-------------------
PRINT
"ESCOGE DIFICULTAD"
END SUB
SUB EscogeOperacion
'------------------
PRINT "ESCOGE
OPERACION DE ARITMETICA"
END SUB
SUB ImprimePuntuacion
'--------------------
PRINT
"IMPRIME PUNTACION"
END SUB
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB305 PROGRAMACION
DESCENDENTE PARTE III 4
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SUB Instrucciones
'----------------
PRINT
"IMPRIME INSTRUCCIONES"
END SUB
SUB PresentaPrograma
'-------------------
PRINT
"PRESENTA PROGRAMA"
END SUB
SUB RepitePrograma
'-----------------
PRINT
"REPITE PROGRAMA"
END SUB
SUB ResuelveProblema
'-------------------
PRINT
"RESUELVE PROBLEMA"
END SUB
Una vez que llenas todos los procedimientos,
ejecutas el
programa para ver si este trabaja bien. Para que esto ocurra,
todos los mensajes de cada procedimeinto deben
desplegarse uno
detr s del otro. Una vez que hayas
probado tu programa
esquem tico, procedes a llenar
cada procedimiento con las
instruccionaes Basic necesarias.
He aqu¡ todo el
programa ya llenado. Si
quieres llena los
procedimientos usando estas o usando instrucciones
tuyas. Pero,
recuerda, que no importa como los
llenes, el programa debe
producir lo que se pide en ellos.
Observa, tambi‚n las variables compartidas. Recuerda que
‚stas van surgiendo a medida que llenas cada subrutina.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB305 PROGRAMACION
DESCENDENTE PARTE III 5
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DECLARE SUB RepitePrograma ()
DECLARE SUB EvaluaRespuesta ()
DECLARE SUB EntraRespuesta ()
DECLARE SUB CreaProblema ()
DECLARE SUB ImprimePuntuacion ()
DECLARE SUB DejaPrograma ()
DECLARE SUB EscogeOperacion ()
DECLARE SUB EscogeDificultad ()
DECLARE SUB ResuelveProblema ()
DECLARE SUB Instrucciones ()
DECLARE SUB PresentaPrograma ()
'
'Shared variables.
DIM SHARED n1
DIM SHARED n2
DIM SHARED d
DIM SHARED s$
DIM SHARED respuesta$
DIM SHARED
contestacion
DIM SHARED
solucion
DIM SHARED
correcto
DIM SHARED
problema
'
'PROGRAMA DE ARITMETICA
'----------------------
CLS
PresentaPrograma
Instrucciones
EscogeOperacion
EscogeDificultad
ResuelveProblema
ImprimePuntuacion
RepitePrograma
DejaPrograma
END 'programa.
SUB CreaProblema
'---------------
'Genera numeros.
RANDOMIZE TIMER
LET n1
= INT(RND * 10 ^ d) + 1
LET n2
= INT(RND * 10 ^ d) + 1
'Crea expression de
aritmetica.
IF s$
= "+" THEN LET solucion = n1 + n2
IF s$
= "-" THEN
'Evita numero negativo
IF n2 >
n1 THEN CreaProblema
LET solucion = n1 - n2
END IF
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB305 PROGRAMACION
DESCENDENTE PARTE III 6
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
'Fin Evita.
IF s$ =
"x" THEN LET solucion = n1 * n2
IF s$ =
"/" THEN LET solucion = n1 / n2
END SUB
SUB DejaPrograma
'---------------
CLS
PRINT : PRINT :
PRINT
PRINT "
ESTE PROGRAMA SE ACABO"
PRINT
PRINT "
ESPERO QUE TE HAYAS DIVERTIDO"
PRINT
PRINT "
HASTA PRONTO!"
END SUB
SUB EntraRespuesta
'----------------
'Despliega
Problema.
LOCATE
4, 1: PRINT "PROBLEMA"; problema
LOCATE
6, 3: PRINT "
"
LOCATE
6, 3: PRINT n1; s$; n2; "=";
'Entra respuesta.
INPUT
respuesta$
LET
contestacion = VAL(respuesta$)
END SUB
SUB EscogeDificultad
'-------------------
CLS
PRINT
"SELECCIONA GRADO DE DIFICULTAD:"
PRINT
PRINT " 1 ELEMENTAL"
PRINT " 2 INTERMEDIO"
PRINT " 3 AVANZADO"
PRINT
INPUT
"SELECCIONA POR NUMERO ", d$
LET d = VAL(d$)
IF d$ <>
"1" AND d$ <> "2" AND d$ <> "3" THEN
'Rechaza seleccion.
PRINT
PRINT "POR FAVOR, DIGITA
1, 2 ¢ 3."
PRINT
INPUT "Presiona ENTER
para tratar de nuevo. ", e$
EscogeDificultad 'otra vez.
END IF
END SUB
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB305 PROGRAMACION
DESCENDENTE PARTE III 7
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SUB EscogeOperacion
'------------------
CLS
PRINT "SELECCIONA
UNA OPERACION:"
PRINT
PRINT " +
SUMA"
PRINT " -
RESTA"
PRINT " x
MULTIPLICACION"
PRINT " /
DIVISION"
PRINT
INPUT
"SELECCIONA SIMBOLO. ", s$
IF s$ =
"X" THEN LET s$ = "x"
IF s$
<> "+" AND s$ <> "-" AND s$ <>
"x" AND s$ <> "/" THEN
'Rechaza seleccion.
PRINT
PRINT "POR FAVOR,
SELECCIONA POR SYMBOLO."
PRINT
INPUT "Presiona ENTER
para tratar de nuevo.", e$
EscogeOperacion 'de nuevo.
END IF
END SUB
SUB EvaluaRespuesta
'------------------
IF contestacion =
solucion THEN
PRINT
PRINT
"CORRECTO"
LET correcto
= correcto + 1
LOCATE 2,
40: PRINT "PUNTUACION:"; correcto; "correctas de"; 10
LOCATE 10, 1
PRINT "Presiona ENTER para continuar";
INPUT e$
END IF
IF contestacion
<> solucion THEN
PRINT
PRINT
"INCORRECTO, la solucion es"; solucion
LOCATE 10, 1
PRINT "Presiona ENTER para continuar";
INPUT e$
END IF
END SUB
SUB ImprimePuntuacion
'-------------------
CLS
PRINT
"PUNTUACION FINAL"
PRINT "----------------"
PRINT
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB305 PROGRAMACION
DESCENDENTE PARTE III 8
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
PRINT " PUNTUACION:"; correcto;
"correctas de"; 10
IF correcto > 7
THEN
PRINT
PRINT
" TE FELICITO, TIENES
UNA EXCELENTE PUNTUACION!"
PRINT
PRINT
" TRATA OTRO GRADO DE
DIFICULTAD"
END IF
IF correcto <= 7
THEN
PRINT
PRINT
" TIENES QUE PRACTICAR
MAS"
END IF
PRINT
INPUT
"Presiona ENTER para continuar", e$
END SUB
SUB Instrucciones
'----------------
CLS
PRINT
"PROGRAMA DE ARITMETICA"
PRINT
PRINT
"Instrucciones:"
PRINT
"-------------"
PRINT
PRINT " La computadora te pedir que
selecciones"
PRINT " una de las siguientes operaciones
de aritm‚tica:"
PRINT " suma, resta, multiplicaci¢n y
divisi¢n."
PRINT
PRINT " Luego, te pedir que
selecciones"
PRINT " el gado de dificultad. "
PRINT
PRINT " Inmediatamente despu‚s te presentar "
PRINT " diez problemas de
aritm‚tica"
PRINT " de acuerdo con la operaci¢n y el
grado"
PRINT " de dificultad escogido por
t¡."
PRINT
PRINT " Despu‚s de haber resuelto todos
los problemas"
PRINT " ver s tu puntuaci¢n final."
PRINT
PRINT " Q U E T E N G A S B U E N A
S U E R T E!"
PRINT
INPUT " Presiona ENTER para
continur"; e$
END SUB
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB305 PROGRAMACION
DESCENDENTE PARTE III 9 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SUB PresentaPrograma
'-------------------
CLS
PRINT : PRINT :
PRINT : PRINT
PRINT "
ACV2'S SOFTWARE"
PRINT
PRINT "
Presenta"
PRINT
PRINT "
PROGRAMA DE ARITMETICA"
PRINT
PRINT "
Programa QBasic"
PRINT
PRINT "
Escrito por Reynaldo Acevedo Rios"
PRINT
PRINT
INPUT " Presiona
ENTER para continuar"; e$
END SUB
SUB RepitePrograma
'-------------------
LOCATE 12, 1: PRINT
"
"
LOCATE 12, 1: PRINT
"QUIERES TRATAR OTROS 10 PROBLEMAS (S/N)";
INPUT R$
IF R$
= "S" OR R$ = "s" THEN
RUN 'programa de nuevo.
ELSEIF R$ <> "S" AND R$ <> "s" AND R$
<> "N" AND R$ <> "n" THEN
CALL RepitePrograma
'otra vez.
ELSE
END IF
END SUB
SUB ResuelveProblema
'-------------------
CLS
LOCATE 2,
40: PRINT "PUNTUACION:"; correcto; "correctas de"; 10
LET problema
= problema + 1
CreaProblema
EntraRespuesta
EvaluaRespuesta
IF problema
<> 10 THEN
ResuelveProblema
ELSE
'Deja deja Resuelveproblema.
END IF
END SUB