BAB
|
|
3
|
Pada bagian
ini akan dibahas mengenai bagaimana mendeklarasikan suatu variabel,
konstanta,array serta pemakaiannya dalam script. Selain itu juga akan dibahas
bagaimana mendeklarasikan external function yang terdapat pada suatu dynamic
link libraries (DLLs) dan Remote Procedure Call (RPCs) pada sebuah Store
Procedure yang terdapat dalam suatu database.
Suatu
variabel hanya dapat digunakan dalam suatu script PowerBuilder jika telah
dilakukan pendeklarasian sebelumnya. Pendeklarasian variabel ini erat kaitannya
dengan pembahasan kita sebelumnya yaitu mengenai tipe data dan penamaan variabel.
Variabel yang dapat kita deklarasikan dapat berupa variabel standard, struktur
atau sebuah object.
Dilihat
dari ruang lingkup penggunaan dan aksesnya, deklarasi variabel dapat dibagi
menjadi 4 (empat) tingkatan yaitu : Global, Instance,Shared dan Local.
menjadi 4 (empat) tingkatan yaitu : Global, Instance,Shared dan Local.
10/04/2014
Ruang
Lingkup Deklarasi Variabel
a.
Global
Deklarasi
variabel Global yaitu deklarasi variable yang ruang lingkup penggunaannya dapat
diakses disemua tempat dalam suatu aplikasi. Biasanya diletakan pada file
library utama pada object application, seperti terlihat pada gambar di bawah
ini.
Variable yang
dideklarasikan sebagai global
variable pada suatu aplikasi, maka akan dikenal disemua event script yang ada
disemua object yang ada pada aplikasi tersebut.
b.
Instance
Deklarasi
variabel Instance yaitu deklarasi variable yang ruang lingkup penggunaannya
dapat diakses atau dikenal disemua lingkungan event script yanga ada pada
sebuah object. Variable yang dideklarasikan sebagai instance variable pada
sebuah object akan dapat dikenal di semua lingkungan event script yang ada pada
object tersebut. Misalnya pada object window, user object atau menu, seperti
terlihat pada gambar di bawah ini.
Pada contoh
tersebut di atas variable : iv_saldo,iv_persen,iv_hasil dan iv_dayfactor dapat
dikenal dan dapat digunakan pada event script lainnya, misalnya pada event open
window, event klik pada object control CommandButton,
atau function yang ada di window
tersebut.
c.
Shared
Deklarasi variabel Shared yaitu deklarasi variable yang ruang
lingkup penggunaannya dapat diakses pada suatu object tertentu, misalnya pada
object window, user object atau menu, seperti terlihat pada gambar di bawah
ini.
d.
Local
Deklarasi
variabel Local yaitu deklarasi variable yang ruang lingkup penggunaannya hanya
dapat diakses pada lingkungan event script tertentu. Misalnya variable yang
dideklarasikan pada event open window, maka hanya dapat digunakan atau diakses
pada script open window saja, dan tidak akan dikenal pada pada lingkungan event
script yang lain.
Contoh variabel
Local seperti terlihat pada gambar di bawah ini.
Variable ld_endbal,ld_interest,ld_value,li_dayintrest
dan ls_msg hanya dapat digunakan dilingkungan script event klik di object
control dw_1. Jika variable-variabel tersebut dipanggil pada script di event
yang lain,misalnya pada event doublecliked, maka akan tampil pesan seperti pada
gambar berikut ini.
Variabel
Global,Instance dan Shared dapat dideklarasikan pada script yang ada di
Application, Window, Menu, dan User Object. Untuk variable global, selain pada
object-object tersebut juga dapat digunakan pada object Function.
Sedangkan untuk
variable local, hanya dapat dideklarasikan pada sebuah object atau control
tertentu.
Cara untuk
mendeklarasikan variable Global,Instance dan Shared yaitu sebagai berikut :
Pilih
drop down declare pada salah satu tampilan script yang ada
Kemudian
pilih tipe deklarasi variabelnya
Tuliskan
tipe data dan variabel-variabel yang akan digunakan dalam sebuah script
Urutan
pencarian variabel ketika PowerBuilder mengeksekusi suatu script yaitu sebagai
berikut :
1.
variabel
Lokal
2.
variabel
Shared
3.
variabel
Global
4.
variabel
Instance
Ketika ada
penamaan variabel yang sama maka PowerBuilder akan memberikan pesan peringatan.
Penamaan untuk variabel global diusahakan agar spesifik tidak digunakan dalam
variabel Shared,Instance ataupun local. Tetapi jika saja ada variabel global
yang sama dengan variabel shared atau local, maka variabel local atau shared
yang akan pertama kali dikenali.
Agar variabel
global tersebut tidak dianggap sama dengan variabel local atau shared, maka saat
pemanggilannya dapat menggunakan tanda global
scope variabel ( :: ) sebelum
nama variabel yang dimaksud.
Syntax
penulisannya yaitu sebagai berikut :
::globalvariabelname
|
Contoh :
IF saldo <> ::saldo THEN ....
|
Variabel saldo
yang tidak menggunakan tanda :: menyatakan nilai dari variabel local atau
shared, sedangkan variabel saldo dengan tanda :: didepannya menyatakan nilai
dari variabel global.
Penggunaan
referensi variable instance terdapat dua kondisi yang berlaku, yaitu kondisi
tanpa menyertakan nama kualiifikasinya dan dengan menyertakan nama
kualifikasinya. Kualifikasi yang
dimaksud yaitu object dimana variable instance di deklarasikan.
Contoh kasus
penggunaan referensi variable instance tanpa menyebutkan kualifikasinya yaitu :
1.
Untuk
variable di tingkat application, yaitu pada object application
2.
Untuk
variable di tingkat window, yaitu pada script yang ada di window bersangkutan
dan pada script di object control di window tersebut.
3.
Untuk
variable di tingkat user object, yaitu pada script yang ada di user object
bersangkutan dan pada script di object control di user object tersebut
4.
Untuk
variable di tingkat menu, yaitu pada script yang ada di menu, baik pada script
di level menu tertinggi maupun pada script di sub menu.
st_hasl.text = hasilhitung
|
Sedangkan jika kita akan menampilkan
pada object control static text atau object control lainnya di luar object
window w_simulasi maka kita harus mencantumkan nama object window w_simulasi
diikuti dengan nama variabel dengan menggunakan fasilitas notasi titik ( dot
notation ) .
Syntax penulisannya yaitu :
object.instancevariable
|
Dengan demikian penulisan script untuk
kasus tersebut di atas yaitu sebagai berikut :
st_hasl.text = w_simulasi.hasilhitung
|
Kemudian jika
ada pada script object control static text yang ada pada window w_simulasi tersebut
terdapat variabel local dengan nama yang sama, maka kita tinggal menggunakan
fasilitas kata ganti window, seperti contoh berikut :
st_hasl.text = parent.hasilhitung
|
Syntax
Deklarasi Variabel
Syntax penulisan deklarasi varibel
secara sederhana yaitu :
datatype
variablename
|
Sedangkan
syntax penulisan deklarasi variabel secara lengkap yaitu :
{ access }
datatype { { size } } { { precision } } variablename { = value }
{, variablename2 { = value2 } }
|
Berikut ini tabel penjelasan pengisian parameter
pada pendeklarasian variabel :
No
|
Parameter
|
Keterangan
|
1.
|
access
( opsional)
|
Parameter
access bersifat opsional, biasanya khusus digunakan pada deklarasi variable
instance
|
2.
|
datatype
|
Diisi
denganTipe data yang akan digunakan. Tipe data yang dapat digunakan yaitu tipe
data standard, object system dan object structur.Untuk tipe data decimal dan
BLOB dapat mencantumkan jumlah digit decimal atau besaran datanya didalam
tanda kurung { }
|
3.
|
size
(opsional)
|
Diisi hanya
untuk tipe data blob, berupa angka besaran data blob dalam satuan byte. Jika
parameter size ini dikosongkan maka secara default terisi nol, dan PowerBuilder
akan menyesuaikan nilainya pada saat aplikasi dijalankan.Jika ukuran data
blob yang kita entri melebihi ukuran saat dideklarasikan maka PowerBuilder
akan otomatis memotong ukurannya tersebut sesuai dengan ukuran yang telah
dideklarasikan sebelumnya.
|
4.
|
precision
(opsional)
|
Diisi dengan
angka untuk menentukan jumlah digit dibelakang koma ( decimal point ).
Parameter ini hanya diisi untuk tipe data decimal
|
5.
|
variablename
|
Diisi dengan
nama variabel yang akan digunakan. Untuk aturan penamaannya dapat dilihat
pada pembahasan Identifier / penamaan variable hal 5.
Untuk
menambahkan variabel yang lain dengan tipe data yang sama dapat menggunakan
tanda koma ( , ) diantara variabel yang satu dengan yang lainnya
|
6.
|
Value
(opsional)
|
Diisi nilai
data sesuai tipe data yang digunakan dalam suatu variabel sebagai
inisialisasi awal. Untuk tipe data blob tidak bisa dilakukan pengisian nilai
parameter ini
|
Untuk
contoh-contoh deklarasi variabel dapat dilihat seperti contoh berikut ini :
Contoh
Deklarasi variabel local :
string
ls_kota = "Bogor"
integer li_nomor
dec{4} ld_Rate1,
ld_Rate2
decimal{0} ld_Balance
dec ld_result
Contoh
Deklarasi variabel shared :
time st_process_start
string ss_process_name
decimal{2} sd_Amount
decimal{2} sd_dollars_accumulated
Contoh
Deklarasi variabel instance :
integer ii_total = 100
date id_tanggal
blob ib_Emp_Picture:
blob{100} ib_Emp_Picture
Contoh
Deklarasi variabel global :
string gs_nama
|
TIPS :
Dalam merancang
sebuah aplikasi yang baik, maka sebaiknya kita perlu membuat standarisasi
penamaan variabel. Sehingga variabel-variabel tersebut akan mudah dikenalai,
apakah variabel tersebut merupakan variabel local,shared, instance atau global.
Sebagai contoh
kita melakukan standarisasi penamaan variabel sesuai dengan ruang lingkup
penggunaanya, misalnya untuk variabel lokal maka penamaannya kita awali dengan
huruf l, untuk variabel shared kita awali dengan huruf s, variabel instance
diawali huruf i, dan variabel global diawali huruf g, diikuti huruf awal tipe
data ditambah tanda _ ( underscore ) , kemudian diakhiri nama variabel.
gs_namavariabel // variable global dengan tipe
data string
gi_namavariabel // variable global dengan tipe
data integer
id_namavariabel // variable instance dengan tipe
data decimal
sb_namavariabel // variable instance dengan tipe
data decimal
|
Penggunaan
variabel X dan Y perlu diperhatikan, karena variable tersebut oleh PowerBuilder
sudah didefinisikan sebagai properti untuk menentukan koordinat layar suatu
object. Jika kita lupa mendeklarasikan
variabel X dan Y sebelum kita menggunakannya dalam suatu script, Powerbuilder
tidak akan menganggap sebagai suatu kesalahan. Tetapi nilai X dan Y yang kita
gunakan tersebut dianggap sebagai nilai dari koordinat layar object tertentu.
Inisialisasi Nilai
Variabel
Ketika kita
mendekalarasikan suatu variabel, kita dapat menerima nilai default atau kita
juga dapat menentukan nilai awal suatu variabel tersebut.
Ketentuan
inisialisasi nilai variabel yaitu sebagai berikut :
1.
Mencantumkan
tanda ‘=’ di depan variabel
2.
Menuliskan
nilai yang sesuai dengan tipe data yang dideklarasikan
Contoh :
Integer li_max = 100
|
3.
Tidak
menggunakan nilai hasil dari suatu function, seperti pada contoh berikut :
decimal ld_saldo = of_hasilhitung()
|
Jika kita tidak
melakukan inisialisai nilai awal variabel maka PowerBuilder akan memberikan
nilai default sesuai tipe data masing-masing.
Pada tabel
berikut ini diuraikan nilai default suatu variabel sesuai dengan tipe datanya.
No
|
Tipe Data
|
Nilai Default PowerBuilder
|
1.
|
Blob
|
sebuah blob berukuran
0 byte; sebuah blob kosong
|
2.
|
Char (atau
character)
|
Nilai ASCII 0
|
3.
|
Boolean
|
False
|
4.
|
Date
|
1900-01-01
(January 1, 1900)
|
5.
|
DateTime
|
1900-01-01
00:00:00
|
6.
|
Numeric (byte, integer, long,
longlong,
decimal, real, double, UnsignedInteger,
dan
UnsignedLong)
|
0
|
7.
|
String
|
string kosong
("")
|
8.
|
Time
|
00:00:00
|
Hak Akses Variabel
Instance
Untuk
menentukan jangkauan akses suatu variabel instance, kita dapat mengendalikannya
dengan fasilitas Hak Akses (Access Right) variabel.
Syntax penulisan
hak akses variabel instance yaitu sebagai berikut :
{
access-right } { readaccess } { writeaccess } datatype variablename
|
Berikut ini
tabel penjelasan penggunaan parameter hak akses variabel instance :
No
|
Parameter
|
Keterangan
|
1.
|
access-right
( opsional)
|
Diisi
dengan keyword(kata kunci) yang menentukan dimana suatu variabel dapat
dikenali. Keyword yang digunakan terdiri dari :
·
PUBLIC
– (Default)
Dimana
semua script dalam aplikasi dapat menggunakan variable tersebut. Untuk dapat
dipakai dalam script object yang lain kita gunakan notasi titik kemudian
diikuti nama variablenya.
·
PROTECTED
Hanya
dapat diakses oleh script yang ada pada object dimana variabel tersebut
dideklarasikan
·
PRIVATE
– Scripts for the object for which the variable is declared can refer to the
variable. You cannot refer to the variable in descendants of the object.
|
2.
|
readaccess
(optional)
|
Diisi dengan
kata kunci yang menyatakan pembatasan hak akses untuk membaca nilai suatu
variabel. Keyword yang digunakan yaitu :
·
PROTECTEDREAD
– Only scripts for the object and its descendants can read the variable.
·
PRIVATEREAD
– Only scripts for the object can read the variable.
When access-right is PUBLIC, you can
specify either keyword.
When access-right is PROTECTED, you
can specify only
PRIVATEREAD. You cannot specify a
modifier for PRIVATE
access, because PRIVATE is already
fully restricted.
If readaccess is omitted, any script
can read the variable.
|
3.
|
writeaccess
(optional)
|
Diisi dengan keyword yang membatasi
akses suatu sctipt untuk merubah nilai suatu variabel. Terdiri dari :
·
PROTECTEDWRITE
– Only scripts for the object and its descendants can change the variable.
·
PRIVATEWRITE
– Only scripts for the object can change the variable.
When
access-right is PUBLIC, you can specify either keyword.
When
access-right is PROTECTED, you can specify only
PRIVATEWRITE.
You cannot specify a modifier for PRIVATE
access,
because PRIVATE is already fully restricted.
If
writeaccess is omitted, any script can change the variable.
|
4.
|
datatype
|
Diisi dengan
tipe data yang sesuai.
|
5.
|
variablename
|
Diisi dengan
nama variabel yang sesuai dengan ketentuan penamaan variabel.
|
13/04/2014
2. Deklarasi Konstanta
Pengertian
Konstanta secara umum yaitu pendeklarasian suatu variabel yang nilainya
bersifat tetap dan tidak bisa diubah. Dengan demikian konstanta juga merupakan
sebuah variabel, bedanya dengan variabel umum yaitu pada nilai yang
disimpannya. Pada variabel umum nilainya tidak perlu di set di awal
pendeklarasian, pengisi nilai suatu variabel dapat dilakukan dimanapun dan
kapanpun serta nilainya dapat berubah sesuai dengan kerluan aplikasi.
Jika kita
membutuhkan suatu variabel yang nilai datanya sepanjang program berjalan tidak
berubah-ubah, maka sebuah varibel lebih baik diperlakukan sebagai konstanta.
Dalam sebuah kode
program, biasanya nilai data dari konstanta diberikan langsung di bagian
deklarasi konstanta. Sedangkan untuk variabel, biasanya hanya ditentukan nama
variabel dan tipe datanya tanpa isian nilai data. Aturan penamaan dan pwnetapan
tipe data untuk konstanta sama dengan penamaan dan penetapan tipe data pada
variabel
Setiap variable
standar dalam PowerScript dapat dideklarasikan ke dalam bentuk kontanta. Untuk
mendeklarasikn menjadi konstanta kita tinggal mencantumkan kata CONSTANT
pada deklarasi variabel dan menuliskan nilainya setelah penamaan variabel
konstanta tersebut.
Syntax penulisannya sebagai berikut :
CONSTANT {
access } datatype constname = value
|
Berikut ini tabel penjelasan
pendeklarasian parameter variabel konstanta.
No
|
Parameter
|
Keterangan
|
1.
|
CONSTANT
|
Pendeklarasian
suatu kontanta dari sebuah variable. Kata CONSTANT dapat
diletakan sebelum maupun setelah parameter access.
|
2.
|
access
|
Parameter
access bersifat opsional, biasanya khusus digunakan pada deklarasi variable
instance
|
3.
|
datatype
|
Diisi
denganTipe data yang akan digunakan. Tipe data standard yang tidak dapat
digunakan dalam konstanta yaitu tipe data BLOB
|
4.
|
constname
|
Diisi dengan
nama konstanta yang akan digunakan. Untuk aturan penamaannya sama dengan
aturan penamaan variable
|
5.
|
value
|
Diisi nilai
data sesuai tipe data yang digunakan dalam suatu konstanta.
|
Pada powerscript,saat pendeklarasian suatu
variabel konstanta selalu diikuti dengan nilai konstanta tersebut, jika tidak
maka akan dianggap sebagai suatu kesalahan ketika dilakukan compile. Begitupun
ketika kita melakukan pengisian nilai setelah pendeklarasian variabel konstanta
maka akan dianggap kesalahan juga,seperti pada gambar dibawah ini.
Meskipun dalam powerscript tidak mengenal
case sensitive, tetapi untuk penamaan variabel konstanta biasanya ditulis
dengan huruf capital, seperti dapat dilihat pada contoh berikut ini :
Constant String DBMAIN_NAME = 'dbtest'
Atau
constant Integer DBMAIN_PORT = 5000
|
3. Deklarasi Array
Sebuah array yaitu merupakan sekumpulan
elemen data yg terurut dalam sebuah tipe data tunggal.Dalam pemrograman PowerBuilder
,variabel array dapat berupa array satu dimensi ataupun multi dimensi. Setiap
dimensi pada suatu array dapat berisi maximum 2.147.483.647 byte elemen data.
Adapun syntax pendeklarasian sebuah array
yaitu sebagai berikut :
{ access }
datatype variablename { d1, ..., dn } { = { valuelist } }
|
Tabel berikut ini menjelasankan fungsi parameter-parameter
dalam pendeklarasian variabel Array.
No
|
Parameter
|
Keterangan
|
1.
|
access
(optional)
|
Parameter
access bersifat opsional, biasanya khusus digunakan pada deklarasi variable
instance
|
2.
|
datatype
|
Diisi
denganTipe data yang akan digunakan. Tipe data standard yang tidak dapat
digunakan dalam konstanta yaitu tipe data BLOB
|
3.
|
variablename
|
Diisi dengan
nama variabel yang sesuai dengan ketentuan penamaan variabel.
|
4.
|
[ { d1, ..., dn } ]
|
Brackets and
(for fixed-size arrays) one or more integer values (d1 through dn, one for
each dimension) specifying the sizes of the dimensions.
For a
variable-size array, which is always one- imensional, specify brackets only.
For more
information on how variable-size arrays change size, see “Size of
variable-size arrays” on page 52.
For a
fixed-size array, the number of dimensions is determined
by the number
of integers you specify and is limited only by the amount of available
memory.
For
fixed-size arrays, you can use TO to specify a range of element numbers
(instead of a dimension size) for one or more of the dimensions. Specifying
TO allows you to change the lower bound of the dimension (upperbound must be
greater than lowbound):
[
d1lowbound TO
d1upperbound {, ... ,
dnlowbound TO
dnupperbound }
]
|
5.
|
{ valuelist }
(optional)
|
A list of
initial values for each position of the array. The values are separated by
commas and the whole list is enclosed in braces. The number of values cannot
be greater than the number of positions in the array. The datatype of the
values must match datatype.
|
These declarations create variable-size
arrays:
integer li_stats[ ] // Array of integers.
decimal {2} ld_prices[ ] // Array of
decimals with
// 2 places of precision.
blob lb_data[ ] // Array of variable-size
// blobs.
date ld_birthdays[ ] // Array of dates.
string ls_city[ ] // Array of strings.
// Each string can
be
// any length.
This statement declares a variable-size
array of decimal number (the declaration does not specify a precision, so each
element in the array takes the precision of the value assigned to it):
dec lc_limit[ ]
These declarations create fixed-size,
one-dimensional arrays:
integer li_TaxCode[3] // Array of 3
integers.
string ls_day[7] // Array of 7 strings.
blob ib_image[10] // Array of 10
// variable-size blobs.
dec{2} lc_Cost[10] // Array of 10 decimal
// numbers.
// Each value has 2 digits
// following the decimal
// point.
decimal lc_price[20] // Array of 20
decimal
// numbers.
// Each takes the precision
// of the value assigned.
These fixed-size arrays use TO to change
the range of index values for the array:
real lr_Rate[2 to 5] // Array of 4 real
numbers:
// Rate[2] through Rate[5]
integer li_Qty[0 to 2] // Array of 3
integers
string ls_Test[-2 to 2] // Array of 5
strings
integer li_year[76 to 96] // Array of 21
integers
string ls_name[-10 to 15] // Array of 26
strings
In an array dimension, the second number must
be greater than the first. These declarations are invalid:
integer li_count[10 to 5] // INVALID: 10
is
// greater than 5
integer li_price[-10 to -20] // INVALID:
-10
// is greater than -20
This declaration creates a six-element,
two-dimensional integer array. The individual elements are li_score[1,1],
li_score[1,2], li_score[1,3], li_score[2,1], li_score[2,2], and
li_score[2,3]:
integer li_score[2,3]
This declaration specifies that the
indexes for the dimensions are 1 to 5 and 10 to 25:
integer li_RunRate[1 to 5, 10 to 25]
This declaration creates a 3-dimensional
45,000-element array:
long ll_days[3, 300, 50]
This declaration changes the subscript
range for the second and third dimension:
integer li_staff[100, 0 to 20, -5 to 5]
More declarations of multidimensional
arrays:
string ls_plant[3,10] // two-dimensional
array
// of 30 strings
dec{2} lc_rate[3,4] // two-dimensional
array of 12
// decimals with 2 digits
// after the decimal point
This declaration creates three decimal
arrays:
decimal{3} lc_first[10],lc_second[15,5],lc_third[
]
PowerBuilder akan menginisialisasikan
setiap elemen dalam sebuah array dengan nilai default yang sama sesuai
ketentuan tipe datanya. Misalnya, ketika
sebuah array dideklarasikan dengan tipe data integer, maka semua elemen dalam
array tersebut terisi default nol (0), seperti contoh berikut ini :
integer li_counter[5]
|
Maka elemen data di li_counter[1], li_ counter[2], sampai
dengan elemen li_ counter[5] semuanya terisi nilai awal nol (0).
In a simple array, you can override the
default values by initializing the elements of the array when you declare the
array. You specify the values in a comma-separated list of values enclosed in
braces. You do not have to initialize all the elements of the array, but you
cannot initialize values in the middle or end without initializing the first
elements.
In a multidimensional array, you still
provide the values in a simple, comma-separated list. When the values are
assigned to array positions, the first dimension is the fastest-varying
dimension, and the last dimension is the slowest-varying. In other words, the
values are assigned to array positions by looping over all the values of the
first dimension for each value of the second dimension, then looping over all
the values of the second dimension for each value of the third, and so on.
Assigning
values
You can assign values to an array after
declaring it using the same syntax of a list of values within braces:
integer li_Arr[]
Li_Arr = {1, 2, 3, 4}
Example 1
This statement declares an initialized
one-dimensional array of
three variables:
real lr_Rate[3]={1.20, 2.40, 4.80}
Example 2
This statement initializes a
two-dimensional array:
integer li_units[3,4] = {1,2,3, 1,2,3,
1,2,3, 1,2,3}
As a result:
Li_units[1,1], [1,2], [1,3], and [1,4] are
all 1
Li_units[2,1], [2,2], [2,3], and [2,4] are
all 2
Li_units[3,1], [3,2], [3,3], and [3,4] are
all 3
Example 3
This statement initializes the first half
of a 3-dimensional array:
integer li_units[3,4,2] = &
{1,2,3, 1,2,3, 1,2,3, 1,2,3}
As a result:
Li_units[1,1,1], [1,2,1], [1,3,1], and
[1,4,1] are all 1
Li_units[2,1,1], [2,2,1], [2,3,1], and
[2,4,1] are all 2
Li_units[3,1,1], [3,2,1], [3,3,1], and
[3,4,1] are all 3
Li_units[1,1,2], [1,2,2], [1,3,2], and
[1,4,2] are all 0
Li_units[2,1,2], [2,2,2], [2,3,2], and
[2,4,2] are all 0
Li_units[3,1,2], [3,2,2], [3,3,2], and
[3,4,2] are all 0
No comments:
Post a Comment