Bahasa Pemrograman &
Perangkat Pengolahan Langsung


Tugas 6 Kalender Jawa

Buatlah file yang ingin anda ketahui tanggal lahirnya, simpan dengan file lahir.txt, seperti dibawah ini:

agus 17 2 1987
farid 12 8 1988
erik 27 6 1988
yoyok 15 4 1987
doni 2 11 1988
wawan 18 2 1987
dimas 17 11 1988
sigit 13 12 1989
romy 14 7 1988
dedi 25 3 1986
yopi 3 4 1990
yusuf 16 5 1988
ahmadi 30 4 1988
faruk 27 7 1990
evan 19 3 1989

dan rumusnya simpanlah di file yang beda dengan nama tanggal.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%5==1){f="Pahing"}
if(jum%5==2){f="Pon"}
if(jum%5==3){f="Wage"}
if(jum%5==4){f="Kliwon"}
if(jum%5==0){f="Legi"}

if(jum%7==1){printf("%s %d %d %d Lahir Minggu %s\n",$1,$2,$3,$4,f)}
if(jum%7==2){printf("%s %d %d %d Lahir Senin %s\n",$1,$2,$3,$4,f)}
if(jum%7==3){printf("%s %d %d %d Lahir Selasa %s\n",$1,$2,$3,$4,f)}
if(jum%7==4){printf("%s %d %d %d Lahir Rabu %s\n",$1,$2,$3,$4,f)}
if(jum%7==5){printf("%s %d %d %d Lahir Kamis %s\n",$1,$2,$3,$4,f)}
if(jum%7==6){printf("%s %d %d %d Lahir Jumat %s\n",$1,$2,$3,$4,f)}
if(jum%7==0){printf("%s %d %d %d Lahir Sabtu %s\n",$1,$2,$3,$4,f)}
}

Setelah selesai, buka terminal anda dan ketikkan program awk anda, seperti berikut:

andy@andy-laptop ~:$ awk -f tanggal.txt lahir.txt

Kemudian output tersebut akan menampilkan kalendernya sebagai berikut :

andy@andy-laptop ~:$ awk -f tanggal.txt lahir.txt

TUGAS 5 : kalender georgian

tugas ke 5 ini 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 lahir.txt, Contoh input data nama orang :
ari 23 9 1989
aming 10 2 2009
arip 12 5 1990
beni 16 12 1987
cici 4 7 1989
deni 8 9 1984
demian 20 11 1988
rizuki 28 8 1987
limbad 29 6 1989
jo 17 2 1978
abu 17 3 1984
mike 14 1 1987
bayu 5 5 1990
sonia 13 6 1988
zakaria 5 11 1985

Kemudian untuk syntax-nya sebagai proses, dengan membuat file dengan nama tanggalan.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]);
}

Membuat Bujur Sangkar Ajaib menggunakan AWK

Pada tugas 4 yaitu membuat bujur sangkar ajaib dengan menggunakan AWK ini langkah awal buat dahulu 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

{ 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 rumus bujur sangkar ajaib diatas dimasukkan dalam dokument ajaib.txt maka dalam terminal bisa di tampilkan dengan menggunakan perintah :

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

yang mana Echo 7 ini digunakan untuk membuat sebuat matiks ordo 7x7.
Contoh lain misalnya bujur sangkar ajaib ordo 5x5, maka rumus menjadi:

andy@andy-desktop:~$ echo 5 | awk -f ajaib.txt

Hasil untuk sebuah matriks ordo 7x7 seperti dibawah ini :

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

Mencari Harga Barang & Diskon dengan AWK

BarangJumlahHarga satuan
CPU75500000
Printer51500000
Scaner82700000
Monitor103500000
Hardisk61200000
Mouse12100000
Webcam151000000

untuk mencari Harga Barang dan Diskonnya dengan AWK menggunakan rumus Seperti 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 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

Menghitung Nilai IPS

Pada Pertemuan kali ini, kita akan membuat program untuk menghitung nilai IP Sementara (IPS), program tersebut dibuat dengan menggunakan AWK. Seperti pada contoh programnya dibawah ini :

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 " Nilai total = ", NT}
BEGIN { IPS =0 }
{ IPK=NT/jumlah}
END {print " IP Sementara=", IPS}' nilai

Nilai yang dimaksud merupakan file yang berisi data-data awal sebelum data tersebut terproses oleh program.

No-Nama-Mata Kuliah-Jumlah SKS-Nilai Tugas-Nilai UTS-Nilai UAS
1. Doni AWK 3 75 85 60
2. Erik Embeded 3 65 80 75
3. Evan Pemrograman 6 70 65 90
4. Suci OS 3 60 85 85
5. Zahratun Matematika 2 70 70 80

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

Menampilkan Bilangan Prima dalam AWK

Pada Pertemuan kali ini kita akan membuat Program untuk "Menampilkan Bilangan Prima Dalam AWK", yang mana program yang kita gunakan menggunakan fungsi aturan assosiative array, seperti pada contoh programnya dibawah ini :

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

ketika program dijalankan maka program akan menampilkan bilangan prima antara 2 sampai 100

Review AWK pertemuan 1

AWK diimplementasikan atau diluncurkan pada tahun 1977 oleh Al Aho, Peter Weinberger dan Brian Kernigan. Program ini merupakan bagian dari sebuah percobaan untuk bagaimana grep dan sed dapat digeneralisasi dengan angka sebaik dengan teks dengan suatu algoritma yang pendek. Pada tahun 1985 new awk atau awk telah ditambahkan unutk memperbesar fasilitas program dari awk. Pada w awk terdapat feature yaitu user defined function.

Hal – hal yang membedakan awk dengan nawk yaitu :

- Ekspresi yang dinamic, fungsi pengganti dan bentuk matching

- Penambahan funsi dan variable internal

- Operator dan statement – statement baru

- Input dapat lebih dari 1 file

- Dapat mengakses command line argument

- Memberikan pesan error yang lebih detail

Tujuan pemrograman AWK yaitu untuk memberikan UNIX suatu tujuan umum bahasa pemrogramn yang dapat menghandle text (string) semudah mengolah angka – angka. Dan AWK adalah adalah salah satu fasilitas UNIX yang sangat baik untuk melakukan hal tersebut. Area proses AWK yaitu proses berdasarkan baris – baris prosesnya. AWK merupakan suatu standart permograman untuk nawk ( new awk) yang memiliki fasilitas yang lebih besar dari awk program.

Sumber – sumber input pemrograman AWK yaitu :

· File – file : input AWK dapat dari file – file yang kita upload kedalam program untuk dijadikan sebagi input dalamprogram

· redirection (pembelokan) : input – input yang diberikan dapat dialihkan sebagai input yang lain.

· pipes (pipa) : proses pipa dimana output suatu proses akan dijadikan sebagai input untuk proses yang lain

· Standart input : input yang berasal dari keybord sebagai input unutk suatu proses.

Menjalankan program awk

Menjalankan program awk ada beberapa cara yaitu :

- awk ‘program’ input_file(s)

program dan input disediakan sebagai command line argument

- awk ‘program’

input dari standart input

- awk -f program_file_name input_files

program membaca dari sebuah file

AWK sebagai filter

Awk sebagai filter dengan menggunakan metode pipa yaitu input pertama akan diproses akan emnghasilkan output yang pertama output yang pertama ini sebagai filter dengan kapasitas yang terbatas, untuk memfilter kembali maka output yang pertama akan menjadi input yang kedu dari proses fileter yang ledih terinci. Sebagai contoh menampilkan pekerja berdasarkan jumlah gaji yang mereka dapat. Programnya :

awk ‘{ printf(“%6.2f %s\n”, $2 * $3, $0) }’ emp.data | sort

Errors

dalam awk error yang terjadi dalam proses penulisan program, awk dapat mendiagnosa nya dengan memberikan pesan error. Jika menggunakan awk maka error reportnya

awk '$3 == 0 [ print $1 }' emp.data

awk: syntax error near line 1

awk: bailing out near line 1

jika menggunakan nawk

nawk '$3 == 0 [ print $1 }' emp.data

nawk: syntax error at source line 1

context is

$3 == 0 >>> [ <<<

1 extra }

1 extra [

nawk: bailing out at source line 1

1 extra }

1 extra [

Penanganan atau error reportnya nawk lebih detail tentang lokasi error dari pada awk.

Struktur program AWK

Sebuh program awak terdiri dari :

· BEGIN

untuk prioritas eksekusi pembacaan input

· Pattern - action

proses data input, pattern dapat lebih dari satu sehingga dapat sebagai penghubung antar aksi atau perintah yang diberikan. Default pattern cocok unutk setiap recordnya sedangkan action unutk menampilkan record.

· END : proses input data telah berakhir

Seleksi

Pattern awk baik unutk proses seleksi baris yang spesifik dari input atau unutk proses yagn lain. Ada beberapa macan seksi :

q Seleksi dengan perbandingan

u $2 >=5 { print }

q Seleksi dengna perhitungan

u $2 * $3 > 50 { printf(“%6.2f for %s\n”, $2 * $3, $1) }

q Seleksi dari isi teks

u $1 == “Susie”

u /Susie/

q Kombinasi dari pattern

u $2 >= 4 || $3 >= 20

Validasi Data

Validasi data adalah suatu operasi yang umum. Awk adalah yang terbaik dalammelakukan validasi data :

u NF != 3 { print $0, “number of fields not equal to 3” }

u $2 <>

u $2 > 10 { print $0, “rate exceeds $10 per hour” }

u $3 <>

u $3 > 60 { print $0, “too many hours worked” }

Regular Expression in AWK

Pada dasarnya regular expression di awk sama dengan yagn kit gunakan. Dintarnya regular expression di awk yaitu :

u ^ $ - memulai/akhir dari field

u . – terdapat karakter

u [abcd] – klas karakter

u [^abcd] – negasi kelas karakter

u [a-z] – karakter range

u (regex1|regex2) – alternatif/pembelokan

u * - zero or more occurrences of preceding expression

u + - one or more occurrences of preceding expression

u ? - zero or one occurrence of preceding expression

u NOTE: the min max {m, n} or variations {m}, {m,} syntax is NOT supported

Variabel – variabel dalam AWK

dalam awk terdapat variabel – variabel default dari awk yaitu :

q NR – membaca jumlah record

q FNR – membaca jumlah record file yang sedang digunakan

q NF - Number of fields in current record

q FILENAME – nama dari input file

q FS - Field separator, space or TAB by default

q OFS - Output field separator, space by default

q ARGC/ARGV - Argument Count, Argument Value array

Array

Dalam awk terdapat array unutk menyimpan data yang memiliki nilai yang sama atau berhubungan. Format array dalam awk :

# reverse - print input in reverse order by line

{ line[NR] = $0 } # remember each line

END { i = NR # print lines in reverse order

while (i > 0) {

print line[i]

i = i - 1

}

}

Operator

operator dalam awak sama dengan operator dalm pemrograman pada umumnya yaitu terdiri dari operator logika dan aritmatikan biasa :

q = assignment operator; sets a variable equal to a value or string

q == equality operator; returns TRUE is both sides are equal

q != inverse equality operator

q && logical AND

q || logical OR

q ! logical NOT

q <, >, <=, >= relational operators

q +, -, /, *, %, ^

q String concatenation

Control Flow Statement

Dalam awk control flow atau looping sama dengan bahasa pemrogram yang lain yaitu terdapat if – else, do-while,for:

Ø If-Else

if (expression is true or non-zero){

statement1

}

else {

statement2

}

Ø While

while (expression is true or non-zero) {

statement1

}

Ø For

for(expression1; expression2; expression3) {

statement1

}

u This has the same effect as:

expression1

while (expression2) {

statement1

expression3

}

u for(;;) is an infinite loop

Ø Do While

do {

statement1

}

while (expression)

Sejarah Perkembangan Bahasa Pemrograman

Generasi Bahasa Pemrograman

Pada industri komputer dikenal pembagian generasi yang menandai sebuah evolusi dalam bahasa pemrograman. ada lima generasi dalam bahasa pemrograman.

First Generation Language bahasa mesin atau level instruksi dan data, yang diberikan kepada prosesor agar dapat bekerja. Pada komputer konvensional terdiri dari deretan angka0 dan 1. Second-Generation Language (2GL) adalah bahasa pemrograman assembler (orang juga mengenalnya sebagai bahasa assembly). Third-Generation Language (3GL) merupakan bahasa pemrograman yang masuk dalam 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 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. Fifth-Generation Language (5GL) adalah bahasa pemrograman yang menggunakan interface pengembangan visual atau grafik untuk membuat bahasa sumbernya, yang biasanya di-compile dengan compiler 3GL atau 4GL Microsoft, Borland, IBM dan perusahaan lain memroduksi pemrograman visual 5GL, contohnya untuk pengembangan aplikasi Java Pemrograman visual memungkinkan Anda untuk membayangkan dengan mudah hirarki dari kelas pemrograman yang berorientasi obyek, dan men-drag ikon-ikon untuk menyusun komponen program.

PERKEMBANGAN

Perkembangan bahasa pemrograman dimulai pada tahun 1949 dengan hadirnya Short Code, bahasa pemrograman komputer pertama yang digunakan dalam peralatan komputer elektronik. Ini masih berupa bahasa pemrograman manual (hand-compiled).
Pada tahun 1951, Grace Hopper yang bekerja pada Remington Rand mulai bekerja untuk mendesain sebuah compiler yang diberi nama A-0. Pada tahun 1957, bahasa pemrograman ini kemudian dirilis oleh Rand dengan nama Math-matic.
Alick E. Glennie, di waktu senggangnya di Universitas Manchester, berhasil membuat programming system bernama AUTOCODE pada tahun 1952. Sekitar lima tahun setelahnya dirilislah mathematical FORmula TRANslating (FORTRAN), dan menjadi salah satu bahasa pemrograman yang mudah digunakan pada tahun itu. FORTRAN dibuat oleh tim yang diketuai oleh John Backus, yang kemudian juga memiliki konstribusi dalam pembuatan bahasa pemrograman ALGOL
Setahun kemudian, muncul FORTRAN II yang mampu menjalankan perintah subroutines dan koneksi ke bahasa assembly. Dan, pada tahun yang sama juga dirilis bahasa pemrograman ALGOL. Pada tahun 1960 muncul ALGOL 60. Bahasa pemrogramana ini sangat popular di Eropa pada pertengahan 1960-an. Pada tahun 1962, APL (A Programming Language) dirilis oleh Kenneth Iverson. Pada tahun yang sama juga dirilis FORTRAN IV.
Perkembangan bahasa pemrograman terus berlanjut dengan munculnya berturutturut APL/360 dan PL/1 pada tahun 1964, SNOBOL3 pada 1965, FORTRAN 66 dan LISP 2 pada 1966, SNOBOL 4 pada 1967, ALGOL 68, ALTRAN, dan COBOL.
Pada tahun 1975, Bob Albrecht dan Dennis Allison merilis Tiny BASIC.
Pada tahun yang sama, Bill Gates dan Paul Allen merilis BASIC yang mereka jual ke MITS (Micro Instrumentation and Telemetry Systems). Tahun-tahun selanjutnya, beberapa bahasa pemrograman baru bermunculan. Di antaranya AWK yang dirilis tahun 1978; Smalltalk-80, Modula-2, Franz LISP pada tahun 1980; dan ISO Pascal serta PostScript yang dirilis pada tahun 1982. Pada tahun 1983 dirilis bahasa pemrograman Ada.
Nama tersebut diambil dari Lady Augusta Ada Byron, yang menyandang gelar programer komputer pertama karena hasil kerjanya pada Charles Babbage’s analytical engine di tahun 1842.
Tahun 1986, selain Apple telah merilis Object Pascal dan Borland merilis Turbo Prolog. Pada tahun yang sama juga dirilis bahasa pemrogramanC++ dan Eiffel. Setahun sesudahnya dirilis Turbo Pascal version 4.0. Bahasa pemrograman C++ berkembang pesat dengan dirilisnya C++ 2.0 pada tahun 1989, dan C++ 2.1 pada tahun 1990. Ini berbarengan dengan dirilisnya FORTRAN 90. Setahun kemudian, Microsoft kembali merilis Visual Basic, yang kemudian memenangkan penghargaan BYTE’s Best of Showsaat COMDEX.
Pada tahun 1992, Sun Microsystems membuat Java, sebuah bahasa pemrograman ‎berorientasi objek yang dibuat berbasiskan bahasa C, dengan perbedaan yang signifikan dari ‎bahasa pemrograman C++. Bahasa Java telah membersihkan beberapa sintaksis yang dianggap kurang bagus yang terdapat di dalam bahasa C++ dan membuang beberapa hal yang “berbahaya” dari bahasa C, ‎tetapi tetap mempertahankan “kerumitan” yang ditawarkan oleh bahasa C. Bahasa pemrograman terus berkembang hingga tahun ini, dengan diilisnya Java 2 (versi 1.4), Python 2.2, J#, dan F#.

REFERENSI :
Ebook, Rizal-Pemrograman.pdf

Blog.RosihanAri.Net

blackpirates.co.cc