- Instrucciones (Ejecuta línea a línea si no se ordena otra cosa)
- Operaciones matemáticas y otras
- Ejemplos mezclado de instrucciones
- Ejercicios programación en Basic por pasos (de menor a mayor dificultad)
- Resolución de ejercicios de programación en BASIC
- Problemas o programas a realizar
Instrucciones (Ejecuta línea a línea si no se ordena otra cosa)
BASICAS Y DE DATOS
CLS Limpia o borra la pantalla.
END Indica el final de un programa (no hace falta ponerlo)
PRINT Imprime en la pantalla: lo que esté entre "comillas" o variables.
INPUT (A, A%, A$) Para introducir o "preguntar, entre comillas" un dato (Lo guarda en Memoria)
VARIABLES (A, A%, A$) A= solo nº de todo tipo; A%= nº enteros; A$= letras (1º) y nº
Ejemplo:
10 CLS (Limpia la pantalla cada vez que se ejecuta el programa)
20 INPUT "PON TU NOMBRE"; N$ (Imprime lo de entre comillas y pregunta N$ [letras y nº])
30 INPUT "CUAL ES TU EDAD"; E% (Imprime lo de comillas y pregunta E% [nº entero])
40 INPUT "CUÁNTO MIDES EN METROS"; M (Imprime lo de comillas y M [todo tipo de nº])
50 PRINT "TE LLAMAS";N$, "TIENES ";E%; "AÑOS Y MIDES"; M (Imprime " " y variables)
60 END (Indica el fin del programa, es opcional)
CONDICIONES
IF……………….THEN…………….…../ELSE……………..…..END IF
Si condición Entonces órdenes/más si no órdenes fin
Ejemplo:
10 INPUT "INTRODUCE UNA NOTA DE 1 A 10"; N
20 IF N < 5 THEN PRINT "SUSPENSO" (Condición: Si N menor a 5, imprime Suspenso)
30 ELSE (Más si no lo cumple, es decir, N es mayor o igual a 5, ejecuta la siguiente línea)
40 PRINT "APROBADO"
50 END IF (Final de la condición, sea N lo que sea)
IF………….THEN GOTO ……….
Si condición Entonces Vete a….(si no cumple, ejecuta siguiente línea)
Ejemplo:
10 INPUT "INTRODUCE UNA NOTA DE 1 A 10"; N
20 IF N < 5 THEN GOTO 50 (Condición: Si N menor a 5, ir a la línea 50 / Si no cumple: línea 30)
30 PRINT "APROBADO"
40 GOTO 60 (Ir a la línea 60, si no se pusiera esto iría a la línea siguiente)
50 PRINT "SUSPENSO"
60 END
BUCLES (Falta ejemplo de: GOSUB…RETURN( Va a subprograma y vuelve donde lo dejó)
GOTO Ir a … (Va a un nº de línea: repite ciclo o ejecuta una orden)
Ejemplo:
10 INPUT "INTRODUCE UN NOMBRE"; N$
20 PRINT N$
30 GOTO 20 (Ir a la línea 20 / se forma un bucle infinito, que solo se para con "ctrl" + "pause")
FOR…TO… / NEXT… Desde…a… /órdenes / siguiente (ciclo finito)
Ejemplo:
10 INPUT "INTRODUCE UN NNÚMERO DE 1 A 10"; N%
20 FOR i% = 0 TO N% (Coge valores de uno en uno [por defecto], desde 0 hasta N)
30 PRINT i% (Imprime el valor que ha tomado i, según las vueltas que haya dado el bucle)
40 NEXT i% (Coge el siguiente i% ) (Así que vuelve a la línea 20 y repite ciclo hasta llegar a N)
50 END
DO… LOOP (UNTIL o WHILE) Hacer / las órdenes / repite las ordenes hasta que cumpla la condición o mientras cumpla algo
Ejemplo:
10 INPUT "DILE A ALGUIEN QUE INTRODUZCA UN Nº, SIN QUE TU MIRES"; N
20 CLS (Limpia la pantalla para que no se vea el número elegido)
30 DO (Haz lo siguiente)
40 INPUT "ACIERTA EL NÚMERO ELEGIDO DE 1 A 10"; A
50 LOOP UNTIL A = N (Repetirá el ciclo e irá a la línea 30 hasta cumplir la condición, A = N)
60 END
Nº ALEATORIOS
RANDOMIZE TIMER (establece comienzo de nº aleatorios entre 0 y 1)
RND (coge un nº aleatorio entre 0 y 0.99, una vez activado Randomize timer)
Ejemplo:
10 RANDOMIZE TIMER
20 DADO = 1 + INT (6 * RND) [Ej: 3 = 1 + INT (6 * 0.4)]
30 PRINT "EL NÚMERO DEL DADO ES"; DADO
40 END
SONIDO
BEEP Hace un sonido agudo (varios sería: BEEP:BEEP:BEEP)
GRAFICOS
SCREEN 12 (Establece resolución de 16 colores de 600 x 800 pixeles)
LINE (X1, Y1)-(X2, Y2), Color, B o BF (B= cuadrado de diagonal LINE / BF= cuadrado relleno de la diagonal LINE)
CIRCLE ( centro: X, Y), Radio, Color del anillo
PAINT (X, Y), Color relleno, Color del límite [Rellena de color desde dentro = (X,Y) / hasta color limite]
PSET (X,Y) Color Dibuja un punto de un color.
OTRAS
LOCATE Y, X Posición en la que empieza un texto, por píxeles.
STEP Indica el nº de pasos [Ej: step 2 (de 2 en 2) /step -1 (atrás)]
INKEY$ Considera una letra ó nº, como una tecla
TIME$ Coge la hora del ordenador
DATE$ Coge la fecha del ordenador
SIGNOS ( ACCIÓN
; Escribe a continuación
, Escribe a 5 espacios
: Otra instrucción sin cambio de línea
. Para números decimales
% Sólo coge nº enteros
Operaciones matemáticas y otras
+ Suma nº ó variables
– Resta
* Multiplicación
/ División
División entera
MOD Resto de división (6 MOD 2 = 0)
^ Elevado (A^ (1/3) = raíz cúbica)
SQR Raíz Cuadrada
INT Parte entera (Ejemplo: si una operación sale 2,4, solo coge el 2)
ABS Valor absoluto (Sólo coge el valor numérico sin signo)
= Igual a
< Menor que
> Mayor que
<> Diferente a ó no igual
Hay muchas más instrucciones que puedes buscar en la ayuda de Qbasic, o por Internet. En Internet encontrarás programas ya creados, subrutinas, y aplicaciones como música, ficheros ejecutables, etc. Todos los programas que hagas, pueden ser subprogramas de otros (subrutinas), y aprovecharlos. ¡Esto es lo que hacen los programadores!.
Todos los programas que realices se pueden hacer ejecutables y relacionarlos con Ms-Dos o Windows, es decir aplicarlos como por ejemplo: alarmas, contraseñas, programas de cálculos, etc. ¡Lo que quieras programar!. De hecho todavía hay programas hoy en día que se utilizan bajo este entorno o parecidos.
ALGORITMOS (Es la forma de plantear la resolución de problemas en la programación)
Se utiliza la representación gráfica en el desarrollo del algoritmo. Esta representación nos ayudara a conocer la información que tenemos, donde la tenemos, que debemos hacer con ella y como presentarla. Las normas para presentar los organigramas son:
El inicio y final del programa solo aparecen una vez.
No realizar cruces entre los distintos caminos. Para evitarlo usar los conectores.
En la parte superior se encuentran los soportes de entrada.
En la parte central estarán los procesos y operaciones a realizar.
En la parte final se encontrara la salida de datos.
EJEMPLO 1: Realizar un programa para calcular el área de un rectángulo cuyos datos base y altura se leen del teclado y el resultado se visualizara en la pantalla. Se deberá realizar mediante diagramas y pseudocódigo.
EJEMPLO 2: Realizar un programa que obtenga el sueldo neto de un trabajador cuyo sueldo base se obtiene por teclado y teniendo en cuenta que si ese sueldo es mayor a 150.000pts tiene una retención del 10%.
EJEMPLO 3: Realizar un programa que sume los valores que se van introduciendo por teclado mientras que el usuario no introduzca cero. Debemos ir mostrando el subtotal cada valor introducido.
Ejemplos mezclado de instrucciones
* Los colores marcan los subprogramas o instrucciones que se relacionan entre sí.
EJ : 10 DO
20 T$=TIME$ : D$=DATE$ : PRINT T$, D$
30 INPUT "Introduce el precio"; P
40 IVA = 16 * P / 100
50 TOTAL = P + IVA
60 PRINT "EL total es": TOTAL; " Euros"
70 IF TOTAL<99 THEN GOTO 100
80 PRINT "Pagar en metálico": BEEP
90 GOTO 110
100 PRINT "Pagar con tarjeta de crédito"
110 INPUT "Si quieres salir, pulsa F"; A$
120 LOOP UNTIL A$ = "F"
EJ: 10 FOR i % = 1 TO 10
20 CIRCLE (30,30 ),25, 14
30 PAINT (30,30 ),i %, 14
40 RANDOMIZE TIMER
50 A = INT (RND)
60 LOCATE 10,10
70 PRINT "Si sale 0 es cara, y si sale 1 Cruz ",A
80 SLEEP 1
90 NEXT i %
*** COMO ESCRIBIR LA INSTRUCCIÓN IF THEN…ELSE…END IF CORRECTAMENTE SIN NUMERACIÓN
A) PROGRAMA PARA VER RESULTADOS DE APROBADOS O SUSPENSOS
INPUT "INTRODUCE UNA NOTA DE 1 A 10"; N
IF N < 5 THEN
PRINT "SUSPENSO" (Condición: Si N menor a 5, imprime Suspenso)
PRINT "TU NOTA ES MENOR QUE 5" (Para poner más ordenes, siempre al mismo nivel)
ELSE (Más si no lo cumple, es decir, N es mayor o igual a 5, ejecuta la siguiente línea)
PRINT "APROBADO"
END IF (Final de la condición, sea N lo que sea)
B) PROGRAMA PARA JUGAR A ACERTAR UN NÚMERO DE 1 A 10.
INPUT "DILE A ALGUIEN QUE INTRODUZCA UN Nº DE 1 A 10, SIN QUE TU MIRES"; N%
CLS (Limpia la pantalla para que no se vea el número elegido)
DO (Haz lo siguiente)
INPUT "TECLEA UN NÚMERO DE 1 A 10 PARA ACERTAR EL NÚMERO ELEGIDO"; A%
IF A% = N% THEN
PRINT "HAS ACERTADO" (Hay que colocarlo así para que funcione con el ELSE)
ELSE
PRINT "FALLASTE, INTÉNTALO OTRA VEZ"
END IF (Fin si se cumple la condición)
LOOP UNTIL A% = N% (Repetirá el ciclo hasta cumplir la condición, A = N)
END
*** LA DIFERENCIA ENTRE EL GOTO Y EL GOSUB radica en que el GOTO salta a una línea especificada por el número y sigue desde la línea especificada hacia abajo, y el GOSUB… RETURN) salta hasta una línea especificada y cuando encuentra el RETURN sigue la ejecución en la línea que sigue al último GOSUB que se ejecuto. Ejemplo:
Ejemplo:10 PRINT "EJEMPLO DE GOSUB"20 GOSUB 10030 PRINT "YA VOLVIO A LA LINEA 30"40 END100 PRINT "ESTA ES LA SUBRUTINA"110 PRINT "CON EL RETURN A LA LINEA QUE VA DESPUES DEL GOSUB, ES LA 30"120 RETURN
*** FALTA EXPLICAR LA MANIPULACIÓN DE DATOS O ARRAYS ( Con la función DIM )
Ejercicios programación en Basic por pasos (de menor a mayor dificultad)
A) CLS / PRINT / INPUT / VARIABLES (A, A%, A$) / IF…THEN…
1. Que borre la pantalla, por si hay algo escrito.
2. Que escriba en la pantalla: Aprender a programar en Basic
3. Que le pregunte el nombre a alguien y después la escriba en la pantalla.
4. Que le pregunte la edad a alguien y si es menor de 18 que escriba es menor de edad, y si no, que escriba eres mayor de edad.
B) GOTO / FOR…TO… – NEXT… / DO… LOOP (UNTIL o WHILE) …
5. Asocia los 4 ejercicios anteriores, y forma un bucle infinito.
6. Que cuente de 0 a 10 de 1 segundo en 1 seg. y suene en cada segundo. (SLEEP y BEEP)
7. Que cuente de 10 a 0 de 1 segundo en 1 segundo, y suene un sonido al final. (STEP)
8. Lo mismo que el 6, pero que aparezca siempre en el mismo lugar (LOCATE)
9. Que no pare de preguntar "que letra es" hasta que no acierte una letra que hayas elegido.
10. Lo mismo que el anterior pero emplea (i = 0 / i = i + 1) para hacer un contador del nº de fallos antes de acertar, y al final imprima cuantos fallos tuvo.
C) RANDOMIZA TIMER / RND
11. Que establezca nº aleatorios entre 0 y1, y luego coja alguno de los dos.
12. Lo mismo pero si sale 0 que diga que es cara, y si es 1 que diga cruz.
13. Lo mismo que el 10, pero que repita la tirada 5 veces o las veces que quieras, pero cada tirada cada 2 segundos. (Y si puedes en vez de cara o cruz, que sea un dado = 6 caras)
D) [SCREEN siempre se coloca cuando hay gráficos] LINE / CIRCLE / PSET
14. Dibuja una línea horizontal y otra vertical al lado. Y a continuación dibuja una cruz.
15. Dibuja una línea diagonal.
16. Dibuja un rectángulo de 20 alto y 40 de ancho, de color amarillo
17. Que rellene de color el rectángulo anterior.
18. Qué dibuje un círculo de radio 25, y el borde de color amarillo
19. Qué rellene el círculo anterior de rojo
20. Qué rellene de rojo el rectángulo del ejercicio 16.
21. Dibuja 3 puntos uno de cada color, formando un triángulo.
22. Dibuja una sonrisa, y los ojos con dos puntos.
23. Dibuja las seis caras de un dado. (Lo complementas con RND, haz un juego, y apuesta < ó = 3)
PROBLEMA PASO A PASO COMPLETO
A) Diseña un programa que tengas que introducir un precio, le calcule el 20 % de ganancia, y que imprima el precio final (y la fecha => DATE$)
B) Si el precio es menor de 1 Euro, que imprima "para tienda de los 20 duros", y si es mayor "para supermercados".
C) Que forme un bucle para calcular muchos precios, y que pregunte si desea parar el programa al pulsar una tecla que elijas.
D) Que dibuje un círculo relleno de rojo en la parte inferior de la pantalla, y a continuación imprima en medio del círculo el precio final en euros. (si quieres hazlo que sea rojo para los veinte duros, y verde para los supermercados => subprograma = GOSUB… RETURN)
Resolución de ejercicios de programación en BASIC
1.- Diseñar un programa que escoja un número al azar, de entre 5 participantes, para sortear un regalo de un CD. (Si puedes hazlo para que introduzca un nº participantes cualquiera).
10 CLS
LOCATE 2, 10
PRINT "Sorteo de un regalo entre N participantes"
PRINT : PRINT : PRINT
INPUT "¿Cuantos participantes hay? "; N
RANDOMIZE TIMER
SORTEO = 1 + INT (RND * N)
PRINT "el nº que ha tocado es "; SORTEO
INPUT "si quieres otro sorteo, pulsa s"; A$
IF A$ = "S" THEN GOTO 10
90 END
2.- Diseñar un programa de un PIN o nº secreto, que cuando sea el correcto diga una cosa, y cuando sea incorrecto diga otra. (Si puedes hazlo que si lo intenta 3 veces le aparezca otro mensaje y no pueda ejecutarlo más)
CLS
FOR i% = 0 TO 4
20 INPUT "Introduce tu nº secreto o PIN"; N
IF N = 1234 THEN GOTO 50
PRINT "No es correcto"
PRINT : PRINT
i% = 1 + i%
NEXT i%
PRINT "Has fallado 3 veces, fin de intentos"
GOTO 60
50 PRINT "PIN corecto"
60 END
3. Calcular todos los números menores de 50 divisibles por 5. (Si puedes hazlo que al meter un nº cualquiera, le saque todos los nº menores que sean divisibles por 5)
CLS
PRINT "Numeros menores a un nº divisible por 5"
INPUT "Introduce el nº del que quieras "; N%
FOR i% = 1 TO N%
E = INT(i% / 5)
D = (i% / 5)
IF D = E THEN GOTO 60
GOTO 80
60 PRINT "Un nº divisible por 5 menor de "; N%; " ES: "; i%
80 NEXT i%
END
4.- Diseñar un programa que al meterle 3 notas de una asignatura te calcule la media.
CLS
PRINT "Calculo de la media 3 de notas"
INPUT "Introduce LA 1ª Nota "; A
INPUT "Introduce LA 2ª Nota "; B
INPUT "Introduce LA 3ª Nota "; C
MEDIA = (A + B + C)/3
PRINT "La media es ";MEDIA
END
5.- Diseñar un programa de círculos:
a) Que cambie de color solo el borde cada segundo
SCREEN 12
FOR i% = 0 TO 15
CIRCLE (55,55),25,i%
SLEEP 1
NEXT i%
b) Un círculo, que lo divida una línea por la mitad, y coloree cada mitad de un color.
SCREEN 12
20 CIRCLE (50, 50), 25, 14
LINE (25, 50)-(75, 50), 14
PAINT (55, 45), 2, 14
PAINT (55, 55), 4, 14
SLEEP 1
( PAINT (55, 45), 4, 14 )
( PAINT (55, 55), 2, 14 )
( SLEEP 1 )
( GOTO 20 )
c) Que dibuje un círculo verde si aciertas una pregunta que te inventes, y un círculo rojo si fallas. (Hacer en casa: que haya 10 preguntas, almacene la puntuación obtenida, e imprimas las respuestas correctas al final)
SCREEN 12
CLS
PRINT "EXAMEN DE 10 PREGUNTAS SOBRE BASIC"
NOTA = 0
R1$ = "INPUT"
R2$ = "PRINT"
….
….
INPUT "1) QUE INSTRUCCION PREGUNTA DATOS"; A$
IF A$ = R1$ THEN GOSUB 30
IF A$ <> R1$ THEN GOSUB 10
INPUT "2) QUE INSTRUCCION IMPRIME EN PANTALLA"; B$
IF B$ = R2$ THEN GOSUB 30
IF B$ <> R2$ THEN GOSUB 10
INPUT "3)…………..
……
……
PRINT "LAS RESPUESTAS SON": PRINT R1$:PRINT R2$..
END
(SUBRUTINA o SUBPROGRAMA)
10 PRINT "FALLASTE, ESTUDIA MAS PETARDO/A"
15 CIRCLE (100,100),25,2
16 SLEEP 1
17 CIRCLE (100,100),25,0
20 GOTO 50
30 PRINT "HAS ACERTADO"
35 CIRCLE (100,100),25,4
36 SLEEP 1
37 CIRCLE (100,100),25,0
40 NOTA = NOTA + 1
50 PRINT "TU NOTA POR AHORA ES "; NOTA
60 RETURN (Esta instrucción hace que vuelva a la siguiente línea después de la última línea que se ejecuto, es decir, después del GOSUB correspondiente a cada pregunta)
Problemas o programas a realizar
Básicos:
A) Diseñar que calcule hipotenusa o/y área triángulo dado 2 catetos. // Indicar si un nº es par o impar
B) Ind. Masa Corporal = peso/altura , (valores: I<18 comer mas / 18<25 normal / 25<30 sobrepeso / 30<35 obesidad moderada, 35<40 obesidad grave) (Nota: Al hacer con LOGO, se puede coger dos barras altura – peso => IMC) IMC)
C) Diseñar para que calcule circuito eléctrico en paralelo.
D) Diseñar un examen de preguntas básicas tecnológicas, que vaya acumulando la puntuación y si es V o F.
1. DISEÑAR UN SEMÁFORO CON 3 CIRCULOS, QUE ACTÚE AUTOMÁTICAMENTE (ROJO-VERDE-NARANJA-ROJO)
2. DISPLAY QUE CUENTE DEL 0 AL 9 (CADA SEGUNDO)
3. DOS DISPLAY QUE CUENTE 60 SEG. Y SI SE QUIERE LAS 24 HORAS
4. DISEÑAR UN PROGRAMA QUE HAGA COMO LA TIRADA DE DOS DADOS PARA JUGAR A MENOR A 7.
5. DISEÑAR UN PROGRAMA QUE SALGA Nº ALEATORIOS DEL 1 AL 100, PARA UN BINGO.(UNA BOLA PULSAR UNA TECLA O POR TIEMPO)
6. UN PROGRAMA QUE RESUELVA UNA EC. DE 2º, AL METERLES LOS COEFICIENTES DE LA ECUACIÓN.
7. UN PROGRAMA PARA OBTENER LOS MULTIPLOS DE 5 COMPRENDIDOS ENTRE DOS Nº CUALQUIERA
8. DISEÑAR UN PROGRAMA QUE DESCOMPONGA UN Nº CUALQUIERA EN FACTORES PRIMOS.
9. DISEÑAR UN PROGRAMA QUE ALGUIEN ESCRIBA UNA PALABRA Y LUEGO LA BORRE, Y OTRA PERSONA JUEGE AL AHORCADO CON EL ORDENADOR
10. DISEÑAR UN PROGRAMA QUE DELETREE LENTAMENTE ALGUNAS PALABRAS (USA FOR i…TO)
11. UN PROGRAMA QUE SIMULE LANZAMIENTO DE UN DADO N VECES Y HAGA LA MEDIA Y EL %.
12. DISEÑAR UN PROGRAMA QUE TE PREGUNTE TU NOMBRE Y A CONTINUACIÓN LO IMPRIMA N VECES, Y EN CADA LÍNEA ALEATORIAMENTE, IZQ, CENTRO, DCHA.
13. UN PROGRAMA QUE SIMULE UN CAJERO, PIDA Nº SECRETO, (SACAR DINERO, CONSULTA SALDO,…)
14. DISEÑAR UN PROGRAMA QUE CALCULE EL FACTORIAL DE UN Nº CUALQUIERA.
15. DISEÑAR UN PROGRAMA DE LA TABLA DE MULTIPLICAR DEL 7.(QUE APAREZCA: 7 X … = …)
16. SUMA DE X AL 1 DE NÚMEROS. (CUANTO DA LA SUMA DE LOS PRIMEROS 100 NÚMEROS)
17. DADO 2 Nº ESCRIBIR TODOS LOS Nº QUE VAN DESDE EL MENOR AL MAYOR.
18. MENORES DE 50 NO DIVIBLES POR 3.
19. PROGRAMA QUE CALCULE LONGITUD, AREA Y VOLUMEN DE CIRCULO, CUADRADO.
20. PROGRAMA QUE CALCULE PRECIO DE CRISTALERAS EN EDIFICIOS SEGÚN METROS CUADRADOS.
21. DISEÑAR UNA RULETA DE 36 Nº Y EL CERO. SI SALE CERO TODO PARA LA CASA, SI ACIERTAS EL Nº SE PAGA POR 36. ADEMÁS LOS NÚMEROS SON PARES O IMPARES Y TANBIEN PASA (>=19) O FALTA (<19), PUDIENDO JUGAR A ESTOS PERO SOLO SE COBRA EL DOBLE.
DISEÑA SI QUIERES QUE EMPIEZAS CON 6000 €, Y EL ORDENADOR DETECTE LO QUE TE VAYA QUEDANDO, Y TE PERMITA JUGAR DE NUEVO.