Anda di halaman 1dari 121

LAPORAN PRAKTIKUM

APLIKASI PEMROGRAMAN BAHASA C


Dosen pengampu : Ibrahim Lammada ST.,MT
Asisten : Vatur Rizki Kusnadi

Nama : Helmi Purwacaraka


NPM : 1710631160061
Kelas : Teknik Elektro C 2017
Kelompok : C2

PROGRAM STUDI TEKNIK ELEKTRO


FAKULTAS TEKNIK
UNIVERSITAS SINGAPERBANGSA KARAWANG
2019
KATA PENGANTAR

Assalamu’alaikum Wr. Wbr.


Puji syukur kami panjatkan kehadirat Allah SWT yang telah melimpahkan rahmat
dan berkah-Nya sehingga Laporan Praktikum Aplikasi Pemrograman Babasa C
pada Program Studi Teknik Elektro Fakultas Teknik Universitas Singaperbangsa
Karawang telah tersusun. Laporan Praktikum Aplikasi Pemrograman Bahasa C ini
merupakan acuan bagi mahasiswa dalam menunjang pembelajaran berdasarkan
mata kuliah yang telah ditempuh pada semester sebelumnya, yaitu Aplikasi
Pemrograman Bahasa C.

Lingkup pembahasan pada laporan ini meliputi dasar pemrograman bahasa C,


Pengambilan Keputusan, Perulangan, Array, Fungsi, String, Pointer dan Struktur.
Hasil kegiatan praktikum ini diharapkan memberikan pemahaman dan
kemampuan mahasiswa dalam penggunaan penerapan Pemrograman dengan
Bahasa C.

Penyusun menyadari bahwa laporan ini masih jauh dari sempurna sehingga segala
bentuk masukan yang kontruktif sangat diharapkan dalam pengembangan dan
perbaikan Laporan Praktikum Aplikasi Pemprograman Bahasa C ini di masa yang
akan datang.

Wassalamu’alaikum Wr. Wbr.

Karawang, Maret 2019

Penyusun

i
DAFTAR ISI

KATA PENGANTAR......................................................................................................i
DAFTAR ISI .................................................................................................................. ii
BAB 1 ALGORITMA & FLOWCHART ........................................................................1
1.1 TUJUAN ...............................................................................................................1
1.2 TEORI DASAR.....................................................................................................1
1.3 HASIL PERCOBAAN PRAKTIKUM ...................................................................3
1.4 PEMBAHASAN DAN ANALISIS ........................................................................8
1.5 KESIMPULAN .....................................................................................................9
BAB 2 DASAR PROGRAM BAHASA C ..................................................................... 10
2.1 TUJUAN ............................................................................................................. 10
2.2 TEORI DASAR................................................................................................... 10
2.3 HASIL PERCOBAAN PRAKTIKUM ................................................................. 14
2.4 PEMBAHASAN DAN ANALISIS ...................................................................... 17
2.5 KESIMPULAN ................................................................................................... 18
BAB 3 PENGAMBILAN KEPUTUUSAN ................................................................... 19
3.1 TUJUAN ............................................................................................................. 19
3.2 TEORI DASAR................................................................................................... 19
3.3 HASIL PERCOBAAN PRAKTIKUM ................................................................. 24
3.4 PEMBAHASAN DAN ANALISIS ...................................................................... 35
3.5 KESIMPULAN ................................................................................................... 36
BAB 4 PENGULANGAN PROSES .............................................................................. 37
4.1 TUJUAN ............................................................................................................. 37
4.2 TEORI DASAR................................................................................................... 37
4.3 HASIL PERCOBAAN PRAKTIKUM ................................................................. 45
4.4 PEMBAHASAN DAN ANALISIS ...................................................................... 50
4.5 KESIMPULAN ................................................................................................... 50
BAB 5 FUNGSI DASAR .............................................................................................. 51
5.1 TUJUAN ............................................................................................................. 51
5.2 TEORI DASAR................................................................................................... 51

ii
5.3 HASIL PERCOBAAN PRAKTIKUM ................................................................. 59
5.4 PEMBAHASAN DAN ANALISIS ...................................................................... 64
5.5 KESIMPULAN ................................................................................................... 65
BAB 6 FUNGSI MATEMATIKA ................................................................................. 66
6.1 TUJUAN ............................................................................................................. 66
6.2 TEORI DASAR................................................................................................... 66
6.3 HASIL PERCOBAAN PRAKTIKUM ................................................................. 68
6.4 PEMBAHASAN DAN ANALISIS ...................................................................... 70
6.5 KESIMPULAN ................................................................................................... 70
BAB 7 POINTER ......................................................................................................... 71
7.1 TUJUAN ............................................................................................................. 71
7.2 TEORI DASAR................................................................................................... 71
7.3 HASIL PERCOBAAN PRAKTIKUM ................................................................. 74
7.4 PEMBAHASAN DAN ANALISIS ...................................................................... 78
7.5 KESIMPULAN ................................................................................................... 78
BAB 8 ARRAY ............................................................................................................ 79
8.1 TUJUAN ............................................................................................................. 79
8.2 TEORI DASAR................................................................................................... 79
8.3 HASIL PERCOBAAN PRAKTIKUM ................................................................. 86
8.4 PEMBAHASAN DAN ANALISIS ...................................................................... 90
8.5 KESIMPULAN ................................................................................................... 91
BAB 9 STRING ............................................................................................................ 92
9.1 TUJUAN ............................................................................................................. 92
9.2 TEORI DASAR................................................................................................... 92
9.3 HASIL PERCOBAAN PRAKTIKUM ................................................................. 95
9.4 PEMBAHASAN DAN ANALISIS .................................................................... 101
9.5 KESIMPULAN ................................................................................................. 101
BAB 10 STRUKTUR ................................................................................................. 102
10.1 TUJUAN ......................................................................................................... 102
10.2 TEORI DASAR ............................................................................................... 102
10.3 HASIL PERCOBAAN PRAKTIKUM ............................................................. 106
10.4 PEMBAHASAN DAN ANALISIS .................................................................. 116
10.5 KESIMPULAN ............................................................................................... 117

iii
BAB 1 ALGORITMA & FLOWCHART

1.1 TUJUAN

1. Mampu memahami persoalan


2. Mendesain penyelesaian persoalan ke dalam algoritma
3. Menotasikan algoritma yang sudah dibuat menggunakan notasi flowchart

1.2 TEORI DASAR

Beberapa langkah dalam proses pembuatan suatu program atau software :

1. Mendefinisikan Masalah dan Menganalisanya

Langkah awal yang harus dilakukan adalah mengidentifikasikan masalah antara


lain tujuan dari pembuatan program, parameter-parameter yang digunakan,
fasilitas apa saja yang akan disediakan oleh program. Kemudian menentukan
metode atau algoritma apa yang akan diterapkan untuk menyelesaikan masalah
tersebut dan terakhir menentukan bahasa program yang digunakan untuk
pembuatan program.

2. Merealisasikan dengan langkah-langkah berikut :

1
Algoritma
Algoritma adalah urutan langkah-langkah logika yang menyatakan suatu tugas
dalam
menyelesaikan suatu masalah atau problem.

Contoh :

Buatlah algoritma untuk menentukan apakah suatu bilangan merupakan bilangan


ganjil atau bilangan genap.
Algoritmanya :
1. Masukkan sebuah bilangan sembarang
2. Bagi bilangan tersebut dengan bilangan 2
3. Hitung sisa hasil bagi pada langkah 2.
4. Bila sisa hasil bagi sama dengan 0 maka bilangan itu adalah bilangan
genap tetapi bila sisa hasil bagi sama dengan 1 maka bilangan itu adalah
bilangan ganjil

Dari contoh algoritma di atas tentang menentukan apakah suatu bilangan adalah

2
bilangan ganjil atau bilangan genap, flowchart dari program adalah sebagai
berikut

1.3 HASIL PERCOBAAN PRAKTIKUM

1. Menghitung luas lingkaran dan mencetak hasilnya

#include <stdio.h>

main()

float PHI=3.14;

float jari,luas;

printf("Masukkan Jari-jari Lingkaran : ");

scanf("%f", &jari);

luas=PHI*jari*jari;

printf("Luas : %f", luas);

3
getch();

return 0;

Hasil keluarannya

2. Proses pengiriman email, jika email tidak terkirim maka akan


dilakukan proses pengiriman email lagi

#include <stdio.h>
main ()
{
char a='t';
int n;
while(a=='t'||a=='T')
{
printf("Pengiriman e-mail ke- ");
scanf("%d", &n);
printf("Apakah e-mail terkirim [y/t]?");
getchar();
a=getchar();
}
printf("E-mail terkirim dengan %d percobaan",n);
}

4
Hasil keluarannya

3. Proses melakukan panggilan telepon, jika tidak diangkat maka


dilakukan panggilan telepon lagi

#include <stdio.h>
main ()
{
char a='t';
int n;
while(a=='t'||a=='T')
{
printf("Panggilan telepon ke-");
scanf("%d", &n);
printf("Apakah telepon diangkat [y/t]?");
getchar();
a=getchar();
}
printf("Telepon diangkat sampai %d percobaan",n);
}

5
Hasil keluarannya

4. Perusahaan daerah air minum menentukan tarif per-m3 air berdasarkan


ketentuan sebagai berikut :

Buatlah program yang membaca jumlah pemakaian air, untuk


menghitung biaya yang harus dibayar dan menampilkan hasilnya di
layar

#include <stdio.h>
#include <math.h>
main ()
{
int a,b,biaya;
printf("Menghitung jumlah pemakaian air\n");
printf("Masukkan pemakaian air : ");
scanf("%d", &a);
if(a>15)
{
biaya=a*650;
printf("Jumlah pemakaian air : %d Rupiah", biaya);

6
}
else
{
biaya=a*300;
printf("Jumlah pemakaian air : %d Rupiah", biaya);
}
return 0;

Hasil keluarannya

5. Buatlah program untuk menjumlahkan bilangan 1 sampai 10, tapi yang


dijumlahkan bilangan ganjil saja

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

main()
{
int bil, total=0;
for (bil=1; bil<=10; bil+=2)
{
printf("\n%d", bil);
total+=bil;

7
}
printf("\nJadi total jumlah bilangan ganjil adalah : %d", total);
getche();
}

Hasil keluarannya

1.4 PEMBAHASAN DAN ANALISIS

PERCOBAAN 1

1. Phi, adalah ketetapan konstanta yang di tetapkan oleh pemprogram.


2. Printf untuk menampilan keluaran data
3. Scanf untuk membaca masukan data
4. Penggunaan %f untuk membaca sebuah data pecahan
5. Penggunaan %d untuk membaca sebuah nilai desimal
PERCOBAAN 2
1. Fungsi char sederhana adalah masukan variabel huruf yang tidak boleh
melebihi dari angka di dalam kurung [ ].
2. Penggunaan %d pada scanf berfungsi untuk menampilkan angka bilangan
decimal sesuai perintah.
3. Pada Case pertama jika kita menginputkan Karakter Huruf “Y” maka
Output yang dihasilkan akan menampilkan “Email terkirim dengan %d
percobaan”, namun jika Case pertama tidak terpenuhi atau kita

8
menginputkan “T” makan program akan menampilkan “Apakah email
terkirim (y/t)?”.
PERCOBAAN 3
1. Fungsi char sederhana adalah masukan variabel huruf yang tidak boleh
melebihi dari angka di dalam kurung { }.
2. Penggunaan %d pada scanf berfungsi untuk menampilkan angka bilangan
decimal sesuai perintah.
3. Pada Case pertama jika kita menginputkan Karakter Huruf “Y” maka
Output yang dihasilkan akan menampilkan “Telepon diangkat dengan %d
percobaan”, namun jika Case pertama tidak terpenuhi atau kita
menginputkan “T” makan program akan menampilkan “Apakah telepon
diangkat (y/t)?”.
PERCOBAAN 4
1. Penggunaan Int yaitu untuk deklarasi tipe data specifier yang digunakan
untuk membuat variabel integer (bilangan bulat).
2. Else Adalah bagian dari pernyataan kondisional if. Alur dibawah keyword
else akan dijalankan jika ekspresi yang menyertai keyword if bernilai
false.
3. Penggunaan \n untuk membuat tab garis baru.
PERCOBAAN 5
1. Penggunaan Int yaitu untuk deklarasi tipe data specifier yang digunakan
untuk membuat variabel integer (bilangn bulat).
2. Penggunaan Operator for untuk Loop yang memungkinkan pemberian
huruf awal dan kenaikan secara otomatis dari variabel.
3. Printf terahir untuk menampilkan hasil akhir dari program diatas.
4. Pada program di atas, kenaikan terhadap variabel pengendali loop sebesar
2 (positif), yang dinyatakan dengan ungkapan bilangan + = 2 yang sama
artinya dengan bilangan = bilangan + 2.

1.5 KESIMPULAN

Pada bab ini, kita diajarkan membuat algoritma dan flowchart yang bertujuan
untuk memahami persoalan, yang menggunakan urutan-urutan langkah logika
yang menyatakan suatu tugas, dan menyusunnya dalam bentuk simbol simbol
yang memiliki fungsi berbeda

9
BAB 2 DASAR PROGRAM BAHASA C

2.1 TUJUAN

1. Mengenal sintaks dan fungsi-fungsi dasar dalam bahasa C


2. Mampu membuat flowchart untuk algoritma untuk memecahkan suatu
masalah sederhana, selanjutnya mengimplementasikannya dalam bahasa

2.2 TEORI DASAR

Akar dari bahasa C adalah bahasa BCPL yang dikembangkan oleh Martin
Richards pada tahun 1967. Bahasa ini memberikan ide kepada Ken Thompson
yang kemudian mengembangkan bahasa yang disebut dengan B pada tahun 1970.
Perkembangan selanjutnya dari bahasa B adalah bahasa C oleh Dennis Ritchie
sekitar tahun 1970-an di Bell Telephone Laboratories Inc. (sekarang adalah
AT&T Bell Laboratories). Bahasa C pertama kali digunakan pada komputer
Digital Equipment Corporation PDP-11 yang menggunakan sistem operasi UNIX.

Proses Kompilasi dan Linking Program C

Proses dari bentuk source program, yaitu program yang ditulis dalam bahasa C
hingga menjadi program yang executable ditunjukkan pada Gambar 1 di bawah
ini:

Gambar 1 Proses Kompilasi Linking Program C

10
Struktur Penulisan Program C

Program C pada hakekatnya tersusun atas sejumlah blok fungsi. Sebuah program
minimal mengandung sebuah fungsi. Fungsi pertama yang harus ada dalam
program C dan sudah ditentukan namanya adalah main(). Setiap fungsi terdiri atas
satu atau beberapa pernyataan, yang secara keseluruhan dimaksudkan untuk
melaksanakan tugas khusus. Bagian pernyataan fungsi (sering disebut tubuh
fungsi) diawali dengan tanda kurung kurawal buka ({) dan diakhiri dengan tanda
kurung kurawal tutup (}). Di antara kurung kurawal itu dapat dituliskan statemen-
statemen program C. Namun pada kenyataannya, suatu fungsi bisa saja tidak
mengandung pernyataan sama sekali. Walaupun fungsi tidak memiliki pernyataan,
kurung kurawal haruslah tetap ada. Sebab kurung kurawal mengisyaratkan awal
dan akhir definisi fungsi. Berikut ini adalah struktur dari program C

Pemrograman dengan bahasa C dikatakan bahasa terstruktur karena strukturnya


menggunakan fungsi-fungsi sebagai program-program bagiannya (subroutine).
Fungsi fungsi yang ada selain fungsi utama (main()) merupakan program-program
bagian. Fungsi-fungsi ini dapat ditulis setelah fungsi utama atau diletakkan di file
pustaka (library). Jika fungsi-fungsi diletakkan di file pustaka dan akan dipakai
di suatu program, maka nama file judulnya (header file) harus dilibatkan dalam
program yang menggunakannya dengan preprocessor directive berupa #include.

Fungsi-Fungsi Dasar

a. Fungsi main()
Fungsi main() harus ada pada program, sebab fungsi inilah yang menjadi titik
awal dan titik akhir eksekusi program. Tanda { di awal fungsi menyatakan
awal tubuh fungsi dan sekaligus awal eksekusi program, sedangkan tanda } di
akhir fungsi merupakan akhir tubuh fungsi dan sekaligus adalah akhir eksekusi
program. Jika program terdiri atas lebih dari satu fungsi, fungsi main() biasa
ditempatkan pada posisi yang paling atas dalam pendefinisian fungsi. Hal ini
hanya merupakan kebiasaan. Tujuannya untuk memudahkan pencarian
terhadap program utama bagi pemrogram. Jadi bukanlah merupakan suatu
keharusan.

11
b. Fungsi printf()
Fungsi printf() merupakan fungsi yang umum dipakai untuk menampilkan
suatu keluaran pada layar peraga. Untuk menampilkan tulisan.

Selamat belajar bahasa C

misalnya, pernyataan yang diperlukan berupa :

printf(“Selamat belajar bahasa C”);

Pernyataan di atas berupa pemanggilan fungsi printf() dengan argumen atau


parameter berupa string. Dalam C suatu konstanta string ditulis dengan diawali
dan diakhiri tanda petik-ganda (“). Perlu juga diketahui pernyataan dalam C
selalu diakhiri dengan tanda titik koma (;). Tanda titik koma dipakai sebagai
tanda pemberhentian sebuah pernyataan dan bukanlah sebagai pemisah antara
dua pernyataan.

Tanda \ pada string yang dilewatkan sebagai argumen printf() mempunyai


makna yang khusus. Tanda ini bisa digunakan untuk menyatakan karakter
khusus seperti karakter baris-baru ataupun karakter backslash (miring kiri).
Jadi karakter seperti \n sebenarnya menyatakan sebuah karakter. Contoh
karakter yang ditulis dengan diawali tanda \ adalah :

\” menyatakan karakter petik-ganda


\\ menyatakan karakter backslash
\t menyatakan karakter tab

Dalam bentuk yang lebih umum, format printf()

printf(“string kontrol”, daftar argumen);

dengan string kontrol dapat berupa satu atau sejumlah karakter yang akan
ditampilkan ataupun berupa penentu format yang akan mengatur penampilan
dari argumen yang terletak pada daftar argumen. Mengenai penentu format di
antaranya berupa :

%d untuk menampilkan bilangan bulat (integer)


%f untuk menampilkan bilangan titik-mengambang (pecahan)
%c untuk menampilkan sebuah karakter
%s untuk menampilkan sebuah string

Contoh:
#include <stdio.h>
main( )

12
{
printf(“No : %d\n”, 10);
printf(“Nama : %s\n”, “Ali”;
printf(“Nilai : %f\n”,80.5;
printf(“Huruf : %c\n”,‘A’);
}

Praprosesor #include
#include merupakan salah satu jenis pengarah praprosesor (preprocessor
directive). Pengarah praprosesor ini dipakai untuk membaca file yang di
antaranya berisi deklarasi fungsi dan definisi konstanta. Beberapa file judul
disediakan dalam C. File-file ini mempunyai ciri yaitu namanya diakhiri dengan
ekstensi .h. Misalnya pada program
#include <stdio.h> menyatakan pada kompiler agar membaca file bernama
stdio.h saat pelaksanaan kompilasi.
Bentuk umum #include :
#include “namafile”
Bentuk pertama (#include <namafile>) mengisyaratkan bahwa pencarian file
dilakukan pada direktori khusus, yaitu direktori file include. Sedangkan bentuk
kedua (#include “namafile”) menyatakan bahwa pencarian file dilakukan pertama
kali pada direktori aktif tempat program sumber dan seandainya tidak ditemukan
pencarian akan dilanjutkan pada direktori lainnya yang sesuai dengan perintah
pada sistem operasi. Kebanyakan program melibatkan file stdio.h (file-judul I/O
standard, yang disediakan dalam C). Program yang melibatkan file ini yaitu
program yang menggunakan pustaka I/O (input-output) standar seperti printf().

Komentar dalam Program


Untuk keperluan dokumentasi dengan maksud agar program mudah dipahami di
suatu saat lain, biasanya pada program disertakan komentar atau keterangan
mengenai program. Dalam C, suatu komentar ditulis dengan diawali dengan tanda
/* dan diakhiri dengan tanda */.

Contoh :
/* Tanda ini adalah komentar
untuk multiple lines
*/
#include <stdio.h>
main()
{
printf(“Coba\n”); //Ini komentar satu baris
}

13
2.3 HASIL PERCOBAAN PRAKTIKUM

1. Mencetak kalimat dalam beberapa baris, dengan tampilan sebagai berikut :

Program Studi Teknik Elektro


Kampus UNSIKA tahun 2013

#include <stdio.h>

main ()

printf("Program Studi Teknik Elektro\n");


printf("Kampus UNSIKA tahun 2013");

Hasil keluarannya

2. Mencetak kalimat dalam beberapa baris, dengan tampilan sebagai berikut :

Saya sekarang sedang makan


Kantin UNSIKA
Murah meriah
Cocok untuk kalangan mahasiswa
#include <stdio.h>
main ()

14
{
printf("Saya sekarang sedang makan\n");
printf("Kantin UNSIKA\n");
printf("Murah meriah\n");
printf("Cocok untuk kalangan mahasiswa");
}

Hasil keluarannya

3. Program di bawah ini tidak berhasil di-compile karena masih terdapat


beberapa kesalahan. Betulkan kesalahan program dibawah ini, dan
tampilkan hasilnya :

#include <stdio.h>
main()
{
printf(”ternyata semester %f ini nilaiku jelek”,4);
printf(”matematika %d dan metode numerik %c”,’B’,D);
printf(”ooooo.....ternyata kuliah itu susah %d”,”sekali”);
printf(”sepertinya %s rajin belajar minimal %s sehari”,’harus’,8);
}

Yang benar

#include<stdio.h>
main()
{
printf("Ternyata semester %d ini nilaiku jelek\n",4);

15
printf("Matematika %c dan metode numerik %c\n",'B','D');
printf("oooo.......ternyata kuliah itu susah %s","sekali\n");
printf("Sepertinya %s rajin belajar minimal %d kali sehari","harus",8);
}

Hasil keluarannya

4. Mencetak kalimat dalam beberapa baris, dengan tampilan sebagai berikut:

Dalam membuat ”program komputer”


Terdapat \aturan \aturan yang harus dipenuhi
Dalam menuliskan perintah-perintah dasar
Untuk itu ”programmer” harus menghafal aturan aturan
Yang berlaku.

#include <stdio.h>
main ()
{
printf("Dalam membuat\"Program komputer\" \n");
printf("Terdapat \\aturan\\aturan yang harus dipenuhi \n");
printf("Dalam menuliskan perintah-perintah dasar \n");
printf("Untuk itu \"Programmer\" harus menghafal aturan-aturan \n");
printf("Yang berlaku.")
}

16
Hasil keluarannya

2.4 PEMBAHASAN DAN ANALISIS

PERCOBAAN 1

1. Printf pertama menghasilkan keluaran “Program Studi Teknik Elektro....”


di tambah \n yang menyatakan ganti baris.
2. Printf kedua menghasilkan keluaran “ Kampus UNSIKA Tahun 2013”
3. Penggunaan %d menyatakan bilangan dari angka 2013.
PERCOBAAN 2
1. Penggunaan Printf dari pertama sampai terakhir yaitu berfungsi untuk
menampilkan kalimat sesuai dengan yang diperintahkan.
PERCOBAAN 3
1. Kesalahan dari printf pertama seharusnya menggunakan string kontrol
“d” yang mengartikan bilangan dari angka 4.
2. Penulisan setelah kalimat matematika “%d” seharusnya menggunakan
“%c”, kedua penulisan “D” seharusnya mengunakan satu petik („...‟).
3. Kesalahan string kontrol setelah kalimat “susah” seharusnya
menggunakan “%s”, yang mengartikan kalimat.
4. Kesalahan setelah kalimat “ minimal” seharusnya menggunakan string
%d, yang mengartikan bilangan dari 8, sedangkan kata “harus”,
seharusnya menggunkan petik dua (“...”).

17
PERCOBAAN 4
1. Penulisan ouput menggunakan tanda petik dua, dalam inputnya
dimasukkan blackslash diikuti petik dua (\”) yang menyatakan karakter
petik-ganda.
2. Untuk mendapatan output penulisan karakter blackslash (\) yaitu input
mengunakan (\\).
3. Begitu pula penulisan pada kata programer yang diikuti dengan petik
blackslash dan petik dua yang mengartikan (“...”).

2.5 KESIMPULAN

Di dalam bab ini, kita mempelajari dasar program bahasa C, dimana kita
mengenal sintaks dan fungsi fungsi dasar dalam bahasa C, seperti : fungsi main (),
fungsi printf(), yang digunakan untuk membaca suatu program

18
BAB 3 PENGAMBILAN KEPUTUUSAN

3.1 TUJUAN

1. Menjelaskan tentang operator kondisi (operator relasi dan logika)


2. Menjelaskan penggunaan pernyataan if
3. Menjelaskan penggunaan pernyataan if-else
4. Menjelaskan penggunaan pernyataan if dalam if
5. Menjelaskan penggunaan pernyataan else-if
6. Menjelaskan penggunaan pernyataan switch

3.2 TEORI DASAR

Untuk keperluan pengambilan keputusan, C menyediakan beberapa jenis


pernyataan, berupa
a. Pernyataan if
b. Pernyataan if-else, dan
c. Pernyataan switch
Pernyataan-pernyataan tersebut memerlukan suatu kondisi, sebagai basis dalam
pengambilan keputusan. Kondisi umum yang dipakai berupa keadaan benar dan
salah.

Operator Relasi
Operator relasi biasa dipakai untuk membandingkan dua buah nilai. Hasil
pembandingan berupa keadaan benar atau salah. Keseluruhan operator relasi pada
C ditunjukkan pada Tabel 3-1

Tabel 1 Operasi Relasi

19
Operator Relasi
Operator logika biasa dipakai untuk menghubungkan ekspresi relasi. Keseluruhan
operator logika ditunjukkan pada tabel 2.

Tabel 1 Operasi Logika

Bentuk pemakaian operator && dan || adalah

Operand1 Operator Operand2

Pernyataan if

Pernyataan if mempunyai bentuk umum :


if (kondisi)
pernyataan;
Bentuk ini menyatakan :
 jika kondisi yang diseleksi adalah benar (bernilai logika = 1), maka
pernyataan yang mengikutinya akan diproses.
 Sebaliknya, jika kondisi yang diseleksi adalah tidak benar (bernilai
logika= 0), maka pernyataan yang mengikutinya tidak akan diproses.
Mengenai kodisi harus ditulis diantara tanda kurung, sedangkan
pernyataan dapat berupa sebuah pernyataan tunggal, pernyataan majemuk
atau pernyataan kosong.
Diagram alir dapat dilihat seperti gambar 3.1

20
Arti dari pernyataan if-else :
 Jika kondisi benar, maka pernyataan-1 dijalankan.
 Sedangkan bila kondisi bernilai salah, maka pernyataaan-2 yang
dijalankan.
Masing-masing pernyataan-1 dan pernyataan-2 dapat berupa sebuah pernyataan
tunggal, pernyataan majemuk ataupun pernyataan kosong.
Contoh penggunaan pernyataan if-else adalah untuk menyeleksi nilai suatu
bilangan pembagi. Jika nilai bilangan pembagi adalah nol, maka hasil pembagian
dengan nilai nol akan mendapatkan hasil tak berhingga. Jika ditemui nilai
pembaginya nol, maka proses pembagian tidak akan dilakukan.

21
Pernyataan if di dalam if
Di dalam suatu pernyataan if (atau if-else) bisa saja terdapat pernyataan if (atau if
else) yang lain. Bentuk seperti ini dinamakan sebagai nested if. Secara umum,
bentuk dari pernyataan ini adalah sebagai berikut :

Kondisi yang akan diseleksi pertama kali adalah kondisi yang terluar (kondisi-1).
 Jika kondisi-1 bernilai salah, maka statemen else yang terluar (pasangan
if yang bersangkutan) yang akan diproses. Jika else (pasangannya tsb)
tidak ditulis, maka penyeleksian kondisi akan dihentikan.
 Jika kondisi-1 bernilai benar, maka kondisi berikutnya yang lebih dalam
(kondisi-2) akan diseleksi. Jika kondisi-2 bernilai salah, maka statemen
else pasangan dari if yang bersangkutan yang akan diproses. Jika else
(untuk kondisi-2) tidak ditulis, maka penyeleksian kondisi akan
dihentikan.
 Dengan cara yang sama, penyeleksian kondisi akan dilakukan sampai
dengan kondisi-n, jika kondisi-kondisi sebelumnya bernilai benar.

Pernyataan else-if
Contoh implementasi nested if ini misalnya pembuatan sebuah program kalkulator
sederhana. User memberikan masukan dengan format :

Operand1 operator operand2

Jenis operasi yang dikenakan bergantung pada jenis operator ang dimasukkan oleh
user. Oleh karena itu program akan mengecek apakah operator berupa tanda ‘*’,
‘/’, ‘+’, ataukah tanda ‘-‘.

 Jika operator berupa tanda ‘*’ maka operand1 akan dikalikan dengan
operand2.
 Jika operator berupa tanda ‘/’ maka operand1 akan dibagi dengan
operand2.
 Jika operator berupa tanda ‘+’ maka operand1 akan dijumlahkan dengan

22
operand2.
 Jika operator berupa tanda ‘-’ maka operand1 akan dikurangi dengan
operand2.
 Kalau operator yang dimasukkan bukan merupakan salah satu dari jenis
operator di atas, maka ekspresi tersebut tidak akan diproses, dan user akan
mendapatkan pesan berupa : “Invalid operator!”

Pernyataan switch
Pernyataan switch merupakan pernyataan yang dirancang khusus untuk
menangani pengambilan keputusan yang melibatkan sejumlah alternatif, misalnya
untuk menggantikan pernyataan if bertingkat.
Bentuk umum pernyataan switch adalah :

dengan ekspresi dapat berupa ekspresi bertipe integer atau bertipe karakter.
Demikian juga konstanta-1, konstanta-2, …, konstanta-n dapat berupa
konstanta integer atau karakter. Setiap pernyataan-i (pernyataan-1, … ,
pernyataan-n) dapat berupa pernyataan tunggal ataupun pernyataan jamak. Dalam
hal ini urutan penulisan pernyataan case tidak berpengaruh. Proses penyeleksian
berlangsung sebagai berikut :

 pengujian pada switch akan dimulai dari konstanta-1. Kalau nilai


konstanta-1 cocok dengan ekspresi maka pernyataan-1 dijalankan. Kata
kunci break harus disertakan di bagian akhir setiap pernyataan case, yang
akan mengarahkan eksekusi ke akhir switch.
 Kalau ternyata pernyataan-1 tidak sama dengan nilai ekspresi, pengujian
dilanjutkan pada konstanta-2, dan berikutnya serupa dengan pengujian
pada konstanta-1.

23
 Jika sampai pada pengujian case yang terakhir ternyata tidak ada
kecocokan, maka pernyataan yang mengikuti kata kunci default yang akan
dieksekusi. Kata kunci default ini bersifat opsional.
 Tanda kurung kurawal tutup (}) menandakan akhir dari proses
penyeleksian kondisi case.

3.3 HASIL PERCOBAAN PRAKTIKUM

1. Dengan menggunakan pernyataan if-else bertingkat, buatlah program


untuk memilih penghitungan luas segitiga, persegi panjang atau bujur
sangkar.

Tampilan :
Masukkan pilihan anda : 1
Masukkan alas dan tinggi : 10 20
Jadi luasnya adalah 100

Masukkan pilihan anda : 2


Masukkan panjang dan lebar : 10 20
Jadi luasnya adalah 200

#include <stdio.h>
main ()
{
float a,t,L;
int bil;
printf("Masukkan pilihan anda : ");
scanf("%d", &bil);
switch(bil)
{
case 1:
printf("Masukkan alas & tinggi : ");
scanf("%f", &a); scanf("%f", &t);
L=0.5*a*t;
printf("Luas Segitiga = %2.2f",L);
break;
case 2:
printf("Masukkan panjang & lebar : ");
scanf("%f", &a); scanf("%f", &t);
L=a*t;
printf("Luas Persegi Panjang/Bujur Sangkar = %2.2f",L);

24
break;
}
return 0;
}

Hasil keluaran ke 1

Hasil keluaran ke 2

25
Flowchartnya

2. Dengan menggunakan pernyataan switch-case, buatlah program


untukmengkonversikan nilai huruf ke nilai angka. Huruf A memiliki
nilai angka 4, hurufB memiliki nilai angka 3, huruf C memiliki nilai
angka 2, huruf D memiliki nilai angka 1, sedangkan huruf E memiliki
nilai angka 0.

#include <stdio.h>
main ()
{
char a;
printf("Masukkan nilai huruf = ");

26
scanf("%c", &a);
switch(a)
{
case 'A':
printf("Nilai angka = 4 ");
break;
case'B':
printf("Nilai angka = 3 ");
break;
case 'C':
printf("Nilai angka = 2 ");
break;
case 'D':
printf("Nilai angka = 1 ");
break;
case 'E':
printf("Nilai angka = 0 ");
break;

}
return 0;
}

Hasil keluaran ke 1

27
Hasil keluaran ke 2

Hasil keluaran ke 3

28
Hasil keluaran ke 4

Hasil keluaran ke 5

29
Flowchartnya

3. Dengan menggunakan nested if, buatlah program untuk mencari nilai


terkecil dari 3 angka yang diinputkan. Adapun potongan programnya
adalah :

#include<stdio.h>
main()
{
double a, b, c;
printf("Masukkan nilai huruf = "); scanf("%lf",&a);
printf("Masukkan nilai huruf = "); scanf("%lf",&b);
printf("Masukkan nilai huruf = "); scanf("%lf",&c);
if(a<c)

30
if(a<c)
{
printf("Terkecil %2.lf",a);
}
else
{
printf("Terkecil %2.lf",c);
}
else if(b<c)
("Terkecil %2.lf",b);
else
printf("terkecil %2.lf",c);
return 0;
}

Hasil keluarannya

31
Flowchartnya

4. Kerjakan soal no 2 dengan menggunakan pernyataan if else.

#include <stdio.h>
main ()
{
char e;
printf("Nilai Huruf : ");
scanf("%c", &e);
if(e=='A')
printf("4");
else if(e=='B')
printf("3");
else if(e=='C')
printf("2");
else if(e=='D')
printf("1");
else if(e=='E')
printf("0");
else
printf("Pilihan Tidak Sesuai");
}

32
Hasil keluaran ke 1

Hasil keluaran ke 2

33
Hasil keluaran ke 3

Hasil keluaran ke 4

34
Hasil keluaran ke 5

3.4 PEMBAHASAN DAN ANALISIS

PERCOBAAN 1

1. Penggunaan %f pada scanf sebagai menanggulangi apabila pemprogram


memasukan angka pecahan.
2. Pada printf ketiga dan ke empat, pembubuhkan angka 2 pada %f
berfungsi untuk menampilkan 2 angka setelah koma.
PERCOBAAN 2
1. Penggunaan string kontrol %f untuk memasukan bilangan bulat maupun
desimal.
2. Memasukan rumus dengan menggunakan variabel tertentu seperti, A, B,
dan C.
PERCOBAAN 3
1. Jika a lebih kecil daripada b maka a adalah bilangan terkecil. Semisal
ternyata b yang lebih kecil daripda a .Maka, b merupkan bilangan
terkecil.
2. Jika bilangan terkecil (a atau b) lebih kecil dari c, maka bilangan yang
paling kecil dari a dan b yang dinobatkan menjadi bilangan terkecil di
ketiganya. Selain itu jika c lebih terkecil dari terbesar (a atau b). Maka, c
dinobatkan menjadi bilangan terkecil. Begitu seterusnya hinXgga
variabel e.

35
PERCOBAAN 4
1. Fungsi dari char ialah perintah untuk membubuhkan karakter, oleh karena
itu isi fungsi dari printf ialah %c.

3.5 KESIMPULAN

Dalam bab ini kita mempelajari pengambilan keputusan yang bertujuan


menjelaskan tentang operator kondisi, dimana terdapat pernyataan if, if-else dan
switch. Pernyataan-pernyataan tersebut memerlukan suatu kondisi, sebagai basis
dalam pengambilan keputusan

36
BAB 4 PENGULANGAN PROSES

4.1 TUJUAN

1. Menjelaskan proses pengulangan menggunakan pernyataan for


2. Menjelaskan proses pengulangan menggunakan pernyataan while
3. Menjelaskan proses pengulangan menggunakan pernyataan do-while

4.2 TEORI DASAR

Pernyataan for
Mengulang suatu proses merupakan tindakan yang banyak dijumpai dalam
pemrograman. Pada semua bahasa pemrograman, pengulangan proses ditangani
dengan suatu mekanisme yang disebut loop. Dengan menggunakan loop, suatu
proses yang berulang misalnya menampilkan tulisan yang sama seratus kali pada
layar dapat diimpelementasikan dengan kode program yang pendek.
Pernyataan pertama yang digunakan untuk keperluan pengulangan proses adalah
pernyataan for. Bentuk pernyataan ini :

Pernyataan-pernyataan tersebut memerlukan suatu kondisi, sebagai basis dalam


pengambilan keputusan. Kondisi umum yang dipakai berupa keadaan benar dan
salah.

for (ungkapan1; ungkapan2; ungkapan3)


pernyataan;
Kegunaan dari masing-masing ungkapan pada pernyataan for.
 Ungkapan1 : digunakan untuk memberikan inisialisasi terhadap variabel
pengendali loop.
 Ungkapan2 : dipakai sebagai kondisi untuk keluar dari loop.
 Ungkapan3 : dipakai sebagai pengatur kenaikan nilai variabel pengendali
loop.

Ketiga ungkapan dalam for tersebut harus dipisahkan dengan tanda titik koma (;).
Dalam hal ini pernyatan bisa berupa pernyataan tunggal maupun jamak. Jika
pernyataannya berbentuk jamak, maka pernyataan-pernyataan tersebut harus
diletakkan di antara kurung kurawal buka ({) dan kurung kurawal tutup (}),
sehingga
formatnya menjadi :

for (ungkapan1; ungkapan2; ungkapan3


{
pernyataan;

37
pernyataan;
.
.
.
}

Contoh penggunaan for, misalnya untuk menampilkan deretan angka sebagai


berikut :
20
30
40
50
.
.
.
100

Untuk keperluan ini, pernyataan for yang digunakan berupa :

for (bilangan = 20; bilangan <= 100; bilangan +=10)


printf("%d\n", bilangan);

Kalau digambarkan dalam bentuk diagram alir, akan terlihat sbb

Gambar 4.1 Diagram Alir for

38
/* File program : for1.c
Contoh pemakaian for untuk membentuk deret naik */
#include <stdio.h>

main()
{
int bilangan;
for(bilangan = 20; bilangan <= 100; bilangan += 10)
printf("%d\n",bilangan);
}
Contoh eksekusi :
20
30
40
50
60
70
80
90
100

Pada program di atas, kenaikan terhadap variabel pengendali loop sebesar 10


(positif), yang dinyatakan dengan ungkapan
bilangan += 10
yang sama artinya dengan
bilangan = bilangan + 10
Pada contoh yang melibatkan pernyataan for di atas, kenaikan variabel pengendali
loop berupa nilai positif. Sebenarnya kenaikan terhadap variabel pengendali loop
bisa diatur bernilai negatif. Cara ini dapat digunakan untuk memperoleh deret
sebagai berikut :
60
50
40
30
20
10
Untuk itu selengkapnya program yang dibutuhkan adalah sebagai berikut :
/* File program : for2.c Contoh pemakaian for untuk membentuk
deret turun */
#include <stdio.h>
main()

39
{
int bilangan;
for (bilangan = 60; bilangan >= 10; bilangan -= 10)
printf("%d\n", bilangan);
}

Contoh eksekusi :
60
50
40
30
20
10
Kadang-kadang dijumpai adanya pernyataan for yang tidak mengandung bagian
ungkapan yang lengkap (beberapa ungkapan dikosongkan). Dengan cara ini,
pernyataan:

Tampak bahwa ungkapan yang biasa dipakai untuk inisialisasi variabel


pengendali loop tak ada. Sebagai gantinya pengendalian loop diatur sebelum
pernyataan for, berupa
bilangan = 20;
Pengosongan ini juga dilakukan pada ungkapan yang biasa dipakai untuk
menaikkan nilai variabel pengendali loop. Sebagai gantinya, di dalam tubuh loop
diberikan pernyataan untuk menaikkan nilai variabel pengendali loop, yaitu
berupa
bilangan += 10;
Ungkapan yang tidak dihilangkan berupa bilangan <=100. Ungkapan ini tetap
disertakan karena dipakai sebagai kondisi untuk keluar dari loop. Sesungguhnya
ungkapan yang dipakai sebagai kondisi keluar dari loop juga bisa dihilangkan,
sehingga bentuknya menjadi:

40
for (;;)
pernyataan
Suatu pertanyaan mungkin timbul “Lalu bagaimana caranya kalau ingin keluar
dari loop pada bentuk di atas?”. Caranya adalah dengan menggunakan pernyataan
yang dirancang khusus untuk keluar dari loop. Mengenai hal ini akan dibahas
pada sub bab yang lain.

Pernyataan while
Pada pernyataan while, pengecekan terhadap loop dilakukan di bagian awal
(sebelum tubuh loop). Lebih jelasnya, bentuk pernyataan while adalah sebagai
berikut :
while (kondisi)
pernyataan;

dengan pernyataan dapat berupa pernyataan tunggal, pernyataan majemuk ataupun


pernyataan kosong. Proses pengulangan terhadap pernyataan dijelaskan pada
gambar berikut :

Gambar 4.2 Diagram Alir while

Dengan melihat gambar 5.2, tampak bahwa ada kemungkinan pernyataan yang
merupakan tubuh loop tidak dijalankan sama sekali, yaitu kalau hasil pengujian
kondisi while yang pertama kali ternyata bernilai salah.

Contoh pemakaian while misalnya untuk mengatur agar tombol yang ditekan oleh
pemakai program berupa salah satu diantara 'Y','y', 'T' atau 't'. Impelementasinya :

41
Contoh eksekusi :
Pilihlah Y atau T
Pilihan anda adalah Y

Inisialisasi terhadap variabel sudah_benar yang akan dijalankan pada kondisi


while dengan memberi nilai awal bernilai false (sudah_benar = 0) dimaksudkan
agar tubuh loop dijalankan minimal sekali.

Pernyataan do-while
Bentuk pernyataan do-while
do
pernyataan;
while (kondisi)
Pada pernyataan do-while, tubuh loop berupa pernyataan,dengan pernyataan bisa
berupa pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong.
Pada

42
pernyataan do, mula-mula pernyataan dijalankan. Selanjutnya, kondisi
diuji.Seandainya kondisi bernilai benar, maka pernyataan dijalankan lagi,
kemudian kondisi diperiksa kembali, dan seterusnya. Kalau kondisi bernilai salah
pada saat dites, maka pernyataan tidak dijalankan lagi. Untuk lebih jelasnya dapat
dilihatpada Gambar 4.3. Berdasarkan Gambar 4.3 terlihat bahwa tubuh loop
minimal akan dijalankan sekali.

Gambar 4.3 Diagram Alir do-while

Program berikut memberikan contoh pemakaian do-while untuk mengatur


penampilan tulisan "BAHASA C" sebanyak sepuluh kali.
Contoh:
i = 0; do
{
puts("BAHASA C");
i++;
} while(i<10);

Pada program di atas, variabel pencacah dipakai untuk menghitung jumlah tulisan
yang sudah ditampilkan pada layar. Selama nilai pencacah kurang dari 10, maka
perintah

puts("BAHASA C");
akan dilaksanakan kembali Penanganan pembacaan tombol pada contoh program
pilihan.c yang memakai while di atas, kalau diimplementasikan dengan memakai
do-while adalah sebagai berikut”

43
Contoh eksekusi :
Pilihlah Y atau T
Pilihan anda adalah T

Mula-mula tombol dibaca dengan menggunakan getchar() dan kemudian


diberikan ke variabel pilihan. Sesudah itu, variabel sudah_benar akan diisi
dengan nilai benar (1) atau salah (0) tergantung dari nilai pilihan. Kalau pilihan
berisi salah satu diantara ‘Y’,‘y’, ‘T’ atau ‘t’, maka sudah berisi salah satu
diantara ‘Y’, ‘y’, ‘T’ atau ‘t’, maka sudah_benar akan berisi benar. Nilai pada
vaiabel sudah_benar ini selanjutnya dijadikan sebagai kondisi do-while.
Pengulangan terhadap pembacaan tombol akan dilakukan kembali selama
sudah_benar benilai salah.

44
4.3 HASIL PERCOBAAN PRAKTIKUM

1. Dengan menggunakan pernyataan for, buatlah program untuk


menjumlahkan integermulai dari 1 sampai dengan harga batas yang dibaca
dari keyboard. Penjumlahan dapat dilakukan dengan menggunakan sebuah
tempat penampungan hasil penjumlahan, dan penjumlahan dilakukan satu
per satu terhadap angka mulai 1 sampai dengan angka yang dibaca dengan
hasil sementara yang telah disimpan. Jika angka terakhir telah
dijumlahkan, maka penampungan hasil sementara menjadi hasil akhir.
Tampilan:
Masukkan integer positif :10
Jumlah 1 sampai 10=55

#include <stdio.h>
main ()
{
int a,b,c=0;
printf("Masukkan integer positif = ");
scanf("%d", &b);
for(a=1 ; a<=b ; a++)
{
c=c+a;
}
printf("Jumlah 1 sampai 10 = %d",c);
}

Hasil keluarannya

45
Flowchartnya

2. Gunakan loop while untuk membuat program yang dapat mencari total
angka yang dimasukkan dengan tampilan sebagai berikut :
Masukkan bilangan ke-1 : 5
Mau memasukkan data lagi [y/t] ? y

Masukkan bilangan ke-2 : 3


Mau memasukkan data lagi [y/t] ? t
Total bilangan = 8

#include <stdio.h>

main()
{
char jawab='y';
int a=0, hasil=0, n=0;

while (jawab=='y' || jawab=='Y')


{
n=n+1;

printf("Masukkan bilangan ke-%d : ", n);


scanf("%d", &a);

46
printf("Mau Masukkan lagi [y/t] ? ");
getchar();

jawab = getchar();

hasil += a;
}
printf("Hasilnya = %d \n", hasil);

Hasil keluarannya

Flowchartnya

47
3. Buatlah program yang menentukan sebuah integer dengan acak, dan
membaca sebuah integer berulang kali sampai integer yang dibaca sama
dengan integer yang ditentukan secara acak.

Tampilan:
misalkan angka hasil pengacakan adalah)
Angka tebakan:34
Tebakan terlalu kecil
Angka Tebakan:55
Tebakan Terlalu besar
Angka Tebakan:50
Tebakan benar

#include <math.h>
#include <time.h>
int main()
{
int b=1, angka, input, teb;
do
{
angka=rand();
}
while(angka<=0 && angka>50);
for(b=1 ; b<=2 ; b++ )
{
printf("Masukkan angka tebakan anda ke- %d?",b);
scanf("%d", &input);
if(input==angka)
{
printf("\n Hebat angka %d berhasil anda tebak dalam %d kali
tebakan \n\n",angka,b);
break;
}
if(input<=angka)
{
printf("\n Angka anda lebih KECIL \n\n");
}
if(input>=angka)
{
printf("\n Angka anda lebih BESAR \n\n");
}
}

48
if(input!=angka)
{
printf("\n Angka Tidak Berhasil menebak angka ajaib = %d
\n\n",angka);
}
}

Hasil keluarannya

Flowchartnya

49
4.4 PEMBAHASAN DAN ANALISIS

PERCOBAAN 1

1. Penggunaan int adalah Tipe data specifieryang digunakan untuk


membuat variabel integer (bilangan bulat)
2. Penggunaan %d pada scanf berfungsi untuk menampilkan bilangan
desimal sesuai yang diperintahkan.
3. Penggunaan for yang memungkinkan pemberian huruf awal dan
kenaikan secara otomatis dari variabel counter
4. Dimana hasil didapatkan dari jumlah bilangan + hasil
5. Printf terkahir yaitu menampilkan hasil
PERCOBAAN 2
1. Penggunaan %c untuk menampilkan karakter huruf yang diperintahkan
2. Pembubuhan dan penempatan %n untuk membuat barisan baru dan
merupakan keinginan pengguna program untuk membuat programnya
menjadi rapi dan sesuai keinginannya.
PERCOBAAN 3
1. Penggunaan %f pada scanf sebagai menanggulangi apabila pemprogram
memasukan angka pecahan.

4.5 KESIMPULAN

Pada bab ini kita mempelajari tentang Pengulangan Proses, didalam pengulangan
proses kita menggunakan pernyataan for, while dan do-while, pernyataan-
pernyataan tersebut memerlukan suatu kondisi, sebagai basis dalam pengambilan
keputusan. Kondisi umum yang dipakai berupa keadaan benar dan salah.

50
BAB 5 FUNGSI DASAR

5.1 TUJUAN

1) Memahami fungsi dasar bahaca C


2) Membuat Fungsi
3) Memahami parameter dalam fungsi
4) Memahami cara melewatkan parameter ke dalam fungsi

5.2 TEORI DASAR

Pengertian
Fungsi adalah suatu bagian dari program yang dirancang untuk melaksanakan
tugas tertentu dan letaknya dipisahkan dari program yang menggunakannya.
Elemen utama dari program bahasa C berupa fungsi-fungsi, dalam hal ini program
dari bahasa C dibentuk dari kumpulan fungsi pustaka (standar) dan fungsi yang
dibuat sendiri oleh pemrogram. Fungsi banyak digunakan pada program C dengan
tujuan :
a) Program menjadi terstruktur, sehingga mudah dipahami dan mudah
dikembangkan. Dengan memisahkan langkah-langkah detail ke satu atau
lebih fungsi-fungsi, maka fungsi utama (main()) menjadi lebih pendek,
jelas dan mudah dimengerti.
b) Dapat mengurangi pengulangan (duplikasi) kode. Langkah-langkah
program yang sama dan dipakai berulang-ulang di program dapat
dituliskan sekali saja secara terpisah dalam bentuk fungsi-fungsi.
Selanjutnya bagian program yang
membutuhkan langkah-langkah ini tidak perlu selalu menuliskannya,
tetapi cukup memanggil fungsifungsi tersebut.

Fungsi Dasar
Fungsi standar C yang mengemban tugas khusus contohnya adalah ;
 printf() , yaitu untuk menampilkan informasi atau data ke layar.
 scanf() , yaitu untuk membaca kode tombol yang diinputkan.
Pada umumnya fungsi memerlukan nilai masukan atau parameter yang disebut
sebagai argumen. Nilai masukan ini akan diolah oleh fungsi. Hasil akhir fungsi
berupa sebuah nilai (disebut sebagai return value atau nilai keluaran fungsi). Oleh
karena itu fungsi sering digambarkan sebagai "kotak gelap" seperti ditunjukkan
pada gambar di bawah ini.

51
Gambar 5.1 Diagram Model Fungsi

Penggambaran sebagai kotak gelap di antaranya menjelaskan bahwa bagian dalam


fungsi bersifat pribadi bagi fungsi. Tak ada suatu pernyataan di luar fungsi yang
bisa mengakses bagian dalam fungsi, selain melalui parameter (atau variabel
eksternal yang akan dibahas belakangan). Misalnya melakukan goto dari
pernyataan di luar fungsi ke pernyataan dalam fungsi adalah tidak diperkenankan.

Bentuk umum dari definisi sebuah fungsi adalah sebagai berikut ;

Keterangan :
 tipe-keluaran-fungsi, dapat berupa salah satu tipe data C, misalnya char
atau int .Kalau penentu tipe tidak disebutkan maka dianggap bertipe int
(secara default).
 tubuh fungsi berisi deklarasi variabel (kalau ada) dan statemen-statemen
yang akan melakukan tugas yang akan diberikan kepada fungsi yang
bersangkutan. Tubuh fungsi ini ditulis di dalam tanda kurung kurawal
buka dan kurung kurawal tutup.
Sebuah fungsi yang sederhana bisa saja tidak mengandung parameter sama sekali
dan tentu saja untuk keadaan ini deklarasi parameter juga tidak ada. Contoh :
int inisialisasi()
{
return(0);
}

Pada fungsi di atas :


 tipe keluaran fungsi tidak disebutkan, berarti keluaran fungsi ber tipe int.
 inisialisasi adalah nama fungsi
 Tanda () sesudah nama fungsi menyatakan bahwa fungsi tak memiliki
parameter.
 Tanda { dan } adalah awal dan akhir fungsi

52
 return(0) merupakan sebuah pernyataan dalam tubuh fungsi.

Memberikan Nilai Keluaran Fungsi


Suatu fungsi dibuat untuk maksud menyelesaikan tugas tertentu. Suatu fungsi
dapat hanya melakukan suatu tugas saja tanpa memberikan suatu hasil keluaran
atau melakukan suatu tugas dan kemudian memberikan hasil keluaran. Fungsi
yang hanya melakukan suatu tugas saja tanpa memberikan hasil keluaran
misalnya adalah fungsi untuk menampilkan hasil di layar.

Dalam tubuh fungsi, pernyataan yang digunakan untuk memberikan nilai keluaran
fungsi berupa return. Sebagai contoh, pada fungsi inisialisasi() di atas terdapat
pernyataan
return(0);
merupakan pernyataan untuk memberikan nilai keluaran fungsi berupa nol.
Selengkapnya perhatikan program di bawah ini
/* File program : inisial.c Contoh pembuatan fungsi */
int inisialisasi();
#include <stdio.h>
main()
{
int x, y;
x = inisialisasi();
printf("x = %d\n", x);
y = inisialisasi();
printf("y = %d\n", y);
}
int inisialisasi()
{
return(0);
}

Contoh eksekusi :
x=0
y=0

Program di atas sekaligus menjelaskan bahwa suatu fungsi cukup didefinisikan


satu kali tetapi bisa digunakan beberapa kali. Pada keadaan semacam ini
seandainya tubuh fungsi mengandung banyak pernyataan, maka pemakaian fungsi
dapat menghindari duplikasi kode dan tentu saja menghemat penulisan program
maupun kode dalam memori.

53
Gambar 5.2 Proses Pemanggilan Fungsi

Misalnya pada saat pernyataan

x = inisialisasi();

dijalankan, mula-mula eksekusi akan diarahkan ke fungsi inisialisasi(),


selanjutnya suatu nilai keluaran (hasil fungsi) akhir fungsi diberikan ke x. Proses
yang serupa, dilakukan untuk pernyataan

y = inisialisasi();

Bagi suatu fungsi, jika suatu pernyataan return dieksekusi, maka eksekusi
terhadap fungsi akan berakhir dan nilai pada parameter return akan menjadi
keluaran fungsi. Untuk fungsi yang tidak memiliki pernyataan return, tanda }
pada bagian akhir fungsi akan menyatakan akhir eksekusi fungsi. Di bawah ini
diberikan contoh sebuah fungsi yang mengandung dua buah pernyataan return.
Fungsi digunakan untuk memperoleh nilai minimum di antara 2 buah nilai yang
menjadi parameternya.

int minimum(int x, int y)


{

if (x < y)
return(x);
else
return(y);
}

Pada fungsi di atas terdapat dua buah parameter berupa x dan y. Oleh karena itu
fungsi juga mengandung bagian untuk mendeklarasikan parameter, yang
menyatakan x dan y bertipe int. Adapun penentuan nilai keluaran fungsi dilakukan
pada tubuh fungsi, berupa pernyataan

54
if (x < y)
return(x);
else
return(y);
yang menyatakan :
 jika x < y maka nilai keluaran fungsi adalah sebesar nilai x.
 untuk keadaan lainnya (x >= y) maka keluaran fungsi adalah sebesar y.
Selengkapnya perhatikan program di bawah ini.
/* File program : minimum1.c */
#include <stdio.h>
int minimum (int, int);
main()
{
int a, b, kecil;

printf("Masukkan nilai a : ");


scanf("%d", &a);
printf("Masukkan nilai b : ");
scanf("%d", &b);

kecil = minimum(a, b);


printf("\nBilangan terkecil antara %d dan %d adalah
%d\n\n", a, b, kecil);
}
minimum(int x, int y)
{
if (x < y)
return(x);
else
return(y);
}

Contoh eksekusi :
Masukkan nilai a = 4
Masukkan nilai b = 2
Bilangan terkecil antara 4 dan 2 adalah 2

Fungsi Dengan Keluaran Bukan Integer


Untuk fungsi yang mempunyai keluaran bertipe bukan integer, maka fungsi
haruslah didefiniskan dengan diawali tipe keluaran fungsinya (ditulis di depan
nama fungsi). Sebagai contoh untuk menghasilkan nilai terkecil di antara dua
buah nilai real, maka definisinya berupa :

55
float minimum(float x, float y)
{
if (x < y)
return(x);
else
return(y);
}

Perhatikan, di depan nama minimum diberikan tipe keluaran fungsi berupa float.
Seluruh parameter sendiri juga didefinisikan dengan tipe float. Selengkapnya
adalah sebagai berikut :

/* File program : minimum2.c */


#include <stdio.h>
float minimum (float, float);
main()
{
float a, b, kecil;
printf("Masukkan nilai a : ");
scanf("%f", &a);
printf("Masukkan nilai b : ");
scanf("%f", &b);

kecil = minimum(a, b);


printf("\nBilangan terkecil antara %g dan %g adalah
%g\n\n", a, b, kecil);
}
float minimum(float x, float y)
{
if (x < y)

return(x);
else
return(y);
}

Contoh eksekusi :
Masukkan nilai a = 5.5
Masukkan nilai b = 6.23
Bilangan terkecil antara 5 dan 6.23 adalah 5.5
Khusus untuk fungsi yang dirancang tanpa memberikan nilai keluaran (melainkan
hanya menjalankan suatu tugas khusus) biasa didefinisikan dengan diawali kata

56
kunci void (di depan nama fungsi). Sebagai contoh perhatikan program di bawah
ini.

Contoh Keluaran

Prototipe Fungsi
Prototipe fungsi digunakan untuk menjelaskan kepada kompiler mengenai :

 tipe keluaran fungsi


 jumlah parameter
 tipe dari masing-masing parameter

Bagi kompiler, informasi dalam prototipe akan dipakai untuk memeriksa


keabsahan (validitas) parameter dalam pemanggilan fungsi. Salah satu
keuntungannya adalah, kompiler akan melakukan konversi seandainya antara tipe
parameter dalam fungsi dan parameter saat pemanggilan fungsi tidak sama, atau
akan menunjukan kesalahan bila jumlah parameter dalam definisi dan saat
pemanggilan berbeda.
Contoh prototipe fungsi;

57
Gambar 5.3 Prototipe Fungsi

Contoh program:

58
Untuk fungsi yang tidak memiliki argumen (contoh program void.c), maka
deklarasinya adalah:

Catatan :
 Untuk fungsi-fungsi pustaka, prototipe dari fungsi-fungsi berada di file-
file judulnya (header file). Misalnya fungsi pustaka printf() dan scanf()
prototipenya berada pada file dengan nama stdio.h
 Untuk fungsi pustaka pen cantuman pada prototipe fungsi dapat dilakukan
dengan menggunakan preprocessor directive #include

5.3 HASIL PERCOBAAN PRAKTIKUM

1. Buatlah program untuk menjumlahkan n buah data kemudian hitunglah


rata-ratanya dengan menggunakan fungsi.

#include <stdio.h>

void main()
{
int i,n;
float ratarata,jumlah,x;
printf ("Masukkan banyaknya data = ");
scanf ("%d",&n);
jumlah = 0;
for (i=1; i<=n; i++)
{
printf("Masukkan nilai data ke-%d : ",i);
scanf("%f", &x);
jumlah = jumlah+x;
}
ratarata=jumlah/n;
printf("ratarata :%.2f", ratarata);
}

59
Hasil keluarannya

Flowchartnya

60
2. Dengan menggunakan call by pointer, buatlah program untuk menukarkan
dua buah bilangan

#include <stdio.h>
void swap(int *a, int *b)
{
int c=*a;
*a=*b;
*b=c;
}
int main()
{
int A=20;
int B=30;

printf("Data sebelum proses pertukaran \n");


printf("A=%d, B=%d\n\n",A,B);

swap(&A,&B);

printf("Data setelah proses pertukaran \n");


printf("A=%d, B=%d\n\n",A,B);

return 0;
}

61
Hasil keluarannya

Flowchartnya

3. Dengan menggunakan fungsi, buatlah program untuk menentukan nilai


terbesar dari 3 buah inputan
Tampilan:
Masukkan 3 buah bilangan
698
Nilai terbesar adalah 9

62
#include <stdio.h>
main()
{
int a, b, c, hasil;
printf ("Masukkan 3 angka : \n");
scanf ("%d %d %d", &a, &b, &c);
if (a>b)
if (a>c)
hasil=a;
else
hasil=c;
else if (b>c)
hasil=b;
else
hasil=c;
printf("Nilai terbesar adalah %d\n", hasil);
}

Hasil keluarannya

63
Flowchartnya

5.4 PEMBAHASAN DAN ANALISIS

PERCOBAAN 1

1. Pengunaan float untuk menampung angka pecahan.


2. Penggunaan %g sebagai pengganti %f atau %e tergantung yang pendek.
%g sama fungsi dengan %f.

PERCOBAAN 2

1. Penggunaan swap untuk menukarkan dua buah elemen yang tidak


berurutan pada suatu deret.
2. Penggunaan int adalah Tipe data specifieryang digunakan untuk
membuat variabel integer (bilangan bulat).
PERCOBAAN 3
1. Penggunaan int adalah Tipe data specifieryang digunakan untuk
membuat variabel integer (bilangan bulat).
2. Fungsi if untuk mengecek pernyataan yang dimasukkan atau
membandingkan pernyataan tersebut sesuai atau sama dengan syarat
maka program yang ada di dalam fungsi if akan di jalankan.
3. Fungsi else untuk menerima nilai jika pernyataan if yang dibuat tidak
memenuhi persyaratan dari program yang dibuat.

64
5.5 KESIMPULAN

Pada bab ini kita mempelajari Fungsi Dasar, dengan tujuan memahami fungsi
dasar bahasa C, membuat fungsi, memahami parameter dalam fungsi, dan
memahami cara melewatkan parameter ke dalam fungsi sehingga program
menjadi terstruktur dan mengurangi pengulangan (duplikasi) kode.

65
BAB 6 FUNGSI MATEMATIKA

6.1 TUJUAN

1. Menjelaskan fungsi matematika dalam bahasa C.


2. Menerapkan fungsi-fungsi matematika yang terdapat dalam C dalam
menyelesaikan permasalahan.

6.2 TEORI DASAR

Bahasa C menyediakan bawaan fungsi matematika yang terdapat dalam pustaka


(Library) : math.h. Agar fungsi matematika tersebut dapat digunakan dalam
program maka fungsi matematika harus disertakan dalam program melalui
pernyataan:
#include<math.h>

Beberapa fungsi matematika yang terdapat dalam library math.h bahasa C yakni:

66
Berikut contoh penggunaan math.h bahasa c:

Penjelasan:

67
6.3 HASIL PERCOBAAN PRAKTIKUM

Buat program gerak jatuh bebas untuk menghitung durasi benda di udara
dan kecepatan sebelum menyentuh tanah untuk beberapa kali percobaan
dengan ketinggian yo berbeda-beda.

#include <stdio.h>
#include <math.h>
main()
{
float y0,cepat1,durasi,kecepatan,g=9.8;
printf("Ketinggian awal : ");
scanf("%f", &y0);
printf("Kecepatan awal : ");
scanf("%f", &cepat1);
durasi=(cepat1+sqrt(cepat1*cepat1+2*g*y0))/g;
kecepatan=cepat1-g*durasi;

printf("\n Hasil : \n");


printf("Durasi benda di udara : %.2fg\n",durasi);
printf("Kecepatan sebelum menyentuh tanah : %2.2fm/s2\n",kecepatan);
}

68
Hasil keluarannya

Flowchartnya

69
6.4 PEMBAHASAN DAN ANALISIS

1. Pengunaan float untuk menampung angka pecahan.


2. Pembubuhkan angka 2 pada %f berfungsi untuk menampilkan 2 angka
setelah koma.
3. Penggunaan %f pada scanf sebagai menanggulangi apabila pemprogram
memasukan angka pecahan.

6.5 KESIMPULAN

Pada bab ini kita mempelajari fungsi matematika dengan tujuan menjelaskan
fungsi matematika dalam bahasa C, serta menerapkan fungsi-fungsi matematika
yang terdapat dalam C untuk menyelesaikan permasalahan. Bahasa C
menyediakan bawaan fungsi matematika yang terdapat dalam pustaka (Library) :
math.h. Agar fungsi matematika tersebut dapat digunakan dalam program maka
fungsi matematika harus disertakan dalam program melalui pernyataan : #include
<math.h>

70
BAB 7 POINTER

7.1 TUJUAN

1. Mengetahui konsep dari variabel pointer


2. Mengetahui penggunaan pointer array
3. Mengetahui penggunaan pointer string

7.2 TEORI DASAR

Konsep Dasar Pointer


Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain.
Pada kenyataan yang sebenarnya, variabel pointer berisi alamat dari suatu obyek
lain (yaitu obyek yang dikatakan ditunjuk oleh pointer). Sebagai contoh, px
adalah variabel pointer dan x adalah variabel yang ditunjuk oleh px. Kalau x
berada pada alamat memori (alamat awal) 1000, maka px akan berisi 1000.
Sebagaimana diilustrasikan pada gambar berikut:

Gambar 7.1 Variabel pointer px menunjuk ke variabel x

Mendeklarasikan Variabel Pointer


Suatu variabel pointer dideklarasikan dengan bentuk sebagai berikut :

dengan tipe dapat berupa sembarang tipe yang sudah dibahas pada bab-bab
sebelumnya, maupun bab-bab berikutnya. Adapun nama_variabel adalah nama
dari variabel pointer.

71
Contoh pertama menyatakan bahwa px adalah variabel pointer yang menunjuk ke
suatu data bertipe int, sedangkan contoh kedua masing pch1 dan pch2 adalah
variabel pointer yang menunjuk ke data bertipe char.

Gambar 7.2 Ilustrasi Pendeklarasian Variabel Pointer

Mengatur Pointer agar Menunjuk ke Variabel Lain


Agar suatu pointer menunjuk ke variabel lain, mula-mula pointer harus diisi
dengan alamat dari variabel yang akan ditunjuk. Untuk menyatakan alamat dari
suatu variabel, operator & (operator alamat, bersifat unary) bisa dipergunakan,
dengan menempatkannya di depan nama variabel. Sebagai contoh, bila x
dideklarasikan sebagai variabel bertipe int, maka

&x
berarti “alamat dari variabel x”. Adapun contoh pemberian alamat x ke suatu
variabel pointer px (yang dideklarasikan sebagai pointer yang menunjuk ke data
bertipe int) yaitu :
px = &x

Pernyataan di atas berarti bahwa px diberi nilai berupa alamat dari variabel x.
Setelah pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px
menunjuk ke variabel x.

Mengakses Isi Suatu Variabel Melalui Pointer


Jika suatu variabel sudah ditunjuk oleh pointer, variabel yang ditunjuk oleh
pointer tersebut dapat diakses melalui variabel itu sendiri (pengaksesan langsung)
ataupun melalui pointer (pengaksesan tak langsung).

72
Pengaksesan tak langsung dilakukan dengan menggunakan operator indirection
(tak langsung) berupa simbol * (bersifat unary).
Contoh penerapan operator * yaitu :
*px

yang menyatakan “isi atau nilai variabel/data yang ditunjuk oleh pointer px” .
Sebagai contoh jika y bertipe int, maka sesudah dua pernyataan berikut
px = &x;
y = *px;
y akan berisi nilai yang sama dengan nilai x.

Mengakses dan Mengubah isi Suatu Variabel Pointer


Contoh berikut memberikan gambaran tentang pengubahan isi suatu variabel
secara tak langsung (yaitu melalui pointer). Mula-mula pd dideklarasikan sebagai
pointer yang menunjuk ke suatu data bertipe float dan d sebagai variabel bertipe
float. Selanjutnya

d = 54.5;
digunakan untuk mengisikan nilai 54,5 secara langsung ke variabel d. Adapun
pd = &d;
digunakan untuk memberikan alamat dari d ke pd. Dengan demikian pd menunjuk
ke variabel d. Sedangkan pernyataan berikutnya
*pd = *pd + 10; (atau: *pd += 10; )
merupakan instruksi untuk mengubah nilai variabel d secara tak langsung.
Perintah di atas berarti “jumlahkan yang ditunjuk pd dengan 10 kemudian berikan
ke yang ditunjuk oleh pd”, atau identik dengan pernyataan
d = d + 10;
Akan tetapi, seandainya tidak ada instruksi
pd = &d;
maka pernyataan
*pd = *pd + 10;
tidaklah sama dengan
d = d + 10;

Pointer dan Array


Hubungan antara pointer dan array pada C sangatlah erat. Sebab sesungguhnya
array secara internal akan diterjemahkan dalam bentuk pointer. Pembahasan
berikut akan memberikan gambaran hubungan antara pointer dan array. Misalnya
dideklarasikan di dalam suatu fungsi.

int tgl_lahir[3] = { 01, 09, 64 };


dan

73
int *ptgl;
Kemudian diberikan instruksi
ptgl = &tgl_lahir[0];
maka ptgl akan berisi alamat dari elemen array tgl_lahir yang berindeks nol.
Instruksi di atas bisa juga ditulis menjadi
ptgl = tgl_lahir;
sebab nama array tanpa tanda kurung menyatakan alamat awal dari array. Sesudah
penugasan seperti di atas,
*ptgl
dengan sendirinya menyatakan elemen pertama (berindeks sama dengan nol) dari
array
tgl_lahir.

7.3 HASIL PERCOBAAN PRAKTIKUM

1. Buatlah program untuk mengetahui alamat suatu variabel


// ----------------------------------------------------
-
// Program untuk menampilkan alamat suatu variabel
// ----------------------------------------------------
-
#include <stdio.h>

int main()
{
int alif = 5;
float ba = 7.5;
double ta = 17.777;

printf("Isi variabel:\n");
printf("alif = %d\n", alif);
printf("ba = %f\n", ba);
printf("ta = %lf\n", ta);

printf("\n");
printf("Alamat variabel:\n");
printf("alif = %p\n", &alif);
printf("ba = %p\n", &ba);
printf("ta = %p\n", &ta);

return 0;

74
}
Hasilnya

// ----------------------------------------------------

// Program untuk menampilkan alamat suatu variabel


// ----------------------------------------------------

#include <stdio.h>

int main ()
{
int alif = 5;
float ba = 7.5;
double ta = 17.777;

printf("Isi variabel : \n");


printf("alif = %d\n", alif);
printf("ba = %f\n", ba);
printf("ta = %1f\n", ta);

printf("\n");
printf("Alamat variabel : \n");
printf("Alif = %p\n", &alif);
printf("ba = %p\n", &ba);
printf("ta = %p\n", &ta);

return 0;
}

75
Hasil keluarannya

Flowchartnya

2. Buatlah program untuk mengakses elemen Array via ponter


// --------------------------------------------
// Program Pengaksesan elemen array via pointer
// -----------------------------------------------
------
#include <stdio.h>

int main()
{
int tgl_lahir[] = { 24, 6, 1965 };

76
int *ptgl;

ptgl = tgl_lahir; // ptgl menunjuk ke array;

// Menampilkan isi array via pointer


int i;
for (i = 0; i < sizeof(tgl_lahir) /
sizeof(int); i++)
printf("%d\n", *(ptgl + i));

return 0;
}

Hasil keluarannya

Flowchartnya

77
7.4 PEMBAHASAN DAN ANALISIS

PERCOBAAN 1

1. Penggunaan int adalah Tipe data specifieryang digunakan untuk


membuat variabel integer (bilangan bulat).
2. Pengunaan float untuk menampung angka pecahan.
3. Fungsi double untuk angka, sama seperti int, tapi double dapat
menggunakan koma dan tipe data merupakan 64 bit.
PERCOBAAN 2

1. Sizeof merupakan perintah C++ yang menghasilkan jumlah bit pada


memori untuk menyinpan array.
2. Penggunaan int adalah Tipe data specifieryang digunakan untuk
membuat variabel integer (bilangan bulat).

7.5 KESIMPULAN

Pada bab ini kita mempelajari Pointer dengan tujuan mengetahui konsep dari
variabel pointer, mengetahui penggunaan pointer array, mengetahui penggunaan
pointer string. Variabel pointer berisi alamat dari suatu obyek lain (yaitu obyek
yang dikatakan ditunjuk oleh pointer). Sebagai contoh, px adalah variabel pointer
dan x adalah variabel yang ditunjuk oleh px.

78
BAB 8 ARRAY

8.1 TUJUAN

1. Menjelaskan tentang array berdimensi satu, dua dan berdimensi banyak


2. Menjelaskan tentang inisialisasi array tak berukuran
3. Menjelaskan array sebagai parameter fungsi

8.2 TEORI DASAR

Array sering disebut (diterjemahkan) sebagai larik. Array adalah kumpulan dari
nilainilai data bertipe sama dalam urutan tertentu yang menggunakan sebuah
nama yang sama. Nilai-nilai data di suatu array disebut dengan elemen-elemen
array. Letak urutan dari elemen-elemen array ditunjukkan oleh suatu subscript
atau indeks. Array bisa berupa array berdimensi satu, dua, tiga atau lebih. Array
berdimensi satu (onedimensional array) mewakili bentuk suatu vektor. Array
berdimensi dua (two dimensional array) mewakili bentuk dari suatu matriks atau
table. Array berdimensi tiga (three-dimensional array) mewakili bentuk suatu
ruang.

A. Array Berdimensi Satu


Suatu array berdimensi satu dideklarasikan dalam bentuk umum berupa :

tipe_data nama_var[ukuran];

dengan :
 tipe_data : untuk menyatakan tipe dari elemen array, misalnya int, char,
float.
 nama_var : nama variabel array ƒ
 ukuran : untuk menyatakan jumlah maksimal elemen array.

Contoh pendeklarasian array :


float nilai_tes[5];
menyatakan bahwa array nilai_tes mengandung 5 elemen bertipe float.

Mengakses Elemen Array Berdimensi Satu


Pada C, data array akan disimpan dalam memori yang berurutan. Elemen pertama
mempunyai indeks bernilai 0. Jika variabel nilai_tes dideklarasikan sebagai array
dengan 5 elemen, maka elemen pertama memiliki indeks sama dengan 0, dan
elemen terakhir memiliki indeks 4.

79
Bentuk umum pengaksesan array adalah sbb :

nama_var[indeks]

sehingga, untuk array nilai_tes, maka :


nilai_tes[0]  elemen pertama dari nilai_tes
nilai_tes[4]  elemen ke-5 dari nilai_tes

Contoh :
nilai_tes[0] = 70;
scanf(“%f”, &nilai_tes[2]);

Contoh pertama merupakan pemberian nilai 70 ke nilai_tes[0]. Sedangkan contoh


2 merupakan perintah untuk membaca data bilangan dari keyboard dan diberikan
ke nilai_tes[2]. Pada contoh 2 ini
&nilai_tes[2]
berarti “alamat dari nilai_tes[2]”. Perlu diingat bahwa scanf() memerlukan
argumen berupa alamat dari variabel yang digunakan untuk menyimpan nilai
masukan.

Inisialisasi Array Berdimensi Satu


Sebuah array dapat diinisialisasi sekaligus pada saat dideklarasikan. Untuk
mendeklarasikan array, nilai-nilai yang diinisialisasikan dituliskan di antara
kurung kurawal ({}) yang dipisahkan dengan koma.

int jum_hari[12] =
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,
31};

Beberapa Variasi dalam Mendeklarasikan Array


Ada beberapa variasi cara mendeklarasikan sebuah array (dalam hal ini yang
berdimensi satu), di antaranya adalah sebagai berikut :
 int numbers[10];
 int numbers[10] = {34, 27, 16};
 int numbers[] = {2, -3, 45, 79, -14, 5, 9, 28, -1,
0};
 char text[] = "Welcome to New Zealand.";
 float radix[12] = {134.362, 1913.248};
 double radians[1000];

Array Berdimensi Dua


Array berdimensi satu dapat disimpan pada sebuah array berdimensi dua.

80
Pendeklarasian array berdimensi dua adalah sebagai berikut :

int data_lulus[4][3];

Nilai 4 untuk menyatakan banyaknya baris dan 3 menyatakan banyaknya kolom.


Gambar berikut memberikan ilustrasi untuk memudahkan pemahaman tentang
array berdimensi dua.

Gambar 8.1 Array Berdimensi Dua

Sama halnya pada array berdimensi satu, data array akan ditempatkan pada
memori yang berurutan

Gambar 8.2 Model Penyimpanan Array Berdimensi Dua pada Memori

Mengakses Elemen Array Berdimensi Dua


Array seperti data_lulus dapat diakses dalam bentuk data_lulus[indeks pertama,
indeks kedua] :
1) data_lulus[0][1] = 540;
merupakan instruksi untuk memberikan nilai 540 ke array data_lulus
untuk indeks pertama = 0 dan indeks kedua bernilai 1.
2) printf(“%d”,data_lulus[2][0]); merupakan perintah untuk menampilkan
elemen yang memiliki indeks pertama = 2 dan indeks kedua = 0
Perhatikan contoh potongan program di bawah ini.

81
Array Berdimensi Banyak
C memungkinkan untuk membuat array yang dimensinya lebih dari dua. Bentuk
umum pendeklarasian array berdimensi banyak :

tipe nama_var[ukuran 1][ukuran2}…[ukuranN];


sebagai contoh :
int data_huruf[2][8][8];

merupakan pendeklarasian array data_huruf sebagai array berdimensi tiga. Sama


halnya dengan array berdimensi satu atau dua, array berdimensi banyak juga bisa
diinisialisasi.

Contoh inisialisasi array berdimensi tiga :

82
Atau bisa juga ditulis menjadi:

83
ARRAY SEBAGAI PARAMETER
Array juga dapat dilewatkan sebagai parameter fungsi. Sebagai contoh
ditujukan pada program sorting.c. Program digunakan untuk memasukkan
sejumlah data, kemudian data tersebut diurutkan naik (ascending) dan
dicetak ke layar.

Untuk melakukan sorting (proses pengurutan data), cara yang dipakai yaitu
metode buble sort (suatu metode pengurutan yang paling sederhana, dan
memiliki kecepatan pengurutan yang sangat lambat). Algoritma pada
metode pengurutan ini adalah sebagai berikut :
1. Atur i bernilai 0
2. Bandingkan x[i] dengan x[j], dg j berjalan dari i + 1 sampai dengan n-1.

84
3. Pada setiap pembandingan, jika x[i] > x[j], maka isi x[i] dan x[j]
ditukarkan
4. Bila i < (n – 1), ulangi mulai langkah 2.

Catatan
i = indeks array
x = nama array untuk menyimpan data
n = jumlah data

Algoritma diatas b erlaku untuk pengurutan menaik (ascending). Untuk


pengurutan menurun (descending), penukaran dilakukan jika x[i] < x[j].
Penjelasan proses pengurutan terhadap 5 buah data ditunjukkan pada
gambar di bawah.
Data semula (sebelum pengurutan) adalah
50,5 30,3 20,2 25,2 31,3

Setelah pengurutan menaik (secara ascending), hasil yang diharapkan


berupa

20,2 25,2 30,3 31,3 50,5

85
8.3 HASIL PERCOBAAN PRAKTIKUM

1. Buatlah program yang membaca sebuah array karakter,’a’…’z’.


Kemudian menghitung frekuensi kemunculan tiap karakter.
Tampilan: Masukkan jumlah karakter yang akan dihitung: 5
Masukkan karakter ke-1:a
Masukkan karakter ke-2:b
Masukkan karakter ke-3:c
Masukkan karakter ke-3:a
Masukkan karakter ke-3:a

Frekuensi a=3
Frekuensi b=1
Frekuensi c=1

#include<stdio.h>
main()

86
{
char tmp, kar[255];
int htg[255];
int a, b, c=0, n, cek;
printf("Masukkan jumlah karakter : ");
scanf("%d",&n);
for(a=1;a<=n;a++)
{
printf("Masukkan karakter ke-%d\t: ",a);
scanf("\n%c",&tmp);
for(b=0;b<=c;b++)
{
cek=1;
if(tmp==kar[b])
{
cek=0;
htg[b]++;
break;
}
}
if(cek==1)
{
kar[c]=tmp;
htg[c]=1;
c++;
}
}
printf("\n");
for(a=0;a<c;a++)
{
printf("Frekuensi yang muncul pada karakter %c adalah %2d\n", kar[a],
htg[a]);
}
}

87
Hasil keluarannya

Flowchartnya

88
2. Buatlah program menggunakan inisialisasi array berdimensi dua sebagai
berikut:
// -------------------------------------------
// Program inisialisasi array berdimensi dua
// -------------------------------------------

#include <stdio.h>

int main()
{
int huruf_A[8][8] =
{
{ 0, 1, 1, 1, 1, 1, 0, 0 },
{ 0, 1, 0, 0, 0, 1, 0, 0 },
{ 0, 1, 0, 0, 0, 1, 0, 0 },
{ 1, 1, 1, 1, 1, 1, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 1, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0 }
};

int i, j;
for (i = 0; i < 8; i++)
{
for (j = 0; j < 8; j++)
if (huruf_A[i][j] == 1)
putchar('*');
else
putchar(' ');

printf("\n");
}

return 0;
}

Kemudian lakukan untuk beberapa percobaan

89
Hasil keluarannya

Flowchartnya

8.4 PEMBAHASAN DAN ANALISIS

PERCOBAAN 1

1. Fungsi char sederhana adalah masukan variabel huruf yang tidak boleh
melebihi dari angka di dalam kurung [ ].

90
2. Penggunaan int adalah Tipe data specifieryang digunakan untuk
membuat variabel integer (bilangan bulat).
3. Penggunaan %c untuk membaca sebuah karakter.
PERCOBAAN 2

1. Penggunaan int adalah Tipe data specifieryang digunakan untuk


membuat variabel integer (bilangan bulat).
2. Penggunaan for yang memungkinkan pemberian huruf awal dan
kenaikan secara otomatis dari variabel counter.
3. Putchar berfungsi untuk menampilkan sebuah karakter di layar.

8.5 KESIMPULAN

Pada bab ini kita mempelajari Array dengan tujuan menjelaskan array berdimensi
satu, dua dan berdimensi banyak, dan inisialisasi array tak berukuran serta array
sebagai parameter fungsi. Array sering disebut sebagai larik, sehingga array
adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang
menggunakan sebuah nama yang sama

91
BAB 9 STRING

9.1 TUJUAN

1. Menjelaskan tentang konsep string


2. Menjelaskan operasi I/O pada string
3. Menjelaskan cara mengakses elemen string
4. Menjelaskan berbagai fungsi mengenai string

9.2 TEORI DASAR

Konstanta dan Variabel String


String merupakan bentuk data yang biasa dipakai dalam bahasa pemrograman
untuk keperluan menampung dan memanipulasi data teks, misalnya untuk
menampung (menyimpan) suatu kalimat. Pada bahasa C, string bukanlah
merupakan tipe data tersendiri, melainkan hanyalah kumpulan dari nilai-nilai
karakter yang berurutan dalam bentuk array berdimensi satu.

Konstanta String
Suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda,
misalnya:
“ABCDE”
Nilai string ini disimpan dalam memori secara berurutan dengan komposisi
sebagai berikut:

Setiap karakter akan menempati memori sebesar 1 byte. Byte terakhir otomatis
akan berisi karakter NULL (\0). Dengan mengetahui bahwa suatu string diakhiri
nilai NULL, maka akhir dari nilai suatu string akan dapat dideteksi. Sebagai
sebuah array karakter, karakter pertama dari nilai string mempunyai indeks ke-0,
karakter kedua mempunyai indeks ke-1, dan seterusnya.

Variabel String
Variabel string adalah variabel yang dipakai utuk menyimpan nilai string.
Misalnya :
char name[15];

92
merupakan instruksi untuk mendeklarasikan variabel string dengan panjang
maksimal 15 karakter (termasuk karakter NULL). Deklarasi tersebut sebenarnya
tidak lain merupakan deklarasi array bertipe char.

Inisialisasi String
Suatu variabel string dapat diinisialisasi seperti halnya array yang lain. Namun
tentu saja elemen terakhirnya haruslah berupa karakter NULL. Sebagai contoh :

char name[] = {'R','A','N', 'I',’\0’};

yang menyatakan bahwa name adalah variabel string dengan nilai awal berupa
string
: “RANi” . Bentuk inisialisasi yang lebih singkat :

char name[] = “RANI”;

Pada bentuk ini, karakter NULL tidak perlu ditulis. Secara implisit akan
disisipkan oleh kompiler. Perlu diperhatikan, bila name dideklarasikan sebagai
string, penugasan (assignment) suatu string ke variabel string seperti name =
“RANI”;

adalah tidak diperkenankan. Pengisian string ke variabel string akan dibahas


pada sub bab berikutnya.

INPUT OUTPUT DATA STRING

Memasukkan Data String

Perhatikan :
 nama_array adalah variabel bertipe array of char yang akan digunakan
untuk menyimpan string masukan.

93
 Di depan nama_array tidak perlu ada operator & (operator alamat),
karena nama_array tanpa kurung siku sudah menyatakan alamat yang
ditempati oleh elemen pertama dari array tsb.
 Kalau memakai scanf(), data string masukan tidak boleh mengandung
spasi.

Menampilkan Isi Variabel String


Untuk menampilkan isi variabel string, fungsi yang digunakan adalah puts() atau
printf(). Bentuk umum pemakaiannya adalah sebagai berikut :

#include <stdio.h>
puts(var_string);
atau
printf("%s",var_string);

Dalam hal ini var_string adalah sebuah variabel yang berupa sebuah array of char.
Fungsi puts() akan menampilkan isi dari var_string dan secara otomatis
menambahkan karakter '\n' di akhir string. Sedangkan fungsi printf() akan
menampilkan isi variabel string tanpa memberikan tambahan '\n'. Sehingga, agar
kedua pernyataan di atas memberikan keluaran yang sama, maka pada pernyataan
printf() dirubah menjadi:

printf("%s\n", var_string);

Fungsi-Fungsi Mengenai String


Berikut ini akan dibahas beberapa fungsi pustaka yang umumnya disediakan oleh
kompiler C untuk mengoperasikan suatu nilai string. Fungsi-fungsi pustaka untuk
operasi string, prototype-prototype nya berada di file judul string.h. Beberapa di
antara fungsi pustaka untuk operasi string akan dibahas di bawah ini.

Fungsi strcpy() untuk Menyalin Nilai String


Bentuk pemakaian :
#include <string.h>
strcpy(tujuan, asal)
Fungsi ini dipakai untuk menyalin string asal ke variabel string tujuan termasuk
karakter '\0'. Keluaran dari fungsi ini (return value) adalah string tujuan. Dalam
hal ini, variabel tujuan haruslah mempunyai ukuran yang dapat digunakan untuk
menampung seluruh karakter dari string asal.

94
Fungsi strlen() untuk Mengetahui Panjang Nilai String

Fungsi ini digunakan untuk memperoleh banyaknya karakter di dalam string yang
menjadi argumennya (var_string). Keluaran dari fungsi ini adalah panjang dari
var_string. Karakter NULL tidak ikut dihitung.

Menggabungkan dua buah nilai string tidak dapat dilakukan dengan operator ‘+’,
karena operator ini bukan operator untuk operasi string. Penggabungan dua buah
nilai string dapat dilakukan dengan fungsi pustaka strcat() dengan menambahkan
string sumber ke bagian akhir dari string tujuan. Keluaran dari fungsi ini adalah
string tujuan.

Fungsi strcmp() untuk Membandingkan Dua Nilai String Membandingkan dua


nilai string juga tidak dapat digunakan dengan operator hubungan, karena operator
tersebut tidak untuk operasi string. Membandingkan dua buah nilai string dapat
dilakukan dengan fungsi pustaka strcmp().

Contoh bentuk pemakaian fungsi :


#include <string.h>
strcmp(str1, str2);

9.3 HASIL PERCOBAAN PRAKTIKUM

1. Ketikkan sebuah kalimat melalui keyboard kemudian didapatkan keluaran


berupa laporan apakah kalimat tsb palindrom ataukah bukan. Misal :
Kalimat : KASUR RUSAK

95
Termasuk PALINDROM
Kalimat : MAKAN MALAM Bukan PALINDROM

Catatan : disebut palindrom adalah bila urutan kalimat dibalik akan


menghasilkan
kalimat yang sama

#include<stdio.h>

#include<conio.h>

#include<string.h>

int main()

char a[100], b[100];

printf("Kalimat : ");

gets (a);

strcpy(b,a);

strrev(b);

if(strcmp(a,b)==0)

printf("\n '%s' merupakan kata PALINDROM\n",&a);

else

printf("\n '%s' BUKAN PALINDROM\n",&a);

getch();

96
Hasil keluaran ke 1

Hasil keluaran ke 2

97
Flowchartnya

2. Buatlah program untuk mengurutkan nama seseorang. Contoh:


Sebelum diurutkan :
Nama ke-1: Suadi marwan
Nama ke-2: Abdi Raharjo
Nama ke-3: Shintiana
Nama ke-4: Budi Sulistyo
Sesudah diurutkan
Nama ke-1: Abdi Raharjo
Nama ke-2: Budi Sulistyo
Nama ke-3: Shintiana
Nama ke-4: Suadi Marwan

#include<stdio.h>
#define N 20
char nama [N][20];
int i, j, k, l;
main()
{
int jml;
char jumlah[10];
printf("Jumlah nama yang akan diurutkan = ");
gets(jumlah);
jml=atoi(jumlah);
for(i=0;i<jml;i++)

98
{
printf("\nNama ke-%d : ",i+1);
gets(&nama[i][0]);
}
bubble(jml);
printf("\nNama Sesudah Diurutkan: ");
for(i=0;i<jml;i++)
{
printf("\nNama ke-%d : %-20s",i+1,&nama[i][0]);
}
}
bubble(n)
int n;
{
char temp;
for(i=1;i<=n;i++)
{
for(j=i;j<n;j++)
{
for(l=0;l<20;l++)
{
if(nama[i-1][l]<nama[j][l])
{
break;
}
if(nama[i-1][l]>nama[j][l])
{
for(k=0;k<20;k++)
{
temp=nama[i-1][k];
nama[i-1][k]=nama[j][k];
nama[j][k]=temp;
}
break;
}
}
}
}
}

99
Hasil keluarannya

Flowchartnya

100
9.4 PEMBAHASAN DAN ANALISIS

PERCOBAAN 1

1. Fungsi strcpy untuk mencopy nilai dari variabel 1 le variabel yang lain.
Yang di copy kan adalah string.
2. Fungsi strrev untuk membalik suatu string.
3. Fungsi strcmp untuk membandingkan nilai ASCII semua karakter yang
ada pada string
PERCOBAAN 2

1. Fungsi char sederhana adalah masukan variabel huruf yang tidak boleh
melebihi dari angka di dalam kurung [ ].
2. Penggunaan int adalah Tipe data specifieryang digunakan untuk
membuat variabel integer (bilangan bulat).
3. Penggunaan for yang memungkinkan pemberian huruf awal dan
kenaikan secara otomatis dari variabel counter.
4. Penggunaan bubble untuk mengurutkan dari data terkecil ke data
terbesar.

9.5 KESIMPULAN

Pada bab ini kita mempelajari String dengan tujuan menjelaskan konsep string,
operasi I/O pada string, cara mengakses elemen string. String merupakan bentuk
data yang biasa dipakai dalam bahasa pemrograman untuk keperluan menampung
dan memanipulasi data teks, misalnya untuk menampung (menyimpan) suatu
kalimat. Pada bahasa C, string bukanlah merupakan tipe data tersendiri,
melainkan hanyalah kumpulan dari nilai-nilai karakter yang berututan dalam
bentuk array berdimensi satu.

101
BAB 10 STRUKTUR

10.1 TUJUAN

1. Menjelaskan cara mendeklarasikan struktur


2. Menjelaskan cara menginisialisasi struktur
3. Menjelaskan cara mengakses elemen struktur
4. Menjelaskan pembentukan dan cara mengakses array dari struktur (array
of struct)

10.2 TEORI DASAR

Dalam Struktur adalah pengelompokan variabel-variabel yang bernaung dalam


satu nama yang sama. Berbeda dengan array yang berisi kumpulan variabel-
variabel yang bertipe sama dalam satu nama, maka suatu struktur dapat terdiri
atas variabel-variabel yang berbeda tipenya dalam satu nama struktur. Struktur
biasa dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi
sebuah. Variabel-variabel yang membentuk suatu struktur, selanjutnya disebut
sebagai elemen dari struktur atau field. Dengan demikian dimungkinkan suatu
struktur dapat berisi elemen-elemen data berbeda tipe seperti char, int, float,
double, dan lain-lain. Contoh sebuah struktur adalah informasi data tanggal (date)
yang berisi:
 day
 month, dan
 year

Mendefinisikan & Mendeklarasikan Struktur


Suatu struktur didefinisikan dengan menggunakan kata kunci struct. Contoh
pendefinisian sebuah tipe data struktur :
struct date {
int month;
int day;
int year;
};
struct date {
int month, day, year;
};

yang mendefinisikan sebuah tipe data struktur bernama date yang memiliki tiga
buah elemen (field) berupa:

102
Dalam mendefinisikan sebuah struktur, elemen yang terkandung di dalamnya bisa
juga berupa sebuah struktur,
contoh :
struct date {
int month, day, year;
};
struct person {
char name[30];
struct date birthday;
};
struct person student; //deklarasi var student

Diagram struktur data dari variabel student dapat digambarkan sbb :

103
Elemen dari suatu variabel struktur dapat diakses dengan menyebutkan nama
variabel struktur diikuti dengan operator titik (‘.’) dan nama dari elemen
strukturnya. Cara penulisannya sebagai berikut
variabel_struktur.nama_field

Untuk memberikan data nama ke field name dari variabel student di atas, maka
pernyataan yang diperlukan misalnya adalah :
strcpy(student.name, "MUHAMMAD IHSAN");

Pada pernyataan di atas, student.name dapat dibaca sebagai "field name dari
student".
Contoh berikut merupakan instruksi untuk mengisikan data pada field birthday :
student.birthday.day = 10;
Sedangkan untuk mendapatkan isi suatu field dari variabel struktur, contohnya :
tgl = student.birthday.day;
puts(student.name);

Contoh pertama merupakan instruksi untuk memberikan isi dari field day ke
variabel tgl. Sedangkan contoh kedua merupakan instruksi untuk menampilkan isi
dari field name.

Menginisialisasi Struktur
Sebuah struktur juga bisa diinisialisasi pada saat dideklarasikan. Hal ini serupa
dengan inisialisasi array, yaitu elemen-elemennya dituliskan di dalam sepasang
kurung kurawal (‘{ }‘) dengan masing-masing dipisahkan dengan koma.
Deklarasi struktur didahului dengan kata kunci static, contoh.
static struct zodiak bintang =
{"Sagitarius", 22, 11, 21, 12};

Array dan Struktur


Elemen-elemen dari suatu array juga dapat berbentuk sebuah struktur. Misalnya
array yang dipakai untuk menyimpan sejumlah data siswa (struct student). Array
struktur berdimensi satu ini membentuk suatu tabel, dengan barisnya
menunjukkan elemen dari array-nya dan kolomnya menunjukkan elemen dari
struktur. Dalam hal ini maka deklarasi yang dibutuhkan adalah sebagai berikut :

104
yang artinya, mendeklarasikan array student yang memiliki elemen yang bertipe
struct person sebanyak MAKS. Setelah array student dideklarasikan, maka ruang
yang disediakan ditunjukkan dalam Gambar berikut.

Gambar 10.1 Array student

Elemen-elemen dari array stuktur tersebut bisa diakses dengan cara sebagai
berikut:

105
Di samping cara pendeklarasian di atas, struktur juga dapat dideklarasikan dalam
berbagai bentuk yang lain, di antaranya sbb :

yaitu mendefinisikan struktur date, sekaligus mendeklarasikan variabel today dan


tomorrow dengan tipe struktur date. Demikian juga mendefinisikan struktur
person, sekaligus mendeklarasikan variabel array student sebanyak MAKS
elemen dengan tipe struktur person. Atau cara lainnya mendefinisikan,
mendeklarasikan sekaligus menginisialisasi struktur, sebagai berikut :

struct date {
int month, day, year;
} today = {5,14,2001};

10.3 HASIL PERCOBAAN PRAKTIKUM

1. Definisikan sebuah struktur (misalkan namanya = data_toko) yang


memiliki 3 buah field berupa : sebuah array karakter dengan 5 elemen
(misalkan namanya = nama), sebuah integer (misalkan namanya = data),
dan sebuah float (misalkan namanya = harga). Inputkan data & tampilkan
hasilnya !

106
Tampilan :
Masukkan nama barang : sabun
Masukkan jumlah barang : 5
Masukkan harga per barang : 20000
Jadi barang yang dimasukkan adalah sabun, jumlah barang
5 dan total harganya adalah 100000

#include<stdio.h>
main()
{
char nama [20];
float j, h, hbr, jbr;
printf("Masukkan nama barang : ");
scanf("%s",nama);
printf("Masukkan jumlah barang : ");
scanf("%f",&j);
printf("Masukkan harga per barang : ");
scanf("%f",&h);
hbr=j*h;
printf("\nJadi Barang yang dimasukkan adalah %s\n",nama);
printf("Jumlah barang %2.2f dan total harganya adalah %2.2f\n",j , hbr);

getch();
}

Hasil keluarannya

107
Flowchartnya

2. Buatlah program sebagai berikut dengan menggunakan array of struct :


Input:
Nama Mhs
Nilai Tugas
Nilai UTS
Nilai UAS
Pengisian nilai dilakukan secara langsung
Proses:
Nilai Akhir= 20% tugas + 40% UTS + 40%UAS
Nilai huruf A(81-100), AB(71-80), B(65-70), BC(61-
64), C(56-60), D(40
55), E(0-39)
Nilai dinyatakan lulus jika minimal C
Output :
Nama : Rano
Nilai tugas : 60
Nilai UTS : 80
Nilai UAS : 80
Nilai akhir : 76
Nilai Huruf : AB

Nama : Cita
Nilai tugas : 80

108
Nilai UTS : 100
Nilai UAS : 80
Nilai akhir : 88
Nilai Huruf : A

#include<stdio.h>
#include<math.h>
main ()
{
char na[40],p;
float uts,uas,tgs,akh;

printf("================================================
========================\n");
printf(" PROGRAM NILAI MAHASISWA\n");

printf("================================================
========================\n");
printf("Masukan Nama Mahasiswa : ");
gets(na);
printf("Masukan Nilai Tugas : ");
scanf("%f",&tgs);
printf("Masukan Nilai UTS : ");
scanf("%f",&uts);
printf("Masukan Nilai UAS : ");
scanf("%f",&uas);
akh=tgs*0.2+uts*0.4+uas*0.4;
if(81<=akh>=100)
{
p='A';
}
else if(71<=akh<=80)
{
p='AB';
}
else if(65<=akh<=70)
{
p='B';
}
else if(61<=akh>=64)
{
p='BC';

109
}
else if(56<=akh>=60)
{
p='C';
}
else if (akh>=40)
{
p='D';
}
else
{
p='E';
}
printf("\n------------------------------------------------------\n");
printf(" Data Nilai Mahasiswa");
printf("\n------------------------------------------------------\n");
printf("Nama : %s\n",na);
printf("NILAI TUGAS : %2.2f\n",tgs);
printf("NILAI UTS : %2.2f\n",uts);
printf("NILAI UAS : %2.2f\n",uas);
printf("NILAI AKHIR : %2.2f\n",akh);
printf("NILAI HURUF : %c\n",p);

return 0;
}

Hasil keluarannya ke 1

110
Hasil keluaran ke 2

Flowchartnya

111
3. Buatlah program untuk Pembuatan dan Pengsksessan Struktur berikut:
// --------------------------------------------------------------------------------
// pembuatan dan pengaksesan struktur
// -------------------------------------------

#include <stdio.h>

int main()
{
struct data_tanggal
{
int tahun;
int bulan;
int tanggal;
};

// Deklarasi variabel struktur


struct data_tanggal tanggal_lahir;
// Pengaksesan anggota struktur
tanggal_lahir.tanggal = 1;
tanggal_lahir.bulan = 9;
tanggal_lahir.tahun = 1964;

printf("%d/%d/%d\n", tanggal_lahir.tanggal,
tanggal_lahir.bulan,

112
tanggal_lahir.tahun);

return 0;
}

Kemudian lakukan percobaan dengan untuk beberapa variable akses anggota


struktur.

Hasil keluarannya

Flowchartnya

113
4. Buatlah Program Penetapan Zodiak dengan menggunkan fungsi Struktur,
untuk menentukan apakah zodiak anda Sagitarius atau bukan

// ----------------------------
// Program inisialisasi struktur
// untuk penentuan zodiak
// ----------------------------

#include <stdio.h>

struct zodiak
{
char nama[11];
int tgl_awal;
int bln_awal;
int tgl_akhir;
int bln_akhir;
};

int main()
{
struct zodiak bintang =
{
"Sagitarius", 22, 11, 21, 12
};

int tgl_lhr, bln_lhr, thn_lhr;


printf("Tanggal lahir anda (XX-XX-XXXX): ");
scanf("%d-%d-%d", &tgl_lhr, &bln_lhr, &thn_lhr);

if ( (tgl_lhr >= bintang.tgl_awal &&


bln_lhr == bintang.bln_awal) ||
(tgl_lhr <= bintang.tgl_akhir &&
bln_lhr == bintang.bln_akhir) )
printf("Bintang Anda adalah %s\n", bintang.nama);
else
printf("Bintang Anda bukanlah %s\n",
bintang.nama);

return 0;
}
Kemudian Lakukan percobaan untuk zodiak yang lain

114
Hasil keluaran ke 1

Hasil keluaran ke 2

115
Flowchartnya

10.4 PEMBAHASAN DAN ANALISIS

PERCOBAAN 1

1. Fungsi char sederhana adalah masukan variabel huruf yang tidak boleh
melebihi dari angka di dalam kurung [ ].
2. Penggunaan float untuk menampung angka pecahan.
PERCOBAAN 2

1. Fungsi char sederhana adalah masukan variabel huruf yang tidak boleh
melebihi dari angka di dalam kurung [ ].
2. Penggunaan float untuk menampung angka pecahan.
3. Fungsi if untuk mengecek pernyataan yang dimasukkan atau
membandingkan pernyataan tersebut sesuai atau sama dengan syarat
maka program yang ada di dalam fungsi if akan di jalankan.
4. Fungsi else untuk menerima nilai jika pernyataan if yang dibuat tidak
memenuhi persyaratan dari program yang dibuat.
PERCOBAAN 3
1. Penggunaan int adalah Tipe data specifieryang digunakan untuk
membuat variabel integer (bilangan bulat).
PERCOBAAN 4
1. Fungsi char sederhana adalah masukan variabel huruf yang tidak boleh
melebihi dari angka di dalam kurung [ ].
2. Penggunaan int adalah Tipe data specifieryang digunakan untuk membuat
variabel integer (bilangan bulat).

116
10.5 KESIMPULAN

Pada bab ini kita mempelajari tentang Stuktur dengan tujuan menjelaskan cara
mendeklarasikan struktur, cara menginisialisasi stuktur, cara mengakses elemen
struktur serta pembentukan dan cara mengakses array dari struktur. Dalam
struktur adalah pengelompokkan variabel-variabel yang bernaung dalam satu
nama yang sama.

117

Anda mungkin juga menyukai