FreeBASIC
Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från
versionen som granskades den 7 oktober 2017; kontroller kräver
29 redigeringar .
FreeBASIC |
---|
|
Språkklass |
multiparadigm : imperativ , procedurell , strukturell , objektorienterad |
Utförandetyp |
sammanställt |
Framträdde i |
2004 |
Författare |
FreeBASIC Development Team |
Utvecklaren |
FreeBASIC Development Team |
Filtillägg _ |
.baseller.bi |
Släpp |
1.09.0 [1]
(1 januari 2022 ) ( 2022-01-01 ) |
Typ system |
strikt, statisk |
Dialekter |
fb |
Blivit påverkad |
QuickBASIC , C |
Licens |
GNU GPLv2+ , standardbibliotek licensierade under GNU LGPLv2+ |
Hemsida |
freebasic.net |
Plattform |
x86 , x86_64 , ARMv7 [d] och ARMv8 |
OS |
Linux , Windows , DOS , FreeBSD , MacOS (inte helt) |
Mediafiler på Wikimedia Commons |
FreeBASIC är ett programmeringsspråk på hög nivå som är närmast QuickBASIC i syntax , samt en kompilator för det (FreeBASIC Compiler). Ursprungligen utvecklades kompilatorn som ett gratis alternativ till Microsoft QuickBasic, men fick snart nya funktioner som förvandlades till ett kraftfullt utvecklingsverktyg. Även om de första versionerna av kompilatorn skrevs i Visual Basic , kan den nu kompilera sig själv.
Kompilator
Kompilerar QBasic- och FreeBASIC-kod till 32 och 64 bitars Win32 , DOS ( skyddat läge ) och Linux x86 körbara moduler.
Montering och länkning görs med GNU Binutils .
Kompilatorn distribueras enligt villkoren för GNU GPL , och standardbiblioteket under GNU LGPL .
Det finns flera utvecklingsmiljöer , du kan använda GNU Debugger som en debugger (gprof stöds också).
Språk
Även om kompilatorn är kompatibel med QuickBASIC, har många tillägg och funktioner lagts till i FreeBASIC-språket för att möta moderna krav, standarder och kompatibilitet med bibliotek och API:er skrivna i C/ C++ . Från och med version 0.17 kan användaren välja tre kompileringslägen (option -lang): kompatibilitetsläge med QuickBASIC (qb), gamla versioner av FreeBASIC (utfasad) och standardläge, som inkluderar alla de senaste ändringarna och funktionerna.
Nya funktioner och tillägg [2]
- Unicode- stöd .
- Många inbyggda variabeltyper (Byte, UByte, Short, UShort, Integer, UInteger, LongInt, ULongInt, Single, Double, Boolean, String, ZString, WString).
- Användardefinierade datatyper (oändlig kapsling, Union, fälttyp (matris, funktion, bitfält)).
- Namnutrymmen .
- Uppräknad typ (Enum).
- Nya funktioner när du arbetar med arrayer (upp till 2 GB i storlek, Redim Preserve).
- Pekare (pekare till alla datatyper, obegränsad indirekt adressering).
- Överbelastningsfunktioner och operatörer.
- Valfria funktionsargument .
- Inline assembler (assembler instruktioner i programmets källkod ).
- Förprocessorer .
- typedefs.
- Konstruktörer och destruktörer av klasser.
- Förbättrat grafikbibliotek.
Stöd för applikationsprogrammeringsfunktionsbibliotek
- Bygga gränssnitt: GTK , FLTK , IUP , WINAPI , etc.
- Reguljära uttryck: PCRE
- IE och Microsoft Office Automation : Dishelper
- Ljud: BASS , fbsound, FMOD, etc.
- Grafik: Cairo , FreeType , Allegro , DevIL , FreeImage, DISLIN, etc.
- PDF-skapande: CD, LibHaru
- Databaser: mysql , sqlite , postgresql
- Nätverk: Curl , etc.
- Arkiv: Zlib , libzip, etc.
Programexempel
Hej världen!
Använda det inbyggda FreeBASIC-biblioteket:
Skriv ut "Hello World!"
Använda C-standardbiblioteket:
# Inkludera "crt.bi"
sätter ( ! "Hej världen!\n" )
Använda Windows API :
# Inkludera "windows.bi"
MessageBox ( Null , "Hello, World!" , "Meddelande" , MB_OK )
Objektorienterad programmering
' Vektorklass
Typ Vektor W Som heltal H Som heltal Deklarera konstruktor ( nW som heltal , nH som heltal ) Sluttypskonstruktorvektor ( nW som heltal , nH som heltal ) W = nW H = nH Slutkonstruktor ' Klass för att skapa ett typ AObject Privat: X som heltal Y Som heltalsrörelse som vektorpekare Offentlig: ' Externt synliga metoder, inklusive konstruktor och destruktor Deklarera konstruktor ( nX som heltal , nY som heltal ) Deklarera Destruktor ( ) Deklarera Sub SetMotion ( Motion As Vector Pointer ) Deklarera Sub Move () Deklarera egenskap GetX som heltalsändtyp ' Ställ in standardvärden Konstruktor AObject ( nX Som heltal , nY Som heltal ) X = nX Y = nY Slutkonstruktor ' Avallokera minnesdestruktor AObject ( ) Ta bort Movement End Destructor ' Ställ in vektor Sub AObject . SetMotion ( Motion As Vector Pointer ) Movement = Motion End Sub ' Flyttar objektet längs dess vektor Sub AObject . Flytta () X += Rörelse -> W Y += Rörelse -> H End Sub ' Returnerar X-koordinaten som inte är tillgänglig utanför egenskapen AObject . GetX As Integer Return X End Property ' Faktisk start av programmet ' Skapa en instans av klassen vid koordinater (100, 100) Dim Player As AObject = Typ < AObject > ( 100 , 100 ) ' Skapa en vektor med initiala värden (-10, 5) och flytta positionerna för spelarobjektet . SetMotion ( New Vector ( -10 , 5 )) ' Flytta Player -objektet . Flytta () ' Hämta X-koordinaten och skriv ut till konsolen Print Player . GetX ' Destruktorn för "Player"-objektet anropas när objektet går utanför räckvidden ' Eftersom "Player" är en lokal variabel, anropas destructorn automatiskt
'Väntar på att någon knapp ska tryckas
ned Sleep
Anteckningar
- ↑ 12 version 1.09.0 släppt . Hämtad 1 januari 2022. Arkiverad från originalet 1 januari 2022. (obestämd)
- ↑ Mer om FreeBASIC (engelska) (nedlänk) . freebasic.net. - FreeBASIC - ännu mer användbara funktioner. Hämtad 14 oktober 2015. Arkiverad från originalet 24 oktober 2015.
Se även
Källor
Länkar
ID
- FBIde - IDE för FreeBASIC
- FbEdit (inte tillgänglig länk) - en annan IDE för FreeBASIC
- WinFBE - Modern FreeBASIC IDE för Windows
Dialekter av programmeringsspråket BASIC |
---|
Klassisk |
|
---|
övergångsperiod |
|
---|
processuella |
|
---|
Objekt |
|
---|
Mobil |
|
---|
Trösta |
|
---|