Rabu, 24 Juni 2009

Membuat Kalender Jawa dengan Menggunakan AWK

Buatlah file lahir.txt dan isi sebagai berikut :

Amrozy 19 1 1976
Muklas 12 8 1977
Ghufron 17 2 1967
Aziz 27 6 1965
Samudra 15 4 1971
Abu 2 11 1970
Dujana 18 2 1970
Imron 17 11 1978
Azhari 13 12 1980
Abdul 14 7 1977


b). Kemudian buat rumus dengan nama kalender.txt seperti 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");

}
}
}
c). Setelah selesai compile program tersebut pada terminal dengan cara:

daus@daus-desktop:~$ awk -f kalender.txt lahir.txt

d). Maka output program di terminal tersebut adalah sebagai berikut:

daus@daus-desktop:~$ awk -f kalender.txt lahir.txt

Amrozy Hari = SENIN
Pasaran = PON
Muklas Hari = JUM'AT
Pasaran = WAGE
Ghufron Hari = JUM'AT
Pasaran = KLIWON
Aziz Hari = MINGGU
Pasaran = KLIWON
Samudra Hari = KAMIS
Pasaran = PON
Abu Hari = SENIN
Pasaran = WAGE
Dujan Hari = RABU
Pasaran = PAHING
Imron Hari = JUM'AT
Pasaran = LEGI
Azhari Hari = SABTU
Pasaran = PON
Abdul Hari = KAMIS
Pasaran = KLIWON

Kamis, 18 Juni 2009

Magic Square Ordo 7 x 7

Untuk Membuat Bujur Sangkar Ajaib ordo 7 x 7 dengan menggunakan bahasa AWK ialah sebagai berikut :

30 39 48 01 10 19 28
38 47 07 09 18 27 29
46 06 08 17 26 36 37
05 14 16 25 34 36 45
13 15 24 33 42 44 04
21 23 32 41 43 03 12
22 31 40 49 02 11 20

Untuk membuat bujur sangkar itu, pertama kita membuat file dengan nama sangkar.txt

{ ordo[55,55]; #ordo persegi
n=$1; #input matriks
X=1; #nilai awal
Y=1; #interval
Z=1; #interval pindah

for(a=0; a<=n+2; a++) #menghitung letak kolom dan baris
{ for(b=0; b<=n+2; b++)
ordo[a,b] = 0;
}
a=1; b=(n+1) / 2;
X-=Y;
for(N=1; N<=n*n;)
{ if(ordo[a,b]==0)
{ X+=Y;
ordo[a,b] = X;
if(a==n) ordo[0,b] = X;
if(b==1) ordo[a,n+1] = X;
if(a==n && b==1 ) ordo[0,n+1] = X;
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;
X=X-Y+Z;
}
}
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 tulis di terminal :
~$ echo 7 | awk -f sangkar.txt

Maka akan muncul bujur sangkar ajaib seperti di atas...

Kita dapat membuat bujur sangkar ajaib dengan ordo yang lain. Misalnya ordo 5 x 5. Instruksinya sama dengan di atas tapi yang membedakan adalah mengganti angka 7 dengan angka yang kita kehendaki, dalam hal ini ialah 5.

Sehingga instruksinya menjadi seperti di bawah ini ;
:~$ echo 5 | awk -f sangkar.txt

Hasil dari instruksi di atas ialah :

17 24 01 08 15
23 05 07 14 16
04 06 13 20 22
10 12 19 21 03
11 18 25 02 09

Selasa, 02 Juni 2009

Menghitung Diskon dalam Pembelian Barang

Buatlah file "diskon" yang berisi tabel seperti di bawah :

BarangJumlahHarga satuan
CPU75500000
Printer51500000
Scaner82700000
Monitor103500000
Hardisk61200000
Mouse12100000
Webcam151000000

Gunakan rumus di bawah ini :

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