¿Cómo citar estas ¿Cómo poner un
|
Juan Carlos Martínez Coll
7 - UN PROGRAMA EN GBASIC
7-c. Preparación de la Pantalla400 HYBRID
El comando HYBRID divide la pantalla en dos zonas: La superior destinada a la presentaci6n gráfica, y la inferior que puede recibir cuatro líneas de texto. La zona gráfica está formada por una matriz de 640 x 200 puntos. Para dibujar un punto en la zona gráfica se utiliza la sentencia POINT X,Y en la que "X" es el valor de las abcisas e "Y" el de ordenadas. "X" puede tener cualquier valor entero o decimal entre 0 y 159. "Y" puede tener cualquier valor real entre 20 y 119. Hay por tanto cuatro columnas por cada unidad de "X" y dos filas por cada unidad de "Y". Además, como las cuarenta filas de puntos de la zona baja de la pantalla están reservadas para texto, la primera fila sobre la que se puede dibujar es la 40. Así, por ejemplo, para marcar el punto de la columna séptima a partir de la izquierda y de la fila 13 a partir de abajo, habría que indicar "POINT 1.75, 26.5". Como se utilizarán unos ejes coordenados cuyo origen estará en la columna 36, es conveniente desde ahora mismo indicar que el punto de partida para las abcisas será 9.
410 X = 9
Según que la forma de presentación de los resultados vaya a ser la decimal, la exponencial o se vayan a representar las tasas de crecimiento de cada estrategia, habrá que preparar la pantalla con las instrucciones que se inician en las líneas 500, 1000 o 1500 respectivamente. La preparación de la pantalla para la presentación de las EDE es la misma, en este ejemplo, que para la las tasas de crecimiento. En otras ocasiones, se ha necesitado utilizar la presentación decimal.
420 IF G$ = "DEC" THEN GOTO 500
430 IF G$ = "EXP" THEN GOTO 1000
440 IF G$ = "TAS" THEN GOTO 1500
450 IF G$ = "EDE" THEN GOTO 1500
460 CLOSE &1
470 DESTROY F$
480 GOTO 260Si, por error, no hubiéramos introducido correctamente la expresión G$, las tres últimas sentencias borrarían el fichero del disco y el procesador volvería a la pregunta de la forma de presentación.
500 AXIS 15, 7.5, 9, 30
En el caso de que los porcentajes se vayan a representar en forma decimal, los ejes coordenadas tendrán su origen en el punto 9, 30 (esto es, en la columna 36 y la fila 20). Los dos primeros números de la sentencia AXIS (15 y 7.5) indican que el eje de abcisas tendrá una marca cada sesenta puntos, y el de ordenadas cada quince. La consecuencia de lodo esto es que la precisión de los gráficos queda reducida a 150 puntos para las ordenadas y a 600 para las abcisas. En otras palabras, cuando haya que representar un porcentaje del 100%, se hará con un punto situado ciento cincuenta filas por encima del origen de ordenadas; como la representación de cada proceso requerirá una columna de puntos, podremos representar seiscientos procesos. Esto no significa que haya limitaciones al número de procesos que se pueden realizar, sino sólo a los que se pueden representar. Por ejemplo, seria posible que hubiese tres mil procesos y que sólo se presentaran los resultados en la pantalla una vez de cada cinco. Esa es la solución utilizada en el programa "AZAR" en el que las estrategias contrincantes son elegidas aleatoriamente. Pero en el caso que estamos analizando no es necesario ya que manipulando la variable Valor de Incidencia "I", podremos contraer o dilatar horizontalmente las gráficas.
Las siguientes líneas del programa marcan los puntos de referencia en todo el campo de coordenadas.
510 FOR S = 1 TO 10
520 FOR Y = 1 TO 10
530 POINT 9 + 15 * S, 30 + 7.5 * Y
540 NEXT
550 NEXTConviene aquí aclarar que los signos aritméticos en GBASIC son:
+ suma,
- resta,
* mulliplicación,
/ división,
^ potenciación.Además, en una cadena de operaciones aritméticas, el procesador respetará las siguientes prioridades: primero realizará las operaciones indicadas entre paréntesis, y si existen varios encadenados, comenzará por los más internos; en segundo lugar realizará las potenciaciones (^); después las multiplicaciones y divisiones; y finalmente las sumas y restas.
Tras marcar los puntos de referencia en el campo de coordenadas, se anotan los dígitos que correspondan junto a cada marca de los ejes.
560 FOR S = 1 TO 10
570 S$ = STR$ (S * 10)
580 MOVE 6 - 2 * LEN (S$), 27 + 7.5 * S
590 GPRINT S * 10
600 MOVE S * 15, 25
610 GPRINT S * 60
620 NEXT
630 GOTO 2500Para escribir caracteres en la zona gráfica de la pantalla hay que indicar el punto en el que se inicia la escritura mediante MOVE X, Y. Para escribir en la zona de texto se utiliza el comando PRINT y para hacerlo en la zona gráfica se utiliza el GPRINT. LEN (S$) es el número de caracteres de S$. Para que el ordenador pueda estimar cuantos dígitos tiene un número, es necesario que previamente se convierta ese número a caracteres que alfanuméricos, lo que se consigue mediante el comando STR$.
Cuando la presentación deba ser exponencial, la preparación de la pantalla tiene la complicación de elaborar la escala logarítmica para las ordenadas.
1000 AXIS 15, 0, 9, 30
El origen de coordenadas está en el mismo punto que en caso de la presentación decimal, pero las marcas en el eje de ordenadas tendremos que hacerlas con las siguientes líneas.
1010 FOR N = 5 TO 10
1020 Y = 30 + (2^N) * 75 /1024
1030 MOVE 8, Y
1040 DRAW 10,Y
1050 FOR S = 1 TO 10
1060 POINT 9 + 15 * S, Y
1070 NEXT
1080 NEXT
El bucle 1050 a 1070 marcará con puntos el campo de coordenadas. La numeración del eje de ordenadas resulta algo pesada.1090 MOVE 0, 102
1100 GPRINT 100
1110 MOVE 2, 65
1120 GPRINT 10
1130 MOVE 4, 47
1140 GPRINT 1
1150 MOVE 2, 37
1160 GPRINT "0.1"
1170 MOVE O, 32
1180 GPRINT "0.01"La numeración de las abcisas es la misma que en el caso de la presentación decimal.
1190 FOR S = 1 TO 10
1200 MOVE 1 + S * 15, 24
1210 GPRINT S * 60
1220 NEXT
1230 GOTO 2500Cuando lo que se va a representar no es la distribución porcentual de las estrategias sino sus tasas de crecimiento o sus EDE, las coordenadas se elaborarán como sigue.
1500 AXIS 15, 4, 9, 76
Habrá por tanto dos cuadrantes ya que las tasas de crecimiento pueden ser negativas.
1510 FOR S = 1 TO 10
1520 FOR Y = 0 TO 18 STEP 2
1530 POINT 9 + 15 * S, 36 + 4 * Y
1540 NEXT
1550 NEXTLas líneas anteriores marcan con puntos todo el campo de coordenadas. Las siguientes ponen dígitos en las divisiones de la ordenada del segundo cuadrante ...
1560 FOR S = - 10 TO 0 STEP 2
1570 S$ = STR$ (S)
1580 MOVE 6 - 2 * LEN (S$), 73 + S * 4
1590 GPRINT S
1600 NEXT... y en las del primero.
1610 FOR S = 0 TO 2 STEP .5
1620 S$ = STR$(S)
1630 MOVE 6 - 2 * LEN (S$), 73 + S * 16
1640 GPRINT S
1650 NEXTComo puede verse, las divisiones del cuadrante superior representan un cuarto de las del inferior; se busca con ello una mayor claridad en la presentación. A continuación se marcan con dígitos las abcisas.
1660 FOR S = 60 TO 600 STEP 60
1670 S$ = STR$ (S)
1680 MOVE 9 + S/4 - 2 * LEN (S$), 30
1690 GPRINT S
1700 NEXTPara cualquier forma de presentación (decimal, exponencial de tasas de crecimiento o de eficacias diferenciales) la pantalla se completa indicando en la parte superior el nombre del fichero en el disco, la forma de presentación, el valor de incidencia y los porcentajes iniciales de cada estrategia.
2500 MOVE 0, 114.5
2510 GPRINT F$, "PRESENTACION", G$, "INCIDENCIA = ", I
2520 MOVE 0, 109.5
2530 GPRINT "PORCENTAJES INICIALES :",
2540 FOR S = 1 TO 5
2550 GPRINT A$(S, S), "=", P(S)," ; ",
2560 NEXTAhora se puede entender la utilidad de la cadena A$ que quedó definida en la línea 40. A$(S,S) es la inicial de la estrategia S-ésima.
Volver al índice de la tesis doctoral Bioeconomía
Volver al menú de Tesis Doctorales
Volver a la Enciclopedia y Biblioteca de Economía EMVI