Belajar Jaringan - Belajar Pemrograman

Beranda Tentang Kontak
Tampilkan postingan dengan label pemrograman. Tampilkan semua postingan
Tampilkan postingan dengan label pemrograman. Tampilkan semua postingan

Kamis, 15 Desember 2022

Belajar Database SQLite3 Dari Console Windows 10

Belajar Database SQLite3 Dari Console Windows 10 - Belajar sqlite3 dari dos (dari console windows 10). Sebutan lainnya belajar database SQLite dari dos command. Tulisan Belajar Database SQLite3 Dari Console Windows 10 hanya untuk pemula seperti saya, yang sudah expert dibidang ini silahkan mengabaikannya. Saya buat tulisan Belajar Database SQLite3 Dari Console Windows 10 untuk mendokumentasikan apa yang sedang saya coba-coba pelajari. 

Dari usia saya yang mengingjak kepala empat mungkin banyak yang menilai bahwa saya sudah tidak layak lagi mempelajari hal-hal seperti ini, namun bagi saya siapapun harus belajar, berapapun usianya. Soal itu digunakan untuk apa itu urusan lain, intinya adalah belajar dan pelajari apapun yang menarik untuk ketahui. 

Demikian basa-basi tentang pembukaan tulisan ini. Mari kita masuk ke pembicaraan SQLitenya. Sqlite yang saya gunakan adalah versi sqlite-jdbc-3.23.1 untuk yang ingin mencoba bisa mendownload versi ini atau versi lainnya dari web SQLite Download  dan pilih atau langsung klik link ini https://www.sqlite.org/2022/sqlite-tools-win32-x86-3400000.zip

Sesudah itu extract dan masukkan didalam sebuah folder di drive yang anda suka, pada tulisan saya ini saya menggunakan drive D dengan folder BELAJARJAVA. 

Kemudian masuk kedalam console (dos command), terserah lewat mana yang anda bisa dan masuk kedalam directory (folder yang anda buat untuk menyimpan sqlite hasil extractan sebelumnya);

Untuk mempermudah pelajaran ini, ada baiknya jika belum tahun, belajar sedikit perintah-perintah dasar dos, dan itu sangat mudah untuk di pelajari, beberapa perintah yang bisa kita gunakan (ketikkan di console dos) seperti cd (gunanya untuk keluar masuk dari directory(folder)) , mkdir (gunanya untuk membuat direktori(folder)), cls (untuk membersihkan layar) dan masih banyak command yang lain, namun untuk pelajaran SQL cukup pelajari bagaimana menggunaka perintah cd di dos

Cara masuk kedalam cmd lewat windows explorer langsung kedalam directory sqlite yang kita gunakan, tanpa harus menghapal perintah dos adalah dengan cara berikut:

1. Buka windows explore dan masuk kedalam folder sqlite yang anda extraxt sebelumnya. Sebagai contoh saya mengextract (unzip) file sqlite kedalam directory BELAJARJAVA di drive D: maka saya pilih directory tersebut sehingga kelihatan isinya. Seperti gambar berikut. 


windows explorer windows 10 sqlite

2. Kemudian klik bagian address bar, sehinga muncul seperti berikut. 

Cara masuk sqlite dari windows explorer

Perhatikan yang dilingkari, tulisan belajarjava sesuai dengan folder yang digunakan. 

3. Kemudian ketikkan cmd di belakang nama drivenya seperti berikut saya lingkaricara masuk sqlite from windows explorer


Lalu Enter.

Sehingga anda akan disuguhkan layar dos kira-kira seperti berikut:

dos sqlite

Jika tampilannya sudah begini sekarang kita tinggal main sqlitenya. Mempelajari perintah-perintah dasar sqlite, seperti create, insert, update, delete dan masih banyak lagi, tapi sebagai pelajar menguasai ketiga perintah ini sudah cukup lumayanlah. 

Sekarang kita coba membuat sebuah database didalam sqlitenya dengan perintah sederhana, database yang akan kita buat kita sebut saja namanya misalnya, db_siswa database ini kita buat dari console dos dengan perintah. 

sqlite3 db_siswa

dan haislnya sekan seperti gambar sqlite berikut:

cara buat database pada sqlite

Database sudah dibuat dengan nama databasenya db_siswa, sekarang kita coba cek, apakah benar ada database tersebut didalam sqlite kita. Perintah untuk mengecek database pada sqlite  dengan mengetikkan .database (jangan lupa sebelum tulisan database ada tanda titik dan wajib diketikkan) lalu enter. dan muncul tampilannya seperti terlihat pada layar sqlite berikut:

lihat database yang di create pada sqlite

Terlihat bahwa file database db_siswa ada directory belajarjava drive D:\ kalau tampilan ini tidak ada, ada kemungkinan anda salah ketik perintah. dan coba diulangi dari create database sebelumnya.

Selanjutnya cara membuat table pada db_siswa (cara membuat table pada database sqlite3) untuk table ini kita buat sederhana saja, misalnya yang akan kita buat adalah field (kolom) NIS (nomor induk siswa), kemudian nama_siswa, kemudian alamat_siswa. Singkatnya kolom dan parameter yang kita gunakan pada tabel rinciannya berikut:

nama tabel yang kita buat, misalnya : data_siswa
Field(coloumn) NIS : type data integer, not null, primary key(kunci utama)
Field(coloumn) nama_siswa : type data varchar, panjang karakter 50, not null
Field(coloumn) alamat_siswa : type data varchar, panjang karakter 50, not null

Seperti itu parameter yang kita gunakan dan akan kita masukkan kedalam db_siswa pada sqlite. 

ketikkan perintah pada sqlite 

create table data_siswa(  

saat mengetikkan sampai buka kurung ini tekan enter agar kursor pindah kebawah, tujuannya agar tidak memanjang kekanan)

lalu ketikkan 
 NIS integer not null primary key,
 nama_siswa varchar(50) not null,
 alamat_siswa varchar(50));


hasilnya seperti gambar berikut 
insert data ke table sqlite
create table data_siswa sqlite3




*Jangan lupa agar ketikan nis turun kebawah lakukan/tekan enter;

Jika ketikannya telah selesai pada alamat_siswa varchar(50)); lalu enter dan tidak ada error, maka table untuk menampung data siswa telah selesai dibuat. Namun sebelumnya kita pastikan table data_siswa tersebut ada atau tidak, dengan perintah cek table sqlite berikut 

ketikkan .table  lalu enter jangan lupa tanda titik didepan tulisan table  Hasilnya terlihat seperti berikut:

cek table pada sqlite



atau bisa melihat bentuk skemanya tabel yang kita buat jikalau dibutuhkan dengan perintah .schema

Table sudah dibuat, langkah berikutnya insert (mamasukkan data kedalam table sqlite

Misalnya saya ingin memasukkan data siswa sebagai berikut: 

nis    : 2929292929

nama: Yahya Ayyash

alamat : Jakarta 

Maka perintah pada sqlite untuk memasukkan data tersebut kedalam database bisa kita buat seperti berikut: 

artinya insert kedalam tabel data_siswa nilai 29292929 pada kolom NIS, Yahya Ayyash pada kolom nama_siswa, Jakarta pada kolom alamat_siswa.

atau bisa juga dengan perintah seperti berikut tapi sedikit lebih panjang. 

insert into data_siswa ('NIS','nama_siswa','alamat_siswa')values('29292929','Yahya Ayyash','Jakarta');

Untuk menambah data, bisa dilakukan dengan cara yang sama, namun jika sudah mahir, untuk menginput data kedalam table sqlite (data_siswa) beberapa data sekaligus bisa digunakan cara seperti ini. 

insert into data_siswa values ('19','citra','medan'),('20','syafa','bogor'),('21','Adila','bekasi');

Untuk mempermudah pengetikan setelah tulisan values dan tanda koma di lakukan enter, agar baris turun kebawah. Seperti berikut. 

input banyak data sekali enter ke table sqlite


Untuk melihat isi database, kita bisa gunakan perintah 

Select * from data_siswa;

melihat isi tabel sqlite

Pada tampilan tersebut, isi datanya terlihat kurang enak di mata, dan agar repot memahaminya data ada di kolom apa. Agar tampilan lebih rapi, kita bisa beri perintah pada sqlite 

.hader on

.mode column 

Kemudian kita lakukan lagi perintah select * from data_siswa; untuk melihat isi tablenya dengan lebih rapi. 

merapihkan tampilan tabel sqlite

Untuk tulisan selanjutnya kita akan coba update dan hapus. Kedepannya akan lebih mudah setelah cara yang jelimet ini terlewati. 


Jumat, 18 November 2022

Pemrograman Java : Membuat Pembaca File Baris Demi Baris Java

Pemrograman Java : Membuat Pembaca File Baris Demi Baris Java - Mohon maaf saya sedang belajar tulisan Pemrograman Java : Membuat Pembaca File Baris Demi Baris Java saya buat untuk dokumentasi saja bukan bermaksud menggurui, dan beberapa code yang ada disini saya ambil dari berbagai sumber di internet. 


mengolah file menjadi salah satu topik dan pembelajaran penting dalam mempelajari java, dan tentu sangat keren sekali jika kita bisa mengolah file menggunakan java (untuk pemula dalam pemrograman java tentunya, untuk para master tentu itu hal yang tidak berarti apa-apa ).

Pemrograman Java : Membuat Pembaca File Baris Demi Baris Java ditulis setelah belajar membaca file dengan dua cara berbeda dan sumber beda, dan masih mencoba memahami perbedaan kedua code tersebut meskipun menghasilkan output yang sama, dan sama-sama bisa membaca file txt baris demi baris. 

Penulisan codenya saya gunakan blueJ, dan pada dasarnya penulisan java menggunakan editor apapun codenya tetap sama dan tidak berbeda, jadi meski kita menggunakan IDE lain dalam membuat code java, intinya tetap sama. 

import java.io.*;

class BelajarInputStreamText
{
    // instance variables - replace the example below with your own
    public static void main(String [] args) {
        String x;
        
        try {
            FileInputStream fis = new FileInputStream("baca.txt");
            DataInputStream dis= new DataInputStream(fis);
            
            System.out.println("Isi Data Adalah");
            int i=dis.read();
            
            while(i != -1){
                System.out.print((char)i);
                i=dis.read();
            }
            dis.close();
            
            
            }catch (IOException e) {
                System.err.println("Error");
            }
    }
}

Code pembaca file baris demi baris java diatas saya pikir menggunakan pembaca character demi carackter, yang di ulang sedemikian rupa menggunakan perulangan while, dimana variable i, mengambil isi dari file yang di baca sebelumnya menggunakan class FileInputStream dan class DataInputStream java.

Code pembaca file java baris demi baris yang kedua adalah hasil coba-coba saya setelah membaca beberapa artikel. Berikut code Pemrograman Java : Membuat Pembaca File Baris Demi Baris Java. 

Dan Hasil keduanya tampilan outpunya menurut saya sama, namun pada bagian ini menggunakan class readline untuk membaca baris-demi barisnya, sementara code sebelumnya mengambil data per charakter untuk ditampilkan. 

Berikut codenya 

import java.io.*;

class BelajarInputStreamText
{
    // instance variables - replace the example below with your own
    public static void main(String [] args) {
        String x;
        
        try {
            FileInputStream fis = new FileInputStream("baca.txt");
            DataInputStream dis= new DataInputStream(fis);
            
            System.out.println("Isi Data Adalah");
            while((x=dis.readLine()) !=null){
              System.out.println(x);
            }
            dis.close();
            
            
            }catch (IOException e) {
                System.err.println("Error");
            }
    }
}

Demikian sedikit dokumentasi tentang code java agar membaca isi file txt baris demi baris dan menampilkannya di console. Untuk penjelasan baris-demi baris code ini mungkin para jagoan di pemrograman bisa menjelaskan prosesnya secara detail dan mendalam. Karena saya sendiri juga sedang mendalaminya memahaminya, bagaimana code ini bekerja.



Rabu, 16 November 2022

Program Bilangan Ganjil Genap Array Pascal

Program Bilangan Ganjil Genap Array Pascal - membuat program untuk memilah angka bilangan ganjil genap cukup mudah, tentunya jangan sampai lupa dasarnya, yaitu penggunaan beberapa operasi pada pemrograman pascal seperti penggunaan if, if else, for, dan yang lainnya. 


Pemrograman pascal dalam menentukan bilangan ganjil atau bilangan genap menggunakan type data array sehingga maksimum bilangan yang bisa kita input di consol pascal sebanyak maksimal 100 angka. 

Dimana untuk mendeklarasikan array tersebut dapat di lihat pada bagian code berikut: 

angka:array[1..100] of integer;

Artinya pascal diperintahkan untuk membentuk sebuah type media penyimpanan data bernama angka dengan type data array sebanyak maksimal 100.

Pada code berikutnya: 

b,i,jlhgen,jlhgan,ganjil,genap:integer;

Arti code ini kita mengeset atau memerintahkan pascal untuk membuat media penyimpanan juga berupa variable b,i, jlhgen, jlhganjil, ganjil, genap dengan type integer:

Variabel-variable tersebut digunakan untuk menyimpan banyaknya data yang diinput, kemudian jumlah angka ganjil, jumlah angka genap, angka ganjil dan genap yang dipisahkan. 

Code pascal selanjunya 

write('Masukkan Banyak data yg diinput: ');readln(b);

Fungsi code ini untuk membuat berapa kali/ berapa banyak inputan, yang inputan tersebut akan di simpan pada variable b, kemudian di olah sedemikian pada code berikut dalam bentuk perulangan:

for i:=1 to b do
  begin
  writeln('Angka ke-',i,' adalah: ',angka[i]);
  if angka[i] mod 2=0 then
    begin
      jlhgen:=jlhgen+angka[i];
      genap:=genap+1;
     
    end
   else
     begin
       jlhgan:=jlhgan+angka[i];
       ganjil:=ganjil+1;
      
     end;

Pada dasarnya inti dari pemrograman pascal menentukan bilangan ganjil genap dan jumlah atau banyaknya bilangan ganjil dan genap ada pada code ini. Yang akan di lakukan perulangan dimana i diberi nilai satu sampai ke b (banyaknya/kali angka yang diinput pada baris sebelumnya). 

Kemudian di minta inputan angka pertama dan seterusnya yang akan disimpan di array[sebanyakperulangan]; 

Angka yang di inputkan di bagi dengan 2 jika sisanya adalah nol maka angka tersebut adalah angka genap, sedangkan sebaliknya angka tersebut adalah angka ganjil. 

Pada kode berikutnya 

writeln('banyak angka genap: ',genap);
  writeln('Hasil Jumlah angka Genap: ',jlhgen);
  writeln('Hasil Jumlah angka Ganjil: ',jlhgan);
  writeln('banyak angka ganjil: ',ganjil);
  writeln('Hasil jumlah semua angka adalah: ',jlhgan+jlhgen);
  writeln('Banyak Angka yg di Input adalah: ',b);

Bagian ini tidak telalu penting sebenarnya didalam logika dan belajar pemrograman, karena beris-baris tersebut hanya berfungsi untuk mencetak atau membuat hasil keluaran dari proses code sebelumnya. Sehingga kita bisa melihat berapa banyak angka ganjil dan berapa banyak angka genap dilayar komputer.

Berikut code bilangan ganjil genap dengan pascal. 

program input_array;
uses crt;
var
angka:array[1..100] of integer;
b,i,jlhgen,jlhgan,ganjil,genap:integer;

begin
clrscr;
  write('Masukkan Banyak data yg diinput: ');readln(b);
  for i:=1 to b do
  begin
  write('Angka ke-',i,' adalah: ');readln(angka[i]);
  end;
  writeln('-------------------------------------------');
  writeln(' ');
 
  for i:=1 to b do
  begin
  writeln('Angka ke-',i,' adalah: ',angka[i]);
  if angka[i] mod 2=0 then
    begin
      jlhgen:=jlhgen+angka[i];
      genap:=genap+1;
     
    end
   else
     begin
       jlhgan:=jlhgan+angka[i];
       ganjil:=ganjil+1;
      
     end;
  end;
  writeln('banyak angka genap: ',genap);
  writeln('Hasil Jumlah angka Genap: ',jlhgen);
  writeln('Hasil Jumlah angka Ganjil: ',jlhgan);
  writeln('banyak angka ganjil: ',ganjil);
  writeln('Hasil jumlah semua angka adalah: ',jlhgan+jlhgen);
  writeln('Banyak Angka yg di Input adalah: ',b);
 
 
  readln;
end.

Program Bilangan Ganjil Genap Array Pascal - Menentukan bilangan ganjil atau bilangan genap dengan bahasa pemrograman pascal - mencari ganjil genap.


Jumat, 11 November 2022

Cetak Output Pascal Berbaris Tidak Turun Kebawah

Cetak Output Pascal Berbaris Tidak Turun Kebawah - judulnya rasanya aneh ya. Tapi tak apa-apa biar unik sendiri, terkadang sebagai pemula bermain-main dengan codingan, banyak kesalahan, bahkan sampai bikin pusing terkadang kita mencari masalahnya dimana, masalah yang cukup sering saya alami salah satunya ketika membuat print out di consol pascal, cetakannya tidak turun dibawah (enter), tetapi malah berbaris ke arah kanan. 


Seperti Screenshoot gambar diatas, tulisan nama barang dan banyak barang berada sejajar, seharusnya tulisan tersebut berjejer kebawah biar terlihat rapi. 

Masalah ini sebenearnya sangat mudah mengatasinya. Coding tampilan diatas seperti terlihat pada potongan code pascal berikut ini: 

begin 
clrscr; 
write('Masukkan Nama Pelanggan : ');read(nama); 
write('Masukkan Banyak Data : ');readln(n); 
for i:=1 to n do 
begin 
 write('Nama Barang : ');read(sw[i].nabar); 
 write('Banyak Barang : ');read(sw[i].banyak); 
 write('Harga Satuan : ');read(sw[i].hasat); 
 sw[i].jlh:=sw[i].banyak * sw[i].hasat; 
 writeln(); 
end;

Untuk mengatasi permasalahan diatas, kita bisa menambah atau mengubah code read menjadi readln, 

Sehingga hasilnya telihat seperti code berikut: 



Kejadian-kejadian aneh pada pascal seperti Cetak Output Pascal Berbaris Tidak Turun Kebawah pasti banyak yang mengalaminya, atau mungkin error-error lain yang sebenarnya bisa disebabkan oleh kesalahan ketik seperti tadi. 

Untuk lengkap code swalayan tersebut diatas bisa di lihat pada code dibawah ini 



program swalayan;
uses crt;

Type Rswalayan=record
     jlh:longint;
     banyak:longint;
     nabar:string;
     hasat:longint;
     total:longint;
end;

var sw:array[1..100]of Rswalayan;
i,n:integer;
nama:string;
pembayaran, kembalian : longint;

begin
clrscr;
write('Masukkan Nama Pelanggan  : ');read(nama);
write('Masukkan Banyak Data     : ');readln(n);
for i:=1 to n do
begin
  write('Nama Barang    : ');readln(sw[i].nabar);
  write('Banyak Barang  : ');readln(sw[i].banyak);
  write('Harga Satuan   : ');readln(sw[i].hasat);
  sw[i].jlh:=sw[i].banyak * sw[i].hasat;
  writeln();
end;
clrscr();
gotoxy(10,10);write('-----------------------------------------------------------------------');
gotoxy(30,11);write('TOKO TIP TOP':20);
gotoxy(10,12);write('-----------------------------------------------------------------------');
gotoxy(10,13);write('Nama Pelanggan  : ',nama);
writeln();
gotoxy(10,14);write('No');
gotoxy(15,14);write('Nama Barang ');
gotoxy(35,14);write('Banyak Barang ');
gotoxy(52,14);write('Harga Satuan ');
gotoxy(68,14);write('Jumlah');

for i:=1 to n do
begin
gotoxy(10,15+i);write(i);
gotoxy(15,15+i);write(sw[i].nabar);
gotoxy(35,15+i);write(sw[i].banyak);
gotoxy(55,15+i);write(sw[i].hasat);
gotoxy(68,15+i);write(sw[i].jlh);

sw[i].total:=sw[i].total + sw[i].jlh;
end;
gotoxy(10,16+i);write('-----------------------------------------------------------------------');
gotoxy(10,17+i);write('Total              : ',sw[i].total);
gotoxy(10,18+i);write('Pembayaran         : ');readln(pembayaran);
gotoxy(10,19+i);write('Kembalian          : ',pembayaran-sw[i].total);
readln;
end.

Tampilan bahasa pemrograman toko dengan pascal diatas jadi seperti ini



Senin, 10 Oktober 2022

Menggunakan Type Data Record Pada Pascal

Menggunakan Type Data Record Pada Pascal - Menggunakan type data record pada pascal untuk menampung beberapa inputan. Misalnya kita ingin menampung beberapa inputan menggunakan satu buah variable. 

Record sekilas mirip array, dan pada penggunaan berikut juga saya menggunakan array untuk melakukannya. 

Kode Menggunakan Record pascal dibawah ini sederhana, sekedar bahan saya mencoba saja, untuk penambahan variable lain selain nama silahkan di modifikasi di bagian type.

berikut kode penggunaan type data record pada pascal:

Penggunaan Type Data Record Pascal


program cobaRecord;

uses crt;

type rcMhs=record

       nama : string[25];

end;

var

mhs:array[1..100] of rcMhs;

i,j:integer;


begin

clrscr;


write('Masukkan Jumlah Data : ');readln(i);

for j:=1 to i do

begin

  writeln('Data Mahasiswa Ke-',j);

  with mhs[j] do

  begin

       write('Nama : '); readln(nama);


  end;

end;

writeln('===============================================================');

writeln('Nama ');

for j:=1 to i do

begin

    with mhs[j] do

    begin

       writeln(nama);

    end;

end;

readln;

end. 

Senin, 13 Desember 2021

Mencari Hasil Pemangkatan menggunakan Looping Pada Pascal

Mencari Hasil Pemangkatan menggunakan Looping Pada Pascal - membuat perulangan dalam pascal banyak caranya, demikian juga untuk mendapatkan hasil pemangkatan suatu angka banyak cara yang bisa digunakan, termasuk menggunakan  kalkulator, software excell atau trik-trik lainnya. 

Tulisan berikut merupakan dokumentasi, bagaimana mencari pangkat suatu angka menggunakan perulangan pada Mengenal pemrograman pascal

Pemangkatan dapat diartikan bahwa perkalian sebuah nilai sebanyak nilai pangkatnya. Untuk code pascal dalam mencari suatu pangkat menggunakan looping perulangan misalanya seperti berikut:

program menghitung_pangkat;


begin
clrscr;
write('Masukkan angka yang akan dipangkatkan: '); readln(angka1);
write('Masukkan pangkat bilangan: ');readln(pangkat);
hasil:=1;
for i:=1 to pangkat do
begin
hasil:=hasil*angka1;

end;
writeln('Hasil dari ',angka1,'Pangkat ',pangkat,' adalah: ',hasil);
end.
Untuk menjalankan program Cetak output pascal turun kebawah tidak berbaris ini, saya menggunakan software freepascal dan editor sublime, gratisan tentunya bukan yang crack apalagi yang beli. Semoga Mencari Hasil Pemangkatan menggunakan Looping Pada Pascal. Hasil menjalankan progam pascal mencari pangkat suatu bilangan seperti berikut:

Cara menggunakan perulangan untuk mencari pangkat sebuah angka pada pascal


Rabu, 03 November 2021

Pascal : Mengenal Pemrograman Pascal

Pascal : Mengenal Pemrograman Pascal, pascal adalah salah satu bahasa pemrograman tertua yang pernah ada, konon nama pascal ini diambil dari seorang ahli matematika dari prancis, bernama Blaise Pascal. Nama tersebut di gunakan sebagai penghermatan atas jasanya pada dunia pengetahuan, terlebih kepada ilmu matematik dan philosofi. Pascal di buat sekitar tahun 1968 dan dipublikasikan sekitar tahun 1970, oleh pembuatnya bernama Niclaus Wirth. ''

Bahasa pemrograman pascal bahasa yang di jalankan secara prosedural, yang artinya baris demi baris program ini di eksekusi/dijalankan oleh kompiler. Bahasa ini cukup mudah untuk dipelajari, bahkan mungkin sangat mudah dibanding dengan bahasa pemrograman lainnya, meski bahasa pascal sudah sangat amat tua, namun bahasa ini menjadi bahasa pemrograman wajib di sekolah - atau di kampus-kampus.Karena memang awal mula dibuatnya pascal juga untuk tujuan membantu didunia pendidikan.

Gambar Blaise Pascal Ahli Matematika Gambar blaise_pascal sumber: https://www.britannica.com/biography/Blaise-Pascal

Bahasa pemrograman pascal bisa berjalan di banyak operating system, seperti misalnya windows, mac-os, atau bahkan bisa dijalankan di unix/linux. Pada artikel Pascal : Mengenal Pemrograman Pascal saya kan menggunakan mungkin beberapa text editor seperti bawaan dari freepascal, lazarus atau mungkin bahkan menggunakan editor sublime.

Sebelum kita memulai belajar pascal, sebaiknya kita download dahulu aplikasi atau compiler dari pascal itu sendiri, anda bisa menggunakan turbo-pascal, atau freepascal, dan pada totorial ini saya menggunakan freepascal dan editor bawaannya yang berwarna biru, sebagai pemula dalam hal pemrograman ada baiknya gunakanya saja dahulu editor bawaan dari freepascal, oh iya jika kamu tidak memiliki komputer sedang kamu ingin belajar pemrograman pascal, atau kamu mau menyelesaikan tugas sekolah pemrograman pascal tapi tidak memiliki laptop atau komputer maka kamu bisa menggunakan handphone untuk belajar pemrograman ini, kamu bisa gunakan atau download aplikasi pascal-n ide di apps google store.

Pada tutorial kali ini, saya menggunakan komputer, mungkin dikesempatan lain kita akan menggunakan handphone android. Bahasa pascal juga merupakan bahasa yang general purpose (bisa menyelesaikan banyak masalah), high level programing yang aslinya dibuat oleh Niclause Wirth awal 1970an. Seperti saya sebut sebelumnya bahwa bahasa pemrograman ini buat untuk ditujukan pada dunia pendidikan,ditujukan untuk mempelajari disiplin pemrograman secara sistematis, bisa diandalkan, dan bisa membuat program yang efesien.

Pascal menjadi populer didunia pendidikan dan kampus karena beberapa alasan: 

  • Mudah dipelajari
  • Bahasanya terstruktur/berurut
  • effesien dan bisa diandalkan
  • Bisa digunakan dibanyak operating system (seperti windows, mac-os, linux, unix dan android)

Struktur Bahasa Pascal

Sebelum kita belajar membuat blok/baris program, sebaiknya kita kenal dahulu struktur urutan baris bahasa pemrograman pascal, sehingga kita tidak salah dalam menuliskan kode program kita pada editor pascal yang kita gunakan, berikut struktur bahasa program pascal:

  • Nama Program
  • perintah uses;
  • Deklarasi Type
  • Deklarasi Konstanta
  • Deklarasi Variabel
  • Deklarasi Fungsi
  • Deklarasi Prosedur
  • Main Program (program utama diawali oleh keyword begin dan di akhiri keyword end. )
  • Statement dan expresi di masing-masing blok program
  • Komentar 
Untuk contoh program sederhana, penggunaaan baris struktur bahasa pascal bisa kita perhatikan potongan program berikut. 

program bulan pascal

Kode program pertama menggunakan nama program hitungbulan di akhiri tanda titik koma, perlu diingat setiap baris program pascal harus di tutup dengan tanda baca titik koma, seperti bisa di lihat didalam gambar diatas. 

Baris kedua penggunaan uses crt; arti dari baris program ini yaitu agar compiler pascal memanggil atau menggunakan library crt, fungsi library agar program bisa menapilkan, menghitung, dll. Jadi tanpa uses crt; program kita tidak akan jalan. 

Baris ketiga adalah var bil:integer; baris ini fungsinya untuk mendefenisikan variable yang digunakan, bernama bil, dan tipe data yang dia tampung adalah integer; 

Variable adalah, sebuah ruangan yang disediakan didalam memori yang digunakan untuk menyimpan data yang akan di olah. 

Baris Begin adalah awal dari tubuh program; 
Baris Clrscr; fungsinya untuk membersihkan layar yang ditampilkan sebelumnya. Dibawahnya semuanya nanti akan kita pelajari satu-persatu. 

Kemudian di baris paling akhir ada readln; fungsi baris readln agar program berhenti sejenak setelah kita jalankan, dan dia menunggu inputan daari keyboard untuk proses selanjutnya, baris ini juga wajib kita buat di akhir code program. 

Sedangkan code END. dengan tanda titik, adalah akhir dari baris program.

Pascal : Mengenal Pemrograman Pascal - semoga pengenalan pascal ini bermanfaat. Demikian saja dahulu, nanti kita lanjutin ke topik selanjutnya ya. 


Selasa, 27 Oktober 2020

Membuat Baca Tulis File Di Python

Membuat Baca Tulis File di Python (Lengkap + Contoh Praktis) – Python adalah salah satu bahasa pemrograman paling populer saat ini karena sederhana, fleksibel, dan mudah dipahami. Salah satu kemampuan dasar yang penting dikuasai adalah bagaimana Python bekerja dengan file. Hampir semua aplikasi nyata, dari program kecil hingga aplikasi besar, membutuhkan fitur untuk menyimpan data atau membaca kembali informasi yang sudah ada.

Pada artikel ini, kita akan belajar secara detail tentang cara membaca dan menulis file di Python. Saya akan membahas berbagai mode yang digunakan dalam membuka file, memberikan contoh kode, menjelaskan langkah demi langkah, dan menyertakan studi kasus sederhana sehingga pembaca bisa langsung mempraktikkannya. Artikel ini ditulis panjang agar bisa menjadi referensi belajar yang lengkap sekaligus SEO-friendly.

Pendahuluan: Pentingnya Belajar File Handling di Python

Sebelum kita mulai menulis kode, mari kita pahami dulu kenapa file handling atau pengelolaan file sangat penting dalam pemrograman.

  • Menyimpan Data – Saat program berjalan, kita mungkin ingin menyimpan hasil input pengguna, catatan log, atau data sementara.
  • Membaca Data – Program perlu membaca file konfigurasi, data pelatihan, atau bahkan teks panjang dari luar agar bisa digunakan.
  • Transfer Informasi – File bisa digunakan untuk bertukar data antar sistem, misalnya CSV untuk data tabular.
  • Pembangunan Aplikasi – Hampir semua aplikasi, bahkan yang sederhana, pasti membutuhkan fitur simpan dan baca data.

Dengan menguasai dasar ini, kita akan lebih mudah saat melangkah ke materi yang lebih kompleks seperti bekerja dengan database (MySQL, PostgreSQL, SQLite), API, maupun framework besar seperti Django atau Flask.

Fungsi open() di Python

Fungsi utama untuk membuka file di Python adalah open(). Formatnya sederhana:

open(nama_file, mode)

Parameter nama_file adalah string berisi nama file yang ingin dibuka, sedangkan mode adalah perintah akses, apakah ingin membaca, menulis, atau menambahkan isi file.

Mode Akses File

Berikut adalah mode-mode penting dalam Python:

  • r : Membaca file (default). Jika file tidak ada, akan error.
  • w : Menulis file baru. Jika file sudah ada, isinya akan ditimpa.
  • a : Menambahkan data di akhir file tanpa menghapus isi lama.
  • r+ : Membaca dan menulis sekaligus.
  • w+ : Membaca dan menulis, tetapi file akan dikosongkan dulu.
  • a+ : Membaca dan menulis dengan menambahkan di akhir file.

Selain itu, kita juga bisa menambahkan huruf b untuk file biner (misalnya gambar, PDF), sehingga mode bisa menjadi rb, wb, dan sebagainya.

Contoh Membaca File di Python

Untuk membaca file, kita gunakan mode r. Misalnya, kita punya file bernama belajar.txt.

ex = open("belajar.txt", "r")
hasil = ex.readlines()

for i in range(len(hasil)):
    print(hasil[i])

ex.close()

Penjelasan:

  • open("belajar.txt","r") membuka file untuk dibaca.
  • readlines() membaca semua baris dan menyimpannya dalam list.
  • for digunakan untuk menampilkan isi baris demi baris.
  • close() menutup file agar tidak terjadi kebocoran memori.

Contoh Menulis File di Python

Untuk menulis data, kita bisa gunakan mode w. Contoh:

ex = open("belajar.txt", "w")
ex.write("Halo, ini adalah data baru.\n")
ex.close()

Kode ini akan membuat file baru bernama belajar.txt jika belum ada. Jika sudah ada, maka isi lama akan hilang dan diganti dengan teks baru.

Contoh Menambahkan Data ke File

Mode a memungkinkan kita menambahkan teks tanpa menghapus isi lama.

ex = open("belajar.txt", "a")
ex.write("Baris tambahan ke file.\n")
ex.close()

Jika dijalankan berulang kali, baris baru akan terus ditambahkan di akhir file.

Contoh Menggunakan Input Pengguna

Kita juga bisa meminta input dari user lalu menyimpannya ke file:

nama = input("Masukkan Nama: ")
alamat = input("Masukkan Alamat: ")

hasil = "Nama: {} \nAlamat: {}\n".format(nama, alamat)
batas = "============================================\n"

ex = open("belajar.txt", "a")
ex.writelines(hasil)
ex.writelines(batas)
ex.close()

Kode ini akan menyimpan nama dan alamat yang dimasukkan pengguna ke dalam file, lengkap dengan garis pembatas di setiap data baru.

Membaca File dengan with open()

Best practice dalam Python adalah menggunakan with open() agar file otomatis ditutup setelah digunakan. Contoh:

with open("belajar.txt", "r") as file:
    for baris in file:
        print(baris)

Cara ini lebih aman karena tidak perlu memanggil close() secara manual.

Studi Kasus: Menyimpan Data Siswa ke File

Kita bisa membuat program sederhana untuk menyimpan daftar siswa:

jumlah = int(input("Masukkan jumlah siswa: "))

with open("siswa.txt", "a") as file:
    for i in range(jumlah):
        nama = input("Nama siswa: ")
        kelas = input("Kelas: ")
        file.write(f"Nama: {nama}, Kelas: {kelas}\n")

Setelah program dijalankan, semua data siswa akan tersimpan di file siswa.txt. Kita bisa membukanya dengan mode baca untuk melihat daftar tersebut.

Membaca File CSV dengan Python

CSV (Comma Separated Values) adalah format umum untuk data tabular. Python punya modul bawaan csv untuk membacanya.

import csv

with open("data.csv", "r") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

Dengan kode di atas, setiap baris CSV akan dibaca sebagai list Python.

Kesalahan Umum saat Mengelola File

  • FileNotFoundError – Terjadi jika file tidak ditemukan. Solusi: pastikan path file benar.
  • PermissionError – Terjadi jika tidak punya hak akses. Solusi: jalankan program dengan izin yang sesuai.
  • Encoding Error – Jika file berisi karakter non-ASCII. Solusi: gunakan parameter encoding="utf-8" saat membuka file.

Tips dan Best Practice

  • Gunakan with open() untuk keamanan.
  • Selalu tutup file setelah digunakan.
  • Gunakan mode yang sesuai agar data tidak hilang.
  • Pakai try-except untuk menangani error.

Kesimpulan

Belajar baca tulis file di Python adalah pondasi penting sebelum masuk ke pemrograman lebih lanjut. Kita sudah membahas cara membaca, menulis, menambahkan data, membaca file CSV, hingga tips keamanan. Dengan menguasai materi ini, Anda akan lebih mudah melangkah ke database, pemrosesan data besar, dan pembuatan aplikasi nyata.

Semoga artikel ini bisa membantu dan menjadi catatan belajar yang bermanfaat. Selamat mencoba dan terus berlatih dengan kode Python!

Minggu, 28 Februari 2016

Cara menampilkan isi database php

Mandailing Natal - Cara menampilkan isi database php , cara mudah menampilkan isi tabel database dengan php. Pada postingan sebelumnya sudah kita buat file php untuk input data kedalam database, menggunakan php, dan html.


Tulisan ini sambung dari tulisan sebelumnya create input data kedatabase dengan php file ini merupakan sambungan dari file sebelumnya. Tidak panjang lebar, mudah-mudahan sedikit sudah di mengerti posting seblumnya untuk menginput data kedatabase dengan php.


<html>
    <head>
        <title> Lihat data </title>
    </head>
<body>
<table border="1" style="border-collapse:collapse;">
    <tr>
        <td> No </td>
        <td> Nisn </td>
        <td> Nama </td>
        <td> Action</td>
    </tr>
 
<?php include('koneksi.php');
    $lihat=mysql_query('SELECT * FROM data_siswa ORDER BY id_siswa');
       $no=1;
       while($data=mysql_fetch_array($lihat))
       {
       echo "<tr>
              <td>$no</td>
              <td>$data[nisn_siswa]</td>
              <td>$data[nama_siswa]</td>
              <td><a href='edit.php?id=".$data[id_siswa]."'>Edit </a> |
                 <a href='hapus.php?id=".$data[id_siswa]."'>Hapus </a> |
                 <a href='detail.php?id=".$data[id_siswa]."'>Detail </a>  
                 </td>            
                 </tr>";
                 $no++; 
       }
?>
</table>
</body>
</html>
Nah di bagian ini kita harus bisa membuat table, biar tampilan query database yang di tampilkan terlihat rapi, dan enak  di lihat.  Cara menampilkan isi database php semoga bermanfaat bagi yang membutuhkannya. Untuk sesi selanjutnya saya akan buat hapus_data dari database mysql dengan bahasa pemrograman php.


Tulisan Sebelumnya :
Pada code mysql_query, kita melihat option ORDER BY, option ORDER BY berfungsi untuk mengurutkan isi tabel database yang di pilih untuk di tampilkan, ORDER BY memiliki dua opsi pengurutan lagi, yakni ASCENDING dan DESCENDING.

Ascending mengurutkan isi database dari text yang paling kecil dahulu baru ke yang besar, sedangkan DESCENDING kebalikannya.

Pada kode tampilkan database mysql diatas kita melihat code mysql_fetch_array(), kode mysql_fetch_array adalah salah satu jenis perintah dalam mysql untuk menampilkan isi database secara assaosiative maupun secara numerik.

Sebenarnya perintah cara menampilkan isi database php, selain menggunakan perintah mysql_fetch_array() bisa juga menggunakan perintah mysql_fectch_row(), mysql_fetch_row () berfungsi menampilkan isi database numeric, berbeda dengan mysql_fetch_array, yang memiliki kemampuan menampilkan secara assosiative dan numeric, sedangkan mysql_fetch_row hanya mampu menampilkan secara numeric.

Trus mana yang harus, di gunakan ?.

Saya sendiri lebih menyukai mysql_fetch_array() timbang menggunakan mysql_fetch_rows() namun pilihan ini tergantung pada keinginan anda, mana yang paling disukai.


Untuk upload gambar ke database dengan php bisa di baca di tulisan saya sebelumnya -> cara upload gambar ke database mysql dengan php

Minggu, 07 Februari 2016

Belajar Pemrograman Perl

Mandailing Natal - Belajar Pemrograman Perl, tulisan Belajar Pemrograman Perl bukan tulisan murni saya, ini saya ambil dari webnya Gigih Forda,Semoga bermanfaat untuk kita semua, saya buat disini kadang tulisan-tulisan penting seperti Belajar Pemrograman Perl bisa hilang, apalagi di hosting di server kampus.




NAME
PPP - Pintu Pertama ke Perl (bukan Point to Point Protocol, apalagi Partai Persatuan Pembangunan)$Id: ppperl.pod,v 1.7 1999/03/29 16:55:48 edwin Exp $

SYNOPSIS


Teks
PPP Belajar Pemrograman Perl ditulis dengan tujuan untuk membantu orang Indonesia yang baru belajar menggunakan Perl. Latar belakang bahasa C akan sangat membantu, meskipun bukan syarat mutlak, akan tetapi pengalaman pemrograman dalam sekurang-kurangnya satu bahasa lain diperlukan. Sebagai bahan tutorial, teks ppp dirancang untuk digunakan bersama dengan perlop. Jika dokumen tersebut dirasa sulit dibaca karena terlalu teknis, Appendix A disediakan untuk membantu memahami sejumlah istilah teknis di sana.

Rencananya teks PPP akan disampaikan sebagai salah satu materi pada Pelatihan/Tutorial Linux KPLI Jateng (Kelompok Pengguna Linux di Indonesia area Jawa Tengah, http://jateng.linux.or.id/), tanggal: m#\d+/\d+/1999#, di STMIK Dian Nuswantoro, Semarang, Indonesia.

1. PENDAHULUAN

1.1 Apa Itu Perl?


Menurut Larry Wall (http://www.wall.org/) penciptanya bahasa perl, Perl merupakan akronim dari Practical Extraction and Report Language, atau Pathologically Eclectic Rubbish Lister. Perl diciptakan dengan menggabungkan unsur-unsur dari bahasa C, awk, Bourne shell script, dan program-program seperti sed, grep. Tidak seperti shell script, Perl tidak bergantung pada program-program eksternal, sehingga lebih cepat.

Perl adalah setengah kompiler juga setengah interpreter. Jika kita menjalankan sebuah skrip Perl, maka skrip tersebut sebenarnya dikompilasi terlebih dahulu ke dalam bentuk menengah (pohon syntax) yang kemudian di interpretasikan oleh sistem run-time Perl. Dengan demikian, eksekusi skrip Perl lebih cepat daripada skrip bahasa-bahasa yang murni terinterpretasi (interpreted language) seperti Tcl.

Lebih lanjut lagi juga muncul teknik-teknik untuk lebih mempercepat lagi waktu eksekusi skrip Perl. Tidak seperti produk-produk proprietary seperti Java yang tidak pernah lepas dari isu-isu "politik bisnis'', pengguna Perl bisa dengan tenang, nyaman dalam menggunakan Perl pada platform favoritnya.

Seperti Linux, Perl dapat diperoleh secara bebas, karena berlisensi publik GNU. Oleh para pakar bahasa pemrograman, Perl digolongkan ke dalam VHLL (Very High Level Language). Satu perintah dalam Perl ekivalen dengan banyak perintah dalam bahasa tingkat tinggi, sehingga program-program yang ditulis dalam Perl sangat efisien juga ringkas. Perl merupakan pilihan utama untuk tugas-tugas pengolahan teks, terutama dengan fasilitas regular expression-nya yang sangat canggih.

Dengan mewabahnya internet, serta sejumlah protokolnya yang berbasis teks (NVT ASCII), Perl menjadi pilihan utama untuk pemrograman internet, terutama CGI (Common Gateway Interface). Semula Perl hanya dipakai untuk menulis skrip-skrip pendek, namun dalam perkembangannya, Larry menambahkan dukungan bagi pemrograman berorientasi objek, dan dimulailah era baru pemrograman Perl untuk aplikasi-aplikasi besar juga rumit.

1.2 Membuat dan Mengeksekusi Program Perl

Gunakan editor teks (vi, jstar, emacs, atau apapun kesukaan Anda) untuk mengedit program Perl, pada baris pertama cantumkan path ke interpreter perl:

#!/usr/bin/perl

Simpanlah sebagai file, biasanya dengan ekstensi .pl (tapi tidak penting bagi interpreter perl), ubah permissionnya ke executable (misalkan chmod 755, atau chmod +x).

1.3 Dokumentasi Perl (perlpod)


Dokumentasi biasanya ditulis dalam format pod (Plain Old Documentation), untuk membacanya, gunakan perldoc. Misalkan untuk membaca perlfaq.pod, jalankan perintah perl:

perldoc perlfaq

Tersedia juga konverter dari pod ke format-format lain seperti ASCII Text, HTML. Sebagai contoh, untuk membuat HTML dari perlfaq1.pod:

pod2html --infile=perlfaq1.pod --outfile=perlfaq1.html

Sedangkan untuk membuat ASCII Text:

pod2text perlfaq1.pod > perlfaq1.txt

Untuk menuliskan komentar (comment) pada source code, tuliskan setelah simbol #.

2. DATA

Untuk menciptakan variabel, perlu ditentukan tipe data bagi variabel tersebut. Tipe data yang paling mendasar adalah skalar. Sebuah skalar dapat berupa numerik ataupun string. Tipe data lainnya adalah array dari skalar, dan array asosiatif (associative array) dari skalar.

2.1 Skalar

Variabel skalar ditulis dengan simbol $.

Contoh:

$title = "Programming Perl"; #skalar string
$num = 10; #skalar numerik

Perhatikan

quote (tanda kutip) pada skalar string. Ada tiga macam quote: double quote (seperti pada contoh di atas), single quote, dan back quote. Jika kita gunakan double quote, maka kita izinkan penggunakan control character dan interpolasi variabel pada string tersebut.

Berikut adalah contoh-contoh control character:

\n  -> newline (baris baru)
\r -> carriage return
\t -> tab

Interpolasi

Interpolasi variabel berarti bahwa sebuah variabel yang digunakan dalam sebuah string disubstitusi dengan nilai variabel tersebut.

Sekarang cobalah contoh berikut:

#!/usr/bin/perl
$title = "Programming Perl";
$num = 10;
$kalimat = "Jumlah buku $title sebanyak $num.\n";

print $kalimat;

Jika kita gunakan single-quote, maka pada string tersebut tidak berlaku control character dan interpolasi variabel. Cobalah jalankan kembali contoh di atas setelah mengganti double-quote pada $kalimat menjadi single-quote, dan perhatikan perbedaannya.Interpolasi variabel tidak berlaku untuk array assosiatif (hash). Back-quote melakukan substitusi command yang dijalankan pada shell.

Cobalah intervolasi variable array assosiatif:

$tanggal='date';
print "Jumlah buku $title pada $tanggal sebanyak $num.\n";

Cara lain untuk menuliskan quote adalah dengan menggunakan q (single-quote), qq (double-quote), qx (back-quote).

Contoh:

$tanggal = qx[date]; #sama dengan back-quote
$title = q/Programming Perl/; #sama dengan single-quote
$other = qq#Learning Perl#; #sama dengan double-quote

2.2 Array

Variabel array ditulis dengan simbol @.

Contoh:

@small_nums = (1..20);
@authors = ("Larry", "Randal", "Friedl");
@amounts = qw(7 4 6);  #sama dengan ('7', '4', '6')

Indeks elemen array dimulai dari 0.

Contoh:

print $authors[0], "\n"; #mencetak Larry
print $authors[2], "\n"; #mencetak Friedl

Basis 0 perl sebenarnya dapat diubah dengan cara mengubah nilai $[ .

Contoh:

$[ = 1; #more convenient to awk folks
print $authors[1], "\n"; #mencetak Larry
Sekalipun praktek demikian tidak dianjurkan.

Untuk mengetahui indeks dari elemen terakhir dari sebuah array, gunakan simbol $# .

Contoh:

print 'Indeks elemen terakhir = ', $#authors, "\n";

shift,  pop -> shift berfungsi untuk mengambil elemen terkiri dari array, sedangkan pop berfungsi untuk mengambil elemen terkanan.

Contoh:

$leftmost = shift @authors; #mengambil Larry
print join("\n", @authors); #mencetak Randal, Friedl
$rightmost = pop @authors; #mengambil Friedl

unshift menambahkan elemen array dari sisi kiri, sedangkan push menambahkan elemen array dari sisi kanan.

Contoh:

unshift(@authors, "Larry");
push(@authors, "Srinivasan");

print join("\n", @authors); #mencetak Larry, Randal, Srinivasan

join, split join berfungsi untuk membentuk sebuah skalar dari elemen-elemen sebuah array yang dipisahkan oleh delimiter yang kita tentukan.

Contoh:

$all_authors = join("\n", @authors);

membentuk $all_authors yang berisi elemen-elemen @authors yang dipisahkan karakter newline. Sebaliknya, split membentuk array dari sebuah skalar dengan cara memisahkan elemen- elemen berdasarkan pola pencocokan tertentu.

Contoh:

@original = split(/\n/, $all_authors);

Mengenai pola pencocokan, akan kita lihat nanti lebih jauh pada bagian Regular Expression. Untuk melakukan sort berdasarkan nilai ASCII.

Contoh:

@scores = (68, 50, 30, 78, 5, 58);
print join(' ', sort @scores), "\n";

2.3 Array Asosiatif

Array Asosiatif pada perl diimplementasikan sebagai hash table, array asosiatif memiliki struktur seperti array, kecuali pada indeksnya yang berupa string, sedemikian rupa sehingga hash tersusun dari pasangan-pasangan key-value. Variabel hash ditulis dengan simbol%.

Contoh:

%booklist = ("Larry", "Camel", "Randal", "Llama", "Srinivasan", "Panther",);

atau:

%booklist = ("Larry" => "Camel","Randal" => "Llama","Srinivasan" => "Panther",);print $booklist{'Larry'}, "\n"; #mencetak Camel

keys, values keys membentuk array yg berisi key dari sebuah hash.

Contoh:

for (sort keys(%booklist))
{
print 'The ', $booklist{$_}, " book is a dead hack by $_\n";
}

akan menghasilkan output:



The Camel book is a dead hack by Larry
The Llama book is a dead hack by Randal
The Panther book is a dead hack by Srinivasan


Sebaliknya values membentuk array yg berisi value dari sebuah hash.

Contoh:

for (values(%booklist)) { print $_, ''\n'';} 
each membentuk array yang berisi pasangan key - value dari elemen berikutnya dari sebuah array asosiatif.

Contoh:

while (($author, $beast) = each(%booklist))
{
print $author, ' => ', $beast, "\n";
}

delete menghapus elemen hash berdasarkan key-nya.

Contoh:

delete $booklist{'Randal'}; 

menghapus pasangan key - value Randal - Llama dari hash %booklist.

2.4 Konteks

Operasi-operasi yang dilakukan terhadap data sebenarnya dilakukan di dalam konteks tertentu, artinya jika hasil yang diharapkan dari sebuah operasi terhadap data atau operand tertentu adalah skalar, maka dikatakan bahwa data atau operand tersebut dievaluasi dalam konteks skalar. Selain konteks skalar, dikenal juga konteks array atau list, dan konteks boolean.

@booklist = %booklist;#menciptakan array dari hash
$jumlah_elemen = @authors;  #mengambil jumlah elemen array

Konteks boolean terutama digunakan dalam mengevaluasi sebuah ekspresi. Nilai SALAH adalah null string ('' ''), 0, ``0'', atau undef. Variabel yang tidak terdefinisi bernilai undef. Kita akan lihat penerapan konteks boolean pada pembahasan mengenai struktur kendali.

2.5 Referensi dan Variabel Anonim

Referensi mirip dengan pointer pada C. Kita dapat menciptakan referensi ke variabel bernama, maupun ke variabel anonim (tak bernama). Untuk menciptakan referensi ke variabel bernama, kita gunakan backslash di depan variabel tersebut.

Contoh:

$amount = 7;
@beasties = ("Camel", "Llama", "Panther");
%booklist = ("Larry", "Camel", "Randal", "Llama", "Srinivasan", "Panther",);
$amountref = \$amount;      #ref ke skalar
$beastiesref = \@beasties;  #ref ke array
$booklistref = \%booklist;  #ref ke hash
print ref($amountref), "\n";
print ref($beastiesref), "\n";
print ref($booklistref), "\n";

ref() mengambil tipe referensi, sehingga output contoh di atas adalah: SCALAR ARRAY HASH Untuk menciptakan referensi ke array anonim, kita gunakan kurung persegi, namun untuk referensi ke hash anonim, kita gunakan kurung kurawal.

Contoh:

$ref_to_scalar = \5;
$ref_to_arr = [1, 2, 3];
$ref_to_hash = {'satu' => 1, 'dua' => 2, 'tiga' => 3};
print ${$ref_to_scalar}, "\n";
for (@$ref_to_arr) {print $_, "\n";}
print 'Elemen ke-0: ', $$ref_to_arr[0], "\n";
print 'Elemen ke-2: ', ${$ref_to_arr}[2], "\n";
print 'Elemen ke-1: ', $ref_to_arr->[1], "\n"; #C style
for (sort keys(%$ref_to_hash)) {print $_, ': ', $$ref_to_hash{$_}, "\n";}

Karena TMTOWTDI (There's More Than One Way To Do It), ada beberapa cara untuk mengakses elemen dari variabel anonim. Kita dapat menggunakan konteks yang sesuai dengan tipe referensinya.

Misalkan karena $ref_to_scalar memiliki tipe referensi SCALAR, maka kita ambil nilai skalar anonim tersebut dengan cara menempatkannya di dalam konteks skalar:

${$ref_to_scalar}, atau lebih singkat: $$ref_to_scalar. Demikian juga untuk array juga hash anonim, kita dapat menempatkannya dalam konteks array maupun hash, kemudian melakukan operasi array, maupun hash seperti biasa.

Seperti pada contoh di atas kita melihat @$ref_to_arr, kemudian mengiterasi elemen-elemennya dengan for(). Namun ada cara lain yang lebih akrab bagi programmer C/C++, yaitu dengan operator panah, sehingga kita melihat juga $ref_to_arr->[0] untuk mengakses elemen ke-0. Cara seperti contoh tadi terutama populer pada pemrograman Perl berorientasi objek.

3. STRUKTUR KENDALI

3.1 Blok Statemen


Anda tidak perlu membaca bagian ini jika Anda seorang programmer C. Blok statemen adalah rangkaian statemen yang ditempatkan dalam pasangan kurung kurawal.

Bentuknya:

{
#statemen pertama
#statemen kedua
}

Perl mengeksekusi statemen berturut-turut mulai dari yang pertama sampai yang terakhir.

3.2 if dan unless

Bentuk:

if(EXPR)
{
#statemen
}
else
{
#statemen
}

atau:
if(EXPR)
{
#statemen1
}
elsif(EXPR)
{
#statemen2
}
else<
{
#statemen3
}

EXPR adalah ekspresi kendali atau kondisional yang dievaluasi dalam konteks boolean (benar atau salah). Blok statemen dieksekusi jika EXPR bernilai benar. Kita dapat menuliskan statemen mendahului if jika statemen hanya satu baris.

Contoh:

print "It's there!\n" if ($arrived);

selain itu, statemen harus ditulis di dalam blok (tidak seperti pada bahasa C). Sedangkan bentuk penulisan unless sama seperti pada if, di mana unless akan mengeksekusi blok statemen jika EXPR bernilai salah.

3.3 while dan unless

Bentuk:

while(EXPR)
{
statemen1
}
unless(EXPR)
{
statemen2
}

while akan mengeksekusi blok statemen berulang-ulang selama EXPR bernilai benar, sedangkan unless justru selama EXPR bernilai salah. Kita akan melihat pemakaian while pada pembahasan mengenai I/O dasar.

3.4 for dan foreach

Bentuk penulisan for yang pertama mirip seperti pada C:

for (EXPR_AWAL; KONDISI; EXPR_AKSI)
{
statement1
}

di mana EXPR_AWAL pertama-tama dieksekusi, lalu berturut-turut blok statemen serta EXPR_AKSI dieksekusi berulang-ulang selama KONDISI terpenuhi. Di sini KONDISI adalah sebuah ekspresi kondisional yang dievaluasi dalam konteks boolean.

Contoh:

for ($i = 1; $i < 11; $i++) {print "$i\n";}

Bentuk lain:

for (ARRAY)
{
..........
}

Contoh:

for (@scores) {print $_, "\n";}

Pada contoh di atas, for mengiterasi array @scores, lalu mengeset variabel global $_ ke nilai elemen array yang tengah diakses.

$_ adalah variabel global yang secara default dipakai pada banyak operasi, antara lain iterasi array dengan for() seperti diatas.

Jika kita ingin menggunakan variabel skalar lain bukannya $_, kita gunakan foreach:

foreach $score (@scores) 
{
print $score, "\n";
}

4. I/O DASAR


Kita dapat membuat program yang lebih interaktif, artinya yang dapat menerima input dari user, dengan membaca dari STDIN. STDIN adalah filehandle yang disediakan oleh Perl untuk pembacaan dari standard input.

Contoh:

$author = <STDIN>;
print "Author's name: $author";
@book_title = <STDIN>;
for (@book_title) {print join(' ', $_);}

Perhatikan bahwa pada konteks array, input akan dibaca terus sampai diterima karakter EOF (Ctrl-D pada Linux). Untuk pemrograman user-interface berbasis teks yang lebih baik, kita dapat menggunakan library curses atau ncurses (new curses)  juga modul Curses. Mengenai pemakaian modul akan kita lihat lagi pada bagian Fungsi, Library serta Modul).

Kita sering melihat program yang menerima argumen pada command-line, misalkan cat.

Kita menjalankan:

cat ppperl.txt 

di mana ppperl.txt adalah argumen yang dilewatkan ke program cat. Kita dapat membuat skrip perl kita bekerja seperti itu dengan menggunakan operator berlian (diamond operator).

Contoh:

#!/usr/bin/perl
while(<>)
{
print $_;
}

Misalkan script di atas kita beri nama pcat, maka jika kita jalankan:

$pcat ppperl.txt

akan bekerja seperti 'cat ppperl.txt'. Operator berlian (<>) membaca data dari file yang kita lewatkan sebagai argumen pada command-line, kemudian while() mengiterasi pembacaan tersebut sampai diterima nilai undef, di mana hasil pembacaan diset secara default ke $_ .

Pembacaan data dilakukan baris demi baris, dengan kata lain: satu pembacaan dilakukan sampai dijumpai karakter newline \n. Karakter yang menentukan batas satu pembacaan ini disebut dengan: input record separator. Kita dapat mengubah input record separator ini dengan mengeset variabel global $/. Kita akan melihat ini nanti pada bagian mengenai Switch Baris Perintah.

Dengan memanfaatkan $_, kita dapat menulis pcat di atas lebih ringkas lagi:

while(<>)
{
print;
}

atau bahkan:

print while(<>);

Jika kita melewatkan argumen pada saat memanggil skrip perl kita, maka sebenarnya argumen-argumen tersebut dibaca pada array @ARGV. Misalkan kita punya skrip perl bernama showargs.pl sebagai berikut:

#!/usr/bin/perlprint join(", ", @ARGV);

kemudian kita memanggilnya sebagai berikut

$ showargs.pl Camel Llama Panther

maka outputnya:

Camel, Llama, Panther 

Operator diamond sebenarnya bekerja pada @ARGV ini. Jadi misalkan kita punya file Camel.syn dan Llama.syn yang berturut-turut berisi:

Authoritative Perl reference book by the creator.
Classic tutorial Perl book by Randal, the JAPH.

lalu:

print while(<>); 

akan mencetak isi file Camel.syn juga Llama.syn dengan berturut-turut.

Untuk mengetahui jumlah argumen yg dilewatkan, manfaatkan variabel $#ARGV.

Jadi kalau pada showargs.pl kita tambahkan:

print "\nJumlah argumen yg dilewatkan = ",  $#ARGV + 1, "\n";

maka: showargs.pl Camel Llama Panther akan menghasilkan output:

Camel, Llama, Panther

Jumlah argumen yg dilewatkan = 3.

5. REGULAR EXPRESSION (perlre)

5.1 Dasar


Jika kita bekerja dengan word processor, tentunya sudah akrab dengan fasilitas ''search text'' ataupun ``find and replace.'' Secara sederhana, regular expression atau regex dapat dipahami sebagai fasilitas semacam itu, meskipun jauh lebih berdayaguna seperti yang akan kita lihat nanti. Bagi yang sudah berpengalaman menggunakan grep (= global regular expression parser), regex Perl menyerupai egrep (extended grep). Regex yang kita susun adalah berupa pattern (pola) yang terdiri dari sejumlah item.

Kita lihat dulu sebuah contoh:

#!/usr/bin/perl
while (<>)
{
print "$_\n" if (/Regular/);
}

/Regular/ di dalam >if() inilah yang disebut dengan regular expression. Script di atas mencetak
baris yang mengandung kata 'Regular'.

Cobalah jalankan script di atas terhadap file ppperl.txt ini.

Pola dievaluasi sebagai double-quote string, artinya kita dapat melakukan interpolasi variabeldi dalam pola,  juga dikenali pemakaian control character (ingat pembahasan mengenai double-quote string).

Jika pada contoh di atas kita ingin agar pola dapat cocok dengan Regular maupun Reguler, kita dapat menggunakan character class sebagai berikut:

/Regul[ae]r/

Jika character class mencakup satu rentang yang panjang, misalkan:

/[0123456789]/; #cocok dengan satu digit bilangan

kita dapat menuliskannya sebagai berikut ini:

/[0-9]/

Bentuk negatifnya kita tuliskan dengan simbol ^ di depan:

/[^0-9]/ #cocok dengan _selain_ satu digit bilangan

Dengan menggunakan character class, kita pelajari sejumlah konstruk berikut:
Konstruk Nama Ekivalen dengan:

Konstruk    Nama                Ekivalen dengan: 

\d digit [0-9]

\w words [a-zA-Z0-9_]

\s whitespaces [ \r\t\n\f]

\D non-digit [^0-9]

\W non-words [^a-zA-Z_]

\S non-whitespaces [^ \r\t\n\f]

5.2 Menggunakan Multiplier


Multiplier adalah penentu jumlah berapa kali sebuah item muncul. Ini sangat berguna jika kita ingin menyusun pola pencocokan terhadap item yang jumlah pemunculannya bervariasi (tidak tetap), atau jumlah pemunculannya tetap tapi sangat banyak.

Multiplier      Arti

* Tidak muncul atau berkali-kali muncul

+ Muncul minimal satu kali

? Tidak muncul atau muncul satu kali

{n} Muncul tepat n kali

{n,} Minimal muncul n kali

{n,m} n =< jumlah pemunculan =< m

5.3 Tanda Kurung sebagai Memori

Jika kita gunakan () pada pola pencocokan, maka bagian string yang cocok dengan pola di dalam tanda kurung tersebut akan disimpan dalam variabel $1 untuk tanda kurung pertama,$2 untuk tanda kurung kedua, dst. Contoh:

@names = ('Larry Wall', 'Es krim Walls');
for (@names)
{
if (/(.+)\sWall/)
{
print "$1\n";
}
}
akan mencetak:


Larry
Es krim


5.4 Penjangkaran

Empat konstruk berikut ini berguna untuk ''menjangkarkan'' pola:

Konstruk: Penjangkaran pada:

^ awal baris

$ akhir baris sebelum \n

\b word boundary (batas word)

\B bukan batas word

Perhatikan bahwa tanda ^ memiliki arti yang berbeda jika digunakan di dalam character class atau [ ], begitu juga \b (di dalam [], \b berarti backspace). \b adalah batas di antara dua karakter, di mana salah satu karakter adalah \w ,karakter lainnya adalah \W (urutan bisa dipertukarkan).

Sebaliknya, \B berarti bukan batas word. Untuk jelasnya, lihat ini:

@names = ('Larry Wall', 'Es krim Walls');
for (@names)
{
if (/\bWall\B/)
{
print "$_\n";
}
}
akan mencetak:

Es krim Walls

karena pada 'Larry Wall', setelah Wall ada batas word.

5.5 Lebih Jauh dengan Operator-operator Regex

Operator-operator yang terutama digunakan dengan regex (baca perlop): m//gimosx(seperti //, tapi dengan m// kita dapat menentukan delimiter non-alfanumerik selain forward slash, misalkan m## atau m!!),tr///cds (transliterasi: pemetaan karakter ke karakter lain), s///egimosx (substitusi).

Operator pencocokan (m// atau //) jika dievaluasi dalam konteks skalar akan menghasilkan nilai benar (1) jika pencocokan berhasil, atau nilai salah (null string) jika tidak cocok.

Jika dievaluasi dalam konteks array, akan mengeset elemen array pertama dengan $1, elemen kedua dengan $2, dst jika pencocokan berhasil. Jika pola pencocokan tidak mengandung tanda kurung, maka elemen array akan diset 1 jika pencocokan berhasil.

Operator substitusi (s///) mengganti bagian string yang cocok dengan pola (di sisi kiri) dengan teks penggantinya (di sisi kanan).

Contoh:

@names = ('Larry Wall', 'Es krim Walls');
for (@names)
{
if ($cnt = s/Es krim (Wall)s/Great $1/)
{
print "$_\nJumlah substitusi: $cnt\n";
}
}

Keterangan opsi:

  • g = search secara global, jadi lakukan matching untuk semua pemunculan, bukan hanya sekali saja, 
  • i = case insensitive matching (tidak pedulikan perbedakan huruf kapital/kecil), 
  • m = multiline matching, jadi menerima string yang mengandung banyak \n, 
  • o = compile once,satu kali compile, untuk optimasi kecepatan jika tidak ada interpolasi variabel berulang (lebih dari satu kali) dalam pola pencocokan. 
  • s = single line matching (default), 
  • x = extended regex, jadi boleh menggunakan whitespace (\s) dan comment di dalam regex untuk memudahkan pembacaan,
  • e = evaluasi sisi kanan sebagai ekspresi. Kalau opsi ini tidak kita cantumkan, maka secara default, sisi kanan (RHS = Right Hand Side) dievaluasi sebagai double-quote string.

    Contoh:
$init = "Linux is an OS an OS\n";
$init =~ s/an OS/a kernel/;
print $init; #mencetak: Linux is a kernel an OS


Kalau kita tambahkan opsi g, seperti ini:

$init =~ s/an OS/a kernel/g;

maka outputnya menjadi:

Linux is a kernel a kernel


Kalau kita ingin agar $init tidak berubah, maka kita dapat meng-assign hasil substitusi ke skalar yang lain. Jika contoh di atas kita ubah:

$end = $init) =~ s/an OS/a kernel/g;
print $end, $init;
maka outputnya:

Linux is a kernel a kernel
Linux is an OS an OS


Berikut ini adalah sebuah contoh penerapan regex untuk mengoreksi format Nomor Induk Mahasiswa: Aplikasi basis data di sebuah Perguruan Tinggi dari tahun ke tahun ditulis dalam sistem yang berganti-ganti, oleh orang yang berbeda, untuk kebutuhan yang berbeda juga.

Ketika diadakan pembenahan sistem, nampak inkonsistensi pada field NIM. Format yang diharapkan adalah dua digit nomor angkatan, titik, dua digit kode program studi, titik, empat digit nomor mahasiswa. Setelah data pada field tersebut dipelajari, dapat dihimpun sample data sebagai berikut (untuk kode prodi tertentu):



91.30.880
91 30 880
91 30 880
91 880
91.880
91.880
91 0880
91.0880
91 303
91.30.880
91-30-880
91-30-0880
91.30.0880

Karena banyaknya record yang harus diproses (dimulai dengan mahasiswa angkatan 1988), juga karena terbatasnya kemampuan "find and replace" yang dimiliki database, maka diperlukan cara lain. Jika masalah pengaksesan database kita abaikan, lalu kita berkonsentrasi pada masalah pengolahan string-nya, cobalah selesaikan dengan regex Perl.

Di bawah ini adalah salah satu cara dengan dua baris regex Perl:


while (<>) 
{
$prodi = "30"; s/^(\d\d)\D+(\d+)$/$1.$prodi.$2/;
s!^(\d\d)\D(\d\d)\D+(\d+)$!$1.".".$2.".".sprintf("%04d", $3)!e;print;
}

Bingung?

Ini adalah bentuk yang lebih mudah dibaca:


while (<>) 
{
$prodi = "30";

s/
^
(

\d\d #angkatan
)
\D+ #delimiter
(
\d+ #no. mhs
)
$
/$1.$prodi.$2/x; #sisipkan kode prodi,

#izinkan pencatuman comment dalam matching pattern

s!

^

(

\d\d

)

\D

(\d\d)

\D+ #delimiter antara kode prodi dan nomor

(\d+) #mhs bisa lebih dari satu non-digit char

$

!

$1.".".$2.".".sprintf("%04d", $3) #bentuk kembali dalam format yg benar

!xe; #evaluasi sisi kanan sbg ekspresi

print;

};


Regex yang pertama menyisipkan kode prodi, jika data belum mengandung kode prodi, lalu regex kedua memisahkan digit dari non-digit, memformat nomor mhs dalam empat digit, dan menyatukannya kembali dengan delimiter berupa titik.


Cobalah mengerjakannya dalam bahasa lain seperti C, Pascal, atau Basic :-) Jika operator substitusi nampak begitu berdayaguna, namun untuk penggantian karakter lebih efisien menggunakan operator tr/// .


Contoh:


$_ = "papi pipa da sini.";
tr/ai/ia/;
print "$_\n";


akan mencetak:

pipa papi di sana.

Opsi-opsi untuk operator tr/// silakan Anda pelajari di perlop.

5.6 Alternasi

Jika terhadap sebuah string kita ingin mencocokkan lebih dari satu pola, maka kita gunakan operator alternasi (|). Untuk menggunakan ini kita harus perhatikan urutan prioritas dari operator maupun item dalam kaitannya dengan pengelompokan (grouping).



Nama                    Simbol

--------------------------------

Tanda kurung ()

Multiplier +*?{m,n}

Sequence dan jangkar abc^$\b\B

Alternasi |

Berikut ini adalah contoh pemakaian operator alternasi:

/E|Addwin/; #Berbahaya! Lihat output script di bawah

/(E|Ad)dwin/; #cocok dengan Edwin atau Addwin, tapi juga mengeset $1

/(?:E|Ad)dwin/; #seperti di atas, tapi tidak mengeset $1.

/(?:[Ee]|[Aa]d)dwin/; #cocok juga dengan edwin atau addwin


Untuk jelasnya, kita coba script berikut:

@names = qw/Eddwin Edwin Ewin Ein Ei En E Addwin edwin addwin Adwin/;
@patts = qw/E|Addwin (E|Ad)dwin (?:E|Ad)dwin (?:[Ee]|[Aa]d)dwin/;
foreach $patt (@patts)

{
for (@names)
{
if (/$patt/)
{
print "/$patt/ cocok dengan $_\n";
if (defined($1)) {print '$1 bernilai: ', "$1\n";}
}
}
}
Outputnya:
/E|Addwin/ cocok dengan Eddwin
/E|Addwin/ cocok dengan Edwin
/E|Addwin/ cocok dengan Ewin
/E|Addwin/ cocok dengan Ein
/E|Addwin/ cocok dengan Ei
/E|Addwin/ cocok dengan En
/E|Addwin/ cocok dengan E
/E|Addwin/ cocok dengan Addwin
/(E|Ad)dwin/ cocok dengan Edwin

$1 bernilai: E

/(E|Ad)dwin/ cocok dengan Addwin

$1 bernilai: Ad

/(?:E|Ad)dwin/ cocok dengan Edwin
/(?:E|Ad)dwin/ cocok dengan Addwin
/(?:[Ee]|[Aa]d)dwin/ cocok dengan Edwin
/(?:[Ee]|[Aa]d)dwin/ cocok dengan Addwin
/(?:[Ee]|[Aa]d)dwin/ cocok dengan edwin
/(?:[Ee]|[Aa]d)dwin/ cocok dengan addwin

6. FUNGSI, LIBRARY, MODUL

6.1 Fungsi


Sebuah subrutin atau fungsi memiliki bentuk sebagai berikut:

sub foo
{
........ #tuliskan kode di sini
}
di mana foo adalah nama subrutin. Argumen-argumen yang dilewatkan ke subrutin dibaca melalui array @_.

Contoh:
sub foo
{
my($arg1, $arg2) = @_;
print "$arg1\n$arg2\n";
}

Variabel $arg1 dan $arg2 karena diciptakan melalui my() maka memiliki lingkup (scope) sebatas blok subrutin tersebut. Jika subrutin tersebut perlu mengembalikan nilai, maka nilai tersebut bisa langsung dituliskan di akhir blok.
Contoh:
sub banding
{
my($arg1, $arg2) = @_;

$arg1 > $arg2 ? 1 : ($arg1 < $arg2 ? -1 : 0);
}

Sebenarnya sebuah subrutin dapat mengembalikan tidak hanya skalar, tapi juga array, array asosiatif, dan beberapa macam lainnya. Untuk pembahasan lebih lengkapnya, baca perlsub. Fungsi sort() yang kita lihat pada pembahasan array di atas dapat kita gunakan dengan lebih fleksibel dengan membuat subrutin yang menentukan aturan sorting.
Contoh:
@scores = (68, 50, 30, 78, 5, 58);
@sorted_scores = sort by_num @scores;
print join(' ', @sorted_scores), "\n";
sub by_num
{
banding($a, $b); #subrutin banding() seperti di atas
}

Di sini kita lihat bahwa subrutin yang dilewatkan ke sort() memiliki keistimewaan yaitu diciptakannya secara otomatis variabel global $a dan $b yang berisi dua elemen array yang akan dibandingkan. Untuk lebih
efisien lagi, kita dapat gunakan operator ''piring terbang'' (spaceship operator), sehingga subrutin by_num menjadi:
sub by_num
{
$a <=> $b; #operator spaceship
}


Cobalah membuat sorting descending (dari besar ke kecil) dari array @scores di atas. Berikut ini adalah contoh lain penerapan sort(). Jika sebuah record disimpan sebagai sebuah array anonim, dengan elemen berturut-turut: nama, skor, dan umur, dan record-record tersebut akan di-sort dengan kriteria pertama nilai tertinggi, kriteria kedua umur,
dan kriteria ketiga nama siswa, maka kita dapat mengimplementasikannya sebagai berikut:

@students = (['joko', 60, 18],
['kabayan', 50, 20],
['acong', 50, 20],
['sitorus', 70, 20],
['ali', 70, 18]);
sub by_rank
{
$b->[1] <=> $a->[1] || $a->[2] <=> $b->[2] || $a->[0] cmp $b->[0];
}
@students = sort by_rank @students;
for (@students)
{
print $_->[0], ' ', $_->[1], ' ', $_->[2], "\n";
}

6.2 Library dan Modul


Sebelum OOP (Object Oriented Programming) dimasukkan ke Perl, library adalah cara yang terutama dipakai untuk menangani pemakaian kode secara berulang. Perbedaan utama antara library dan modul terletak pada enkapsulasi. Untuk menggunakan sebuah library, gunakan require.
Contoh:
require "find.pl";
Sedangkan untuk menggunakan sebuah modul, kita biasanya menggunakan use, meskipun sebenarnya bisa juga menggunakan require (dengan beberapa perbedaan penting, untuk jelasnya baca perlfaq8). Saat ini modul dirasakan lebih memadai karena semakin kuatnya kecenderungan untuk menggunakan perl pada pengembangan aplikasi-aplikasi besar, dan semakin banyaknya kode OOP (yang membutuhkan enkapsulasi yang memadai, yang mana hal ini didukung pada pemakaian modul). Daftar modul "resmi" dapat dilihat pada situs CPAN (Comprehensive Perl Archive Network) http://www.perl.com/CPAN-local/.
/>
Dokumentasi sebuah modul biasanya menyatu (embedded) pada modul tersebut, dan ditulis dalam format pod.

Sebagai contoh, misalkan kita ingin membaca dokumentasi modul Getopt::Std, maka:

$ perldoc Getopt::Std
Simbol :: berkaitan dengan letak modul tersebut di dalam direktori lib Perl.

Cobalah Anda jalankan:

$ perl -V
dan lihat array @INC yang berisi direktori-direktori di mana Perl akan mencari modul yang akan digunakan. Anda akan melihat subdirektori Getopt dalam salah satu dari direktori tersebut, dan subdir Getopt ini berisi file Std.pm.
Sekarang kita akan menggunakan modul Getopt::Std untuk memproses switch pada baris perintah (command-line). Modul ini juga mendukung clustering (pengelompokan) switch.

#!/usr/bin/perl
use Getopt::Std;
$options = 'o:n:d:f';
getopts $options or die;

print $opt_o, "\n";
print $opt_n, "\n";
print $opt_d, "\n";
print $opt_f, "\n";

edwin@skserver:~>> usestd -foMf -nmf -d/var/lib/
Mf
mf
/var/lib/
1


Pada contoh di atas kita melihat switch clustering pada -fo yang sebenarnya adalah dua switch yang terpisah: -f -o.
Perhatikan $options yang berisi switch apa saja yang akan digunakan. Switch yang membutuhkan argumen dituliskan dengan diikuti colon (:), sedangkan switch yang tidak membutuhkan argumen (disebut sebagai boolean flag),
ditulis tanpa diikuti colon.

Pada contoh di atas, switch -f adalah boolean flag. Lebih baik adalah dengan menggunakan hash:

#!/usr/bin/perl
use Getopt::Std;
$options = 'o:n:d:f';
%options = ();
getopts($options, \%options) or die;
for (sort keys %options)
{
print "$_: ", $options{$_}, "\n";
}


yang jika dijalankan sebagai script usestd1, hasilnya adalah:
edwin@skserver:~>> usestd1 -foMf -nmf -d/var/lib/

d: /var/lib/
f: 1
n: mf
o: Mf

7. SWITCH BARIS-PERINTAH (perlrun)



Perl memiliki sejumlah pilihan atau opsi yang dapat kita tentukan dengan melewatkan switch baris-perintah pada interpreter perl. Di sini kita lihat beberapa switch yang banyak digunakan.

-v : berfungsi untuk mencetak versi perl yang terinstall

-V : berfungsi untuk mencetak konfigurasi perl pada sistem Anda

-c : berfungsi untuk Compile only, check syntax error.

-w : berfungsi untuk Warning.

-n : berfungsi untuk Kita dapat membuat skrip yang bekerja seperti program cat,

contohnya
#!/usr/bin/perl
while(<>)
{
print;
}


Dengan opsi -n, kita dapat menulis skrip di atas menjadi lebih singkat:
#!/usr/bin/perl -n
print;
-p

Opsi ini mirip seperti -n, bedanya ia juga melakukan print $_ pada akhir blok while, sehingga kita dapat menulis ulang skrip di atas menjadi:
#/usr/bin/perl -p
-e
Dengan switch ini, perl tidak akan mencari namafile script, dan sebaliknya akan langsung mengeksekusi baris yang mengikutinya.
Contoh:
$ perl -ne 'print' Camel.syn Llama.syn
atau:

$ perl -pe '' Camel.syn Llama.syn

akan mencetak isi file Camel.syn dan Llama.syn

-0
Digunakan untuk menentukan input record separator berupa bilangan oktal. Efeknya seperti mengeset $/ (yang default-nya adalah \n).
Misalkan:
$ perl -n00 -e 'print "Record ke-", ++$i, ":\n$_\n"' ppperl.txt
Switch -00 akan mengeset $/ = " '', atau blank-line.
Jika pergantian paragraph ditandai dengan satu baris kosong (blank-line), maka pembacaan satu record akan sama dengan pembacaan satu paragraph.

Maka dari itu sering dikatakan bahwa switch -00 mengaktifkan modus paragraf. Nilai -0777 akan membaca seluruh isi file sebagai satu record.

-i

Berguna untuk melakukan pengubahan langsung pada teks yang sedang diolah.

Misalkan kita punya script berikut bernama rmcr:

#!/usr/bin/perl -p

s/\r\n/\n/;

yang membuang karakter CR (Carriage Return) pada akhir baris sebuah file teks, maka untuk menggunakannya adalah sbb:

$ rmcr the_file.txt > the_file.new

Lebih baik kalau pengubahan itu dilakukan langsung terhadap the_file.txt, dan ini dapat dilakukan dengan opsi -i.

$ perl -pi.old -e 's/\r\n/\n/' the_file.txt

old yang mengikuti opsi -i akan menentukan ekstensi bagi file backup yang diciptakan. Dengan cara demikian, maka perubahan (pembuangan karakter CR) langsung berpengaruh pada the_file.txt, dan juga diciptakan file the_file.txt.old sebagai backup dari the_file.txt yang lama.

-d : berfungsi untuk mengaktifkan symbolic debugger perl.

8.

PENUTUP 

 Saat ini pemakaian Perl telah berkembang pesat pada berbagai platform (http://www.perl.org/cgi-bin/survey/): AIX, Amiga, Digital UNIX, FreeBSD, HP-UX, IRIX, Linux, OS/2, Solaris, Win32, (dan masih banyak lagi), dan untuk berbagai keperluan yang sama sekali tidak terbayangkan ketika ia diciptakan.

Masih banyak yang belum tercakup dalam teks ini yang sekedar bermaksud menyediakan pengetahuan awal bagi orang yang ingin mengenal Perl lebih dalam. Penulis menyarankan sebagai bacaan lebih lanjut adalah buku-buku klasik seperti Programming Perl (Larry Wall dan Randal Schwartz), Learning Perl (Randal Schwartz dan Tom
Christiansen), Advanced Perl Programming (Sriram Srinivasan), meskipun sulit didapat dan muahall :-( Juga wajib dipelajari adalah perlfaq. Perlu rajin dipelajari adalah perl manpage.

9. APPENDIX

A. Membaca perlop

Appendix ini ditujukan untuk membantu mempelajari perlop, yaitu manual Perl yang membahas operator-operator.
Dari jumlah operand-nya, dibedakan jenis-jenis operator unary (1 operand), binary (2 operand), dan ternary (3 operand). Fungsi (subrutin) bisa ditulis sebagai operator unary.

Contoh:
chdir("new-dir"); #sebagai fungsi
chdir "new-dir"; #sebagai operator

Maka dari itu, dalam perlop kita menjumpai istilah operator unary bernama untuk menyebut operator-operator yang juga bisa digunakan sebagai fungsi, dan operator unary simbolik. Contoh operator unary simbolik adalah ++, dan --.

Operator-operator tertentu menerima operand berupa list (array), sehingga dikenal juga istilah operator list.

Sebagai contoh adalah fungsi atau operator print:

print('Cuma contoh.', "\n");#sebagai fungsi
print 'Cuma contoh.', "\n";#sebagai operator

Kemudian pada bagian SYNOPSIS di perlop, kita melihat tabel tingkat prioritas (precedence)
dan asosiativitas. Entri teratas adalah operator-operator dengan tingkat prioritas paling tinggi. Asosiativitas menjadi penting kalau sebuah ekspresi melibatkan beberapa operator yang tingkat prioritasnya sama. Untuk jelasnya, kita lihat entri teratas dari tabel tersebut:
left terms and list operators (leftward)

Ini berarti bahwa term dan operator-operator list memiliki asosiativitas left, yaitu evaluasi akan dilakukan dari kiri ke kanan. Kemudian ada catatan juga bahwa precedence dan asosiativitas tersebut berlaku untuk operator list dilihat dari sisi kiri (leftward). Jika kita perhatikan dalam tabel tersebut, operator list muncul lagi dengan tingkat prioritas yang jauh lebih rendah, jika dilihat dari sisi kanan (rightward).

Contoh:
@ary = (0, 3, sort 4, 2, 1);

Penjelasan: sort termasuk operator list. Di sisi kanan (rightward), sort memiliki tingkat prioritas yg lebih rendah daripada operator koma, maka operator koma akan terlebih dulu membentuk array berisi elemen 4, 2, 1.
Kemudian, di sisi kiri-nya (leftward), sort memiliki tingkat prioritas yang sangat tinggi, sehingga operasi sort dilakukan terlebih dulu terhadap array yang berisi 4, 2, dan 1.

Selanjutnya barulah operator koma membentuk array berisi elemen 1, 3, dan hasil sort (1, 2, dan 4), yang selanjutnya disimpan dalam @ary. Yang termasuk dalam term antara lain adalah variabel, operator-operator quote, ekspresi yang dituliskan dalam tanda kurung, dan fungsi.

Contoh:

@ary = (0, 3, sort(4, 2), 1);
for(@ary){print "$_ ";}

menghasilkan:

0, 3, 2, 4, 1.
Belajar Pemrograman Perl - tulisan gigih ini sangat mudah di fahami dan sangat bagus untuk di baca pemula, sebagian bahasa saya ubah, atau misalnya kependekan-kependekan saya panjangankan, dan bagian url saya hapus termasuk daftar isinya.

Belajar Setting Mikrotik - Belajar Pemrograman Java - Belajar Pemrograman Pascal Belajar PHP OOP

Cari Blog Ini

Arsip Blog

Diberdayakan oleh Blogger.

Postingan Populer