FreeBASIC

FreeBASIC

Fblogo.gif
FreeBasic help.png
Pagina dal manuale
Dati di base

sviluppatore André Victor
The Freebasic Development Team
( Open Source )
Anno di pubblicazione 2004
Versione attuale  1.07.1
( 28 settembre 2019 )
sistema operativo Windows , Linux , DOS e FreeBSD (quest'ultimo solo limitato)
linguaggio di programmazione DI BASE
categoria Compilatore
Licenza GPL / LGPL
Lingua tedesca
www.freebasic.net (sito ufficiale)
www.freebasic-portal.de

Libero di base (breve FB ) è un libero open source - compilatore e linguaggio di programmazione la cui sintassi in QuickBasic costruisce. Esso consente la generazione di 32-bit e 64-bit - programmi applicativi , giochi ecc per Microsoft Windows , Linux , FreeBSD e DOS , in parte per la Xbox . Sono previste versioni per altri sistemi operativi .

Le librerie compatibili con C possono essere utilizzate direttamente, le librerie C ++ almeno parzialmente in FreeBASIC. Ad esempio, è possibile utilizzare GTK +, GSL, SDL, Allegro, Lua o OpenGL e il numero di librerie supportate aumenta con ogni nuova versione.

La prima versione è stata rilasciata nel novembre 2004.

Caratteristiche

La sintassi del linguaggio di programmazione FreeBASIC è fortemente basata sul dialetto definito dal QuickBASIC basato su DOS , che il compilatore rinforza con la direttiva , che rende possibile compilare il codice QBasic per le applicazioni moderne senza modifiche importanti. Inoltre, FreeBASIC è caratterizzato da numerosi miglioramenti e funzionalità moderne: -lang qb

  • Assemblatore in linea
  • Puntatori a variabili e funzioni
  • Sovraccarico di funzioni, subroutine (funzioni senza ritorno) e operatori. Inoltre, è possibile creare funzioni e subroutine con parametri opzionali .
  • Interfaccia compatibile con C per chiamate di funzioni. In questo modo i progetti in diversi linguaggi di programmazione e si può ripiegare su quasi tutte le funzioni che i programmatori di oggi utilizzano, tra cui il WinAPI e altri (compatibile-C) librerie , tra gli altri. OpenGL o DirectX .
  • Shorthands, macro e simili che sollevano il programmatore da un po 'di lavoro di battitura
  • Nozioni di base sulla programmazione orientata agli oggetti come le classi ("tipi") e l'ereditarietà singola (alcune caratteristiche come le interfacce o la parola chiave "classe" invece di "tipo" sono già state considerate, ma non sono state ancora implementate).
  • Tutte le funzioni (incluso l'accesso ai file, le stringhe di caratteri, ecc.) Della libreria runtime così come tutti i comandi grafici interni sono indipendenti dalla piattaforma, i. H. può essere utilizzato su Windows , Linux e DOS allo stesso modo. Ciò semplifica la scrittura di applicazioni indipendenti dalla piattaforma .

Il compilatore

Il compilatore FreeBASIC ("FBC") genera codice macchina che viene compilato e collegato con i programmi ausiliari della suite GCC . Ciò significa che possono essere utilizzate anche le librerie della suite GCC e si possono ottenere file binari eseguibili di piccole dimensioni per Windows , DOS e Linux . In alternativa alla generazione diretta del codice macchina da parte del compilatore, è anche possibile includere il compilatore C o il backend LLVM : Il compilatore è in grado di utilizzare un'opzione del compilatore corrispondente per generare codice C , specialmente per la suite GCC (cosiddetto "C backend", in contrasto con "assembler backend"). Un'opzione del compilatore simile può essere utilizzata anche per generare codice intermedio che può essere ulteriormente elaborato tramite il framework LLVM . Queste due opzioni consentono l'integrazione diretta in strutture note.

Il compilatore è in grado di creare programmi x86 a 32 bit e 64 bit. Il backend C rende disponibili anche altre piattaforme come ARM .

sintassi

Attualmente ci sono oltre 400 parole chiave , ad es. T. può essere utilizzato in diversi modi. Esistono generalmente tre tipi di parole chiave:

  • Istruzioni: le istruzioni eseguono un'attività specifica, come l'inserimento di testo sullo schermo.
  • Funzioni: sono caratterizzate dal fatto che dopo essere state chiamate viene reso disponibile un valore che rappresenta il risultato della chiamata di funzione. Il valore può rappresentare l'unico scopo della funzione (ad esempio con funzioni matematiche come LOG) o fornire solo informazioni sullo stato della chiamata di funzione (funzioni con natura istruttiva, come GETMOUSE; questa funzione interroga lo stato del mouse e restituisce un numero che conferma che la query ha avuto esito positivo o se si è verificato un errore).
  • Clausole: influenzano il comportamento di dichiarazioni e funzioni e non possono essere utilizzate separatamente da esse.

Come al solito con BASIC, le maiuscole / minuscole sono insignificanti. " GetMouse" E " GETMOUSE" vengono trattati allo stesso modo dal compilatore.

variabili

Quando si tratta di valori (numeri, stringhe o altri tipi di informazioni), vengono utilizzate variabili e costanti , le STRING-variabili ( stringhe ) sono inserite tra virgolette doppie «" ». Se la stringa è accompagnata da un«! » prefisso possono anche essere usate sequenze di escape (es. Print !"Hello\nWorld"- produce un'interruzione di riga tra "Hello" e "World") Con queste variabili e costanti possono essere differenti. Gli operatori stanno lavorando Per i numeri, variabili come stand differenti. operatori matematici per disponibile (+, -, *, /, LOG, EXP, SIN, ASIN, ...). Per le stringhe, tuttavia, la selezione degli operatori è limitato, è possibile solo la concatenazione (+ o &) e indicizzazione (mediante staffe).

Funzioni e subroutine

È anche possibile creare i propri comandi all'interno di un programma, che consistono in una sequenza di comandi esistenti. Tale comando personalizzato può essere uno SUB(abbreviazione di subroutine ) che si comporta come un'istruzione o uno FUNCTIONche, come le funzioni proprie di FreeBASIC , può restituire un valore. Entrambi possono funzionare con parametri che possono anche essere opzionali. Sono supportati anche elenchi di parametri variabili analoghi a C.

A differenza di molti altri linguaggi, i comandi del programma non terminano con un punto e virgola , ma con un'interruzione di riga come in QBasic . Se si desidera estendere un comando su più righe, è necessario scrivere un trattino basso alla fine di ogni riga che non termina il comando :

PRINT "Hallo, dieser String" + _
" ist ein einzelner String."

Diversi comandi possono essere uniti senza un'interruzione di riga utilizzando i due punti:

PRINT "Hallo, dieser String": PRINT " ist ein einzelner String."

Un'altra differenza rispetto ad altri linguaggi è che quando vengono chiamate le subroutine, il bracketing è opzionale, poiché una subroutine può Subroutine(Parameter)essere chiamata con o con Subroutine Parameter. Questa proprietà deriva anche da QBasic. Tuttavia, questo non è possibile con le funzioni, le parentesi devono essere sempre utilizzate lì.

Esempi di codice

Ciao mondo

Un semplice programma Hello World in FreeBASIC è simile a questo:

PRINT "Hallo Welt!"
SLEEP
  • PRINT è un'istruzione che fa visualizzare un testo sullo schermo.
  • "Hallo Welt!"è un parametro qui; in questo caso viene Hallo Welt!visualizzato sullo schermo.
  • Il SLEEPcomando non è richiesto. Viene utilizzato solo per impedire la chiusura automatica della finestra di output dell'applicazione se non è stata avviata dalla console.

programmazione orientata agli oggetti

'Vektorklasse
Type Vector
	W as Integer
	H as Integer
	Declare Constructor (nW as Integer, nH as Integer)
End Type

Constructor Vector (nW as Integer, nH as Integer)
	W = nW
	H = nH
End Constructor

'Klasse zur Erstellung eines Objekts
Type AObject
	Private:
		X as Integer
		Y as Integer
		Movement as Vector Pointer
	Public:
		'Öffentliche Methoden inklusive eines Konstruktors und eines Destruktors
		Declare Constructor (nX as Integer, nY as Integer)
		Declare Destructor ()
		Declare Sub SetMotion (Motion as Vector Pointer)
		Declare Sub Move ()
		Declare Property GetX as Integer
End Type

'Initialwerte setzen
Constructor AObject (nX as Integer, nY as Integer)
	X = nX
	Y = nY
End Constructor

'Allozierten Speicher freigeben
Destructor AObject ()
	delete Movement
End Destructor

'Bewegungsvektor setzen
Sub AObject.SetMotion (Motion as Vector Pointer)
	Movement = Motion
End Sub

'Das Objekt anhand seines Bewegungsvektors bewegen
Sub AObject.Move ()
	X += Movement->W
	Y += Movement->H
End Sub

'Rückgabe von X, welches sonst nicht zugänglich wäre
Property AObject.GetX as Integer
	Return X
End Property

'Hier beginnt das eigentliche Programm

'Eine neue Instanz von 'AObject' an den Koordinaten 100, 100 erstellen
Dim Player as AObject = Type<AObject>(100, 100)

'Ein neues Vektorobjekt dynamisch allozieren und dessen Position um 10 nach links und 5 nach unten verschieben
Player.SetMotion(new Vector (-10, 5))

'Die Position von 'Player' aktualisieren
Player.Move()

'Den neuen Wert von X (90) anzeigen
Print Player.GetX

'Weil 'Player' eine lokale Variable ist, wird sein Destruktor am Ende des Gültigkeitsbereichs ("scope") automatisch aufgerufen

'Vor Programmende auf Tastendruck warten
Sleep

IDE

Oltre al supporto da noti ambienti di sviluppo come Geany, ci sono anche due editor appositamente progettati per FreeBASIC:

FBIde

Image
FBIde nella versione 0.4.6

L' FBIde è un editor sottile e l' IDE più vecchio per FreeBasic. La versione attuale è 0.4.6r4.

FBEdit

L'editor FreeBASIC, o FBEdit in breve, offre più opzioni . Esiste un'interfaccia separata per la creazione di dialoghi utilizzando i file di risorse e l' API di Windows . La versione attuale è 1.0.7.6c dal 14 dicembre 2013.

link internet

Wikibooks: FreeBasic  - materiali per l'apprendimento e l'insegnamento
Wikiversità: Corso: FreeBASIC  - materiale del corso
Commons : FreeBASIC  - album con immagini, video e file audio

Prove individuali

  1. Versione 1.07.1 . 28 settembre 2019 (accesso 28 settembre 2019).
  2. Sito non ufficiale della "Comunità" tedesca di FreeBASIC , vedere il portale tedesco di FreeBASIC
  3. z. B. invece di a = a + 10 la forma abbreviata a + = 10
  4. con l'opzione "-gen gcc"
  5. con l'opzione "-gen llvm"
  6. Per il backend C e il backend LLVM vedere anche il messaggio sulla home page del portale FreeBasic , (accesso 12 gennaio 2014).
  7. http://www.freebasic-portal.de/befehlsreferenz/ Weblinks: riferimento ai comandi online
  8. http://www.freebasic-portal.de/befehlsreferenz/auslassung-ellipsis-556.html Ellipsis nel riferimento al comando tedesco
  9. http://www.freebasic-portal.de/befehlsreferenz/sleep-400.html
  10. http://fbide.freebasic.net/
  11. https://www.freebasic-portal.de/downloads/ides-fuer-freebasic/fbedit-ide-30.html