Anda di halaman 1dari 34

Selain penjelasan dari modul disini saya juga menjelaskan melalui reverensi dari buku dan

situs internet.
PENJELASAN MODUL POINTER 1

Slide 5.

Pada slide ini terdapat penjelasan tentang Pointer,yaitu merupakan variabel yang menyimpan
nilai alamat memori dari variabel lain,sama hanya dengan variabel,pointer dideklarasikan dan
dapat diberikan suatu nilai. dan ada satu hal yang harus diperhatikan dalam memperlajari
Pointer yaitu seorang programer menggunakan pointer dengan cara yang salah maka akan
menyebabkan sistem operasi menjadi crash (rusak). Dan contohnya:

– int *ptr;

– long *abc;

– char *hai;

Untuk mendapatan Isi atau nilai dari variabel pointer maka perintah yang digunakan cukup
nama variabelnya saja. Untuk mendapatkan isi atau nilai dari alamat yang terdapat pada isi
pointer (value pointed by) maka perintah yang digunakan adalah menambahkan tanda *
didepan variabel.

Slide 6.

Pada slide ini terdapat manfaat dari Pointer yaitu:

 Meningkatkan kinerja komputasi dan pemanfaatan memori

 Membantu dalam mengembangkan struktur data seperti linked list, tree , graph, dll.

Selain itu ada juga manfaat lainnya seperti:

 Untuk menciptakan data struktur yang kompleks


 Memungkinkan suatu fungsi untuk menghasilkan lebih dari satu nilai
 Memiliki kemampuan untuk mengirimkan alamat suatu fungsi ke fungsi yang lain
 Penanganan terhadap array dan string akan lebih singkat dan efisien.

Slide 7

Pada slide ini membahas tentang operasi yang dilakukan sebelum menggunakan pointer.

Definisi Variabel pointer yaitu variabel yang berisi alamat memori sebagai nilainya dan
berbeda dengan variabel dengan variabel biasa yang berisi nilai tertentu. Dengan kata lain,
pointer berisi alamat dari variabel yang mempunyai nilai tertentu. Dengan demikian ada
variabel secara langsung menunjuk kenilai,adapun bentuk umum dari pernyataan variabel
pointer yaitu :
Type*variabel-name

Dengan:

 Type adalah tipe dasar pointer


 Variabel name adalah nama variabel pointer
 * adalah variabel pada alamatnya yang ditentukan oleh operand.
Contohnya:
int *int_pointer // pointer to integer
float *float_pointer // pointer to float.

Menetapkan alamat suatu variabel pada pointer sangatlah mudah .caranya gunakan operator
alamat yaitu simbol & (and) didepan suatu variabel. Sebagai contoh variabel bertype integer
bernama x maka untuk menampilkan alamatnya adlaah &x.

Variabel pointer harus ditugaskan untuk menunjukkan variabel.hal ini dilakukan supaya
variabel pointer dapat menunjuk variabel lain yang bersangkutan.

Slide 8

Pada slide ini membahas tentang operator yang digunakan oleh pointer:

Operator Pointer ada dua, yaitu :

 Ø  Operator &
Operator & bersifat unary (hanya memerlukan satu operand saja).
Operator & menghasilkan alamat dari operandnya.
 Ø  Operator *
Operator * bersifat unary (hanya memerlukan satu operand saja).
Operator * menghasilkan nilai yang berada pada sebuah alamat..

Slide 9

Operator Dereference
Operator Dereference disimbolkan dengan simbol "&" (ampersand sign).Operator
dereference ini digunakan untuk mengetahui suatu alamat lokasi memori yang sedang
digunakan.Biasanya operator ini disebut juga dengan "address of" atau operator alamat.
        Biasanya alamat memori disetiap komputer berbeda tapi, ada pula yang sama.Bila
alamat yang dicari lebih dari satu maka alamat antara satu dengan yang lainnya berbeda.

Slide 10

Operator Reference
Ditandai dengan simbol (*)<identifier asterisk>. Operator ini digunakan untuk
mencari nilai sebenarnya dari suatu variabel yang berada didalam pada suatu alamat
memori.Operator ini biasa disebut dengan "value pointed by".
Slide 12

Pada slide ini membahas tentang salah satu contoh program yang ada pada pointer.

#include<stdio.h> //file header


int main(){
int x; //variabel dengan nama x
int p = &x; //variavel dengan nama p dan ditandai dengan karakter &
x = 1; //variabel x bernilai 1
printf(“Nilai x : %d \n“,x); //mencetak nilai x
printf(“Alamat memori x : %d “,p); //mencetak nilai (alamat memori x)
yg ditandai pada variabel p
getch();
return 0;
}

Pada contoh program diatas menggunakan Operator Dereference

Slide 13
#include<stdio.h> //file header
int main(){
int x; // variabel dengan nama x
int *a; //variabel dengan ditandai dengan karakter *
x = 1; //variabel x bernilai 1
a = &x; //variabel a bernilai yang ditandai pada varibel x.
printf(“Nilai a : %d \n”, a); //mencetak nilai a
printf(“Nilai *a : %d \n”, *a); //mencetak hasil/nilai dari a yang ditandai dari x
getch();
return 0;
}

Slide 14
#include<stdio.h> //file header
int main(){
int x; //variabel dengan nama x
int *a; //variabel dengan ditandai dengan karakter *
a = &x; // variabel a bernilai sesuai alamat dari x
*a = 10; // nilai yg ditunjuk dari *a
printf(“Nilai *a : %d \n”, *a); // mencetak nilai yang ditunjuk dari *a (hasilnya 10)
printf(“Nilai x : %d \n”, x); //mencetak nilai x dari alamat a
getch();
return 0;
}
Slide 15
#include<stdio.h> //file header
int main(){
int x = 5, y = 15; // variabel x dengan nilai 5, dan variabel y dengan nilai 15
int *a, *b; // pointer nilai variabel a dan pointer nilai variabel b
a = &x; b = &y; // variabel a sama dengan mencari alamat memori dari variabel
x, dan variabel b sama dengan mencari alamat memori dari
variabel y.
*a = 10; // dimana nilai dari pointer nilai a bernilai 10
*b = *a; //pointer nilai b sama dengan pointer nilai a
a = b; //variabel a sama dengan variabel b
*a = 20; //dimana sekarang pointer a sama dengan 20
printf(“Nilai x : %d \n”, x); //mencetak nilai x yaitu sama dengan 10
printf(“Nilai y : %d \n“, y); //mencetak nilai y yaitu sama dengan 20
getch();
return 0;
}

Pointer dan Array

Slide 17

Pada slide ini membahas tentang Pointer dan Array.


Pointer dan Array memiliki hungan dekat.secara internal array pun menyatakan
alamat.sebagai contoh didefenisikan sebuah array yang menyimpan lima bilangan sebagai
berikut:
int bil_bulat[]={0,1,2,3,4};
dan pada Pointer yang kan menunjukkan array tersebuut sebagai berikut:
int *pbil_bulat;
maka penugasan pointer terhadap variabel array nya adalah sebagai berikut:
pbil_bulat=bil_bulat;
atau
pbil_bulat=&bil_bulat[indeks];
terlihat dalam penugasan pointer diatas terdapat pernyataan yang tidak menggunakan tanda
&. Hal ini disebabkan karena nama array sebenarnyasudah menunjukkan suatu alamat
sehingga tanda & tidal lagi dibutuhkan.
Konsep pointer dapat juga diterapkan secara individual untuk masing-masing elemen dari
array.

Slide 19

#include<stdio.h> //file header


int main(){
int data[3] = { 0,1,2 }; //banyak array data sebanyak 3
int *a; // pointer nilai variabel a
a = data; // variabel a sama dengan data
*a = 10; //dimana sekarang pointer a sama dengan 10
// show array data
getch();
return 0;
}
Program diatas jika di run masih belum bisa terlihat hasilnya.maka untuk menampilkannya
cukup menggunakan perintah cetak seperi biasa : printf("Nilai a = %d", *a); maka hasil yang
akan tercetak adalah 10.

Slide 20
#include<stdio.h> // file header
int main(){
int data[3] = { 0,1,2 }; //banyak array data sebanyak 3 angka
int *a; //pointer nilai variabel a
a = data; // dimana sekarang pointer a sama dengan data
a++; //variabel a ditambah 1
*a = 10;
// show array data
getch();
return 0;
}
PENJELASAN MODUL POINTER 2

Slide 6

Pada slide ini menjelaskan tentang Pointer dan Bentuk String.


String pada bahasa C direpresentasikan dengan Array dan Pointer. Contoh bentuk string
adalah:

 Char*ptr;
 Char*ptr[10];
Slide 7
Pointer dan Bentuk String
Untuk memanipulasi bentuk string, kita dapat menggunakan library:
 strcmp()
String Compare, digunakan membandingkan dua string, dengan cara membandingkan
string-1 ke string-2. Fungsi ini dimulai membandingkan karakter pertama dari setiap
string. Jika mereka sama satu sama lain, terus dengan pasangan berikutnya sampai
membandingkan karakter yang berbeda atau sampai keterminator karakter null.
Bentuk umum : strcmp(string1, string2).
 strchr()
Digunakan untuk menemukan suatu karakter dalam suatu string. Fungsi strchr() ini
mengembalikan sebuah pointer pada posisi pertama dari karakter dalam string yang
dicari. Posisi karakter yang ditemukan, akan ditampilkan sebagai nilai integer, tetapi
secara internal dikonversi kembali ke char.
 Strcpy()
Berfungsi untuk menyalin string.
 strlen()
Berfungsi untuk menghitung panjang string. Panjang string pada prinsipnya
samadengan jumlah karakter yang membentuk kata atau kalimat.
Perbedaan antara panjang string dengan ukuran string adalah panjang string
menyatakan berapa jumlah karakter pada variabel bertipe data string, sedangkan
ukuran string adalah ukuran memori suatu variabel string.
 strcat()
Fungsi strcat(string1,string2) digunakan untuk menggabungkan dua buah string.
String hasil  penggabungannya disimpan pada string1. Sehingga, ukuran string1
haruslah menampung panjang string hasil penggabungan tersebut.

Slide 8
#include<stdio.h> //file header
int main(){
char *s = malloc(sizeof(char)*5); //char sama dengan malloc (perintah alokasi memori
ketika program sdng berjalan) dan menampung data
sebanyak 5.
strcpy(s, "abcd"); //untuk menyalin data string.
*(s+1) = 'd'; //data string di +1 sama dengan d artinya data yang di +1 akan di ubah
menjadi d
printf("%s",s); //untuk mencetak dan hasilnya adalah adbd.
return 0;
}
Slide 9
#include<stdio.h>
#include<ctype.h>
void toUpperPtr (char*);

int main(){
char *teks = (char*) malloc(sizeof(char)*5);
strcpy(teks, "abC1");
printf("Sebelum toUpperPtr : %s \n",teks);
toUpperPtr(teks);
printf("Sebelum toUpperPtr : %s \n",teks);
getch(); return 0;
}
void toUpperPtr (char* str){
while (*str != 0){
if (islower(*str))
*str = toupper(*str);
str++;
}
}

Program diatas merupakan salah satu program untuk mengubah huruf dari kecil ke Besar.
Dan data string disimpan/dialokasi kan ketika memori sedang berjalan. Data yang tersimpan
yaitu “abC1”. Data yang memiliki huruf kecil kemudia diubah menjadi huruf besar
(toUpper).

Slide 11
#include<stdio.h> //file header
void show (char* a[4]); //menampilkan banyak data sebanyak 4
int main(){
char* data [4] = { "abc", "123", "ABC", "@#$" }; //menampung data sebanyak 4 dan berisi
{ "abc", "123", "ABC", "@#$" }
show (data); //untuk menampilkan isi pada data
return 0;
}
void show (char * a[4])
{ int i;
for (i=0; i < 4; i++){ ///menampilkan banyak data sebanyak 4 data
printf("%s\n", a[i]); //untuk mencetak hasil
}
}

Slide 14
Pointer dan Fungsi
Parameter by value artinya yang dikirimkan sebagao parameter adalah nilai variabelnya. Dan
Parameter by Reference Artinya yang dikirimkan sebagai parameter adalah alamat
variabelnya, bukan nilainya. Jadi, perubahan nilai yang terjadi di dalam fungsi, akan
mengubah juga nilai dari variabel yang alamatnya kita kirimkan.
PENJELASAN MODUL STRUCT

Slide 4

Struct atau yang lebih dikenal dengan istilah record adalah kumpulan data yang memiliki tipe
data yang berbeda. Struct digunakan apabila data yang ingin dikelompokkan memilliki tipe
data yang berbeda.
Struct (Struktur) adalah user-defined datatype yang memungkinkan kita untuk
menggabungkan data dari berbagai tipe data berbeda untuk digunakan bersama-sama.
Struktur merupakan tipe data kompleks yang lebih bermakna.
Mirip dengan Array, tetapi array berisi data dengan tipe yang sama, tetapi struktur dapat
menyimpan data jenis apa pun, yang lebih praktis penggunaanya.

Slide 6
Pada slide ini membahas tentang sintaks yang digunakan pada struct.

Slide 7
Membahas cara membuat struct.contohnya adalah

Deklarasi diatas berarti ada suatu tipe data yang bernama orang dimana setiap data yang akan
dideklarasikan menggunakan tipe data orang akan mempunyai field nama,no_rekening,dan
saldo. Untuk dapat menggunakan tipe data tersebut sebuah variabel harus dideklarasikan
menggunakan nama struct nya,

Slide 8

Variable struct dapat dideklarasikan dengan 2 cara, yaitu langsung dideklarasikan pada saat
mendeklarasikan struct, atau dideklarasikan seperti tipe data dengan menambahkan kata
struct.
Slide 9

Untuk menginisialisasi anggota dalam struct, nama anggota dalam struct harus tehubung
dengan variable struct menggunakan operator dot (.) atau biasa disebut member access
operator.

Slide 10

Contoh penggunaaan inisialisasi struct.

Program diatas berisi suatu tipe data yang bernama orang dimana setiap data yang akan
dideklarasikan menggunakan tipe data orang akan mempunyai field nama (sebanyak
20karakter) ,no_rekening (20 karakter),dan saldo. Kemudian dalam tipe data orang
terdapat/berisi data Adi,Firdan. Setiap isi dari tipe data orang dihubungkan ke tiap-tiap field
dengan menggunakan operator dot(.)

Slide 11,12,13

Membahas tentang inisialisasi struct.


Anggota struct juga dapat diinisialisasi menggunakan ‘{}’. Designated Initialization
memungkinkan kita untuk menginisialisasi anggota struct dengan urutan yang kita inginkan
menggunakan ‘{}’. Anggota dalam struct tidak dapat diinisialisasi saat mendeklarasikan
anggotanya. Ketika datatype anggota dalam struct dideklarasikan, tidak akan ada memori
yang dialokasikan untuk menyimpan nilai. Memori dialokasikan hanya ketika variabel
dibuat.

Slide 17
Membahas tentang Struct sebagai Array. Struct sebagai Array artinya kita mendeklarasikan
sebuah struct yang elemen-elemennya berupa array. Dengan menggunakan array dengan tipe
data struct, maka setiap elemen dalam array akan merepresentasikan variable struct.
Slide 20
Struct sebagai Fungsi Parameter. Struct juga dapat digunakna sebagai parameter
fungsi.supaya pendeklarasian variabel strcutnya tidak berulang kali dan tidak tepat,
disarankan untuk mendeklarasikan variabelnya secara lokal (hanya untuk fungsi yang
membutuhkan nya saja). Parameter fungsi dengan struct dengan penambahan keyword struct
diikuti nama struct dan nama variable struct.
Slide 23-25
Struct dengan pointer. Pada dasarnya sebuah struktur (struct) merupakan tipe data variabel
yang tersimpan di memori, karena itu dapat dibentuk variabel pointer yang berisi alamat
memori sebuah struktur atau dapat dikatakan bahwa variabel pointer tersebut menunjuk pada
sebuah struktur. Variable *struct_pointer akan berfungsi untuk menyimpan alamat dari
variabel struktur . Untuk menemukan alamat variabel struktur, operator ‘&’ digunakan
sebelum nama struktur.

Perbedaan dengan Tipe data lain :


Tipe data yang lain hanya terdiri dari 1 element, sehingga hanya dapat menyimpan sebuah
nilai atau sebuah string saja, sedangkan tipe data struct dapat menyimpan beberapa elemen,
dengan berbagai macam tipe seperti int, char, long, dll.
Operator titik digunakan sebagai pemisah antara variabel struktur dengan elemennya,
penulisan ini sebaiknya tidak dipisahkan oleh spasi. Operator ini berfungsi untuk mengakses
suatu element dari variabel struktur.
Operator panah digunakan untuk pengaksesan operasi pointer, atau menggunakan operator
bintang (’*’), untuk pengaksesan element-element suatu struktur yang berupa pointer.

Slide 28

Membahas tentang Nested Structure yaitu sebuah kondisi terdapat tipe data yang berupa
struct lagi..
Suatu struct dapat mengandung struct lainnya untuk dijadikan field didalamnya.sebagai
gambaran struct terdapat pada contoh slide 29 struct karyawan mempunyai sebuah field struct
tanggal,bulan dan tahun.
Catatan: apabila ingin menggunakan struct dalam struct maka struct yang akan dipanggil
dida;am strcutnya harus sudah terdefenisi terlebih dahulu(leyaknya harus lebih dahulu
dibandingkan struct yang akan memanggil).
PENJELASAN MODUL FILE

Slide 4
File adalah sebuah organisasi dari sejumlah record(struct). Masing-masing record bisa terdiri
dari beberapa field dan setiap field terdiri dari satu atau beberapa Byte (8bit). Sebenarnya file
merupakan salah satu penyederhanaan dari operasi input dan ouutput yang terdapat didalam
pemrograman bahasa C.salah satu keuntungan menggunakan File adalah data masukan tidak
akan hilang ketika program telah selesai dijalankan.

Mengapa File diperlukan.?


Ketika sebuah program berhenti, maka seluruh data hilang. Penyimpanan data ke dalam file
akan mempertahankan data jika program hilang. Jika terdapat sejumlah data dengan ukuran
yang sangat besar, maka akan membutuhkan banyak waktu untuk memasukkan semua
datanya. Namun, jika terdapat file berisi semua data, maka memasukkan data cukup melalui
pengaksesan isi file menggunakan beberapa perintah dalam C. Data dari satu komputer dapat
dipindahkan ke komputer lain tanpa perubahan apa pun.

Slide 5

Jenis-jenis Files. Secara umum file di pemrograman terbagi menjadi 2 yaitu:

1. File Text
 Text file merupakan file berekstensi “.txt” yang dapat dengan mudah dibuka
menggunakan text editor seperti notepad, textpad++, TextEdit dll.
 Ketika file ini dibuka, isi dari file dapat dibaca sebagai teks biasa.
 Isi file dapat dengan mudah untuk ditulis dan dibaca.
 Tetapi text file memberikan keamanan paling sedikit dan membutuhkan ruang
penyimpanan yang lebih besar.

2. File Biner(Binary Files)


 Binary file merupakan file berekstensi “.bin” pada computer
 File ini menyimpan data bukan dalam bentuk teks biasa, melainkan disimpan
dalam bentuk binary (0 dan 1).
 File ini dapat menyimpan data dengan jumlah yang lebih banyak, tidak mudah
dibaca dan memberikan keamanan yang lebih baik daripada text file.

Slide 8-10

Operasi Pada File. Terdapat 3 operasi dasar pada File yaitu:

1. Membuat dan Membuka File (Mengaktifkan File).


Untuk membuat sebuah file yang kita perlukan hanyalah menggunakan
fungsi FILE yang dilanjutkan pointer nama variabel file tersebut, Saat bekerja dengan
file, pendeklarasian pointer untuk tipe data file harus dilakukan. Deklarasi ini diperlukan
untuk memungkinkan terjadinya komunikasi antara file dan program FILE *nama
variabel;

contohnya yaitu :

FILE *fptr;

Membuka file :

Untuk membuka sebuah file dibutuhkan sebuah fungsi fopen, directory serta nama
file dan mode file,  nama variabel file = fopen("nama file", "mode file");. Contohnya :

fp = fopen("data.txt", "r");

Jika file “hello.txt” tidak ditemukan pada lokasi File “D:\\Projek C”, maka, fungsi
fopen() akan membuat file baru bernama “hello.txt” dan membukanya untuk ditulis sesuai
mode “w”.

Mode penulisan memungkinkan program untuk membaca, membuat, mengedit ataupun


menimpa isi dari konten file.

Cttn : Pastikan direktori D:\\Projek C dapat diakses. Jika tidak, maka sebelum program
dieksekusi, direktori tersebut harus dibuat pada komputer Drive D.

Slide 11

Mode penulisan text File

Mode Keterangan
r Membuka file text untuk dibaca
w Membuka atau membuat file text untuk di tulis
a Membuka atau membuat file text untuk menambahkan isi file text
r+ Membuka file teks untuk dibaca dan ditulis
w+ Membuka atau membuat file text untuk dibaca dan ditulis
a+ Membuka dan membuat file text untuk dibaca dan menambahkan isi file
text.

Slide 12 dan 13

Menutup File. File yang sudah dibuka, harus ditutup setelah proses baca/tulis. Untuk
menutup file, fungsi pada header "stdio.h“ dapat digunakan, yaitu : fclose().
Fungsi fclose() akan menutup file dan mengembalikan sebuah nilai integer bernilai 0 jika
file berhasil ditutup. Jika file gagal ditutip maka, fungsi fclose() akan mengembalikan
nilai dari EOF. EOF merupakan sebuah nilai konstanta yang ada pada header file stdio.h.
EOF merupakan singkatan dari "end of file“ yang memiliki nilai -1.
Slide 14
Membahas tentang contoh cara membaca operasi pada file text.jika file berhasil
dibaca.lalu file tersebut di tutup(close). Jika berhasil maka akan menampilkan keluaran
(“File Berhasil Di tutup). Namun jika tidak maka akan menampilkan keluaran (“file gagal
ditutup”).

Slide 15 dan 16

Menulis informasi kedalam File.

Terdapat banyak fungsi untuk menulis sebuah file diantaranya ada fungsi fputs ada
fprintf. Untuk menggunakan fputs deklarasinya yaitu fputs(namavaariabel,namafile);.
Sedangkan untuk menggunakan fprintf deklarasinya yaitu fprintf(namafile, "kontanta
char", nama variabel);.

Fungsi fprintf() dan fputs() digunakan untuk menuliskan sebuah string ke dalam file yang
direferensikan oleh variable *fs. Fungsi-fungsi tersebut akan mengembalikan sebuah nilai
tidak negative jika berhasil menuliskan informasi ke dalam file. Jika gagal maka nilai EOF
yang akan dikembalikan.

Slide 17 dan 18

Menampilkan contoh masalah dalam penggunaan fungsi fputs dan fprintf

Slide 19

Perbedaan mode write (“w”) dan Append (“a”).

Mode Write (w) dan Append (a), digunakan untuk membuka dan menciptakan file dan akan
membuat file baru jika file tidak ditemukan. Keduanya dapat digunakan untuk menulis dalam
file. Satu-satunya perbedaan adalah ketika membuka file dalam mode “w”, file direset, yang
mengakibatkan penghapusan data yang sudah ada dalam file. Saat dalam mode “a”, hal ini
tidak akan terjadi. Mode Append digunakan untuk menambahkan data ke file yang ada (jika
ada). Ketika membuka file dengan mode “a”, kursor diposisikan pada akhir data dalam file.
Slide 20 dan 21,23

Membaca informasi dari File.

Jika kita bisa menulis tentu saja kita juga perlu membaca, sama halnya menulis ada beberapa
fungsi untuk membaca diantaranya adalah fgets yang hanya bisa membaca string
dan fscanf bisa membaca string maupun bilangan. Untuk mendeklarasikan fgets
yaitu fgets(namavariabel, jumlahstring, namafile);, sedangkan untuk fscanf
yaitu fscanf(namafile, "konstanta char", &nama variabel);.

Fungsi fgets() digunakan untuk membaca kumpulan string hingga dijumpai baris baru atau
EOF atau jumlah karakter maksimum buf dari file yang direferensikan oleh fp.
Fungsi fscanf() hanya akan membaca kumpulan string hingga dijumpai spasi atau EOF atau
jumlah karakter maksimum buf dari file yang direferensikan oleh fp.
Kedua fungsi ini akan menyalin string yang dibaca ke variable buf dan menambahkan
karakter null untuk mengakhiri string.

Untuk membaca seluruh isi file secara langsung, maka proses perulangan dibutuhkan hingga
proses membaca data dalam file mencapai EOF untuk fscanf() dan mencapai Null untuk
fgets().

Slide 24
Memberikan contoh cara membaca file teks per baris.

Slide 25
Memberikan contoh cara membaca file per kata.
Slide 27

Operasi pada File (Binary File)

File Binary mirip dengan file teks, tetapi pada file binary hanya berisi data numerik.
Membuat, membaca dan menulis file binary sama seperti pada file teks, tetapi untuk menulis
atau membaca binary file, mode membuka file yang digunakan adalah menggunakan mode
binary.

File biner adalah file yang pola penyimpanan di dalam disk berbentuk biner, yaitu seperti
bentuk pada memori RAM (komputer). Misalnya data bertipe int selalu akan menempati
ruang 4 byte (pada mesin 32 bit), berapapun harganya.

Slide 28

Mode penulisan Binary File.

Mode Keterangan
rb Membuka file binary untuk dibaca
wb Membuka atau membuat file binary untuk di tulis
ab Membuka atau membuat file binary untuk menambahkan isi file.
rb+ Membuka file binary untuk dibaca dan ditulis
wb+ Membuka atau memuat file binary untuk dibaca dan ditulis
ab+ Membuka atau membuat file binary untuk dibaca dan menambahkan isi file.

Slide 29

Contoh Membuat,membuka dan menutup File Binary

pada file binary, sama seperti file text, tetapi yang membedakan hanya pada mode buka
filenya jika filenya telah dibuka, maka file harus ditutup kembali.
Slide 30

Menulis File Binary

Fungsi fwrite() merupakan fungsi khusus yang digunakan untuk menulis dalam bentuk file
binary. Fungsi fwrite() merupakan bagian dari header file stdio.h.

Sintaks :

fwrite(void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *fp)

Slide 31

Kenapa text yang disimpan dengan format binary, tetap menghasilkan teks? Bukan binary 0
dan 1?

Karena, format text yang tersimpan dalam binary file maupun text file adalah sebenarnya
adalah data 0 dan 1, sehingga tidak akan ada perbedaan antara penyimpanan teks dengan
format binary maupun format text. Sehingga jika binary file menyimpan teks, masih akan
tetap dapat dibaca pada notepad, Akan tetapi, perbedaan akan terlihat saat anda menyimpan
data (dalam bentuk struct), bukan teks biasa. Anda dapat membuka hasil program diatas
menggunakan textpad

Slide 32

Membaca File Binary

Fungsi fread() merupakan fungsi khusus yang digunakan untuk membaca file binary. Fungsi
fread() merupakan bagian dari header file stdio.h.
Sintaks :

fread(void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *fp)

Slide 33

Program diatas sebagai salah satu contoh untuk membaca isi File binary.

Slide 34

Membahas tentang Menulis/membaca struct dengan Binary File.

Binary file dapat bekerja dengan tipe data struct Penggunaan struct dengan binary file ini,
memungkinkan data untuk disimpan pada disk, bukan pada memori. Dua fitur yang dapat
digunakan pada struct dengan binary file adalah:

 struck dapat langsung digunakan di dalam file.


 perubahan isi struck dalam file dapat dilakukan di mana saja.

Slide 35

fungsi fwrite() digunakan untuk menuliskan data struct ke dalam binary file

.
Slide 37

Fungsi fread() digunakan untuk membaca data struct dari binary file.
Slide 39

Fungsi fseek()

fseek() digunakan untuk keperluan pengaksesan secara random. Fungsi fseek () akan


meletakkan kursor ke dalam data sesuai yang diberikan dalam file.

Sintaks :

int fseek(FILE *fptr, long int offset, int whence)

Contoh penggunaannya adalah : fseek(pf, 3, SEEK_SET);

Slide 40

*fptr : pointer ke objek FILE yang mengidentifikasi aliran.

offset : jumlah byte alamat pencarian dari Whence.

Whence : posisi dari mana offset ditambahkan.

Slide 41-42

Cara yang lebih mudah untuk mendapatkan data jika data yang disimpan banyak dan data
yang diperlukan dalam dalam posisi tertentu, maka posisi data dapat dicapai dengan
menggunakan fungsi fseek ().
Slide 43

Program diatas untuk input data kedalam file biner,

Slide 47

Fungsi tambahan.

ftell(): digunakan untuk mendapatkan lokasi pointer terakhir dalam file

Sintaks : int ftell(FILE *fp)

rewind(): mengembalikan pointer ke posisi awal file

Sintaks : void rewind(FILE *fp)

Slide 49

Fungsi access() dapat digunakan mengetahui apakah file yang akan dibuat sudah ada atau
tidak .

Fungsi access() terdapat dalam header io.h

Sintaks:

int access(*path, int mode)


Slide 50

Mengecek Keberadaan File.

*path menunjukan letak direktori dari file berada. Mode pada fungsi access() dibagi menjadi:

Slide 51

Program diatas merupakan contoh untuk mengecek keberadaan file.

Slide 52-53

Mengganti nama File,

 Fungsi rename() digunakan untuk mengganti nama suatu file yang sudah ada di disk.
Fungsi rename() terdapat dalam header stdio.h

Sintaks:

int rename(char *old, char *new)

 *old merupakan nama file lama yang akan diganti


 *new merupakan nama file baru yang akan diberikan
 Fungsi rename() akan memberikan nilai 0 jika nama file berhasil digantikan.
 Jika file gagal digantikan, maka fungsi rename() akan mengembalikan nilai bukan 0.
Slide 55-56

Menghapus File.

 Untuk menghapus file, fungsi remove() atau unlink() pada C dapat digunakan.

Sintaks :

int remove(char *path)

int unlink (char * path)

• *path menunjukan letak direktori dari file berada.


• Fungsi remove() dan unlink() akan mengembalikan nilai 0 jika file ditemukan dan
berhasil dihapus.
• Jika file gagal dihapus, maka fungsi remove akan mengembalikan nilai bukan 0.

Slide 57

Program diatas merupakan contoh untuk menghapus file.

Slide 58

Unlink dari library io.h. Remove dari library stdio.h.


PENJELASAN MODUL PREPROCESSOR

Slide 4-5

Menjelaskan tentang Preprocessor.

• Preprocessor bukan merupakan bagian dari compiler, tetapi merupakan langkah


terpisah dalam proses kompilasi.
• preprocessor dalam C adalah preprocessor macro yang mengubah alur program
sebelum dikompilasi.
• Transformasi ini seperti menambahkan file header, ekspresi makro, dll.
• Preprocessor biasanya dimulai dengan simbol #.
#define PI 3.14
• Langkah pertama dalam proses kompilasi adalah menyerahkan file C ke preprocessor
C.
• Preprocessor akan memodifikasi teks dari file kode C melalui berbagai substitusi teks
dan operasi manipulasi.
• File C yang dimodifikasi tersebut kemudian diteruskan ke kompiler C untuk di
kompilasi.

Slide 6
Including Header Files.
• File header merupakan file yang berisi deklarasi C dan definisi Macro untuk
dibagikan di antara beberapa file C.
• Penggunaan file header di program dilakukan dengan menyertakan file header pada
pre-processor C yaitu “#include”.

#include digunakan untuk memberitahu preprocessor untuk menyisipkan isi file lain


ke kode program kita pada titik tertentu.

Format Penulisan:
#include "nama_file"
atau
#include <nama_file>

Slide 7
File header terdiri atas 2 yaitu :
• File header sistem: berupa interface dari sistem operasi. File header ini digunakan
untuk memberikan definisi dan deklarasi fungsi yang dibutuhkan program, sehingga
program dapat menggunakan fungsi yang tersedia.
• File header User-defind : berisi deklarasi interface dari file header yang dibuat
sendiri. Setiap kali sekelompok fungsi yang telah dibuat sebelumnya diperlukan
dalam beberapa file C yang berbeda, maka dapat dilakukan dengan membuat file
header sendiri.

Slide 8-9
Fungsi File Header sendiri adalah:
• Menambahkan file header menghasilkan hasil yang sama seperti menyalin file ke
setiap file C yang membutuhkannya.
• Dengan file header, deklarasi terkait hanya dilakukan di satu tempat.
• Menjaga konsistensi program
Dalam C, nama file header diakhiri dengan ekstensi *.h.

Slide 10
Cara membuat user-defind header file.
• header files adalah file yang hanya berisikan user-defind function dan procedure.
• Dalam file header, tidak ada fungsi main()
• Setiap file disimpan dalam extensi *.h
• File *.h tidak bisa di bulid dan di-run

Slide 11
Contoh penggunaan mymathheader,h

Note: Simpan file dalam nama MyMathHeader.h pada direktori yang sama dengan file C
anda.
Slide 12
Contoh penggunaan myinput.h

Note : Simpan file dalam nama MyIntInput.h pada direktori yang berbeda dengan file C
anda

Slide 14
Penjelasan Tentang Macro.
• Macro adalah proses di mana pengidentifikasi / pendeklarasian dalam program
digantikan oleh string atau nilai yang sudah ditentukan sebelumnya.
•  #define merupakan statement preprocessor untuk mendefinisikan macro.
• #define digunakan untuk mendefinisikan sebuah makro pada kode program kita.
Makro memiliki arti yang sama dengan fungsi, namun dari segi waktu, makro
diproses lebih cepat dan dari cara penulisannya pun juga lebih sederhana dari pada
fungsi. Pada umumnya nilai konstanta pada makro yang telah didefinisikan hanya
dapat bernilai angka, string atau sebuah ekspresi. Makro yang didefinisikan bukanlah
sebuah variabel dan juga tidak dapat diubah oleh kode program seperti halnya
merubah sebuah variabel biasa.
• Terdapat 2 tipe macro. Perbedaan tipe tersebut dapat dilihat pada bagaimana macro
digunakan, yaitu :Object-like macro dan function-like macro

Slide 15-16-17
Penjelasan tentang Object-Like Macro.
• object-like macro merupakan identifier sederhana yang digunakan untuk
menggantikan sebaris kode yang sering digunakan
• Macro ini disebut sebagai object-like karena terlihat sebagai objek yang berisis data
saat digunakan.
• object-like macro banyak digunakan untuk memberikan symbol terhadap nilai
konstanta.
• Contoh:
#define BUFFER_SIZE 1024
• object-like macro dapat menyimpan nilai konstanta berupa kumpulan nilai
• Penulisan kumpulan nilai dengan object-like macro menggunakan tanda koma(,)
• Tanda backslash diikuti newline dapat digunakan jika macro didefinisikan lebih dari
satu baris.
• Contoh:
#define NUMBERS 10, \
20, \
30

Slide 18
Function-like macro
• function-like macro merupakan pendefinisan macro dalam bentuk pemanggilan
fungsi.
• function-like macro digunakan untuk menggantikan sebaris fungsi yang sering
digunakan
• Penggunaan function-like macro, yaitu dengan menambahkan tanda buka tutup
kurung ”()” setelah nama macro.
• Contoh:
#define rz returnZero()
int returnZero(){
return 0;
}

Slide 20
Macro Arguments.
• Function-like macro dapat digunakan untuk mengirimkan arguments, kepada
parameter functions.
• Untuk mendefinisikan macro yang mengirimkan argument, parameters dimasukkan
antara pasangan tanda kurung dalam definisi makro yang diikuti fungsi makro (mirip
fungsi pada umumnya)

• Pengiriman nilai ke parameters harus sesuai dengan idenfier pada C, yang dipisahkan
dengan tanda koma.

• Contoh:

#define pow(X) ((X)*(X))

Slide 22-23
Variadic Macro
• Fungsi Variadic digunakan untuk membuat sebuah program yang bersifat fleksibel.
• Variadic macro merupakan sebuah variable yang dapat menampung banyak argument
• Contoh:
#define debugPrintf(...) printf (__VA_ARGS__)
Program diatas merupakan salah satu contoh penggunaan variadic macro.

Slide 24-26
Penggunaan variadic Macro
• Perharikan Program Berikut :
int Tambah(int n1, int n2)
{
return n1 + n2;
}
• Jika kita perlu menambahkan jumlah data, maka fungsi diatas harus diubah menjadi
int Tambah(int n1, int n2, int n3)
{
return n1 + n2 + n3;
}
• Semakin banyak angka yang perlu ditambahkan, maka semakin banyak parameter
fungsi ditambahkan
• Dalam program C, ada cara mudah untuk menyelesaikan masalah ini dengan fungsi
variadic.
• Fungsi variadic merupakan fungsi build-in dalam C yang terdapat pada stdarg.h.
Cara menggunakan fungsi Variadic:
• Buat sebuah fungsi dengan sebuah parameter int yang menandakan jumlah
argument dan sebuah parameter terakhir berupa …

• Pada fungsi buat dekalrasi variable dengan tipe data va_list.


• Gunakan fungsi va_start macro untuk menginisialisasi tipe data va_list dan
jumlah argument

• Gunakan fungsi va_arg macro dan variable va_list untuk mengakses semua
argument.

• Gunakan fungsi va_end macro untuk mebersihkan memory va_list variable.

Slide 28

Predefined Macros

• ANSI C mendefinisikan beberapa marco yang dapat langsung digunakan.

• Walaupun marco ini dapat digunakan dalam pemrograman, predefined macro ini tidak
boleh dimodifikasi secara langsung.

• sebelum code program bahasa C dicompile maka ada proses yg harus dilakukan oleh
preprosesor directive (#define, #include, #pragma dll)

Slide 29

Predefined Macros

__DATE__ Menampilkan tanggal sistem dalam format “MMM DD YYYY”.

__TIME__ Menampilkan jam sistem dalam format”HH:MM:SS”.

__FILE__ Menampilkan nama file dalam bentuk string.

__LINE__ Menampilkan nomor baris saat ini sebagai konstanta desimal.

__STDC__ Didefenisikan sebagai 1 ketika compiler sesuai dengan standar ANSI.

Slide 30
Contoh penggunaan predefinedmacros.

Slide 31
Conditional Compilation
• Conditional compilation sama seperti perinta IF yaitu kode akan dijalankan jika
kondisi if bernilai benar.
• Perbedaannya, pada pre-processor Conditional Compilation ekspresi perbandingan
pre-processor dapat mengunakan ekprsi macro.
• Pre-processor Conditional Compilation dibagi menjadi #if, #ifdef, #else, #elif,
#ifndef, #endif

Keyword berikut ini tidak boleh dijadikan nama variable atau konstanta :

-auto -double- int -long-break -else -switch-case -enum -register -typedef-char -extern -return
-union-const -float -short -unsigned-continue -for -signed -void-default -goto -sizeof
-volatile-do -if -static –while

Slide 32

#if

#if digunakan untuk menentukan apakah kode berikutnya harus disertakan dalam proses
Kompilasi atau tidak.
Format Penulisan:
#if ekspresi_konstanta

• #if mengecek apakah expression bernilai benar.


• Expression pada #if harus berupa constant integer expression yamg tidak
menggunakan increment (++), decrement (- -), sizeof , pointer (*), address (&), dan
cast operators.
• Jika Expression bernilai salah, maka proses baris pre-processor berikutnya akan
dilewatkan

Slide 33
#ifdef
#ifdef digunakan untuk menentukan apakah makro yang tersedia ada sebelum kode
berikutnya dimasukan kedalam proses kompilasi.
Format Penulisan:
#ifdef nama_makro
• #ifdef akan mengecek apakah identifier telah didefinisikan atau belum.
• Identifiers dapat berupa pre-processor #define ataupun command line.
• Jika identifiers belum didefinisikan, maka proses baris pre-processor berikutnya akan
dilewatkan.

Slide 34
#ifndef
#ifndef digunakan untuk menentukan apakah makro yang tersedia tidak ada sebelum kode
berikutnya dimasukan ke dalam proses kompilasi.
Format Penulisan:
#ifndef nama_makro
• #ifndef akan mengecek apakah identifier telah didefinisikan atau belum.
• Identifiers dapat berupa pre-processor #define ataupun command line.
• Jika identifiers sudah didefinisikan, maka proses baris pre-processor berikutnya akan
dilewatkan

Slide 35
#else
#else memberikan tindakan alternatif pada kondisi #if, #ifdef, atau #ifndef. Kode program
akan disertakan setelah pernyataan else ketika kondisi #if, #ifdef, atau #ifndef bernilai false.
Format Penulisan:
#else
• #else memberikan alternatif untuk preprocessor #if, #ifdef, dan #ifndef ketika
bernilai salah.
• #else bersifat opsional.

Slide 36
#elif
#elif
#elif menyediakan suatu tindakan alternatif pada kondisi #if, #ifdef, atau #ifndef. Kode
program akan disertakan setelah pernyataan #elif  ketika kondisi sebelumnya #if, #ifdef  atau
#ifndef bernilai  false dan kondisi #elif  bernilai true. Kondisi #elif  merupakan
penyederhanaan dari kondisi #else if.

Format Penulisan:
#elif ekspresi_konstanta

• #elif bekerja sama seperti kombinasi else-if pada statement C.


• #elif memberikan alternatif baris untuk dijalankan ketika expression bernilai benar.
• #elif digunakan bersamaan pada #if , #ifdef , #ifndef , atau #elif lainya
• #elif bersifat optional.

Slide 37
#endif
#endif digunakan untuk menutup kondisi #if, #ifdef, atau #ifndef.

Format Penulisan:
#endif
 #endif menandakan akhir dari #if , #ifdef , #ifndef , #else , ataupun #elif

Slide 39
Membahas tentang Diagnostics
• Diagnostics pada C dapat menggunakan preprocessor #error
• #error merupakan preprocessor untuk menampilkan pesan ke compiler ketika terjadi
error.
• Pendefinisian #error ditambahkan dengan sebuah string yang akan digunakan sebagai
pesan kesalahan.
• Diagnostics pre-processor biasanya dikombinasikan dengan kombinasi Conditional
Compilation untuk mengecek parameter dari program.
• Jika Parameter yang digunakan program tidak tepat, maka pesan dari #error dapat
diberikan ke compiler.

Slide 40

Program diatas merupakan salah satu contoh penggunaan diagnostics.


Slide 41-42

Pragmas

Preprocessor #pragma merupakan sebuah fungsi pada bahasa C standard untuk memberikan
informasi tambahan kepada compiler . #pragma digunakan untuk menyalakan dan mematikan
fitur yang ada dalam program
#pragma adalah sebuah instruksi yang telah didefinisikan implementasinya, yang
memungkinkan suatu variasi instruksi yang diberikan pada compiler. Fungsi #pragma ini
tidak support pada compiler gcc terbaru.
#pragma startup dan #pragma exit: digunakan untuk menspesifikasikan fungsi yang
dijalankan sebelum program dimulai dam sebelum program ditutup.

Tabel Pragma:
Nama Pragma Keterangan

startup menjalankan fungsi sebelum fungsi main()

exit menjalankan fungsi sesudah fungsi main()

warn menampilkan peringatan (warning) pada program

option menentukan daftar pilihan compiler yang akan diproses

inline menentukan bahwa fungsi C harus sebaris (inline)

argsused menonaktifkan pesan peringatan (warning)

hdrfile -

hdrstop mengakhiri daftar header file yang memenuhi syarat untuk precompilation

saveregs -

Slide 44
Kode C diatas hanya akan menghasilkan keluaran berupa :
“Start Story”
Hal ini dikarenakan compiler tidak mendukung pre-processor #pragma, sehingga #pragma
tidak akan dijalankan Akan tetapi. Untuk menghasilkan hasil program seperti penggunaan
#pragma, Kode C dapat diganti mengunakan fungsi.

Slide 46
#undef
#undef digunakan untuk memberitahu preprocessor untuk menghapus semua makro tertentu
yang telah didefinisikan. Sebuah makro dapat didefinisikan ulang setelah makro tersebut
dihapus oleh #undef.
Format Penulisan:
#undef nama_makro

Slide 47

Program diatas merupakan salah satu contoh penggunaan undef.

Anda mungkin juga menyukai