pemrograman terstruktur (bahasa c)
Embed Size (px)
DESCRIPTION
teknik09TRANSCRIPT
-
i
Bahan Ajar
PEMROGRAMAN TERSTRUKTUR
Prof. Dr. Ir. Ansar Suyuti, MT
JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK
UNIVERSITAS HASANUDDIN
MAKASSAR
2013
-
ii
KATA PENGANTAR
Puji syukur penulis panjatkan kehadirat Allah SWT yang telah
memberikan rahmat dan karunianya serta kesehatan dan kesempatan
kepada penulis sehingga penyusunan buku bahan ajar untuk mata kuliah
pemrograman terstruktur ini dapat terselesaikan dengan sangat baik.
Penyusunan buku bahan ajar ini menjadi salah satu hal penting
dalam pelaksanaan proses perkuliahan karena merupakan salah satu
komponen penunjang pembelajaran. Pemrograman terstruktur
merupakan ilmu yang mempelajari tentang teknik pembuatan program
secara terstruktur agar penyusunan program untuk suatu masalah yang
rumit dapat lebih sederhana, dapat dimodifikasi (dikembangkan) dengan
mudah, dan mempermudah pencarian bagian yang error saat pengujian.
Bahasa pemrograman yang digunakan dalam buku ini adalah bahasa C.
Selama proses penyusunan buku ini, penulis menyadari masih
banyaknya kekurangan dalam buku bahan ajar ini. Oleh karena itu,
penulis dengan sangat terbuka menerima segala bentuk kritik dan saran
yang tentunya dapat membangun dan meningkatkan kemampuan kita
bersama. Penulis berharap semoga buku ini dapat membantu dan
bermanfaat bagi para pembaca.
Makassar, 11 Oktober 2013
Penulis
-
iii
DAFTAR ISI
Halaman Sampul ................................................................................ i
Kata Pengantar ................................................................................... ii
Daftar Isi ............................................................................................ iii
Bab I Pendahuluan ....................................................................... 1
Bab II Struktur Dasar Bahasa C ................................................... 4
Bab III Input dan Output .............................................................. 13
Bab IV Penyeleksian Kondisi ......................................................... 19
Bab V Perulangan ......................................................................... 24
Bab VI Array ................................................................................. 28
Bab VII Fungsi .............................................................................. 34
Bab VIII Struct (Record) ................................................................
Bab VIII Pointer ............................................................................ 47
Bab IX Operasi Fungsi .................................................................. 52
-
1
BAB I
PENDAHULUAN
1. Deskripsi Mata Kuliah
Pemrograman terstruktur adalah mata kuliah yang
mempelajari tentang bagaimana menyelesaikan suatu masalah
komputasi melalui program yang lebih terstruktur dan mudah
untuk dipahami. Bahasa pemrograman yang digunakan selama
mata kuliah ini adalah bahasa pemrograman bahasa C. Bahasa
pemrograman ini dipilih karena penggunaan bahasa
pemrograman ini secara luas telah digunakan dan mudah untuk
dipahami. Mata kuliah ini merupakan salah satu mata kuliah
wajib pada program studi Teknik Informatika.
2. Kegunaan Mata Kuliah
Dengan adanya mata kuliah ini mahasiswa memperoleh
manfaat berupa kemampuan untuk menyusun program yang
lebih sistematis dan sederhana dalam menyelesaikan suatu
masalah. Selain itu menambah soft-skill mahasiswa dalam bidang
pemrograman.
3. Tujuan Instruksional
Diharapkan setelah mengikuti mata kuliah ini mahasiswa
mampu menyelesaikan masalah pemrograman yang lebih
kompleks dengan lebih sederhana.
-
2
4. Petunjuk bagi Mahasiswa
1) Sebelum mengikuti perkuliahan diharapkan mahasiswa
telah membaca materi pembahasan dari bahan ajar dan
literatur lainnya yang berkaitan.
2) Mintalah petunjuk dari dosen jika ada hal yang belum
terselesaikan, baik dalam diskusi kelompok maupun dalam
diskusi kelas
3) Kerjakan setiap tugas yang diberikan pada setiap akhir
kegiatan/pertemuan dengan baik.
4) Perbanyaklah latihan mengerjakan soal, baik secara teori
maupun langsung dipraktekan dalam komputer dengan
menggunakan bahasa pemrograman Bahasa C.
5. Sistem Penilaian
Adapun sistem penilaian untuk mata kuliah ini adalah :
1) Kehadiran = 10%
2) Tugas = 20%
3) Mid = 30%
4) Final = 40%
-
3
6. Garis Garis Besar Program Pembelajaran
No Tujuan Instruksional Khusus Pokok Bahasan Sub Pokok Bahasan Estimasi
Waktu
1 2 3 4 5
1.
Menjelaskan Konsep Pemrograman
Terstruktur
Konsep
Pemrograman
Terstruktur
1. Go to less Programming 2. Lingkungan Bahasa C 3. Desain Program
1 x 100
2.
Menjelaskan struktur dasar berupa elemen-
elemen dasar dalam bahasa C
Elemen Dasar 1. Tipe Data 2. Variable & Constant 3. Operator & Expresi
1 x 100
3.
Menerapkan perintah perintah dasar dalam program sederhana.
Perintah Dasar 1. Instruksi Input 2. Inatruksi Output 3. Instruksi Sequential
1 x 100
4. Menerapkan perintah penyeleksian kondisi
(Selection) dan perulangan (iterasion)
Perintah Selection
dan Iteration
1. Instruksi selection 2. Instruksi iteration
2 x 100
5.
Membuat program menggunakan struktur
data array.
Array 1. Membuat array 2. Aspek-aspek penting pada array 3. Melewatkan array ke dalam fungsi
2 x 100
6.
Membuat program dengan menggunakan
fungsi
Fungsi 1. Fungsi pustaka pada bahasa C 2. Parameter fungsi 3. Jenis variabel fungsi 4. Melewatkan nilai pada fungsi 5. Fungsi rekursif
2 x 100
7.
Membuat program dengan struktur data
pointer
Pointer 1. Membuat perintah pointer 2. Operator pointer 3. Operasi pointer 4. Pointer pada pointer, array, dan
string
1 x 100
8.
Membuat program dengan menggunakan
operasi file
Operasi file 1. Pengantar file 2. Membuka dan menutup file 3. Melaksanakan proses file 4. File sequensial
1 x 100
9 Membuat program untuk kasus tertentu Studi kasus Program manipulasi 2 x 100
-
4
BAB II
STRUKTUR DASAR BAHASA C
1. Pendahuluan
a. Deskripsi
Bab ini akan menyajikan tentang pengenalan bahasa C, tipe
tipe data yang digunakan dalam bahasa C, pengertian konstanta dan
variabel, cara mendeklarasikan konstanta, variabel, dan fungsi,
operator operator dalam bahasa C, komentar dan kata kata
terkadang dalam bahasa C.
b. Tujuan pembelajaran
Setelah mengikuti perkuliahan ini, mahasiswa diharapkan
mampu mengenal dan menggunakan tipe data, variabel, konstanta,
operator operator dan komentar dalam sebuah program bahasa C.
2. Teori Dasar
a. Pengenalan Bahasa C
Bahasa C diciptakan oleh Dennis Ritchie tahun 1972 di Bell
Laboratories. Bahasa C adalah suatu bahasa pemrograman. Bahasa
C termasuk sebagai bahasa pemrograman tingkat menengah,
maksudnya bahasa C bisa dipelajari dengan lebih mudah karena
mudah dimengerti tetapi mempunyai kemampuan yang tinggi.
Bahasa C bisa digunakan untuk merekayasa program untuk
segala kebutuhan, baik untuk aplikasi bisnis, matematis atau
bahkan game. Setiap bahasa pemrograman memiliki kelebihan dan
-
5
kekurangan masing masing. Adapun kelebihan dan kekurangan
bahasa C adalah sebagai berikut [1]:
Kelebihan Bahasa C:
Bahasa C tersedia hampir di semua jenis computer.
Kode bahasa C sifatnya adalah portable dan fleksibel untuk
semua jenis computer.
Bahasa C hanya menyediakan sedikit kata-kata kunci. hanya
terdapat 32 kata kunci.
Proses executable program bahasa C lebih cepat
Dukungan pustaka yang banyak.
C adalah bahasa yang terstruktur
Bahasa C termasuk bahasa tingkat menengah penempatan ini
hanya menegaskan bahwa c bukan bahasa pemrograman yang
berorientasi pada mesin. yang merupakan ciri bahasa tingkat
rendah. Melainkan berorientasi pada obyek tetapi dapat
dinterprestasikan oleh mesin dengan cepat. secepat bahasa
mesin. inilah salah satu kelebihan c yaitu memiliki kemudahan
dalam menyusun programnya semudah bahasa tingkat tinggi
namun dalam mengeksekusi program secepat bahasa tingkat
rendah.
Kekurangan Bahasa C:
Banyaknya operator serta fleksibilitas penulisan program
kadang-kadang membingungkan pemakai.
Bagi pemula pada umumnya akan kesulitan menggunakan
pointer.
-
6
b. Struktur Bahasa C [1]
Adapun struktur dari bahasa C adalah sebagai berikut :
{
;
;
}
Contoh :
Preprosesor Directive (#include)
Preprosesor Directive (#include) adalah perintah yang
digunakan untuk memanggil file header (include file) yang
didalamnya terdapat perintah, fungsi atau prototype yang bisa
digunakan dalam program yan dibuat. Jika perintah #include ini
tidak ditulis, maka komputer tidak mengerti perintah-perintah yang
ditulis.
Contoh:
#include
#include phi 3.14
Header File
Header adalah berkas yang berisi prototype fungsi, definisi
konstanta dan definisi variable. Fungsi adalah kumpulan code C yang
diberi nama dan ketika nama tersebut dipanggil maka kumpulan
kode tersebut dijalankan.
-
7
Contoh :
File header stdio.h digunakan untuk penanganan input / output
standar seperti penulisan ke layar, ke file atau pembacaan data dari
keyboard atau file. Dan masih ada lagi beberapa file header lainnya
seperti conio.h, math.h,dll.
Void
Void artinya fungsi yang mengikutinya tidak memiliki nilai
kembalian (return).
Main ( )
Fungsi main ( ) adalah fungsi yang pertama kali dijalankan
ketika program dieksekusi. Tanpa fungsi main suatu program tidak
dapat dieksekusi namun dapat dikompilasi.
Statement
Statement adalah instruksi atau perintah kepada suatu
program ketika program itu dieksekusi untuk menjalankan suatu
aksi. Setiap statement diakhiri dengan titik-koma (;).
c. Tipe Data
Dalam bahasa C tipe data merupakan bagian program yang
sangat penting karena tipe data mempengaruhi setiap perintah yang
akan dilaksanakan oleh komputer. Sebagai contoh 3 dibagi 2
menghasilkan 1.5000 jika bertipe data float dan menghasilkan 1 jika
bertipe data integer. Berikut adalah tipe dasar dalam bahasa C.
Pemilihan tipe data yang tepat membuat program menjadi efisien dan
efektif.
-
8
Tabel 2.1 Tipe tipe data dalam pemrograman bahasa C[4]
No Tipe
Data Ukuran Range Format Keterangan
1 char I byte -128 s/d 127 %c Karakter/string
2 int 2 byte -32768 s/d
32767 %i, %d
Integer/ bilangan
bulat
3 float 4 byte -3.4E-38s/d
3.4E+38 %f
Float/bilangan
pecahan
4 double 8 byte 1.7E-308s/d
1.7E+308 %lf
Pecahan presisi
ganda
5 void 0 byte - - Tidak bertipe
Contoh Program :
#include stdio.h
#include conio.h
void main()
{
int a, b, c;
float d;
a = 3;
b = 2;
c = a/b;
d = a/b;
printf ( "nilai a / b adalah :%i", c);
printf ( "nilai a / b adalah :%f", d);
getch ();
}
Tampilan program diatas :
-
9
Catatan [2]:
Pemilihan tipe data harus hati-hati. Pertimbangkan jangkauan
yang dimiliki oleh tipe data yang dipilih. Kesalahan dalam memilih
tipe data akan menimbulkan suatu hasil yang tidak diperkirakan.
Contoh :
int a=32000;
int b=769;
int c;
c=a+b;
printf(%i + %i = %i\n,a,b,c);
Jika program tersebut dijalankan, maka akan menghasilkan
output seperti berikut :
32000 + 769 = -32767
Hal tersebut terjadi karena jangkuan nilai c sudah melebihi
jangkauan nilai untuk sebuah tipe data int. Bila suatu variable telah
melebihi jangkauan nilainya maka nilai variable tersebut akan
berputar menjadi nilai minimalnya dan jika nilainya kurang dari
minimal jangkauan nilainya maka variable tersebut akan terisi oleh
bilangan maksimal tipe tersebut.
Contoh : Nilai yang diharapkan :
32767
32768
32769
-
10
Nilai yang tercetak pada bahasa C
32767
-32768
-32767
d. Konstanta
Konstanta adalah suatu nilai yang sifatnya tetap. Konstanta
secara garis besar dapat terbagi 2 yaitu konstanta bilangan contoh 1,
2, 3, .. dan konstanta teks yang dapat berupa karakter contohnya
a, b, 4, & dan dapat pula berupa teks (string) contohnya
Makassar, Universitas Hasanuddin. bahasa C juga menyediakan
beberapa karakter khusus yang disebut karakter escape, antara lain :
\a : untuk bunyi bell (alert)
\b : mundur satu spasi (backspace)
\f : ganti halaman (form feed)
\n : ganti baris baru (new line)
\r : ke kolom pertama, baris yang sama (carriage return)
\v : tabulasi vertical
\0 : nilai kosong (null)
\ : karakter petik tunggal
\ : karakter petik ganda
\\ : karakter garis miring
e. Variabel
Variabel adalah suatu pengenal (identifier) yang digunakan
untuk mewakili suatu nilai tertentu di dalam proses program.
Berbeda dengan konstanta yang nilainya selalu tetap, nilai dari suatu
-
11
variable bisa diubah-ubah sesuai kebutuhan. Berikut ini adalah
aturan dalam penamaan variabel.
Nama variabel hanya boleh terdiri dari huruf, angka, dan garis
bawah / underscore atau gabungan dari ketiganya, dimana
karakter pertamanya adalah huruf.
Tidak mengandung simbol khusus seperti +, -, =, %, ^, @, ?, :,
$, #, !, &, *, (, ) dll dan tidak mengandung spasi.
Bersifat case sensitive yaitu huruf kecil dan huruf besar
berbeda. Contoh : varibel nama, Nama, dan NAMA dianggap
berbeda.
Keyword (kata kunci) yang telah digunakan dalam bahasa C
tidak boleh digunakan sebagai nama variabel,seperti include,
using, scanf, printf, int, float dll.
Panjangnya bebas namun yang ditampilkan hanya 32 karakter.
Contoh penamaan variabel yang benar : x, nama, UNHAS, D411,
nama_mhs, dll.
Contoh penamaan variable yang salah : 12nama, %unhas, x#nama,
nama saya, float, dll.
f. Deklarasi
Deklarasi diperlukan bila kita akan menggunakan pengenal
(identifier) dalam program. Identifier dapat berupa variable, konstanta
dan fungsi.
Deklarasi Variabel
Bentuk umum pendeklarasian suatu variable adalah :
Nama_tipe nama_variabel;
-
12
Contoh :
int a; (deklarasi a bertipe integer)
char b, huruf, nip[5]; (deklarasi b, huruf, nip[5], bertipe karakter)
float c; (deklarasi c bertipe float)
double d; (deklarasi d bertipe double
int array[2][3]; (deklarasi array bertipe integer)
char *p; (deklarasi pointer bertipe karakter)
Deklarasi Konstanta
Dalam bahasa C konstanta dideklarasikan menggunakan
preprocessor #define. Contohnya :
#define PHI 3.14
#define nim D412110123
#define nama Si bulan
Deklarasi Fungsi
Fungsi merupakan bagian yang terpisah dari program dan
dapat diaktifkan atau dipanggil di manapun di dalam program.
Fungsi dalam bahasa C ada yang sudah disediakan sebagai fungsi
pustaka seperti printf(), scanf(), getch() dan untuk menggunakannya
tidak perlu dideklarasikan. Fungsi yang perlu dideklarasikan terlebih
dahulu adalah fungsi yang dibuat oleh programmer. Bentuk umum
deklarasi sebuah fungsi adalah :
Tipe_fungsi nama_fungsi (parameter_fungsi);
Contohnya :
float luas_lingkaran(int jari);
void tampil();
int tambah(int x, int y);
-
13
g. Operator
1) Operator Penugasan
Operator Penugasan (Assignment operator) dalam bahasa C
berupa tanda sama dengan (=)
Contoh :
a = 5 ;
A = x * y;
Artinya : variabel a diisi dengan 5 dan variable A diisi dengan hasil
perkalian antara x dan y.
2) Operator Aritmatika
Bahasa C menyediakan lima operator aritmatika, yaitu :
Tabel 2.2 Operator aritmatika
Operator Keterangan Contoh
* Perkalian 5 * 6
/ Pembagian 10 / 5
% Sisa Pembagian
(modulus) 5 % 2
+ Penjumlahan 3 + 4
- Pengurangan 5 - 4
Contoh program : #include "stdio.h"
#include "conio.h"
void main()
{
clrscr(); // untuk membersihkan layar
printf("Nilai dari 7 + 3 = %i", 7 + 3);
printf("\nNilai dari 7 - 3 = %i", 7 - 3);
printf("\nNilai dari 7 * 3 = %i", 7 * 3);
printf("\nNilai dari 7 / 3 = %i", 7 / 3);
-
14
printf("\nNilai dari 7 % 3 = %i", 7 % 3);
getch();
}
Tampilan program diatas adalah :
3) Operator Unary
Operator Unary aadalah operator yang hanya membutuhkan
satu operand saja. Berikut adalah beberapa operator unary dalam
bahasa C :
Tabel 2.3 Operator unary [4]
Operator Keterangan Letak Contoh
- Unary minus Sebelum
operator A + (-B) * C
++ Peningkatan dengan
penambahan nilai 1
Sebelum dan
sesudah A++
-- Penurunan dengan
pengurangan 1
Sebelum dan
sesudah A--
! Unary not Sebelum !A
& Menghasilkan alamat
memori operand Sebelum &A
~ Bitwise NOT Sebelum ~A
* Menghasilkan nilai dari
pointer Sebelum *A
Sizeof Ukuran dari operand dalam
byte Sebelum sizeof (A)
-
15
4) Operator Hubungan (Perbandingan)
Operator Hubungan digunakan untuk membandingkan
hubungan antara dua buah operand sebuah nilai atau variable.
Operator hubungan dalam bahasa C :
Tabel 2.4 Operator hubungan [4]
Operator Keterangan Contoh
< Lebih kecil dari a > b
= b
> Lebih besar a < b
>= Lebih besar sama dengan dari a >= b
== Sama dengan a == b
!= Tidak sama dengan a != b
5) Operator Logika
Operator logika adalah operator yang digunakan untuk
membandingkan logika hasil dari operator-operator hubungan.
Operator logika ada tiga macam, yaitu [3]:
&& : Logika AND (DAN)
|| : Logika OR (ATAU)
! : Logika NOT (INGKARAN)
-
16
6) Operator Bitwise
Operator bitwise digunakan untuk memanipulasi bit-bit dari
nilai data yang ada di memori. Operator bitwise dalam bahasa C [3]:
> : Pergeseran bit ke kanan
& : Bitwise AND
^ : Bitwise XOR (exclusive OR)
| : Bitwise OR
~ : Bitwise NOT
7) Kata Tercadang (Reserved Word)
Bahasa C standar ANSI memiliki 32 kata tercadang (reserved
word) dan Turbo C menambahkannya dengan 7 kata tercadang.
Semua reserved word tidak boleh digunakan dalam penamaan
identifier (variable, nama fungsi dll). Kata Tercadang yang tersedia
dalam bahasa C adalah sbb [4]:
*asm default for *pascal switch
auto do goto register typedef
break double *huge return union
case else if short unsigned
*cdecl enum int signed void
char extern *interrupt sizeof volatile
const *far long static while
continue float *near struct
-
17
8) Komentar Program
Komentar program hanya diperlukan untuk memudahkan
pembacaan dan pemahaman suatu program (untuk keperluan
dokumentasi program). Dengan kata lain, komentar program hanya
merupakan keterangan atau penjelasan program. Untuk memberikan
komentar atau penjelasan dalam bahasa C digunakan pembatas /*
dan */ atau menggunakan tanda // untuk komentar yang hanya
terdiri dari satu baris. Komentar program tidak akan ikut diproses
dalam program (akan diabaikan).
Contoh program :
#include
#include
void main()
{
clrscr(); // untuk membersihkan layar
printf(Universitas Hasanuddin); /* Mencetak Universitas Hasanuddin */
getch();
}
Tampilan program diatas :
-
18
3. Latihan Soal
Kerjakanlah latihan soal berikut!
1. Buatlah sebuah program menghitung nilai rata rata dari data
nilai mahasiswa yang terdiri atas nilai tugas1, tugas2 , mid
test, dan final test dimana komposisi nilai adalah tugas 20%,
mid 40%, dan final 40% .
2. Sebuah toko memberikan discount untuk setiap pembelian
minimum Rp 50.000,-. Hitunglah jumlah yang harus dibayar
oleh setiap pelanggan untuk setiap pembelian.
-
19
Daftar Pustaka
[1] Bahasa Pemrograman C. diakses pada tanggal 13 Oktober 2013.
http://www2.ukdw.ac.id/kuliah/info/TI2023/Modul08A.pdf
[2] Kurniawan Khannedy Eko. 2007. Pemrograman C. Teknik
Informatika. UNICOM.
[3] Frieyadie. 2005. Panduan Pemrograman C++. Penerbit Andi. Yogyakarta
[4] Solichin Achmad. Pemrograman Bahasa C dengan Turbo C. www.ilmukomputer.com
-
20
BAB III
INPUT DAN OUTPUT
1. Pendahuluan
a. Deskripsi
Bab ini menyajikan tentang beberapa perintah input dan output
yang digunakan dalam bahasa C dan cara pendeklarasian dan
penggunaannya masing masing.
b. Tujuan Pembelajaran
Setelah mempelajari bab ini diharapkan mahasiswa mampu
menggunakan setiap perintah input dan output dalam membuat
program pada pemrograman bahasa C.
2. Teori Dasar
a. Perintah Input
Perintah standar input yang merupakan fungsi pustaka bahasa
C diantaranya adalah :
1) Scanf() [4]
Fungsi pustaka scanf() digunakan untuk menginput data
berupa data numerik, karakter dan string secara terformat. Hal-hal
yang perlu diperhatikan dalam pemakaian fungsi scanf() :
Fungsi scanf() memakai penentu format
Fungsi scanf() memberi pergantian baris secara otomatis
Fungsi scanf() tidak memerlukan penentu lebar field
Variabelnya harus menggunakan operator alamat &
-
21
Bentuk umum dari fungsi ini adalah :
scanf (penentu format, &nama_variabel);
Tabel 3.1 Kode penentu format [1]
Tipe Data Penentu
Format
Integer %d atau %i
Bentuk desimal/ berpangkat/
floating point %e atau %f
Karakter %c
String %s
Unsigned octal integer %o
Unsigned hexadecimal integer %x
Unsigned integer %u
Contoh program :
#include
#include
void main ()
{
int a;
float b;
char nama[10];
printf("Masukkan nilai a = "); scanf("%d", &a);
printf("Masukkan nilai b = "); scanf("%e", &b);
printf("Masukkan nama Anda = "); scanf("%s", &nama);
}
Tampilan program diatas :
-
22
2) Gets()
Fungsi Gets () digunakan untuk memasukkan data string.
Bentuk umum fungsi ini adalah [4]:
gets (nama_variabel_array)
Contoh program :
#include
#include
void main ()
{
char nama[20];
char jurusan[20];
printf("Masukkan nama Anda : ");
gets (nama);
printf ("\nMasukkan jurusan Anda : ");
gets (jurusan);
}
Tampilan program diatas adalah :
3) Getch()
Fungsi getch() (get character and echo) digunakan untuk
sebuah karakter dengan sifat karakter yang dimasukkan tidak perlu
diakhiri dengan menekan tombol ENTER, dan karakter yang
dimasukkan tidak akan ditampilkan dilayar. File header yang harus
disertakan adalah conio.h [4].
-
23
Contoh program [3]:
#include
#include
void main ()
{
char a;
printf("Masukkan sebuah karakter : ");
a = getch ();
printf ("\nKarakter yang Anda masukkan adalah :%c ", a);
getch ();
}
Tampilan program diatas :
4) Getchar()
Fungsi getchar() digunakan untuk membaca data yang bertipe
karakter. Penggunaannya harus diakhiri dengan penekanan tombol
ENTER dan karakter yang dimasukkan akan terlihat pada layar [4].
Contoh program :
#include
void main ()
{char c;
printf ("Masukkan sebuah karakter: ");
c = getchar ();
printf ("%c", c);
}
-
24
Tampilan program diatas adalah :
5) Getche()
Fungsi getche() digunakan untuk membaca sebuah karakter
dengan sifat karakter yang dimasukkan tidak perlu diakhiri dengan
menekan tombol ENTER, dan karakter yang dimasukkan ditampilkan
dilayar. File header yang harus disertakan adalah conio.h[4].
Contoh program :
#include
#include
void main ()
{
char a;
printf("Masukkan sebuah karakter : ");
a = getche ();
printf ("\nKarakter yang Anda masukkan adalah :%c ", a);
getch ();
}
Tampilan program diatas adalah :
b. Perintah Output
Untuk menampilkan data pada layar maka fungsi yang dapat
digunakan adalah [4] :
Fungsi printf() digunakan untuk menampilkan semua jenis
data (numeric dan karakter)
-
25
Bentuk penulisan :
printf (string-kontrol, argument-1, argument-2,..);
Fungsi puts() digunakan untuk menampilkan data string dan
secara otomatis akan diakhiri dengan perpindahan baris.
Fungsi putchar() digunakan untuk menampilkan sebuah
karakter.
Contoh program :
#include
#include
void main ()
{
int a = 10;
float b = 5;
char c[10] = "UNHAS";
printf ("Nilai a adalah :%i \n", a);
printf ("Nilai a adalah ;%i dan nilai b adalah : %f\n\n", a, b);
puts ("Saya kuliah di");
puts (c);
puts ("\nSaya kuliah di");
putchar ('U'); putchar ('N'); putchar ('H'); putchar ('A');putchar ('S');
getch ();
}
Tampilan program diatas adalah :
-
26
Mengatur lebar field [1]:
Bila ingin mencetak atau menampilkan data yang bertipe data float
atau pecahan, tampilan yang tampak biasanya kurang bagus. Untuk
mengatur lebar field dan jumlah desimal yang akan dicetak, dapat
digunakan bentuk penulisan :
%a.bf
Lebar field Jumlah desimal
Contoh program [1]:
#include
#include
void main ()
{
float a = 1.23, b = 321.5;
printf ("Bilangan a tanpa pengaturan lebar fild = %f\n",a );
printf ("Bilangan b tanpa pengaturan lebar fild = %f\n\n",b );
printf ("Bilangan a dengan pengaturan lebar fild = %3.2f\n",a );
printf ("Bilangan b dengan pengaturan lebar fild = %3.2f\n",b );
getch ();
}
Contoh Kasus[2]
Di suatu perusahaan, data penggajian dihitung dengan
ketentuan sebagai berikut :
Gaji Pokok : Rp. 5000000
-
27
Gaji Lembur/jam : Rp. 5000
Total Gaji Lembur : Lama Lembur * Gaji Lembur/jam
Gaji Kotor : Gaji Pokok + Total Gaji Lembur
Pajak : 10%
Gaji Bersih : Gaji Kotor - Pajak
Data yang diinputkan adalah : Nama Pegawai, Lama Lembur.
#include
#include
main()
{
int jamlembur;
long int gajipokok=500000,gajikotor,totalgajilembur;
float pajak,gajibersih;
char nama[50];
clrscr();
printf("Nama Pegawai : ");gets(nama);
printf("Lama Lembur : ");scanf("%i",&jamlembur);
totalgajilembur=(long int)5000*jamlembur;
gajikotor=gajipokok+totalgajilembur;
pajak=0.1*gajikotor;
gajibersih=gajikotor-pajak;
clrscr();
printf("Hasil Perhitungan\n");
printf("Nama Pegawai : %s\n",nama);
printf("Gaji Pokok : Rp. %10li\n",gajipokok);
printf("Lama Lembur : %i jam\n",jamlembur);
printf("Total Gaji Lembur : Rp. %10li\n",totalgajilembur);
printf("Gaji Kotor : Rp. %10li\n",gajikotor);
printf("Pajak (10%%) : Rp. %10.0f\n",pajak);
printf("Gaji Bersih : Rp. %10.0f\n",gajibersih);
getch();
}
Tampilan program diatas adalah :
-
28
3. Latihan
Kerjakanlah soal latihan berikut!
1) Buatlah sebuah Menginput data pegawai pada sebuah instansi
dimana data yang dibutuhkan adalah Nama, NIP, Tempat dan
tanggal lahir, dan Alamat.
2) Buatlah sebuah program untuk membuat sebuah password.
3) Buatlah sebuah program untuk Menginput sebuah nilai yang
menyatakan waktu dalam detik, kemudian cetaklah waktu
tersebut dalam bentuk :
Jam, Menit, dan Detik
-
29
Daftar Pustaka
[1] Frieyadie. 2005. Panduan Pemrograman C++. Penerbit Andi.
Yogyakarta
[2] Kurniawan Khannedy Eko. 2007. Pemrograman C. Teknik
Informatika. UNICOM.
[3] Sjukani Moh. 2009. Algoritma (Algoritma & Struktur Data 1)
dengan C, C++, dan Java, Teknik Teknik Dasar Pemrograman
Komputer. Edisis 5. Mitra Wacana Media. Jakarta
[4] Solichin Achmad. Pemrograman Bahasa C dengan Turbo C.
www.ilmukomputer.com
-
30
BAB IV
PENYELEKSIAN KONDISI
1. Pendahuluan
a. Deskripsi
Bab ini menyajikan tentang fungsi fungsi yang digunakan
dalam menyelesaikan program penyeleksian kondisi pada
pemrograman bahasa C serta perbedaan penggunaan masing
masing.
b. Tujuan pembelajaran
Setelah mengikuti perkuliahan ini mahasiswa diharapkan
mampu membuat program dengan menggunakan fungsi selection.
2. Teori Dasar
Penyeleksian kondisi digunakan untuk menentukan alur suatu
proses. Penyeleksian kondisi biasanya digunakan dalam program
yang kompleks. Penyeleksian kondisi melibatkan beberapa operator
dalam bahasa C, yaitu : operator hubungan (perbandingan), logika,
dan bitwise. Fungsi seleksi terdiri dari 3 tipe pernyataan yaitu :
a. Struktur Kondisi if
Bentuk umum If [1]:
if (kondisi)
{
statement1;
statementn;
}
-
31
Jika kondisi yang diseleksi terpenuhi maka statement tersebut
akan dikerjakan sedangkan jika kondisi tersebut tidak terpenuhi
maka akan menjalankan program berikutnya setelah seleksi kondisi
tersebut.
Contoh program 1:
#include
#include
void main ()
{
float tot_pembelian, discount, tot_pembayaran;
printf ("Masukkan Total Pembelian Rp :");
scanf ("%f",&tot_pembelian);
if (tot_pembelian >= 100000)
discount = 0.2*tot_pembelian;
printf ("\nAnda memperoleh discount 10 %");
printf ("\nBesarnya Potongan : Rp %10.0f",discount);
tot_pembayaran = tot_pembelian - discount;
printf ("\nJumlah yang Anda bayar adalah : Rp %10.0f",
tot_pembayaran);
printf ("\n\nTERIMA KASIH ATAS KUNJUNGAN ANDA");
getch ();
}
Tampilan program diatas adalah :
-
32
Jika dalam sebuah IF perintah yang hendak dijalankan lebih
dari 1 perintah, maka perintah perintah tersebut harus
dikelompokkan dalam sebuah blok { }. Format penulisannya adalah
[5]:
if
{
statement 1;
statement 2;
}
Statement 3;
Statement 4;
Dengan format IF diatas, jika kondisi benar, maka perintah
yang dijalankan adalah perintah yang terletak dalam kurung kurawal
(statement 1 dan statement 2), sedangkan statement3 dan statement
4 akan dijalankan tanpa bergantung dari kondisi yang ada.
Contoh program 2 [5]:
# include
#include
main ()
{
float suhu;
printf ("Masukkan suhu dalam derajat Celcius :");
scanf ("%f", &suhu);
if (suhu < 24)
{printf ("\nSebaiknya tidak mandi!\n");
printf ("\nJangan menyalakan AC.");
}
-
33
if (suhu >= 24)
{printf ("\nSebaiknya mandi!");
printf ("\nNyalakan AC!");
}
getch ();
}
Tampilan program diatas :
b. Struktur Kondisi if else
Bentuk umum If Else :
if (kondisi)
{ Statement;
}
else
} Statement;
}
Jika kondisi yang diseleksi terpenuhi maka statement pertama
yang akan dikerjakan sedangkan jika kondisi tersebut tidak
terpenuhi statement kedua yang akan dikerjakan. Diakhir setiap
statement menggunakan tanda (;) walaupun sebelum else.
Contoh program :
#include
#include
void main ()
{
-
34
float tot_pembelian, discount, tot_pembayaran;
printf ("Masukkan Total Pembelian Rp :");
scanf ("%f",&tot_pembelian);
if (tot_pembelian >= 100000)
{
printf ("\nAnda memperoleh discount 10 %");
discount = 0.2*tot_pembelian;
}
else
{
printf ("\nAnda memperoleh discount 5 %");
discount = 0.05*tot_pembelian;
}
printf ("\nBesarnya Potongan : Rp %10.0f",discount);
tot_pembayaran = tot_pembelian - discount;
printf ("\nJumlah yang Anda bayar adalah : Rp %10.0f",
tot_pembayaran);
printf ("\n\nTERIMA KASIH ATAS KUNJUNGAN ANDA");
getch ();
}
Tampilan program diatas adalah :
-
35
Contoh program 2 [4]:
Berikut adalah program untuk menginput tiga buah bilangan
bulat (misal A, B, dan C) kemudian mencetak ketiga nilai tersebut
urut dari nilai kecil ke nilai besar [3]
# include
# include
void main ()
{ int A, B, C;
printf ("Input nilai A ="); scanf ("%i", &A);
printf ("Input nilai B ="); scanf ("%i", &B);
printf ("Input nilai C ="); scanf ("%i", &C);
if (A < B)
{ if (B < C)
printf ("%i ,%i ,%i ",A, B, C);
else
{if (A < C)
printf ("%i ,%i ,%i ",A, C, B);
else
printf ("%i ,%i ,%i ",C, A, B);
}
}
else
{if (A < C)
printf ("%i ,%i ,%i ",B, A, C);
else
{ if (B < C)
printf ("%i ,%i ,%i ", B, C, A);
else
printf ("%i ,%i ,%i ",C, B, A);
}
}
getch ();
}
Tampilan program diatas adalah :
-
36
c. Struktur Kondisi Switch
Struktur kondisi switch digunakan untuk penyeleksian kondisi
dengan kemungkinan yang terjadi cukup banyak[1].
Bentuk Umum Switch :
switch (ekspresi)
{
case 1: Statement 1;
break;
case 2 : Statement 2;
break;
case n : Statement n;
break;
default : Statement m;
}
Contoh program :
#include
#include
void main ()
{
char jurusan;
printf ("1. Teknik Sipil \n2. Teknik Mesin \n3. Teknik Perkapalan \n4.
Teknik Elektro");
printf ("\n5. Teknik Arsitektur \n6. Teknik Geologi");
printf ("\n\nMasukkan kode jurusan Anda :");
jurusan = getchar ();
switch (jurusan)
-
37
{
case '1' : puts ("TEKNIK SIPIL"); break;
case '2' : puts ("TEKNIK MESIN"); break;
case '3' : puts ("TEKNIK PERKAPALAN"); break;
case '4' : puts ("TEKNIK ELEKTRO"); break;
case '5' : puts ("TEKNIK ARSITEKTUR"); break;
case '6' : puts ("TEKNIK GEOLOGI"); break ;
default : puts ("Kode Anda Salah"); break;
}
getch ();
}
Tampilan program diatas adalah :
Contoh Program 2 [2]:
Contoh switch case berjenjang
# include
# include
void main ()
{ char KodePulau; int KodeKota;
printf ("Kode Pulau : \nJ = Jawa \nS = Sumatera \nK =
Kalimantan");
printf ("\nMasukkan Kode Pulau : \t");
scanf ("%c", &KodePulau);
switch (KodePulau)
{
case 'J':
-
38
printf ("PULAU JAWA \n");
printf ("Kode Kota di Jawa :");
printf ("\n1. Jakarta \n2. Surabaya \n3. Bandung \n4. Semarang \n5.
Yogyakarta\n");
printf ("Masukkan Kode Kota :\t");
scanf ("%i", &KodeKota);
switch (KodeKota)
{
case 1 : printf ("\nJakarta");
break;
case 2 : printf ("\nSurabaya");
break;
case 3 : printf ("\nBandung");
break;
case 4 : printf ("\nSemarang");
break;
case 5 : printf ("\nYogyakarta");
break;
default : printf ("Kode Kota di Pulau Jawa Salah");
}
break;
case 'S':
printf ("PULAU SUMATERA \n");
printf ("Kode Kota di Sumatera");
printf ("\n1. Medan \n2. Palembang \n3. Padang\n");
printf ("Masukkan Kode Kota : \t");
scanf ("%i", &KodeKota);
switch (KodeKota)
{
case 1 : printf ("\nMedan");
break;
case 2 : printf ("\nPalembang");
break;
case 3 : printf ("\nPadang");
break;
default : printf ("Kode Kota di Pulau Sumatera Salah");
}
break;
-
39
case 'K':
printf ("PULAU KALIMANTAN \n");
printf ("Kode Kota di Kalimantan");
printf ("\n1. Banjarmasin \n2. Pontianak\n");
printf ("Masukkan Kode Kota : \t");
scanf ("%i", &KodeKota);
switch (KodeKota)
{
case 1 : printf ("\nBanjarmasin");
break;
case 2 : printf ("\nPontianak");
break;
default : printf ("Kode Kota di Pulau Kalimantan Salah");
}
break;
default : printf ("Kode Pulau Salah");
}
getch ();
}
Tampilan program diatas adalah :
-
40
d. Multi Kondisi dan Opertor Logika [3]
Kadang kadang satu kondisi saja tidak cukup untuk
menentukan suatu syarat, sehingga diperlukan dua atau lebih
kondisi. Untuk menggabungkan kondisi kondisi tersebut digunakan
operator yang disebut operator logika. Adapun operator logika dapat
digunakan : AND (&&), OR (||), dan NOT (!).
Contoh Program 1 :
# include
# include
void main ()
{
int a, b, c;
printf ("Input nilai A : "); scanf ("%i", &a);
printf ("Input nilai B : "); scanf ("%i", &b);
printf ("Input nilai C : "); scanf ("%i", &c);
if (a > b && a > c )
printf ("Nilai maksimum adalah %i", a);
if (b > a && b > c )
printf ("Nilai maksimum adalah %i", b);
if (c > a && c > b )
printf ("Nilai maksimum adalah %i", c);
getch ();
}
Tampilan program diatas adalah :
-
41
Contoh program 2 [2]:
#include
#include
main()
{
int kodejurusan,kodekelas,banyaktiket;
long int hargatiket,total;
float diskon,bayar;
printf("Pilih Jurusan :\n");
printf("---------------\n");
printf("1. Jakarta\n2. Yogya\n3. Surabaya\n");
printf("---------------\n");
printf("Jurusan yang dipilih : ");scanf("%i",&kodejurusan);
printf("Pilih Kelas :\n");
printf("---------------\n");
printf("1. Eksekutif\n2. Bisnis\n3. Ekonomi\n");
printf("---------------\n");
printf("Kelas yang dipilih : ");scanf("%i",&kodekelas);
printf("Banyak Tiket : ");scanf("%i",&banyaktiket);
if((kodejurusan==1)&&(kodekelas==1))
hargatiket=70000;
else
if((kodejurusan==1)&&(kodekelas==2))
hargatiket=40000;
else
if((kodejurusan==1)&&(kodekelas==3))
hargatiket=10000;
else
if(kodejurusan==2)
{
if(kodekelas==1) hargatiket=80000; else
if(kodekelas==2) hargatiket=50000; else
if(kodekelas==3) hargatiket=20000;
}
else
if(kodejurusan==3)
{
switch (kodekelas)
-
42
{
case 1:hargatiket=90000;break;
case 2:hargatiket=60000;break;
case 3:hargatiket=30000;
}
}
printf("Harga Tiket : Rp. %li\n",hargatiket);
total=banyaktiket*hargatiket;
printf("Total Tiket : Rp. %li\n",total);
if( ((kodejurusan==3)&&(kodekelas==1)) ||
((kodejurusan==2)&&(kodekelas==2))
)
diskon=0.1*total;
else
diskon=0;
printf("Diskon 10%% : Rp. %f\n",diskon);
bayar=total-diskon;
printf("Bayar : Rp. %f\n",bayar);
getch();
return 0;
}
Tampilan program diatas adalah :
-
43
3. Latihan
1) Buatlah nilai huruf dengan kriteria sebagai berikut :
Nilai Huruf Range Nilai
A Nilai akhir > 85
B 70>= nilai akhir = nilai akhir < 70
D 50 >= nilai akhir < 60
E Nilai akhir < 50
2) Buatlah program mengklasifikasikan jenis buku berikut :
Kode 1 : komputer
Kode 2 : akuntansi
Kode 3 : hukum
Kode 4 : manajemen
Kode 5 : kedokteran
3) Buatlah sebuah program untuk menentukan jenis sebuah
segitiga dengan memberi 3 input bilangan yang menyatakan
panjang sisi dari sebuah segitiga. Jika ketiga sisi dari bilangan
tersebut sama maka segitiga tersebut adalah segitiga sama
sisi, jika kedua bilangan sama maka segitiga tersebut adalah
segitiga sama kaki, dan jika ketiga bilangan yang diinput
berbeda maka segitiga tersebut adalah segitiga sembarang.
a. Gunakan operator logika AND (&&) atau OR (||).
b. Gunakan operator logika AND (&&) dan OR (||).
-
44
Daftar Pustaka
[1] Frieyadie. 2005. Panduan Pemrograman C++. Penerbit Andi.
Yogyakarta
[2] Kurniawan Khannedy Eko. 2007. Pemrograman C. Teknik
Informatika. UNICOM.
[3] Sjukani Moh. 2009. Algoritma (Algoritma & Struktur Data 1)
dengan C, C++, dan Java, Teknik Teknik Dasar Pemrograman
Komputer. Edisis 5. Mitra Wacana Media. Jakarta
[4] Solichin Achmad. Pemrograman Bahasa C dengan Turbo C.
www.ilmukomputer.com
[5] Swastika Windra. April 2012. "Dasar Algoritma dan Pemrograman
menggunakan C & Java". Prestasi Pustaka Publisher. Jakarta
-
45
BAB V
PERULANGAN
1. Pendahuluan
a. Deskripsi
Dalam bab ini dijelaskan tentang fungsi fungsi yang
digunakan untuk membuat perintah perulangan dan perbedaan
penggunaan masing - masing fungsi.
b. Tujuan Pembelajaran
Setelah mengikuti perkuliahan ini, mahasiswa diharapkan mampu
menyelesaikan masalah perulangan dengan menggunakan program
bahasa C.
2. Teori Dasar
Perulangan data atau yang biasa disebut dengan looping
adalah proses yang dilakukan secara berulang-ulang sampai batas
yang ditentukan. Perulangan akan berhenti jika nilai yang
dimasukan sudah tidak memenuhi syarat yang diberikan. Jenis
jenis perulangan:
a. For
For digunakan untuk mengulang suatu proses yang telah
diketahui jumlah perulangannya. Syntax untuk menuliskan perintah
for adalah sebagai berikut [4]:
for (inisialisasi; syarat_perulangan; pengubah_nilai_pencacah)
Keterangan :
Inisialisasi : bagian untuk memberikan nilai awal untuk
variabel variabel tertentu
-
46
Syarat pengulangan : memegang kontrol terhadap
pengulangan, karena bagian ini yang akan menentukan suatu
perulangan diteruskan atau dihentikan.
Pengubah nilai pencacah : mengatur kenaikan atau penurunan
nilai pencacah.
Contoh program 1:
#include
#include
void main ()
{
int a;
for (a = 1; a
-
47
#include
#include
main ()
{
int i, j;
int hasil = 1;
printf ("PROGRAM UNTUK MENGHITUNG FAKTORIAL N!");
printf ("\n\nInput N = ");
scanf ("%i", &j);
for (i = j; i >=1; i--)
{hasil = hasil*i;
}
printf ("\n\nHasil faktorial : %d", hasil);
getch ();
}
Tampilan Program diatas :
Contoh program 3 [2]:
Berikut akan diberikan contoh penggunaan perintah for dalam for :
#include
#include
main ()
{
int i, j;
for (i = 1; i < 6; i++)
{for (j = 1; j
-
48
{printf ("%d",i);
}
printf ("\n");
}
getch ();
}
Tampilan program diatas:
b. While
While digunakan untuk mengulang suatu proses yang belum
diketahui jumlahnya. Pengecekan kondisi akan dilakukan terlebih
dahulu. Jika kondisi masih bernilai true, maka looping akan terus
berlanjut. Bentuk penulisan while adalah sebagai berikut[1]:
while (syarat_pengulangan)
{
statement_yang_akan_diulang;
}
Contoh program 1:
#include "stdio.h"
#include "conio.h"
void main()
{ clrscr();
int bil = 1;
-
49
while (bil
-
50
c. Do while
Do while digunakan untuk mengulang suatu proses yang
belum diketahui jumlahnya. Instruksi akan dijalankan lebih dahulu,
kemudian dilakukan pengecekan kondisi apabila masih bernilai true
maka looping akan terus berlanjut. Bentu penulisannya sebagai
berikut [1]:
do
{
statement-yang-akan-diulang;
}
while (syarat-pengulangan);
Contoh program :
# include
# include
void main ()
{
int bil = 2;
do
-
51
{
printf ("%i", bil);
bil +=2;
}
while (bil
-
52
printf("\nTotal Pembelian : %d", total);
getch ();
}
Tampilan program diatas adalah :
Contoh aplikasi [3]:
Titik A dan titik B hanya dihubungkan oleh satu buah jalan
sepanjang 1000 m. Ali berangkat dari titik A menuju titik B tepat jam
08 : 15 : 27 dengan kecepatan tetap 2 m/det. Badu berangkat dari
titik B pada jam yang sama menuju titik A dengan kecepatan tetap 3
m/det. Susun program untuk mencetak pukul berapa ( Jam: Menit:
detik) Ali dan Badu berpapasan di jalan.
# include
#include
void main ()
{ int vAli, vBadu, sAli, sBadu, s, t;
long int t1, t2, det, J, M, D;
vAli = 2; vBadu = 3;
sAli = 0; sBadu;
-
53
s = 1000 ; t = 0;
while ((sAli + sBadu) < s)
{ sAli = sAli + vAli;
sAli = sBadu+ vBadu;
t = t + 1;
}
t1 = 8*3600L + 15*60 +27;
t2 = t1 + t;
det = t2;
J = det/ 3600; det = det % 3600;
M = det / 60; det = det % 60;
D = det;
printf ("%li : %li : %li", J, M, D);
getch ();
}
Tampilan program diatas adalah :
-
54
3. Latihan
1) Buatlah program menghitung 10 deret bilangan genap dengan
hasilnya!
2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20 = 110
a. Dan ganjil dengan hasilnya!
b. 1 + 3 + 5 + 7 + 9 + 11 + 13 + 15 + 17 + 19 = 100
2) Buatlah program untuk menghitung perkalian deret bilangan
ganjil membentuk segitiga siku dengan hasilnya!
1 = 1
1 x 3 = 3
1 x 3 x 5 = 15
1 x 3 x 5 x 7 = 105
1 x 3 x 5 x 7 x 9 = 945
3) Seseorang menyimpan uang Rp 1.000.000,- di bank dengan
bunga ber-bunga 2 % perbulan. Jadi setelah satu bulan
uangnya menjadi Rp 1.020.000,-. Satu bulan berikutnya
uangnya ini mendapat bunga lagi 2%, sehingga setetlah 2
bulan, uangnya menjadi Rp 1.020.000 + Rp 20.400,- = Rp
1.040.400,- dan demikian seterusnya. Buatlah program untuk
menghitung dan mencetak jumlah uangnya stetlah 10 bulan.
-
55
Daftar Pustaka
[1] Frieyadie. 2005. Panduan Pemrograman C++. Penerbit Andi.
Yogyakarta
[2] Kurniawan Khannedy Eko. 2007. Pemrograman C. Teknik
Informatika. UNICOM.
[3] Sjukani Moh. 2009. Algoritma (Algoritma & Struktur Data 1)
dengan C, C++, dan Java, Teknik Teknik Dasar Pemrograman
Komputer. Edisis 5. Mitra Wacana Media. Jakarta
[4] Solichin Achmad. Pemrograman Bahasa C dengan Turbo C.
www.ilmukomputer.com
-
56
BAB VI
ARRAY
1. Pendahuluan
a. Deskripsi
Bab ini menyajikan tentang pengertian, cara deklarasi, dan
penggunaan array baik array berdimensi satu, array berdimensi dua,
dan array multi-dimensi. Serta disajikan contoh contoh
penggunaannya masing masing.
b. Tujuan Pembelajaran
Setelah mengikuti perkuliahan ini, mahasiswa diharapkan
dapat memahami penggunaan array serta mampu mengaplikasikan
dalam menyelesaikan program yang membutuhkan penyelesaian
dengan array.
2. Teori Dasar
Array atau larik adalah tipe terstruktur yan terdiri dari
sejumlah komponen yang mempunyai tipe yang sama. Jumlah
komponen dalam sebuah array adalah tetap. Banyaknya komponen
dalam array ditunjukkan oleh indeks yang berfungsi untuk
membedakan variabel yang satu dengan variabel lainnya. Dalam
bahasa C dikenal 3 macam array yaitu :
a. Array Berdimensi Satu
Untuk mengakses setiap elemen dalam array dapat dilakukan
dengan mengakses indeksnya. Indeks setiap array default dimulai
dari nol. Adapun bentuk deklarasi array adalah [4]:
Tipe_data Nama_variabel[Ukuran]
-
57
Tipe data untuk menyatakan tipe data yang digunakan dan ukuran
digunakan untuk menyatakan jumlah maksimum elemen array.
Sebuah array dapat digambarkan sebagai kotak anjang yang berisi
kotak kotak kecil di dalam kotak panjang tersebut. Contoh :
int nilai[5];
indeks [0] [1] [2] [3] [4]
50 85 90 70 95
Contoh program :
# include
# include
void main()
{ int index, barang[10];
clrscr();
// input jumlah barang//
printf ("Masukkan jumlah Barang :\n");
for (index =0 ; index < 10; index ++)
{
printf ("Barang %i : ", index+1);
scanf ("%i", &barang[index]);
}
printf ("Jumlah barang yang telah diinput:");
for (index = 0; index < 10; index++)
{
printf ("%i", barang[index]);
}
getch ();
}
Tampilan program diatas adalah :
-
58
Untuk mengakses array berdimensi 1, dapat digunakan bentuk
pengaksesan sebagai berikut [1]:
Nama_array[indeks]
Contoh :
nilai [3];
nilai [1];
nilai [0]; dst
Sedangkan untuk inisialisasi suatu array dapat dilakukan dengan
bentuk :
Tipe_data nama_array[indeks] = {nilai array};
Contoh :
float nilai[5] = {75.8 78,67 87,5 90.0 65.7};
Contoh program inisiakisasi dan mengakses array :
#include
#include
main()
{ int i, nilai [5];
nilai [0] = 10;
nilai [1] = 8;
nilai [2] = 5;
nilai [3] = 7;
nilai [4] = 8;
-
59
printf ("Nilai = ");
for (i = 0; i
-
60
b. Array Berdimensi Dua
Array dimensi dua tersusun dalam bentuk baris dan kolom,
dimana indeks pertama menunjukkan baris dan indeks kedua
menunjukkan kolom. Array dimensi dua dapat digunakan pada
pendataan penjualan, pendataan nilai, dan sebagainya.
Bentuk umum pendeklarasian array [1]:
Tipe_data Nama_variabel [indeks-1][indeks-2]
Bentuk umum pengaksesan array berdimensi dua adalah :
Nama_array [index-1][index-2]
Contoh :
Data [3][2]
Data [0][1]
Bentuk pendefenisian array berdimensi dua adalah :
Tipe_data nama_array [juml_elemen] = {nilai array};
Contoh :
Int data [2][4] = {{ 1, 2, 3, 4}, 4, 3, 2, 1};
Contoh deklarasi array pada bahasa C [5]:
#include
#include
main()
{ int i,j, matriks [3][3];
matriks [0][0] = 10;
matriks [0][1] = 6;
matriks [0][2] = 5;
matriks [1][0] = 7;
matriks [1][1] = 9;
matriks [1][2] = 5;
matriks [2][0] = 7;
matriks [2][1] = 3;
-
61
matriks [2][2] = 2;
printf ("Matriks = ");
for (i = 0; i
-
62
}
getch();
}
Tampilan program diatas adalah :
Contoh program 2 [2]: Penjumlahan dua buah matriks
#include
#include
#define maks 3
main()
{
int mat1[maks][maks], mat2[maks][maks], mathasil[maks][maks];
int b,k;
printf("Pengisian Matrik 1 : \n");
for (b=0;b
-
63
}
printf("Pengisian Matrik 2 : \n");
for (b=0;b
-
64
printf("%6d",mathasil[b][k]);
}
printf("\n");
}
getch();
return 0;
}
Tampilan program diatas adalah :
c. Array Multi-dimensi
Array multi-dimensi merupakan array yang mempunyai ukuran
lebih dari dua. Bentuk pendeklarasian array sama saja dengan array
dimensi satu maupun array dimensi dua. Bentuk umumnya yaitu [4]:
tipe_array nama_array[ukuran1][ukuran2][ukuranN];
Contoh :
-
65
float X[2][4][3];
Contoh program [4]:
#include stdio.h
#include conio.h
void main()
{ int i, j, k;
static int data_huruf[2][8][8] =
{ { { 1, 1, 1, 1, 1, 1, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 0, 0, 0, 1, 1, 1, 0 },
{ 1, 0, 0, 0, 1, 1, 1, 0 },
{ 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0 }
},
{ { 1, 1, 0, 0, 0, 1, 1, 0 },
{ 1, 1, 0, 0, 0, 1, 1, 0 },
{ 1, 1, 0, 0, 0, 1, 1, 0 },
{ 1, 1, 1, 1, 1, 1, 1, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0 }
}
};
/* Tampilkan Huruf */
for(i=0; i
-
66
}
getch();
}
Contoh aplikasi :
Pencarian data (searching) menggunakan array[5] :
#include
#include
int main()
{
int a[20] = {0};
int i;
int n; //mengacu pada jumlah array
int target; //berisi data yang akan dicari
int ketemu; // status dari proses pencarian; 1 = ketemu, 0 = tidak
ketemu
printf("Masukkan data - data yang ingin dibuat MAX 20 data :\t");
scanf ("%i", &n);
if (n >= 20) return 0;
printf ("Masukkan data - data pada array yang akan dibuat :\n");
for (i = 0; i < n; i++)
{
printf ("data ke-%d\t :", i+1);
scanf ("%d", &a[i]);
}
for (i = 0; i < n; i++) // perulangan digunakan untuk menampilkan
seluruh elemen array
{
printf("%d",a[i]);
}
printf ("\nMasukkan angka yang akan dicari : ");
scanf ("%d", &target);
for (i = 0; i < n-1; i++) // proses pencarian dilakukan mulai dari
elemen ke-0 (pertama)
{
-
67
if (a[i] == target)
{
printf (" Data %d ditemukan pada urutan ke %d", target, i+1);
ketemu = 1; // variabel ketemu diberi nilai 1 untuk menunjukkan
bahwa proses pencarian berhasil
return 0 ;
}
printf ("Data tidak ditemukan");
}
getch () ;
}
Tampilan program diatas adalah [5]:
Pengurutan data dengan menggunakan array (menggunakan
metode selection short.
#include
#include
main()
{
int N = 5; //jumlah elemen array arr
int arr [5] = {63, 21, 3, 177, 8};
int i, j, k, temp, biggest;
printf ("Data elemen array arr sebelum di urutkan \n");
for (i = 0; i
-
68
}
printf ("\n");
// Proses pengurutan data bobble Sort
for (i = 0; i
-
69
3. Latihan
1. Buatlah sebuah program untuk menghitung jumlah dan hasil
kali matriks A dan B sebagai berikut :
A = [
] B = [
]
2. Jumlah suara masing- masing calon pada sebuah pemilihan
walikota adalah sbb :
Calon
Kecamatan A B C D
1 304 125 112 111
2 203 236 231 145
3 112 312 332 211
4 98 142 167 245
5 346 154 287 123
Dengan menggunakan array, buatlah program untuk
menyelesaikan pekerjaan ini :
a. Membaca dan mencetak hasil pemilihan diatas dalam bentuk
tabel
-
70
b. Menghitung dan mencetak jumlah suara masing masing
calaon hasil pemilihan tersebut.
c. Tampilkan pemenang hasil pemilihan tersebut.
3. Urutkanlah bilangan berikut dengan menggunakan metode
bubble sort.
[12, 35, 27, 5, 10, 56, 98, 75)
1. Terdapat sebuah array dua dimensi yang dibuat dengan int
[3][5] dan telah diisi. Buatlah sebuah program untuk :
a. Mencetak nilai yang terbesar
b. Mencetak nilai yang terbesar dan mencetak ada berapa
buah nilai yang terbesar.
c. Mencetak nilai yang terbesar dan mencetak ada berapa
buah nilai yang terbesar, serta mencetak ada di lokasi mana
saja nilai terbesar tersebut.
d. Memeriksa apakah diantara isi array tersebut ada yang
nilainya = 50. Bila ada, maka cetak perkataan ada ADA
dan bila tidak ada maka cetak TIDAK ADA.
-
71
Daftar Pustaka
[1] Frieyadie. 2005. Panduan Pemrograman C++. Penerbit Andi.
Yogyakarta
[2] Kurniawan Khannedy Eko. 2007. Pemrograman C. Teknik
Informatika. UNICOM.
[3] Sjukani Moh. 2009. Algoritma (Algoritma & Struktur Data 1)
dengan C, C++, dan Java, Teknik Teknik Dasar Pemrograman
Komputer. Edisis 5. Mitra Wacana Media. Jakarta
[4] Solichin Achmad. Pemrograman Bahasa C dengan Turbo C.
www.ilmukomputer.com
[5] Swastika Windra. April 2012. "Dasar Algoritma dan Pemrograman
menggunakan C & Java". Prestasi Pustaka Publisher. Jakarta
-
72
BAB VII
FUNGSI
1. Pendahuluan
a. Deskripsi
Bab ini membahas tentang fungsi pustaka yaitu fungsi yang
telah tersedia dalam turbo C dan fungsi yang dapat dibuat sendiri
oleh programmer. Pada fungsi yang dapat dibuat sendiri oleh
programmer akan dijelaskan tentang cara mendeklarasikan fungsi,
jenis parameter dan variabel yang digunakan dalam bahasa C serta
cara pemanggilan fungsi. Di akhir pembahasan, akan dijelaskan
tentang fungsi rekursif. Dalam setiap pembahasan akan diberikan
contoh program yang akan membantu mahasiswa lebih memahami
tentang penggunaan fungsi.
b. Tujuan Pembahasan
Setelah mengikuti perkuliahan ini, mahasiswa diharapkan
mampu memahami kegunaan penggunaan fungsi dalam bahasa
pemrograman dan mampu menerapkan penggunaan fungsi dalam
pemrograman bahasa C.
2. Teori Dasar
Fungsi adalah bagian dari program yang digunakan untuk
suatu tugas tertentu dan letaknya terpisah dari program utama.
Fungsi merupakan bagian utama dalam bahasa C karena program
bahasa C sendiri tersusun atas kumpulan fungsi fungsi dam dalam
setiap program minimal terdapat satu buah fungsi yaitu fungsi main
(). Adapun kegunaan penggunaan fungsi dalam bahasa C adalah :
Program menjadi lebih terstruktur sehingga mudah untuk
dipahami dan
-
73
Untuk mengurangi pengulangan penulisan program yang sama.
Dalam bahasa C fungsi dibagi menjadi dua yaitu fungsi pustaka atau
fungsi yang telah tersedia dalam turbo C dan yang didefinisikan atau
dibuat oleh programmer.
a. Fungsi Pustaka dalam Bahasa C [4]
1) Fungsi Operasi String (tersimpan dalam header file
string.h)
strcpy() berfungsi untuk menyalin suatu string asal ke variable
string tujuan. Bentuk umum : strcpy(var_tujuan, string_asal);
strlen() Berfungsi untuk memperoleh jumlah karakter dari
suatu string. Bentuk umum : strlen(string);
strcat() Digunakan untuk menambahkan string sumber ke
bagian akhir dari string tujuan. Bentuk umum : strcat(tujuan,
sumber);
strupr() Digunakan untuk mengubah setiap huruf dari suatu
string menjadi huruf capital. Bentuk umum : strupr(string);
strlwr() Digunakan untuk mengubah setiap huruf dari suatu
string menjadi huruf kecil semua. Bentuk umum :
strlwr(string);
strcmp() Digunakan untuk membandingkan dua buah string.
Hasil dari fungsi ini bertipe integer dengan nilai :
(a) Negative, jika string pertama kurang dari string kedua.
(b) Nol, jika string pertama sama dengan string kedua
(c) Positif, jika string pertama lebih besar dari string
kedua.
Bentuk umum : strcmp(string1, string2);
-
74
Contoh program :
#include "stdio.h"
#include "conio.h"
#include "string.h"
void main()
{ char nama[20];
char nama1 [30]= "UNIVERSITAS HASANUDDIN";
char nama2 [30]= "Teknik Informatika" ;
int x;
strcpy(nama,nama1);
printf("Nama : %s", nama1);
printf("\nJumlah karakter : %i",strlen(nama));
strcat (nama2,nama1);
printf ("\n");
puts (nama2);
strupr(nama2);
printf ("\n");
puts (nama2);
printf ("\n");
strlwr (nama2);
puts (nama2);
strcmp (nama1,nama2) ;
printf("Hasil : %i", x);
getch();
}
Tampilan program diatas adalah :
-
75
2) Fungsi Operasi Karakter (tersimpan dalam header
ctype.h) [4]
islower() Fungsi akan menghasilkan nilai benar (bukan nol)
jika karakter merupakan huruf kecil. Bentuk umum :
islower(char);
isupper() Fungsi akan menghasilkan nilai benar (bukan nol)
jika karakter merupakan huruf kapital. Bentuk umum :
isupper(char);
isdigit() Fungsi akan menghasilkan nilai benar (bukan nol) jika
karakter merupakan sebuah digit. Bentuk umum : isdigit(char);
tolower() Fungsi akan mengubah huruf capital menjadi huruf
kecil. Bentuk umum : tolower(char);
toupper() Fungsi akan mengubah huruf kecil menjadi huruf
kapital. Bentuk umum : toupper(char);
Contoh program :
#include "stdio.h"
#include "conio.h"
#include "ctype.h"
void main()
{ char karakter;
clrscr();
printf ("Masukkan sebuah karakter : \t");
karakter = getche();
if (islower (karakter))
{ printf ("\nadalah huruf kecil");
printf ("\nHuruf kapitalnya adalah :%c",toupper(karakter));}
else if (isupper (karakter))
{ puts ("\nadalah huruf kapital");
printf ("\nHuruf kecilnya adalah :%c",tolower(karakter));}
else if (isdigit (karakter))
{ puts("\nadalah bilangan digit");
}
getch ();}
-
76
Tampilan program diatas adalah :
3) Fungsi Operasi Matematik (tersimpan dalam header
math.h dan stdlib.h) [4]
sqrt() Digunakan untuk menghitung akar dari sebuah
bilangan. Bentuk umum : sqrt(bilangan);
pow() Digunakan untuk menghitung pemangkatan suatu
bilangan. Bentuk umum : pow(bilangan, pangkat);
Contoh program :
#include "stdio.h"
#include "conio.h"
#include "math.h"
void main()
{ int x, y; float z;
clrscr();
printf ("Menghitung x pangkat y");
printf ("\nMasukkan Nilai x :"); scanf("%i",&x);
printf ("\nMasukkan Nilai y :"); scanf ("%i", &y);
printf ("\nx^y = %i ^ %i = %3.2f", x,y, pow(x,y));
printf ("\n\nMenghitung akar x");
printf ("\nMasukkan Nilai x :"); scanf("%i",&x);
printf ("\nAkar x adalah %2.2f",sqrt (x));
getch();
}
-
77
Tampilan program diatas adalah :
sin(), cos(), tan() Masing-masing digunakan untuk menghitung
nilai sinus, cosinus dan tangens dari suatu sudut. Bentuk
umum :
sin(sudut);
cos(sudut);
tan(sudut);
Contoh program :
#include "stdio.h"
#include "conio.h"
#include "math.h"
void main()
{
clrscr();
int sudut;
printf ("Menghitung sin, cos, dan tan\n");
printf ("Masukkan sudut :");
scanf ("%i",&sudut);
printf ("\nsin %i = %5.2f\n", sudut, sin (sudut));
printf ("cos %i = %5.2f\n", sudut, cos (sudut));
printf ("tan %i = %5.2f", sudut, tan (sudut));
getch();
}
-
78
Tampilan program diatas adalah :
atof() Digunakan untuk mengkonversi nilai string menjadi
bilangan bertipe double. Bentuk umum : atof(char x);
atoi() Digunakan untuk mengkonversi nilai string menjadi
bilangan bertipe integer. Bentuk umum : atoi(char x);
Contoh program :
#include "stdio.h"
#include "conio.h"
#include "math.h"
#include "stdlib.h"
void main()
{
clrscr();
char x [10]= "123";
char y [10]= "3.14";
printf ("Nilai x = %i",atoi(x));// Mengubah string menjadi integer
printf ("Nilai y = %f", atof(y));// mengubah string menjadi float
getch();
}
Tampilan program diatas adalah :
-
79
div() Digunakan untuk menghitung hasil pembagian dan sisa
pembagian. Bentuk umum : div_t div(int x, int y) Strukturnya
:
typedef struct
{ int qout; // hasil pembagian
int rem // sisa pembagian
} div_t;
Contoh program [1]:
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
{ int x, y;
div_t hasil;
clrscr();
printf("Menghitung sisa dan hasil pembagian x dengan y\n");
printf("x = "); scanf("%i", &x);
printf("y = "); scanf("%i", &y);
hasil = div(x,y);
printf("\n\n %3i div %3i = %3i sisa %3i", x, y, hasil.quot, hasil.rem);
getch();
}
Tampilan program diatas adalah :
-
80
max() Digunakan untuk menentukan nilai maksimal dari dua
buah bilangan. Bentuk umum : max(bilangan1, bilangan2);
min() Digunakan untuk menentukan bilangan terkecil dari dua
buah bilangan. Bentuk umum : min(bilangan1, bilangan2);
Contoh program :
#include "conio.h"
#include "stdlib.h"
void main()
{ int a, b, c, d;
printf ("Masukkan Nilai\n");
printf ("a = "); scanf ("%i", &a);
printf ("b = "); scanf ("%i", &b);
printf ("c = "); scanf ("%i", &c);
printf ("d = "); scanf ("%i", &d);
printf ("Nilai maksimumnya adalah %i", max(max(max(a,b),c),d));
printf ("\nNilai minimumnya adalah %i", min(min(min(a,b),c),d));
getch ();
}
Tampilan program diatas adalah :
-
81
b. Membuat Fungsi Sendiri
1) Deklarasi Fungsi
Bentuk deklarasi sebuah fungsi adalah sebagai berikut [1] :
Tipe_fungsi nama_fungsi (parameter_fungsi) {
Statement; Statement; }
Dalam penggunaan fungsi terdapat beberapa hal yang perlu untuk diperhatikan, diantaranya :
Nama fungsi dapat ditentukan dengan bebas dengan ketentuan
tidak menggunakan spasi dan nama nama fungsi yang
disediakan oleh turbo C.
Kalau tipe fungsi tidak disebutkan, maka akan dianggap
sebagai fungis dengan nilai keluaran bertipe integer.
Untuk fungsi yang memiliki keluaran bertipe bukan integer,
maka diperlukan pendefinisian penentu tipe fungsi.
Untuk fungsi yang tidak mempunyai nilai keluaran maka
dimasukkan ke dalam tipe void
Pernyataan yang diberikan untuk memberikan nilai akhir
fungsi berupa pernyataan return.
Suatu fungsi dapat menghasilkan nilai balik bagi fungsi
pemanggilnya.
Contoh program :
#include "stdio.h"
#include "conio.h"
kampus () // fungsi kampus
{ puts ("UNIVERSITAS HASANUDDIN");
}
void main () // program utama
-
82
{clrscr();
printf ("Nama Universitas :\n");
kampus (); // memanggil fungsi kampus
getch();
}
Tampilan program diatas adalah :
2) Parameter Fungsi
Dalam bahasa C terdapat 2 macam parameter fungsi yaitu [1] ;
Parameter formal yaitu variabel yang terdapat pada daftar
parameter yang berada di dalam definisi fungsi.
Parameter aktual adalah variabel yang digunakan pada
pemanggilan satu fungsi.
Terdapat dua cara untuk melewatkan parameter ke dalam fungsi,
yaitu :
Pemanggilan dengan nilai (Call by value) [2]
Call by value akan menyalin nilai dari parameter aktual ke
parameter formal. Nilai yang dikirimkan ke fungsi adalah nilai dari
datanya, bukan alamat memori letak dari datanya. Fungsi yang
menerima kiriman nilai akan menyimpannya di alamat terpisah dari
nilai aslinya yang digunakan oleh bagian program yang memanggil
fungsi. Perubahan nilai di fungsi (parameter formal) tidak akan
merubah nilai asli di bagian program yang memanggilnya. Pengiriman
parameter secara nilai adalah pengiriman searah, yaitu dari bagian
-
83
program yang memanggil fungsi ke fungsi yang dipanggil. Pengiriman
suatu nilai dapat dilakukan untuk suatuungkapan tidak hanya
untuk sebuah variabel, elemen array atau konstanta saja.
Contoh program :
#include "stdio.h"
#include "conio.h"
nilai (int x, int y);
void main ()
{
clrscr ();
int a = 10, b = 5;
printf ("Nilai sebelum pemanggilan fungsi");
printf ("\nNilai a = %i dan nilai b = %i", a,b);
nilai (a,b); // pemanggilan fungsi
printf ("\n\nNilai setelah pemanggilan fungsi");
printf ("\n\nNilai a = %i dan nilai b = %i", a,b);
getch();
}
nilai (int x, int y)
{
x+=5;
y+=5;
printf ("\n\nNilai setelah pemanggilan fungsi");
printf("\na = %i dan nilai b = %i",x, y);
}
Tampilan program diatas adalah :
-
84
Pemanggilan Secara Referensi (Call by Reference)
Pemanggilan secara Referensi merupakan upaya untuk
melewatkan alamat dari suatu variabel ke dalam fungsi. Yang
dikirimkan ke fungsi adalah alamat letak dari nilai datanya, bukan
nilai datanya. Fungsi yang menerima kiriman alamat ini akan
menggunakan alamat yang sama untuk mendapatkan nilai datanya.
Perubahan nilai di fungsi akan merubah nilai asli di bagian program
yang memanggil fungsi. Pengiriman parameter secara referensi
adalah pengiriman dua arah, yaitu dari fungsi pemanggil ke fungsi
yang dipanggil dan juga sebaliknya. Pengiriman secara acuan tidak
dapat dilakukan untuk suatu ungkapan.
Contoh program :
#include "stdio.h"
#include "conio.h"
nilai (int *x, int *y);
void main ()
{
clrscr ();
int a = 10, b = 5;
printf ("Nilai sebelum pemanggilan fungsi");
printf ("\nNilai a = %i dan nilai b = %i", a,b
nilai (&a,&b); // pemanggilan fungsi
printf ("\n\nNilai setelah pemanggilan fungsi");
printf ("\n\nNilai a = %i dan nilai b = %i", a,b);
getch();
}
nilai (int *x, int *y)
{
*x+=5;
*y+=5;
printf ("\n\nNilai setelah pemanggilan fungsi");
printf("\na = %i dan nilai b = %i",*x, *y);
}
-
85
Tampilan program diatas adalah :
3) Jenis Variabel pada Fungsi
a) Variabel lokal
Variabel lokal adalah variabel yang dideklarasikan di dalam
fungsi dan hanya dikenal oleh fungsi yang bersangkutan. Variabel
lokal biasa juga disebut sebagai variabel otomatis.
Contoh program
b) Variabel global /eksternal
Variabel eksternal adalah variabel yang dideklarasikan di luar
fungsi yang bersifat global yang berarti dapat digunakan bersama
sama tanpa harus dideklarasikan berulang ulang. Pendeklarasian
variabel eksternal diletakkan di luar fungsi main ().
Contoh program :
#include "stdio.h"
#include "conio.h"
void tampil (void);
int i = 25; /* variabel global */
void main()
{ clrscr();
printf("Nilai variabel i dalam fungsi main() adalah %i\n\n", i);
tampil();
i = i * 4; /* nilai i yang dikali 4 adalah 25 (global) bukan 10 */
-
86
printf("\nNilai variabel i dalam fungsi main() sekarang adalah %i\n\n",
i);
getch();
}
void tampil(void)
{ int i = 10; /* variabel lokal */
printf("Nilai variabel i dalam fungsi tampil() adalah %i\n\n", i);
}
Tampilan program diatas adalah :
c) Variabel statis
Variabel statis dapat berupa variabel lokal ataupun variabel
eksternal. Variabel statis ini bersifat :
Jika variabel bersifat lokal maka hanya dikenal oleh fungsi
tempat variabel tersebut dideklarasikan.
Jika variabel statis bersifat eksternal maka variabel dapat
dipergunakan oleh semua fungsi yang terletak pada file yang
sama di tempat variabel statis dideklarasikan.
Jika tidak ada inisialisasi maka secara otomatis akan diberikan
nilai awal nol.
d) Variabel Register [3]
Variabel Register adalah variabel yang nilainya disimpan dalam
resister dan bukan dalam memori RAM. Sifat-sifat variabel register :
-
87
Hanya dapat diterapkan pada variabel lokal yang bertipe int
dan char.
Digunakan untuk mengendalikan proses perulangan (looping).
Proses perulangan akan lebih cepat karena variabel register
memiliki kecepatan yang lebih tinggi dibandingkan variabel
biasa.
Dideklarasikan dengan menambahkan kata register.
Contoh program :
#include stdio.h
#include conio.h
void main()
{ register int x; /* variabel register */
int jumlah;
clrscr();
for(i=1; i
-
88
efisiensi memori dan kecepatan kerja ketika sebuah proses rekursi
dijalankan akan menjadi lebih lambat. Permasalahan yang lebih
sering terjadi adalah proses rekursi yang tidak kunjung berhenti,
hingga mengakibatkan komputer hang.
Contoh program:
#include conio.h
#include stdio.h
long int faktorial(int N); /* prototype fungsi faktorial */
void main()
{ int N;
printf(Berapa factorial ? ); scanf(%i, &N);
printf(Faktorial dari %i = %ld\n, N, faktorial(N));
getch();
}
Long int faktorial(int N) /* definisi fungsi factorial */
{
if(N==0)
return(1);
else
return(N * faktorial(N - 1)); // fungsi faktorial() memanggil fungsi
factorial()
}
Tampilan program diatas adalah :
-
89
3. Latihan
2. Buatlah sebuah program untuk menghitung luar persegi
panjang, luas segitiga dan luas lingkaran. Buatlah pemilihan
perhitungan dengan menggunakan fungsi.
3. Buatlah program untuk menghitung harga sewa peminjaman
buku pada sebuah perpustakaan umum. Terdapat tiga jenis
buku yaitu jenis A, B, dan C. Tarif jenis buku per 3 hari adalah
:
Jenis Buku Harga sewa per 3 hari
A Rp 1500
B Rp 2000
C Rp 2500
a. Jika melebihi waktu peminjaman (3 hari) maka setiap buku
di denda sebesar Rp 500,-.
b. Buatlah program untuk menghitung pembayarannya.
c. Buatlah fungsi untuk menghitung harga sewa.
d. Buatlah fungsi untuk menghitung total pembayaran.
-
90
Daftar Pustaka
[1] Frieyadie. 2005. Panduan Pemrograman C++. Penerbit Andi.
Yogyakarta
[2] Kurniawan Khannedy Eko. 2007. Pemrograman C. Teknik
Informatika. UNICOM.
[3] Sjukani Moh. 2009. Algoritma (Algoritma & Struktur Data 1)
dengan C, C++, dan Java, Teknik Teknik Dasar Pemrograman
Komputer. Edisis 5. Mitra Wacana Media. Jakarta
[4] Solichin Achmad. Pemrograman Bahasa C dengan Turbo C.
www.ilmukomputer.com
[5] Swastika Windra. April 2012. "Dasar Algoritma dan Pemrograman
menggunakan C & Java". Prestasi Pustaka Publisher. Jakarta
-
91
BAB VIII
STRUCT (RECORD)
1. Pendahuluan
a. Deskripsi
Bab ini menjelaskan tentang fungsi penggunaan struct (record) dan
penggunaan struct dalam array. Agar lebih mudah untuk dipahami,
akan diberikan contoh contoh dari penggunaan struct ini.
b. Tujuan pembelajaran
Setelah mengikuti perkuliahan ini, mahasiswa diharapkan mengerti
tentang struct (record) dan dapat mengaplikasikan dalam pembuatan
program.
2. Teori dasar
a. Deklarasi Struct (Record)
Turbo C tidak selalu menyediakan tipe data yang sesuai
dengan tipe data yang diinginkan. Contoh kasus yaitu ketika kita
ingin membuat suatu program mengolah data mahasiswa dimana
data mahasiswa terdiri dari NIM, Nama, NilaiUTS, NilaiUAS,
NilaiQuiz, NilaiAkhir dan Index Prestasinya. Turbo C tidak
menyediakan tipe data untuk data tersebut. Oleh karena itu maka
kita harus membuat suatu tipe data baru yang cocok dengan
keperluan kita. Caranya adalah dengan menggunakan perintah
struct[1].
Deklarasi tipe data baru (struct) untuk data mahasiswa dapat
dilihat sebagai berikut :
struct TMhs
-
92
{
char NIM[11];
char Nama[21];
int NilaiUTS,NilaiUAS,NilaiQuiz;
float NilaiAkhir;
char index;
};
Deklarasi diatas berarti kita telah membuat suatu tipe data
yang bernama TMhs dimana setiap data bertipe TMhs mempunyai
field NIM, Nama, NilaiUTS, NilaiUAS, NilaiQuiz, NilaiAkhir dan index.
Untuk mendeklarasikan sebuah variable yang bertipe TMhs caranya
adalah seperti berikut :
TMhs Mhs1,Mhs2;
Deklarasi tersebut berarti bahwa kita membuat suatu variable
bernama Mhs1 dan Mhs2 dimana tiap variable tersebut mempunyai
field sesuai dengan TMhs.
Contoh program [2]:
#include
#include
#include
struct TMhs
{
char NIM[11];
char Nama[21];
int NilaiUTS,NilaiUAS,NilaiQuiz;
float NilaiAkhir;
char index;
};
main()
{
-
93
TMhs mhs1,mhs2;
printf(Pengisian Data);
printf(NIM : );gets(mhs1.NIM);
printf(NAMA : );gets(mhs1.Nama);
printf(Nilai QUIZ : );scanf(%d,&mhs1.NilaiQuiz);
printf(Nilai UTS : );scanf(%d,&mhs1.NilaiUTS);
printf(Nilai UTAS : );scanf(%d,&mhs1.NilaiUAS);
mhs1.NilaiAkhir=0.2*mhs1.NilaiQuiz+0.3*mhs1.NilaiUTS+0.5*mhs1.Ni
laiUAS;
if(mhs1.NilaiAkhir>=80) mhs1.index=A;else
if(mhs1.NilaiAkhir>=60) mhs1.index=B;else
if(mhs1.NilaiAkhir>=40) mhs1.index=C;else
if(mhs1.NilaiAkhir>=20) mhs1.index=D;else
if(mhs1.NilaiAkhir>=00) mhs1.index=E;
mhs2=mhs1; // mengisikan semua data di mhs1 ke mhs2
printf(Data yang telah dimasukan :);
printf(NIM : %s\n,mhs2.NIM);
printf(NAMA : %s\n,mhs2.Nama);
printf(Nilai QUIZ : %i\n,mhs2.NilaiQuiz);
printf(Nilai UTS : %d\n,mhs2.NilaiUTS);
printf(Nilai UTAS : %d\n,mhs2.NilaiUAS);
printf(Nilai Akhir: %.2f\n,mhs2.NilaiAkhir);
printf(Index : %c\n,mhs2.index);
getch();
}
Tampilan program diatas adalah :
-
94
b. Struct pada Array
Setiap tipe data dapat dibuat dalam bentuk array. Begitu juga
dengan tipe data yang dibuat dengan perintah struct.
Contoh program [3]:
#include
#include #include
#define maks 3 struct TMhs {
char NIM[9]; char Nama[21];
int NilaiUTS,NilaiUAS,NilaiQuis; float NilaiAkhir; char index;
}; main()
{ TMhs mhs[maks]; // array struct int i;
for(i=0;i=80) mhs[i].index='A';else if(mhs[i].NilaiAkhir>=60) mhs[i].index='B';else
if(mhs[i].NilaiAkhir>=40) mhs[i].index='C';else if(mhs[i].NilaiAkhir>=20) mhs[i].index='D';else if(mhs[i].NilaiAkhir>=0) mhs[i].index='E';
}; clrscr();
printf("Data yang telah dimasukan adalah : \n"); printf("----------------------------------------------------------------------\n");
printf("| NIM | NAMA | QUIS | UTS | UAS | N A | INDEX |\n");
-
95
printf("----------------------------------------------------------------------\n");
for(i=0;i
-
96
3. Latihan
1) Buatlah sebuah program untuk Menginput data pegawai dan
besar gaji serta tunjangan dengan menggunakan record!
2) Buatlah program pada nomor 1 dengan menggunakan struct
pada array!
-
97
Daftar Pustaka
[1] Frieyadie. 2005. Panduan Pemrograman C++. Penerbit Andi.
Yogyakarta
[2] Kurniawan Khannedy Eko. 2007. Pemrograman C. Teknik
Informatika. UNICOM.
[3] Sjukani Moh. 2009. Algoritma (Algoritma & Struktur Data 1)
dengan C, C++, dan Java, Teknik Teknik Dasar Pemrograman
Komputer. Edisis 5. Mitra Wacana Media. Jakarta
-
98
BAB IX
POINTER
1. Pendahuluan
a. Deskripsi
Bab ini menyajikan tentang penggunaan pointer. Lebih lanjut
akan dijelaskan tentang operator pointer, operasi dalam pointer,
pointer pada pointer, pointer pada array dan pointer pada string. Dan
pada akhir bab diberikan soal latihan untuk meningkatkan
pemahaman tentang penggunaan pointer.
b. Tujuan pembelajaran
Setelah mengikuti perkuliahan ini mahasiswa diharapkan
mampu memahami dan mengaplikasikan pointer dalam
menyelesaikan sebuah masalah pada bahasa pemrograman.
2. Teori Dasar
Pointer adalah sebuah variabel yang berisi alamat lain. Suatu
pointer digunakan untuk menunjuk ke suatu alamat memori
sehingga alamat dari suatu variabel atau suatu fungsi dapat
diketahui dengan mudah. Dengan adanya pointer maka kita dapat
memanipulasi data yang berada pada alamat tertentu dalam memory.
Terdapat dua jenis operator yang dapat digunakan dalam pointer
yaitu :
a. Operator pointer
1. Operator dereference (&)
Operator dereference & merupakan operator alamat. Pada saat
pendeklarasian variable, user tidak diharuskan menentukan lokasi
sesungguhnya pada memory, hal ini akan dilakukan secara otomatis
-
99
oleh kompiler dan operating system pada saat run-time. Dengan
menggunakan operator & ini, variabel akan menghasilkan alamat
lokasi memori sehingga operator ini biasa disebut dengan address of.
Sebagai contoh, Ani ditempatkan pada memori dengan alamat
0x00112ff55 dan dideklarasikan sbb[1]:
Ani = a;
Anna = Ani; // Anna sama dengan Ani (a)
Rani = &Ani; // Rani sama dengan alamat Ani (0x00112ff55)
Contoh program :
#include
#include
void main ()
{ int x = 50, y, *z;
y = x;
z = &x;
printf ("Nilai x adalah %i",x); // Nilai x = 50
printf ("\nNilai y adalah %i", y); // Nilai y = x
printf ("\nNilai z adalah %i", z); // Nilai z = berisi alamat x
getch ();
}
Tampilan program diatas adalah :
2. Operator reference (*)
Dengan menggunakan operator reference (*) user dapat
mengakses secara langsung nilai yang terdapat didalam variabel yang
berpointer. Hal ini dapat dilakukan dengan menambahkan identifier
-
100
asterisk (*), agar dapat menerjemahkan nilai sebenarnya dari suatu
variabel. Operator ini biasa disebut value pointed by. Dengan
menggunakan operator reference (*) ini akan dihasilkan nilai yang
berada pada suatu alamat memori[1].
Sebagai contoh :
Ani = a
Anna = &Ani// Anna sama dengan Alamat Ilham (0x00112ff55)
Rani = *Ani // Rani sama dengan nilai Ani (a)
Contoh program :
#include
#include
void main ()
{ int x = 50, y, *z;
z = &x;
y = *z;
printf ("Nilai x adalah %i",x);
printf ("\nNilai y adalah %i", y);
printf ("\nNilai z adalah %i", z);
getch ();}
Tampilan program diatas adalah :
-
101
b. Operasi Pointer
1) Operasi penugasan[4]
Nilai suatu variabel pointer dapat disalin ke variabel pointer
lainnya.
Contoh program :
#include "stdio.h"
#include "conio.h"
void main()
{ float *x1, *x2, y;
clrscr();
y = 13.45;
x1 = &y; /* Alamat dari y disalin ke variabel x1 */
x2 = x1; /* Isi variabel x1 disalin ke variabel x2 */
printf("Nilai variabel y = %.2f ada di alamat %p\n", y, x1);
printf("Nilai variabel y = %.2f ada di alamat %p\n", y, x2);
getch();
}
Tampilan program diatas adalah :
2) Operasi aritmatika [4]
Operasi aritmatika yang bisa dilakukan oleh pointer adalah
hanya operasi penjumlahan dan pengurangan dan hanya data integer
yang dapat digunakan. Operasi penjumlahan dan pengurangan akan
menunjukkan alamat data berikutnya.
#include stdio.h #include conio.h void main() { int nilai[3], *penunjuk;
-
102
clrscr(); nilai[0] = 125;
nilai[1] = 345; nilai[2] = 750;
penunjuk = &nilai[0]; printf(Nilai %i ada di alamat memori %p\n, *penunjuk, penunjuk); printf(Nilai %i ada di alamat memori %p\n, *(penunjuk+1),
penunjuk+1); printf(Nilai %i ada di alamat memori %p\n, *(penunjuk+2),
penunjuk+2); getch();
}
Tampilan program diatas adalah :
3) Operasi logika [4]
Operasi logika juga dapat digunakan dalam sebuah pointer.
Contoh program:
#include stdio.h
#include conio.h
void main()
{ int a = 100, b = 2