Lenguajes de programación BASIC en PC: todo lo conocido
- Alki
- Amstrad PC 1640
- Mensajes: 524
- Registrado: 05 Jul 2006, 10:24
- Gracias dadas: 3 veces
- Gracias recibidas: 2 veces
Re: Lenguajes de programación BASIC en PC: todo lo conocido
Doy otro voto para GAMBAS del que he oido maravillas... Yo no lo he probado aun, ando mas emocionado con python y haskell..
Re: Lenguajes de programación BASIC en PC: todo lo conocido
Namek escribió:http://www.purebasic.com Este empezo en el Amiga inspirado por el BLITZ BASIC y actualmente tiene versiones comerciales para GÜINDOUS, MACACOS y LINUX. La version para AMIGA es opensource pero ya no esta al día con las otras versiones.
Añadido
-
- Amiga 1200
- Mensajes: 1981
- Registrado: 01 Jun 2013, 16:21
- Sistema Favorito: PC
- primer_sistema: ZX81
- consola_favorita: Sega Saturn
- Primera consola: Atari 2600
- Ubicación: Republica de catalunya
- Gracias dadas: 31 veces
- Gracias recibidas: 31 veces
- Contactar:
Re: Lenguajes de programación BASIC en PC: todo lo conocido
IBM-BASIC, lenguaje integado en la BIOS original de IBM por contrato (Aunque IBM la borró en tiempos del PS/2 el dia que Microsoft quiera dinero facil yá sabe...) muy similar al BASIC de los ordenadores MSX 1, pero limitado en comandos que dependan en hardware, por otro lado, es la única forma de acceder al conector 'tape' en un IBM 5150...
BASIC.com, Comando el cual introducido desde DOS permite invocar el BASIC sin re-iniciar. (solo funciona en IBM pre-ps/2)
BASICA, versión de IBM-BASIC 'Avanzada' (ergo: compatibilidad de la unidad A: mediante el comando 'files')
GWBASIC, Muy similar al IBM-BASIC, pero que no depende de la BIOS de IBM
BASIC.com, Comando el cual introducido desde DOS permite invocar el BASIC sin re-iniciar. (solo funciona en IBM pre-ps/2)
BASICA, versión de IBM-BASIC 'Avanzada' (ergo: compatibilidad de la unidad A: mediante el comando 'files')
GWBASIC, Muy similar al IBM-BASIC, pero que no depende de la BIOS de IBM
Re: Lenguajes de programación BASIC en PC: todo lo conocido
Luna, no he incluído esos clásicos, por que no son utilizables hoy día, sin ayudas externas. La idea, es poner Basic funcionales, potentes, modernos, a ser posible multisistema y con buen soporte gráfico (GUI, 2D, 3D, etc).
Ademas, sobre productos Microsoft se conoce "casi" todo, como el VisualBasic, y son redundantes. Pero gracias por mencionarlos aquí.
Ademas, sobre productos Microsoft se conoce "casi" todo, como el VisualBasic, y son redundantes. Pero gracias por mencionarlos aquí.
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Lenguajes de programación BASIC en PC: todo lo conocido
Ejemplo de chorriprograma en FreeBASIC que he estado haciendo ahora. Es una versión de otro que hice para el SAM Coupé hace un tiempo, que a su vez es una versión de otro que hice aún hace más tiempo en C y ASM para el PC en DOS y modo MCGA.
Esto del FreeBASIC envicia mucho
Código: Seleccionar todo
'Prueba grafica en FreeBASIC. Demo "worm"
'Port de un efecto hecho en BASIC del SAM Coupe
'disponible en http://foro.speccy.org/viewtopic.php?f=6&t=958&start=15#p12207
'(c)2013 mcleod_ideafix
Const xres=640 'cambia estos dos para usar
Const yres=480 'otra resolucion de pantalla
Const gtorad=0.01745329251994329576923690768489
Const d1=(xres-64)/2
Const d2=(yres-64)/2
Dim As Integer x,y,sw
Dim As Double ang,mult,incr
Dim As Any Ptr img1,img2,spr,muestra,pinta
ScreenRes xres,yres,8
img1=ImageCreate (xres,yres,0,8) 'estos son los
img2=ImageCreate (xres,yres,0,8) 'dos buffers
spr=ImageCreate (64,64,0,8) 'sprite de 64x64
'creamos la bolita y la guardamos en el sprite
Circle (31,31),31,15
Paint (31,31),2,15
Get (0,0)-(63,63),spr
sw=0 'switch para intercambiar buffers
ang=0
mult=1
incr=2
While Asc(InKey)<>27 'mientras no se pulse ESC...
If sw=0 Then 'intercambiamos buffers de acuerdo con el valor de sw
muestra=img1
pinta=img2
Else
muestra=img2
pinta=img1
EndIf
x=d1+d1*Sin (ang*gtorad)
y=d2+d2*Cos (ang*gtorad*mult) 'calculamos nueva posicion de la bola
Put pinta,(x,y),spr,Trans 'pintamos bola en el buffer que toca
Put (0,0),muestra,PSet 'mostramos por pantalla el buffer que toca
sw=sw Xor 1 'en la siguiente vuelta se intercambian los buffers
ang=ang+1 'actualizamos variables para calcular nueva posicion de la bola
If ang>=360 Then
ang=0
mult=mult+incr
If mult>=7 Or mult<=1 Then
incr=-incr
EndIf
EndIf
Sleep 40 'quitar para disfrutar de una velocidad absurda de ejecucion
Wend
ImageDestroy img1
ImageDestroy img2
ImageDestroy spr
Esto del FreeBASIC envicia mucho

Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- mentalthink
- Amiga 2500
- Mensajes: 2840
- Registrado: 11 Abr 2010, 15:06
- Gracias dadas: 45 veces
- Gracias recibidas: 14 veces
Re: Lenguajes de programación BASIC en PC: todo lo conocido
Esto del FreeBASIC envicia mucho
Yo creo que lo bueno de los Basics es eso, que enseguida ves resultados y como normalmente todo es bastante sencillo, es realmente divertido.
Sea por nostalgia o por la causa que sea, pero como tiran tanto las máquinas te puedes hacer programas molones.
A ver si cuando termine el Editor que estoy haciendo para el Black Sun pongo el vídeo, tampoco es que haya hecho la Giocconda(como se escriba) en binario

Re: Lenguajes de programación BASIC en PC: todo lo conocido
mcleod_ideafix escribió:Esto del FreeBASIC envicia mucho
Jeje, ¿te acuerdas de la frase "pasar al lado oscuro"?

Yo llevo unos 5 o 6 años programando con el FreeBasic, y es una gozada. Limpio, rápido, potente. Parece "C".
He probado tu demo, está muy currada.
Yo tengo otra para que probéis, a ver si os suena (no pongo capturas, así, queda como una sorpresa)

Código: Seleccionar todo
Dim PI As Single = 3.14156
Dim i As Integer = 1
Dim T(3) As Integer
Dim s As single
Dim F As Integer = 1
Dim g As Integer
Dim A As Integer
Dim B As Integer
Dim C As integer
SCREEN 12
T(1) = 63 * 65536 + 0 * 256 + 0
T(2) = 0 * 65536 + 50 * 256 + 50
T(3) = 0 * 65536 + 0 * 256 + 50
PALETTE 1, T(1)
PALETTE 2, T(2)
PALETTE 3, T(3)
FOR s = 0 TO 4 * PI STEP PI / 60
PSET (320 + (320 * SIN(s / 2)), 200 + (198 * COS(s)))
LINE -(320 + (200 * COS(s / 2)), 200 + (198 * SIN(s))), i
i = i + 1: IF i = 4 THEN i = 1
NEXT
While InKey$<>Chr$(27)
If F = 1 THEN A = 1: B = 2: C = 3
If F = 2 THEN A = 3: B = 1: C = 2
If F = 3 THEN A = 2: B = 3: C = 1
Palette 1, T(A)
Palette 2, T(B)
Palette 3, T(C)
F = F + 1: IF F = 4 THEN F = 1
' For G = 1 TO 1000: NEXT ' pausa tradicional
Sleep 200 ' pausa "moderna" : 200ms.=0.2s.
Wend
El que lo consiga, que ponga captura
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Lenguajes de programación BASIC en PC: todo lo conocido
jepalza escribió:mcleod_ideafix escribió:Esto del FreeBASIC envicia mucho
Jeje, ¿te acuerdas de la frase "pasar al lado oscuro"?
Ya te digo... como que nunca he abandonado ese lado. ¡¡Viva el GOTO!!

jepalza escribió:Yo tengo otra para que probéis, a ver si os suena (no pongo capturas, así, queda como una sorpresa)![]()
A ver a ver... Anda, ¡qué chulo! Con animación de paleta y esas cosas.
jepalza escribió:El que lo consiga, que ponga captura

Pues hablando de animación de paleta...
Veo tu demo, y paso a otro programa que escribí inicialmente hace mucho tiempo, y que he portado sin mayores problemas a FreeBASIC: un generador de conjunto de Mandelbrot con animación por ciclos de color a-la Amiga, y zoom con el ratón (clic izquierdo para zoom, clic derecho para deshacer zoom)
Código: Seleccionar todo
'Conjunto de Mandelbrot
'Clic izquierdo para zoom
'Clic derecho para unzoom
'Port de un programa tela de antiguo que escribí en ensamblador allá por 1992
'para 80286 y 80287, pantalla MCGA y ratón Microsoft, en el PC
'(c)2013 mcleod_ideafix
Dim As Integer xres,yres,x,y,fin
Dim col As UInteger
Dim As Double cr,ci,xmin,xmax,ymin,ymax,xmint,xmaxt,ymint,ymaxt,centrox,centroy
Dim As Integer mx,my,botones,botonpulsado,hacerzoom,quitarzoom
Dim zoomlevel As Double
Dim stack(100,4) As Double
Dim sp As Integer
Declare Function calcolor (cr As Double, ci As Double) As UInteger
Declare Sub RotarPaleta
xres = 800
yres = 600
xmin = -2.4
xmax = 0.8
ymin = -1.2
ymax = 1.2
zoomlevel = 10
sp = 0
ScreenRes xres,yres,8
fin = 0
While fin=0
For y=0 To yres-1
For x=0 To xres-1
cr = xmin+(x*(xmax-xmin)/(xres-1))
ci = ymin+(y*(ymax-ymin)/(yres-1))
col = calcolor (cr,ci)
PSet (x,y),col
Next
Next
hacerzoom = 0
quitarzoom = 0
While (hacerzoom=0 And quitarzoom=0 And Asc(InKey)<>27)
RotarPaleta
Sleep 40
GetMouse (mx, my, , botones)
If botones<>-1 Then
hacerzoom = botones And 1
quitarzoom = botones And 2
EndIf
Wend
If hacerzoom<>0 Then
stack(sp,0) = xmin
stack(sp,1) = xmax
stack(sp,2) = ymin
stack(sp,3) = ymax
sp = sp + 1
centrox = xmin+(mx*(xmax-xmin)/(xres-1))
centroy = ymin+(my*(ymax-ymin)/(yres-1))
xmint = centrox - (xmax-xmin)/(zoomlevel*2)
xmaxt = centrox + (xmax-xmin)/(zoomlevel*2)
ymint = centroy - (ymax-ymin)/(zoomlevel*2)
ymaxt = centroy + (ymax-ymin)/(zoomlevel*2)
xmin = xmint
xmax = xmaxt
ymin = ymint
ymax = ymaxt
Palette
ElseIf quitarzoom<>0 Then
If sp>0 Then
sp = sp - 1
xmin = stack(sp,0)
xmax = stack(sp,1)
ymin = stack(sp,2)
ymax = stack(sp,3)
Palette
EndIf
Else
fin = 1
EndIf
Wend
Function calcolor (cr As Double, ci As Double) As UInteger
Dim col As UInteger
Dim As Double zr,zi,tr,ti
zr=cr
zi=ci
col=0
While (zr*zr+zi*zi<100 And col<255)
tr=zr*zr-zi*zi+cr
ti=2*zr*zi+ci
col=col+1
zr=tr
zi=ti
Wend
Return col
End Function
Sub RotarPaleta
Dim paleta(256) As UInteger
Dim As Integer i,t
Palette Get Using paleta
t=paleta(255)
For i=254 To 0 Step -1
paleta(i+1)=paleta(i)
Next
paleta(0)=t
Palette Using paleta
End Sub
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- zup
- Amiga 2500
- Mensajes: 3012
- Registrado: 04 Sep 2009, 20:07
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Nintendo DS/3DS
- Primera consola: Nintendo GameBoy
- Ubicación: Navarra
- Gracias dadas: 86 veces
- Gracias recibidas: 356 veces
- Contactar:
Re: Lenguajes de programación BASIC en PC: todo lo conocido
mcleod_ideafix escribió:Ya te digo... como que nunca he abandonado ese lado. ¡¡Viva el GOTO!!
Es curioso que cuando aprendí informática (FP, no soy universitario), se nos hiciera repetir como loritos que GOTO estaba prohibido. Que si podías solucionar algo con un GOTO había una solución que no lo requería y todas esas cosas. Que si veían un GOTO en un examen nos suspendían... y los consiguientes malabarismos en ensamblador, donde no es que exista GOTO sino que lo único que tienes son GOTOs condicionales.
Y al final, TODOS los lenguajes tienen GOTOs y encima en algunos no te queda otro remedio que tener que usar ese tipo de tejemanejes (como los ON ERROR de Visual Basic o el manejo de excepciones con throw y catch) que te convierten el programa en código spaguetti.
Lo que cambia el mundo...
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!
Además vendo cosas!
- na_th_an
- Amiga 1200
- Mensajes: 1273
- Registrado: 10 Oct 2012, 11:17
- Sistema Favorito: (Otro)
- primer_sistema: Spectrum +2
- consola_favorita: Sony PlayStation 1
- Primera consola: Sega Master System
- Gracias dadas: 18 veces
- Gracias recibidas: 15 veces
Re: Lenguajes de programación BASIC en PC: todo lo conocido
Entiendo que se enseñe a no usar GOTO, porque es fácil abusar. Si puedes usar un While, o un For, procedimientos, o anidar construcciones de forma correcta, es mejor que cascar un GOTO. Luego podrás coger un trozo de tu código y hacerlo funcionar en otro sitio de forma sencilla.
De hecho, si yo fuese profesor de programación y estuviese intentando enseñar a mis alumnos programación estructurada, un GOTO en un examen significaría un suspenso fulminante. Porque se supone que estamos aprendiendo programación estructurada.
Ahora bien, cuando uno ya sabe, no hay nada de malo en usarlo cuando es necesario.
De hecho, si yo fuese profesor de programación y estuviese intentando enseñar a mis alumnos programación estructurada, un GOTO en un examen significaría un suspenso fulminante. Porque se supone que estamos aprendiendo programación estructurada.
Ahora bien, cuando uno ya sabe, no hay nada de malo en usarlo cuando es necesario.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados