FreeBASIC
| FreeBASIC
| |
|---|---|
|
| |
|
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 | sì |
|
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, comeGETMOUSE; 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 vieneHallo 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
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
- FreeBASIC - sito web del compilatore (inglese)
- Portale FreeBASIC - con introduzioni ed esempi di codice (tedesco)
- Riferimento comandi - (tedesco)
- Concorso di programmazione - per FreeBASIC e QuickBasic (tedesco)
Prove individuali
- ↑ Versione 1.07.1 . 28 settembre 2019 (accesso 28 settembre 2019).
- ↑ Sito non ufficiale della "Comunità" tedesca di FreeBASIC , vedere il portale tedesco di FreeBASIC
- ↑ z. B. invece di a = a + 10 la forma abbreviata a + = 10
- ↑ con l'opzione "-gen gcc"
- ↑ con l'opzione "-gen llvm"
- ↑ Per il backend C e il backend LLVM vedere anche il messaggio sulla home page del portale FreeBasic , (accesso 12 gennaio 2014).
- ↑ http://www.freebasic-portal.de/befehlsreferenz/ Weblinks: riferimento ai comandi online
- ↑ http://www.freebasic-portal.de/befehlsreferenz/auslassung-ellipsis-556.html Ellipsis nel riferimento al comando tedesco
- ↑ http://www.freebasic-portal.de/befehlsreferenz/sleep-400.html
- ↑ http://fbide.freebasic.net/
- ↑ https://www.freebasic-portal.de/downloads/ides-fuer-freebasic/fbedit-ide-30.html