Array (LARIK) pada C++
Apakah Array?
Contoh Kasus : Suatu universitas ingin mendata nilai mahasiswa di sutau kelas dengan banyak mahasiswa 10 orang. Dari semua nilai yang telah dimasukan tersebut ingin ditampilkan kembali dan dicari nilai rata-ratanya.
Untuk membuat program dengan ketentuan seperti diatas, ada beberapa cara untuk memecahkannya :
Program 1 : Tanpa menggunakan array
#include <stdio.h>
#include <conio.h>
void main()
{
int n1,n2,n3,n4,n5,n6,n7,n8,n9,n10;
float total, ratarata;
// Pembacaan semua nilai dari keyboard
printf(“Pemasukan data nilai mahasiswa : \n”);
printf(“Nilai mahasiswa Ke-1 : “);scanf(“%d”,&n1);
printf(“Nilai mahasiswa Ke-2 : “);scanf(“%d”,&n2);
/* diulang dari nilai ke-3 sampai terakhir */
printf(“Nilai mahasiswa Ke-10: “);scanf(“%d”,&n10;
// perhitungan total dan rata-rata
total=n1+n2+n3+n4+n5+n6+n7+n8+n9+n10;
ratarata=total/10;
// Menampilkan data nilai yang telah dimasukan
printf(“Nilai mahasiswa Ke-1 : %3d\n”,n1);
printf(“Nilai mahasiswa Ke-2: %3d\n”,n2);
/* diulang dari nilai ke-3 sampai terakhir */
printf(“Nilai mahasiswa Ke-10 : %3d\n”,n10);
// Menampilkan nilai rata-rata
printf(“Rata-rata kelas : %6.2f\n”,ratarata);
getch();
}
|
Dengan menggunakan cara diatas, sebenarnya programnya telah mencukupi, tetapi kalau nilai yang akan diolah menjadi lebih banyak, maka pendeklarasian variabel n harus dilakukan sebanyak yang diperlukan. Jadi kalau data yang akan diolah sebanyak 100 buah, maka pendeklarasian dan pembacaan datanya pun dilakukan sebanyak 100 kali. Dan perhitungannya juga. Rumus perhitungan total pun menjadi berubah. Pemrograman di atas sebenarnya sederhana tetapi bisa sangat merepotkan. Oleh karena
Array 1 dimensi
Solusi kedua dari kasus diatas adalah dengan menggunakan array. Array adalah suatu variabel yang dapat menampung lebih dari satu data dengan tipe data yang sama dan dibedakan berdasarkan nomor indexnya. Dalam bahasa C, array selalu dimulai dari index ke-0 (nol).
Contoh deklarasi array :
int N[10];
Deklarasi diatas berarti pendeklarasian variabel array bernama N yang mempunyai elemen sebanyak 10 buah dengan index dimulai dengan nomor 0 sampai 9. Dalam memori deklarasi tersebut dapat digambarkan seperti berikut :
N[0] | N[1] | N[2] | N[3] | N[4] | N5] | N[6] | N[7] | N[8] | N[9] |
Untuk memasukan suaut elemen data dalam array, perintah yang dilakukan ditulis seperti pembacaan data variabel biasa hanya perbedaannya harus ditulis untuk index ke berapa.
Contoh untuk pengisian data ke elemen array :
scanf(“%d”, &N[2]);
Perintah diatas berarti pembacaan data dari keyboard untuk data bertipe integer (%d) dan dimasukan ke variabel array index ke-2 (urutan ke-3).
Contoh-contoh lain pengisian ke suatu elemen array :
I=5; // variabel I diisi dengan nilai 5
N[I] = 7; // data ke-I dari variabel N diisi dengan nilai 7
scanf(“%d”,&N[N[I]]);
// pembacaan data untuk variabel N pada index ke-N[I] (7)
Karena nomor elmeen dari array bisa diisi dengan variabel, berarti kita bisa melakukan perulangan (loop) untuk melakukan pembacaan data dari elemen pertama sampai elemen terakhir.
Untuk lebih jelas, lihat program pada halaman berikutnya.
#include <stdio.h>
#include <conio.h>
void main()
{
int Nilai[10];
int index;
float total,ratarata;
// Pembacaan data dari keyboard
printf(“Pembacaan data nilai \n”);
for (index=0;index<10;index++)
{
printf(“Nilai mahasiswa ke-%d = “,index+1);
scanf(“%d”,&Nilai[index]);
}
// Perhitungan total dan rata-rata
total=0;
for (index=0;index<10;index++)
total=total+Nilai[index];// atau total+=Nilai[index];
ratarata=total/10;
// Menampilkan data yang telah dimasukan dan rata-rata.
for (index=0;index<10;index++)
printf(“Nilai mahasiswa ke-%d = %3d\n“,index+1,Nilai[index]);
printf(“Rata-rata = %6.2f\n”,ratarata);
getch();
}
|
Array 2 Dimensi
Array 2 dimensi biasanya digunakan untuk menyimpan data dalam bentuk matrik. Index Array 2 dimensi terdiri dari index baris dan kolom.
Pendeklarasian array 2 dimensi adalah :
Tipedata namaarray[b][k];
Dimana : b adalahbanyak baris dan k adalah banyak kolom.
Contoh
int matrik[5][5];
Perintah di atas akan membuat sebuah array 2 dimensi yang kalau digambarkan adalah sebagai berikut :
index
|
0
|
1
|
2
|
3
|
4
|
0
|
0,0
|
0,1
|
0,2
|
0,3
|
0,4
|
1
|
1,0
|
1,1
|
1,2
|
1,3
|
1,4
|
2
|
2,0
|
2,1
|
2,2
|
2,3
|
2,4
|
3
|
3,0
|
3,1
|
3,2
|
3,3
|
3,4
|
4
|
4,0
|
4,1
|
4,2
|
4,3
|
3,3
|
Cara pengaksesan elemen array 2 dimensi dapat dilihat pada contoh di bawah ini :
mat[0][0]=7;
printf(“Masukan data : “);scanf(“%d”,&mat[2][1]);
printf(“Data yang dimasukan : %d\n”,mat[2][1]);
Keterangan :
– Baris pertama adalah mengisikan nilai 7 ke array mat pada baris 0 kolom 0.
– Baris kedua adalah perintah untuk membaca data elemen matrik pada baris 2 kolom ke 1.
– Baris ketiga adalah perintah untuk menampilkan data elemen matrik/array pada baris 2 dan kolom ke-1.
Pembacaan elemen-elemen array 2 dimensi melibatkan 2 perulangan. 1 perulangan baris dan 1 perulangan kolom. Untuk lebih jelas perhatikan program di bawah ini.
Contoh Program Array 2 Dimensi :
#include <stdio.h>
#include <conio.h>
#define maks 3
main()
{
int mat[maks][maks];
int b,k;
printf(“Pengisian Array : \n”);
for (b=0;b<maks;b++)
{
for (k=0;k<maks;k++)
{
printf(“Matrik [%d,%d] : “,b,k);
scanf(“%d”,&mat[b][k]);
}
}
printf(“Matrik yang telah dimasukan :\n”)
for (b=0;b<maks;b++)
{
for (k=0;k<maks;k++)
{
printf(“%6d”,mat[b][k]);
}
printf(“\n”);
}
getch();
return 0;
}
|
Contoh Program Operasi pertambahan 2 matrik.
#include <stdio.h>
#include <conio.h>
#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<maks;b++)
{
for (k=0;k<maks;k++)
{
printf(“Matrik [%d,%d] : “,b,k);
scanf(“%d”,&mat1[b][k]);
}
}
printf(“Pengisian Matrik 2 : \n”);
for (b=0;b<maks;b++)
{
for (k=0;k<maks;k++)
{
printf(“Matrik [%d,%d] : “,b,k);
scanf(“%d”,&mat2[b][k]);
}
}
// awal operasi pertambahan matrik
for (b=0;b<maks;b++)
for (k=0;k<maks;k++)
mathasil[b][k]=mat1[b][k]+mat2[b][k];
// akhir operasi perhitungan
printf(“Matrik 1 :\n”)
for (b=0;b<maks;b++)
{
for (k=0;k<maks;k++)
{
printf(“%6d”,mat1[b][k]);
}
printf(“\n”);
}
printf(“Matrik 2 :\n”)
for (b=0;b<maks;b++)
{
for (k=0;k<maks;k++)
{
printf(“%6d”,mat2[b][k]);
}
printf(“\n”);
}
printf(“Matrik Hasil :\n”)
for (b=0;b<maks;b++)
{
for (k=0;k<maks;k++)
{
printf(“%6d”,mathasil[b][k]);
}
printf(“\n”);
}
getch();
return 0;
}
|
Pendahuluan
Fungsi merupakan blok dari kode program yang dirancang untuk melaksanakan tugas khusus. Fungsi banyak dilibatkan dalam pembuatan suatu program, dengan tujuan :
Program menjadi lebih tersetuktur, sehingga mudah dipahami dan mudah dikembangkan
Dapat mengurangi pengulangan kode.
Bentuk umum suatu fungsi adalah sebagai berikut :
Tipedata namafungsi(daftarparameter)
{
/*Badan Fungsi*/
return nilaireturn; /* untuk tipe data bukan void */
}
|
Fungsi Bertipe void
Fungsi bertipe void, kalau dalam program pascal atau delphi disebut sebagai procedure. Fungsi ini tidak mempunyai nilai kembalian, jadi fungsi bertipe ini hanya merupakan sekumpulan kode program yang bekerja sesuai dengan parameter yang diberikan.
Contoh fungsi bertipe void :
void TampilNama()
{
textcolor(RED);
cprintf(“Nama Saya : Tulis Nama Ada\n\r”);
cprintf(“Alamat : Jl. Can Di Aspal No. 70\n\r”);
cprintf(“Telepon : 022-2513709\n\r”);
}
main()
{
TampilNama();
TampilNama();
TampilNama();
}
|
Dalam program di atas, ada sebuah fungsi yang bernama TampilNama(), yang berguna untuk menampilkan data Nama, Alamat, dan Telepon. Dalam program utama (fungsi main() ), cara pemanggilan fungsi tersebut adalah dengan menulis nama fungsinya (dalam hal ini TampilNama() ). Jadi program di atas akan menampilkan isi fungsi TampilNama() sebanyak 3 kali.
Fungsi di atas merupakan fungsi yang dipanggil tanpa memakai parameter. Untuk melihat contoh fungsi berparameter, perhatikan program di bawah ini.
void Kotak(int X1,int Y1, int X2,int Y2,int Bingkai,int Latar)
{
int i;
textcolor(Bingkai);
textbackground(Latar);
gotoxy(X1,Y1);cprintf(“é”); /* alt+218 */
gotoxy(X1,Y2);cprintf(“%c”,192);
gotoxy(X2,Y1);cprintf(“%c”,191);
gotoxy(X2,Y2);cprintf(“%c”,217);
for (i=X1+1;i<=X2-1;i++)
{
gotoxy(i,Y1);cprintf(“%c”,196);
gotoxy(i,Y2);cprintf(“%c”,196);
}
for(i=Y1+1;i<=Y2-1;i++)
{
gotoxy(X1,i);cprintf(“%c”,179);
gotoxy(X2,i);cprintf(“%c”,179);
}
}
main()
{
Kotak(1,1,80,24,WHITE,BLUE);// Memanggil Procedur Kotak
Kotak(2,2,15,23,WHITE,RED);
getch();
return 0;
}
|
Void Kotak merupakan sebuah fungsi yang akan membuat suatu kotak di layar sesuai dengan koordinat yang diberikan di bagian parameter. Koordinat tersebut adalah koordinat kiri atas (X1,Y1), dan koordinat titik kanan bawah (X2,Y2). Selain itu fungsi ini membutuhkan parameter Bingkai yang berguna untuk menentukan warna bingkai kotak, dan juga parameter Latar yang berguna untuk menentukan warna latar belakang kotak yang dibuat.
Pemanggilan Kotak(1,1,80,24,WHITE,BLUE) berguna untuk membuat kotak dengan posisi kiri atas pada koordinat (1,1) dan posisi kanan bawah pada koordinat (80,24) dengan warna bingkai kotak berwarna putih dengan latar belakang kotak berwarna biru.
Fungsi bertipe data
Dalam dunia matematika, kita mengenal fungsi. Contoh : F(X)=X2+3X+5, yang berarti kita mempunyai sebuah fungsi bernama F yang membutuhkan parameter X sebagai data yang akan dihitung dengan persamaan X2+3X+5 sehingga kalau kita menulis F(5), maka nilai dari fungsi tersebut adalah 52 + 3.5+ 5 = 45.
Bentuk umum dari Function ini dalam bahasa Pascal adalah :
typedata NamaFungsi(daftar parameter)
{
Perintah;
Perintah;
Return NilaiHasilUntukFungsi;
}
Contoh 1 : Fungsi matematik untuk menghitung persamaan F(X) = X2+3X+5;
float F(float X)
{
return X*X+3*X+5;//Fungsi diisi hasil dari perhitungan X2+3*X+5
}
|
Contoh 2 : Fungsi untuk mencari Faktorial dari suatu nilai
float Faktorial(int N)
{
int I;
float Hasil;
Hasil:=1;
for(I=2;I<=N;I++)
Hasil=Hasil * I;
return Hasil;
}
|
Contoh 3: Fungsi untuk mencari Kombinasi dengan rumus :
Kombinasi (X,Y) =
Float Kombinasi(int X, int Y)
{
return Faktorial(Y) / (Faktorial(X)*Faktorial(Y-X));
}
|
Pendahuluan
Untuk memahami mengenai fungsi perulangan, coba lihatlah kasus sebagai berikut :
Buatlah suatu program untuk menampilkan angka dari 1 sampai dengan 5. Maka untuk kasus tersebut program yang buat adalah sebagai berikut :
#include <stdio.h>
#include <conio.h>
main()
{
}
|
Program di atas telah memenuhi yang diinginkan, tetapi jika bilangan yang akan ditampilkan misalkan dari 1 sampai 1000, maka sangatlah merepotkan jika harus menulis angka 1 sampai dengan 1000 secara manual. Oleh karena itu, di semua bahasa pemrograman terdapat suatu mekanisme yang bernama loop (perulangan).
Ada beberapa jenis perulangan yang dapat dilakukan oleh bahasa pemrograman C, yaitu :
For
While
Do While
Label
Perulangan Dengan Perintah for
Perulangan for mempunyai bentuk umum seperti berikut :
for(inisialisasi counter; kondisi perulangan; statement)
{
statement;
}
|
Contoh berikut akan menampilkan angka 1 sampai 100, kemudian menampilkan angka 10 turun sampai 0 dengan perubahan nilainya adalah setengah (0.5).
#include <stdio.h>
#include <conio.h>
main()
{
}
|
Dalam perulangan yang menggunakan for, perulangan dilakukan hanya jika kondisi perulangannya mempunyai nilai true (tidak 0).
Perulangan Dengan Perintah while
Bentuk umum dari while adalah seperti berikut :
while (kondisi)
{
perintah;
perintah;
}
Cara kerja dari perulangan while mirip dengan perulangan for. Tetapi dalam perulangan while ini, tidak ada jaminan bahwa program akan masuk ke dalam perulangan. Ini dikarenakan pemeriksaan kondisinya dilakukan di awal perulangan.
#include <stdio.h>
#include <conio.h>
main()
{
}
|
Perulangan Dengan Perintah do while
Bentuk umum dari do while adalah seperti berikut :
do
{
perintah;
perintah;
} while (kondisi);
Cara kerja dari perulangan do while mirip dengan perulangan while. Tetapi dalam perulangan do while ini, pengecekan kondisi dilakukan di akhir loop. Sehingga program pasti dapat masuk ke perulangan ini minimal 1 kali.
#include <stdio.h>
#include <conio.h>
main()
{
}
|
Perulangan Dengan Menggunakan label
Perulangan dengan menggunakan teknik label, merupakan teknik perulangan yang paling awal dikenal, biasanya ada dalam pemrograman berbahasa assembly. Tetapi perulangan seperti ini tidak dianjurkan untuk dipakai karena bisa membuat struktur program menjadi acak-acakan.
Untuk lebih jelas, perhatikan contoh program di bawah ini.
#include <stdio.h>
#include <conio.h>
main()
{
int i;
i=0;
awal:
i=i+1;
printf(“%i\n”,i);
if(i<10)
goto awal;
else
goto akhir;
printf(“Perintah ini tak akan dieksekusi\n”);
printf(“Perintah ini juga tak akan dieksekusi\n”);
akhir:
getch();
return 0;
}
|
Program di atas akan menampilkan angka 1 sampai 10. Perhatikan perintah di bawah ini :
printf(“Perintah ini tak akan dieksekusi\n”);
printf(“Perintah ini juga tak akan dieksekusi\n”);
Perintah tersebut tidak akan pernah dieksekusi, karena ketika program telah mencapai nilai 10 maka akan melewatkan perintah tersebut dan langsung loncat (goto) ke bagian akhir yang ditandai dengan perintah akhir:.
Percabangan pada C++
Statement if – else
Bentuk dasar perintah if – else adalah sebagai berikut :
if (expression)
Statement1;
else
Statement2;
StatementBerikutnya;
|
Jika ketika dieksekusi ekspresi menghasilkan nilai true, maka statement1 akan dieksekusi danstatement2 tidak akan dikerjakan dan kemudian program akan mengeksekusi statementberikutnya, dan jika ekspresi tersebut bernilai false maka statement1 tidak akan dieksekusi dan statement2 akan dieksekusi, dan dilanjutkan dengan mengeksekusi statementberikutnya.
Operator-operator yang biasa digunakan dalam operasi logika, dapat dilihat di tabel di bawah ini.
Operator
|
Contoh
|
Arti
|
==
| A==B | Apakah Isi Variabel A sama dengan Isi Variabel B |
!=
| A!=B | Apakah Isi Variabel A Tidak Sama Dengan Isi Variabel B |
>
| A>B | Apakah Isi Variabel A lebih besar dari Isi Variabel B |
<
| A<B | Apakah Isi Variabel A lebih kecil dari Isi Variabel B |
>=
| A>=B | Apakah Isi Variabel A lebih besar atau sama dengan Isi Variabel B |
<=
| A<=B | Apakah Isi Variabel A lebih kecil atau sama dengan Isi Variabel B |
&&
| (A<=100)
&&(A>=80)
| Apakah A lebih kecil atau sama dengan dari 100 dan A lebih besar atau sama dengan 80 |
||
| (A>100)||
(A<0)
| Apakah A lebih besar dari 100 atau A lebih kecil dari 0 |
!
| !(A==B) | Apakah A Tidak Sama dengan B |
Untuk lebih jelas, perhatikan perintah berikut :
#include <stdio.h>
#include <conio.h>
main()
{
int Nilai;
printf(“Nilai : “);scanf(“%i”,&Nilai);
if(Nilai>=50)
printf(“Selamat Anda Lulus.”);
else
printf(“Maaf. Anda Tidak Lulus.”);
getch();
return 0;
}
|
Perintah di atas hanya mempunyai 2 kemungkinan yaitu keterangan “Selamat Anda Lulus” jika nilai lebih besar dari atau sama dengan 50 dan keterangan “Maaf. Anda Tidak Lulus”, ketika nilai lebih kecil dari 50.
Jika perintah yang akan dieksekusi ketika kondisi tercapai lebih dari 1 perintah, maka perintah-perintah tersebut harus diblok dengan tanda kurawal {}.
Perhatikan program di bawah ini yang merupakan perubahan dari program di atas.
#include <stdio.h>
#include <conio.h>
main()
{
int Nilai;
printf(“Nilai : “);scanf(“%i”,&Nilai);
if(Nilai>=50)
{
printf(“Anda Hebat!\n”);
printf(“Selamat Anda Lulus.”);
}
else
{
printf(“Maaf. Anda Tidak Lulus.”);
printf(“Perbaiki semester depan yah!.”);
}
getch();
return 0;
}
|
Perhatikan juga program di bawah ini :
#include <stdio.h>
#include <conio.h>
main()
{
int a,b;
printf(“Masukan A : “);scanf(“%i”,&a);
printf(“Masukan B : “);scanf(“%i”,&b);
if(a==b)
printf(“Isi Variabel A Sama Dengan B”);
else
if(a>b)
printf(“Isi Variabel A lebih besar dari B”);
else
if(a<b)
printf(“Isi Variabel A lebih kecil dari B”);
getch();
return 0;
}
|
Program di atas akan meminta anda untuk memasukan nilai variabel A dan B, kemudian program akan memeriksa apakah variabel A samadengan B, atau A lebih besar dari B, dan A lebih kecil dari B.
Contoh Kasus :
Di sebuah universitas penilaian yang dipakai adalah :
NilaiAkhir=20%*tugas+30%*uts+50%*uas
Nilai Akhir
|
Index
|
>=80
|
A
|
>=68
|
B
|
>=56
|
C
|
>=45
|
D
|
>=0
|
E
|
Diluar nilai di atas, maka index adalah X (index tidak diketahui).
Data yang diinputkan adalah : tugas, uts, uas.
#include <stdio.h>
#include <conio.h>
main()
{
int tugas,uts,uas;
float nilaiakhir;
char index;
printf(“Nilai Tugas : “);scanf(“%i”,&tugas);
printf(“Nilai UTS : “);scanf(“%i”,&uts);
printf(“Nilai UAS : “);scanf(“%i”,&uas);
nilaiakhir=0.2*tugas+0.3*uts+0.5*uas;
printf(“Nilai Akhir : %f\n”,nilaiakhir);
if(nilaiakhir>=80)
index=’A';
else
if(nilaiakhir>=68)
index=’B';
else
if(nilaiakhir>=56)
index=’C';
else
if(nilaiakhir>=45)
index=’D';
else
if(nilaiakhir>=0)
index=’E';
else
index=’X';
printf(“Index : %c\n”,index);
getch();
return 0;
}
|
Perintah switch – case – default
Selain if-else, perintah yang digunakan untuk percabangan adalah switch – case. Bentuk dasar dari perintah tersebut adalah :
switch(ekspresi)
{
case kondisi1:perintah1;break;
case kondisi2:perintah2:break;
default : perintah3;
}
|
Cara kerja perintah di atas adalah : “Jika ekspresi sama dengan kondisi1, maka perintah1 akan dieksekusi dan kemudian keluar dari switch, dan jika ekspresi sama dengan kondisi2 maka perintah 2 yang akan dieksekusi dan kemudian keluar dari switch, dan jika tidak 1 kondisi pun yang sama dengan ekspresi maka perintah3 (perintah default) yang akan dieksekusi. Perintah default kalau tidak diperlukan bisa dihilangkan.
Untuk lebih jelas, perhatikan perintah di bawah ini.
switch (index)
{
case ‘A':printf(“Keterangan : Bagus Sekali\n”);break;
case ‘B':printf(“Keterangan : Bagus\n”);break;
case ‘C':printf(“Keterangan : Cukup\n”);break;
case ‘D':printf(“Keterangan : Kurang\n”);break;
case ‘E':printf(“Keterangan : Kurang Sekali\n”);break;
default :printf(“Keterangan : Index Tak Diketahui\n”);
}
|
Keterangan program di atas adalah jika index=’A’ maka keterangan Bagus Sekali, jika index=’B’ maka keterangan Bagus, jika index=’C’ maka keterangan Cukup, jika index=’D’ maka keterangan Kurang, jika index=’E’ maka keterangan Kurang Sekali, dan jika index bukan A – E, maka keterangan adalah Index Tidak Diketahui.
Perintah if else dengan banyak kondisi
Jika kondisi yang harus diperiksa lebih dari 1 kondisi, maka hanya if-else lah yang bisa dipakai. Operator-operator logika yang dipakai adalah operator && (and), dan operator || (or).
Untuk lebih jelas, perhatikan perintah di bawah ini:
if((index==’A’)||(index==’B’)||(index==’C’))
printf(“Selamat Anda Lulus”);
else
if((index==’D’)||(index==’E’))
printf(“Anda Tidak Lulus. Lebih giat lagi belajar!”);
|
Perintah di atas akan menampilkan string “Selamat Anda Lulus” ketika index berisi A, B atau C, dan akan menampilkan keterangan “Anda Tidak Lulus. Lebih giat lagi belajar!” ketika index berisi D atau E.
Untuk lebih jelas, buatlah program untuk mengatasi kasus di bawah ini.
Di sebuah perusahaan bus, tabel harga dapat dilihat dalam tabel di bawah ini.
KELAS
| ||||
EKSEKUTIF(1)
|
BISNIS(2)
|
EKONOMI(3)
| ||
TUJUAN
| JAKARTA(1) |
70000
|
40000
|
10000
|
YOGYA(2) |
80000
|
50000
|
20000
| |
SURABAYA(3) |
90000
|
60000
|
30000
|
Karena sekarang masa promosi, maka khusus untuk surabaya-eksekutif dan yogya-ekonomi mendapatkan diskon sebesar 10%.
Buatlah program dengan data yang dimasukan adalah jenis kelas, tujuan dan banyak tiket yang dibeli. Data yang ingin ditampilkan adalah harga tiket dan total tiket, diskon dan besar pembayaran.
Contoh :
Pilih Jurusan :
1. Jakarta
2. Yogya
3. Surabaya
Jurusan yang anda pilih : 2 [input]
Pilih Kelas :
1. Eksekutif
2. Bisnis
3. Ekonomi
Kelas yang anda pilih : 3 [input]
Banyak Tiket : 5 [input]
Harga Tiket : Rp. 20000 [output]
Total Tiket : Rp. 100000 [output]
Diskon : Rp. 10000 [output]
Bayar : Rp. 90000 [output]
|
Program untuk kasus di atas :
#include <stdio.h>
#include <conio.h>
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)
{
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;
}
|
Input dan Output Data
Pemasukan (Input) Data
Umumnya suatu program mempunyai proses pemasukan data. Dalam program berbahasa C, pemasukan data dapat dilakukan dengan perintah scanf. Fungsi scanf merupakan fungsi yang dapat digunakan untuk memasukan berbagai jenis data, tergantung dengan format penentunya.
Format-format penentu tipe data yang umum dipakai adalah :
Format
|
Kegunaan
|
%c
| Digunakan untuk pemasukan data bertipe char |
%i atau %d
| Digunakan untuk pemasukan data bertipe int, char. |
%u
| Digunakan untuk pemasukan data berupa unsigned int atau unsigned char. |
%f
| Digunakan untuk pemasukan data berupa bilangan pecahan (float) |
%o
| Digunakan untuk pemasukan data angka berbasis oktal |
%x
| Digunakan untuk pemasukan data angka berbasis hexadesimal |
%s
| Digunakan untuk pemasukan data berupa string. |
Bentuk umum penggunaan fungsi scanf adalah
scanf(“format”,&namavariabel);
Contoh :
int i,jam,menit,detik;
unsigned int j;
float f;
char nama[60];
scanf(“%i”,&i);
scanf(“%u”,&j);
scanf(“%f”,&f);
scanf(“%i %i %i”,&jam,&menit,&detik);
scanf(“%s”,nama);
|
Fungsi scanf() kurang begitu bagus jika dipakai untuk pembacaan string. Karena data yang tersimpan adalah hanya sampai menemukan spasi, maksudnya jika kita mengisikan 2 buah kata dengan pemisah spasi, maka data yang masuk ke variabel tersebut hanyalah kata yang pertama.
Oleh karena itu, pembacaan data bertipe string biasanya menggunakan perintah gets() yang bentuk umumnya adalah :
gets(namavariabel);
Contoh :
gets(nama);
gets(alamat);
Untuk pembacaan data bertipe char, selain dengan menggunakan scanf() dengan format %c, bisa juga dengan menggunakan fungsi getch() atau getche(). Perbedaan dari getch() dan getche() adalah getch() digunakan untuk membaca data bertipe char tanpa menampilkannya di layar, dan getche() digunakan untuk membaca data bertipe char dengan menampilkan data karakternya di layar.
Contoh :
#include <stdio.h>
#include <conio.h>
main()
{
char a,b;
printf(“Masukan Huruf pertama : “);
a=getch();
printf(“Masukan Huruf kedua : “);
b=getche();
printf(“Data yang dimasukan adalah %c dan %d\n”,a,b);
getch();
return 0;
}
|
Pengeluaran (Output) Data
Untuk output data, perintah yang bisa dipakai adalah printf(). Untuk menampilkan data dengan fungsi printf(), kita harus mengatur format tampilannya, dengan format-format penentu. Untuk lebih jelas perhatikan program di bawah ini.
#include <stdio.h>
#include <conio.h>
main()
{
int a=25000;
unsigned int b=50000;
float c=12345.678;
char nama[50]=”Universitas Islam Negeri”;
char alamat[10]=”Malang”;
clrscr();
printf(“Penampilan data tanpa di format\n”);
printf(“Nilai a : %d\n”,a);
printf(“Nilai b : %u\n”,b);
printf(“Nilai c : %f\n”,c);
printf(“String : %s %s\n”,nama,alamat);//rata kanan
printf(“Penampilan data setelah di format\n”);
printf(“Nilai a : %8d\n”,a);
printf(“Nilai b : %8u\n”,b);
printf(“Nilai c : %11.2f\n”,c);
printf(“String 1: %40s %10s\n”,nama,alamat);//rata kanan
printf(“String 2: %-40s %-10s\n”,nama,alamat);//rata kanan
getch();
return 0;
}
|
Program di atas akan menampilkan hasil eksekusi seperti di bawah ini :
Penampilan data tanpa di format
Nilai a : 25000
Nilai b : 50000
Nilai c : 12345.677734
String : Universitas Islam Negeri
Penampilan data setelah di format
Nilai a : 25000
Nilai b : 50000
Nilai c : 12345.68
String 1: Universitas Islam Negeri Malang
String 2: Universitas Islam Negeri Malang
|
Contoh Program
Contoh Kasus :
Di suatu perusahaan, data penggajian dihitung dengan ketentuan sebagai berikut :
Gaji Pokok : Rp. 5000000
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.
Program ke-1 (tanpa memformat tampilan data).
#include <stdio.h>
#include <conio.h>
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. %li\n”,gajipokok);
printf(“Lama Lembur : %i jam\n”,jamlembur);
printf(“Total Gaji Lembur : Rp. %li\n”,totalgajilembur);
printf(“Gaji Kotor : Rp. %li\n”,gajikotor);
printf(“Pajak (10%%) : Rp. %f\n”,pajak);
printf(“Gaji Bersih : Rp. %f\n”,gajibersih);
getch();
return 0;
}
|
Program di atas akan menghasilkan tampilan program seperti di bawah ini :
Hasil Perhitungan
Nama Pegawai : Shelly Septiani
Gaji Pokok : Rp. 500000
Lama Lembur : 50 jam
Total Gaji Lembur : Rp. 250000
Gaji Kotor : Rp. 750000
Pajak (10%) : Rp. 75000.000000
Gaji Bersih : Rp. 675000.000000
|
Program Ke-2 (dengan memformat tampilan datanya).
#include <stdio.h>
#include <conio.h>
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();
return 0;
}
|
Tampilan data ketika program di atas di eksekusi.
Hasil Perhitungan
Nama Pegawai : Shelly Septiani
Gaji Pokok : Rp. 500000
Lama Lembur : 50 jam
Total Gaji Lembur : Rp. 250000
Gaji Kotor : Rp. 750000
Pajak (10%) : Rp. 75000
Gaji Bersih : Rp. 675000
|
Tipe Data (Operator-Operator Manipulasi Bit)
Untuk keperluan memanipulasi data dalam bentuk bit, Turbo C menyediakan operator-operator berikut :
Operator
|
Operasi
|
<<
| Geser bit ke kiri |
>>
| Geser bit ke kanan |
&
| Dan (AND) |
|
| Atau (OR) |
^
| XOR |
~
| NOT (Komplemen) |
Seluruh operator manipulasi bit hanya dikenakan pada operand / variabel / angka yang bertipe bilangan bulat (int, char, long).
Prioritas eksekusinya adalah
TertinggiTerendah | ~<< >>
&
^
|
|
Tabel Kebenaran dari tiap operator manipulasi bit adalah :
A
|
B
|
~A
|
A & B
|
A | B
|
A ^ B
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
0
|
1
|
1
|
0
|
Contoh :
#include <stdio.h>#include <conio.h>
main()
{
unsigned int x,y,and,or,not,xor;
x=78;// 41h
y=520;// 208h
and=x & y;
or=x | y;
xor=x ^ y;
not = ~y;
clrscr();
printf(“x : %6u : %4Xh\n”,x,x);
printf(“y : %6u : %4Xh\n”,y,y);
printf(“————————–\n”);
printf(“x & y : %6u : %4Xh\n”,and,and);
printf(“x | y : %6u : %4Xh\n”,or,or);
printf(“x ^ y : %6u : %4Xh\n”,xor,xor);
printf(” ~y : %6u : %4Xh\n”,not,not);
getch();
return 0;
}
|
Jika di-Run akan menghasilkan :
x : 78 : 4Ehy : 520 : 208h
————————–
x & y : 8 : 8h
x | y : 590 : 24Eh
x ^ y : 582 : 246h
~y : 65015 : FDF7h
|
Pembuktian :
x : 78 : 4eh : 00000000 01001110y : 520 : 208h : 00000010 00001000 |
x & y : x : 00000000 01001110 y : 00000010 00001000
—————– & (and)
x & y : 00000000 00001000 = 8h = 8 (terbukti)
|
x | y : x : 00000000 01001110 y : 00000010 00001000
—————– | (or)
x | y : 00000010 01001110 = 24eh = 590 (terbukti)
|
x ^ y : x : 00000000 01001110 y : 00000010 00001000
—————– ^ (xor)
x ^ y : 00000010 01000110 = 246h = 582 (terbukti)
|
~y : y : 00000010 00001000 —————– ~ (komplemen)
~y : 11111101 11110111 = FDF7h = 65015 (terbukti)
|
Operator-operator pergeseran bit, berguna untuk menggeserkan bit yang ada dalam suatu variabel.
Contoh :
#include <stdio.h>#include <conio.h>
main()
{
unsigned int angka,x,y;
angka=50;
x=angka << 2;
y=angka >> 2;
clrscr();
printf(“Angka : %5u : %xh\n”,angka,angka);
printf(“x=angka << 2 : %5u : %xh\n”,x,x);
printf(“y=angka >> 2 : %5u : %xh\n”,y,y);
getch();
return 0;
}
|
Jika di-Run akan menghasilkan :
Angka : 50 : 32hx=angka << 2 : 200 : c8h
x=angka >> 2 : 12 : ch
|
Pembuktian :
Angka : 50 : 00000000 00110010x=angka << 2 : 00000000 11001000 = 128 + 64 + 8 = 200 : c8h
x=angka >> 2 : 00000000 00001100 = 8 + 4 = 12 : ch
|
Aturan-Aturan Perhitungan
Perhatikan perintah berikut :
float a;a= 9/5; |
Jika anda mengharapkan bahwa nilai yang didapat adalah 1.8, maka anda akan kecewa, karena angka yang didapat adalah 1. Kenapa ini terjadi?.
Ada aturan-aturan pengkonversian data yang berlaku dalam suatu operasi perhitungan, diantaranya :
1. Jika suatu bilangan bulat dioperasikan dengan bilangan bulat, maka nilai yang didapat adalah bilangan bulat pula.
2. Operasi perhitungan dilakukan berdasarkan tipe bilangan yang terbesarnya. Jadi jika ada suatu perhitungan antara int dengan long, maka komputer akan memperlakukan int sebagai long.
Untuk mengkonversi suatu variabel menjadi suatu variabel yang berbeda tipe, maka bisa dilakukan dengan type cast. Caranya adalah dengan menulis tipe data yang diinginkan diapit dengan tanda kurung. Contoh :
float a,b;a=(float)9/5;
b=(float)(9/5);
|
Pada perintah a=(float) 9/5, maka angka 9 akan dikonversikan menjadi float sehingga perintah tersebut akan menghasilkan nilai 1.8, tetapi jika perintah b=(float)(9/5) dikerjakan maka akan menghasilkan nilai 1.0 karena yang dikerjakan duluan adalah 9/5 yang menghasilkan nilai 1 yang kemudian dikonversikan ke dalam bentuk float.
Konversi tipe data juga terjadi dalam operasi penugasan / pengisian data terhadap variabel. Perhatikan perintah berikut :
#include <stdio.h>#include <conio.h>
main()
{
char c;
int i;
float f;
f=65.9;
i=f;
c=i;
printf(“F : %f\n”,f);
printf(“I : %d\n”,i);
printf(“C : %c\n”,c);
getch();
return 0;
}
|
Jika dieksekusi, akan menghasilkan :
F : 65.900002I : 65
C : A
|
Keterangan :
– f=65.9; pengisian nilai 65.9 ke variabel f
– i=f; pengisian nilai f ke variabel i. Dalam baris ini terjadi konversi dari float ke int. Pengkonversian float ke int selalu menghilangan angka pecahannya, dan tidak terjadi pembulatan.
– c=i; pengisian nilai i ke variabel c. Dalam baris ini terjadi konversi dari int ke char.
Mendefinisikan Konstanta Simbolis
Untuk mendefinisikan suatu konstanta, perintah yang bisa dipakai adalah perintah $define diikuti dengan nama konstanta dan isinya.
Contoh :
#include <stdio.h>#include <conio.h>
#define PI 3.14
#define pembuat “Wahyu Setiawan”
main()
{
float radius=10,keliling,luas;
keliling=2*PI*radius;
luas=PI*radius*radius;
printf(“Perhitungan Lingkaran\nDibuat Oleh : %s\n”,pembuat);
printf(“======================\n”);
printf(“Radius : %6.2f\n”,radius);
printf(“Keliling : %6.2f\n”,keliling);
printf(“Luas : %6.2f\n”,luas);
getch();
return 0;
}
|
Jika dieksekusi, akan menghasilkan :
Perhitungan LingkaranDibuat Oleh : Wahyu Setiawan
======================
Radius : 10.00
Keliling : 62.80
Luas : 314.00
|
Ketika program dieksekusi, maka compiler akan mengganti semua PI dengan nilai 3.14 dan pembuat dengan “Wahyu Setiawan”. Jadi ketika kita ingin menggunakan nilai PI yang lebih exact, maka pada define PI, nilai 3.14 diganti dengan 22.0/7.
Tipe Data pada C++
Komputer bisa diartikan sebagai alat untuk menghitung. Untuk melakukan proses perhitungan tersebut, maka dibutuhkan data yang akan diproses. Tipe data ada beberapa jenis yaitu :
- Tipe data karakter
- Tipe data bilangan bulat.
- Tipe data bilangan pecahan.
Jika kita membutuhkan suatu tipe data yang baru yang tidak terdapat pada tipe data standar, maka kita dapat membuat tipe data baru dengan menggunakan perintah struct. Perintah struct akan dijelaskan pada bab selanjutnya.
Setiap tipe data mempunyai jangkauan nilai yang berbeda.
1. Tipe data karakter
Untuk tipe data karakter kita gunakan perintah char.
Contoh
char karakter;
char kar1,kar2,kar3;
char kar4=’A’;
char kar5=65;
Tipe data ini mempunyai jangkauan dari 0 sampai 255 atau karakter ASCII ke 0 sampai karakter ASCII 255. Tipe data karakter bisa ditampilkan sebagai suatu karakter atau sebagai suatu bilangan. Hal ini tergantung dari bagaimana penulisannya apakah dianggap sebagai karakter atau sebagai bilangan.
Untuk menuliskan isi dari data bertipe char adalah dengan menggunakan printf dengan format penulisannya menggunakan tanda %c kalau ingin ditampilkan sebagai suatu karakter atau dengan %i jika ingin ditampilkan sebagai suatu angka.
Pemberian nilai kepada suatu karakter digunakan perintah sebagai berikut :
karakter=’A’;
Atau
karakter=65;
Kedua cara tersebut menghasilkan suatu efek yang sama yaitu memberikan nilai 65 atau karakter A ke variabel karakter. Kalau pengisian variable ingin menggunakan karakter maka karakter yang akan dimasukan harus diapit dengan tanda apostrof.
Untuk melihat nilai yang ada dalam suatu variable yang bertipe char gunakan perintah berikut :
printf(“Karakter dilihat dalam bentuk karakter = %c.\n”,karakter);
printf(“Karakter dilihat dalam bentuk angka = %d.\n”,karakter);
Contoh program
//Program Ke-2 Nama File : Lat2.CPP
#include <stdio.h>
#include <conio.h>
main()
{
char k1,k2;
k1=’A’;
k2=k1;
printf(“Nilai variable K1 adalah %c\n”,k1);
printf(“Nilai variable K2 dalam bentuk angka = %d\n”,k2);
getch();
return 0;
}
|
Hasil dari eksekusi program adalah :
Nilai variable K1 adalah A
Nilai variable K2 dalam bentuk angka = 65
Keterangan program Lat2.CPP
Perintah “char k1,k2;” pada baris 6 berarti program memesan 2 buah tempat di memori untuk menyimpan data bertipe karakter dengan nama k1 dan k2.
Perintah “k1=’A’;” pada baris 7 adalah perintah untuk memasukan nilai karakter A kapital ke dalam variable k1 sehingga untuk baris berikutnya k1 berisi karakter A kapital atau angka 65.
Perintah “k2=k1;” pada baris 8 berarti bahwa nilai k2 diisi dari nilai k1 sehingga isi k2 sama dengan isi variable di k1.
Perintah printf pada baris 9 berarti perintah penulisan ke layar sesuai dengan format “Nilai variable k1 adalah %c\n”. Karakter %c tidak dicetak sebagai %c tetapi akan diganti dari variable yang sesuai dengan urutannya yaitu k1 dalam bentuk karakter. Perintah printf pada baris 10 cara kerjanya sama dengan perintah printf pada baris 9 bedanya hanya tanda %d berasal ditulis berdasarkan isi variable k2 yang dicetak dalam bentuk angka bukan karakter. Tanda %d digunakan untuk format pencetakan data dalam bentuk bilangan bulat.
Perintah getch() digunakan untuk menunggu sampai pengguna menekan sembarang karaker.
Perintah return digunakan untuk memberikan nilai kembalian dari fungsi main().
2. Tipe data bilangan bulat
Ada beberapa tipe data standar yang digunakan untuk data bilangan bulat.
Tipe Data
|
Memori
|
Format
|
Jangkauan Nilai
|
int | 2 byte |
%d/%i
| -32.768 s/d 32.767 |
unsigned int | 2 byte |
%u
| 0 s/d 65.535 |
char | 1 byte |
%d/%i
| -128 s/d 127 |
unsigned char | 1 byte |
%u
| 0 s/d 255 |
unsigned long | 4 byte |
%lu
| 0 s/d 4.294.967.295 |
long | 4 byte |
%ld/%li
| -2.147.483.648 s/d 2.147.483.647 |
Tipe-tipe data yang ada dalam table tersebut khusus untuk data yang nilai bilangannya bulat. Cara pendeklarasian tipe data ini sama seperti pendeklarasian lainnya, yaitu :
int a;
unsigned int b;
char c;
long d;
Contoh Program :
#include <stdio.h>
#include <conio.h>
main()
{
int a=1000,b=64000;
unsigned int c=64000;
printf(“Nilai yang telah dimasukan\na: %i dan b: %i\n”,a,b);
printf(“Nilai yang telah dimasukan : %u\n”,c);
getch();
return 0;
}
|
Perintah di atas akan menampilkan hasil seperti di bawah ini :
a: 1000 dan b: -1536
Nilai yang telah dimasukan : 64000
|
3. Tipe data bilangan pecahan
Tipe data untuk bilangan pecahan terdiri dari beberapa jenis yaitu :
Tipe Data
|
Memori
|
Format
|
Jangkauan Nilai
|
float | 4 byte |
%f
| 3.4*(10^-38) – 3.4*(10^+38 |
double | 8 byte |
%f
| 1.7*(10^-308) – 1.7*(10^+308) |
long double | 10 byte |
%lf
| 3.4*(10^-4932) – 1.1*(10^+4932) |
Contoh Program
#include <stdio.h>
#include <conio.h>
main()
{
float a=1234567890123456789;
double d=1234567890123456789;
printf(“Nilai a adalah : %30.20f\n”,a);
printf(“Nilai d adalah : %30.20f\n”,d);
getch();
return 0;
}
|
Hasil eksekusi program dapat dilihat di bawah ini :
Nilai a adalah : 1234567939550609410.00
Nilai d adalah : 1234567890123456770.00
|
4. Tipe data string
Dalam pemrograman C, untuk variabel yang menampung data string tidak ada perintah khusus, karena dalam bahasa C, string adalah sebuah array karakter atau sebuah pointer ke sebuah variabel char.
Cara pendeklarasian adalah :
char nama[50];
char *alamat;
Contoh program :
#include <stdio.h>
#include <conio.h>
main()
{
char nama[50]; //deklarasi dengan cara array
char *alamat; //deklarasi dengan cara pointer
printf(“Nama : “);scanf(“%s”,nama);
printf(“Alamat : “);gets(alamat);
printf(“Data yang telah dimasukan adalah : \n”);
printf(“Nama : %s\nAlamat : %s\n”,nama,alamat);
getch();
return 0;
}
|
Catatan | 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.
|
Operator-Operator Perhitungan
Untuk melakukan perhitungan-perhitungan data, maka diperlukan operator-operator perhitungannya. Operator-operator yang paling umum dipakai dalam pemrograman dengan bahasa C adalah :
Operator
|
Contoh
|
Arti
|
+
| c=a+b | Variable c diisi dari isi variable a ditambah isi variable b |
-
| c=a-b | Variable c diisi dari isi variable a dikurangi isi variable b |
*
| c=a*b | Variable c diisi dari isi variable a dikali dengan isi variable b |
/
| c=a/b | Variable c diisi dari isi variable a dibagi oleh isi variable b |
++
| a++ | Isi variable a ditambah 1. Perintah ini sama dengan a=a+1 atau a+=1 |
–
| b– | Isi variable a dikurang. Perintah ini sama dengan a=a-1 atau a-=1 |
%
| c=a % b | Variable c diisi dari sisa pembagian variable a dibagi variable b |
+=
| c+=a | Variable c ditambah dengan isi variable a. Sama dengan c=c+a |
/=
| c/=a | Variable c dibagi dengan isi variable a. Sama dengan c=c/a |
-=
| c-=a | Variable c dikurangi dengan isi variable a. Sama dengan c=c-a |
*=
| c*=a | Variable c dikali dengan isi variable a. Sama dengan c=c*a |
%=
| c%=a | Variable c diisi dari sisa pembagian c dibagi isi variable a. Sama dengan c=c%a |
Contoh program :
#include <stdio.h>
#include <conio.h>
main()
{
int x=20, y=8, z;
clrscr();
printf(“X = %d dan Y = %d\n”,x,y);
printf(“X / Y = %d\n”,x/y);
printf(“X %% Y = %d\n”, x % y);
x+=2;
printf(“Nilai X sekarang : %i\n”,x);
x++;
printf(“Nilai X setelah X++ : %i\n”,x);
printf(“Nilai Y : %d\n”,y++);
printf(“Nilai Y setelahnya : %d\n”,y);
z=++x;
printf(“Nilai Z : %d\n”,z);
getch();
return 0;
}
|
Program di atas akan menampilkan hasil seperti berikut :
X = 20 dan Y = 8
X / Y = 2
X % Y = 4
Nilai X sekarang : 22
Nilai X setelah X++ : 23
Nilai Y : 8
Nilai Y setelahnya : 9
Nilai Z : 24
|
Opr.
|
Istilah
|
Keterangan
|
I++ | Post increment | Nilai I dikeluarkan dulu, kemudian I ditambah 1 |
++I | Pre increment | Nilai I ditambah 1 dulu, kemudian nilainya dikeluarkan |
I– | Post decrement | Nilai I dikeluarkan dulu, kemudian I dikurangi 1 |
–I | Pre decrement | Nilai I dikurangi 1 dulu, kemudian nilainya dikeluarkan |
Contoh Program Berbahasa C++
Untuk membuat program dalam C++ maka langkah pertama adalah memanggil program C seperti yang telah dijelaskan pada Bab I.
Tulis program berikut pada layar editornya.
/*
Program Ke –1
Nama File : Lat-1.CPP
*/
// Program Hello
#include “stdio.h”
#include <conio.h>
main()
{
printf(“Ini Program Saya Yang Pertama\n”);
printf(“\nSaya Belajar Bahasa C++\n Di \”UIN Maliki\”\nMalang.”);
getch();
return 0;
}
|
Program Ke-1. Lat-1.CPP
Setelah selesai menulis perintah tersebut simpan program tersebut dengan menekan tombol F2 atauAlt+F – Save. Tulis nama file dengan ketentuan hanya terdiri dari 8 huruf tanpa spasi. Jika telah ditulis tekan tombol Enter atau klik tombol OK. File-file tersebut berekstensi C atau CPP.
Untuk memeriksa apakah program yang telah ditulis itu bisa dimengerti oleh kompiler bahasa C, maka perlu dilakukan langkah Compile dengan cara tekan Menu Compile atau Alt+C kemudian pilihCompile atau dengan menekan tombol Alt+F9. Jika masih ada kesalahan, maka akan diperlihatkan dibaris mana kesalahan penulisan program terjadi, perbaiki program kemudian compile ulang sehingga muncul keterangan bahwa compile berhasil/sukses.
Proses compile hanya memeriksa program secara bahasa saja dan belum mengeksekusi / menjalankan programnya. Untuk menjalankan program maka tekan menu Run kemudian pilih sub menu Run atau dengah hotkey Ctrl+F9. Proses Run ini sebenarnya melakukan dua langkah yaitu proses compile dan menjalankan programnya.
Setelah proses run terjadi, maka akan tercipta suatu file berekstensi EXE yang mempunyai nama seperti nama file C++ nya. Suatu file EXE dapat langsung dijalankan di semua komputer walaupun di komputer tersebut tidak terdapat program C++.
Program tersebut ketika dijalankan akan menghasilkan tulisan dilayar sebagai berikut :
Ini Program Saya Yang Pertama
Saya Belajar Bahasa C++
Di “UIN Maliki”
Malang.
|
Keterangan Program Lat-1.CPP
Komentar
Pada baris ke-1, ditemukan tanda /* dan pada baris 4 ditemukan tanda */. Kedua tanda tersebut berpasangan yang berguna untuk menuliskan suatu komentar tentang program atau perintah-perintah. Komentar tidak mempengaruhi program karena komentar tidak dijalankan seperti perintah (statement). Komentar dengan menggunakan tanda /* berlaku sampai ditemukan tanda */. Cara lain untuk memberikan komentar adalah dengan memberikan tanda garis miring 2 kali. Komentar dengan tanda ini hanya berlaku pada 1 baris saja. Komentar bersifat opsional untuk mempermudah orang mengetahui fungsi dari suatu program atau suatu algoritma.
#include
Pada baris 6 ditemukan perintah #include “stdio.h” dan pada baris 7 terdapat perintah #include <conio.h>. Kedua perintah tersebut 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.
Header file
Nama file yang digunakan dalam #include seperti conio.h dan stdio.h, disebut sebagai header file karena ditempatkan di paling atas program. Extention H berarti header. Dalam file header ini, terdapat fungsi atau prototipe yang bisa digunakan dalam program. Sebuah file header memiliki lebih dari 1 fungsi atau variabel global.
File header stdio.h digunakan untuk penanganan input / output standar seperti penulisan ke layar, ke file atau pembacaan data dari keyboard atau file.
File header stdio.h digunakan untuk penanganan ke layar seperti pengaturan warna, waktu jeda (delay), suara internal.
Masih banyak file header standar selain stdio.h dan conio.h.
Fungsi main()
Pada baris 8 terdapat pendeklarasian fungsi main(). Fungsi ini adalah suatu fungsi khusus yang akan dieksekusi pertama. Setiap program harus mempunyai fungsi main(). Fungsi main() diawali dengan tanda { yang menyatakan awal dari program dan diakhiri dengan tanda } yang menyatakan akhir dari program.
printf()
printf() adalah suatu fungsi yang berguna untuk menulis pesan ke layar. Pesan yang akan ditulis dalam diapit oleh tanda kutip. Pesan yang tertulis dapat diatur dengan mengatur format dari penulisannya. Fungsi printf() tidak hanya menulis pesan dalam 1 baris saja tetapi bisa lebih.
Untuk berpindah baris maka gunakan perintah \n yang berarti new line (baris baru). Penulisan \n boleh ditempatkan di depan, ditengah atau diakhir.
Untuk menuliskan tanda “ (kutip) maka harus digunakan tanda \”.
Keterangan lebih lanjut akan diterangkan dalam bab-bab berikutnya.
Tanda ; (semikolon)
Setiap perintah harus diakhiri dengan tanda ;. Hilangnya tanda ; akan menyebabkan kesalahan kompile.
getch()
getch() adalah suatu fungsi yang berfungsi untuk pembacaan data sebuah karakter, sehingga program akan terdiam sampai pengguna menekan suatu tombol. Fungsi ini berada dalam file header conio.h sehingga perintah #include “conio.h” harus dituliskan. Kalau perintah getch() tidak ditulis, maka program akan dikerjakan dengan cepat dan eksekusi tidak dapat terlihat.
return
return adalah perintah yang memberikan nilai kepada fungsinya. Setiap fungsi harus mempunyai nilai kembaliannya (return value).
PROGRAM KTP DALAM BAHASA DEV C++
#include <cstdlib>
#include <iostream>
#include <iomanip>
#define maks 5
using namespace std;
typedef struct
{
//tugas yogi pratama
int nik;
char nama[31];
int ttl;
int alamat;
char sex;
char kerja[21];
int terhapus;
char agama[11];
char statka[11];
char warga[11];
}ktp_penduduk;
ktp_penduduk penduduk[maks];
typedef struct
{
char tempat[11];
int tgl;
int bulan;
int tahun;
}pend_ttl;
pend_ttl ttl[maks];
typedef struct
{
int rt_rw;
char desa_kel[21];
char kecamatan[21];
char kota[21];
int kodepos;
}pend_alamat;
pend_alamat alamat[maks];
int main (int argc,char*argv[])
{
int y,g, cari, ketemu,pilih;
char jawab;
awal:
system("cls");
cout<<"------ MENU ------"<<endl;
cout<<" 1 : memasukkan data "<<endl;
cout<<" 2 : melihat data yang sudah dimasukkan "<<endl;
cout<<" 3 : mencari data yang sudah dimasukkan "<<endl;
cout<<" 4 : menghapus data yang sudah dimasukkan "<<endl;
cout<<" 5 : memperbaiki data yang telah dimasukkan "<<endl;
cout<<"masukkan pilihan anda = ";cin>>pilih;
cout<<endl;
switch(pilih)
{
case 1 :
cout<<"berapa banyak data:";cin>>g;
cout<<endl;
//input data//
cout<<"Masukan Data Warga"<<endl;
cout<<"------------------"<<endl<<endl;
for(y=0;y<g;y++)
{
cout<<"NIK : ";cin>>penduduk[y].nik;
cout<<"Nama : ";fflush(stdin);cin.get(penduduk[y].nama,30);
cout<<"ttl "<<endl;
cout<<"tempat :";fflush(stdin);cin.get(ttl[y].tempat,10);
cout<<"tanggal :";cin>>ttl[y].tgl;
cout<<"bulan :";cin>>ttl[y].bulan;
cout<<"tahun :";cin>>ttl[y].tahun;
cout<<"Jenis Kelamin(p/w) : ";cin>>penduduk[y].sex;
cout<<"Alamat "<<endl;
cout<<"RT/RW :";cin>>alamat[y].rt_rw;
cout<<"Desa/kel :";fflush(stdin);cin.get(alamat[y].desa_kel,20);
cout<<"Kecamatan :";fflush(stdin);cin.get(alamat[y].kecamatan,20);
cout<<"kota :";fflush(stdin);cin.get(alamat[y].kota,20);
cout<<"Kode pos :";cin>>alamat[y].kodepos;
cout<<"agama :";fflush(stdin);cin.get(penduduk[y].agama,10);
cout<<"status kawin(menikah/belum) :";fflush(stdin);cin.get(penduduk[y].statka,10);
cout<<"Pekerjaan : ";fflush(stdin);cin.get(penduduk[y].kerja,21);
cout<<"kewarganegaraan :";fflush(stdin);cin.get(penduduk[y].warga,10);
cout<<"berlaku hingga : 15 - 01 - 2017"<<endl;
penduduk[y].terhapus = 0;
}
break;
/*----view data---*/
case 2:
cout<<endl;
cout<<"Data Warga"<<endl;
cout<<"----------"<<endl<<endl;
for(y=0;y<g;y++)
{
if (penduduk[y].terhapus == 0)
cout<<"----------------------------------------------------|"<<endl;
cout<<" nik nama ttl sex |"<<endl;
cout<<"----------------------------------------------------|"<<endl;
cout<<" tempat tgl bln thn |"<<endl;
cout<<"----------------------------------------------------|"<<endl;
cout<<setw(2)<<penduduk[y].nik<<setw(8)<<penduduk[y].nama<<setw(8)<<ttl[y].tempat<<setw(5)<<
ttl[y].tgl<<setw(5)<<ttl[y].bulan<<setw(7)<<ttl[y].tahun<<setw(4)<<penduduk[y].sex<<endl;
cout<<"----------------------------------------------------|"<<endl<<endl;
cout<<"-------------------------------------------------------------------------------------------------------------------------------|"<<endl;
cout<<" alamat pekerjaan agama Status warga |"<<endl;
cout<<"-------------------------------------------------------------------------------------------------------------------------------|"<<endl;
cout<<" Rt/rw Desa kecamatan kota kode pos |"<<endl;
cout<<"-------------------------------------------------------------------------------------------------------------------------------|"<<endl;
cout<<setw(6)<<alamat[y].rt_rw<<setw(11)<<
alamat[y].desa_kel<<setw(20)<<alamat[y].kecamatan<<setw(15)<<
alamat[y].kota<<setw(15)<<alamat[y].kodepos<<setw(18)<<penduduk[y].kerja<<setw(11)<<penduduk[y].agama<<setw(13)
<<penduduk[y].statka<<setw(11)<<setw(15)<<penduduk[y].warga<<endl;
cout<<"-------------------------------------------------------------------------------------------------------------------------------|"<<endl;
}
break;
/*----search data---*/
case 3: cout<<"Masukan NIK yang anda cari = ";cin>>cari; ketemu = 0;
for(y=0;y<g;y++)
{
if (cari == penduduk[y].nik)
ketemu = 1;
}
if (ketemu == 1)
cout<<"NIK warga ditemukan :"<<endl;
else
cout<<"NIK warga tidak ada "<<endl;
break;
/*---menghapus data--*/
case 4 : cout<<"Masukan NIK yang akan di hapus = "; cin>>cari;
for(y=0;y<g;y++)
{
if ((cari == penduduk[y].nik) && (penduduk[y].terhapus == 0))
{
penduduk[y].terhapus = 1;
}
}
cout<<"Data Warga yang Baru"<<endl;
for(y=0;y<g;y++)
{
if (penduduk[y].terhapus == 1)
cout<<"NIK : ";cin>>penduduk[y].nik;
cout<<"Nama : ";fflush(stdin);cin.get(penduduk[y].nama,30);
cout<<"ttl "<<endl;
cout<<"tempat :";fflush(stdin);cin.get(ttl[y].tempat,10);
cout<<"tanggal :";cin>>ttl[y].tgl;
cout<<"bulan :";cin>>ttl[y].bulan;
cout<<"tahun :";cin>>ttl[y].tahun;
cout<<"Jenis Kelamin(p/w) : ";cin>>penduduk[y].sex;
cout<<"Alamat "<<endl;
cout<<"RT/RW :";cin>>alamat[y].rt_rw;
cout<<"Desa/kel :";fflush(stdin);cin.get(alamat[y].desa_kel,20);
cout<<"Kecamatan :";fflush(stdin);cin.get(alamat[y].kecamatan,20);
cout<<"kota :";fflush(stdin);cin.get(alamat[y].kota,20);
cout<<"Kode pos :";cin>>alamat[y].kodepos;
cout<<"agama :";fflush(stdin);cin.get(penduduk[y].agama,10);
cout<<"status kawin(menikah/belum) :";fflush(stdin);cin.get(penduduk[y].statka,10);
cout<<"Pekerjaan : ";fflush(stdin);cin.get(penduduk[y].kerja,21);
cout<<"kewarganegaraan :";fflush(stdin);cin.get(penduduk[y].warga,10);
cout<<"berlaku hingga : 15 - 01 - 2017"<<endl;
}
break;
/*---edit data---*/
case 5: cout<<"Masukan NIK yang akan datanya akan diubah = ";cin>>cari;
for(y=0;y<g;y++)
{
if (cari == penduduk[y].nik && (penduduk[y].terhapus == 0))
{
cout<<"NIK : ";cin>>penduduk[y].nik;
cout<<"Nama : ";fflush(stdin);cin.get(penduduk[y].nama,30);
cout<<"ttl "<<endl;
cout<<"tempat :";fflush(stdin);cin.get(ttl[y].tempat,10);
cout<<"tanggal :";cin>>ttl[y].tgl;
cout<<"bulan :";cin>>ttl[y].bulan;
cout<<"tahun :";cin>>ttl[y].tahun;
cout<<"Jenis Kelamin(p/w) : ";cin>>penduduk[y].sex;
cout<<"Alamat "<<endl;
cout<<"RT/RW :";cin>>alamat[y].rt_rw;
cout<<"Desa/kel :";fflush(stdin);cin.get(alamat[y].desa_kel,20);
cout<<"Kecamatan :";fflush(stdin);cin.get(alamat[y].kecamatan,20);
cout<<"kota :";fflush(stdin);cin.get(alamat[y].kota,20);
cout<<"Kode pos :";cin>>alamat[y].kodepos;
cout<<"agama :";fflush(stdin);cin.get(penduduk[y].agama,10);
cout<<"status kawin(menikah/belum) :";fflush(stdin);cin.get(penduduk[y].statka,10);
cout<<"Pekerjaan : ";fflush(stdin);cin.get(penduduk[y].kerja,21);
cout<<"kewarganegaraan :";fflush(stdin);cin.get(penduduk[y].warga,10);
cout<<"berlaku hingga : 15 - 01 - 2017"<<endl;
penduduk[y].terhapus = 0;
}
}
cout<<"Data Warga yang baru"<<endl;
for(y=0;y<g;y++)
{
if ((penduduk[y].terhapus == 0))
cout<<"----------------------------------------------------|"<<endl;
cout<<" nik nama ttl sex |"<<endl;
cout<<"----------------------------------------------------|"<<endl;
cout<<" tempat tgl bln thn |"<<endl;
cout<<"----------------------------------------------------|"<<endl;
cout<<setw(2)<<penduduk[y].nik<<setw(8)<<penduduk[y].nama<<setw(8)<<ttl[y].tempat<<setw(5)<<
ttl[y].tgl<<setw(5)<<ttl[y].bulan<<setw(7)<<ttl[y].tahun<<setw(4)<<penduduk[y].sex<<endl;
cout<<"----------------------------------------------------|"<<endl<<endl;
cout<<"-------------------------------------------------------------------------------------------------------------------------------|"<<endl;
cout<<" alamat pekerjaan agama Status warga |"<<endl;
cout<<"-------------------------------------------------------------------------------------------------------------------------------|"<<endl;
cout<<" Rt/rw Desa kecamatan kota kode pos |"<<endl;
cout<<"-------------------------------------------------------------------------------------------------------------------------------|"<<endl;
cout<<setw(6)<<alamat[y].rt_rw<<setw(11)<<
alamat[y].desa_kel<<setw(20)<<alamat[y].kecamatan<<setw(15)<<
alamat[y].kota<<setw(15)<<alamat[y].kodepos<<setw(18)<<penduduk[y].kerja<<setw(11)<<penduduk[y].agama<<setw(13)
<<penduduk[y].statka<<setw(11)<<setw(15)<<penduduk[y].warga<<endl;
cout<<"-------------------------------------------------------------------------------------------------------------------------------|"<<endl;
}
break;
default : printf("maaf anda salah pilih \n");
}
cout<<"mau proses lagi (Y/T) : ";cin>>jawab;
if ((jawab=='Y')||(jawab=='y'))
goto awal;
system ("PAUSE");
return 0;
}
0 Response to "Contoh-Contoh Program C++ dan penjelasannya"
Posting Komentar