Ejemplos Basic
Ejemplo en BASIC-256
Tarea
Escriba un programa que haga lo siguiente en este orden:
Ingrese una cantidad de tiempo para dormir en las unidades que sean más naturales para su idioma (milisegundos, segundos, tics, etc.). Esta unidad debe anotarse en los comentarios o en una descripción.
Imprimir "Durmiendo..."
Dormir el hilo principal por la cantidad de tiempo dada.
Imprimir "¡Despertad!"
Fin.
(defun test-sleep ()
(let ((seconds (read)))
(format t "Sleeping...~%")
(sleep seconds)
(format t "Awake!~%")))
(test-sleep)
(en un navegador web)
En general, JavaScript en un navegador web se basa en bucles de eventos y (excepto para alerta()) no bloquea. Entonces, lo más cercano posible a la descripción de la tarea es hacer algo una vez que haya pasado el tiempo especificado.
<script>
setTimeout(function () {
document.write('Awake!')
}, prompt("Number of milliseconds to sleep"));
document.write('Sleeping... ');
</script>
INPUT sec 'the SLEEP command takes seconds
PRINT "Sleeping..."
SLEEP sec
PRINT "Awake!"
"SLEEP" with no argument will sleep until a button is pressed on the keyboard (including modifier keys such as shift or control). Also, pressing a key while SLEEP is waiting for a specific amount of time (as above) will end the SLEEP.
-------
print "Enter number of seconds to sleep: ";
input ms
print "Sleeping..."
pause ms
print "Awake!"
end
------
INPUT "Enter the time to sleep in centiseconds: " sleep%
PRINT "Sleeping..."
WAIT sleep%
PRINT "Awake!"
Whilst sleeping BBC BASIC for Windows periodically tests for the ESCape key being pressed.
----
to sleep :n
print [Sleeping...]
wait :n ; units: 1/60th of a second
print [Awake.]
end
Lógica
Operaciones Lógicas Logical operations
Valores indefinidos Undefined values
Objeto Nulo Null object
Tabla de verdad Truth table
Entrada y salida de datos
Variables
Miscelanea
Diagrama Yin and yang
Dibujos Vibrating rectangles
Control de terminal
Algoritmos con números
Algoritmo para ingrsar dos números asignándolos a viariables, sumarlos y mostrar el resultado
A+B - Un problema clásico en programación, se proporciona para que los concursantes puedan familiarizarse con el sistema de evaluación que se utiliza.
Programa:
dim a(2)
input "Ingrese dos números deparados por un espacio?", t$
a = explode(t$," ")
print t$ & " " & int(a[0]) + int(a[1])
Descripción paso a paso:
Task
Dados dos números enteros, A y B.
Su suma necesita ser calculada.
Input data
Se escriben dos enteros en el flujo de entrada, separados por espacios:
(−1000≤ A , B ≤+1000)
Output data
La salida requerida es un número entero: la suma de A y B.
Resultados
input 2 2
output 4
input 3 2
output 5
Costantes y primos
Otros
Random
otros
______________________________________
Manejo de Textos - Algortmos para cadenas alfanuméricas (textos)
Palindromos 1 Palindrome dates
Palindromos 2 Palindrome detection
______________________________________
Algoritmos para animaciones
Texto animado
La animación es parte integral de muchas partes de las GUI, incluidos los efectos sofisticados cuando las cosas cambian que se usan en los administradores de ventanas y, por supuesto, los juegos.
El núcleo de cualquier sistema de animación es un esquema para cambiar periódicamente la pantalla sin dejar de responder al usuario. Esta tarea lo demuestra.
Tarea
Cree una ventana que contenga la cadena "¡Hola mundo!" (el espacio final es significativo).
Haga que el texto parezca girar hacia la derecha quitando periódicamente una letra del extremo de la cuerda y adhiriéndola al frente.
Cuando el usuario hace clic en el texto (ventana), debe invertir su dirección
Código
str$="Texto animado"
direction=0 #value of 0: to the right, 1: to the left.
tlx=10 #Top left x
tly=10 #Top left y
fastgraphics
font "Arial",20,100 #The Font configuration (Font face, size, weight)
main:
while clickb=0
if direction=0 then
str$=RIGHT(str$,1) + LEFT(str$,length(str$)-1)
else
str$=MID(str$,2,length(str$)-1)+LEFT(str$,1)
end if
refresh
clg
color red
text tlx,tly,str$
pause .1
end while
#Note: textheight() and textwidth() depends on the latest configuration of the FONT command.
if clickb=1 and clickx>=tlx and clickx<=tlx+textwidth(str$) and clicky>=tly and clicky<=tly+textheight() then
direction=NOT direction
end if
clickclear
goto main
________________________________________________
Ciclos/Repeticiones (Loops)
Procedimientos (subrutinas) y
Funciones (Surutinas que arrojan resultado)
Algoritmos complejos
Sorting algorithms
Sucesión de Fibonacci
Algoritmo en lenguaje humano
Para encontrar un número de fibonacci dado un conteo: "que ingrese el usuario"
1-Poner 0 en un número.
2-Poner 1 en otro número.
Bucle.
3-Si un contador ha pasado la cuenta, ponga el número en el número de Fibonacci; salida.
4-Suma el número al otro número.
5-Intercambia el número con el otro número.
6-Repetir.
Leer instruciones en RosettaStone: https://rosettacode.org/wiki/Fibonacci_sequence#BASIC
Leer en Wikipedia: https://es.wikipedia.org/wiki/N%C3%BAmero_de_Fibonacci
# iterative Fibonacci sequence
# Matches sequence A000045 in the OEIS, https://oeis.org/A000045/list
# Return the Nth Fibonacci number
input "N = ",f
limit = 500 # set upper limit - can be changed, removed
f = int(f)
if f > limit then f = limit
a = 0 : b = 1 : c = 0 : n = 0 # initial values
while n < f
print n + chr(9) + c # chr(9) = tab
a = b
b = c
c = a + b
n += 1
end while
print " "
print n + chr(9) + c
Genere y dibuje un árbol fractal.
-Dibujar el tronco
-Al final del tronco, divídalo en algún ángulo y dibuje dos ramas.
-Repita al final de cada rama hasta alcanzar un nivel suficiente de ramificación
Aprenda sobre el
Programa:
graphsize 300,300
level = 12 : len =63 # initial values
x = 230: y = 285
rotation = pi/2
A1 = pi/27 : A2 = pi/8 # constants which determine shape
C1 = 0.7 : C2 = 0.85
dim xs(level+1) : dim ys(level+1) # stacks
fastgraphics
color black
rect 0,0,graphwidth,graphheight
refresh
color green
gosub tree
refresh
imgsave "Fractal_tree_BASIC-256.png", "PNG"
end
tree:
xs[level] = x : ys[level] = y
gosub putline
if level>0 then
level = level - 1
len = len*C1
rotation = rotation - A1
gosub tree
len = len/C1*C2
rotation = rotation + A1 + A2
gosub tree
rotation = rotation - A2
len = len/C2
level = level + 1
end if
x = xs[level] : y = ys[level]
return
putline:
yn = -sin(rotation)*len + y
xn = cos(rotation)*len + x
line x,y,xn,yn
x = xn : y = yn
return