Sabtu, 27 Juni 2009

Kalender Jawa

Sebuah kalender jawa juga dapat dibuat dengan Bahasa AWK ini. Untuk membuatnya, kita memerlukan sebuah file yang berisikan data ( input ) yang akan di proses. Misalnya saja nama.txt. Kemudian, untuk programnya, kita taruh pada file yang berbeda. Misalnya saja file bernama Kalender. File ini berisi program untuk menanpilkan pasaran tersebut, yaitu :

{

#----nama hari------

hari[1] = "minggu"; hari[2] = "senin"; hari[3] = "selasa"; hari[4] = "rabu"; hari[5] = "kamis"; hari[6] = "jumat"; hari[0] = "sabtu";

#----jumlah hari-----

jumhar[0]=0; jumhar[1]=31; jumhar[2]=28; jumhar[3]=31; jumhar[4]=30; jumhar[5]=31; jumhar[6]=30; jumhar[7]=31; jumhar[8]=31; jumhar[9]=30; jumhar[10]=31; jumhar[11]=30; jumhar[12]=31;

#----pasaran-------

pasar[1] = "pahing" ; pasar[2] = "pon"; pasar [3]= "wage"; pasar[4] = "kliwon"; pasar[0] = "legi";

jum = 0

thn= $4-1

x = thn % 4

z = thn /4

if ( x==1 ){

a=z-0.25}

if ( x==2 ){

a=z-0.5}

if ( x==3 ){

a=z-0.75}

thnkab = a*366

thnb = (thn - a)*365

jumhari = thnkab + thnb

if ($4 % 4== 0){

for (i=1; i< $3; i++){

jum += jumhar[i] }

if ( $3 > 2){

tot = jumhari + jum + $2 +1}

else {

tot = jumhari + jum + $2 -1 }

}

else{

for (i = 1; i< $3; i++){

jum += jumhar[i] }

tot = jumhari + jum + $2 -1

}

tothar = tot % 7

totpas = tot % 5

printf ("%-10s %-5d %-5d %-5d %-10s %-10s\n", $1, $2, $3, $4, hari[tothar], pasar[totpas]);
}

Setelah itu, kita tinggal memberikan perintah pada jendela terminal. Yaitu :

awk -f Kalender nama.txt

Pada output yang dihasilkan akan berupa input pada file nama.txt beserta pasaran masing-masing.

Rabu, 24 Juni 2009

Menampilkan hari dan pasaran dengan inputan tanggal lahir

pertama kita buat file input.txt yang berisi nama dan tanggal lahir:

Finna 1 10 1989
Widi 12 11 1990
Bagus 2 12 1989
Hendra 22 1 1989
Heri 16 2 1989
Anjar 7 4 1987
Dimas 14 5 1988
Sandra 19 6 1989
Nana 21 7 1989
Diana 24 8 1988
Mike 24 9 1989
Budi 7 3 1988
Crash 24 1 1989
Reza 12 2 1988
Randi 29 3 1989

kemudian kita membuat rumus dengan file rumus.txt, adapun rumusnya sebagai berikut:

{ nm=$1;
tgl=$2;
bln=$3;bln1=int(bln)
tahun=$4;
if (bln1<=12&&bln1!=0) {
thn=tahun-1;
thk=thn/4;
thb=thn-int(thk);
jumth=tahun%4;
bulan=bln-1;
if (jumth==0){
if(bulan==0)
i=31;
if(bulan==1)
i=62;
if(bulan==2)
i=91;
if(bulan==3)
i=122;
if(bulan==4)
i=152;
if(bulan==5)
i=183;
if(bulan==6)
i=213;
if(bulan==7)
i=244;
if(bulan==8)
i=275;
if(bulan==9)
i=305;
if(bulan==10)
i=336;
if(bulan==11)
i=366; }
else {
if(bulan==0)
i=31;
if(bulan==1)
i=62;
if(bulan==2)
i=90;
if(bulan==3)
i=121;
if(bulan==4)
i=151;
if(bulan==5)
i=182;
if(bulan==6)
i=212;
if(bulan==7)
i=243;
if(bulan==8)
i=274;
if(bulan==9)
i=304;
if(bulan==10)
i=335;
if(bulan==11)
i=365; }
kab=366*int(thk);
br=365*thb;
tothar=(kab)+(br)+i+tgl;
hr=tothar%7;

printf(nm); {
if(hr==0)
printf("\t\tHari = RABU\n");
else if(hr==1)
printf("\t\tHari = KAMIS\n");
else if(hr==2)
printf("\t\tHari = JUM'AT\n");
else if(hr==3)
printf("\t\tHari = SABTU\n");
else if(hr==4)
printf("\t\tHari = MINGGU\n");
else if(hr==5)
printf("\t\tHari = SENIN\n");
else
printf("\t\tHari = SELASA\n"); }
psr=tothar%5;{
if(psr==0)
printf("\t\tPasaran = KLIWON\n");
else if(psr==1)
printf("\t\tPasaran = LEGI\n");
else if(psr==2)
printf("\t\tPasaran = PAHING\n");
else if(psr==3)
printf("\t\tPasaran = PON\n");
else
printf("\t\tPasaran = WAGE\n");

} } }

Jika semua sudah selesai kita lakukan barulah kita jalankan ke 2 file tersebut dengan perintah
$ awk -f rumus.txt input.txt

Kamis, 18 Juni 2009

Magic Square

Untuk membuat magic square dalam AWK Languages, hal pertama yang kita lakukan adalah membuat sebuah file bernama MAGICSQUARE.txt. Kemudian isi file tersebut dengan perintah di bawah ini :

{ ordo[55,55];
n=$1;
K=1;
L=1;
M=1;

for(a=0; a<=n+2; a++)
{ for(b=0; b<=n+2; b++)
ordo[a,b] = 0;
}
a=1; b=(n+1) / 2;
K-=L;
for(N=1; N<=n*n;)
{ if(ordo[a,b]==0)
{ K+=L;
ordo[a,b] = K;
if(a==n) ordo[0,b] = K;
if(b==1) ordo[a,n+1] = K;
if(a==n && b==1 ) ordo[0,n+1] = K;
a--; b++; N++;
if(a==0&&b==n+1) continue;
else
{
if (a==0) a=n;
if(b==n+1) b=1;
}
}
else
{
a+=2;
b-=1;
K=K-L+M;
}
}
for(a=1; a<=n; a++)
T1+=ordo[a,n+1-a];

for(a=1; a<=n*5;a++)
printf(" ");
printf("%5d\n\n",T1);

for(a=1;a<=n+1;a++)
{
for(b=1; b<=n; b++)
{
printf("%5d", ordo[a,b]);
ordo[a,n+2] += ordo[a,b];
ordo[n+1,b] += ordo[a,b];
}
T2 += ordo[a,b];
if(a==n+1) ordo[a,n+2] = T2;
printf("%5d\n\n",ordo[a,n+2]);
}
}


Kemudian simpan file tersebut. Pada jendela terminal, kita berikan perintah untuk memanggil file MAGICSQUARE.txt :

echo 7 | awk -f bujursangkar.txt

Sehingga hasil yang ditampilkan adalah :

30 39 48 1 10 19 28 175

38 47 7 9 18 27 29 175

46 6 8 17 26 35 37 175

5 14 16 25 34 36 45 175

13 15 24 33 42 44 4 175

21 23 32 41 43 3 12 175

22 31 40 49 2 11 20 175

175 175 175 175 175 175 175 175


NOTE : echo 7 yang dimaksud pada perintah di atas adalah ordo 7x7. Sehingga apabila kita ingin membuat ordo selain 7 hanya tinggal menggantinya saja...

Senin, 01 Juni 2009

Perhitungan Harga Barang

perhitungan harga barang ini didasarkan pada data yang telah tersedia, data tersebut dimasukkan dalam sebuah file yang disimpan dalam direktori home dari user. berikut langkah membuat sriptnya :

1. Membuat file dengan nama harga_barang pada direktori home, berikut datanya
CPU 7 5500000
printer 5 1500000
scanner 8 2700000
Monitor 10 3500000
Hardisk 6 1200000
Mouse 12 100000
Webcam 15 1000000


2. dengan menggunakan script awk dibawah ini unutk menghitung dengan ketentuan sebagai beriukut :
-bila membeli barang 5 atau lebih, maka diskon 10%
-bila membeli barang 10 atau lebih, maka diskon 20%


awk 'BEGIN{printf "%-10s %-10s %-20s %-10s %-10s %s\n", "BARANG","JUMLAH","HARGA SATUAN","TOTAL","DISKON","BAYAR"}{if($2>=5 && $2 <10){printf "%-10s %-10s %-20s %-10s %-10s %s\n", $1,$2,$3,$4=$2*$3,$5=0.1*$4,$6=$4-$5 }}
{if($2>=10){printf "%-10s %-10s %-20s %-10s %-10s %s\n", $1,$2,$3,$4=$2*$3,$5=0.2*$4,$6=$4-$5 }}' harga_barang

3. hasilnya :
BARANG JUMLAH HARGA SATUAN TOTAL DISKON BAYAR
CPU 7 5500000 38500000 3850000 34650000
printer 5 1500000 7500000 750000 6750000
scanner 8 2700000 21600000 2160000 19440000
Monitor 10 3500000 35000000 7000000 28000000
Hardisk 6 1200000 7200000 720000 6480000
Mouse 12 100000 1200000 240000 960000
Webcam 15 1000000 15000000 3000000 12000000

Rabu, 13 Mei 2009

Menentukan NILAI IPS

Pada pertemuan ini, kita akan membuat suatu program yang bertujuan untuk menghitung nilai IP Sementara dengan menggunakan AWK. Untuk contoh program dapat dilihat seperti di bawah ini :

awk' { NA=0; NA=($5+$6+$7)/3}
{{if(81<=NA && NA<=100){print $1,$2, $3,$4,$5,$6,$7,NA, "A", $8= 4*$2}}
{{if(71<=NA && NA<=80){print $1,$2, $3,$4,$5,$6,$7,NA, "B", $8= 3*$2}}
{{if(61<=NA && NA<=70){print $1,$2, $3,$4,$5,$6,$7,NA, "C", $8= 2*$2}}
{{if(51<=NA && NA<=60){print $1,$2, $3,$4,$5,$6,$7,NA, "D", $8= 1*$2}}
{{if(0<=NA && NA<=50){print $1,$2, $3,$4,$5,$6,$7,NA, "E", $8= 0*$2}}
BEGIN {jumlah=0}
{jumlah=jumlah+$4}
END { print "Jumlah SKS= ", jumlah}
BEGIN { NT=0 }
{NT=NT+$8}
END{print " Nilai total = ", NT}
BEGIN { IPS =0 }
{ IPK=NT/jumlah}
END {print " IP Sementara=", IPS}' nilai

Nilai yang dimaksud merupakan file yang berisi data-data awal sebelum data tersebut terproses oleh program.

No. Nama Mata Kuliah Jumlah SKS Nilai Tugas Nilai UTS Nilai UAS
1. Randy AWK 3 70 80 75
2. Randy Rangkaian 6 80 89 88
3. Randy OS 3 55 90 67
4. Randy B.Inggris 2 80 80 89
5. Randy Matematika 3 3 75 82 80


Tabel di atas, kita simpan pada file yang diberi nama nilai. Nama file ini sesuai dengan user. sehingga dalam program kita tinggal memanggil file ini.

Bilangan Prima

Untuk menampilkan suatu bilangan prima dalam AWK, kita dapat menggunakan aturan assosiative array. seperti pada contoh program AWK di bawah ini :

$ ls -l | awk 'BEGIN {
Bil[100];
}
END {
for (i=2;i<=97;i++ ){ if(i%i==0 && i%2!=0 && i%3!=0 && i%4=0 && i%5!=0 && i%6!=0 && i%7!=0 && i%8!=0 && i%9!=0 || i==3 || i==5 || i==7|| i==2) {print Bil[i],i;} } }'

Apabila program tersebut dijalankan pada terminal, maka output yang dihasilkan adalah bilangan prima dimulai dari 2 hingga 100.

Rabu, 18 Maret 2009

Review materi pemrograman Pertemuan 1

RANGKUMAN AWK LANGUAGES

Bahasa AWK pertama kali dibuat pada tahun 1977 oleh Al Aho, Peter Weinberger, dan Brien Kernigan. AWK adalah bahasa pemrograman untuk memanipulasi data secara bersama hanya dengan program yang singkat. Hal ini dikarenakan pada bahasa AWK, kita tidak memerlukan suatu deklarasi untuk variable. Selain itu, AWK juga akan secara otomatis melakukan handles input, field splitting, initialization, dan memory management.

Kemudian pada tahun 1985, terdapat new AWK, tau NAWK. NAWK ini digunakan untuk pengembangan program yang lebih besar. Pada NAWK juga terdapat fitur tambahan, yaitu:

• Dynamic regular expression
• Additional built-in functions and variable.
• New operator and statement
• Input more than 1 files
• Access to command line arguments
• Improve error message

Structure dariprogram AWK adalah :

• BEGIN segment ( optional )
• Pattern-action pairs ( inputing data )
• END segment ( optional )

Pattern-action structure :

• Pattern terdaftar secara singkat, sedangkan actions diawali dan diakhiri oleh {}.

Cara menjalankan program AWK :

• AWK ‘program’ input_file(s) : program dan input merupakan perintah.
• AWK ‘program’ : program bertindak sebagai perintah, input berasal dari standart input.
• AWK –f program_file_name input_files : program dibaca dari suatu file.


Simple output dari AWK :

• Dapat menampilkan output seluruh line apabila tidak terdapat pattern.
• Dapat menampilkan multiple items dengan 1 print statement.
• Dapat menampilkan number of field ( NF )
• Dapat melakukan perhitungan pada nilai field dan menampilkannya sebagai output.
• Dapat menampilkan line numbers yang kita inginkan ( NR )
• Dapat menambahkan text pada output.


Penyimpan Output dari AWK :

• Lining Up Fields ( printf=untuk menghasilkan output terformat )


AWK sebagi seleksi :

• Berdasarkan perbandingan
• Berdasarkan perhitungan
• Berdasarkan isi text
• Berdasarkan kombinasi patterns.

AWK sebagai data validation

AWK sebagai program penghitungan
.

AWK sebagai Handling Text

AWK berisikan number of built-in functions.

AWK sebagai Flow Control statements untuk membuat keputusan dan menu;lis perulangan.

AWK sebagai Loop Control

AWK dilengkapi dengan arrays untuk menyimpan nilai data yang berhubungan.



Selasa, 17 Maret 2009

AWK Languages

SEJARAH PERKEMBANGAN BAHASA PEMROGRAMAN

Bahasa pemrograman mengalami berbagai perkembangan. Dianatranya adalah bahsa mesin ( mnemonic code ). Bahasa mesin ini terdiri dari kode2 mesin bilangan antara 1 dan 0 dan hanya dapat di interpretasikan oleh mesin computer. Kemudian berkembang menjadi bahasa assembly. Bahasa ini terdapat berbagai symbol untuk instruksi setnya. Sehingga menjadi lebih complex. Bahasa assembly ini sendiri memiliki debugging. Sehingga saat akan dijalankan, akan depriksa apakah terjadi kesalahan program atau tidak. Apabila tidak, maka program langsung merubah bahasa assembly ini ke dalam bahasa mesin. Kemudian bahasa assembly berkembang menjadi bahasa pemrograman tingkat tinggi. Bahasa ini lebih dekat dengan bahasa manusia. Sehingga akan lebih menjadi lebih mudah untuk membuat suatu program.

Perkembangan bahasa pemrograman dimulai dari :

• Pada tahun 1951, Grace Hopper yang bekerja pada Remington Rand mulai bekerja untuk mendesain sebuah compiler yang diberi nama A-0. Pada tahun 1957, 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 dibuat oleh tim yang diketuai oleh John Backus, yang kemudian juga memeliki kontribusi dalam pembuatan bahasa pemrograman ALGOL.
• Setahun kemudian, muncul FORTRAN II yang mampu menjalankan perintah subroutines dan koneksi ke bahasa assembly. Dan, pada tahun yang sama juga dirilis bahasa pemrograman ALGOL.
• 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 berurut-urut 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 saat ini, dengan adanya Java 2, Python, dan lain sebagainya.


RANGKUMAN AWK LANGUAGES

Bahasa AWK pertama kali dibuat pada tahun 1977 oleh Al Aho, Peter Weinberger, dan Brien Kernigan. AWK adalah bahasa pemrograman untuk memanipulasi data secara bersama hanya dengan program yang singkat. Hal ini dikarenakan pada bahasa AWK, kita tidak memerlukan suatu deklarasi untuk variable. Selain itu, AWK juga akan secara otomatis melakukan handles input, field splitting, initialization, dan memory management.

Kemudian pada tahun 1985, terdapat new AWK, tau NAWK. NAWK ini digunakan untuk pengembangan program yang lebih besar. Pada NAWK juga terdapat fitur tambahan, yaitu:

• Dynamic regular expression
• Additional built-in functions and variable.
• New operator and statement
• Input more than 1 files
• Access to command line arguments
• Improve error message

Structure dariprogram AWK adalah :

• BEGIN segment ( optional )
• Pattern-action pairs ( inputing data )
• END segment ( optional )

Pattern-action structure :

• Pattern terdaftar secara singkat, sedangkan actions diawali dan diakhiri oleh {}.

Cara menjalankan program AWK :

• AWK ‘program’ input_file(s) : program dan input merupakan perintah.
• AWK ‘program’ : program bertindak sebagai perintah, input berasal dari standart input.
• AWK –f program_file_name input_files : program dibaca dari suatu file.


Simple output dari AWK :

• Dapat menampilkan output seluruh line apabila tidak terdapat pattern.
• Dapat menampilkan multiple items dengan 1 print statement.
• Dapat menampilkan number of field ( NF )
• Dapat melakukan perhitungan pada nilai field dan menampilkannya sebagai output.
• Dapat menampilkan line numbers yang kita inginkan ( NR )
• Dapat menambahkan text pada output.

Penyimpan Output dari AWK :

• Lining Up Fields ( printf=untuk menghasilkan output terformat )

AWK sebagi seleksi :

• Berdasarkan perbandingan
• Berdasarkan perhitungan
• Berdasarkan isi text
• Berdasarkan kombinasi patterns.

AWK sebagai data validation
AWK sebagai program penghitungan.
AWK sebagai Handling Text
AWK berisikan number of built-in functions.
AWK sebagai Flow Control statements untuk membuat keputusan dan menu;lis perulangan.
AWK sebagai Loop Control
AWK dilengkapi dengan arrays untuk menyimpan nilai data yang berhubungan.