PEMROGRAMAN DASAR
SEKOLAH VOKASI
UNIVERSITAS GADJAH MADA
BAB I
Algoritma Pemrograman
Algoritma pemrograman merupakan urutan langkah—langkah untuk menyelesaikan
masalah yang disusun secara sistematis. Algoritma dibuat tanpa memperhatikkan bentuk
yang akan digunakan sebagai implementasinya, sehingga suatu algoritma dapat
menjelaskan bagaimana cara melaksanakan fungsi yang dapat diekspresikan dengan suatu
program atau komponen fisik. Sebelum membuat algoritma perlu mendefinisikan masukan
(input) dan keluaran (output).
1. Mendefinisikan masalah
Memahami permasalahan mendalam langkah apa yang harus dinputkan pada
program dan perintah yang akan digunakan serta bagaimana bentuk outputnya. Contoh
diambil kasus algoritma memasak telor dadar. Dimana input berupa telor yang masih
mentah dan output berupa telor yang sudah matang.
2. Teknik pemecahan masalah dan algoritma
Teknik pemecahan masalah yang tepat dalam hal ini dituangkan dalam suatu
algoritma dengan tujuan untukk menyelesaikan masalah. Algoritma harus memiliki
kebenaran secara logika sehingga siap diimpplementasikan dalam program. Misalkan
dari permasalahan membuat telor dadar dapat dibuat suatu algoritma sebagai berikut :
Nyalakan api kompor
Tuangkan minyak ke dalam wajan
Pecahkan telor ayam ke dalam mangkuk
Tambahkan garam secukuppnya
Aduk campuran telor dengan garam
Tuang adonan telor ke dalam wajan
Masak telor hingga matang
Penyajian algoritma :
Algoritma disajikan dalam dua bentuk , yaitu:
1. Menggunakan Flow chart (diagram alir)
2. Menggunakan pseudo-code
Flowchart
Dalam membuat algoritma diperlukan suatu mekanisme atau alat bantu untuk
menuangkan hasil pemikiran mengenai langkah-langkah penyelesain yang sistematis dan
terurut. Penyusunan solusi sebagai alat untuk pemecahan masalah dapat disajikan dengan
flowchart, merupakan skema penggambaran dari algoritma atau proses. Tabel berikut
menyajikan simbol-simbol yang digunakan untuk menyusun flowchart.
Terminator
Sebagai simbol ’START’ atau ’END’ untuk memulai atau
mengakhiri flowchart.
Input/Output
Digunakan untuk menuliskan proses menerima data atau
mengeluarkan data
Proses
Digunakan untuk menuliskan proses yang diperlukan, misalnya
operasi aritmatika
Conditional / Decision
Digunakan untuk menyatakan proses yang membutuhkan
keputusan
Preparation
Digunakan untuk memberikan nilai awal
Arrow
Sebagai penunjuk arah dan alur proses
Connector (On-page)
Digunakan untuk menyatukan beberapa arrow
Connector (Off-page)
Digunakan untuk menghubungkan flowchart yang harus
digambarkan pada halaman yang berbeda. Biasanya pada simbol
ini diberi nomor sebagai penanda, misalnya angka 1.
Display
Digunakan untuk menampilkan data ke monitor
Struktur Flowchart
o Struktur sequence
Struktur ini terdiri dari pernyataan yang tidak mempunyai unsur perulangan atau
keputusan didalamnya. Contoh algoritma memecahkan masalah dalam program
untuk sequence , kasus perhitungan luas dan volume balok. Adapun volume dari
balok adalah volume=(2*p*l)+(2*p*t)+(2*l*t) sedangkan luas suatu balok adalah
luas=p*l*t (p= panjang, l= lebar, t = tinggi). Algoritma dari permasalahan tersebut
adalah:
1. Masukkan panjang
2. Masukkan lebar
3. Masukkan tinggi
5. Luas = (2*p*l)+(2*p*t)+(2*l*t)
6. Volume = p*l*t
7. Tampilkan luas
8. Tampilkan volume
Keterangan dari algoritma diatas: pada baris pertama, kedua dan ketiga anda
diminta untuk memasukkan input yang berkaitan dengan balok yaitu panjang,
lebar,tinggi. Adapun panjang balok disimpan pada variabel panjang (p), lebar
balok disimpan pada variabel lebar (l), tinggi balok disimpan pada variabel tinggi
(t). Sedangkan pada baris keempat dan kelima anda diminta memasukkan rumus
volume balok (2*p*l)+(2*p*t)+(2*l*t) dan luas balok adalah luas=p*l*t. Untuk luas
balok disimpan pada variabel luas dan volume balok disimpan pada variabel
volume . Baris enam dan tuuh merupakan hasil dari proses input dan proses
perhitungan yang dimasukkan berdasarkan nilai inputnya dan ditampilkan pada
variabel luas dan volume.
Input
(jumlah penjualan)
jumlah
Ya penjualan> 2 Tidak
unit?
jumlah
Bonus =
Ya penjualan= 2
1.000.000 Tidak
unit?
Bonus = Bonus =
500.000 0
Output
(Bonus)
END
Contoh Kasus : Seorang staff IT diminta untuk menampilkan data dari sebuah
tabel dimana di dalamnya terdapat seratus baris data. Jika staff tersebut harus
menampilkan satu per satu, tentunya akan membutuhkan banyak kode program
dan program akan menjadi tidak efektif. Bagaimana cara menyelesaikan
persoalan staff IT tersebut?
Solusi : Untuk kasus menampilkan data, dapat ditentukan bahwa jumlah baris
yang akan dibaca adalah 100. Baris akan dibaca mulai dari baris pertama (baris =
1). Proses yang dilakukan adalah membaca dan menampilkan isinya ke layar
(output). Pembacaan akan berhenti jika baris yang dibaca sudah mencapai baris
ke-100. Jika digambarkan menggunakan flowchart maka, akan tampak sebagai
berikut:
START
Baris = 1
Baris <
Jumlah baris ?
Ya
Output
(Data[Baris])
Baris = Tidak
Baris + 1
END
Tugas :
Buatlah desain flowchart berikut di software DIA, hasilnya di capture dan jelaskan algoritma
dari teknik pemecahan masalah pada flowchart tersebut.
1. Sejarah
Bahasa C++ merupakan salah satu bahasa pemrograman komputer, dimana C++
merupakan pengembangan dari bahasa C, bahasa C dikembangkan pada tahun
1980 menjadi C++ oleh Bjarne Stroustroup dari Laboratorium Bell,AT&T. Awalnya
C++ diberi nama dengan nama “A better C”, kemudian untuk simbol ++ berasal dari
salah satu operator di bahasa C yaitu increment, yang merupakan operator penaikan
dimana simbol tersebut menunjukan bahwa C++ adalah bahasa pemrograman yang
lebih canggih dibandingkan dengan C.
Kemudian Borland International Inc mengembangkan kompiler C++ menjadi
sebuah kompiler yang dapat mengubah C++ menjadi bahasa mesin (assembly), lalu
pada tahun 1990 bahasa C++ pun menjadi bahasa pemrograman yang berorientasi
obyek. Agar dapat mendukung fitur di C++, maka dibangunlah efisiensi dan sistem
support untuk pemrograman tingkat rendah (low level coding), konsep yang di
tambahkan pada C++ yaitu seperti class yang sifatnya seperti inheritance dan
overloading. Selain itu C++ memiliki keistimewaan yaitu dapat mendukung OOP
(Object Oriented Programming). Tujuan dibuatnya C++ adalah agar dapat
meningkatkan produktivitas pemrogram dalam membuat sebuah aplikasi.
Tugas :
1. Buatlah program sederhana dengan hasil output seperti dibawah ini (screenshot
program dan hasilnya) :
a.
b.
2. Ketik ulang program berikut dan screenshot hasilnya, kemudian analisis program
tersebut.
#include <iostream>
using namespace std;
int main ()
{
cout<<"Selamat pagi teman-teman..." << endl;
cout<<"Perkenalkan nama saya Irsyad";
return 0;
}
3. Buatlah program dengan hasil output seperti dibawah ini (screenshot program dan
hasilnya):
a.
b.
4. Ketik ulang program berikut dan screenshot hasilnya, kemudian analisis program
tersebut.
#include <iostream>
int main ()
{
std::cout<<"Selamat pagi teman-teman..." << std::endl;
std::cout<<"Perkenalkan nama saya Irsyad Muafa";
return 0;
}
5. Buatlah program tanpa menggunakan perintah using namespace std; dengan hasil
output seperti dibawah ini (screenshot program dan hasilnya):
a.
b.
BAB III
1. Tipe Data
Tipe data adalah himpunan nilai yang dapat dimiliki oleh sebuah data. Tipe data
menentukan apakah sebuah nilai dapat dimiliki sebuah data atau tidak, serta operasi
apa yang dapat dilakukan pada data tersebut. Jika sebuah data, misalnya umur,
harus berupa bilangan bulat maka dapat dipastikan bahwa 25, 13, dapat menjadi
nilai umur, sedangkan 7.5, 19.655 bukan merupakan contoh dari nilai umur. Berikut
merupakan contoh beberapa tipe data dasar :
Integer/ bilangan bulat
Integer adalah tipe data dasar berupa bilangan yang tidak mengandung pecahan
desimal. Dalam pemrograman yang menggunakan bahasa pemprograman C++,
secara umum dikenal beberap macam tipe data integer, yaitu:
Char/ Karakter
Char adalah tipe data dasar yang terdiri atas satu buah angka, huruf, tanda baca
atau karakter khusus. Untuk menyimpan sebuah karakter, diperlukan 1 byte atau 8
bit tempat didalam memori. Dalam sebuah program, penulisan tipe data char diawali
dan diakhiri dengan tanda kutip ganda. Selain itu, terdapat sebuah karakter kosong
yang disebut dengan null atau nil dan dituliskan sebagai “”.
Contoh char: “5” “A” “?” “+” “$”
Perhatikan bahwa 5 adalah integer sedangkan “5” adalah char.
String
String adalah tipe data dasar yang berupa kumpulan karakter dengan panjang
tertentu. Meskipun berupa kumpulan karakter, karena tipe data string sering
digunakan dalam pemrograman, string dianggap sebagai tipe data dasar. Untuk
penyimpanan string didalam memori, dibutuhkan 1 byte untuk tiap karakternya.
Serupa dengan penulisan karakter, penulisan sebuah string juga harus diawali dan
diakhiri dengan tanda petik ganda. String juga mengenal null yang dituliskan dengan
“”.
Contoh string: “BANDUNG”, “ABC3456”, “Lucu”, “30202001”, “z”
Perhatikan bahwa sebuah karakter tunggal (“z”) juga merupakan string.
Contoh Program :
#include <iostream>
using namespace std;
int main()
{ int x; float y; char z; double w;
x = 10; /* variabel x diisi dengan 10 */
y = 9.45; /* variabel y diisi dengan 9.45 */
z = 'C'; /* variabel z diisi dengan karakter "C" */
w = 3.45E+20; /* variabel w diisi dengan 3.45E+20 */
cout<<"Nilai dari x adalah : "<<x<<endl; /* Menampilkan isi variabel x
*/
cout<<"Nilai dari y adalah : "<<y<<endl; /* Menampilkan isi variabel y
*/
cout<<"Nilai dari z adalah : "<<z<<endl; /* Menampilkan isi variabel z
*/
cout<<"Nilai dari w adalah : "<<w<<endl; /* Menampilkan isi variabel w
*/
return 0;
}
2. Konstanta
Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses program
berlangsung. Konstanta nilainya selalu tetap. Konstanta harus didefinisikan terlebih
dahulu di awal program. Konstanta dapat bernilai integer, pecahan, karakter dan
string. Contoh konstanta : 50; 13; 4,50005; ‘A’; ‘Bahasa C++’.
Pendeklarasian konstanta dapat dilakukan dengan 2 cara :
a. Menggunakan praprocessor #define
#define PHI 3.14
#define nim “0111500382”
#define nama “Irsyad Muafa”
b. Menggunakan const
const int lebar = 100;
const char tab = ‘\t’;
const zip = 1212;
3. 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 variabel bisa diubah-ubah sesuai kebutuhan. Nama dari suatu
variabel dapat ditentukan sendiri oleh pemrogram dengan aturan sebagai berikut :
Terdiri dari gabungan huruf dan angka dengan karakter pertama harus
berupa huruf. Bahasa C++ bersifat case-sensitive artinya huruf besar dan
kecil dianggal berbeda. Jadi antara nim, NIM dan Nim dianggap berbeda.
Tidak boleh mengandung spasi dan tidak boleh mengandung simbol-simbol
khusus, kecuali garis bawah (underscore). Yang termasuk simbol khusus
yang tidak diperbolehkan antara lain : $, ?, %, #, !, &, *, (, ), -, +, = dan
sebagainya
Contoh program :
//bekerja dengan variabel
#include <iostream>
using namespace std;
int main()
{
//inisialisasi variabel :
int a,b, hasil;
//proses :
a = 5;
b = 2;
a = a + 1;
hasil = a - b;
//cetak hasilnya :
cout << hasil;
//menghentikan program :
return 0;
}
4. Operator
a. Operator Penugasan
Operator Penugasan (Assignment Operator) dalam bahasa C++ berupa tanda sama
dengan (“=”) akan memberikan nilai ke dalam suatu variabel.
artinya memberikan nilai 5 ke dalam variable a. Sebelah kiri tanda = dalam
pernyataan di atas, dikenal dengan lvalue (left value) dan di sebelah kanan tanda =
dikenal dengan rvalue (right value). lvalue harus selalu berupa variable, sedangkan
rvalue dapat berupa variable, nilai, konstanta, hasil operasi ataupun kombinasinya.
b. Operator Aritmatika
Bahasa C++ menyediakan lima operator aritmatika, yaitu :
* : untuk perkalian
/ : untuk pembagian
% : untuk sisa pembagian (modulus)
+ : untuk pertambahan
- : untuk pengurangan
Untuk operator modulus (%) digunakan untuk mengetahui sisa hasil bagi. Misalnya
a= 9 % 6, maka variabel a akan terisi nilai 3 karena sisa hasil bagi 9 dan 6 adalah 3.
Contoh Program 1 :
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int a,b,c,d,e,f,g;
a=10;
b=5;
cout<<"Masukkan nilai a : "<<a<<endl;
cout<<"Masukkan nilai b : "<<b<<endl;
c=a+b;
d=b-a;
e=a*b;
f=a%b;
g=a/b;
cout<<"Masukkan nilai c : "<<c<<endl;
cout<<"Masukkan nilai d : "<<d<<endl;
cout<<"Masukkan nilai e : "<<e<<endl;
cout<<"Masukkan nilai f : "<<f<<endl;
cout<<"Masukkan nilai g : "<<g<<endl;
return 0;
}
Contoh :
(7==5) hasilnya adalah false
(5>4) hasilnya adalah true
(5<5) hasilnya adalah false
d. Operator Logika
Jika operator hubungan membandingkan hubungan antara dua buah operand, maka
operator logika digunakan untuk membandingkan logika hasil dari operator-operator
hubungan. Operator logika ada tiga macam, yaitu :
&& : logika AND (DAN)
|| : logika OR (ATAU)
! : logika NOT (INGKARAN)
Misalnya:
((5==5) && (3>6)) mengembalikan nilai false, karena (true && false)
untuk logika NOT (!), contohnya !(5==5) akan mengembalikan nilai false, karena !
(true).
#include <iostream>
#include <conio.h>
using namespace std;
int main () {
float a,b,c,d,e,f,g,h,i;
cout<<"Masukkan nilai a = "; cin>>a;
cout<<"Masukkan nilai b = "; cin>>b;
cout<<"Masukkan nilai c = "; cin>>c;
d = a + 4 < 10;
e = b > a + 5;
f = c - 3 >= 4;
g = d && e && f;
h = d || e || f;
i = !(d);
cout<<endl<<endl;
cout<<"Hasil dari d = a + 4 < 10 adalah "<<d<<endl;
cout<<"Hasil dari e = b > a + 5 adalah "<<e<<endl;
cout<<"Hasil dari f = c - 3 >= 4 adalah "<<f<<endl;
cout<<endl<<endl;
cout<<"Hasil dari g = d && e && f adalah "<<g<<endl;
cout<<"Hasil dari h = d || e || f adalah "<<h<<endl;
cout<<"Hasil dari i = !(d) adalah "<<i<<endl;
return 0;
}
e. Operator Bitwise
Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang ada di
memori.
<< : pergeseran bit ke kiri
>> : pergeseran bit ke kanan
& : bitwise AND
^ : bitwise XOR ( exclusive OR)
| : bitwise OR
~ : bitwise NOT
Catatan penting! :
Operator peningkatan ++ dan penurunan -- jika diletakkan sebelum atau sesudah
operand maka akan terdapat perbedaan.
- Jika diletakkan didepan variabel, maka proses penambahan atau pengurangan
akan dilakukan sesaat sebelum atau langsung pada saat menjumpai ekspresi ini,
sehingga nilai variabel tadi akan langsung berubah begitu ekspresi ini ditemukan.
- Jika diletakkan dibelakang variabel, maka proses penambahan atau
pengurangan akan dilakukan setelah ekspresi ini dijumpai atau nilai variabel
akan tetap pada saat ekspresi ditemukan.
Contoh Program 1 :
/* Perbedaan operator peningkatan ++ yang diletakkan di depan
dan dibelakang operand */
#include <iostream>
#include <conio.h>
using namespace std;
int main(){
int x, nilai;
x=5;
nilai = ++x; /* berarti x=x+1; nilai=x */
cout<<"nilai = "<<nilai<<","<<" x = "<<x<<endl;
nilai = x++; /* berarti nilai=x; nilai=x+1 */
cout<<"nilai = "<<nilai<<","<<" x = "<<x<<endl;
return 0;
}
Contoh Program 2 :
#include <iostream>
#include <conio.h>
using namespace std;
int main(){
int b, nilai;
b=15;
nilai = --b; /* berarti b=b-1; nilai=b */
cout<<"nilai = "<<nilai<<","<<" b = "<<b<<endl;
nilai = b--; /* berarti nilai=b; nilai=b-1 */
cout<<"nilai = "<<nilai<<","<<" b = "<<b<<endl;
return 0;
}
Tugas
1. Buatlah program kalkulator sederhana yang mengimplementasikan beberapa
operator yang sudah dijelaskan
2. Buatlah sebuah program untuk menghitung jumlah rata-rata dari 5 buah bilangan
bulat positif.
3. Buatlah sebuah program berdasarkan flowchart berikut :
a. Kasus perhitungan gaji b. Kasus penjumlahan dua bilangan
BAB IV
1. MEMASUKKAN DATA
Dalam bahasa C++ proses memasukkan suatu data bisa menggunakan beberapa fungsi
pustaka yang telah tersedia. Dalam bahasa C++ untuk memasukkan data biasa digunakan
perintah cin karena menggunakan file header iostream. Sedangkan perintah yang lain
(scanf(), gets(), getchar(), getch(), getche()) sejatinya merupakan milik bahasa C, karena
fungsi tersebut berada di library “stdio.h” yang merupakan library milik bahasa C. namun
karena C++ bisa menjalankan hampir semua file header/library dari C, maka kita bisa
menggunakan fungsi tersebut di C++.
a. Perintah cin
Untuk menerima inputan dengan perintah cin, maka operator yang akan digunakan
adalah overload operator (>>) dan diikuti variabel tempat menyimpan inputan data.
Untuk menggunakan perintah cin ini harus menyertakan file header <iostream>.
Perintah cin hanya dapat diproses setelah penekanan tombol ENTER. Jadi, walaupun
hanya satu karakter yang dimasukkan, sebelum penekanan Enterm cin tidak akan
merespon apa-apa. Perintah ini juga dapat digunakan menerima beberapa inputan
dalam sekali pernyataan :
cin>>a>>b;
yang sama dengan pernyataan :
cin>>a;
cin>>b;
kedua pernyataan diatas jika dijalankan akan meminta dua kali inputan data. Satu
untuk variabel a dan satunya lagi untuk variabel b. dan untuk peasukan datanya
dipisahkan dengan pemisah seperti Spasi, Tab atau Enter.
Contoh Program :
#include <iostream>
using namespace std;
int main(){
char nama[50];
int nilai;
b. Perintah scanf()
Fungsi pustaka scanf() digunakan untuk menginput data berupa data numerik,
karakter dan string secara terformat. Bentuk umum perintah scanf():
Scanf(“penentu format”, &nama-variabel)
Simbol & merupakan pointer yang digunakan untuk menunjukkan ke alamat variabel
memori yang dituju. Kode penentu format :
%c : membaca sebuah karakter
%s : membaca sebuah string
%i, %d : membaca sebuah bilangan bulat (integer)
%f, %e : membaca sebuah bilangan pecahan (real)
%o : membaca sebuah bilangan oktal
%x : membaca sebuah bilangan heksadesimal
%u : membaca sebuah bilangan tak bertanda
%s : membaca string
%ld : membaca long integer
Contoh program :
#include <stdio.h>
#include <conio.h>
int main(){
int a,b,c;
printf("Masukkan Nilai A = "); scanf("%d", &a);
printf("Masukkan Nilai B = "); scanf("%d", &b);
c=a+b;
printf("Hasil Penjumlahan = %d",c);
}
c. Perintah gets()
Fungsi gets() digunakan untuk memasukkan data bertipe karakter dan tidak dapat
digunakan untuk memasukkan data numerik. Harus diakhiri dengan penekanan tombol
enter. Cursor secara otomatis akan pindah baris. Tidak memerlukan penentu format.
Contoh Program :
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
char nama[50];
d. Perintah getchar()
Fungsi getchar() digunakan untuk membaca data yang bertipe karakter
Harus diakhiri dengan penekanan tombol enter
Pergantian baris secara otomatis
Contoh Program :
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
int main(){
char huruf1, huruf2;
cout<<"Masukkan sebuah karakter : ";
huruf1=getche(); //karakter yang dimasukkan akan terlihat di
layar
cout<<endl<<"Karakter yang anda masukkan adalah "<<huruf1;
cout<<endl<<"Masukkan sebuah karakter lagi : ";
huruf2=getch(); //karakter yang dimasukkan tidak terlihat di
layar
cout<<endl<<"Karakter yang anda masukkan adalah : "<<huruf2;
getch();
}
2. MENAMPILKAN DATA
Dalam bahasa C++ untuk menampilkan data, umumnya menggunakan perintah cout yang
mana perintah ini menggunakan file header iostream. Selain itu, untuk menampilkan data
juga dapat menggunakan perintah printf(), puts(), putchar(). Ketiga perintah tersebut
sejatinya merupakan milik bahasa C, karena fungsi tersebut berada di library “stdio.h” yang
merupakan library milik bahasa C. Namun karena C++ bisa menjalankan hampir semua file
header/library dari C, maka kita bisa menggunakan fungsi tersebut di C++.
a. Perintah cout
Perintah cout digunakan untuk menampilkan suatu data ke layar. Untuk
menggunakan perintah cout harus menyertakan header iostream.
Contoh program :
#include<iostream>
using namespace std;
int main(){
float a,b,c;
a=7.5; b=8.4; c=0;
cout<<"Masukkan Nilai A : "<<a<<endl;
cout<<"Masukkan Nilai B : "<<b<<endl;
c=a+b;
cout<<"Masukkan Nilai C : "<<c;
return 0;
}
b. Perintah printf()
Printf() digunakan untuk menampilkan informasi ke layar. Dalam penggunaannya
harus menentukan tipe data untuk data string, yaitu %s. Untuk mencetak pindah
baris memerlukan notasi \n. bentuk penulisan perintah printf():
Printf(“string kontrol”, argumen1, argumen2, …);
String kontrol dapat berupa keterangan yang akan ditampilkan pada layar beserta
penentu format. Penentu format dipakai untuk memberi tahu kompiler mengenai
jenis data yang dipakai dan akan ditampilkan. Argumen ini dapat berupa variabel,
konstanta dan ungkapan.
Contoh program :
#include <stdio.h>
#include <conio.h>
int main(){
int a;
char b;
a=5;
b='E';
printf("%c merupakan abjad ke %d", b, a);
}
c. Perintah puts()
Perintah puts() (put string) digunakan untuk mencetak string ke layar. Tidak perlu
penentu tipe data string karena fungsi ini khusus untuk tipe data string. Fungsi ini
melakukan pemindahan baris secara otomatis.
Contoh program :
#include <stdio.h>
#include <conio.h>
int main(){
char a[10] = "XMUAFA";
puts("Kode username saya : ");
puts(a);
}
d. Perintah putchar()
Perintah putchar() digunakan untuk menampilkan sebuah karakter ke layar.
Penampilan karakter tidak diakhiri dengan pindah baris.
Contoh program :
#include <stdio.h>
#include <conio.h>
int main(){
putchar('X');
putchar('M');
putchar('U');
putchar('A');
putchar('F');
putchar('A');
}
Tugas
Buatlah program untuk masing-masing ketentuan berikut (analisis dan screenshot
program beserta hasilnya) :
1. Menginput dan menampilkan biodata pribadi seseorang yang terdiri dari
nama, tempat, tanggal lahir, alamat, nomor telepon, agama, dan jenis
kelamin.
2. Mencetak sejumlah deret bilangan ganjil antara 1 sampai N, dimana N
dimasukkan oleh user.
3. Menentukan bilangan terbesar dan terkecil dari sejumlah bilangan yang
dimasukkan oleh user (misalnya N buah bilangan).
4. Menentukan luas lingkaran
BAB V
PENYELEKSIAN KONDISI
int main()
{
double tot_beli, potongan=0, jml_bayar=0;
cout<<"Total pembelian Rp. "; cin>>tot_beli;
if (tot_beli >= 50000)
potongan = 0.2 * tot_beli;
cout<<"Besarnya potongan Rp. "<<potongan<<endl;
jml_bayar = tot_beli - potongan;
cout<<"Jumlah yang harus dibayarkan Rp. "<<jml_bayar;
return 0;
}
Jika total pembelian > 50.000, output yang dihasilkan :
Contoh program :
Menentukan besarnya potongan dari pembelian barang dengan kriteria :
a. Jika total pembelian kurang dari Rp 50.000, potongan yang diterima adalah 5%
dari total pembelian
b. Jika total pembelian lebih dari atau sama dengan Rp 50.000, potongan yang
diterima adalah 20% dari total pembelian
#include <iostream>
using namespace std;
int main()
{
double tot_beli, potongan=0, jml_bayar=0;
cout<<"Total pembelian Rp. "; cin>>tot_beli;
if (tot_beli >= 50000)
potongan = 0.2 * tot_beli;
else
potongan = 0.05 * tot_beli;
cout<<"Besarnya potongan Rp. "<<potongan<<endl;
jml_bayar = tot_beli - potongan;
cout<<"Jumlah yang harus dibayarkan Rp. "<<jml_bayar;
return 0;
}
Jika total pembelian > 50.000, output yang dihasilkan :
3. PERNYATAAN NESTED IF
Nested if merupakan pernyataan if yang berada di dalam pernyataan if lainnya.
Contoh program :
Suatu perusahaan memberikan komisi kepada salesman dengan ketentuan berikut :
a. Jika salesman dapat menjual barang hingga Rp 20.000 akan diberikan uang jasa
sebesar Rp 10.000 ditambah dengan uang komisi 10% dari pendapatan yang
diperoleh hari itu
b. Jika salesman dapat menjual barang diatas Rp 20.000 akan diberikan uang jasa
sebesar Rp 20.000 ditambah dengan uang komisi 15% dari pendapatan yang
diperoleh hari itu
c. Jika salesman dapat menjual barang diatas Rp 50.000 akan diberikan uang jasa
sebesar Rp 30.000 ditambah dengan uang komisi 20% dari pendapatan yang
diperoleh hari itu
#include <iostream>
using namespace std;
int main()
{
float pendapatan, jasa=0, komisi=0, total=0;
cout<<"Pendapatan hari ini Rp. "; cin>>pendapatan;
if(pendapatan>= 0 && pendapatan <= 20000)
{
jasa = 10000;
komisi = 0.1 * pendapatan;
}
else
{
if(pendapatan<= 50000)
{
jasa = 20000;
komisi = 0.15 * pendapatan;
}
else
{
jasa = 30000;
komisi = 0.2 * pendapatan;
}
}
total = komisi + jasa;
cout<<"Uang jasa Rp. "<<jasa<<endl;
cout<<"Uang komisi Rp. "<<komisi<<endl;
cout<<"==============================="<<endl;
cout<<"Total pendapatan Rp. "<<total<<endl;
return 0;
}
Contoh program:
Terdapat beberapa kode barang diantaranya : alat olahraga (A), alat elektromik (B),
dan alat masak (C). Ketika ingin memilih salah satu dari kode barang tersebut, maka
akan tampil kode barang dan keterangan barang tersebut, sesuai dengan kode yang
terpilih, tetapi jika tidak memilih salah satu dari ketiga kode barang tersebut, maka
akan tampil “anda salah memasukkan kode”
#include <iostream>
using namespace std;
int main()
{
char kode;
cout<<"Masukkan kode barang = "; cin>>kode;
switch(kode)
{
case 'A':
cout<<"alat elektronik";
break;
case 'B':
cout<<"alat olahraga";
break;
case 'C':
cout<<"alat masak";
break;
default:
cout<<"Anda salah memasukkan kode!";
break;
}
return 0;
}
Hasil jika sesuai kondisi/syarat:
Catatan : program ini bersifat case sensitive sehingga besar kecilnya huruf
berpengaruh.
Tugas
1. Buatlah sebuah Program untuk mencetak bilangan terbesar dari 5 buah
bilangan yang dimasukkan oleh user, dengan cara membandingkan bilangan
sebelumnya dengan bilangan berikutnya. Misalnya bilangan tersebut A, B, C,
D, dan E maka A dan B diperbandingkan. Jika A lebih besar dari B maka A
dibandingkan dengan C, jika A lebih besar dari C maka A dibandingkan
dengan D, demikian seterusnya sampai didapat nilai yang terbesar.
2. Buatlah sebuah program untuk menentukan kategori nilai yang diperoleh
seorang mahasiswa :
a. Apabila mendapat nilai A maka akan masuk kategori Excellent
b. Apabila mendapat nilai B maka akan masuk kategori Very Good
c. Apabila mendapat nilai C maka akan masuk kategori Good
d. Apabila mendapat nilai D maka akan masuk kategori Fair
e. Apabila mendapat nilai E maka akan masuk kategori Poor
f. Apabila menginput nilai selain yang diatas maka akan muncul pesan
“Invalid Grade”
3. Praktikkan program berikut dan buat flowchartnya (hasilnya discreenshot dan
dianalisis di laporan)
4. Buatlah program serta algoritma dari flowchart berikut :
BAB VI
PERULANGAN
Perulangan atau biasa disebut dengan “looping” adalah proses yang dilakukan secara
berulang-ulang sampai batas yang ditentukan. Biasanya, bila dalam proses perulangan tidak
disertakan batasnya maka kode program akan error karena proses itu akan terjadi berulang
terus tak terhingga sementara variabel dalam komputer sangatlah terbatas. Dalam
perulangan, umumnya terdiri dari 3 komponen, yaitu :
Contoh Program 1:
#include <iostream>
using namespace std;
int main(){
int x=1; //awal variabel
while(x<=10) //batas akhir perulangan
{
cout<<x<<" Bahasa C++"<<endl;
x++; //variabel x ditambah 1
}
return 0;
}
Pada perulangan while diatas, proses atau perintah mencetak kata-kata “Bahasa C+
+” akan terus dilakukan selama variabel x masih kurang atau sama dengan 10.
Setiap kali melakukan perulangan, nilai dari variabel x akan bertambah 1.
Contoh Program 2 :
#include <iostream>
using namespace std;
int main(){
int i=1, x;
while (i<=3)
{x=1;
while (x<=i)
{cout<<x;
x=x+1;
}
cout<<endl;
i=i+1;
}
return 0;
}
Keterangan:
Inisialisasi : pernyataan untuk menyatakan keadaan awal dari variabel kontrol
Syarat : ekspresi relasi yang menyatakan kondisi untuk keluar dari
perulangan
Penambahan : pengatur perubahan nilai variabel kontrol
Contoh Program 1:
#include <iostream>
using namespace std;
int main(){
int x;
for(x=1; x<=10; x++)
{
cout<<x<<" Bahasa C++"<<endl;
}
return 0;
}
Contoh program 2 :
/*Mencari total dan rata-rata bilangan menggunakan for*/
#include <iostream>
using namespace std;
int main(){
float r,i,x, t=0;
int y;
for(y=1; y<=3; y++)
for(i=0; i<=2; i++)
{
cout<<"Entry bilangan "<<y<<" : ";
cin>>x;
t=t+x;
y=y+1;
}
cout<<endl<<"Total : "<<t;
r=t/i;
cout<<endl<<"Rata-rata : "<<r;
return 0;
}
Tugas
1. Buatlah program untuk mencetak 10 bilangan prima pertama
2. Buatlah program untuk menampilkan sederetan angka genap dan ganjil beserta
jumlahnya. Contoh :
2 3 5 7 9 = 25
4 6 8 10 = 30
3. Buatlah program untuk mencetak tampilan sebagai berikut :
BAB VII
ARRAY
Array merupakan kumpulan dari nilai-nilai data yang bertipe sama dalam urutan tertentu
yang menggunakan nama yang sama. Letak atau posisi dari elemen array ditunjukkan oleh
suatu index. Dilihat dari dimensinya, array dapat dibagi menjadi array dimensi satu, array
dimensi dua, dan array multi dimensi.
1. ARRAY DIMENSI SATU
Setiap elemen array dapat diakses melalui indeks.
Indeks array secara default dimulai dari 0.
Deklarasi array
Bentuk umum:
Tipe_array nama_array[ukuran];
Contoh:
Nilai[0] Nilai[1] Nilai[2] Nilai[3] Nilai[4]
int Nilai[5];
70 80 82 60 75
Contoh Program:
#include <iostream>
using namespace std;
int main()
{ int nilai[5]; //Deklarasi array dengan 5 elemen berisi int
CATATAN :
String juga sebenarnya merupakan array yang bertipe karakter. Jumlah elemen array
menyatakan jumah string.
Contoh aplikasi array satu dimensi:
#include<iostream>
using namespace std;
int main()
{ string hewan[5];
for (int i = 1; i < 5; i++)
{ cout << "Tulis nama hewan " << i << " " << hewan[i];
cin >> hewan[i]; }
cout << endl << "Nama hewan yang dituliskan " << endl;
for (int i = 1; i < 5; i++)
{ cout << hewan[i] << endl; } }
Contoh Program 1:
/* Program penjumlahan matriks dimensi dua */
#include <iostream>
using namespace std;
int main()
// Isi matrika
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
{ cout<<"matrik a ["<<i<<"] ["<<j<<"] = ";
cin>>matrika[i][j]; }
} cout<<endl;
// Menampilkan matrika
cout<<"\nMatrik a\n";
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
{ cout<<matrika[i][j]<<" "; }
cout<<endl; }
// Menampilkan matrikb
cout<<"\nMatrik b\n";
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
{ cout<<matrikb[i][j]<<" "; }
cout<<endl; }
Contoh Program 2:
//Program pembuatan tabel penjualan pada PT X
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{ int i, j; int data_jual[4][6];
for(i=1;i<=3;i++)
{ for(j=1;j<=3;j++)
{ cout << "Data Ke - "<<i<<" "<<j<<endl;
cout << "Jumlah Penjualan : "; cin >> data_jual[i]
[j];}}
for(i=1;i<=3;i++)
{ cout << setiosflags(ios::left) << setw(8) << i;
for(j=1;j<=3;j++)
{ cout<<setiosflags(ios::left) << setw(3);
cout<<data_jual[i][j]; cout<<" "; }
cout<<endl; }
cout << "-----------------------------" << endl; }
cout << endl << "matrik invers \n\n=" << "1/" << det << " x
[" << matrik[1][1] << " " << -matrik[0][1] << "]";
cout << "\n[" << -matrik[1][0] << " " << matrik[0][0] <<"]";
cout << "\n Jadi matrik inversnya adalah = \n";
cout << "[" << a << " " << b << "]" << endl;
cout << "[" << c << " " << d << "]"; }
Contoh Program:
#include <iostream>
using namespace std;
int main()
TUGAS
1. Buatlah sebuah program untuk menginput, menghitung dan mencetak perkalian
matriks 3 x 3
2. Jelaskan apa yang tercetak dari program berikut ini :
#include <iostream>
#define SIZE 10
using namespace std;
int whatIsThis(int [], int);
int main()
{ int total, a[SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
total = whatIsThis(a, SIZE);
cout << "\nNilai variabel total adalah " << total <<
endl;}
int whatIsThis(int b[], int size)
{ if (size == 1)
return b[0];
else
return b[size-1] + whatIsThis(b, size-1); }
BAB VIII
FUNGSI PUSTAKA
1. PENGERTIAN FUNGSI
Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan
suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Fungsi
merupakan elemen utama dalam bahasa C++ karena bahasa C++ sendiri terbentuk dari
kumpulan fungsi-fungsi. Dalam setiap program bahasa C++, minimal terdapat satu
fungsi yaitu fungsi main(). Fungsi banyak diterapkan dalam program-program C++ yang
terstruktur. Keuntungan penggunaan fungsi dalam program yaitu program akan memiliki
struktur yang jelas (mempunyai readability yang tinggi) dan juga akan menghindari
penulisan bagian program yang sama.
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 kapital.
Bentuk umum : strupr(string);
strlwr()
Digunakan untuk mengubah setiap huruf dari suatu string menjadi huruf kecil.
Bentuk umum : strlwr(string);
Contoh Program:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{ char satu[30] = "Fakultas Sekolah Vokasi";
char dua[30] = " Universitas Gadjah Mada";
strcat(satu, dua);
cout << "Hasil penggabungannya : " << satu << endl;
cout << "Diubah menjadi huruf kapital: " <<
strupr(satu);
cout << endl;
cout << "Diubah menjadi huruf kecil: " << strlwr(satu);
cout << endl; }
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);
Contoh Program :
#include <iostream>
#include <cstring>
using namespace std;
int main()
{ char string1[5], string2[5]; int hasil;
cout << "Masukkan sembarang 1 : "; cin >> string1;
cout << "Masukkan sembarang 2 : "; cin >> string2;
cout << endl;
hasil = strcmp(string1, string2);
if(hasil > 0)
cout << string1 << " > " << string2 << endl;
else if(hasil == 0)
cout << string1 << " = " << string2 << endl;
else
cout << string1 << " < " << string2 << endl; }
Contoh Program:
#include <iostream>
#include <cctype>
using namespace std;
int main()
{ char kar;
cout << "Masukkan sebuah karakter : "; cin >> kar;
cout << endl << endl;
if(isupper(kar)) //Jika “kar” huruf kapital
{ cout << kar << " adalah huruf besar" << endl;
cout << "Huruf kecilnya adalah : ";
kar = tolower(kar); cout << kar; }
else if(islower(kar)) //Jika “kar” huruf kecil
{ cout << kar << " adalah huruf kecil" << endl;
cout << "Huruf besarnya adalah : ";
kar = toupper(kar); cout << kar; }
else if(isdigit(kar)) //Jika “kar” adalah digit
cout << kar << " adalah karakter digit";
else
cout << kar <<" bukan huruf besar, kecil, atau
digit";}
// Hitung pangkat
float result = pow(x,y);
cout<<x<<" pangkat "<< y <<" = "<< result << endl <<
endl;
cout<<"\n***** MENGHITUNG NILAI DARI AKAR Z *****"<<
endl;
cout<< endl << "Masukkan nilai Z : "; cin >> z;
// Hitung akar
float hasil = sqrt(z);
cout<<"Akar dari "<< z <<" = "<< hasil << endl; return
0;}
sin(), cos(), tan()
Masing-masing digunakan untuk menghitung nilai sinus, cosinus dan tangens
dari suatu sudut dalam bentuk radian.
Bentuk umum : sin(sudut); cos(sudut); tan(sudut);
Contoh Program:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{ float x;
cout << "\n===== MENGHITUNG SUDUT DALAM RADIAN =====\n";
cout << endl;
cout << "Masukkan sudut : "; cin >> x;
cout << "sin(" << x << "): " << sin(x) << endl;
cout << "cos(" << x << "): " << cos(x) << endl;
cout << "tan(" << x << "): " << tan(x) << endl;
return 0; }
atof()
Digunakan untuk mengonversi nilai string menjadi bilangan bertipe double.
Bentuk umum : atof(char x);
atoi ()
Digunakan untuk mengonversi nilai string menjadi bilangan bertipe integer.
Bentuk umum : atoi(char x);
Contoh Program:
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
int main()
{ char x[4] = "100", y[5] = "10.3";
int a; float b;
a = atoi(x); b = atof(y);
cout << "Semula A dan B memiliki nilai" << endl;
cout << "A = " << x << " B = " << y << endl << endl;
cout << "Setelah dikonversi lalu ditambahkan angka 10";
cout << endl << "A = " << a+10 << " B = " << b+10;}
div()
Digunakan untuk menghitung hasil pembagian dan sisa pembagian.
Bentuk umum : div_t div(int x, int y)
Strukturnya :
typedef struct
{ int dout: // hasil pembagian
int rem // sisa pembagian
} div t;
Contoh Program :
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{ int x, y; div_t hasil;
cout << "Menghitung sisa dan hasil pembagian x dan y\n";
cout << "x = "; cin >> x;
cout << "y = "; cin >> y;
hasil = div(x,y);
cout << "\n\n" << x << " dibagi " << y << " = " <<
hasil.quot << " sisa " << hasil.rem << endl; }
max()
Digunakan untuk menentukan nilai maksimal dari dua buah bilangan.
Bentuk umum : max(bilangan 1, bilangan2);
min()
Digunakan untuk menentukan bilangan terkecil dari dua buah bilangan.
Bentuk umum : min(bilangan1, bilangan2);
Contoh Program:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{ int x, y, z;
cout<<"Menentukan bilangan terbesar dan terkecil" <<
endl;
cout<<"X = "; cin >> x;
cout<<"Y = "; cin >> y;
cout<<"Z = "; cin >> z;
cout<<"\nBilangan terbesar = "<<max(max(x, y), z) <<
endl;
cout<< "Bilangan terkecil = "<<min(min(x, y), z); }
TUGAS
1. Buat program untuk menghitung persamaa kuadrat 5x2 + 10x + 100 = 0.
2. Buat program untuk menampilkan tabel sinus dan cosinus seperti pada gambar
dibawah ini
BAB IX
Deklarasi Fungsi
Pembuatan fungsi sendiri terpisah dari fungsi utama. Sebelum digunakan (dipanggil),
suatu fungsi harus dideklarasikan dan didefinisikan terlebih dahulu. Bentuk umum
pendeklarasian fungsi adalah:
tipe_fungsi nama_fungsi(parameter_fungsi);
Sedangkan bentuk umum pendefinisian fungsi adalah :
Tipe_fungsi nama_fungsi(parameter_fungsi)
{ statement
statement
………………………
}
Hal-hal yang perlu diperhatikan dalam penggunaan fungsi :
Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungsi 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 1:
#include <iostream>
using namespace std;
Contoh Program 2:
/* Program menghitung nilai faktorial */
#include <iostream>
using namespace std;
long int faktorial(int N); // prototype fungsi faktorial()
int main()
{ int N; long int fak;
cout << "Berapa factorial ? "; cin >> N;
fak = faktorial(N); // pemanggilan fungsi faktorial()
cout << N << "! = " << fak << endl; }
{ return(a+b);
}
Sedangkan parameter aktual terdapat pada pemanggilan fungsi :
int main()
{ ……………
…………..
c = tambah(a, b); //parameter aktual
…………..
}
Contoh Program:
#include <iostream>
using namespace std;
void tukar(int x, int y); /* pendeklarasian fungsi */
int main()
{ int a,b; a = 15; b = 10;
cout << "Nilai sebelum pemanggilan fungsi\n";
Contoh Program:
#include <iostream>
using namespace std;
void tukar(int *px, int *py);
int main()
{ int a,b; a = 15; b = 10;
cout << "Nilai sebelum pemanggilan fungsi" << endl;
cout << "a = " << a << " b = " << b << endl << endl;
tukar(&a,&b); // parameter alamata dan alamat b
cout << "Nilai setelah pemanggilan fungsi" << endl;
cout << "a = " << a << " b = " << b << endl << endl; }
Contoh Program:
#include <iostream>
using namespace std;
void tampil(void);
int i = 25; // variabel global
int main()
{ cout << "Nilai i di fungsi main() = " << i << endl << endl;
tampil();
i = i * 4; //nilai i yang dikali 4 adalah 25 (global) bukan
10
cout << "Nilai i di fungsi main() sekarang = " << i << endl;}
void tampil(void)
{ int i = 10; // variabel lokal
cout << "Nilai i di fungsi tampil() = " << i << endl <<
endl;}
Variabel Statis
Variabel statis adalah variabel yang nilainya tetap dan bisa berupa variabel lokal
(internal) dan variabel global (eksternal). Sifat-sifat variabel statis :
Jika bersifat internal (lokal), maka variabel hanya dikenal oleh fungsi tempat
variabel dideklarasikan.
Jika bersifat eksternal (global), maka variabel dapat dipergunakan oleh
semua fungsi yang terletak pada program yang sama.
Nilai variabel statis tidak akan hilang walau eksekusi terhadap fungsi telah
berakhir.
Inisialisasi hanya perlu dilakukan sekali saja, yaitu pada saat fungsi dipanggil
pertama kali.
Jika tidak diberi nilai awal secara otomatis berisi nilai nol. Dideklarasikan
dengan menambahkan kata “static”.
Variabel Register
Variabel Register adalah variabel yang nilainya disimpan dalam register CPU,
bukan dalam memori RAM. Sifat-sifat variabel register :
Hanya dapat diterapkan pada variabel lokal yang bertipe int, char, dan
pointer.
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 <iostream>
using namespace std;
Fungsi Rekursif
Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri.
Contoh Program:
#include <iostream>
using namespace std;
long int faktorial(int N); // prototype fungsi faktorial
int main()
{ int N; cout << "Berapa faktorial ? "; cin >> N;
cout<<"\nFaktorial dari " << N <<" = "<< faktorial(N) <<
endl;}
long int faktorial(int N) // definisi fungsi faktorial
{ if(N==0)
return(1);
else
/*fungsi faktorial() memanggil fungsi faktorial() */
return(N * faktorial(N - 1)); }
TUGAS
1. Buat fungsi untuk menentukan apakah suatu bilangan bulat bersifat ganjil atau
genap. Jika genap maka fungsi menghasilkan nilai 1, dan 0 untuk selainnya.
2. Buat sebuah program untuk menghitung luas segitiga dan persegi.
BAB X
POINTER
1. PENGERTIAN POINTER
Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari
suatu variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel
lain) di dalam memori. Contoh, jika sebuah variabel berisi alamat dari variabel lain,
variabel pertama dikatakan menunjuk ke variabel kedua.
Operator Pointer ada dua, yaitu :
Operator &
Operator & bersifat unary (hanya memerlukan satu operand saja).
Operator & menghasilkan alamat dari operandnya.
Operator *
Operator * bersifat unary (hanya memerlukan satu operand saja).
Operator * menghasilkan nilai yang berada pada sebuah alamat.
2. DEKLARASI POINTER
Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih
dahulu sebelum digunakan. Bentuk Umum : Tipe_data *nama_pointer;
Tipe data pointer mendefinisikan tipe dari objek yang ditunjuk oleh pointer. Secara
teknis, tipe apapun dari pointer dapat menunjukkan lokasi (dimanapun) dalam memori.
Bahkan operasi pointer dapat dilaksanakan relatif terhadap tipe dasar apapun yang
ditunjuk. Contoh, ketika kita mendeklarasikan pointer dengan tipe int*, kompiler akan
menganggap alamat yang ditunjuk menyimpan nilai integer - walaupun sebenarnya
bukan (sebuah pointer int* selalu menganggap bahwa ia menunjuk ke sebuah obyek
bertipe integer, tidak peduli isi sebenarnya). Karenanya, sebelum mendeklarasikan
sebuah pointer, pastikan tipenya sesuai dengan tipe obyek yang akan ditunjuk.
Contoh :
int *px;
char *sh;
Contoh Program:
#include <iostream>
using namespace std;
int main()
{ int x, y; /* x dan y bertipe int */
int *px; /* px pointer yang menunjuk objek */
x = 87;
px = &x; /* px berisi alamat dari x */
y = *px; /* y berisi nilai yang ditunjuk px */
cout << "Alamat x = " << &x << endl;
cout << "Isi px = " << px << endl;
cout << "Isi x = " << x << endl;
cout << "Nilai yang ditunjuk oleh px = " << *px << endl;
cout << "Nilai y = " << y << endl; }
3. OPERASI POINTER
Operasi Penugasan
Suatu variabel pointer seperti halnya variabel yang lain, juga bisa mengalami operasi
penugasan. Nilai dari suatu variabel pointer dapat disalin ke variabel pointer yang
lain.
Contoh Program:
#include <iostream>
using namespace std;
int main()
{ float *x1, *x2, y; y = 13.45;
x1 = &y; /* Alamat dari y disalin ke variabel x1 */
x2 = x1; /* Isi variabel x1 disalin ke variabel x2 */
cout<<"Nilai variabel y = "<<y<<" ada di alamat "<< x1;
cout<<"\nNilai variabel y = "<<y<<" ada di alamat "<<
x2; }
Operasi Aritmatika
Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer
saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan.
Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index
selanjutnya) dalam memori. Begitu juga operasi pengurangan.
Contoh Program:
#include <iostream>
using namespace std;
int main()
{ int nilai[3], *penunjuk;
nilai[0] = 125; nilai[1] = 345; nilai[2] = 750;
penunjuk = &nilai[0];
cout<<"Nilai "<<*penunjuk<<" ada di alamat " << penunjuk;
cout<<"\nNilai "<<*(penunjuk+1)<<" ada di alamat " <<
penunjuk+1;
cout<<"\nNilai "<<*(penunjuk+2)<<" ada di alamat " <<
penunjuk+2; }
Operasi Logika
Suatu pointer juga dapat dikenai operasi logika.
Contoh Program:
#include <iostream>
using namespace std;
int main()
{ int a = 100, b = 200, *pa, *pb;
pa = &a; pb = &b;
if(pa < pb)
cout << "pa menunjuk ke memori lebih rendah dari pb\n";
if(pa == pb)
cout << "pa menunjuk ke memori yang sama dengan pb\n";
if(pa > pb)
cout << "pa menunjuk ke memori lebih tinggi dari
pb\n";}
Contoh Program 2:
#include <iostream>
using namespace std;
void misteril (char *);
int main()
{ char string[] = "characters";
cout << "String sebelum proses adalah " << string << endl;
misteril (string);
cout << "\nString setelah proses adalah " << string; }
void misteril (char *s)
{ while (*s != '\0') {
if (*s >='a' && *s <= 'z')
*s -= 32; ++s; } }
TUGAS
Apa yang tercetak dari program-program berikut ini ?
1. #include <iostream>
using namespace std;
void misteri2(const char *);
int main()
{ const char *string = "Teknik Elektro dan Informatika";
misteri2(string); cout << endl; return 0; }
void misteri2(const char *s) {
for ( ; *s != '\0' ; s++) cout << *s; }
2. #include <iostream>
using namespace std;
int misteri3(const char *);
int main()
{ char string[80];
cout << "Ketik sebuah string : "; cin >> string;
cout << misteri3(string) << endl; }
int misteri3(const char *s)
{ int x = 0;
for ( ; *s != '\0' ; s++)
++x;
return x; }
BAB XI
OPERASI FILE
Pada prinsipnya operasi yang dilakukan pada file terdiri dari 3 tahapan :
1. Membuka file
2. Melakukan pemrosesan pada file
3. Menutup file
Dalam melakukan operasi file dibutuhkan fungsi-fungsi yang berhubungan
dengan operasi file yang terdapat pada file fstream. Oleh sebab itu, untuk dapat
melakukan operasi file, maka preprocessor directive berikut ditambahkan:
#include <fstream>
1. MEMBUKA FILE
Pembukaan dari suatu file mempunyai 2 tujuan, yaitu :
1. Membuka file untuk ditulis/direkam
2. Membuka file untuk dibaca
2. MENUTUP FILE
Setelah pemrosesan file berakhir, maka file perlu ditutup. Langkah ini dilakukan dengan
cara : file_objek.close();
Pemakaian fungsi close() sifatnya optional. Bila digunakan fungsi ini maka compiler tidak
akan mengeluarkan pesan error.
3. FILE TEKS
A. Menulis/Merekan Data Teks
Contoh Program:
// Merekam atau menulis File Text
#include <iostream>
#include <fstream>
using namespace std;
int main()
{ cout << "Latihan Merekam data ke file\n";
ofstream latihan ("datateks.txt");
for (int i=1; i<=10; i++)
latihan << "Belajar Operasi File" << endl;
cout << "Data telah selesai direkam..."<< endl;
latihan.close(); }
Contoh Program:
a. Menulis/Merekam Data
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
using namespace std;
struct datamhs
{ char nim[15]; char nama[25]; float ipk;
} mhs;
int main()
{ ofstream file_mhs ("datamhs.dat", ios::app);
if (!file_mhs)
{cerr << "File could not be opened" << endl;
exit(1); } // prototype in cstdlib
char jwb = 'y'; cout << "Input Data Mahasiswa" << endl;
while (jwb == 'Y' || jwb == 'y')
{cout << endl; cout << "NIM = "; cin >> mhs.nim;
cout << "Nama = "; cin >> mhs.nama;
cout << "IPK = "; cin >> mhs.ipk;
file_mhs.write((char*)&mhs, sizeof(mhs));
cout << "Ada Data Lagi [Y/T] = "; cin >> jwb; }
file_mhs.close(); }
b. Membaca Isi File
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
#include <iomanip>
using namespace std;
void infoMhs();
struct datamhs
{ char nim[15]; char nama[25]; float ipk;
} mhs;
int main()
{ ifstream file_mhs ("datamhs.dat", ios::in);
if (!file_mhs)
{cerr<<"File could not be opened"<<endl;
exit(1); }
cout << "-------------------------------------------" <<
endl;
cout << setiosflags(ios::left) << setw(8) << "No." <<
setw(15) << "NIM" << setw(25) << "Nama" << setw(5) << "IPK"
<< setw(20) << "Predikat" <<endl;
cout << "-------------------------------------------" <<
endl;
file_mhs.read((char *)&mhs,sizeof(mhs));
while (!file_mhs.eof())
{ infoMhs();
file_mhs.read((char*)&mhs, sizeof(mhs)); }
cout << "-------------------------------------------" <<
endl;
file_mhs.close(); }
int no=0;
char pre[20];
void infoMhs()
{ no++;
if (mhs.ipk>=3.50)
strcpy(pre,"Sangat Memuaskan");
else if (mhs.ipk>=3.00)
strcpy(pre,"Memuaskan");
else if (mhs.ipk>=2.50)
strcpy(pre,"Cukup");
cout << setiosflags(ios::left) << no << ". " <<
setw(15) << mhs.nim << setw(25) << mhs.nama << setw(5) <<
setprecision(3) << setiosflags(ios::showpoint | ios::left)
<< setiosflags(ios::left) << mhs.ipk << setw(20) << pre <<
endl;}
TUGAS
1. Buat program untuk merekam 5 data nama mahasiswa yang diinputkan dengan nama
file objek mhs dan nama file teks “nama_mhs.txt”
2. Buat program untuk menampilkan hasil rekam data pada nomor 1.
BAB XII
PEMROGRAMAN MODULAR
A. Definisi
Dalam sebuah program, seringkali pemrogram perlu memecah persoalan yang kompleks
menjadi beberapa bagian yang lebih mudah diselesaikan. Ide inilah yang mencetuskan
struktur pemrograman modular, yaitu memecah persoalan menjadi subsub persoalan yang
biasa disebut subprogram.
Bayangkan sebuah program yang dibuat untuk menghitung nilai rata-rata dari sekumpulan
nilai integer. Dalam prosesnya, program melakukan perhitungan tersebut dalam dua
langkah, yaitu menjumlahkan seluruh nilai, kemudian membaginya dengan banyaknya nilai
yang tersedia. Dengan demikian program tersebut dapat dipecah menjadi dua subprogram,
yaitu subprogram penjumlahan dan subprogram pembagian.
Dalam pemrograman, dikenal dua tipe subprogram yang biasa digunakan untuk memecah
persoalan kompleks menjadi lebih sederhana, yaitu fungsi (function) dan prosedur
(procedure). Kedua tipe subprogram ini dapat digunakan bersamaan maupun salah satunya
saja dalam sebuah program. Masing-masing tipe subprogram memiliki karakteristik dan
perilaku yang berbeda sehingga penggunaannya dalam program juga berbeda-beda.
Subprogram sebagai bagian dari program utama wajib mendefinisikan kondisi awal
(initial state/I.S.) sebelum proses dalam subprogram dieksekusi dan juga
mendefinisikan kondisi akhir (final state/F.S.) yang berupa hasil proses (output) atau
perubahan nilai dalam variabel tertentu (khusus untuk fungsi saja).
Beberapa fungsi dan prosedur telah terdefinisi dan dapat langsung digunakan oleh
pemrogram dalam sebuah program dengan mendefinisikan variabel-variabel yang
diperlukan. Selain fungsi dan prosedur yang telah terdefinisi tersebut, pemrogram juga dapat
membuat sendiri fungsi dan prosedur yang diperlukannya dalam sebuah program. Dalam
membuat sebuah subprogram, pemrogram dapat menyimpannya dalam salah satu dari dua
lokasi berikut ini:
1. Dalam file yang sama dengan program utama: dapat dilakukan jika subprogram
sedikit dan berukuran kecil sehingga relatif mudah dikelola dalam sebuah file
2. Dalam file yang terpisah: biasanya dilakukan jika subprogram sudah terlalu banyak
sehingga sulit dikelola, atau jika pemrogram menginginkan supaya subprogram
dapat digunakan di beberapa program utama sekaligus
C. Fungsi
Fungsi adalah subprogram yang menerima data masukan, melakukan beberapa
perhitungan dari data tersebut, kemudian mengembalikan output berupa sebuah data
baru. Dengan kata lain, sebuah fungsi memetakan sebuah nilai (dalam domain) menjadi
nilai lain (dalam range) dengan operasi/ proses tertentu. Pendeklarasian fungsi
merupakan salah satu cara memecah persoalan ke dalam beberapa sub persoalan yang
lebih mudah diselesaikan. Dalam pembuatan sebuah fungsi, pemrogram harus
mendefinisikan:
nama fungsi
Tipe data yang dibuat/ dihasilkan oleh fungsi
Daftar parameter yang menyatakan data yang diperlukan oleh fungsi
Satu atau lebih instruksi yang melakukan perhitungan
Selanjutnya, fungsi yang sudah didefinisikan dapat digunakan dalam program utama
maupun dalam fungsi lainnya dengan cara memanggil nama fungsi dan memberikan
parameter yang diperlukan oleh fungsi tersebut. Fungsi bekerja menurut mekanisme
pemanggilan-pengembalian (callreturn-mechanism). Tahapan dalam mekanisme tersebut
adalah:
1. Fungsi dipanggil dari program utama maupun fungsi lainnya
2. Sekumpulan operasi dalam fungsi dieksekusi
3. Hasil eksekusi dikembalikan ke program utama atau fungsi lain yang memanggilnya.
Contoh fungsi :
int rata(int x, int y, int z)
{
int ave;
ave = (x + y + z)/3;
return(ave);
}
Cara melewatkan parameter ke dalam suatu fungsi dapat dilakukan melalui dua cara
yaitu:
a. Pelewatan parameter melalui nilai (call by value) :
- Pelewatan parameter ke dalam fungsi dengan menyalin nilai dari suatu variabel
aktualnya. Maksudnya adalah fungsi menerima masukan berupa nilai, bukan
alamat memori letak dari datanya dan nilai tersebut disimpan di alamat memori
yang terpisah dari nilai aslinya yang digunakan oleh bagian program yang
memanggil fungsi.
Contoh :
#include <iostream>
using namespace std;
int kali(int a, int b, int c) //parameter formal
{
int x;
x = a*b*c;
return(x);
}
int main()
{
int a,b,c;
cout<<"Masukkan angka 1 : "; cin>>a;
cout<<"Masukkan angka 2 : "; cin>>b;
cout<<"Masukkan angka 3 : "; cin>>c;
cout<<"Hasil perkalian ketiga bilangan :
"<<kali(a,b,c); //parameter aktual
return 0;
}
Contoh :
#include <iostream>
using namespace std;
void desc_sort(int *bil1, int *bil2) // parameter formal
{
if(*bil1<*bil2)
{
*bil1 = *bil1 + *bil2;
*bil2 = *bil1 - *bil2;
*bil1 = *bil1 - *bil2;
}
}
int main()
{
int a,b,c;
cout<<"Masukkan angka 1 : "; cin>>a;
cout<<"Masukkan angka 2 : "; cin>>b;
cout<<"Masukkan angka 3 : "; cin>>c;
desc_sort(&a, &b); //parameter aktual
desc_sort(&a, &c); //parameter aktual
desc_sort(&b, &c); //parameter aktual
cout<<"Hasil descending sort : "<<a<<" "<<b<<" "<<c;
return 0;
D. Prosedur
Cara lain memecah persoalan pemrograman ke dalam sub-sub persoalan pemrograman
adalah dengan mendeklarasikan prosedur. Prosedur adalah sederetan instruksi yang
diberi nama, dan melakukan tujuan tertentu. Seperti halnya pada fungsi, prosedur bekerja
dengan mekanisme pemanggilan pengembalian (call-return mechanism), yaitu dengan
urutan langkah:
1. Prosedur dipanggil oleh kode pemanggil (program utama maupun prosedur lainnya)
2. Sekumpulan operasi yang disimpan dalam prosedur dieksekusi
3. Kontrol dikembalikan ke kode pemanggil
Dengan catatan bahwa nama prosedur dan nama parameternya harus disebutkan dalam
blok kode pemanggil. Berbeda dengan fungsi, daftar parameter pada procedure terbagi
menjadi dua yaitu parameter input dan parameter output. Daftar parameter boleh kosong
(tidak ada parameter input maupun output). Jika parameter tidak kosong (minimal ada
satu parameter) maka harus dituliskan nama parameter beserta tipe datanya.
Prosedur tanpa parameter memanfaatkan nilai dari variabel yang terdefinisi dalam kode
program utama/prosedur lain yang memanggilnya. Prosedur tanpa parameter ini hanya
dapat dieksekusi jika nilai dari variabel yang diperlukan dalam prosedur sudah
didefinisikan dalam kode program utama/prosedur lain yang memanggilnya.
Prosedur dengan parameter dibuat untuk mengeksekusi sekumpulan instruksi dengan
parameter yang berbeda-beda. Nama parameter yang dituliskan pada definisi /
spesifikasi prosedur disebut dengan parameter formal. Sedangkan parameter yang
dituliskan pada pemanggilan prosedur disebut parameter aktual.
Parameter formal adalah nama-nama variabel yang dipakai dalam mendefinisikan
prosedur, dan membuat prosedur tersebut dapat dieksekusi dengan variabel yang
berbeda saat pemanggilan. Terdapat tiga tipe parameter formal:
- parameter input, yaitu parameter yang diperlukan prosedur sebagai masukan untuk
melakukan aksi yang efektif
- parameter output, yaitu parameter yang akan menyimpan nilai yang dihasilkan oleh
prosedur
- parameter input/output, yaitu parameter yang diperlukan prosedur sebagai masukan
untuk melakukan aksi tertentu, yang pada akhir prosedur akan diisi dengan nilai baru
sebagai hasil eksekusi prosedur.
Parameter aktual adalah variabel / konstanta yang dipakai ketika prosedur dipanggil oleh
program utama / prosedur lain. Parameter aktual dapat berupa variabel / konstanta, tapi
parameter output harus berupa variabel karena akan menyimpan hasil eksekusi
prosedur.
Tugas
2. Kasus 2
3. Kasus 3
4. Kasus 4