{*NIM/Nama      : 16510043/Hendra Dwi Kusuma    *}
{*Nama File     : PraP08-16510043-101020-02     *}
{*Topik         : Array dalam Pascal            *}
{*Tanggal       : 20 Oktober 2010               *}
{*Deskripsi     : program isi tabel berisi array
                 output berupa tampilan seluruh isi array,
                 yaitu data mahasiswa berupa NIM, Nama, Nilai Kuis,
                 Nilai UTS, Nilai UAS, dan Indeks nilai*}
               
program tabelmahasiswa;
uses crt;

const tmmin=1;    {*indeks minimum tblmhs*}
const tmmax=100; {*indeks maksimum tblmhs*}

type tymhs=record
    NIM:string;
    nama:string;
    kuis:integer;    {*[0..100]*}
    uts:integer;    {*[0..100]*}
    uas:integer;    {*[0..100]*}
    indeks:char;    {*['A'..'E']*}
    end;
   
tblmhs= array[tmmin..tmmax]of tymhs;    {*array*}
   
{*Kamus Global*}
var
    tabm:tblmhs;    {*menampung seluruh data mahasiswa*}
    nmhs:integer;    {*indeks, tabm terisi mulai dari indeks tmmin..nef. Jika nef=0, berarti tab kosong*}
    menu:integer;    {*kode menu*}
   
    function hitungindeks(n1,n2,n3:integer):char; {*['A'..'E']*}
    {*fungsi untuk menghitung indeks berdasarkan rata-rata n1, n2, dan n3,
    dengan aturan:
    Rata-rata ³ 85, indeks = ‘A’
    70 <= Rata-rata < 85, indeks = ‘B’
    55 <= Rata-rata < 70, indeks = ‘C’
    40 <= Rata-rata < 55, indeks = ‘D’
    Rata-rata < 40, indeks = ‘E’*}
   
    {*Kamus lokal*}
    var
        rata:real;
       
    {*Algoritma*}   
    begin
        rata:=(n1+n2+n3)/3;
        if ((rata>=0)and(rata<40)) then
        hitungindeks:='E'
        else
            if ((rata>=40)and(rata<55)) then
            hitungindeks:='D'
            else
                if ((rata>=55)and(rata<70)) then
                hitungindeks:='C'
                else
                    if ((rata>=70)and(rata<85)) then
                    hitungindeks:='B'
                    else
                        if ((rata>=85)and(rata<=100)) then
                        hitungindeks:='A'
                        else
                            writeln('rata-rata tidak bisa dihitung');
    end;
   
    procedure isitabm(var tab:tblmhs;n:integer);
    {*Prosedur meminta masukan data mahasiswa (NIM, Nama, Nilai Kuis,
    UTS, dan UAS) dari pengguna dan disimpan di dalam tabel Tab.
    Masukan dari pengguna diasumsikan selalu benar. Indeks diisi
    berdasarkan hasil perhitungan dengan menggunakan fungsi
    HitungIndeks. Pengisian data berakhir jika pengguna memasukkan NIM
    = ‘99999999’*}
    {*I.S.: tab bisa kosong atau bisa sudah terisi*}
    {*F.S.: elemen tab bertambah*}
   
    {*Kamus lokal*}
    var
        i:integer;
       
    {*Algoritma*}   
    begin
        if nmhs=0 then
            i:=0
            else
            i:=nmhs;
            repeat
            begin
                i:=i+1;
                writeln;
                writeln('Data mahasiswa ke-',i);
                write('NIM : ');
                readln(tab[i].NIM);
                if (not(tab[i].NIM='99999999')) then
                begin
                    write('Nama : ');
                    readln(tab[i].nama);
                    repeat
                    begin
                        write('Nilai Kuis = ');
                        readln(tab[i].kuis);
                        if ((tab[i].kuis<0)or(tab[i].kuis>100)) then
                        writeln('masukkan salah! nilai: 0 s.d. 100');
                    end;
                    until ((tab[i].kuis>=0)and(tab[i].kuis<=100));
                    repeat
                    begin
                        write('Nilai UTS = ');
                        readln(tab[i].uts);
                        if ((tab[i].uts<0)or(tab[i].uts>100)) then
                        writeln('masukkan salah! nilai: 0 s.d. 100');
                    end;
                    until ((tab[i].uts>=0)and(tab[i].uts<=100));
                    repeat
                    begin
                        write('Nilai UAS = ');
                        readln(tab[i].uas);
                        if ((tab[i].uas<0)or(tab[i].uas>100)) then
                        writeln('masukkan salah! nilai: 0 s.d. 100');
                    end;
                    until ((tab[i].uas>=0)and(tab[i].uas<=100));
                    tab[i].indeks:=hitungindeks(tab[i].kuis,tab[i].uts,tab[i].uas);
                    writeln;
                end;
                if i>tmmax then
                    writeln('tabel sudah penuh!');
            end;
            until ((tab[i].NIM='99999999')or(i>tmmax));
            nmhs:=i-1;
    end;
   
    procedure tampildatamhs(mhs:tymhs);
    {*Prosedur untuk menuliskan sebuah data mahasiswa ke layar*}
    {*I.S. : mhs terdefinisi*}
    {*F.S. : Data mhs tampil di layar*}
    {*Kamus lokal*}
   
    {*Algoritma*}
    begin
         writeln('NIM : ',mhs.NIM);
         writeln('Nama : ',mhs.nama);
         writeln('Nilai kuis : ',mhs.kuis);
         writeln('Nilai UTS : ',mhs.uts);
         writeln('Nilai UAS : ',mhs.uas);
         writeln('Indeks Nilai : ',mhs.indeks);
    end;
   
    procedure tampildata(tab:tblmhs; n:integer);
    {*Prosedur untuk menampilkan data pada tab*}
    {*I.S.: tab bisa kosong, atau isi*}
    {*F.S.: Isi tab tampil di layar. Jika
    tab kosong, pesan “Tabel kosong” muncul di layar*}
   
    {*Kamus lokal*}
    var
        i:integer;
       
    {*Algoritma*}   
    begin
        if nmhs=0 then
            writeln('tabel kosong')
        else
        begin
            for i:=tmmin to nmhs do
            begin
                writeln;
                writeln('Data mahasiswa ke-',i);
                tampildatamhs(tab[i]);
            end;
        end;
    end;
       
   
{*Program Utama*}   
begin
clrscr;
    nmhs:=0;    {*inisialisasi nmhs*}
    isitabm(tabm,nmhs);    {*memanggil prosedur isitabm*}
   
    {*menu program utama*}
    repeat
    begin
        writeln;
        writeln('MENU');
        writeln('[1]: tampilkan seluruh isi tabel');
        writeln('[2]: tambahkan data baru ke dalam tabel');
        writeln('[0]: SELESAI');
        repeat
        begin
            write('pilihan menu: ');
            readln(menu);
            if ((menu<0)or(menu>2)) then
                writeln('pilihan menu tidak ada');
        end;
        until ((menu>=0)and(menu<=2));
        case menu of
        1:    begin
            tampildata(tabm,nmhs);
            end;
        2:    begin
            isitabm(tabm,nmhs);
            end;
        0:    begin
            writeln;
            writeln('SELESAI');
            end;
        end;
    end;
    until menu=0;    {*EOP*}
end.
       


Asslm wr wb,



Script itu adalah tugas Pra Praktikum PTI 08 yang harus dikumpulkan sebelum jam 11 siang hari kamis tanggal 21 Oktober 2010. Alhamdulillah akhirnya selesai juga. Huft..

Inilah kalo seorang mahasiswa yang berkutat di dunia programming itu pasti otak nya jadi mumet. Sampe2 otaknya gak bisa di "compile". Membuat program itu ternyata sangat menguras otak. Dari program yang nggak mw ter"compile" sampe ada syntax2 yg error dan gak tau sebabnya apa. AARRGH..! Sampe error juga nih otak..ckck..

Ada sebuah kisah tentang seorang anak yang ganteng nan jelita (lho?) sedang ingin mengerjakan tugasnya di malam hari. Tugasnya yang tiap minggu selalu berhubungan dengan dunia pemrograman membuat anak yang sedikit ganteng itu membuka dan menghidupkan laptopnya dengan sebuah ritual. Bau kemenyan dimana-mana, sesajen-sesajen berupa roti selai susu kental manis juga berceceran dimana-mana (udah aneh nih). Program yang dipakai untuk mengerjakan tugas itu adalah bahasa pemrograman PASCAL, salah satu bahasa yang hanya dipelajari oleh satu Sekolah di ITB, yaitu STEI (sombong mode on)..hehe :p
Namun, apakah itu STEI? Banyak yang mengatakan STEI itu kepanjangan dari (STress EuI / Siksaan Terlalu Edan Ini /Sekolah Teknik Elektro dan Informatika / Sangat Tidak Elok Intinya / etc.).

Nah, setelah menghidupkan laptopnya, anak itu tetep ganteng lalu mendownload soalnya di internet, lalu menjalankan program Free Pascal (maklum gratisan untuk kantong mahasiswa), lalu memulai pengerjaan tugas tersebut.

Saat mata terus berpandangan dengan layar laptop (ciieeee), semua rasanya terdiam. Hatinya bergejolak, detak jantung semakin cepat, kemudian hasratnya tidak tertangguhkan lagi. Dia lalu pergi ke kamar kecil dan segera "kencing" (kebelet soalnya). Setelah ritual selingan tersebut selesai, dipandangnya lagi layar laptop itu yang manis (unyuuuu). Semua syntax berupa prosedur, fungsi, if then, array, dsb. dikeluarkan untuk menyelesaikan tugas tersebut, namun belum bisa ter"compile". Anak itu terus berusaha untuk tetep ganteng membuat program yang dibuatnya itu ganteng, maksudnya bisa di "compile". Dengan usaha yang tidak henti2nya akhirnya program itu bisa ter"compile". Sorak seraya dilakukan anak itu. Tapi, eits..jangan senang dulu anak muda, setelah di run, ternyata programnya ada yang error, ada syntax yang gak nyambung, dll..ARRGH..! Tidaaak..! Diulangnya lagi penulisan syntax2nya itu.

Tak terasa waktu sudah menunjukkan pukul 3.25 am saat itu. Betapa kagetnya anak itu, dia sama sekali belum memejamkan matanya dan mengistirahatkan raganya sejenak walaupun jiwanya juga terganggu oleh tugas PTI A tersebut. Segeralah dia berbaring di pulau kapuk yang empuk. Dia ingin di tidurnya yang sangat tidak nyenyak itu, bisa mendapatkan hikmah bagaimana menyelesaikan tugas tersebut. Alhamdulillah semuanya terjawab di hari2nya saat di kampus bersama teman2nya. Thanks guys..!
 


When my brain cannot be compiled,
oh, please make all my work can be compiled.

Wassalam.
Labels:

1 comment(s):

almas mengatakan...

tetep ganteng??
wkwkwk

24 Oktober 2010 pukul 09.52  
Visit the Site
MARVEL and SPIDER-MAN: TM & 2007 Marvel Characters, Inc. Motion Picture © 2007 Columbia Pictures Industries, Inc. All Rights Reserved. 2007 Sony Pictures Digital Inc. HDK concept. All rights reserved. blogger template by blog forum.