Sử dụng biến

Phần theo đây diễn tả cách sử dụng cơ bản các biến trong mã Basic của LibreOffice.

Quy ước đặt tên cho bộ nhận diện biến

Một tên biến có chiều dài tối đa là 255 ký tự. Ký tự đầu của tên biến phải là chữ cái (A-Z, a-z). Tên biến cũng có thể chứa chữ số, nhưng không cho phép chứa dấu chấm câu hoặc ký tự đặc biệt, trừ dấu gạch dưới (_). Trong mã Basic của LibreOffice, các bộ nhận diện biến không phân biệt chữ hoa/thường. Tên biến có thể chứa dấu cách, nhưng chỉ được chứa trong dấu ngoặc vuông.

Mẫu thí dụ về các bộ nhận diện khác nhau :


    MyNumber=5      'Correct'
    MyNumber5=15    'Correct'
    MyNumber_5=20   'Correct'
    My Number=20    'Not valid, variable with space must be enclosed in square brackets'
    [My Number]=12  'Correct'
    DéjàVu=25       'Not valid, special characters are not allowed'
    5MyNumber=12    'Not valid, variable may not begin with a number'
    Number,Mine=12  'Not valid, punctuation marks are not allowed'

Khai báo biến

Trong mã Basic của LibreOffice, bạn không cần phải khai báo biến một cách dứt khoát. Có thể khai báo một biến bằng câu lệnh Dim. Cũng có thể khai báo nhiều biến đồng thời, bằng định giới các biến bằng dấu phẩy. Để xác định kiểu biến, dùng hoặc một dấu khai báo kiểu phía sau tên, hoặc từ khoá thích hợp.

Mẫu thí dụ cho lời khai báo biến:


    Dim a$               'Declares the variable "a" as a String'
    Dim a As String      'Declares the variable "a" as a String'
    Dim a$, b As Integer 'Declares one variable as a String and one as an Integer'
    Dim c As Boolean     'Declares c as a Boolean variable that can be TRUE or FALSE'
warning

Một khi bạn khai báo một biến có kiểu cụ thể, không thể khai báo cùng biến dưới cùng tên với kiểu khác.


When you declare multiple variables in a single line of code you need to specify the type of each variable. If the type of a variable is not explicitly specified, then Basic will assume that the variable is of the Variant type.


  ' Both variables "a" and "b" are of the Integer type
  Dim a As Integer, b As Integer
  ' Variable "c" is a Variant and "d" is an Integer
  Dim c, d As Integer
  ' A variable can also be explicitly declared as a Variant
  Dim e As Variant, f As Double
note

The Variant type is a special data type that can store any kind of value. To learn more, refer to the section The Variant type below.


Ép buộc khai báo biến

Để ép buộc khai báo biến, dùng câu lệnh này:


Option Explicit

Câu lệnh Tùy chọn dứt khoát phải là dòng đầu của mô-đun, phía trước trình con đầu tiên. Nói chung, chỉ mảng cần được khai báo dứt khoát. Các biến khác được khai báo tùy theo ký tự khai báo kiểu, không có thì có kiểu mặc định Đơn.

Kiểu biến

Mã Basic của LibreOffice hỗ trợ bốn hạng biến:

Biến số nguyên

Biến số nguyên nằm trong phạm vi (-32768 ... 32767). Nếu bạn gán một giá trị chấm động cho một biến số nguyên, các chữ số thập phân được làm tròn thành số nguyên gần nhất. Biến số nguyên được tính nhanh trong các thủ tục thì thích hợp với biến đếm trong vòng lặp. Một biến số nguyên chỉ chiếm 2 byte bộ nhớ. Ký tự khai báo kiểu là « % ».


Dim Variable%
Dim Variable As Integer

Biến số nguyên dài

Biến số nguyên dài nằm trong phạm vi (-2147483648 ... 2147483647). Nếu bạn gán một giá trị điểm động cho một biến số nguyên dài, các chữ số thập phân được làm tròn thành số nguyên gần nhất. Biến số nguyên dài được tính nhanh trong thủ tục thì thích hợp với biến đếm trong vòng lặp với giá trị lớn. Một biến số nguyên dài chiếm 4 byte bộ nhớ. Ký tự khai báo kiểu là « & ».


Dim Variable&
Dim Variable As Long

Biến thập phân

BIến thập phân chấp nhận cả con số dương, con số âm và số không (độ chính xác đến 29 chữ số).

Bạn có thể sử dụng dấu cộng (+) hoặc dấu trừ (-) làm tiền tố cho số thập phân (có dấu cách hay không, cũng được).

Gán một số thập phân cho một biến số nguyên thì LibreOffice Basic làm tròn giá trị.

Biến đơn

Single variables can take positive or negative values ranging from 3.402823 x 10E38 to 1.401298 x 10E-45. Single variables are floating-point variables, in which the decimal precision decreases as the non-decimal part of the number increases. Single variables are suitable for mathematical calculations of average precision. Calculations require more time than for Integer variables, but are faster than calculations with Double variables. A Single variable requires 4 bytes of memory. The type-declaration character is "!".


Dim Variable!
Dim Variable As Single

Biến đôi

Double variables can take positive or negative values ranging from 1.79769313486232 x 10E308 to 4.94065645841247 x 10E-324. Double variables are floating-point variables, in which the decimal precision decreases as the non-decimal part of the number increases. Double variables are suitable for precise calculations. Calculations require more time than for Single variables. A Double variable requires 8 bytes of memory. The type-declaration character is "#".


Dim Variable#
Dim Variable As Double

Biến tiền tệ

Biến kiểu tiền tệ được cất giữ nội bộ dưới dạng con số 64-bit (8 Byte) và được hiển thị dưới dạng con số thập phân cố định với 15 lần số nguyên và 4 chữ số thập phân. Các giá trị nằm trong phạm vi (-922337203685477.5808 ... +922337203685477.5807). Biến tiền tệ được dùng để tính giá trị tiền tệ với độ chính xác cao. Ký tự khai báo kiểu là « @ ».


Dim Variable@
Dim Variable As Currency

Literals for integers

Numbers can be encoded using octal and hexadecimal forms.


  xi = &o13 '    8 + 3
  ci = &h65 ' 6*16 + 5
  MAX_Integer =  &o77777 '  32767 = &h7FFF
  MIN_Integer = &o100000 ' -32768 = &h8000
  MAX_Long = &h7fffffff '  2147483647 = &o17777777777
  MIN_Long = &h80000000 ' -2147483648 = &o20000000000

Biến chuỗi

String variables can hold character strings with up to 2,147,483,648 characters. Each character is stored as the corresponding Unicode value. String variables are suitable for word processing within programs and for temporary storage of any non-printable character up to a maximum length of 2 Gbytes. The memory required for storing string variables depends on the number of characters in the variable. The type-declaration character is "$".

tip

In BASIC String functions, the first character of the string has index 1.



Dim Variable$
Dim Variable As String

Biến lôgic

Biến lôgic chứa chỉ một của hai giá trị: ĐÚNG hoặc SAI. Số không được tính là SAI, mà các giá trị khác được tính là ĐÚNG.


Dim Variable As Boolean

Biến ngày

Biến kiểu ngày tháng thì chỉ chứa được các giá trị ngày tháng và thời gian được cất giữ theo một định dạng nội bộ. Giá trị được gán cho biến Ngày Dateserial, Datevalue, Timeserial hoặc Timevalue được tự động chuyển đổi sang định dạng nội bộ. Các biến ngày tháng được chuyển đổi sang số bình thường dùng hàm Ngày, Tháng, Năm hoặc Giờ, Phút, Giây. Định dạng nội bộ hiệu lực chức năng so sánh các giá trị ngày/giờ bằng cách tính hiệu của hai con số. Những biến này chỉ có thể được khai báo bằng từ khoá Date (Ngày).


Dim Variable As Date

Literals for Dates

Date literals allow to specify unambiguous date variables that are independent from the current language. Literals are enclosed between hash signs #. Possible formats are:


  start_date = #12/30/1899# ' = 1
  dob = #2010-09-28#

The Variant type

Variables declared as Variant can handle any data type. This means that the actual data type is defined during runtime as a value is assigned to the variable.

There are three main ways to create a Variant variable, as shown below:


  Dim varA            ' The type is not specified, hence the variable is a Variant
  Dim varB as Variant ' The variable is explicitly declared as a Variant
  varC = "abc"        ' Previously undeclared variables are treated as Variants

The example below uses the TypeName function to show how the type of a Variant variable changes upon assignment.


  Dim myVar As Variant
  MsgBox TypeName(myVar) ' Empty
  myVar = "Hello!"
  MsgBox TypeName(myVar) ' String
  myVar = 10
  MsgBox TypeName(myVar) ' Integer
note

A Variant variable is initialized with the Empty special data type. You can use the IsEmpty function to test if a variable is an Empty Variant.


You can also use the keyword Any to declare a variable as a Variant. However, Any is deprecated and is available for backward compatibility.

warning

Arguments with type Variant or Any passed in function calls are not checked for their types.



  Dim myVar As Any ' Variable "myVar" is a Variant

Giá trị biến đầu tiên

Một khi biến được khai báo thì nó được tự động đặt thành giá trị « Null » (vô giá trị). Ghi chú về những quy ước này:

Biến Thuộc Số được khai báo thì tự động nhận giá trị « 0 » .

Các biến ngày tháng được gán nội bộ giá trị 0; tương đương với chuyển đổi giá trị sang 0 dùng hàm Ngày, Tháng, Năm hoặc Giờ, Phút, Giây.

Một Biến kiểu chuỗi được khai báo thì cũng được gán một chuỗi rỗng ( ).

Mảng

LibreOffice Basic nhận ra các mảng kiểu một chiều hoặc đa chiều, được xác định theo một kiểu biến đã ghi rõ. Mảng là thích hợp với công việc chỉnh sửa danh sách và bảng trong chương trình. Cũng có thể đặt địa chỉ của mỗi thành phần riêng của một mảng, dùng một chỉ mục thuộc số.

Mảng phải được khai báo dùng câu lệnh Dim. Có vài cách khác nhau để khai báo phạm vi chỉ mục của một mảng:


    Dim Text$(20)       '21 elements numbered from 0 to 20'
    Dim Text$(5,4)      '30 elements (a matrix of 6 x 5 elements)'
    Dim Text$(5 To 25)  '21 elements numbered from 5 to 25'
    Dim Text$(-15 To 5) '21 elements (including 0), numbered from -15 to 5'

Phạm vi chỉ mục có thể chứa con số dương, cũng như số âm.

Hằng số

Hằng số có giá trị cố định. Chỉ xác định mỗi hằng số một lần trong chưng trình, không thể xác định lại sau :


Const ConstName=Expression

Please support us!