Tidak dapat dipungkiri lagi ,mungkin MS OFFICE 2003 sudah sangat
familiar dengan kita... apalagi buat anak kuliahan kayak aku ini pasti
sering banget berhubungan dengan software buatan MIcrosoft yang namanya
'microsoft office' ini. mungkin kita sudah terbiasa dengan ms office
2003. padahal sekarang sudah keluar yang ver.2007 dan sudah mulai banyak
orang yang memakai aplikasi ini. mungkin diantara kalian ada yang
pernah ngalamin: waktu mau minta dok dari teman tapi ternyata tidak
dapat dibuka karena formatnya office 2007 tentu bingung kan mau diapain
tuh dokumen?????? satu satunya cara agar dok itu dapat dibuka di office
2003 ialah kita harus buka tuh dokumen di aplikasi office 2007 trus di
'save as' jadi format 2003. cara ini mudah kalau kita ada punya komputer
yang terinstal aplikasi ms office 2007. tapi bagaimana kalau kita sama
sekali tidak punya teman atau tempat yang terinstal office 2007? jangan
bingung! sebenarnya MICROSOFT selaku pembuat aplikasi ini sudah
memberikan solusinya nama aplikasinya 'FILE FORMAT CONVERTER' cari aja
lewat om "GOOGLE" atau langsung download aja dari www.microsoft.com
setelah kamu instal aplikasi ini di kompi kamu dijamin file yang
formatnya 2007 jadi bisa dibuka di office 2007. tapi jangan bingung
setelah instal aplikasi ini kamu tidak akan menemukan aplikasi ini di
program file. karena emang gitu!!!!!! jadi kamu cari aja dok yang 2007
trus coba buka deh di kompi kamu..... dijamin 100% mau....!!!!
Cara Masuk ke Windows XP yang Terpassword
Bagi anda yang lupa password komputer dengan OS windows XP, jangan khawatir! karena Shy SkaTeL akan memberikan cara untuk menerobos masuk ke windows XP.
Tapi!, buat yang hobinya 'jail' saya mohon untuk tidak berbuat jahil terlalu serius karena jahil itu nanti bisa berubah menjadi sebuah benci :). Pokoknya siapa saja boleh mempraktekkan cara ini, tapi harus tau diri ya :).
Sebenarnya Account Windows ini telah lama ditembus oleh seseorang yang telah menjadi 'Advanced Security', bahkan beliau telah membuat Software yang dapat menembus Banyak Versi WINDOWS termasuk windows Vista.
Tapi kali ini Shy SkaTeL hanya akan memberikan cara yang praktis, mudah dipahami, mudah dipraktekkan, dan bukan cracking, karena cara ini adalah 'default' dari Microsoft yang jarang diketahui orang awam.
Berikut caranya :
Pada saat anda masuk ke windows xp dan anda dimintai password dari account tersebut, tekan CTRL+ALT+DEL dua kali, lalu anda akan disajikan kotak dialog dengan 2 buah text box yang meminta nama account dan passwordnya.
Nah, disini ketikkan Administrator pada account, karena biasanya account tersembunyi ini jarang di edit oleh user dan kosongkan password pada textbox dan 'OK'.
Tara!..... anda telah masuk ke desktop dengan account administrator. Nah, untuk mengganti password dari account yang passwordnya tidak diketahui, anda dapat menggunakan Command Prompt atau DOS dengan :
Start>All Program>Accesoriess
atau
start>run>ketik 'cmd' dan enter
atau
tekan 'logo windows'+R dan ketikkan 'cmd' dan OK
Nah, tentunya dengan account berjabatan administrator anda dapat mengedit segala hal, anda memiliki kuasa untuk merubah apapun yang anda mau, namun yang menjadi kekurangan hanyalah pengetahuan anda tentang bagaimana cara untuk menggunakan kuasa itu, maka diperlukanlah 'pengetahuan', maka belajar dan membacalah agar mendapatkan pengetahuan itu. Jadi panjang ya omongannya ? :) cmd nya udah nunggu ya ^^. OK! ketikkan pada DOS 'net user [User yg passwordnya tidak diketahui] [Password Baru]' lalu ketika berhasil akan ada tulisan The Command Completed Successfully.
Gampang,kan? windows itu kan kata para hacker atau advanced user seperti kapal yang bocor dan ditambal dengan saringan.... jadi cara untuk memasukinya mudah, tetapi mudah juga dalam perusakkannya oleh para Cracker. Jadi Windows itu friendly buat newbie (gw juga masih pake windows :D), namun banyak mengalami masalah, maka dari itu bila anda sudah merasa Advanced, gunakanlah OS lain seperti Linux yang sudah banyak versi-versinya yang bertebaran secara gratis, dan banyak pula OS lain yang Gratis juga tentunya (ciri khas orang Indo nyari yang gratisan :D).
Belajar Command Prompt (echo)
Nah, kali ini Shy Skatel akan memberikan cara untuk menggunakan perintah echo dalam command prompt. Bagi yang belum belajar tentang command prompt mungkin dapat belajar tentang pengenalan command prompt yang telah saya posting sebelumnya.
Echo adalah perintah untuk mengeluarkan pesan pada DOS (Disk Operating System),
echo memiliki option atau pilihan "off" dan "on", cobalah buka command prompt l`lu ketikkan "echo off", lihatlah yang terjadi.
Yang terjadi adalah path yang berada dibelakang underscore akan menghilang, mungkin ini berguna apabila anda hafal dan ingat dimana anda berada, ini juga berguna apabila anda merekam kegiatan anda pada DOS untuk di publikasikan dan agar mereka tidak mengetahui identitas anda atau user yang anda gunakan. Untuk mengembalikannya seperti semula anda dapat menggunakan option "on", yaitu dengan mengetikkan "echo on" pada DOS, lalu semuanya kembali seperti semula.
Nah, kalau echo yang berguna untuk menampilkan pesan pada command prompt atau DOS, caranya anda dapat memberikan perintah atau command dengan format "echo [pesan]", contohnya ketik "echo Hello World!!!!"
maka akan tampil seperti berikut:
C:\echo Hello World!!!!
Hello World!!!!
C:\_
Belajar Command Prompt (Tampilan)
Belajar Command Prompt (Tampilan)
Cara BelajarSetelah Shy_SkateL lama tidak memberi postingan pada blog cara belajar ini, membuat blog ini terjun jauh dari halaman depan google T_T, mungkin karena kesibukan saya belajar dan bermain :D, tapi itu diperlukan karena saya baru saja selesai menghadapi "Exam". Nah, sekarang saya akan melanjutkan postingan saya tentang Command Prompt yang dulu sempat tertunda, mungkin saya akan segera memberikan cara belajar batch program, yang sangat berhubungan erat dengan command prompt. Kali ini saya akan memberikan cara untuk belajar merubah tampilan pada command prompt.
Okay!, kalau kamu bosan dengan tampilan Command Prompt yang begitu-begitu saja, saya akan memberikan sebuah cara untuk menghilangkan kebosanan itu. Dalam Command Prompt, anda dapat merubah warna, ukuran dan title dari command prompt itu sendiri, yaitu anda dapat merubahnya dengan memasuki menu properties pada command prompt, cara untuk masuk ke menu properties, anda dapat mengklik kanan pada title command prompt atau mengklik kanan command prompt pada taskbar. Anda juga dapat mengganti/merubah tampilan command prompt dengan cara menggunakan perintah CMD, berikut caranya :
Command : Color
Syntax
color xy
dimana xy merupakan sebuah value yang menunjukkan warna,
x = Background
y = Font
berikut daftar value warna :
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White
Jika anda menuliskan hanya satu value
color 2
maka secara default background akan menjadi hitam dan tulisan(font) menjadi berwarna hijau (2=green), atau apabila anda hanya mengetikkan "color" maka warna akan menjadi default, yaitu font color white dan background black.
Lalu bila anda ingin merubah title pada command prompt untuk menghilangkan kejenuhan atau hanya untuk menambah fantasy, anda dapat merubah title command prompt yang berada pada bagian atas command prompt (biasanya C:\windows/system32/cmd.exe), dengan cara menggunakan sebuah perintah :
command : title
Syntax
title Your title
Anda dapat merubah tulisan pada bagian "Your Title", karena disitu adalah command yang menunjukkan nama title yang kita inginkan.
Bila ukuran kotak dialog yang kecil dan dapat membuat bosan karena ukuran kotak dialog command prompt yang begitu-begitu saja, anda juga dapat merubah ukuran kotak dialog dari command prompt, yaitu dengan cara memberikan perintah :
Command : mode
Syntax
mode width,height
Dimana width adalah angka yang menunjukkan lebar, dan height yang menunjukkan tinggi sebuah kotak dialog command prompt.ex: mode 50,50
Nah, walaupun ini merupakan pengetahuan yang kecil, namun kelak anda pasti akan mengetahui bahwa, anda akan membutuhkan sesuatu yang kecil itu nanti.
Belajar Batch Program (Pemula)
Akhirnya bisa posting juga.. cape banget sekolah, semuanya pada numpuk.. tapi karena melihat pagerank yang dah update dan memberikanku nilai 2 =) dan juga trafik yang naik 2 kali lipat dari biasanya (walaupun gak ada postingan baru) membuat saya semakin semangat untuk balik ngeblog and posting lagi, apalagi Alexa ranknya down dr 400ribu ke 800rb --" ternyata alexa rank lebih menilai Update sebuah blog, ya.. mungkin karena saya menulis di meta tagnya update setiap 1 hari (hueheuheuhueh).
Okeh, setelah belajar command prompt (CMD), nggak asyik rasanya kalo nggak mengenal yang namanya Batch atau DOS (Disk Operating system), batch program ditulis dengan menggunakan script/command seperti di cmd, eksekusinya pun harus menampilkan kotak dialog command line (CMD), script ini cukup mudah dan dapat menjangkau sebagian luas wilayah windows, sehingga sering kali virus-virus komputer dibuat dengan batch program =).
Program Batch memiliki ekstensi .bat atau .cmd dan penulisan scriptnya dapat dilakukan di notepad/wordpad/winword. Kurang lebih sama seperti command prompt, hanya saja di dalam script terdapat command-command lain yang di khususkan unuk program batch, pemanggilan perintah dengan cara mengeksekusi file, menulis dan merencanakan perintah di dalam notepad, jadi perintah akan berjalan otomatis setelah file di klik.
Contoh :
echo Program batch pertama kuw =)
echo Biar asik, aku mau jail ah...
echo biar lebih semangat bikin program-program batchnya =)
pause>nul
shutdown -s -t 60 -c "Comment Ku disini.. Kalau mau Membatalkan perintah shutdown, buka cmd dan ketik perintah [shutdown -a]"
echo Komputer anda akan Mati dalam 1 menit, ikuti petunjuk untuk membatalkan perintah shutdown =)
pause>nul
exit
Nah, itu adalah script sederhana untuk Program batch, untuk dapat menyimpannya sebagai program batch, anda dapat meng-copy-paste script diatas ke "notepad" dan save as>ganti jenis file menjadi "all files">dan berinama file berakhiran .cmd
[contoh: buka notepad>copy-paste>file>save as>ganti text document menjadi "all files">berinama "Batch.bat">save dan eksekusi (double klik file).]
Mari kita bahas arti dari script tersebut,
#bagian yang diawali dengan "echo" merupakan sebuah penampil pesan kepada user (orang yang mengeksekusi file)
#Perintah "pause>nul" untuk mempause program hingga user menekan salah satu tombol keyboard.
#Perintah "Shutdown" untuk mematikan Komputer (lebih jelasnya ada di postingan tentang cmd)
#exit untuk keluar dari program
Maka Output dari program batch di atas adalah
C:\Documents and Settings\Shy's Friend.EKSAMANX7\Desktop>echo Program batch pertama kuw =)
Program batch pertama kuw =)
C:\Documents and Settings\Shy's Friend.EKSAMANX7\Desktop>echo Biar asik, aku mau jail ah...
Biar asik, aku mau jail ah...
C:\Documents and Settings\Shy's Friend.EKSAMANX7\Desktop>echo biar lebih semangat bikin program-program batchnya =)
biar lebih semangat bikin program-program batchnya =)
C:\Documents and Settings\Shy's Friend.EKSAMANX7\Desktop>pause1>nul
C:\Documents and Settings\Shy's Friend.EKSAMANX7\Desktop>shutdown -s -t 60 -c "Comment Ku disini.. Kalau mau Membatalkan perintah shutdown, buka cmd dan ketik perintah [shutdown -a]"
C:\Documents and Settings\Shy's Friend.EKSAMANX7\Desktop>echo Komputer anda akan Mati dalam 1 menit, ikuti petunjuk untuk membatalkan perintah shutdown =)
Komputer anda akan Mati dalam 1 menit, ikuti petunjuk untuk membatalkan perintah shutdown =)
C:\Documents and Settings\Shy's Friend.EKSAMANX7\Desktop>pause1>nul
C:\Documents and Settings\Shy's Friend.EKSAMANX7\Desktop>exit
Dan akan muncul jendela baru yang menghitung mundur waktu shutdown (untuk mematikannya ketikkan perintah "shutdown -a" di "cmd" atau di "run")
Anda dapat melihat hasil eksekusi program yang tidak rapi karena adanya path-path yang seharusnya tidak ada karena tidak diperlukan, untuk menghilangkan hal-hal yang tidak penting tadi, kita dapat menggunakan perintah "@echo off" pada awal program agar selama program berjalan tidak ada hal-hal yang berantakan, agar lebih rapi lagi.. kita gunakan perintah "cls" (clear screen) agar tampilan menjadi bersih.
Berikut contoh program yang telah direvisi :)
@echo off
echo Program batch pertama kuw =)
echo Biar asik, aku mau jail ah...
echo biar lebih semangat bikin program-program batchnya =)
pause>nul
cls
shutdown -s -t 60 -c "Comment Ku disini.. Kalau mau Membatalkan perintah shutdown, buka cmd dan ketik perintah [shutdown -a]"
echo Komputer anda akan Mati dalam 1 menit, ikuti petunjuk untuk membatalkan perintah shutdown =)
pause>nul
exit
Nah, coba eksekusi dan lihat hasilnya =).. tentunya akan lebih indah pada program ke 2, karena lebih mudah dilihat :)
kalau males nyoba bikin programnya(--"), nih aku liatin hasil dari eksekusi program ke 2
Program batch pertama kuw =)
Biar asik, aku mau jail ah...
biar lebih semangat bikin program-program batchnya =)
[akan di pause]
[cls akan menghapus bagian atas komentar ini]
Komputer anda akan Mati dalam 1 menit, ikuti petunjuk untuk membatalkan perintah shutdown =)
Belajar Batch Program (Variable)
Membuat Variable pada program batch, ya itulah yang kali ini akan saya bahas setelah kemarin saya posting tentang Belajar program batch untuk pemula yang isinya sangat dasar. Kali ini Kita akan membuat Variable, apa itu variable? apakah seperti pada matematika? ya, kurang lebih sama pada matematika, ibarat "x" yang kita cari, yang sebenarnya bernilai (misal) 10. Jadi variable adalah Tempat/tampungan nilai sementara pada memory ketika program dijalankan. Apakah sulit untuk dimengerti? mungkin akan sangat mudah dimengerti ketika anda mempraktekkannya langsung.
Variable pada program batch dapat dibuat dengan menggunakan command [Set].
Contoh :
Set variable=Nilai
Jika anda telah menggunakan command tersebut maka, anda telah membuat sebuah variable bernama "variable" dan bernilai "nilai", lalu apakah guna dari variable? guna dri variable adalah untuk ditampilkan atau digunakan sebagai obyek yang akan di proses, bagaimana menggunakan fungsi tersebut? Nah, untuk memanggil fungsi variable, kamu dapat menggunakan tanda [%], yaitu dengan mengapit nama variable dengan tanda [%] ( %variable% ).
Contoh :
echo Tadi Saya Mendapatkan %variable% ulangan Seratus...!!!!!!
Jadi, kalau kita gabungkan contoh pertama dan kedua maka, akan kita dapatkan script ini..
@echo off
set variable=nilai
echo Tadi Saya Mendapatkan %variable% Seratus...!!!!!
set variable=nilai
echo Tadi Saya Mendapatkan %variable% Seratus...!!!!!
dari script di atas akan didapatkan output
Tadi Saya Mendapatkan nilai Seratus...!!!!!
Nah, mungkin sekarang anda dapat mengerti arti dari variable yang sesungguhnya =), pada script tetulis " %variable% " namun, yang keluar adalah kata "nilai", nah %variable% merupakan variable yang bernilai "nilai" sehingga %variable%=nilai.
Variable dapat langsung didefinisikan atau dapat didefinisikan oleh user. Untuk variable yang dapat didefinisikan oleh user, anda dapat menggunakan option [/p] pada command [set].
Contoh :
@echo off
set /p var=
echo isi variable "var" adalah "%var%"
pause
set /p var=
echo isi variable "var" adalah "%var%"
pause
Misalkan User memasukkan variable var adalah "Batu", maka Output dari script tersebut adalah..
Batu_
isi variable "var" adalah "Batu"
Press any key to continue . . .
isi variable "var" adalah "Batu"
Press any key to continue . . .
Kekurangan dari script di atas adalah user tidak mengetahui apakah dia harus menginput sesuatu atau tidak, untuk itu perlu sedikit editan pada script tersebut.
@echo off
set /p "var=input>"
echo isi variable "var" adalah "%var%"
pause>nul
set /p "var=input>"
echo isi variable "var" adalah "%var%"
pause>nul
Maka Output akan menjadi
Input>Batu_
isi variable "var" adalah "Batu"
isi variable "var" adalah "Batu"
Nah, jadi lebih baik deh scriptnya :), lalu apa untungnya menggunakan variable? bukankah bisa langsung mengetik? hmmm.... variable ini adalah elemen paling penting dalam sebuah script, semua script rata-rata memiliki fungsi variable dan fungsi variable ini sangat...T sering digunakan oleh programmer untuk membuat script. Salah satunya adalah untuk penghitungan aritmatika.
Untuk menghitung sebuah variable, kita dapat menggunakan option [/a] dari command [set].
Contoh :
@echo off
set /a var=2+33
echo %var%
set /a var=2+33
echo %var%
Maka, outputnya adalah...
35
dari semua penjelasan yang saya berikan, kita dapat membuat sebuah script yang memuat semua penjelasan tadi.... :D
@echo off
set tampil=echo
%tampil% isi tampil adalah %tampil%
pause>nul
cls
%tampil% masukkan nama anda
set /p "nama=>>"
%tampil% terimakasih %nama% telah menggunakan program ini
pause>nul
%tampil% siapa nama orang yang anda kasihi?
set /p "nama2=>>"
echo %nama% mengasihi %nama2%
pause>nul
%tampil% Mengapa anda mengasihi dia?
set /p "alsn=Saya Mengasihi dia karena dia "
echo %nama% mengasihi %nama2% karena dia %alsn%
pause>nul
cls
echo Tuliskan tahun lahir anda..!
set /p "angka=>>"
set /a hsl=2009-%angka%
%tampil% Umur anda pada tahun 2009 adalah %hsl%
pause>nul
echo Terima kasih Telah menggunakan Program ini
pause>nul
echo Program ini akan musnah dalam 60 detik
shutdown -s -t 60 -c "batalkan Pemusnahan dengan perintah [shutdown -a]"
pause>nul
Belajar Batch Program ( IF )
If, adalah sebuah command yang sebagian besar ada disetiap bahasa program, dimana if adalah pengambil keputusan pada sebuah
kondisi, seperti pada variable yang diinput oleh user, lalu kita akan memberikan reaksi kepada user, sesuai dengan yang diinputkannya. If dalam program batch memiliki Option [exist], [not exist], [not], dimana syntaxnya adalah :
Nah, sebenarnya ada lagi syntax lain, yaitu Errorlevel, tapi berhubung saya belum mengusainya :P ya saa hanya akan memberikan tutorial di atas :D. Oh ya, dalam if perbandingan string adalah case sensitive jadi, kalo kata string1 dan string2 sama namun, besar hurufnya beda maka akan dianggap tidak sama, untuk mengatasi itu ada option [/i] yaitu untuk menghilangkan fungsi case sensitive tadi, kalau akan menambahkan [not] di depan if, maka syntaxnya adalah -[ IF /i not string1==string2 [command] ]-, dimana option [/i] berada tepat didepan IF.
[ IF string1==string2 [command] ]
Perintah ini akan membandingkan string1 dan string2, bila string1 sama dengan string2 maka command akan dijalankan namun, bila kedua string tidak sama maka, command tidak akan dijalankan :D. Contoh :
Output dari Script di atas adalah
Dalam program tersebut, pada pernyataan if yang kedua, perintah "Echo string1=string2" dijalankan, sedangkan pada If pertama tidak, mungkin anda dapat memahaminya setalah melihat output yang sebenarnya dari script tersebut.
-[If not string1=string2 [command] ]-
Ya, printah if kali ini adalah kebalikan dari perintah if sebelumnya yaitu, jika string1 dan string2 tidak sama maka, command akan dijalankan sedangakn jika string1 sama dengan string2 maka command tidak akan dijalankan. Contoh :
Output dari script diatas adalah
Sedikit saya rubah dari script pertama, script di atas menggunakan variable :D.
-[ IF EXIST [nama file] [command] ]-
Nah, perintah yang satu ini sedikit berbeda, karena pada perintah ini program tidak membandingkan string, malainkan melihat kepada file/folder yang ada dalam path file tersebut berada. Mungkin akan lebih jelas jika saya memberikan Contohnya :D, tapi sebelum mempraktekkan contoh ini, tolong buatkan sebuah folder (dengan nama terserah) yang didalamnya berisi folder bernama "a", folder "b", "c" , "d" dan "e". Contoh :
Output dari Script diatas "Jika Saya memasukkan Input [f]] adalah
Sedangkan pada Script diatas, "jika saya memasukkan input [a]" maka outputnya adalah
Jadi, Perintah IF exist akan mengecek file/folder yang ada pada "program batch tersebut berada". Coba taruh program batch diatas, pada folder yang lainnya, maka anda dapat mengecek keberadaanya sebuah file/folder pada folder tersebut.
-[ IF not EXIST [nama file] [command] ]-
Hhe... yg kali ini Kebalikannya juga :D, jadi kalo gak ada nama file/folder yang disebutkan, maka command akan dijalankan. Mau contoh..? ya udah, ni gw jejelin :D. Contoh :
Mau tau Outputnya? Coba aja Sendiri :P, kalo mau jail bikin sendiri yah... :D, soalnya ada yang mau dikerjain nih.. Tapi yang jelas postingan saya selajutnya tentang tutorial yang memantaBkan Perintah/command IF ini... hueheuehueh....
kalo udah bisa, Begh.... Mantab dah yang Hobi jail... =)
SUMBER: http://skatel-1chezone.blogspot.com/2009/08/belajar-batch-program-if.html
kondisi, seperti pada variable yang diinput oleh user, lalu kita akan memberikan reaksi kepada user, sesuai dengan yang diinputkannya. If dalam program batch memiliki Option [exist], [not exist], [not], dimana syntaxnya adalah :
IF string1==string2 [command]
IF not string1==string2 [command]
IF EXIST [nama file] [command]
IF not EXIST [nama file] [command]
Nah, sebenarnya ada lagi syntax lain, yaitu Errorlevel, tapi berhubung saya belum mengusainya :P ya saa hanya akan memberikan tutorial di atas :D. Oh ya, dalam if perbandingan string adalah case sensitive jadi, kalo kata string1 dan string2 sama namun, besar hurufnya beda maka akan dianggap tidak sama, untuk mengatasi itu ada option [/i] yaitu untuk menghilangkan fungsi case sensitive tadi, kalau akan menambahkan [not] di depan if, maka syntaxnya adalah -[ IF /i not string1==string2 [command] ]-, dimana option [/i] berada tepat didepan IF.
[ IF string1==string2 [command] ]
Perintah ini akan membandingkan string1 dan string2, bila string1 sama dengan string2 maka command akan dijalankan namun, bila kedua string tidak sama maka, command tidak akan dijalankan :D. Contoh :
@echo off
echo string1 adalah ikan
echo string2 adalah ayam
pause
cls
IF ikan==ayam echo String1 sama dengan String2
echo tidak ada tulisan di atas tulisan ini karena string1 tidak sama dengan string2
pause
echo string1 adalah ikan
echo srting2 adalah ikan
if ikan==ikan echo string1=string2
echo ada tulisan string1=string2 berarti command dalam if dijalankan
echo Eof
pause
echo string1 adalah ikan
echo string2 adalah ayam
pause
cls
IF ikan==ayam echo String1 sama dengan String2
echo tidak ada tulisan di atas tulisan ini karena string1 tidak sama dengan string2
pause
echo string1 adalah ikan
echo srting2 adalah ikan
if ikan==ikan echo string1=string2
echo ada tulisan string1=string2 berarti command dalam if dijalankan
echo Eof
pause
Output dari Script di atas adalah
string1 adalah ikan
string2 adalah ayam
Press any key to continue . . .
tidak ada tulisan di atas tulisan ini karena string1 tidak sama dengan string2
Press any key to continue . . .
string1 adalah ikan
srting2 adalah ikan
string1=string2
ada tulisan string1=string2 berarti command dalam if dijalankan
Eof
Press any key to continue . . .
string2 adalah ayam
Press any key to continue . . .
tidak ada tulisan di atas tulisan ini karena string1 tidak sama dengan string2
Press any key to continue . . .
string1 adalah ikan
srting2 adalah ikan
string1=string2
ada tulisan string1=string2 berarti command dalam if dijalankan
Eof
Press any key to continue . . .
Dalam program tersebut, pada pernyataan if yang kedua, perintah "Echo string1=string2" dijalankan, sedangkan pada If pertama tidak, mungkin anda dapat memahaminya setalah melihat output yang sebenarnya dari script tersebut.
-[If not string1=string2 [command] ]-
Ya, printah if kali ini adalah kebalikan dari perintah if sebelumnya yaitu, jika string1 dan string2 tidak sama maka, command akan dijalankan sedangakn jika string1 sama dengan string2 maka command tidak akan dijalankan. Contoh :
@echo off
set s1=ikan
set s1=ayam
echo string1 adalah ikan
echo string2 adalah ayam
pause
cls
IF not s1==s2 echo String1 tidak sama dengan String2
echo ada tulisan di atas tulisan ini karena string1 tidak sama dengan string2
pause
set s2=ikan
echo string1 adalah ikan
echo srting2 adalah ikan
if s1==s2 echo string1 tidak sama dengan string2
echo tidak ada tulisan 'string1 tidak sama dengan string2' berarti command dalam if tidak dijalankan
echo Eof
pause
set s1=ikan
set s1=ayam
echo string1 adalah ikan
echo string2 adalah ayam
pause
cls
IF not s1==s2 echo String1 tidak sama dengan String2
echo ada tulisan di atas tulisan ini karena string1 tidak sama dengan string2
pause
set s2=ikan
echo string1 adalah ikan
echo srting2 adalah ikan
if s1==s2 echo string1 tidak sama dengan string2
echo tidak ada tulisan 'string1 tidak sama dengan string2' berarti command dalam if tidak dijalankan
echo Eof
pause
Output dari script diatas adalah
string1 adalah ikan
string2 adalah ayam
Press any key to continue . . .
String1 tidak sama dengan String2
ada tulisan di atas tulisan ini jarena string1 tidak sama dengan string2
Press any key to continue . . .
string1 adalah ikan
srting2 adalah ikan
tidak ada tulisan 'string1 tidak sama dengan string2' berarti command dalam if tidak dijalankan
Eof
Press any key to continue . . .
string2 adalah ayam
Press any key to continue . . .
String1 tidak sama dengan String2
ada tulisan di atas tulisan ini jarena string1 tidak sama dengan string2
Press any key to continue . . .
string1 adalah ikan
srting2 adalah ikan
tidak ada tulisan 'string1 tidak sama dengan string2' berarti command dalam if tidak dijalankan
Eof
Press any key to continue . . .
Sedikit saya rubah dari script pertama, script di atas menggunakan variable :D.
-[ IF EXIST [nama file] [command] ]-
Nah, perintah yang satu ini sedikit berbeda, karena pada perintah ini program tidak membandingkan string, malainkan melihat kepada file/folder yang ada dalam path file tersebut berada. Mungkin akan lebih jelas jika saya memberikan Contohnya :D, tapi sebelum mempraktekkan contoh ini, tolong buatkan sebuah folder (dengan nama terserah) yang didalamnya berisi folder bernama "a", folder "b", "c" , "d" dan "e". Contoh :
@echo off
echo masukkan nama file/folder yang ingin dicek keberadaannya
set /p "fol=input>"
set ans=tidak ada
IF exist %fol% set ans=Ada
echo file/folder "%fol%" pada path ini [%ans%]
pause
echo masukkan nama file/folder yang ingin dicek keberadaannya
set /p "fol=input>"
set ans=tidak ada
IF exist %fol% set ans=Ada
echo file/folder "%fol%" pada path ini [%ans%]
pause
Output dari Script diatas "Jika Saya memasukkan Input [f]] adalah
masukkan nama file/folder yang ingin dicek keberadaannya
input>f
file/folder "f" pada path ini [tidak ada]
Press any key to continue . . .
input>f
file/folder "f" pada path ini [tidak ada]
Press any key to continue . . .
Sedangkan pada Script diatas, "jika saya memasukkan input [a]" maka outputnya adalah
masukkan nama file/folder yang ingin dicek keberadaannya
input>a
file/folder "a" pada path ini [ada]
Press any key to continue . . .
input>a
file/folder "a" pada path ini [ada]
Press any key to continue . . .
Jadi, Perintah IF exist akan mengecek file/folder yang ada pada "program batch tersebut berada". Coba taruh program batch diatas, pada folder yang lainnya, maka anda dapat mengecek keberadaanya sebuah file/folder pada folder tersebut.
-[ IF not EXIST [nama file] [command] ]-
Hhe... yg kali ini Kebalikannya juga :D, jadi kalo gak ada nama file/folder yang disebutkan, maka command akan dijalankan. Mau contoh..? ya udah, ni gw jejelin :D. Contoh :
@echo off
echo Masukkan Nama Folder yang ingin dibuat!!!!!!!
set /p "nm=input>"
if exist %nm% echo Foldernya sudah ada Boz... Cari nama yang laen ajah :D
if not exist %nm% md %nm%
pause
echo Masukkan Nama Folder yang ingin dibuat!!!!!!!
set /p "nm=input>"
if exist %nm% echo Foldernya sudah ada Boz... Cari nama yang laen ajah :D
if not exist %nm% md %nm%
pause
Mau tau Outputnya? Coba aja Sendiri :P, kalo mau jail bikin sendiri yah... :D, soalnya ada yang mau dikerjain nih.. Tapi yang jelas postingan saya selajutnya tentang tutorial yang memantaBkan Perintah/command IF ini... hueheuehueh....
kalo udah bisa, Begh.... Mantab dah yang Hobi jail... =)
SUMBER: http://skatel-1chezone.blogspot.com/2009/08/belajar-batch-program-if.html
Rahasia Aneh Google
Apakah kalian mengetahui rahasia-rahasia yang dimiliki Google???.
Apakah kalian tahu cara bagaimana melihat rahasia google??
Shy_SkateL kali ini akan meberitahukan cara melihat rahasia-rahasia aneh yang dimiliki google.
Google memiliki feature-feature rahasia yang jarang diketahui oleh orang-orang.
Berikut ini adalah cara rahasia untuk melihat rahasia Google :
Sebelum memulai melihat rahasia google mari ikuti caranya
Pertama buka di Tab baru Google.com lalu....
1. Masukkan kata googoth pada kolom pencarian, lalu klik tombol Saya Lagi Beruntung. Lalu lihatlah rahasianya
2. Masukkan kata 10 TI SKATEL pada kolom pencarian, lalu klik tombol Saya Lagi Beruntung. Lihatlah betapa dahsyat yang di tampilkan Google :)).
3. Masukkan kata ewmew fudd pada kolom pencarian, lalu klik tombol Saya Lagi Beruntung. Kalian akan segera dibawa masuk ke tampilan google dengan teks versi tokoh Elmer Fudd dari Warner Bros.
4. Masukkan kata xx-klingon pada kolom pencarian, lalu tekan tombol Saya Lagi Beruntung. Kalian akan segera dibawa masuk ke tampilan google dengan tampilan dewa :)).
5. Masukkan kata google bsd pada kolom pencarian, lalu tekan tombol Saya Lagi Beruntung. Tapilan Google akan berubah menjadi yng kalian inginkan.
6. Masukkan kata google linux pada kotak teks, lalu tekan tombol Saya Lagi Beruntung. Coba perhatikan ikon google yang biasa menjadi ikon linux.
7. Isikan kata google easter egg pada kotak teks, lalu tekan tombol Saya Lagi Beruntung. Kalian akan disuguhi dengan tampilan mesin pencari google dengan sebuah game menangkap telur paskah, dimana temen2 bisa mengendalikan gerak kelinci tersebut.
Hehehe.... Sebenarnya fungsi tombol Saya Lagi Beruntung adalah google akan langsung memasukkan anda ke website dimana dalam kata pencarian itu website tersebut ada di urutan pertama.
SUMBER: http://skatel-1chezone.blogspot.com/2009/04/rahasia-aneh-google.html -
Keanehan pada Windows
Banyak pengguna komputer, telah menggunakan 'windows' sebagai Operating System-nya, ini disebabkan windows dibuat cukup friendly, praktis, dan mudah digunakan oleh user sang pengguna komputer, namun dalam dalam 'windows' sendiri masih memiliki 'bug' atau ke tidak sempurna'an.
Ada beberapa keanehan yang muncul ketikan kita memasukkan atau memerintahkan PC untuk bekerja di OS 'windows', nah, kali ini Shy_SkaTeL akan memberikan cara-cara untuk melihat ke-anehan yang cukup unik.
Berikut ini adalah cara-cara melihat keanehan tersebut :
1> Buat sebuah folder dengan nama con
2> Buka notepad dengan mengklik 'start>run>notepad' atau 'start>all program>accesoriess>notepad'. Lalu tuliskan di dalam notepad Bush hid the facts lalu save, tutup notepad, lalu buka kembali.
3> Buka microsoft word, kemudian ketik =rand (200, 99), lalu tekan 'Enter'.
4> Buka notepad ketik Q33N ganti font menjadi 'wingdings' size 72 , dan lihat apa yang terjadi..
Q33N adalah salah satu serial number dari pesawat peristiwa wtc serangan 11 september
5> Buka notepad, lalu ketik bana nas are goods
atau
• nigr hid the facts
• test hid the facts
• spic hid the facts
• paki hid the facts
• shit hid the facts
6> Buat sebuah folder dengan nama LPT1
atau
• LPT2
• LPT3
• LPT4
• LPT5
• LPT6
• LPT7
• LPT8
• LPT9
• COM1
• COM2
• COM3
• COM4
• COM5
• COM6
• COM7
• COM8
• COM9
• PRN
• AUX
• NUL
Hehehehe.... unik kan?, kalian tau gak knp bisa jadi begitu?
Berikut penjelasannya :
Ini masalah notepad yg plin-plan ngikutin standar unicode
(set karakter internasional), seharusnya ada preambule utf-32 yg disave saat pertama
tapi karena semua karakter adalah karakter ANSI jadi dia tidak save preambulenya,
mengasumsikan kalo dokumennya tidak perlu karakter chinese. waktu dibuka, mungkin
ada huruf2 yang punya representasi binernya sama dengan preambule utf-32, jadi dia
anggap itu karakter chinese. save2 berikutnya akan menambahkan preambule utf-32.
soal kenapa bisa ngebentuk kata2... ini pelajaran buffer exploit buat si programmer.
penjelasan lainnya, mungkin memang ada konspirasi ? who knows..
Sumber : Snutz.us
wimax
WiMAX (Worldwide Interoperability for Microwave Access) adalah sebuah
tanda sertifikasi untuk produk-produk yang lulus tes cocok dan sesuai
dengan standar IEEE 802.16. WiMAX merupakan teknologi nirkabel yang
menyediakan hubungan jalur lebar dalam jarak jauh.
WiMAX merupakan teknologi broadband yang memiliki kecepatan akses yang tinggi dan jangkauan yang luas. WiMAX merupakan evolusi dari teknologi BWA sebelumnya dengan fitur-fitur yang lebih menarik. Disamping kecepatan data yang tinggi mampu diberikan, WiMAX juga membawa isu open standar.
Dalam arti komunikasi perangkat WiMAX diantara beberapa vendor yang berbeda tetap dapat dilakukan (tidak proprietary). Dengan kecepatan data yang besar (sampai 70 MBps), WiMAX layak diaplikasikan untuk ‘last mile’ broadband connections, backhaul, dan high speed enterprise.
Yang membedakan WiMAX dengan Wi-Fi adalah standar teknis yang bergabung di dalamnya. Jika WiFi menggabungkan standar IEEE 802.11 dengan ETSI (European Telecommunications Standards Intitute) HiperLAN sebagai standar teknis yang cocok untuk keperluan WLAN, sedangkan WiMAX merupakan penggabungan antara standar IEEE 802.16 dengan standar ETSI HiperMAN.
Standar keluaran IEEE banyak digunakan secara luas di daerah asalnya, Amerika, sedangkan standar keluaran ETSI meluas penggunaannya di daerah Eropa dan sekitarnya. Untuk membuat teknologi ini dapat digunakan secara global, maka diciptakanlah WiMAX. Kedua standar yang disatukan ini merupakan standar teknis yang memiliki spesifikasi yang sangat cocok untuk menyediakan koneksi berjenis broadband lewat media wireless atau dikenal dengan BWA.
SUMBER:http://go-indonesia.co.cc/sekilas-tentang-wimax#more-71
WiMAX merupakan teknologi broadband yang memiliki kecepatan akses yang tinggi dan jangkauan yang luas. WiMAX merupakan evolusi dari teknologi BWA sebelumnya dengan fitur-fitur yang lebih menarik. Disamping kecepatan data yang tinggi mampu diberikan, WiMAX juga membawa isu open standar.
Dalam arti komunikasi perangkat WiMAX diantara beberapa vendor yang berbeda tetap dapat dilakukan (tidak proprietary). Dengan kecepatan data yang besar (sampai 70 MBps), WiMAX layak diaplikasikan untuk ‘last mile’ broadband connections, backhaul, dan high speed enterprise.
Yang membedakan WiMAX dengan Wi-Fi adalah standar teknis yang bergabung di dalamnya. Jika WiFi menggabungkan standar IEEE 802.11 dengan ETSI (European Telecommunications Standards Intitute) HiperLAN sebagai standar teknis yang cocok untuk keperluan WLAN, sedangkan WiMAX merupakan penggabungan antara standar IEEE 802.16 dengan standar ETSI HiperMAN.
Standar keluaran IEEE banyak digunakan secara luas di daerah asalnya, Amerika, sedangkan standar keluaran ETSI meluas penggunaannya di daerah Eropa dan sekitarnya. Untuk membuat teknologi ini dapat digunakan secara global, maka diciptakanlah WiMAX. Kedua standar yang disatukan ini merupakan standar teknis yang memiliki spesifikasi yang sangat cocok untuk menyediakan koneksi berjenis broadband lewat media wireless atau dikenal dengan BWA.
SUMBER:http://go-indonesia.co.cc/sekilas-tentang-wimax#more-71
CARA MAKAI GOOGLE BUZZ
Google Buzz sekarang sudah mulai
ramai dibicarakan, karena jejaring sosial satu ini di sinyalir akan
menjadi tandingan terberat Facebook dan Twitter.
Mampu tidak nya Google Buzz menandinggi facebook dan twitter hanyalah waktu yang akan membuktikannya.
Bila pada artikel terdahulu M.A memberikan Cara Daftar Google Buzz, maka sekarang M.A akan memberikan Cara Penggunaan Google Buzz tahap demi tahap.
Berikut panduan cara penggunaan Google Buzz.
1. Login ke akun GMAIL anda atau ke http://www.google.com/buzz
2. Klik Try Buzz in Gmail
3. Muncul gambar seperti dibawah ini
4. Klik Buzz dan akan muncul halaman Google Buzz seperti dibawah ini
5. Lihat gambar diatas. Tampilan tidak jauh berbeda dengan di Facebook.
Anda bisa menuliskan status anda pada kotak status diatas dan klik Poskan untuk mempublikasikan status anda.
Bila status anda hanya ingin dilihat oleh orang-orang tertentu maka pilih opsi Pribadi, sedangkan bila status anda ingin diketahui oleh orang banyak, maka anda pilih opsi Umum.
SUMBER:http://marcellinoagatha.blogspot.com/2010/02/cara-menggunakan-google-buzz.html
Mampu tidak nya Google Buzz menandinggi facebook dan twitter hanyalah waktu yang akan membuktikannya.
Bila pada artikel terdahulu M.A memberikan Cara Daftar Google Buzz, maka sekarang M.A akan memberikan Cara Penggunaan Google Buzz tahap demi tahap.
Berikut panduan cara penggunaan Google Buzz.
1. Login ke akun GMAIL anda atau ke http://www.google.com/buzz
2. Klik Try Buzz in Gmail
3. Muncul gambar seperti dibawah ini
4. Klik Buzz dan akan muncul halaman Google Buzz seperti dibawah ini
5. Lihat gambar diatas. Tampilan tidak jauh berbeda dengan di Facebook.
Anda bisa menuliskan status anda pada kotak status diatas dan klik Poskan untuk mempublikasikan status anda.
Bila status anda hanya ingin dilihat oleh orang-orang tertentu maka pilih opsi Pribadi, sedangkan bila status anda ingin diketahui oleh orang banyak, maka anda pilih opsi Umum.
SUMBER:http://marcellinoagatha.blogspot.com/2010/02/cara-menggunakan-google-buzz.html
CARA MENDAFTRAR GOOGLE BUZZ
Cara Mendaftar Google Buzz
Google Buzz adalah layanan terbaru dari google yang memungkinkan kita menggunakan akun google layaknya twitter atau facebook.
Google Buzz mungkin saja bisa menyanggi facebook dan twitter, hal ini bisa dilihat dari diletakkan nya Google Buzz pada Gmail yang secara nyata telah mempunyai jumlah pengguna terbanyak didunia.
M.A pribadi telah mendapatkan fitur Google Buzz ini secara otomatis, karena khusus bagi pengguna aktif gmail, www.blogger.com, dan Google Talk akan mendapatkan fitur Google Buzz secara langsung.
Bagi anda yang belum mendapatkannya, berikut cara pendaftaran Google Buzz.
1. Klik Google Buzz
2. Klik
3. Klik Buzz seperti gambar dibawah
4. Lalu akan muncul halaman Google Buzz Seperti gambar dibawah ini.
5. Klik Edit. Lihat gambar dibawah.
6. Pada jendela Edit Your Profile isi dan lengkapi data di About me, A little personality dan Link (Khusus bagi yang mempunyai blog bisa memasukkan link blog anda atau link lainnya )
7. Klik Save Changes
Setelah itu anda akan mendapatkan Url Profile Buzz anda
Selamat Mencoba
Google Buzz mungkin saja bisa menyanggi facebook dan twitter, hal ini bisa dilihat dari diletakkan nya Google Buzz pada Gmail yang secara nyata telah mempunyai jumlah pengguna terbanyak didunia.
M.A pribadi telah mendapatkan fitur Google Buzz ini secara otomatis, karena khusus bagi pengguna aktif gmail, www.blogger.com, dan Google Talk akan mendapatkan fitur Google Buzz secara langsung.
Bagi anda yang belum mendapatkannya, berikut cara pendaftaran Google Buzz.
1. Klik Google Buzz
2. Klik
3. Klik Buzz seperti gambar dibawah
4. Lalu akan muncul halaman Google Buzz Seperti gambar dibawah ini.
5. Klik Edit. Lihat gambar dibawah.
6. Pada jendela Edit Your Profile isi dan lengkapi data di About me, A little personality dan Link (Khusus bagi yang mempunyai blog bisa memasukkan link blog anda atau link lainnya )
7. Klik Save Changes
Setelah itu anda akan mendapatkan Url Profile Buzz anda
Selamat Mencoba
You must read:
SUMBER:http://marcellinoagatha.blogspot.com/2010/02/cara-mendaftar-google-buzz.html
ALGORITMA DAN PEMROGRAMAN 2 : VARIABEL STATIS DAN VARIABEL DINAMIS
SEbenARNYA blogger vyze di kampUs dapat tugas "memasukan data ke variabel dinamis (for to do)" tapi malas ngerjakan. wkwkwkw
nah ini aku ada dapat bahan materinya untuk pascal, mungkin bermanfaat untuk sobat gaptek yang pengen belajar pascal ato bagi sobat Vyze yang ambil jurusan ti..
so..
SILAHKAN DINIKMATI
ALGORITMA DAN PEMROGRAMAN 2
Oleh: Anis Cherid, MTI
VARIABEL STATIS DAN VARIABEL DINAMIS
Dalam
berbagai contoh pada modul sebelumnya, penggunaan variabel pointer
adalah penggunaan yang sia-sia. Mengapa demikian? Karena nilai suatu
variabel dapat diambil atau diubah secara langsung dengan menggunakan
nama variabel yang bersangkutan, tanpa perlu menggunakan variabel
pointer. Dalam berbagai contoh pada modul sebelumnya, variabel yang
dipergunakan adalah variabel statis, yaitu variabel yang memiliki 3 ciri penting, yang dapat diuraikan sebagai berikut:
- Variabel statis memiliki nama. Pemberian nama dilakukan dalam bagian deklarasi variabel (misalnya: var a, b:integer).
- Variabel statis menempati bagian memori yang disebut data segment, sehingga tidak bisa dihapus dari memori begitu program dieksekusi atau tidak bisa diubah ukuran elemennya jika variabel tersebut bertipe array.
- Variabel statis menempati bagian memori yang disebut data segment yang dibatasi ukurannya oleh compiler (maksimum 64 Kbyte).
Dengan demikian, ukuran maksimal dari sebuah variabel terstruktur (array dan record) yang bisa dideklarasikan dalam data segment (Turbo Pascal versi 5.5 dan 7.0) adalah 65.535 byte (64 Kilobyte). Sebuah array bertipe integer, maksimum hanya bisa terdiri dari 32.767 elemen (65.535/2 byte), sementara sebuah array bertipe real, maksimum hanya bisa terdiri dari 10.922 elemen (65.535/6 byte) . Jumlah elemen array yang bisa dibuat akan semakin sedikit jika tipe data yang disimpan dalam masing-masing elemen adalah tipe record. Misalnya jika kita mendeklarasikan variabel di bawah ini:
type
TMahasiswa = record
NIM : array [1..10] of '0'..'9';
Nama : string [40];
IPK : real;
end;
var arsipMahasiswa : array [1..maxNum] of TMahasiswa;
maka nilai maksimum konstanta maxNum adalah 1137. Dengan kata lain, hanya 1137 elemen dari array dengan tipe data record
di atas yang bisa dibuat. Jika kita membuat sebuah variabel terstruktur
di atas sebanyak 1137 elemen, maka tidak tersedia lagi tempat untuk
mendeklarasikan variabel lainnya.
Berbagai
keterbatasan ini bisa diatasi jika variabel terstruktur yang kita
butuhkan tidak kita tempatkan secara statis di dalam data segment, tetapi kita letakkan secara dinamis di dalam bagian memori yang disebut dengan heap. Memori heap adalah memori yang masih tersedia setelah program kita dimuat ke dalam memori dan alokasi memori untuk pendeklarasian variabel sudah dilakukan. Penempatan secara dinamis mengandung arti:
- Kita bisa membuat dan menghapus variabel yang kita inginkan kapan saja, meskipun program sudah dieksekusi.
- Ruang yang tersedia untuk pembuatan variabel menjadi jauh lebih banyak, karena yang menjadi batas bukanlah data segment, melainkan besarnya memori heap.
Kedua
butir di atas mengimplikasikan bahwa lebih beragam variabel yang bisa
kita masukkan dalam program yang kita buat, baik dari segi jenis dan
struktur maupun dari segi ukurannya. Dengan demikian, jika kita
diharuskan membuat program yang memiliki tugas-tugas yang lebih
kompleks, yaitu program yang kemungkinan besar akan membutuhkan jenis,
struktur dan ukuran data yang lebih beragam, tentu kita harus menggunakan variabel dinamis. Penggunaan variabel dinamis misalnya mutlak diperlukan jika kita harus membuat program yang menggunakan struktur data dinamis (misalnya linked-list). Contoh lain program yang membutuhkan variabel dinamis adalah program yang secara intensif membaca, mengolah dan menulis data ke dalam media penyimpanan sekunder (misalnya program pengolah kata dan basis data) atau program yang secara intensif berkomunikasi dengan komputer lain melalui sebuah saluran komunikasi [SHT00].
CONTOH 1
Di bawah ini adalah contoh mengalokasikan variabel dinamis di dalam memori heap:
program Contoh_1_Alokasi_Variabel_Dinamis;
type
string4=string[4];
var
alamatString:^string4;
begin
new(alamatString);
{Mengalokasikan sebuah variabel dinamis bertipe string...}
{...dalam memori heap. Variabel ini tidak memiliki nama...}
{...dan posisinya dalam memori ditunjuk oleh variabel...}
{...pointer alamatString.}
{Setelah statement di atas dilaksanakan, ruang kosong...}
{...dalam memori heap berkurang.}
alamatString^:='Budi';
{Mengisi lokasi memori yang sudah dialokasikan dengan...}
{...'Budi', atau dengan kata lain, mengisi variabel dinamis...}
{...yang ditunjuk pointer alamatString dengan 'Budi'.}
writeln(alamatString^);
{Menampilkan nilai variabel dinamis yang ditunjuk oleh...}
{...variabel pointer alamatString}
dispose(alamatString);
{Menghapus alamat yang dialokasikan, sehingga kondisi...}
{...memori heap kembali seperti sebelum dibuatnya...}
{...variabel dinamis}
end.
Untuk membebaskan memori yang sudah dialokasikan sehingga bisa digunakan untuk menyimpan variabel dinamis lainnya, kita menggunakan instruksi,
dispose (alamatString);
Seteleh statement dispose di atas dilaksanakan, blok memori heap yang sebelumnya dialokasikan untuk variabel dinamis yang ditunjuk oleh variabel pointer alamatString akan dikembalikan kepada sistem operasi, sehingga ukuran memori heap yang tersedia kembali seperti semula (yaitu seperti sebelum ada variabel dinamis yang dialokasikan). Namun demikian, alamat memori yang ditunjuk oleh variabel pointer alamatString, masih tetap alamat memori yang telah dialokasikan sebelumnya. Untuk memperjelas, perhatikan ilustrasi di bawah ini:
1. Kondisi memori heap sebelum alokasi variabel dinamis:
x+3
x
kosong
alamatString
HEAP
DATA SEGMENT
2. Kondisi memori heap sesudah pelaksanaan statement new(alamatString);
x+3
x
kosong
alamatString
HEAP
DATA SEGMENT
3. Kondisi memori sesudah pelaksanaan statement alamatString^:='Budi';
u
x+3
x
i
d
B
kosong
alamatString
HEAP
DATA SEGMENT
4. Kondisi memori sesudah pelaksanaan statement dispose(alamatString);
u
x+3
x
i
d
B
kosong
alamatString
HEAP
DATA SEGMENT
Variabel pointer alamatString
masih menunjuk alamat memori yang sebelumnya dialokasikan, meskipun
alamat tersebut sudah dianggap kosong oleh sistem operasi. Kekacauan
bisa muncul jika kita tidak mengosongkan nilai variabel pointer alamatString, seperti terlihat dalam contoh di bawah ini.
CONTOH 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
program Contoh_2_Nilai_Pointer_Tetap_Menunjuk_Alamat_Lama;
type
TName = string[20];
var
My_Name : ^TName;
My_Age : ^integer;
Her_Name : ^TName;
begin
My_Name := nil;
Her_Name := nil;
New (My_Name);
New (My_Age);
My_Name^ := 'Budi Raja';
My_Age^ := 15;
writeln ('My_Name^ = ',My_Name^);
{output: My_Name^ = Budi Raja}
writeln ('My_Age^ = ', My_Age^);
{output: My_Age^ = 15}
dispose(My_Name);
dispose(My_Age);
New (Her_Name);
Her_Name^ := 'Wati Ratu';
writeln('Her_Name^ = ', Her_Name^);
{output: Her_Name^ = Wati Ratu}
writeln('My_Name^ = ', My_Name^);
{output: My_Name^ = Wati Ratu}
My_Name^ := 'Budi SalahAlamat';
writeln ('Her_Name^ = ', Her_Name^);
{output: Her_Name^ = Budi SalahAlamat}
dispose (Her_Name);
end.
Dalam program di atas, meskipun memori yang dialokasikan untuk pointer My_Name sudah dibebaskan (dispose) pada baris ke 20, pointer My_Name masih menunjuk ke
alamat memori yang telah dibebaskan tersebut. Jika kita mengalokasikan
memori untuk pointer Her_Name dan mengisinya dengan sebuah nilai
(baris 23 – 24), maka memori yang dialokasikan untuk pointer Her_Name
adalah memori yang sebelumnya dialokasikan untuk My_name. Jika kita
berusaha menampilkan nilai dalam memori yang ditunjuk oleh pointer
My_Name (baris 27), maka nilai yang ditampilkan adalah nilai dari
Her_Name^. Dalam contoh di atas, Turbo Pascal tetap mengijinkan kita mengisi nilai ke
dalam memori yang ditunjuk oleh pointer My_Name (baris 28) dan bisa
menimbulkan kekacauan dalam program maupun dalam memori (dikenal dengan
istilah memory corruption). Karena itu, jadikanlah kebiasaan untuk mereset nilai pointer menjadi NIL,
jika memori yang dialokasikan untuk sebuah pointer sudah dibebaskan.
Dengan demikian, sebaiknya kita menyisipkan sebuah baris tambahan
sehingga baris 20 dan 21 menjadi sebagai berikut:
dispose(My_Name);
My_Name:= NIL;
dispose(My_Age);
My_Age:= NIL;
Variabel pointer yang memiliki nilai NIL,
tidak menunjuk alamat memori yang mana pun, sehingga jika kita
berusaha mengisi atau menampilkan isi memori yang ditunjuk oleh
variabel pointer tersebut (misalnya dengan instruksi My_Name:='Budi'), maka komputer akan menampilkan pesan kesalahan. Dengan demikian, mengisi variabel pointer yang memorinya sudah dibebaskan (dispose) dengan NIL, akan mencegah terjadinya memory corruption.
Variabel dinamis tidak memiliki nama dan dirujuk oleh variabel pointer yang digunakan sebagai parameter dari prosedur new.
Jika karena satu dan lain hal kita ingin menggunakan variabel pointer
tersebut untuk kebutuhan yang lain, kita harus menyimpan nilainya
dalam variabel pointer lainnya agar jangan sampai kita kehilangan jejak
terhadap alamat dalam memori heap yang menyimpan variabel dinamis tersebut. Selain itu, jangan lupa untuk melakukan dispose terhadap variabel dinamis
yang sudah tidak dibutuhkan lagi, agar memori yang sudah dialokasikan
bisa dipergunakan untuk kepentingan yang lain. Contoh berikut akan
memperjelas konsep ini.
CONTOH 3
program Heap_Overflow;
type
TName = array [1..65535] of char;
var
My_Name : ^TName;
i : word;
begin
i:=0;
while (true) do
begin
inc(i);
writeln(i);
new(My_Name);
end;
end.
Dalam
program di atas, kita melakukan loop yang tidak ada akhirnya dan pada
setiap loop kita mengalokasikan memori sebanyak 65.535 byte di dalam
memori heap untuk menyimpan karakter string. Setiap kali alokasi dibuat dengan statement new, pointer My_Name akan menunjuk ke
lokasi memori yang baru dialokasikan. Kita akan kehilangan jejak atas
posisi memori yang sebelumnya, meskipun lokasi memori tersebut tetap
dialokasikan oleh sistem operasi dan tidak bisa digunakan untuk
kepentingan lainnya. Peristiwa hilangnya bagian memori heap dari kendali program dikenal dengan istilah memory leak.
POINTER DAN ARRAY DINAMIS
Pointer bisa dipergunakan untuk mengalokasikan array secara dinamis di dalam memori heap. Keuntungan dari menggunakan array yang bersifat dinamis adalah jumlah elemennya bisa diubah-ubah sesuai kebutuhan. Di bawah ini adalah program Pascal yang dipergunakan untuk meminta operator memasukkan jumlah elemen array yang diinginkan. Kemudian program akan mengalokasikan array
dengan jumlah elemen sebanyak yang diminta operator dan mengisi
masing-masing elemen dengan nilai acak. Selama program berjalan, ukuran
array yang dialokasikan dalam memori heap berubah-ubah sesuai yang diminta operator.
Program_Pascal_Mengalokasikan_Array_Dinamis;
uses wincrt;
var
num,index:integer;
p, ptemp:^integer;
label keluar_loop;
begin
repeat
write('Berapakah jumlah data yang akan dimasukkan? ');
readln(num);
if num=0 then goto keluar_loop;
{*****
Mengalokasikan array secara dinamis
sebanyak #num# elemen
*****}
getmem(p, sizeof(integer) * num);
for index:= 0 to num-1 do begin
{*****
Menjadikan ptemp menunjuk alamat memori dari
masing-masing index
*****}
ptemp := ptr(seg(p^), ofs(p^) + index*sizeof(integer));
{*****
Mengisi alamat memori yang ditunjuk ptemp
dengan bilangan acak
*****}
ptemp^:= random(1000)+1;
end;
for index:=0 to num-1 do begin
{*****
Menjadikan ptemp menunjuk alamat memori dari masing-
masing index dan menampilkan isi dalam memori
*****}
ptemp := ptr(seg(p^), ofs(p^) + index*sizeof(integer));
writeln('Nilai ke-',index+1,': ',ptemp^);
end;
writeln('Sisa memori heap sesudah alokasi array: ', memavail);
writeln('Sisa memori heap maksimal yang bisa ',
'dialokasikan: ', maxavail);
{***** Membebaskan kembali memori yang sudah dialokasikan *****}
freemem(p, sizeof(integer) * num);
writeln;
until num<=0;
keluar_loop:
end.
Jika program di atas diimplementasikan menggunakan Bahasa C, hasilnya adalah demikian:
/* Program_C_Mengalokasikan_Array_Dinamis */
#include
#include
#include
#include /* dibutuhkan untuk fungsi alokasi memori */
void main(){
int num, index, *p;
randomize();
do {
printf("Berapakah jumlah data yang akan dimasukkan? ");
scanf("%d",&num);
if (num==0) break;
/*****
Mengalokasikan array secara dinamis
sebanyak #num# elemen
*****/
p = (int *) malloc (sizeof(int) * num);
for (index=0; index
/*****
Mengisi alamat memori yang ditunjuk ptemp
dengan bilangan acak
*****/
p[index] = random(1000)+1;
}
for (index=0; index
printf("Nilai ke-%d: %d\n", index+1, p[index]);
}
printf("Sisa memori heap sesudah alokasi array: %u",
coreleft());
/*****
Membebaskan kembali memori yang
sudah dialokasikan
*****/
free(p);
printf("\n");
} while (num>0);
}
Dalam contoh program berikut ini proses pengalokasian array secara dinamis juga diikuti dengan proses penyalinan isi elemen array dari array yang lama ke array yang baru dialokasikan. Berikut program dan penjelasannya [SHT00]:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include
#include
#define NUM 3
int main(){
double nilai, total=0, *data=NULL, *temp=NULL;
int jumlah=0, ukuran=NUM, i;
data = (double *) malloc (sizeof(double)*ukuran);
do {
printf("Masukkan sebuah nilai (atau 0 untuk keluar): ");
scanf("%lf",&nilai);
if (nilai==0) break;
if (jumlah==ukuran){
ukuran = ukuran * 2;
temp = (double *) malloc(sizeof(double)*ukuran);
if (temp==NULL){
printf("Tidak tersedia ruang dalam memori heap: "
"nilai masukan dibatalkan\n");
break;
} else {
printf("Memori tambahan berhasil dialokasikan. "
"ukuran = %d\n",ukuran);
for (i=0;i
temp[i]=data[i];
}
free(data);
data=temp;
}
}
total+=nilai;
data[jumlah++]=nilai;
} while (1);
if (nilai!=0){
printf("Tidak tersedia ruang dalam memori:"
"nilai masukan dibatalkan\n");
printf("Nilai %f tidak disimpan\n",nilai);
}
printf("Jumlah %d masukan adalah %f\n",jumlah,total);
if (jumlah==0) return 0;
printf("No. Transaksi Nilai\n\n");
for (i=0;i
printf( "%3d. %5.2f\n",i,data[i]);
}
return 0;
}
PENJELASAN CARA KERJA PROGRAM
Ketika baris 7 selesai dilaksanakan:
data = (double *) malloc (sizeof(double)*ukuran);
dalam memori heap akan dialokasikan array untuk menampung nilai bertipe double sebanyak 3 elemen. Mengapa 3 elemen? Karena nilai ukuran=3.
Alamat elemen ke-0 dalam memori heap ditunjuk oleh variabel pointer data, sehingga gambar logis dari kondisi memori dapat dilihat dalam gambar di bawah ini:
data[2]
data[0]
data
data[1]
Ketika loop do/while dilaksanakan:
Putaran 1:
Baris 10 dilaksanakan: scanf("%lf",&nilai)
Diasumsikan bahwa operator memasukkan nilai 20, sehingga nilai=20
Dengan demikian kondisi pada baris 11: if (nilai==0)tidak terpenuhi, sehingga instruksi break tidak dilaksanakan.
Demikian pula kondisi pada baris 12: if (jumlah==ukuran) tidak terpenuhi karena jumlah=0 dan ukuran=3.
Pelaksanaan program berlanjut ke baris 29: total+=nilai
Dengan demikian, total=20.
Baris 30: data[jumlah++]=nilai artinya data[0]=20 dan jumlah=1
Selanjutnya loop do/while akan memasuki putaran 2.
Putaran 2:
Baris 10 dilaksanakan: scanf("%lf",&nilai)
Diasumsikan bahwa operator memasukkan nilai 10, sehingga nilai=10
Dengan demikian kondisi pada baris 11: if (nilai==0)tidak terpenuhi, sehingga instruksi break tidak dilaksanakan.
Demikian pula kondisi pada baris 12: if (jumlah==ukuran) tidak terpenuhi karena jumlah=1 dan ukuran=3.
Pelaksanaan program berlanjut ke baris 29: total+=nilai
Dengan demikian, total=30.
Baris 30: data[jumlah++]=nilai artinya data[1]=10 dan jumlah=2
Selanjutnya loop do/while akan memasuki putaran 3.
Putaran 3:
Diasumsikan operator memasukkan nilai 30, sehingga:
nilai=30 total=60 data[2]=30 jumlah=3
Sesudah putaran 3 selesai dilaksanakan, kondisi memori menjadi seperti gambar di bawah ini:
20
data[2]
data[1]
data[0]
data
30
10
Perhatikan bahwa sesudah putaran 3 ini, array yang ada dalam memori heap sudah terisi semua elemennya. Bagaimana cara program menyelesaikan masalah jika operator memasukkan sebuah nilai lagi? Jawabannya terdapat dalam putaran 4.
Putaran 4:
Diasumsikan operator memasukkan nilai 40, sehingga: nilai=40
Pada putaran 4 ini, kondisi pada baris 12 if (jumlah==ukuran)terpenuhi, sehingga pelaksanaan program akan berlanjut ke baris 13:
ukuran=ukuran*2 sehingga ukuran=6
Baris 14:
temp = (double *) malloc(sizeof(double)*ukuran)
Jika diasumsikan bahwa program berhasil mengalokasikan tempat dalam memori heap untuk array bertipe double sebanyak 6 elemen, maka kondisi dalam baris 15 if (temp==NULL) tidak akan terpenuhi dan kondisi memori akan berubah menjadi:
20
data[2]
data[1]
data[0]
data
30
10
temp
temp[1]
temp[0]
temp[2]
temp[4]
temp[5]
temp[3]
Selanjutnya program akan berlanjut ke baris 20 dan pada layar komputer ditampilkan tulisan:
Memori tambahan berhasil dialokasikan. ukuran = 6
Selanjutnya, pada baris 22 s/d 24 dilaksanakan for loop yang bertujuan menyalin semua isi elemen array data ke dalam array temp, sehingga setelah loop ini selesai dilaksanakan, kondisi memori menjadi:
20
data[2]
data[1]
data[0]
data
30
10
temp
temp[1]
temp[0]
30
10
20
temp[2]
temp[4]
temp[5]
temp[3]
Selanjutnya, pada baris 25 free(data) akan menyebabkan memori yang dialokasikan untuk array data dihapus dan pada baris 26 data=temp akan menyebabkan pointer data menunjuk alamat yang juga ditunjuk oleh pointer temp. Hal ini dapat digambarkan sebagai berikut:
20
data[2]
data[1]
data[0]
data
30
10
temp
temp[1]
temp[0]
30
10
20
temp[2]
temp[4]
data[5]
data[3]
temp[3]
temp[5]
data[4]
data[2]
data[1]
data[0]
Pelaksanaan program berlanjut ke baris 29: total+=nilai
Dengan demikian, total=100.
Baris 30: data[jumlah++]=nilai artinya data[3]=30 dan jumlah=4
Selanjutnya loop do/while akan memasuki putaran 5.
Putaran 5:
Baris 10 dilaksanakan: scanf("%lf",&nilai)
Diasumsikan bahwa operator memasukkan nilai 0, sehingga nilai=0
Dengan demikian kondisi pada baris 11: if (nilai==0) terpenuhi, sehingga instruksi break dilaksanakan dan loop do/while berakhir.
Kondisi pada baris 32: if (nilai!=0) tidak terpenuhi, sehingga pelaksanaan progam berlanjut ke baris 37.
Pada baris 37, program akan menampilkan tulisan:
Jumlah 4 masukan adalah 100
Kondisi pada baris 37: if (jumlah==0) tidak terpenuhi, sehingga instruksi return 0 tidak dilaksanakan.
Pelaksanaan progam berlanjut ke baris 39 dan kemudian melaksanakan for loop dari baris 40 s/d 42 sehingga pada layar komputer ditampilkan tulisan:
No. Transaksi Nilai
0. 20
1. 10
2. 30
3. 40
REFERENSI:
[SHT00] Victor Shtern. 2000. Core C++: A Software Engineering Approach. Prentice Hall.
Langganan:
Postingan (Atom)