Ada seorang teman namanya Joko yang memintaku untuk membuat kode konversi bilangan decimal ke biner oktal dan heksa.
Ini adalah hasilnya, semoga bermanfaat. Dibuat dengan VFP
Konversi Decimal ke Biner
cNil = VAL(Thisform.text1.Value) &&(isikan variable nilai desimal disini)
cHasil = ''
DO WHILE NOT cNil <= 0
cBiner = MOD(cNil,2)
cHasil = cHasil + ALLTRIM(STR(cBiner))
cNil = INT(cNil / 2)
ENDDO
&& disini hasil perhitungan disusun balik biar sesuai dengan kaidah biner
n = LEN(ALLTRIM(cHasil))
cBalik = ''
DO WHILE NOT n <= 0
cBalik = cBalik + SUBSTR(cHasil,n,1)
n = n - 1
ENDDO
Konversi Decimal ke Oktal
cNil = VAL(Thisform.text1.Value) && Masukkan nilai desimal di variable ini
cHasil = ''
DO WHILE NOT cNil <= 0
cBiner = MOD(cNil,8)
cHasil = cHasil + ALLTRIM(STR(cBiner))
cNil = INT(cNil / 8)
ENDDO
n = LEN(ALLTRIM(cHasil))
cBalik = ''
DO WHILE NOT n <= 0
cBalik = cBalik + SUBSTR(cHasil,n,1)
n = n - 1
ENDDO
Konversi desimal ke Heksa desimal
cNil = VAL(Thisform.text1.Value)
cHasil = ''
DO WHILE NOT cNil <= 0
cBiner = MOD(cNil,16)
DO CASE
CASE cBiner = 10
cBiner = 'A'
CASE cBiner = 11
cBiner = 'B'
CASE cBiner = 12
cBiner = 'C'
CASE cBiner = 13
cBiner = 'D'
CASE cBiner = 14
cBiner = 'E'
CASE cBiner = 15
cBiner = 'F'
OTHERWISE
cBiner = ALLTRIM(STR(cBiner))
ENDCASE
cHasil = cHasil + cBiner
cNil = INT(cNil / 16)
ENDDO
n = LEN(ALLTRIM(cHasil))
cBalik = ''
DO WHILE NOT n <= 0
cBalik = cBalik + SUBSTR(cHasil,n,1)
n = n - 1
ENDDO
Hasil disimpan dalam variable cBalik
Semoga bermanfaat.
Friday, January 18, 2008
Menghitung Umur
Beberapa waktu yang lalu saya berdiskusi dengan teman chatting di PTPN IX yang intinya membahas masalah bagaimana membuat script untuk menghitung umur seseorang diambil dari tanggal lahir sampai hari ini.
Inilah hasil dari diskusi itu, dibuat dengan Visual Foxpro, untuk bahasa yang lain silahkan sesuaikan sendiri.
***********************
* nTgl = variable tanggal lahir, ini bisa diambil langsung dari form, atau berupa parameter.
* silahkan tentukan sendiri
nDay = DAY(DATE()) - DAY(nTgl)
*****************
IF MONTH(DATE()) <= MONTH(nTgl)
nThn = (YEAR(DATE())-YEAR(nTgl))-1
nBln = MONTH(DATE())+12 - MONTH(nTgl)
ELSE
nThn = YEAR(DATE())-YEAR(nTgl)
nBln = MONTH(DATE())-MONTH(nTgl)
ENDIF
nDay = DAY(DATE()) - DAY(nTgl)
IF nDay < 0
DO CASE
CASE ALLTRIM(STR(MONTH(DATE())))$'1 3 5 7 8 10 12'
nDay = nDay + 31
CASE ALLTRIM(STR(MONTH(DATE())))$'4 6 9 11'
nDay = nDay + 30
CASE MONTH(DATE())=2 AND MOD(YEAR(DATE()),4)=0
nDay = nDay + 29
OTHERWISE
nDay = nDay + 28
ENDCASE
nBln = nBln - 1
ENDIF
DO CASE
CASE nBln < 0
nThn = nThn - 1
nBln = 0
CASE nBln = 12
nThn = nThn + 1
nBln = 0
ENDCASE
***********
* output dari program ini,
Semoga bermanfaat. Terimakasih mbak Tari atas diskusi ini.
Inilah hasil dari diskusi itu, dibuat dengan Visual Foxpro, untuk bahasa yang lain silahkan sesuaikan sendiri.
***********************
* nTgl = variable tanggal lahir, ini bisa diambil langsung dari form, atau berupa parameter.
* silahkan tentukan sendiri
nDay = DAY(DATE()) - DAY(nTgl)
*****************
IF MONTH(DATE()) <= MONTH(nTgl)
nThn = (YEAR(DATE())-YEAR(nTgl))-1
nBln = MONTH(DATE())+12 - MONTH(nTgl)
ELSE
nThn = YEAR(DATE())-YEAR(nTgl)
nBln = MONTH(DATE())-MONTH(nTgl)
ENDIF
nDay = DAY(DATE()) - DAY(nTgl)
IF nDay < 0
DO CASE
CASE ALLTRIM(STR(MONTH(DATE())))$'1 3 5 7 8 10 12'
nDay = nDay + 31
CASE ALLTRIM(STR(MONTH(DATE())))$'4 6 9 11'
nDay = nDay + 30
CASE MONTH(DATE())=2 AND MOD(YEAR(DATE()),4)=0
nDay = nDay + 29
OTHERWISE
nDay = nDay + 28
ENDCASE
nBln = nBln - 1
ENDIF
DO CASE
CASE nBln < 0
nThn = nThn - 1
nBln = 0
CASE nBln = 12
nThn = nThn + 1
nBln = 0
ENDCASE
***********
* output dari program ini,
Semoga bermanfaat. Terimakasih mbak Tari atas diskusi ini.
Subscribe to:
Posts (Atom)