Rabu, 24 Juni 2009

Kalender Jawa

Tugas 5
1. membuat kalender
Pada tugas 5 kali ini kita akan membuat kalender dengan menggunakan bahasa pemrograman awk, dimana input berasal dari file yang berisi nama, tanggal, bulan dan tahun. output dari program adalah mengeluarkan kembali input dan ditambah nama bulan, nama hari dan nama pasaran. pada program saya kali ini input berasal dai file input.txt yang berisi:
putra 2 3 1989
hadi 11 7 1988
irawan 19 1 1989
jenggo 6 2009
ana 4 8 1987
lia 3 2 1992
ani 19 6 1989
ina 31 3 1989
rama 2 7 1988
sihnta 6 9 1993
shanti 31 3 2000
sisi 14 7 1990
joe 19 3 1980
bambang 26 3 1980
telwe 10 11 1062

selanjutnya kita buat program seperti berikut :

{
tgl=$2;
bln=$3;
thn=$4;
jm_hr=0;jum_kab=0;jum_biasa=0;

bulan[0] = 0;bulan[1] = 31;bulan[2] = 28;bulan[3] = 31;bulan[4] = 30;bulan[5] = 31;bulan[6] = 30;bulan[7] = 31;bulan[8] = 31;bulan[9] = 30;bulan[10] = 31;bulan[1] = 30;
#-----------------------------------------------------------------------
bulan_kab[0] = 0;bulan_kab[1] = 31;bulan_kab[2] = 29;bulan_kab[3] = 31;bulan_kab[4] = 30;bulan_kab[5] = 31;bulan_kab[6] = 30;bulan_kab[7] = 31;bulan_kab[8] = 31;bulan_kab[9] = 30;bulan_kab[10] = 31;bulan_kab[1] = 30;
#-----------------------------------------------------------------------
nama[1] = "januari";nama[2] = "pebruari";nama[3] = "maret";nama[4] = "april"; nama[5] = "mei";nama[6] = "juni";nama[7] = "juli";nama[8] = "agustus";nama[9] = "september";nama[10] = "oktober";nama[11] = "nopember";nama[12] = "desember";
#------------------------------------------------------------------------
pasaran[1] = "pahing" ; pasaran[2] = "pon"; pasaran [3]= "wage"; pasaran[4] = "kliwon"; pasaran[0] = "legi";
#-------------------------------------------------------------------------
hari[1] = "minggu"; hari[2] = "senin"; hari[3] = "selasa"; hari[4] = "rabu"; hari[5] = "kamis"; hari[6] = "jumat"; hari[0] = "sabtu";

if(thn%4==0){
for(i=0;i
jm_hr = jm_hr + bulan_kab[i];
}
}
else
for(i=0;i
jm_hr = jm_hr + bulan[i];
}

thn_b = thn-1;
kabisat = thn_b/4;
if(thn%2==0){
thn_biasa = thn - kabisat;
}
else
thn_biasa = thn - kabisat - 1;

for(j=1;j<=kabisat;j++){
jum_kab = jum_kab+366;
}
for(k=1;k<=thn_biasa;k++){
jum_biasa = jum_biasa+365;
}

if(bln>1){
tot_hari = jum_kab + jum_biasa + jm_hr+ tgl+1;
}
else
tot_hari = jum_kab + jum_biasa + jm_hr+ tgl;

sisa_pasaran = tot_hari%5;

sisa = tot_hari%7;
printf("%-10s %-5d %-5d %-5d %-10s %-10s %-10s\n",$1,$2,$3,$4, nama[bln], hari[sisa], pasaran[sisa_pasaran]);
}

Output yang ada adalah sebagai berikut :

putra 2 3 1989 kamis wage
hadi 11 7 1988 selasa kliwon
irawan 19 1 1989 kamis pahing
jenggo 6 2009 selasa pahing
ana 4 8 1987 senin pon
lia 3 2 1992 senin pahing
ani 19 6 1989 senin pon
ina 31 3 1989 jumat pon
rama 2 7 1988 sabtu legi
shinta 6 9 1993 senin pon
shanti 31 3 2000 jumat legi
sisi 14 7 1990 sabtu pon
joe 19 3 1980 rabu wage
bambang 26 3 1980 rabu legi
telwe 10 11 1062 senin kliwon

Make a Magic Square

*) Pada pertemuan kali ini kita akan mengerjakan bujur sangkar ajaib

program untuk membuat bujur sangkar ajaib adalah seperti dibawah ini. input bisa berupa file ataupun diinputkan dari pipelie echo. pada tugas kali ini saya menggunakan input dari file input _magic.txt yang berisi:
3 1 1 1
dimana kolom satu adalah input untuk memberi nilai pada umlah ordo yang akan ditentukan, misal untuk ordo 3x3 kita isikan 3, untuk 5x5 kita isikan 5 dst. kolom kedua digukanan untuk memberi nilai awal pada bujur sangkar ajaib, misal kita beri nilai satu maka nilai akan naik sari 1, 2, 3 dst. kolom kedua digunakan untuk memberi nilai kenaikan pada setiam 1 kali perpindahan. sedangkan kolom ketiga digunakan untuk memberi kenaikan nilai interval.

{
matrik[15,15]; #array untuk ordo maximal bujur sangkar
n=$1; #jumlah ordo yang dicari berada pada kolom 1
X=$2; #input nilai awal berada pada kolom 2
Y=$3; #nilai kenaikan, pada kol0m 3
Z=$4; #kenaikan setiap pindah interval, pada kolom 4

for(i=0; i<=n+2; i++)
{
for(b=0; b<=n+2; b++)
matrik[i,b] = 0;
}
i=1; b=(n+1) / 2;
X-=Y;
for(N=1; N<=n*n;)
{ if(matrik[i,b]==0)
{
X+=Y;
matrik[i,b] = X;
if(i==n)
matrik[0,b] = X;
if(b==1)
matrik[i,n+1] = X;
if(i==n && b==1 )
matrik[0,n+1] = X;
i--; b++; N++;
if(i==0&&b==n+1)
continue;
else
{
if (i==0) i=n;
if(b==n+1) b=1;
}
}
else
{
i+=2;
b-=1;
X=X-Y+Z;
}
}
for(i=1; i<=n; i++)
T1+=matrik[i,n+1-i];

for(i=1; i<=n*5;i++)
printf(" ");
printf("%5d\n\n",T1);

for(i=1;i<=n+1;i++)
{
for(b=1; b<=n; b++)
{
printf("%5d", matrik[i,b]);
matrik[a,n+2] += matrik[i,b];
matrik[n+1,b] += matrik[i,b];
}
T2 += matrik[i,b];
if(i==n+1)
matrik[i,n+2] = T2;
printf("%5d\n\n",matrik[i,n+2]);

}
}

lalu kita jalankan dengan program pada console sebagai berikut:
jenggo@jenggo-desktop:~$ awk -f magic.txt input_magic.txt

hasil dari program diatas adalah
15

8 1 6 15

3 5 7 15

4 9 2 15

15 15 15 15

Rabu, 10 Juni 2009

Sebelum membuat kode program,maka kita buat terlebih dahulu daftar harganya seperti di bawah ini:

Barang Jumlah Harga satuan
CPU 7 5500000
Printer 5 1500000
Scaner 8 2700000
Monitor 10 3500000
Hardisk 6 1200000
Mouse 12 100000
Webcam 15 1000000

Seelah itu kita buat programnya seperti 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 "%-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 suatu mahasiswa

Kali ini kita akan menuliskan listing program yang mempunya fungsi untuk menampilkan nilai IPS seorang mahasiswa dengan menggunakan bahasa pemrograman AWK.

sebelum memprogram ,maka kita harus membuat file yang didalamnya berisi nama,mata kuliah,jumlah sks,nilai tugas,nilai UTS, nilai UAS seperti contoh dibawah ini :

1. putra_hadi praktikum_embedded 3 76 84 88
2. putra_hadi praktikum_AWK 3 85 90 80
3. putra_hadi Teori_embedded 3 91 73 62
4. putra_hadi Teori_AWK 3 79 83 80
5. putra_hadi Matematika 2 66 83 88

Setelah itu kita tuliskan program AWK pada terminal linux seperti listing di bawah ini


awk' { awal=0; awal=($3+$4+$5)/3}{{if(81<=awal && awal<=100){print $1,$2, $3,$4,$5,awal, "A", $8= 4*$2}}{{if(71<=awal && awal<=80){print $1,$2, $3,$4,$5,awal, "A", $8= 3*$2}}{{if(61<=awal && awal<=70){print $1,$2, $3,$4,$5,awal, "A", $8= 2*$2}}{{if(51<=awal && awal<=60){print $1,$2, $3,$4,$5,awal, "A", $8= 1*$2}}{{if(0<=awal && awal<=50){print $1,$2, $3,$4,$5,awal, "A", $8= 0*$2}}BEGIN {jumlah=0}{jumlah=jumlah+$2}END { print "Jumlah SKS= ", jumlah}BEGIN { total=0 }{total=total+$8}END{print " Nilai total = ", total}BEGIN { IPK =0 }{ IPK=total/jumlah}END {print " IPK=", IPK}' nilai

Menampilkan Bilangan Prima dengan AWK

Pada tulisan ini saya berniat untuk menampilkan listing code AWK untuk menampilkan bilangan prima.Untuk lebih lanjut ,perhatikan code dibawah ini.

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

Rabu, 18 Maret 2009

Ringkasan 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
Cara menjalankan program 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.

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.

Selasa, 17 Maret 2009

Sejarah perkembangan komputer
Awal Mulanya adalah…
• Bahasa pemrograman pertama kali diciptakan sebelum munculnya komputer modern, dan masih berbentuk kode.
• Pada awal kemunculannya, yaitu sekitar tahun 1842-1843, bahasa pemrograman masih berupa bahasa mesin (machine language). Bahasa mesin merupakan bahasa yang terdiri dari kode-kode mesin dan hanya dapat diinterpretasikan langsung oleh mesin komputer. Bahasa ini merupakan level terendah dari bahasa pemrograman komputer dan hanya berupa 0 dan 1.
• Seiring dengan kebutuhan dan perkembangan teknologi para programer mulai mengahadapi masalah dengan bahasa mesin, karena selain sulit dibuat dan dibaca juga akan sulit memperbaiki bila terjadi kesalahan coding. Sekitar tahun 1940an diciptakanlah bahasa assembly (Assembly language). Bahasa assembly adalah bahasa simbol dari bahasa mesin. Setiap kode bahasa mesin memiliki simbol sendiri dalam bahasa assembly. Misalnya ADD untuk penjumlahan, MUL untuk perkalian, SUB untuk pengurangan, dan lain-lain.
• Penggunaan bahasa Asembly dirasa belum sempurna karena selain sulit untuk diimplementasikan, ternyata bahasa ini juga sulit jika sang programer ingin mengembangkan program buatannya. Kemudian pada tahun 1950-1960 dibuatlah Bahasa Tingkat Tinggi (High Level Language) atau bahasa pemrograman modern, bahasa ini menggunakan istilah atau frase-frase yang dekat dengan bahasa manusia, sehingga musah untuk ditulis. Hingga saat ini kita menggunakan bahasa tingkat tinggi.
• Dalam perkembangannya Bahasa Tingkat Tinggi juga terdiri dari beberapa metode pemrograman, yaitu Procedural Programing dan Object Oriented Programing. Letak perbedaannya yaitu, jika pada procedural programing program dijalankan dengan menggabungkan variable, procedure-procedure yang saling keterkaitan dan berjalan berurut, sedangkan pada OOP seluruh task dijalankan berdasarkan kedalam object.
Generasi Bahasa Pemrograman
• First generation bahasa mesin atau level instruksi dan data, yang diberikan kepada prosesor agar dapat bekerja. Pada komputer konvensional terdiri dari deretan angka 0 dan 1
• Second-Generation Language (2GL) adalah bahasa pemrograman assembler (orang juga mengenalnya sebagai bahasa assembly). Pada bahasa perograman generasi kedua ini assembler mengubah pernyataan bahasa pemrograman ke bahasa mesin.
• Third-Generation Language (3GL) merupakan bahasa pemrograman yang masukdalam generasi ketiga. Ini adalah bahasa pemrograman tingkat tinggi, seperti PL/1, C,atau Java. Untuk dapat menggunakan bahasa pemrograman ini, dibutuhkan pengetahuan dan penguasaan terhadap bahasa pemrograman itu sendiri. Dalam bahasa pemrograman, sebuah compiler akan mengubah pernyataan yang dibuat oleh bahasa pemrograman ke bahasa mesin. Misal pada bahasa pemrograman Java, diperoleh output yang disebut bytecode. Output ini kemudian akan diubah ke bahasa mesin oleh Java Virtual Machine.
• Fourth-Generation Language (4GL) adalah bahasa pemrograman yang didesain lebih “natural”, sehingga makin mudah digunakan. Pada generasi keempat ini, bahasa pemrograman sudah dapat digunakan untuk mengakses sebuah data base.