Selasa, 17 Maret 2009

review materi pemrograman AWK pertemuan 1

AWK diimplementasikan atau diluncurkan pada tahun 1977 oleh Al Aho, Peter Weinberger dan Brian Kernigan. Program ini merupakan bagian dari sebuah percobaan untuk bagaimana grep dan sed dapat digeneralisasi dengan angka sebaik dengan teks dengan suatu algoritma yang pendek. Pada tahun 1985 new awk atau awk telah ditambahkan unutk memperbesar fasilitas program dari awk. Pada w awk terdapat feature yaitu user defined function.

Hal – hal yang membedakan awk dengan nawk yaitu :

- Ekspresi yang dinamic, fungsi pengganti dan bentuk matching

- Penambahan funsi dan variable internal

- Operator dan statement – statement baru

- Input dapat lebih dari 1 file

- Dapat mengakses command line argument

- Memberikan pesan error yang lebih detail

Tujuan pemrograman AWK yaitu untuk memberikan UNIX suatu tujuan umum bahasa pemrogramn yang dapat menghandle text (string) semudah mengolah angka – angka. Dan AWK adalah adalah salah satu fasilitas UNIX yang sangat baik untuk melakukan hal tersebut. Area proses AWK yaitu proses berdasarkan baris – baris prosesnya. AWK merupakan suatu standart permograman untuk nawk ( new awk) yang memiliki fasilitas yang lebih besar dari awk program.

Sumber – sumber input pemrograman AWK yaitu :

· File – file : input AWK dapat dari file – file yang kita upload kedalam program untuk dijadikan sebagi input dalamprogram

· redirection (pembelokan) : input – input yang diberikan dapat dialihkan sebagai input yang lain.

· pipes (pipa) : proses pipa dimana output suatu proses akan dijadikan sebagai input untuk proses yang lain

· Standart input : input yang berasal dari keybord sebagai input unutk suatu proses.

Menjalankan program awk

Menjalankan program awk ada beberapa cara yaitu :

- awk ‘program’ input_file(s)

program dan input disediakan sebagai command line argument

- awk ‘program’

input dari standart input

- awk -f program_file_name input_files

program membaca dari sebuah file

AWK sebagai filter

Awk sebagai filter dengan menggunakan metode pipa yaitu input pertama akan diproses akan emnghasilkan output yang pertama output yang pertama ini sebagai filter dengan kapasitas yang terbatas, untuk memfilter kembali maka output yang pertama akan menjadi input yang kedu dari proses fileter yang ledih terinci. Sebagai contoh menampilkan pekerja berdasarkan jumlah gaji yang mereka dapat. Programnya :

awk ‘{ printf(“%6.2f %s\n”, $2 * $3, $0) }’ emp.data | sort

Errors

dalam awk error yang terjadi dalam proses penulisan program, awk dapat mendiagnosa nya dengan memberikan pesan error. Jika menggunakan awk maka error reportnya

awk '$3 == 0 [ print $1 }' emp.data

awk: syntax error near line 1

awk: bailing out near line 1

jika menggunakan nawk

nawk '$3 == 0 [ print $1 }' emp.data

nawk: syntax error at source line 1

context is

$3 == 0 >>> [ <<<

1 extra }

1 extra [

nawk: bailing out at source line 1

1 extra }

1 extra [

Penanganan atau error reportnya nawk lebih detail tentang lokasi error dari pada awk.

Struktur program AWK

Sebuh program awak terdiri dari :

· BEGIN

untuk prioritas eksekusi pembacaan input

· Pattern - action

proses data input, pattern dapat lebih dari satu sehingga dapat sebagai penghubung antar aksi atau perintah yang diberikan. Default pattern cocok unutk setiap recordnya sedangkan action unutk menampilkan record.

· END : proses input data telah berakhir

Seleksi

Pattern awk baik unutk proses seleksi baris yang spesifik dari input atau unutk proses yagn lain. Ada beberapa macan seksi :

q Seleksi dengan perbandingan

u $2 >=5 { print }

q Seleksi dengna perhitungan

u $2 * $3 > 50 { printf(“%6.2f for %s\n”, $2 * $3, $1) }

q Seleksi dari isi teks

u $1 == “Susie”

u /Susie/

q Kombinasi dari pattern

u $2 >= 4 || $3 >= 20

Validasi Data

Validasi data adalah suatu operasi yang umum. Awk adalah yang terbaik dalammelakukan validasi data :

u NF != 3 { print $0, “number of fields not equal to 3” }

u $2 < 3.35 { print $0, “rate is below minimum wage” }

u $2 > 10 { print $0, “rate exceeds $10 per hour” }

u $3 < 0 { print $0, “negative hours worked” }

u $3 > 60 { print $0, “too many hours worked” }

Regular Expression in AWK

Pada dasarnya regular expression di awk sama dengan yagn kit gunakan. Dintarnya regular expression di awk yaitu :

u ^ $ - memulai/akhir dari field

u . – terdapat karakter

u [abcd] – klas karakter

u [^abcd] – negasi kelas karakter

u [a-z] – karakter range

u (regex1|regex2) – alternatif/pembelokan

u * - zero or more occurrences of preceding expression

u + - one or more occurrences of preceding expression

u ? - zero or one occurrence of preceding expression

u NOTE: the min max {m, n} or variations {m}, {m,} syntax is NOT supported

Variabel – variabel dalam AWK

dalam awk terdapat variabel – variabel default dari awk yaitu :

q NR – membaca jumlah record

q FNR – membaca jumlah record file yang sedang digunakan

q NF - Number of fields in current record

q FILENAME – nama dari input file

q FS - Field separator, space or TAB by default

q OFS - Output field separator, space by default

q ARGC/ARGV - Argument Count, Argument Value array

Array

Dalam awk terdapat array unutk menyimpan data yang memiliki nilai yang sama atau berhubungan. Format array dalam awk :

# reverse - print input in reverse order by line

{ line[NR] = $0 } # remember each line

END { i = NR # print lines in reverse order

while (i > 0) {

print line[i]

i = i - 1

}

}

Operator

operator dalam awak sama dengan operator dalm pemrograman pada umumnya yaitu terdiri dari operator logika dan aritmatikan biasa :

q = assignment operator; sets a variable equal to a value or string

q == equality operator; returns TRUE is both sides are equal

q != inverse equality operator

q && logical AND

q || logical OR

q ! logical NOT

q <, >, <=, >= relational operators

q +, -, /, *, %, ^

q String concatenation

Control Flow Statement

Dalam awk control flow atau looping sama dengan bahasa pemrogram yang lain yaitu terdapat if – else, do-while,for:

Ø If-Else

if (expression is true or non-zero){

statement1

}

else {

statement2

}

Ø While

while (expression is true or non-zero) {

statement1

}

Ø For

for(expression1; expression2; expression3) {

statement1

}

u This has the same effect as:

expression1

while (expression2) {

statement1

expression3

}

u for(;;) is an infinite loop

Ø Do While

do {

statement1

}

while (expression)

perkembangan bahasa pemrograman


Bahasa pemrograman mulanya yang dikenal yaitu suatu bahasa yang berisi algoritma untuk menyelesaikan suatu permasalahan. Bahasa pemrograman yang paling mendasar yaitu Bahasa Mesin (Mnemonic Code), bahasa ini diinterpretasikan pada mesin – mesin. Bahsa yang digunakan biasanya hanya kode – kode hexa. Bahasa mesin merupakan bahasa tingkat rendah dengan tingkat bahsa ayng sangat tidak user freindly ( sulit dimengerti ), namun bahasa ini memiliki kelebihan yaitu eksekusi yang sangat cepat.

Pengembangan dari bahasa mesin yaitu bahasa assembly. Pada bahasa assembly ini sudah tidak mengenal hanya 0 dan 1 lagi, namun ada beberapa symbol yang digunakan antara lain MOV, SUB, ADD dll. Pemrograman assembly lebih muda dipelajari daripada bahasa mesin, namun bahsa asssembly memiliki algoritma yang panjang unutk menghasilkan output atau algoritma yang diinginkan.

Bahasa pemrograman yang mudah dipelajari yaitu bahsa pemrograman yang digolongkan dngan bahsa tingkat tinggi. Bahasa ini mudah dimengerti seperti bahasa manusia. Contoh dari bahasa tingkat tinggi ini yaitu pascal, C, C++, basic dll. Namun pemrogramn ini memliki kelemahan yaitu waktu eksekusu yang lebih lama dibandingkan dengan bahasa – bahasa tingkat rendah. Bahasa – bahasa tingkat tinggi ini memiliki perkembangan perkembangan hingga saat ini yang memiliki inveronment yang lebih mudah untuk digunakan.

Generasi bahasa pemrograman dimulai pada tahun 1951. Pada tahun ini seorang yang bernama Grace Hopper yang bekerja pada Remington Rand mulai bekerja untuk mendesain sebuah compiler. Kemudian kompiler tersebut diberi nama A-0. Kompiler ini terus mengalami penyempurnaan hingga pada tahun 1957 kompiler tersebut dirilis. Bahasa pemrograman ini kemudian dirilis oleh Rand dengan nama Math-matic.

Kemudian, Alick E. Glenie, di waktu di waktu senggangnya di Unversitas Manchester, berhasil membuat programming system bernama AUTOCODE pada tahun 1952.

Sekitar lima tahun setelahnya dirilislah mathematical FORmula TRANslating (FORTRAN), dan digunakan pada tahun itu. FORTRAN dibuat oleh tim yang diketuai oleh John Backus, yang kemudian juga memeliki kontribusi dalam pembuatan bahasa pemrograman ALGOL. Bahasa pemrograman ini terus mengalami perkembangan serta penyempurnaan dalam penggunaan. Setelah satu melakukukan pengembangan akhirnya dirilis FORTRAN II. FORTRAN II memiliki kelebihan dibanding dengan FORTRAN yaitu mampu menjalankan perintah subroutines dan koneksi ke bahasa assembly. Dan, pada tahun yang sama juga dirilis bahasa pemrograman ALGOL yang merupakan kontribusi dari pengembang FORTRAN.

Setelah melakukan pengembangan akhhirnya pada tahun 1960 muncul ALGOL 60. Bahasa pemrograman ini sangat populer di Eropa pada pertengahan 1990-an. Pada tahun 1962, APL (A Programming Language) dirilis oleh Kenneth Iverson. Pada tahun yang sama, juga dirilis FORTRAN IV.

Perkembangan bahasa pemrograman terus berlanjut dengan munculnya berurutan APL/360 dan PL/1 pada tahun 1964, SNOBOL 3 pada tahun 1965, FORTRAN 66 dan LISP 2 pada tahun 1966, SNOBOL 4 pada tahun 1967, ALGOL 68, ALTRAN, dan COBOL.

Pada tahun 1975, Bob Albrecth dan Dennis Allison merilis Tiny BASIC. Pada tahun yang sama, Bill Gates dan Paul Allen merilis BASIC yang mereka jual ke MITS (Micro Instrumentation and Telemetry Systems).

Tahun-tahun selanjutnya, beberapa bahasa pemrograman baru bermunculan. Diantaranya AWK yang dirilis pada tahun 1978, Smalltalk-80, Modula-2, Franz LISP pada tahun 1980, dan ISO Pascal serta PostScript yang dirilis pada tahun 1982.

Pada tahun 1983 dirilis bahasa pemrograman Ada. Nama tersebut diambil dari Lady Augusta Ada Byron, yang menyandang gelar programer komputer pertama karena hasil kerjanya pada Charles Babbage's analystical engine di tahun 1842.

Tahun 1986, selain Apple telah merilis Object Pascal dan Borland merilis Turbo Prolog, pada tahun yang sama juga dirilis bahasa pemrograman C++ dan Eiffel. Setahun sesudahnya dirilis Turbo Pascal versi 4.0.

Bahas pemrograman C++ berkembang pesat dengan dirilisnya C++ 2.0 pada tahun 1989, dan C++ 2.1 pada tahun 1990. Ini berbarengan dengan dirilisnya FORTRAN 90. Setahun kemudian, Microsoft kembali merilis Visual Basic, yang kemudian memenangkan penghargaan BYTE's Best of Show saat COMDEX.

Bahasa pemrograman terus berkembang hingga pada tahun 1992 yang dipelopori oleh Patrick Naughton, Mike Sheridan, James Gosling dan Bill Joy, beserta sembilan pemrogram lainnya dari Sun Microsystems berhasil membuat pemrograman JAVA.

Bahasa pemrogran terus mengalami perkembangan samapi saat ini. Pemrograman yang semakin komplek dengan berbagai fasilitas untuk mempermudah pengguna bahasa pemrograman.

Pustaka :

} http://www.wikipedia.org

} Chip 600 tutorial ilmukomputer.com

} http://www.briangardner.com/perkembangan-bahasa-pemrograman

} http://rozyee.wordpress.com/2007/09/05/bahasa-pemrograman-dan perkembangannya/feed/