Pemrograman Dasar pt 7

Lagi-lagi dan lagi-lagi gue telad. . . Hadeh-hadeh. . .

Tapi kali ini agak beda, karena kali ini gue teladnya karena ngerjain tugas, bukan karena ketiduran, heheh. Jadi gini ceritanya, , Prodas kan ada Tugas tentang struct dan fopen(), nah ntuh PR belum rampung sedikit pun aku kerjain, coz disibukkan dengan tugas-tugas FDK (Makrabnya teknik elektro). FDK sendiri aja selesainya hari minggu. Pokoke hari minggunya dipake buad tidur. Btw lebih tepatnya kepake karena ketiduran. . . habis sudah hari minggu.

Hari seninnya, , kuliah berangkat jam 10. . . Aku bangun juga sekitar jam 10. . . (hehe peace!). Habis itu jam 13.00 ada praktikum. Nah sorenya ada mentoring AAI. Pulang dari AAI, mu gak mau harus mbaca-mbaca tentang ntuh tugas, karena sejujurnya aku belum ngerti, , tapi belum aja ngerti, eh malah ketiduran jam 8. . . Ya udah mbablas. . .

Bangun2 jam 04.00. Hanya tinggal dengan waktu segini aku bisa mengerjakannya. . . semoga tepat waktu!! Di kepala ku terngiang2 “mbaca filenya tuh per karakter”. . . dengan clue seperti yang di katakan si Ty (salah satu dari 2 anak paling pinter sekelas), aku nguras otak dan terus memikirkan kata-kata itu. . . Akhirnya!! Hakakaka. I made it!! Walaupun gak perfect dan waktunya muepet banget!! Masuknya jam 7, sedangkan aku baru nyelesaiin tugas 7.20, terus aku berangkat mpe sana jam 7.30. Ternyata aku benar-benar tepat waktu!! Masih belum pada ngapa-ngapain! (udah dateng sih dosennya)

Okay, pertemuan kali ini hanya membahas tentang tugas anak-anak yang udah dikumpulin. Hm. . . ternyata bukan aku saja yang merasa kesulitan mengerjakan tugas. . . Bayangain aja, dari 60 siswa, yang ngumpulin cuma 11! Ckckckck

Satu-persatu anak-anak yang ngumpulin tugas maju kedepan, tugas nya itu mengambil data dari file .txt yang kemudian dipindah ke program. . . Sebenernya tugasnya tuh kita disuruh mbuat program yang memudahkan pak nya dalam memasukkan nilai, dan kita hanya diberi file txt yang berisi Nama dan NIM. Ckckck. . .

Akhirnya aku maju. . .

source codeku seperti ini

#include <stdio.h>
#include <stdlib.h>
#include “mylib.h” //Penting!! headernya aku tulis dibawah setelah source code ini


int main(void)

{

struct mahasiswa PD09_S[61]; //Variabel PD09_S dengan array sebanyak 61 (jumlah murid kelas B)
int i;  //Ini hanya variabel-variabel pembantu saja
int j;
int k;
int r;
int sum; //Variabel untuk hasil penambahan nilai, baca aja dulu, nanti juga tahu
int pertemuan; //Variabel jumlah pertemuan pelajaran progdas
int jumtugas; //Variabel jumlah tugas pelajaran progdas
float rerata;  //Sisanya ya seperti itulah. . .
double persentasi;
char pilihan;
FILE *pfile=NULL; //Nah mungkin ini baru bagi kalian! Ini adalah Variabel pfile karena pake tanda bintang jadi variabel pfile adalah pointer. Variabel pointer itu dibaratkan sebuah kotak kosong yang nantinya bisa di isi varibel lain terus diganti lagi dengan variabel lain. Intinya sebuah kotak kosong gitu aja deh. Nah untuk deklarasi FILE nya, maksudnya bahwa variabel ini berhubungan dengan file. Bisa aja *pfile tuh pake int, floa, dll, tapi karena disini misinya menghubungkan dengn file jadi ya begitulah. . .

/*JUDUL*/
printf(“PROGDAS PAK BONDHAN\n”);

printf(“dengan jumlah pertemuan pertemuan: “);
scanf(“%d”, &pertemuan); //Input nilai Variabel pertemuan
printf(“dan jumlah tugas: “);
scanf(“%d”, &jumtugas); //Input nilai Variabel jumtugas
putchar (‘\n’);

/*Untuk fopen() akan dijelaskan diakhir postingan*/
pfile=fopen(“pdmhs.txt”, “r”); //Variabel kosong tadi diisi alamat file dan “r” itu adalah read. Maksudnya, data dari file txt tersebut akan dibaca. Bukan di write (ditulis). fopen adalah fungsi yang artinya membuka file.
for (i=0; i<61; i++) //Melakukan Lop dengan untuk mengisi data-data pada variabel PD09_S[0] sampai PD09_S[60]

{

PD09_S[i].n_urut=i+1; //Input no urut. Pada saat i = 0, PD09_S[0] no urutnya = 1, begitu seterusnya hingga PD09_S[60]
/*Untuk bagian fgets dibawah ini aku jelaskan diakhir*/
fgets(PD09_S[i].nama, 30, pfile); //fgets adalah fungsi untuk mendapatkan/menyadap/mengambil string (karakter-karakter) pada file. Pertama ditulis PD09_[0].nama (saat i = 0) artinya string yang diambil simpan di Variabel PD09_S[0].nama. Kedua ditulis berapa karakter yang akan diambil? disana tertulis 30 buah. Kemudian terakhir pfile, artinya string diambil dari pointer pfile yang mana isinya adalah file txt
fgets(PD09_S[i].nim, 7, pfile); //Sama sperti diatas

}

fclose(pfile); //Menutup file txt yang tadi dibuka

ulang: //Hm. . . ini nyebutnya apa ya? istiahnya kayak reff gitu deh. . . Inget! pake  : bukan ;

sum=0; //Setiap melewati ini sum menjadi samadengan 0
printf(“Masukkan no urut: “); scanf(“%d”, &r); //Masukkan No Urut ke dalam variabel r
printf(“Nomor Urut = %d\n”,PD09_S[r-1].n_urut); //%d yang akan di printout berdasarkan r, misal 2, yang nantinya akan mengisi [r-1]. Dan kemudian memanggil nilai no_urut pada saat PD09_S[1]
printf(“Nama = %s\n”,PD09_S[r-1].nama); //Konsepnya sama seperti diatas
printf(“NIM = %s\n”,PD09_S[r-1].nim);
printf(“Jumlah kehadiran: “); scanf(“%d”, &PD09_S[r-1].presensi); //Input jumlah presensi
for (k=0; k<jumtugas; k++) //Melakukan Loop sebanyak jumlah tugas yang telah diinput di awal

{

printf(“Nilai tugas ke-%d: “, k+1);
scanf(“%d”, &PD09_S[r-1].tugas[k]); //Input nilai tugas kepada siswa PD09_S[1], misal r = 2
sum+=PD09_S[r-1].tugas[k]; //Menjumlah semua tugas

}

printf(“Nilai Ujian Tengah Semester: “); scanf(“%d”, &PD09_S[r-1].uts); //Input nilai UTS
sum+=(PD09_S[r-1].uts*2); //Menambahkan nilai UTS ke variabel sum, (sengaja saya kali dua, ya intinya tuh nilai UTS lebih berbobot dari tugas. Tapi gak dikali 2 uga gpp koq. he3)
printf(“\n”);
persentasi=((double)PD09_S[r-1].presensi/pertemuan*100.0); //Perumusan Persentasi kehadiran, (doubel) digunakan untuk menghindari kesalahan penghitumhan dengan menginvert int ke double
printf(“Persentasi kehadiran %.2lf\n”, persentasi); //Untuk variabel double, printoutnya harus %lf
rerata=(float)sum/(jumtugas+2); //Perumusan rata-rata
printf(“Rata-rata semua nilai %.2f”, rerata);
printf(“\n\n\n\n”);
j++; //Nilai j bertambah 1
if (j==60) //Jika j = 60

return 0//Program selesai

goto ulang; //Kembali ke reff, eh maksudku ulang:

printf(“Made by Farid Inawan, 35102\n”);
return 0;

}

Nih source code headernya “mylib.h”

#include <stdio.h>
#include <stdlib.h>

//Kalo yang ini gak usah dijelasin dah ngerti kan? kan kemarin udah di pertemuan sebelumnya

struct mahasiswa

{

int n_urut;
char nama[30];
char nim[5];
int presensi;
int tugas[10];
int uts;

};

Hufh, , , gimana bisa ngikutin kan?? Okay sesuai tulisan yang diatas, aku akan njelasin tentang fopen().

sintax fopen sediri adalah fopen(“namafile”, “type”); Untuk nama filena misal pdmhs.txt, lalu file itu kita taruh dimana? Di Folder dimana kamu menyimpan main.c. Bisa juga dari drive C:, fopen(“C:\\pdmhs.txt”, “type”). Untuk type nya ada r, w, dll (masih belum tahu. he3). r: read, w: write.

Nah sekarang penjelasan tentang fgets, sebaiknya, saat membuka membahas ini, anda sedang melihat file pdmhs.txt (klik untuk download).

Sekarang lihat nama dan NIM dengan seksama, saya menulisakan fgets dengan mengambil 30 karakter dari file. Padahal jumlah karakter (termasuk spasi) hingga karakter sebelum NIM adalah 29 karakter. Tapi kenapa saya menuliskan 30 karakter? Kenapa 1 angka paling awal pada NIM tidak terambil? itu karena pada fungsi fgets jika kalian mu mngambil sejumlah x karakter maka harus di lebihi 1 menjadi x+1, 1 karakter itu digunakan untuk karakter ‘\n’.

Nah setelah mengambil 29 Karakter untuk nama, kemudian ambil 5 karakter untuk NIM. Tapi kenapa saya menuliskan 7 karakter yang saya tulis pada fgets? Jawabannya 5 Karakter untuk mengambil NIM + 1 Karakter ‘\n’ pada file + 1 Karakter yang sudah wajib dilebihkan untuk fungsi fgets untuk karakte ‘\n’. Yang jadi pertanyaan adalah apa maksu “1 Karakter ‘\n’ pada file”? Coba perhatikan antara NIM dan nma selanjutnya diantara itu ada karakter ‘\n’, kan? Nah itu dia. . . Lho rid kalo gak di ambil mangnya kenapa? Kalo gak diambil, saat kita melakukan fgets lagi maka dimulai dari ‘\n’ bukan dari nama/karakter selanjutnya. . .

He3 selesai. Comment bro! And Rate it!

3 responses to this post.

  1. Posted by adek on 15 Oktober 2009 at 8:19 am

    nunggu yang program tic tac toe nya, gek di upload boy!

    Balas

    • Posted by frdteknikelektro on 15 Oktober 2009 at 8:44 am

      Hwakaka. . . belum nih, , , sebenarnya bisa udah nyoba sih, tapi visualisasinya jelek. . .

      Biarkan aku belajar header conio.h dulu. . . hehehe🙂

      Balas

  2. Posted by guntur on 16 Oktober 2009 at 9:00 pm

    conio tu buat apa?

    Balas

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: