Selasa, 12 Mei 2009

Menghitung Indeks Prestasi menggunakan AWK

Tugas 1

Dalam AWK kita juga bisa menghitung IP, bagaimana caranya? berikut contohnya:
Sebelum kita membuat perhitungannya, seperti biasa kita buat terlebih dahulu tabel yang berisikan daftar prestasi mahasiswa, misalnya tabel prestasi Joko dari Teknik Komputer seperti berikut:

1 JokoSusilo BahasaInggris5 2 80 85 75
2 JokoSusilo BahasaIndonesia 2 75 80 90
3 JokoSusilo PengolahanSinyalDigital 2 80 70 75
4 JokoSusilo SistemEmbedded2 2 70 80 80
5 JokoSusilo KonsepJaringan 2 80 85 90
6 JokoSusilo RekayasaPerangkatLunak 2 90 90 90
7 JokoSusilo SistemPengaturanKomputer1 2 75 75 90
8 JokoSusilo P.PengolahanSinyalDigital 2 80 80 80
9 JokoSusilo P.SistemEmbedded2 2 75 85 70
10 JokoSusilo P.KonsepJaringan 2 80 65 75
11 JokoSusilo P.RekayasaPerangkatLunak 2 75 80 90
12 JokoSusilo P.SistemPengaturanKomputer1 2 70 70 75

Dimana tabel diatas menunjukkan bahwa pada kolom pertama adalah kolom nomor, kolom kedua adalah nama Joko yakni Joko Susilo dan ketiga nama matakuliah, diikuti kolom keempat adalah jumlah sks, kelima nilai tugas, nilai uts kemudian terakhir nilai uas.

Disini yang harus kita cari adalah nilai per mata kuliah, kemudian kriteria nilai tersebut yakni dalam huruf, kemudian Indeks Prestasi mahasisw per Semester tersebut, yang dapat kita hitung dengan formula:


IPS = Xn/ Xs

IPS : indeks prestasi per semester
Xn : jumlah nilai untuk semua mata kuliah
Xs : total sks

Skala Penilaian Hasil Belajar
NILAI ANGKA NILAI HURUF NILAI NUMERIK KATEGORI
80 - 100 A 4 Istimewa
71 - 80 AB 3,5 Baik Sekali
66 - 70 B 3 Baik
61 - 65 BC 2,5 Cukup Baik
56 - 60 C 2 Cukup
41 - 55 D 1 Kurang
0 - 40 E 0 Kurang Sekali

awk '

BEGIN {print "\nMenghitung Indeks Prestasi semester"}

{print $0; $8 = ($5 + $6 + $7) / 3; print $8;

if($8>80) print $9,"A";

else if($8 > 70 && $8 <= 80) print $9,"AB";

else if($8 > 65 && $8 <= 70) print $9,"B";

else if($8 > 60 && $8 <= 65) print $9,"BC";

else if($8 > 55 && $8 <= 60) print $9,"C";

else if($8 > 40 && $8 <= 55) print $9,"D";

else if($8 <= 40) print $9,"E"}

{print $10}

{ if($8 > 80) num = 4;

else if($8 > 70 && $8 <= 80) num = 3.5;

else if($8 > 65 && $8 <= 70) num = 3;

else if($8 > 60 && $8 <= 65) num = 2.5;

else if($8 > 55 && $8 <= 60) num = 2;

else if($8 > 40 && $8 <= 55) num = 1;

else if($8 <= 40) num = 0}

{nx =+ num}

{nsks =+ $4}

END { print "\nIPS ="nx/nsks }' ip_joko



Hasilnya akan seperti demikian:



Menghitung Indeks Prestasi semester

1

JokoSusilo

BahasaInggris5

2

80

85

75

80







AB














2

JokoSusilo

BahasaIndonesia

2

75

80

90

81.67







A














3

JokoSusilo

PengolahanSinyalDigital

2

80

70

75

75







AB














4

JokoSusilo

SistemEmbedded2

2

70

80

80

76.67







AB














5

JokoSusilo

KonsepJaringan

2

80

85

90

85







A














6

JokoSusilo

RekayasaPerangkatLunak

2

90

90

90

90







A














7

JokoSusilo

SistemPengaturanKomputer1

2

75

75

90

80







AB














8

JokoSusilo

P.PengolahanSinyalDigital

1

80

80

80

80







AB














9

JokoSusilo

P.SistemEmbedded2

1

75

85

70

76.67







AB














10

JokoSusilo

P.KonsepJaringan

1

80

65

75

73.33







AB














11

JokoSusilo

P.RekayasaPerangkatLunak

1

75

80

90

81.67







A














12

JokoSusilo

P.SistemPengaturanKomputer1

1

70

70

75

71.67







AB





















IPS =3.5