Module
Contents
Index 🔎︎

# 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
| Đúng
          MyNumber5=15
| Đúng
          MyNumber_5=20
| Đúng
          My Number=20
| Không hợp lệ, biến chứa dấu cách phải nằm giữa dấu ngoặc vuông
          [My Number]=12
| Đúng
          DéjàVu=25
| Không hợp lệ, không cho phép ký tự đặc biệt
          5MyNumber=12
| Không hợp lệ, biến không thể bắt đầu với con số
          Number,Mine=12
| Không hợp lệ, không cho phép dấu chấm câu

## 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$
| Khai báo biến « a » làm Chuỗi
          Dim a As String
| Khai báo biến « a » làm Chuỗi
          Dim a$, b As Integer
| Khai báo một biến dạng Chuỗi, và một biến khác dạng Số nguyên
          Dim c As Boolean
| Khai báo c là một biến lôgic có thể là Đúng hoặc Sai

Rất quan trọng khi khai báo biến là mỗi lần bạn dùng ký tự khai báo kiểu, thậm chí nếu nó đã được dùng trong lời khai báo thay cho từ khoá. Vì vậy các câu lệnh sau không phải hợp lệ:

          Dim a$
| Khai báo « a » làm Chuỗi.
          a="TestString"
| Lời khai báo kiểu còn thiếu: "a$="

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.

### É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 kiểu Số có thể chứa giá trị thuộc số. Một số biến nào đó được dùng để cất giữ số lớn hoặc số nhỏ, còn biến khác dùng cho số kiểu điểm động hoặc số kiểu phân số.

- Biến kiểu Chuỗi thì chứa chuỗi các ký tự.

- Biến Lôgic thì chứa giá trị hoặc ĐÚNG hoặc SAI.

- Các biến kiểu Đối tượng có thể chứa các đối tượng có kiểu khác nhau, v.d. các bảng và tài liệu bên trong tài liệu khác.

### 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

Biến đơn có thể chứa giá trị dương hoặc giá trị âm trong phậm vi (3.402823 x 10E38 ... 1.401298 x 10E-45). Biến đơn là biến điểm động, trong đó độ chính xác thập phân giảm tỷ lệ với kích cỡ tăng của phần không thập phân của số. Biến đơn thích hợp với phép tính có độ chính xác vừa. Phép tính như vậy mất nhiều thời gian hơn phép tính với biến số nguyên, còn ít thời gian hơn phép tính với biến đôi. Một biến đơn chiếm 4 byte bộ nhớ. Ký tự khai báo kiểu là « ! ».

    Dim Variable!
    Dim Variable As Single

### Biến đôi

Biến đôi có thể chứa giá trị hoặc dương hoặc âm, trong phạm vi (1.79769313486232 x 10E308 ... 4.94065645841247 x 10E-324). Biến đôi là biến điểm động, trong đó độ chính xác thập phân giảm tỷ lệ với kích cỡ tăng của phần không thập phân của số. Biến đôi thích hợp với phép tính chính xác. Phép tính như vậy mất nhiều thời gian hơn phép tính với biến đơn. Một biến đôi chiếm 8 byte bộ nhớ. Ký tự khai báo kiểu là « # ».

    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

### Biến chuỗi

Biến chuỗi có thể chứa chuỗi ký tự chứa đến 65 535 ký tứ. Mỗi ký tự được cất giữ dưới dạng giá trị Unicode tương ứng. Biến chuỗi thích hợp với chức năng xử lý từ bên trong chương trình, và để cất giữ tạm thời bất cứ ký tự không thể in nào có chiều dài đến 64 KB. Bộ nhớ cần thiết để cất giữ biến chuỗi sẽ phụ thuộc vào số ký tự nó chứa. Ký tự khai báo kiểu là « $ ».

    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

## 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 phần tử được đánh số từ 0 đến 20
          Dim Text$(5,4)
| 30 phần tử (một ma trận có 6×5 phần tử)
          Dim Text$(5 To 25)
| 21 phần tử đánh số từ 5 đến 25
          Dim Text$(-15 To 5)
| 21 phần tử (gồm có 0), đánh số từ -15 đến 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