Kamis, 25 Juni 2009

kalender jawa

Buat top.txt :

Angga 11 3 1990
Dimas 19 8 1989
Inyonk 3 11 1989
Chyntia 27 9 1989
Iam 19 7 1989
Putra 9 2 1989
Mobed 12 5 1988
Dauz 10 4 1990
Anez 11 2 1990
Adit 10 1 1987
Tyo 17 9 1989
Denny 11 8 1990
Sisi 16 6 1990
Boni 28 10 1990
Tino 18 6 1989

Buat best.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 best.txt top.txt

maka akan muncul :

Angga Hari = MINGGU
Pasaran = PON
Dimas Hari = SABTU
Pasaran = WAGE
Inyonk Hari = JUM'AT
Pasaran = KLIWON
Chyntia Hari = RABU
Pasaran = PON
Iam Hari = RABU
Pasaran = PON
Putra Hari = KAMIS
Pasaran = PON
Mobed Hari = KAMIS
Pasaran = KLIWON
Dauz Hari = SELASA
Pasaran = PON
Anez Hari = MINGGU
Pasaran = KLIWON
Adit Hari = SABTU
Pasaran = PAHING
Tyo Hari = MINGGU
Pasaran = PON
Denny Hari = SABTU
Pasaran = LEGI
Sisi Hari = SABTU
Pasaran = KLIWON
Boni Hari = MINGGU
Pasaran = WAGE
Tino Hari = MINGGU
Pasaran = PAHING

Rabu, 24 Juni 2009

TUGAS 5

Pada tugas ke 5, adalah menampilkan hari lahir dengan menggunakan program AWK
Program ini untuk menentukan nama hari pada tanggal dengan sistem kalender Georgian. Masukan berupa beberapa tanggal lahir, misalkan yang disimpan dengan file nama.txt. Contoh input data nama orang :
aan 25 10 1988
varid 10 2 2009
aris 12 5 1990
jayen 16 12 1987
sunio 4 7 1989
ocol 8 9 1984
akil 20 11 1988
rizza 28 8 1987
luse 19 7 1989
ukih 17 2 1978
mika 17 3 1984
virsa 14 1 1987
cabyby 5 5 1990
ical 13 6 1988
vina 4 10 1984

Kemudian untuk syntax-nya sebagai proses, dengan membuat file dengan nama kalender.txt. Syntax :

{
#-hari-
hari[1] = "minggu"; hari[2] = "senin"; hari[3] = "selasa"; hari[4] = "rabu"; hari[5] = "kamis"; hari[6] = "jumat"; hari[0] = "sabtu";
#--jumlah--
jmlhri[0]=0; jmlhri[1]=31; jmlhri[2]=28; jmlhri[3]=31; jmlhri[4]=30; jmlhri[5]=31; jmlhri[6]=30; jmlhri[7]=31; jmlhri[8]=31; jmlhri[9]=30; jmlhri[10]=31; jmlhri[11]=30; jmlhri[12]=31;

jum = 0
tahun= $4-1
x = tahun % 4
z = tahun /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 += jmlhri[i] }
if ( $3 > 2){
tot = jumhari + jum + $2 +1}
else {
tot = jumhari + jum + $2 -1 }
}

else{
for (i = 1; i< $3; i++){
jum += jmlhri[i] }
tot = jumhari + jum + $2 -1
}

tothar = tot % 7


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

Kamis, 18 Juni 2009

Bujur Sangkar Ajaib

Pertama, kita membuat file dengan nama ajaib.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]);
}
}


Lalu masukkan rumus berikut pada terminal:

angga@angga-desktop:~$ echo 7 | awk -f ajaib.txt

"Echo 7 digunakan untuk membuat sebuat matiks dengan ordo 7x7".
Contoh lain misalnya bujur sangkar ajaib ordo 2x2, maka rumus menjadi:

angga@angga-desktop:~$ echo 2 | awk -f ajaib.txt

Hasil dari echo 7 tadi ialah :

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

Senin, 01 Juni 2009

Menghitung Diskon

BarangJumlahHarga satuan
CPU75500000
Printer51500000
Scaner82700000
Monitor103500000
Hardisk61200000
Mouse12100000
Webcam151000000

didapatkan dengan rumus sebagai berikut :

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

Bilangan Prima dengan AWK

Pada Progam bawah ini adalah program untuk "Menampilkan Bilangan Prima dengan bahasa pemrogaman AWK", dan program yang kita gunakan dengan menggunakan fungsi assosiative array, seperti pada contoh program dibawah ini :

$ ls -l | awk 'BEGIN {
Bilangan[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 Bilangan[i],i;} } }'

program di atas akan menampilkan bilangan prima antara 2 sampai dengan 100

Program Menghitung Nilai IPS

Pada program di bawah ini adalah contoh program AWK yang digunakan untuk menghitung nilai IP Sementara ( IPS ).
Contoh program menggunakan AWK :

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, "A", $8= 3*$2}}
{{if(61<=NA && NA<=70){print $1,$2, $3,$4,$5,$6,$7,NA, "A", $8= 2*$2}}
{{if(51<=NA && NA<=60){print $1,$2, $3,$4,$5,$6,$7,NA, "A", $8= 1*$2}}
{{if(0<=NA && NA<=50){print $1,$2, $3,$4,$5,$6,$7,NA, "A", $8= 0*$2}}
BEGIN {jumlah=0}
{jumlah=jumlah+$4}
END { print "Jumlah SKS = ", jumlah}
BEGIN { NT=0 }
{NT=NT+$8}
END{print " Total Nilai = ", NT}
BEGIN { IPS =0 }
{ IPK=NT/jumlah}
END {print " IPS = ", IPS}' nilai

Nilai yang dimaksud pada program di atas adalah file yang berisi data awal sebelum data tersebut diproses oleh program.

No-Nama-Mata Kuliah-Jumlah SKS-Nilai Tugas-Nilai UTS-Nilai UAS

1. Andik AWK 3 70 80 65

2. Anita Inggris 3 65 70 75

3. Rudi ARKOM 6 75 65 80

4. Sulistiowati OS 3 65 80 85

5. Anggi Matematika 2 70 70 80

6. Bunga Embedded 3 65 75 75

Tabel di atas, disimpan pada file dengan nama nilai. Nama file ini sesuai dengan user, sehingga dalam program tinggal memanggil file tersebut.

Rabu, 18 Maret 2009

APA SICH AWK ITU ???

POKOK BAHASAN
1. Apa AWK itu ?
2. Bagaimana sejarah AWK ?
3. Bagaimana cara menjalankan AWK ?
4. Struktur AWK
5. Instruksi-instruksi , variables , operator, Control Flow Statements dalam AWK

  1. Apa AWK itu ?
AWK adalah Suatu bahasa pemrograman untuk menangani tugas data manipulasi bersama dengan hanya menggunakan beberapa baris program, bahasa pola aksi (pattern action) dan sedikit mirip dengan bahasa C tetapi secara otomatis menangani masukan, pemisahan field, inisialisasi dan managemen memori.
AWK adalah bahasa pemrograman yang digunakan untuk memanipulasi teks.

2. Bagaimana sejarah AWK ?

AWK dikembangkan pada tahun 1977 di laboratorium AT&T sebagai bagian dari percobaan terhadap grep dan sed. Dengan kemampuan untuk menerima suatu pattern matching, kita dapat memanfaatkan AWK untuk mengembangkan sebuah aplikasi script yang dapat memanipulasi data dengan mudah. Awk dikembangkan oleh Aho, Peter Weinberger, and Brian Kernigan yang mana nama Awk itu sendiri berasal dari inisial nama mereka. Meskipun operasinya bisa sangat kompleks, namun sintaks untuk awk selalu :
awk ‘{pattern + action}''{filenames}‘
.
Pada tahun 1985 Awk mulai dikembangkan dengan merilis nawk(new awk) yang merupakan peningkatan dari awk itu sendiri . hal itu dilakukan untuk menambah peningkatan untuk facilitas pembuatan program yang lebih besar Adapun kelebihan dari nawk itu sendri dibanding awk yaitu:
• Ekspresi regular dinamis dalam menganti text dan pola pemakaian fungsi-fungsi
• Membangun variabel dan fungsi tambahan
• Operator baru dan statement
• Input bisa lebih dari satu file
• Mengakses argument/perintah setiap perbaris
• Lebih mudah menangani error karena ditunjuk langsung kesalahannya oleh compiler


3. Bagaimana cara menjalankan AWK ?

Pada Bahasa Pemograman awk ada beberapa cara menjalankan awk. Adapun cara-cara menjalankan awk yaitu:
• awk ‘program’ input_file(s) dalam cara ini program dan input file disajikan sebagai command line argument
• awk ‘program’ dalam cara ini program adalah command line argument yang mana input berasal dari standar input yang mana awk merupakan filter. Dalam hal ini kita dapat menggunakan “pipes” dan filter untuk output selanjutnya.
• awk -f program_file_name input_files dalam cara ini program dibaca dari sebuah file.

4. Struktur AWK


Pada tahap BEGIN: Proses Awal sebelum membaca data masukkan
Pada tahap pattern: Proses untuk input data dan pola atas action yang diberikan
Pada tahap END: Proses akhir dari program











5. Instruksi-instruksi , variables , operator, Control Flow Statements dalam AWK


Instruksi Seleksi:
-Selection by Comparison
contoh:$2 >=5 { print }
-Selection by Computation
contoh:$2 * $3 > 50 { printf(“%6.2f for %s\n”, $2 * $3, $1) }
-Selection by Text Content
contoh:$1 == “Susie”/Susie/
-Combinations of Patterns
contoh:$2 >= 4 || $3 >= 20

•Variabels
-$0, $1, $2, … ,$NF
-NR - Number of records read
-FNR - Number of records read from current file
-NF - Number of fields in current record
-FILENAME - name of current input file
-FS - Field separator, space or TAB by default
-OFS - Output field separator, space by default
-ARGC/ARGV - Argument Count, Argument Value array

•Operator
Dalam awk terdapat beberapa operator yang hampir memilki kemiripan dengan bahasa pemograman lainnya. Adapun operator dalam awk:
=, ==, !=, &&, ||, !|, <,>, <=, >=, +, -, / ,*, %, ^

•Control Flow Statements dalam awk
Beberapa jenis Control Flow Statements dalam awk yaitu:
1. If-Else
if (expression is true or non-zero){
statement1
}
else {
statement2
}
2. Loop Control
while (expression is true or non-zero) {
statement1
}
3. For
for(expression1; expression2; expression3) {
statement1
}
4. Do While
do {
statement1
}
while (expression)