Senin, 29 Juni 2009

Menampilkan Pasaran

Untuk menampilkan hari dan pasaran jawa dapat dibuat dengan script awk seperti dibawah ini, namun inputkan dulu tanggal lahir yang diiginkan pada file input.txt. Setelah itu masukkan script seperti dibawah ini untuk menampilkan hari dan pasarannya:

{


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


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;


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]); }


jalankan program dengan script dibawah ini:

awk -f kalender1 input.txt

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
Dimas 14 5 1988
Sandra 19 6 1989
Nana 21 7 1989
Diana 24 8 1988
Widi 12 11 1990
Bagus 2 12 1989
Hendra 22 1 1989
Heri 16 2 1989
Sari 7 4 1987
Mike 24 9 1989
Budi 7 3 1988
Chintia 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

The Magic Square

Berdasarkan program dibawah ini maka akan muncul program the magic square dengan file bernama magic.txt.

{ 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]);
}
}

Program tersebut akan dipanggil dalam terminal dengan perintah berikut :

echo 7 | awk -f Magic.txt

maka akan memiliki hasil sebagai berikut :
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

Senin, 01 Juni 2009

3rd ASSIGNMENT

MENGHITUNG HARGA BARANG SERTA DISKONNYA

Buat File bernama "barang" dan isikan file seperti yang diiginkan :
BarangJumlahHarga satuan
CPU75500000
Printer51500000
Scaner82700000
Monitor103500000
Hardisk61200000
Mouse12100000
Webcam151000000

setelah itu masukkan scrip awk dibawah ini :

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

Rabu, 13 Mei 2009

MENAMPILKAN NILAI IPS

Buat data awal seperti berikut pada file nilai!!!

No Nama MalKul SKS Tugas UTS UAS
1. Dimas RTOS 3 90 80 95
2. Dimas AWK 6 80 98 85
3. Dimas Matem 2 98 90 95
4. Dimas B.Inggris 2 99 95 100

Untuk Menampilkan IPS digunakan Program Berikut Ini :

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

Rabu, 06 Mei 2009

Menampilkan Bilangan Prima

PRIME WITH ASSOSIATIVE ARRAY IN AWK
$ 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==2 || i==3 || i==5 || i==7) {print bil[i],i;}}}'

Hasilnya adalah
2
3
5
.
.
.
97

Rabu, 18 Maret 2009

Review AWK's ( 2nd Week Syntax Directed Tools )

Review AWK

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. AWK akan melakukan handles input, field splitting, initialization, dan memory management secara otomatis. Seiring berjalannya waktu bahasa AWK semakin kuat dengan munculnya GAWK dan NAWK. Bebera fitur tambahan pada NAWK sbb :

• 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 dari program 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 {}.

Penyimpan Output dari AWK :
• Lining Up Fields ( printf=untuk menghasilkan output terformat )
Simple output dari AWK :
• 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.
• Dapat menampilkan output seluruh line apabila tidak terdapat pattern.
• Dapat menampilkan multiple items dengan 1 print statement.