FreeBASIC — Sintaksisi boʻyicha QuickBASICga eng yaqin boʻlgan yuqori darajadagi dasturlash tili, shuningdek uning uchun kompilyator (FreeBASIC Compiler). Boshida kompilyator Microsoft QuickBasicning erkin alternativasi sifatida yaratilayotgan edi, lekin tez fursatda yangi imkoniyatlarga ega boʻldi va kuchli dasturlash vositasiga aylandi. Garchi birinchi versiyalari Visual Basicda yozilgan boʻlsada, endi u oʻzini oʻzi kompilyatsiya qila oladi.

FreeBASIC
MuallifThe FreeBASIC Development Team
Ishlab chiqaruvchiThe FreeBASIC Development Team
tashkil topdi:2004
Eng so‘nggi versiyasi1.07.1 1.10.1[1]
Format(lar)i.bas .bi

Kompilyator tahrir

QBasic va FreeBASIC kodni 32 va 64-bit Win32, DOS (himoyalangan rejimda) va Linux x86 modullariga kompilyatsiya qiladi.

Assemblerlash va tarkiblash GNU Binutils yordamida amalga oshiriladi.

Kompilyator GNU GPL shartlari tarqatiladi, standart biblioteka esa — GNU LGPLda.

Bir nechta dasturlash muhiti mavjud, tuzatgich sifatida GNU Debuggerni ishlatish mumkin (shuningdek gprof ham qoʻllaniladi).

Til tahrir

Kompilyator QuickBasic bilan mos kelishiga qaramasdan, zamonaviy talablarga, standartlarga mos kelishi uchun hamda C/C++da yozilgan biblioteka va APIga mos kelishi uchun FreeBASIC tiliga koʻp kengaytma va imkoniyatlar qoʻshilgan. 0.17 versiyasida boshlab foydalanuvchi kompilyatsiya qilishning uchta tartibdan birini tanlashi mumkin (-lang sozlanmasi): QuickBASIC (qb) bilan, FreeBASICning eski versiyalari bilan (deprecated) moslik tartibi va barcha oxirgi oʻzgarishlar va imkoniyatlarni oʻz ichiga oluvchi standart tartib (fb).

Yangi imkoniyatlar va kengaytmalar[2] tahrir

  • Yunikodni qoʻllanilishi.
  • Oʻzgaruvchilarning koʻpchilik oʻrnatilgan turlari (Byte, UByte, Short, UShort, Integer, UInteger, LongInt, ULongInt, Single, Double, Boolean, String, ZString, WString).
  • Foydalanuvchi tomonidan aniqlanadigan maʼlumotlar turi (cheksiz solinish, Union, maydon turi (array, function, bit fields)).
  • Nomfazolar.
  • Sanaladigan tur (Enum).
  • Massivlar bilan ishlashda yangi imkoniyatlar (2 GB oʻlchamgacha, Redim Preserve).
  • Koʻrsatkichlar (ixtiyoriy maʼlumotlar turiga koʻrsatkichlar, cheksiz bilvosita murojaat qilish).
  • Funksiya va operatorlarni qayta yuklash.
  • Funksiyalarning majburiy boʻlmagan argumentlari.
  • Oʻrnatilgan assembler (dastur manba kodida assembler instruksiyalari).
  • Preprotsessorlar.
  • Typedefs.
  • Sinflarning konstruktor va destruktorlari.
  • Kengaytirilgan grafik bibliotekasi.

Amaliy dasturlash funksiyalari bibliotekalarini qoʻllab-quvvatlashi tahrir

Dasturlar misollari tahrir

Hello, World! tahrir

FreeBASICning oʻrnatilgan bibliotekasini ishlatgan holda:

Print "Hello, World!"

C standart bibliotekasini ishlatgan holda:

#Include "crt.bi"

puts(!"Hello, World!\n")

Windows APIni ishlatgan holda:

#Include "windows.bi"

MessageBox(Null, "Hello, World!", "Message", MB_OK)

Obyektga moʻljallangan dasturlash tahrir

' Vektor sinfi
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
 
' Obyekt yaratish uchun sinf
Type AObject
	Private:
		X As Integer
		Y As Integer
		Movement As Vector Pointer
	Public:
		' Tashqarida koʻrinadigan metodlar, konstruktor va destruktor bilan birga
		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
 
' Boshlangʻich qiymatlarni oʻrnatish
Constructor AObject(nX As Integer, nY As Integer)
	X = nX
	Y = nY
End Constructor
 
' Xotirani boʻshatish
Destructor AObject()
	Delete Movement
End Destructor
 
' Vektorni oʻrnatish
Sub AObject.SetMotion(Motion As Vector Pointer)
	Movement = Motion
End Sub
 
' Obyektni vektor boʻyicha koʻchirish
Sub AObject.Move()
	X += Movement->W
	Y += Movement->H
End Sub
 
' Tashqaridan ruxsat berilmagan X koordinatasini qaytaradi
Property AObject.GetX As Integer
	Return X
End Property
 
' Dasturning haqiqiy boshlanish joyi 
 
' Sinf nusxasini koordinatalar (100, 100) bilan yaratish
Dim Player As AObject = Type<AObject>(100, 100)
 
' Vektorni boshlangʻich qiymatlar bilan yaratish (-10, 5) va obyekt oʻrnini koʻchirish
Player.SetMotion(New Vector(-10, 5))
 
' Obyektni koʻchirish
Player.Move()
 
' X koordinatasini olamiz va konsolga chiqaramiz
Print Player.GetX
 
' «Player» obyekti destruktori, qachonki obyekt koʻrinish zonasini tark etganda chaqiriladi
' «Player» mahalliy oʻzgaruvchi boʻlganligi uchun destruktor avtomatik chaqiriladi

'Ixtiyoriy tugmacha bosilishini kutamiz
Sleep

Izoh tahrir

  1. (unspecified title)
  2. „More about FreeBASIC“ (en) (deadlink). freebasic.net. — FreeBASIC - ещё больше нужных функций. 2015-yil 24-oktyabrda asl nusxadan arxivlangan. Qaraldi: 2015-yil 14-oktyabr. (Wayback Machine saytida 2015-10-24 sanasida arxivlangan)

Yana qarang tahrir

Manbalar tahrir

Havolalar tahrir

IDE
  • FBIde — FreeBASIC uchun IDE
  • FbEdit[sayt ishlamaydi] — FreeBasic uchun yana bir IDE
  • WinFBE - Windows uchun zamonaviy FreeBASIC IDE
  • VisualFBEditor — FreeBASIC uchun IDE