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