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>




QuickBasic 

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

------

 BBC BASIC for Windows

     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


Entrada y salida de datos


Variables



Miscelanea




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) 



______________________________________

                        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



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