- 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 Basic3. 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 amarillo17. Que rellene de color el
rectángulo anterior.18. Qué dibuje un
círculo de radio 25, y el borde de color
amarillo19. Qué rellene el
círculo anterior de rojo20. 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.