Kamis, 25 Juni 2009

KaLEnDer JawA

Buat deep.txt :

Ilham 11 3 1990
Chyntia 19 8 1989
Inyonk 3 11 1989
Way 27 9 1989
Damn 19 7 1989
Willy 9 2 1989
Sukma 12 5 1988
Ferry 10 4 1990
Yumi 11 2 1990
Rendy 10 1 1987
Wendy 17 9 1989
Lena 11 8 1990
Susi 16 6 1990
Bimo 28 10 1990
Tigor 18 6 1989

Buat score.txt :

{
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");

}
}
}

Di terminal, ketik :

$ awk -f score.txt deep.txt

maka akan muncul :

Ilham Hari = MINGGU
Pasaran = PON
Chyntia Hari = SABTU
Pasaran = WAGE
Inyonk Hari = JUM'AT
Pasaran = KLIWON
Way Hari = RABU
Pasaran = PON
Damn Hari = RABU
Pasaran = PON
Willy Hari = KAMIS
Pasaran = PON
Sukma Hari = KAMIS
Pasaran = KLIWON
Ferry Hari = SELASA
Pasaran = PON
Yumi Hari = MINGGU
Pasaran = KLIWON
Rendy Hari = SABTU
Pasaran = PAHING
Wendy Hari = MINGGU
Pasaran = PON
Lena Hari = SABTU
Pasaran = LEGI
Susi Hari = SABTU
Pasaran = KLIWON
Bimo Hari = MINGGU
Pasaran = WAGE
Tigor Hari = MINGGU
Pasaran = PAHING

Rabu, 24 Juni 2009

Kalender Gregorian

Buatlah file dengan nama lahir.txt :

adi 42 5 1989
mega 21 3 1990
ridho 18 2 1989
wendy 15 10 1989
toni 27 12 1987
dika 18 6 1990
hera 10 12 1989
vonny 13 2 1989

Tuliskan rumus berikut dengan nama input.txt :

{
thn=$4-1;
bln=$3-1;
thk=thn/4;
if(thn%4==1){b=0.25}
if(thn%4==2){b=0.50}
if(thn%4==3){b=0.75}
d=thk-b;
thb=thn-d;

if(bln==0 && $4%4!=0){a=0}
if(bln==1 && $4%4!=0){a=31}
if(bln==2 && $4%4!=0){a=59}
if(bln==3 && $4%4!=0){a=90}
if(bln==4 && $4%4!=0){a=120}
if(bln==5 && $4%4!=0){a=151}
if(bln==6 && $4%4!=0){a=181}
if(bln==7 && $4%4!=0){a=212}
if(bln==8 && $4%4!=0){a=243}
if(bln==9 && $4%4!=0){a=273}
if(bln==10 && $4%4!=0){a=304}
if(bln==11 && $4%4!=0){a=334}

if(bln==0 && $4%4==0){a=0}
if(bln==1 && $4%4==0){a=31}
if(bln==2 && $4%4==0){a=60}
if(bln==3 && $4%4==0){a=91}
if(bln==4 && $4%4==0){a=121}
if(bln==5 && $4%4==0){a=152}
if(bln==6 && $4%4==0){a=182}
if(bln==7 && $4%4==0){a=213}
if(bln==8 && $4%4==0){a=244}
if(bln==9 && $4%4==0){a=274}
if(bln==10 && $4%4==0){a=305}
if(bln==11 && $4%4==0){a=335}

jum=(thb*365)+(d*366)+a+$2;

if(jum%7==1){print $0," ","Lahir Minggu"}
if(jum%7==2){print $0," ","Lahir Senin"}
if(jum%7==3){print $0," ","Lahir Selasa"}
if(jum%7==4){print $0," ","Lahir Rabu"}
if(jum%7==5){print $0," ","Lahir Kamis"}
if(jum%7==6){print $0," ","Lahir Jumat"}
if(jum%7==0){print $0," ","Lahir Sabtu"}
}

Masukkan instruksi berikut :
iam@iam-desktop:~$ awk -f input.txt lahir.txt

4. Outputnya :
yodie 12 3 1988 Lahir Sabtu
ridho 27 5 1989 Lahir Sabtu
angga 17 7 1989 Lahir Senin
inyonk 5 9 1987 Lahir Selasa
tyo 2 10 1988 Lahir Minggu
komting 8 4 1989 Lahir Rabu
andik 7 11 1988 Lahir Kamis
ilham 23 12 1988 Lahir Senin

Kamis, 18 Juni 2009

Bujur Sangkar

buatllah file dengan nama bsang.txt

{ ordo[55,55]; #ordo bujur sangkar
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]);
}
}

Setelah selesai, lakukan rumus awk pada terminal seperti berikut:

iam@iam-desktop:~$ echo 7 | awk -f bsang.txt

Echo 7 untuk membuat persegi matriks ordo 7, bila kita ingin membuat yang lain, misalnya ;

iam@iam-desktop:~$ echo 4 | awk -f bsang.txt

Hasil sari instruksi echo 7 ialah seperti 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

Selasa, 02 Juni 2009

Buat File bernama harga dan isi seperti dibawah ini :

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","DISKON",
"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 }}' harga

Rabu, 13 Mei 2009

MENCARI BILANGAN PRIMA

Untuk menampilkan bilangan prima 2 - 100, digunakan program sebagai berikut :

$ 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;} } }'

Menentukan Nilai IPS

Untuk mencari Indeks Prestasi Sementara, kita dapat mencarinya dengan program berikut :

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

Data misalnya :
No. Nama Mata Kuliah Jumlah SKS Nilai Tugas Nilai UTS Nilai UAS
1. Wendy AWK 3 77 83 71
2. Wendy Rangkaian 6 81 83 89
3. Wendy OS 3 57 91 57
4. Wendy B.Inggris 2 80 86 83
5. Wendy Matematika 3 3 77 81 87

Rabu, 18 Maret 2009

Sekilas AWK

DEFINISI

AWK adalah bahasa pemrograman untuk memanipulasi data secara bersama hanya dengan program yang singkat karena bahasa AWK tidak memerlukan suatu deklarasi untuk variabel. AWK akan menangani input, pemisahan field, initialisasi, dan manajemen memori secara otomatis.
Seiring berjalannya waktu, bahasa AWK semakin kuat dengan munculnya GAWK dan NAWK.

Beberapa fitur tambahan pada NAWK adalah sebagai berikut :
• Ekspresi reguler dinamik
• Fungsi additional built-in dan variabel
• Operator baru and statement
• Input lebih dari 1 files
• Akses ke argumen baris perintah
• Mengubah pesan error


STRUKTUR AWK

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


STRUKTUR PATTERN - ACTIONS

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


CARA MENJALANKAN 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.


PENYIMPAN OUTPUT AWK

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


OUTPUT SEDERHANA 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.