Anda di halaman 1dari 67

Algoritma dan Pemrograman 2

( Pengantar, Elemen-elemen Dasar Bahasa Pemrograman


Prosedural)

PENGERTIAN DASAR
Algoritma :
 Rangkaian langkah-langkah/alur pikiran untuk menyelesaikan suatu masalah
yang sifatnya logis dan sistimatis
Sifat-sifat Algoritma :
 Mudah dibaca/jelas maksudnya (tiap langkah jelas uraiannya)
 Berawal dan berakhir
 Tidak harus ada data masukan yang dimasukkan dari luar
 Paling tidak ada satu keluaran
 Tiap instruksi harus efektif
Bahasa pemrograman :
 Bahasa komputer yang digunakan dalam penulisan program
Pemrogram/Programmer :
 Orang yang membuat program komputer
Pemrograman :
 Kegiatan merancang atau menulis program komputer

PERANGKAT UTAMA KOMPUTER

TAHAP PELAKSANAAN PROGRAM OLEH KOMPUTER

T-Informatika FT UNPAM
Algoritma dan Pemrograman 3

STRUKTUR DASAR ALGORITMA


Algoritma berupa langkah-langkah penyelesaian suatu masalah. Langkah-langkah
tersebut dapat berupa :
1. Runtunan (sequence)
2. Pimilihan (Selection)
3. Pengulangan (repetition)

NOTASI ALGORITMIK
Notasi Algoritmik bukan notasi bahasa pemrograman sehingga siapapun dapat
membuat notasi algoritmik yang berbeda. Namun demikian ketaatan atas notasi
perlu diperhatikan untuk menghindari kekeliruan.

Beberapa notasi yang digunakan untuk menulis algoritma :


1) Untaian kalimat deskriptif
Setiap langkah dinyatakan dengan bahasa yang gamblang/jelas
2) Menggunakan diagram alir (flow chart)
3) Menggunakan pseuo-code

Pseudo : semu, tidak sebenarnya, pura-pura; adalah notasi yang menyerupai notasi
bahasa pemrograman tingkat tinggi

SIMBOL-SIMBOL DIAGRAM ALIR


Simbol Maksud Simbol Maksud

Titik sambungan pada


Terminal (START, END)
halaman yang sama

Input/Output (READ, Titik konektor yang


WRITE) berada pada halaman lain

Proses (menyatakan Call (Memanggil


assignment statement) subprogram)

Decision (YES, NO) Dokumen

T-Informatika FT UNPAM
Algoritma dan Pemrograman 4

Display Stored Data

Preparation (Pemberian
Alur proses
nilai awal suatu variabel)

PSEUDO-CODE
Pernyataan Notasi Maksud
algoritmik
write(x) Nilai x dicetak di piranti keluaran
Penulisan write(x,y) Nilai x dan y dicetak di piranti keluaran
write(“Hello”) Text Hello dicetak di piranti keluaran
read(a) Baca nilai a
Pembacaan
read(a,b) Baca nilai a,b
Penugasan bilx Isikan nilai variabel x kedalam variabel bil

Teks algoritma (pseudo-code) terdiri dari :


 Head(Judul) : memberikan nama pada algoritma; umumnya nama sudah dapat
memberi gambaran pada prosedur penyelesaian masalah atau masalah yang
akan diselesaikan
 Deklarasi : menyatakan jenis dari setiap elemen data (variabel) yang akan
digunakan dalam algoritma.
 Deskripsi : merupakan inti prosedur penyelesaian masalah; meliputi
pernyataan/operasi, fungsi, penjelasan, dll.

T-Informatika FT UNPAM
Algoritma dan Pemrograman 5

CONTOH ALGORITMA

I.Untaian kalimat deskriftif

ALGORITMA Euclidean
Diberikan dua buah bilangan bulat positif m dan n (m ≥ n). Algoritma Euclidean
mencari pembagi bersama terbesar dari kedua bilangan tersebut, yaitu bilangan
positip terbesar yang habis membagi m dan n

DESKRIPSI :
1. Jika n = 0 maka
m adalah jawabannya;
Stop.
Tetapi jika n ≠ 0,
Lanjutkan ke langkah 2.
2. Bagilah m dengan n dan misalkan r adalah sisanya
3. Ganti nilai m dengan nilai n, nilai n dengan nilai r, lalu ulang kembali ke langkah 1.

II.Flow Chart III.Pseudo-code

Statement Terceta Keteranga ALGORITMA


k n Eucledian
printf(“%i”,’A’) 65 Nilai Program mencari pbt,
ASCII m dan n bil bulat
dari positif
karakter
‘A’ adalah DEKLARASI :
65 m, n : integer {bil yg
printf(“%i”,’a’) 97 Nilai akan dicari pbt-nya}
ASCII r : integer {sisa
dari hasil bagi}
karakter
‘a’ adalah DESKRIPSI :
97 read(m,n) {m ≥ n}

T-Informatika FT UNPAM
Algoritma dan Pemrograman 6

printf(“%d”,’A’ 65 Nilai while n ≠ 0 do


) ASCII r  m MOD n
dari {hitung sisa hasil bagi}
karakter mn
‘A’ adalah nr
65 endwhile
printf(“%d”,’a’) 97 Nilai {kondisi selesai
ASCII pengulangan: n=0,
dari maka pbt=m}
karakter write(m)
‘a’ adalah
97
START

Baca
m,n

YES n=
0
NO

R=m MOD n
M=n
N=r

Cetak
m

END

STRUKTUR BAHASA C++

T-Informatika FT UNPAM
Algoritma dan Pemrograman 7

Struktur Bahasa C++ terdiri dari :

 Compiler directive (preprocessor)


 Deklarasi (variabel, fungsi)
 Tubuh program
 Baris komentar

ELEMEN-ELEMEN DASAR C++

 Identifier/pengenal : suatu nama yang dipakai dalam pemrograman, umumnya


diberikan kepada nama :
 Variabel : suatu lokasi dalam memori komputer yang digunakan untuk
menyimpan nilai
 Konstanta bernama
 Tipe data
 Fungsi
 Obyek
 Tipe data dasar
 Data Obyek
 Ekspresi aritmetika
 Statemen kontrol

T-Informatika FT UNPAM
Algoritma dan Pemrograman 8

 Fungsi
Ketentuan pemberian nama :
 Terdiri dari huruf A sampai Z, atau a sampai z, atau underscore ( _ ), atau 0
sampai 9
 Karakter pertama suatu identifier harus huruf atau underscore
 Tidak boleh sama dengan kata kunci (keyword) dalam bahasa C++
 Tidak boleh ada spasi
 Case sensitive : hurup kapital dan hurup kecil diperlakukan beda
Karakter :
Elemen terkecil pada pemrograman C++ adalah karakter. Karakter dapat berupa :
o Huruf (A sampai Z, a sampai z)
o Angka ( 0 sampai 9)
o Simbol (*, !, dll)
o Kode kontrol (misal newline)
Keywords :
asm, auto, break, case, char, class, const, continue, default, delete, do, double,
else, enum, extern, float, for, friends, goto, if, inline, int, long, new, operator,
private, protected, public, register, return, short, signed, sizeof, static, struct,
switch, template, this, typedef, union, unsigned, virtual, void, volatile, while.
Kode escape :

kode karakter yang penulisannya diawali dengan simbol \.


Kod Ket. Kod Ket. Kod Ket.
e e e
\0 Karakter Null \n New line \’ Petik tunggal
\a Karakter \r Cariage \” Petik ganda
audio (bel) return
\b Backspace \t Tab \ Hexadesimal (dd:0
xdd sd FF)
\f Formfeed \v Tab vertikal \\ Menampilkan \

TIPE DATA

T-Informatika FT UNPAM
Algoritma dan Pemrograman 9

TIPE DATA DASAR JANGKAUAN NILAI


Tipe Ukuran Tipe Nilai
char,unsigned char,
1 byte char -128 sd 127
signed char
unsigned
short, unsigned short 2 byte 0 sd 255
char
int, unsigned int 4 byte short -32.768 sd 32.767
unsigned
long, unsigned long 4 byte 0 sd 65.535
short
-2.147.483.648 sd
float 4 byte long
2.147.483.647
unsigned
double 8 byte 0 sd 4.294.967.295
long
-2.147.483.648 sd
long double 8 byte int
2.147.483.647
unsigned
0 sd 4.294.967.295
int
float 1,2.10-38 sd 3,4.1038
double 2,2.10-308 sd 1,8.10308

Literal Karakter
Literal Karakter digunakan untuk menyatakan sebuah karakter. Karakter ditulis
dalam tanda petik tunggal.
Contoh :
‘a’ : karakter huruf a
‘#’ : karakter simbol #

T-Informatika FT UNPAM
Algoritma dan Pemrograman 10

‘8’ : karakter angka 8


‘\n’ : karakter newline

Literal String
String berarti deretan atau kombinasi sejumlah karakter. Literal String ditulis
dalam tanda petik ganda.
Contoh :
“Rudy Hartono”
“4 x 4 = 16”
“” : string kosong
“abc\ndef” : antara abc dan def terdapat newline
“abc\tdef” : antara abc dan def terdapat tab

Konstanta Bernama
Contoh : const double PI=3.14;
menyatakan bahwa PI adalah literal bertipe double dengan nilai 3,14. kata kunci
const menyatakan bahwa PI tak dapat diubah setelah didefinisikan.

Variabel
Menyatakan suatu lokasi dalam memori komputer yang digunakan untuk menyimpan
suatu nilai dan nilai yang ada didalamnya bisa diubah.
Deklarasi variabel :
int a;
int a, b;
int a=30;
cin>>usia;

Pernyataan
Pernyataan adalah suatu instruksi lengkap yang berdiri sendiri dan ditunjukan
untuk melaksanakan suatu tugas tertentu. Sebuah pernyataan selalu diakhiri oleh
tanda titik koma.
Contoh :
luas=panjang*lebar;
const double PI=3.14;
TIPE DATA dan MEMBACA-MENCETAK NILAI KONSTANTA

T-Informatika FT UNPAM
Algoritma dan Pemrograman 11

I.Instruksi Baca – Tulis dalam bahasa C/C++

Cetak ke layar monitor Baca dari keyboard


printf(“format”,var) gets(var) var=getch()
puts(“string”) var=getche( scanf(“format”,&va
cout<<var ) r)
var=getchar
()

II.Mencetak sebuah kalimat (literal String) pada program C.

Kode program Tercetak di monitor


//mencetak_string.cpp
#include<stdio.h>
void main(void)
{
printf("Jakarta\n"); Jakarta
puts("Jakarta"); Jakarta
printf("%s","Jakarta\n"); Jakarta
}

III.Mencetak sebuah karakter pada program C.


Sebuah karakter disimpan dalam satu BYTE (8 bit)
printf(“%c”,data);

data Hasil Keterangan


tercetak
‘AB’ A
‘a’ a
65 A kode ASCII 65 adalah karakter A
97 a kode ASCII 97 adalah karakter a
49 1 kode ASCII 49 adalah karakter 1
50 2 kode ASCII 50 adalah karakter 2
66-1 A kode ASCII 65 adalah karakter A
35* F kode ASCII 70 adalah karakter F

T-Informatika FT UNPAM
Algoritma dan Pemrograman 12

2
41 ) kode ASCII 41 adalah karakter )
297 ) kode ASCII 41 (297-256) adalah
karakter )
172 ¼ kode ASCII 172 adalah karakter ¼
171 ½ kode ASCII 171 adalah karakter ½

Catatan :
Yang dimaksud dengan karakter diatas adalah karakter ASCII (American
Standard Code for Information Interchange)

Perhatikan program berikut :

IV.Mencetak karakter escape pada program C.


Kode Program Hasil
//mencetak_escape.cpp
#include<stdio.h>
void main(void)
{
printf("Jakarta\nBali\n"); Jakarta
printf("Jakarta\bBali\n"); Bali
printf("Jakarta\rBali\n"); JakartBali
printf("Jakarta\\Bali\n"); Balirta
printf("Jakarta\'Bali\n"); Jakarta\Bali
Jakarta’Bali
printf("Jakarta\t\tBali\n"); Jakarta Bali
printf("Jakarta\"Bali\n"); Jakarta”Bali
}

V. Mencetak konstanta numerik pada program C

printf(“format”,var);
Format yang dapat digunakan :
Kode format Hasil yang tercetak
%i atau %d Numerik integer bertanda
%u Numerik integer tak bertanda
%li atau %ld Numerik long integer bertanda

T-Informatika FT UNPAM
Algoritma dan Pemrograman 13

%lu Numerik unsigned long integer


%f Numerik floating point
%e Numerik floating point
%le atau %lE Numerik floating point double precission
%Le atau %LE Numerik floating point long double
precission
%c Karakter ASCII
%x atau %X Hexadesimal Integer
%o Octal Integer

Kode program
Hasil
Kode program
Hasil
//cetak_numerik1.cpp
#include<stdio.h>
void main(void)
{
short a,b,c,d;
//-32768 s/d 32767
a=-32768;
b=-32769;
c=32767;
d=32768;
printf("a = %i\n",a);
printf("b = %i\n",b);
printf("c = %i\n",c);
printf("d = %i\n",d);
}

T-Informatika FT UNPAM
Algoritma dan Pemrograman 14

a = -32768
b = 32767
c = 32767
d = -32768
//cetak_numerik2.cpp
#include<stdio.h>
void main(void)
{
unsigned short a,b,c,d;
//0 s/d 65535
a=0;
b=-1;
c=65535;
d=65536;
printf("a = %u\n",a);
printf("b = %u\n",b);
printf("c = %u\n",c);
printf("d = %u\n",d);
}

a=0
b = 65535
c = 65535

T-Informatika FT UNPAM
Algoritma dan Pemrograman 15

d=0

short :
0
1
1
1

1
1
1
1

1
1
1
1

1
1
1
1
=
32767

1
0
0
0

0
0
0
0

T-Informatika FT UNPAM
Algoritma dan Pemrograman 16

0
0
0

0
0
0
0
=
-32768

1
0
0
0

0
0
0
0

0
0
0
0

0
0
0
1
=
-32767

1
1

T-Informatika FT UNPAM
Algoritma dan Pemrograman 17

1
1

1
1
1
1

1
1
1
1

1
1
1
1
=
-1

T-Informatika FT UNPAM
Algoritma dan Pemrograman 18

Kode program
Hasil
Kode program
Hasil
//cetak_float1.cpp
#include<stdio.h>
void main(void)
{
float a,b,c,d;
a=25;
b=25.25;
c=25.123456;
d=25.123456789;
printf("a = %f\n",a);
printf("b = %f\n",b);
printf("c = %f\n",c);
printf("d = %f\n",d);
printf("\n");
printf("a = %7.2f\n",a);
printf("b = %7.3f\n",b);
printf("c = %7.0f\n",c);
printf("d = %7.4f\n",d);
}

T-Informatika FT UNPAM
Algoritma dan Pemrograman 19

25.000000
25.250000
25.123455
25.123457

25.00
25.250
25
25.1235
//cetak_float1.cpp
#include<stdio.h>
void main(void)
{
float a,b,c,d;
a=25;
b=25.25;
c=25.123456;
d=25.123456789;
printf("a = %e\n",a);
printf("b = %E\n",b);
printf("c = %e\n",c);
printf("d = %E\n",d);
printf("\n");
printf("a = %7e\n",a);
printf("b = %5e\n",b);
printf("c = %7.0E\n",c);
printf("d = %10.2E\n",d);
}

2.500000e+001
2.525000E+001

T-Informatika FT UNPAM
Algoritma dan Pemrograman 20

2.512346e+001
2.512346E+001

2.500000e+001
2.525000e+001
3E+001
2.51E+001

VI. Menginput data melalui keyboard pada program C


//baca_keyboard1.cpp //baca_keyboard2.cpp
#include<stdio.h> #include<stdio.h>
void main(void) #include<conio.h>
{ void main(void)
char S[6]; {
printf("Inputkan String : "); char C;
gets(S); printf("Inputkan sebuah
printf("%s\n",S); karakter : ");
} C=getche();
printf("\n%c\n",C);
}
//baca_keyboard3.cpp //baca_keyboard4.cpp
#include<stdio.h> #include<stdio.h>
void main(void) #include<conio.h>
{ void main(void)
char C; {
printf("Masukan sebuah char C;
karakter : "); printf("Masukan sebuah
C=getchar(); karakter : ");
printf("%c\n",C); C=getch();
} printf("\n%c\n",C);
}

//baca_keyboard5.cpp //baca_keyboard6.cpp
#include<stdio.h> #include<stdio.h>
void main(void) void main(void)
{ {
char C,D; int C,D,E;

T-Informatika FT UNPAM
Algoritma dan Pemrograman 21

printf("Inputkan dua printf("Inputkan bilangan ke-1


karakter : "); : ");
scanf("%c",&C); scanf("%i",&C);
scanf("%c",&D); printf("Inputkan bilangan ke-
printf("%c %c\n",C,D); 2 : ");
} scanf("%i",&D);
E=C*D;
printf("%i * %i = %i\n",C,D,E);
}

MASALAH TIPE DATA


1. Char
Bila isinya diperlakukan sebagai nilai numerik,
maka bit sign :
0 : berarti nilai positif
1 : berarti nilai negatif
Nilai yang dapat ditampung berkisar dari

T-Informatika FT UNPAM
Algoritma dan Pemrograman 22

//char1.cpp Hasilny Analisis :


#include<iostream.h> a: a = 127, masih dalam jangkauannya
void main(void) 127 b = -128, masih dalam jangkauannya
{ -128 c = 128, diluar jangkauannya.
char a,b,c,d; -128 128 = 1000 0000, karena dideklarasikan
a=127; 127 sebagai char maka
b=-128; bit MSB memiliki nilai
c=128; negatif yaitu -128
d=-129; d = -129, diluar jangkauannya
129 = 1000 0001
cout<<(int)a<<endl; -129 = 0111 1111, karena dideklarasikan
sebagai char maka
cout<<(int)b<<endl;
nilai biner tersebut
cout<<(int)c<<endl; sama dengan 127

cout<<(int)d<<endl;
}

2. unsigned char
Bila isinya diperlakukan sebagai nilai numerik,
maka nilai yang dapat ditampung berkisar
antara 0 sampai dengan 255

//char2.cpp Hasilny Analisis :


#include<iostream.h> a: a = 0, masih dalam jangkauannya
void main(void) 0 b = 255, masih dalam jangkauannya
{ 255 c = -1, diluar jangkauannya
unsigned char 255 1 = 0000 0001
a,b,c,d; 0 -1 = 1111 1111 sama dengan 255
a=0; d = 256, diluar jangkauannya
b=255; 256 = 1 0000 0000, karena hanya 8 bit
c=-1; maka bit paling kiri

T-Informatika FT UNPAM
Algoritma dan Pemrograman 23

d=256; diabaikan sehingga


nilainya menjadi 0
cout<<(int)a<<endl;

cout<<(int)b<<endl;

cout<<(int)c<<endl;

cout<<(int)d<<endl;
}

3. short
bit sign :
0 : berarti nilai positif
1 : berarti nilai negatif
Nilai yang dapat
ditampung berkisar dari

//short1.cpp Hasilnya Jelaskan!!!!!!!


#include<iostream.h :
> -32768
void main(void) 32767
{ 32767
short a,b,c,d; -32768
a=-32768 ;
b=32767;
c=-32769;
d=32769;
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
cout<<d<<endl;
}

T-Informatika FT UNPAM
Algoritma dan Pemrograman 24

4. unsigned short
nilai yang dapat ditampung
berkisar antara 0 sampai
dengan 65.535

//short2.cpp Hasilnya : Jelaskan!!!!!!!!!!!!!!!!!!


#include<iostream.h> 0
void main(void) 65535
{ 65535
unsigned short 0
a,b,c,d;
a=0;
b=65535;
c=-1;
d=65536;
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
cout<<d<<endl;
}

5. int
bit sign :
0 : berarti nilai positif
1 : berarti nilai negatif
Nilai yang dapat
ditampung berkisar dari

T-Informatika FT UNPAM
Algoritma dan Pemrograman 25

//int1.cpp Hasilnya : Jelaskan!!!!!!!!!!


#include<iostream.h> -
void main(void) 2.147.483.648
{ 2.147.483.647
int a,b,c,d; 2.147.483.647
a=-2147483648; -
b=2147483647; 2.147.483.648
c=-2147483649;
d=2147483648;
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
cout<<d<<endl;
}

6. unsigned int
nilai yang dapat ditampung
berkisar antara 0 sampai dengan
4.294.967.295

//int2.cpp Hasilnya : Jelaskan!!!!!!!!!!!!!!!!


#include<iostream.h> 0
void main(void) 429496729
{ 5
unsigned int 429496729
a,b,c,d; 5
a=0; 0

b=4294967295;
c=-1;

T-Informatika FT UNPAM
Algoritma dan Pemrograman 26

d=4294967296;
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
cout<<d<<endl;
}

TUGAS

1. Buat algoritma (dalam bentuk flow chart dan pseudo-code) dan program
bahasa C untuk menghitung luas lingkaran
2. Buat algoritma (dalam bentuk flow chart dan pseudo-code) dan program
bahasa C untuk menghitung nilai-nilai x dari persamaan
2
ax + bx+ c=0
−b+ √ b2 −4ac
x1 = 2a
−b− √ b 2− 4ac
x 2=
2a
inputnya a,b,c
3. Jika diketahui nilai A=5, B=2, T=4. Berapa isi A, B, dan T jika dikenai
instruksi sbb :
a. T=A b. T=T+A c. T=T+A*B d. T=A%B e. T=B%A f. T=A-B/2
4. Jika diketahui A=5, B=2, berapa isi A dan B jika dikenai instruksi :
T=A
A=B
B=T

T-Informatika FT UNPAM
Algoritma dan Pemrograman 27

(Operator dan ekspresi, File I/O)

OPERATOR DAN EKSPRESI

Operand Ekspresi/ungkapan : Suatu bentuk yang


menghasilkan suatu nilai.
3 + 3 * 6 Ekspresi Operator : simbol atau karakter khusus (mis. +,*)
Operator yang digunakan dalam suatu ekspresi untuk
menghasilkan suatu nilai.

Operator :
 Operator Aritmetika
 Operator penambahan (increment) dan pengurangan (decrement)
 Operator penugasan
 Operator pembandingan
 Operator logika
 Operator bit
Menurut jumlah operand yang dilibatkan, operator diklasifikasikan menjadi
menjadi :
 Operator unary, yaitu operator yang hanya melibatkan satu buah
operand
 Operator binary, yaitu operator yang melibatkan dua buah operand
 Operator tertiary, yaitu operator yang melibatkan tiga buah operand

Operator Aritmetika:

T-Informatika FT UNPAM
Algoritma dan Pemrograman 28

Operator Keterangan
Penjumlahan Kode sumber Hasil
+
Tanda plus
//aritmetika.cpp
Pengurangan
#include<iostream.h>
-
Tanda minus
void main(void)
* Perkalian
{
/ Pembagian
int a=11; int b=3;
% Sisa pembagian(Modulus)
cout<<a+b<<endl; 14
cout<<a*b<<endl; 33
cout<<a-b<<endl; 8
Urutan pelaksanaan
cout<<a/b<<endl; 3
operator aritmetika :
cout<<a%b<<endl; 2
Operator } Urutan
() Dievaluasi pertama. Jika berkalang maka kalang paling dalam
dievaluasi paling pertama. Jika ada beberapa pasangan kurung
dalam satu level maka dievaluasi dari kiri ke kanan
Dievaluasi kedua. Jika ada beberapa maka dievaluasi dari kiri ke
*, /, atau %
kanan
+ atau - Dievaluasi terakhir. Jika ada beberapa maka dievaluasi dari kiri ke
kanan
Contoh : Aljabar : z=pr%q+w/x-y
C: z = p * r % q + w / x - y ;
6 1 2 4 3 5
Tentukan urutan operasi aritmetika dari persamaan berikut :
y=a(b+c)+c(a-b(d+a)(a%b)), jika a=20, b=10, c=7, d=2
Operator Penambahan dan Pengurangan :
x = x + 1  x++ atau ++x
x = x – 1  x-- atau --x
x Pernyataan Hasil y Hasil x
semula
5 y = x++; 5 6
#include
5 <iostream.h>
y = ++x; 6 6
int main()
5 y = x-- 5 4
{ 5 y = --x 4 4
int x,y;

T-Informatika FT UNPAM
Algoritma dan Pemrograman 29

x = 5;
y = 8 – x++; x=6
cout<<x<<endl; y=3
cout<<y<<endl;

x = 5;
y = 8 – ++x; x=6
cout<<x<<endl; y=2
cout<<y<<endl;
x = 5; x=4
y = 8 – x--; y=3
cout<<x<<endl;
cout<<y<<endl;

x = 5;
y = 8 – --x; X=4
cout<<x<<endl; Y=4
cout<<y<<endl;
return 0;

Operator Bit
C++ mendukung 6 buah operator yang beroperasi pada level bit (0 dan 1), yaitu :
 & (AND)
 | (OR)
 ^ (XOR)
 ~ (NOT)
 << (Geser Kiri)
 >> (Geser Kanan)

Operator &
Bit 1 Bit 2 Hasil Contoh : 1 0 0 1  9
0 0 0 9 & 10 memberikan 1 0 1 0  10
0 1 0 hasil 8 1 0 0 0  8

T-Informatika FT UNPAM
Algoritma dan Pemrograman 30

1 0 0
1 1 1
Operator |
Bit 1 Bit 2 Hasil Contoh : 1 0 0 1  9
0 0 0 9 | 10 memberikan 1 0 1 0  10
0 1 1 hasil 11 1 0 1 1  11
1 0 1
1 1 1
Operator ^
Bit 1 Bit 2 Hasil Contoh : 1 0 0 1  9
0 0 0 9 ^ 10 memberikan 1 0 1 0  10
0 1 1 hasil 3 0 0 1 1  3
1 0 1
1 1 0
Operator ~
~185 memberikan hasil -186
0 1 0 1 1 1 0 0 1  185
        
1 0 1 0 0 0 1 1 0  -186

Operator << Operator >>


x << n identik dengan x*2n x >> n identik dengan x/2n
29 << 1 memberikan hasil 58 29 >> 1 memberikan hasil 14

Tentukan output dari program berikut?

//Operasi Bit
#include<iostream.h>
void main(void)
{
int x=185;
int y=5;
cout<<"~" << x <<" = "<<~x<<endl;

T-Informatika FT UNPAM
Algoritma dan Pemrograman 31

cout<<x<<" | "<<y<<" = "<<(x|y)<<endl;


cout<<x<<" & "<<y<<" = "<<(x&y)<<endl;
cout<<x<<" ^ "<<y<<" = "<<(x^y)<<endl;
cout<<x<<" << "<<y<<" = "<<(x<<y)<<endl;
cout<<x<<" >> "<<y<<" = "<<(x>>y)<<endl;

Operator Penugasan
Operator Keterangan Contoh
= Pemberian nilai
+= Penambahan bilangan a += 2 sama dengan a = a + 2
-= Pengurangan bilangan a -= 2 sama dengan a = a - 2
*= Pengalian bilangan a *= 2 sama dengan a = a * 2
/= Pembagian bilangan a /= 2 sama dengan a = a / 2
%= Pemerolehan sisa bagi a %= 2 sama dengan a = a % 2

Operator Keterangan Contoh


&= Pemberian nilai a &= x sama dengan a = a & x
^= Penambahan bilangan a ^= x sama dengan a = a ^ x
|= Pengurangan bilangan a |= x sama dengan a = a | x
<<= Pengalian bilangan a <<= x sama dengan a = a << x
>>= Pembagian bilangan a >>= x sama dengan a = a >> x

Tentukan nilai a dan b dari pernyataan berikut:


a=b=6
a += 5
b -=2
a %=b

TYPE CASTING

T-Informatika FT UNPAM
Algoritma dan Pemrograman 32

Operasi perhitungan pada C++ dilakukan dengan menggunakan tipe data yang sama.
Jika dalam suatu ekspresi terdapat operand dengan tipe yang berbeda, C++ akan
mengkonversikan salah satu tipe sehingga kedua tipe menjadi sama dengan aturan :

1. Jika salah satu operand bertipe long double, yg lain dikonversikan menjadi long
double
2. Jika salah satu operand bertipe double, yg lain dikonversikan menjadi double
3. Jika salah satu operand bertipe float, yg lain dikonversikan menjadi float
4. Jika salah satu operand bertipe char, signed char, unsigned char, atau unsigned
short, yg lain dikonversikan menjadi int
5. Tipe enumerasi akan dikonversikan ke int, unsigned int, long, atau unsigned long
dengan mengakomodasikan jangkauan tipe enumerasi
6. Jika salah satu operand bertipe unsigned long, yg lain dikonversikan menjadi
unsigned long
7. Jika salah satu operand bertipe long dan yang lain bertipe unsigned int, kedua
operand dikonversikan menjadi unsigned long
8. Jika salah satu operand bertipe long , yg lain dikonversikan menjadi long

Type casting : proses mengubah suatu tipe ke tipe yang lain. Bentung pengarah tipe
sbb :

(tipe_data)data
tipe_data(data)
static_cast<tipe_data>(data)

Code Program Outp


ut
//Type casting
#include<iostream.h>
void main(void)
{
double fa,fb,fc;
fa=3.14;
fb=5.23;
fc=10.25;
cout<<fa<<endl; 3.14
cout<<fb<<endl; 5.23

T-Informatika FT UNPAM
Algoritma dan Pemrograman 33

cout<<fc<<endl; 10.25
cout<<(int)fa<<endl; 3
cout<<int(fb)<<endl; 5
10
cout<<static_cast<int>(fc)<<e
ndl;
}

FILE I/O

Untuk dapat mengakses file menggunakan C, dapat dilakukan dengan menggunakan


pointer FILE.
Contoh :
FILE *fp;
Untuk membuka sebuah file :
FILE *fopen(const char *filename, const char *mode);
mode :
r : open for reading
w : open for writing (file need not exist)
a : open for appending(file need not exist)
r+ : open for reading and writing, start at beginning
w+ : open for reading and writing (overwrite file)
a+ : open for reading and writing (overwrite file)
Contoh sederhana :
FILE *fp;
fp=fopen("c:\\test.txt", "w");
fprintf(fp, "Testing...\n");
fclose(fp);
Code Program Hasil
//Create a sequential file Input :
#include<stdio.h> 100 Heri [Enter]
void main(void)

T-Informatika FT UNPAM
Algoritma dan Pemrograman 34

{ Output :
int akun; File yang bernama data1.dat
char nama[30]; akan berisi data :
FILE *fp; 100 Heri
fp=fopen("d:\\kampus\\program\\c++\\data1.dat","w");
printf("Masukan akun, nama\n");
scanf("%d%s",&akun,nama);
fprintf(fp,"%d %s\n",akun,nama);
fclose(fp);
}
Code Program Hasil
#include<stdio.h> Akan tercetak di layar :
void main(void) 100 Heri
{
int akun;
char nama[30];
FILE *fp;
fp=fopen("d:\\kampus\\program\\c++\\data1.dat","r");
fscanf(fp,"%d %s\n",&akun,nama);
fclose(fp);
printf("%d %s\n",akun,nama);
}

FORMAT KELUARAN PADA C++


Manipulator dalam C++
Manipulator Fungsi
endl end line. Kursos berpindah ke posisi awal baris berikutnya
ends sama dg \n
flush Menyisipkan karakter NULL
Mencetak isi buffer
dec Mengkonversi ke bilangan desimal
hex Mengkonversi ke bilangan hexadesimal
oct Mengkonversi ke bilangan oktal
setbase(n) Mengkonversi ke bilangan berbasis n
setw(n) Mengatur lebar cetakan selebar n
setfill(n) Mengisi leading field dengan karakter n
setprecision(n) Membuat lebar desimal point=n
setiosflags(lf) Menset format yang diatur dengan tanda format ios:
resetiosflags(lf) Mereset format yang diset oleh setioflags()

T-Informatika FT UNPAM
Algoritma dan Pemrograman 35

Setiap menggunakan manipulator setxxxxx() atau resetxxxxxx() harus


menggunakan :
#include<iomanip.h>

Code Program Hasil


//Penggunaan setw
#include<iostream.h>
#include<iomanip.h> setw() hanya berlaku untuk satu elemen cetak
void main(void) berikutnya
{
int x;
x=64;
cout<<123456789<<endl; 123456789
123
cout<<setw(9)<<123<<endl;
123
cout<<123<<endl; 40
cout<<hex<<x<<endl; 100
cout<<oct<<x<<endl; 64
cout<<dec<<x<<endl;
........64
cout<<setfill('.'); 64
cout<<setw(10)<<x<<endl;
cout<<x<<endl;
}
Code Program Hasil
//Penggunaan setprecision()
#include<iostream.h>
#include<iomanip.h>
void main(void)
{
double x=123.456789;
cout<<x<<endl; 123.457
cout<<setprecision(0)<<x<<endl; 1e+002
cout<<setprecision(1)<<x<<endl; 1e+002
cout<<setprecision(2)<<x<<endl; 1.2e+002
cout<<setprecision(3)<<x<<endl; 123
cout<<setprecision(4)<<x<<endl; 123.5
cout<<setprecision(5)<<x<<endl; 123.46
cout<<setprecision(6)<<x<<endl; 123.457

T-Informatika FT UNPAM
Algoritma dan Pemrograman 36

cout<<setprecision(7)<<x<<endl; 123.4568
cout<<setprecision(8)<<x<<endl; 123.45679
cout<<setprecision(9)<<x<<endl; 123.456789
cout<<setprecision(10)<<x<<endl; 123.456789

Tanda Format

Untuk mengatur format cetakan diperlukan tanda format yang diset dengan
menggunakan manipulator setiosflags() dan direset dengan menggunakan
manipulator resetiosflags().

Tanda Format Fungsi


ios::left Keluaran yang diatur oleh setw() dicetak rata kiri
ios::right Keluaran yang diatur oleh setw() dicetak rata kanan
ios::scientific Keluaran dicetak dalam bentuk scientific
ios::fixed Keluaran dicetak dalam bentuk fixed point
ios::dec Keluaran dicetak dalam bentuk desimal
ios::hex Keluaran dicetak dalam bentuk hexadesimal
ios::oct Keluaran dicetak dalam bentuk oktal
ios::uppercase Keluaran yang dicetak dalam bentuk hexadesimal dicetak dengan
ios::showbase hurup besar
Menambahkan 0x diawal hasil cetakan yang berbentuk hexademal
atau 0 (nol) pada cetakan yang berbentuk oktal
ios::showpoint Menampilkan desimal point pada hasil cetakan yang mengandung
ios::showpos pecahan
Menambahkan tanda + pada hasil cetakan yang bernilai positip

T-Informatika FT UNPAM
Algoritma dan Pemrograman 37

Code Program Hasil


//Penggunaan setiosflags()
#include<iostream.h>
#include<iomanip.h>
void main(void)
{
int x=255;
double y=123.44;
cout<<setiosflags(ios::showbase);
cout<<setiosflags(ios::left)<<setw(10)<<x<<endl; 255
cout<<resetiosflags(ios::left);
cout<<setiosflags(ios::right)<<setw(10)<<x<<endl; 255
cout<<setiosflags(ios::hex)<<x<<endl; oxff
cout<<resetiosflags(ios::hex);
cout<<setiosflags(ios::oct)<<x<<endl; 0377
cout<<resetiosflags(ios::oct);
cout<<setiosflags(ios::dec)<<x<<endl; 255
cout<<setiosflags(ios::fixed)<<setprecision(5)<<y<<endl; 123.44000
cout<<resetiosflags(ios::fixed);
cout<<setiosflags(ios::scientific)<<setprecision(5)<<y<<endl; 1.23440e+00 2
}

Soal :
1. Carilah nilai j dan terangkan bagaimana nilai j diperoleh, jika diketahui :
int m=24, k=21;
a. j=m|k b. j=m%k c. j=m&k d. j=m+ ++k e. j=m- --k
f. j=m- --k g. j=m>>2 h. j=k+=m i. j=--m + k++ j. j=--m*5

2. Buatlah program untuk konversi suhu dengan rumus :


Fahrenheit=(9/5)C+32
Reamur=(4/9)C+32
C dalam derajat celcius, Hasilnya disimpan dalam file suhu.dat dengan bentuk :
C F R
… … …

T-Informatika FT UNPAM
Algoritma dan Pemrograman 38

3. Pak Budi menyimpan uangnya di BCA sebesar M rupiah dengan bunga B% per
tahun selama 5 tahun. Buatlah program dan simpan hasilnya dalam file bank.dat
untuk menghitung uang Pak Buda pada akhir tahun ke 5. (Inputnya M, B)
Rumus :
U=M(1+B)n
U : uang pada akhir tahun ke-n
M : uang pada awal tahun
B : bunga per tahun

T-Informatika FT UNPAM
Algoritma dan Pemrograman 39

( Runtunan, Pemilihan)

I. RUNTUNAN(SEQUENCE)
Algoritma runtunan (sequence) :
 Tiap instruksi dikerjakan satu per satu
 Tiap instruksi dilaksanakan tepat sekali, tidak ada instruksi yang diulang
 Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi
sebagaimana yang tertulis didalam teks algoritmanya
 Akhir dari instruksi terakhir merupakan akhir algoritma

ALGORITMA Bola #include<iostream.h>
{Menghitung Luas, Keliling, void main(void)
Volume Bola} {
DEKLARASI float PI=3.14,R,L,K,V;
R,K,L,V : float cout<<”Masukan harga
DESKRIPSI R :”<<endl;
read(R) cin>>R;
PI3.14 K=2*PI*R;
K2*PI*R L=4*PI*R*R;
L4*PI*R*R V=4*PI*R*R*R/4;
V4*PI*R*R*R/4 cout<<”Keliling : “<<K<<endl;
write(K,L,V) cout<<”Luas : “<<L<<endl;
cout<<”Volume : “<<V<<endl;
}

Buat Algoritma dan program untuk mempertukarkan dua buah nilai variabel A dan
B.

II. PEMILIHAN/PENGAMBILAN KEPUTUSAN

T-Informatika FT UNPAM
Algoritma dan Pemrograman 40

Ekspresi Boolean adalah ekspresi yang menghasilkan nilai yang dapat berupa :
 Benar (true) atau salah (false)
 Bukan nol atau nol
Kondisi : suatu pernyataan atau ungkapan atau ekspresi yang mengandung nilai
benar (TRUE) atau salah(FALSE).

1. Operator Pembanding/relasional dalam C/C++


Operator Makna Conto
h
== Kesamaan a==b 9 > 5 contoh ungkapan yg
bernilai TRUE
!= Ketidaksamaan a!=b 0 contoh ungkapan yg
bernilai FALSE
> Lebih dari a>b 5 contoh ungkapan yg
bernilai TRUE
< Kurang dari a<b N > 60 dapat bernilai TRUE
atau FALSE
>= Lebih dari atau sama a>=b
dengan
<= Kurang dari atau sama a<=b
dengan

2. Operator Logika dalam C/C++ opr_1 && opr_2 opr_1


|| opr_2

T-Informatika FT UNPAM
Algoritma dan Pemrograman 41

Operator Makna Contoh opr_1 opr_ Hasil opr_1 opr_ Hasil


2 2
&& dan a==b&&c!=d salah salah salah salah salah salah
|| atau a==b||c!=d salah benar salah salah benar bena
r
! bukan !(a==b) bena salah salah bena salah bena
r r r
bena benar bena bena benar bena
r r r r

3. Pemilihan 1 kasus (IF-THEN)


Pseudo-code Flow chart C/C++
if kondisi then if(kondisi)
pernyataan 1 {
pernyataan 2 //blok pernyataan yang
endif //dijalankan jika kondisi
benar
}

Contoh :
Buatlah algoritma dan program C++ yang membaca sebuah bilangan bulat dari
keyboard, lalu mencetak pesan “genap” jika bilangan tersebut merupakan bilangan
genap
Jawab :

T-Informatika FT UNPAM
Algoritma dan Pemrograman 42

Untuk mengetahui suatu bilangan itu genap atau bukan dapat dilakukan dengan cara
membagi bilangan tersebut dengan 2. Jika sisa pembagiannya sama dengan 0 maka
bilangan tersebut adalah genap. Algoritma dan code programnya sbb:
Pseudo-code Flow chart Kode C++

T-Informatika FT UNPAM
Algoritma dan Pemrograman 43

ALGORITMA bilGenap //Penggunaan if


{mencetak pesan genap jika #include<iostream.h>
bilangan yang dimasukan void main(void)
dari keyboard merupakan {
bilangan genap} int x,s;
DEKLARASI cout<<"Masukan
x : integer bilangan bulat : ";
DESKRIPSI cin>>x;
read(x) s=x%2;
if x mod 2 = 0 then if(s==0)
write(‘genap’) cout<<"Bilangan
endif Genap"<<endl;
cout<<"Bilangan
Genap"<<endl;
}

T-Informatika FT UNPAM
Algoritma dan Pemrograman 44

4. Pemilihan 2 kasus(IF-THEN-ELSE)
Pseudo-code Flow chart C/C++
if kondisi then if(kondisi)
pernyataan 1 {
else //blok pernyataan
pernyataan yang
2 //dijalankan jika
endif kondisi benar
}
else
{
//blok pernyataan
yang
//dijalankan jika
kondisi salah
}

Contoh :
Buatlah algoritma dan code C++ untuk menentukan kelulusan suatu mata ujian.
Dinyatakan Lulus jika nilai ujian lebih besar atau sama dengan 60.

Jawab :

T-Informatika FT UNPAM
Algoritma dan Pemrograman 45

Pseudo-code Flow chart Kode C++


ALGORITMA Lulus //Penggunaan if-
{mencetak pesan Lulus else
jika nilai ujian >=60} #include<iostream.h
DEKLARASI >
x : integer void main(void)
DESKRIPSI {
read(x) int NilaiUjian;
if x >= 60 then cout<<"Masukan
write(‘Lulus’) Nilai : ";
else cin>>NilaiUjian;
write(‘Tidak Lulus’) if(NilaiUjian >=
endif 60)
cout<<"Lulus
"<<endl;
else
cout<<"Tida
k Lulus"<<endl;
cout<<"Bilangan
Genap"<<endl;
}

5. Pemilihan tiga kasus atau lebih/Pernyataan IF bersarang (nested IF)


Merupakan pernyataan IF dalam IF.
Contoh penggunaan IF bersarang yaitu untuk menentukan nilai suatu ujian
tergolong sebagai A, B, C, D. E dengan kriteria sebagai berikut :

Nilai Skor
Nilai  90 A
#include<iostream.h>
80  Nilai < B
void main(void)
90
{
60  Nilai < C
double NilaiUjian;
80
char skor;
50  Nilai < D
cout<<”Masukan Nilai Ujian : “;
60
cin>>NilaiUjian;
Nilai < 50 E

T-Informatika FT UNPAM
Algoritma dan Pemrograman 46

if(NilaiUjian >= 90)


skor=’A’;
else
if(NilaiUjian >= 70)
skor=’B’;
else
if(NilaiUjian >= 60)
skor=’C’;
else
if(NilaiUjian >= 50)
skor=’D’;
else
skor=’E’;
cout<<”Skor : “<<skor<<endl;
}
Jika salah satu if sudah terpenuhi maka program akan langsung mengeksekusi cout.

if pertama

if kedua

if ketiga

if keempat

T-Informatika FT UNPAM
Algoritma dan Pemrograman 47

Flow chart Struktur C/C++


if(kond1)
{ //awal kond1
TRUE
s1;
if(kond2)
{ //awal kond2
TRUE
s2;
} //akhir kond2
TRUE
else
{ //awal kond2
FALSE
s3;
} // akhir kond2
FALSE
} //akhir kond1
TRUE
else
{ //awal kond1
FALSE
if(kond3)

T-Informatika FT UNPAM
Algoritma dan Pemrograman 48

{ //awal kond3
TRUE
s4;
} //akhir kond3
TRUE
else
{ //awal kond3
FALSE
s5;
} //akhir kond3
FALSE
s6;
} //akhir kond1
FALSE

T-Informatika FT UNPAM
Algoritma dan Pemrograman 49

Flow chart Struktur C/C++

T-Informatika FT UNPAM
Algoritma dan Pemrograman 50

if(kond1)
{
//awal kond1 TRUE
if(kond2)
{
//awal kond2 TRUE
if(kond3)
{
//awal kond3 TRUE
if(kond4)
{
//awal kond4 TRUE
s1;
}
//akhir kond4 TRUE
}
//akhir kond3 TRUE
}
//akhir kond2 TRUE
}
//akhir kond1 TRUE

T-Informatika FT UNPAM
Algoritma dan Pemrograman 51

low chart Struktur C/C++

T-Informatika FT UNPAM
Algoritma dan Pemrograman 52

if(kond1)
{
//awal kond1 TRUE
s1;
}
//akhir kond1 TRUE
else
{
//awal kond1 FALSE
if(kond2)
{
//awal kond2 TRUE
s2;
}
//akhir kond2 TRUE
else
{
//awal kond2 FALSE
if(kond3)
{
//awal kond3 TRUE
s3;
}
//akhir kond3 TRUE
else
{
//awal kond3 FALSE
if(kond4)
{
//awal kond4 TRUE
s4;
}
//akhir kond4 TRUE
else
{
//awal kond4 FALSE
s5;
}
//akhir kond4 FALSE
}
//akhir kond3 FALSE
}
//akhir kond2 FALSE
}
//akhir kond1 FALSE

T-Informatika FT UNPAM
Algoritma dan Pemrograman 53

6. Operator berkondisi(?:)
Disebut juga operator ternary karena melibatkan 3 buah argumen.
//Terbesar.cpp
#include<iostream.h>
void main(void)
{
int x,y,maks;
cout<<”Masukan sebuah bilangan
: “;
cin>>x;
cout<<”Masukan lagi sebuah
bilangan : ”;
cin>>y;
maks = x > y ? x : y;
cout<<”Terbesar adalah :
“<<maks;endl;
}

7. Struktur Case
Untuk masalah dengan dua kasus atau lebih, penggunaan CASE dapat lebih
menyederhanakan penulisan.
case ekspresi
nilai_1 : pernyataan_1
nilai_2 : pernyataan_2
..................................
nilai_n : pernyataan_n
otherwise : pernyataan_x
endcase

T-Informatika FT UNPAM
Algoritma dan Pemrograman 54

Flow chart Kode C++


switch(ekspresi)
{
case nilai_1 :
pernyataan_1 ;
break;
case nilai_2 :
pernyataan_2 ;
break;
case nilai_3 :
pernyataan_3 ;
break;
default :
pernyataan_n ;
}
Pada pernyataan switch :
 masing-masing pernyataan ( 1 sd n) ini dijalankan jika nilai ekspresi tidak
dapat berupa satu atau beberapa ada yang cocok dengan nilai_1,
perintah dan tidak perlu berupa nilai_2,...,nilai_n.
blok pernyataan  nilai kondisi hanya dapat berupa
 pernyataan_1 dijalankan kalau nilai tipe primitif
ekspresi dengan nilai_1. Setelah  pernyataan break digunakan untuk
dijalankan eksekusi dilanjutkan ke mengendalikan eksekusi ke akhir
akhir pernyataan switch pernyataan switch.
 begitu juga dengan pernyataan
lainya dijalankan jika nilai ekspresi
sesuai dengan nilai bs.
 bagian default bersifat opsional.
Jika ada, bagian
Contoh : mencetak nama bulan berdasarkan nomornya.
Algoritma Kode C++
ALGORITMA hari #include<iostream.h>
{Mencetak nama hari berdasarkan void main(void)
nomor (1 ..7)} {
DEKLARASI int NomorHari;
NomorHari : integer cout<<”Masukan Nomor Hari : ”<<endl;

T-Informatika FT UNPAM
Algoritma dan Pemrograman 55

DESKRIPSI cin>>NomorHari;
read(NomorHari) switch(NomorHari)
case NomorHari {
1 : write(’Minggu’) case 1:
2 : write(’Senin’) cout<<”Minggu”<<endl;
3 : write(’Selasa’) break;
4 : write(’Rabu’) case 2:
5 : write(’Kamis’) cout<<”Senin”<<endl;
6 : write(’Jumat’) break;
7 : write(’Sabtu’) case 3:
otherwisw : write(’Salah Nomor’) cout<<”Selasa”<<endl;
endcase break;
case 4:
cout<<”Rabu”<<endl;
break;
case 5:
cout<<”Kamis”<<endl;
break;
case 6:
cout<<”Jumat”<<endl;
break;
case 7:
cout<<”Sabtu”<<endl;
break;
default :
cout<<”Salah Nomor”<<endl;
}
}

Tugas:
1. Buatlah algoritma dan program C++ untuk mengitung luas, keliling, panjang
diagonal persegi panjang, dengan tampilan sbb (masukan : panjang dan lebar) :

================================
MENU EMPAT PERSEGI PANJANG
1. Hitung Luas
2. Hitung Keliling

T-Informatika FT UNPAM
Algoritma dan Pemrograman 56

3. Hitung Panjang Diagonal


4. Keluar Program
================================
Pilih Nomor :

2. Buatlah algoritma dan program C++ untuk menghitung upah mingguan karyawan.
Masukan yang dibaca adalah nama karyawan, golongan, dan jumlah jam kerja.
Keluaran program adalah nama karyawan dan upahnya.
Ketentuan :
jam kerja normal = 48 jam
upah per jam :
Golongan A : Rp. 4000
Golongan B : Rp. 5000
Golongan C : Rp. 6000
Golongan D : Rp. 7000
upah lembur : Rp.3000/jam

T-Informatika FT UNPAM
Algoritma dan Pemrograman 57

( Pengulangan )

PENGULANGAN

Struktur pengulangan terdiri atas : Instruksi (pernyataan) pengulangan


 Kondisi pengulangan : ekspresi 1. for
boolean 2. while
 Badan pengulangan 3. repeat (do – while)
 Inisialisasi
 Terminasi

1. Pernyataan for
Digunakan jika jumlah pengulangan sudah diketahui sebelum eksekusi
Bentuk :
a. for menaik :  pencacah harus bertipe integer atau
for pencacah  nilai_awal to karakter
nilai_akhir do  pernyataan adalah satu atau lebih
Pernyataan instruksi yang diulang
endfor  nilai_awal lebih kecil atau sama
dengan nilai_akhir
b. for menurun :  jumlah pengulangan = nilai_akhir -
for pencacah  nilai_akhir downto nilai_awal + 1
nilai_awal do
Pernyataan
endfor

Flow chart Struktur C++

T-Informatika FT UNPAM
Algoritma dan Pemrograman 58

for(init;kondisi;rubah_kondi
si)
{
pernyataan;
pernyataan;
}
for(init;kondisi;)
{
pernyataan;
pernyataan;
rubah_kondisi;
}
init;
for(;kondisi;)
{
pernyataan;
pernyataan;
rubah_kondisi;
}
rubah_kondisi dapat
diletakan diawal, ditengah,
atau diakhir badan
pengulangan

T-Informatika FT UNPAM
Algoritma dan Pemrograman 59

ALGORITMA for #include<iostream.h>


void main(void)
DEKLARASI {
I : integer for(int I=1 ; I 5 ; I++)
cout<<I<<endl;
DESKRIPSI }
for i1 to 5 do
write(I)
endfor Apa keluaran dari program
diatas?

Analisis perkembangan nilai I


Kondisi Nilai I baru
nilai I Tercetak
I5 (Setelah I=I+1)
1 T 1 2
2 T 2 3
3 T 3 4
4 T 4 5
5 T 5 6
6 F Keluar dari Loop
Tentukan output dari program berikut :
#include<iostream.h> #include<iostream.h> #include<iostream.h>
void main(void) void main(void) void main(void)
{ { {
for(int i=1; i<5;i++) for(int i=1; i<=10;i+=2) for(int i=1; i<=10;i+=2);
cout<<i<<endl; cout<<i<<endl; cout<<i<<endl;
} } }
#include<iostream.h> #include<iostream.h> #include<iostream.h>
void main(void) void main(void) void main(void)
{ { {
int i=0; for(int i=1; i<=5;) for(int i=1; i<=5;i++)
for(; i<=10;) { for(int j=1;j<=i;j++)

T-Informatika FT UNPAM
Algoritma dan Pemrograman 60

{ cout<<”*”;
i++; cout<<i+1<<endl; cout<<endl;
cout<<i<<endl; i++; }
} }
} }
#include<iostream.h> #include<iostream.h> #include<iostream.h>
void main(void) void main(void) void main(void)
{ { {
for(int i=1; for(int i=1; i<5;i+=4) for(int i=11; i<=10;i+=2)
i<5;i+=10) cout<<i<<endl; cout<<i<<endl;
cout<<i<<endl; } }
}
Soal : Buat program untuk menghitung rata-rata dari sepuluh buah bilangan, yg
diinput satu per satu dari kb.
2. Pernyataan while
Bentuk : Keterangan :
while kondisi do  pernyataan dilaksanakan berulang kali selama
pernyataan kondisi bernilai true
endwhile  Pengulangan berhenti jika kondisi bernilai false
 Agar kondisi berubah ke false, dalam badan
pengulangan harus ada instruksi yang merubah nilai
kondisi

Flow chart Struktur C++


init;
while(kondisi)
{
pernyataan;
pernyataan;
rubah_kondisi;
}

T-Informatika FT UNPAM
Algoritma dan Pemrograman 61

rubah_kondisi dapat
diletakan diawal, ditengah,
atau diakhir badan
pengulangan

ALGORITMA #include<iostream.h>
while void main(void)
{
DEKLARASI int I=1;
I : integer while(I 5 )
{
DESKRIPSI cout<<I<<endl;
I1 I++;
while I<=5 do }
write(I) }
II+1
endwhile
Apa keluaran dari program
diatas?

Kondisi Nilai I baru


nilai I Tercetak
I5 (Setelah I=I+1)
1 T 1 2
2 T 2 3
3 T 3 4
4 T 4 5
5 T 5 6
6 F Keluar dari Loop

T-Informatika FT UNPAM
Algoritma dan Pemrograman 62

#include<iostream.h> #include<iostream.h> #include<iostream.h>


void main(void) void main(void) void main(void)
{ { {
int i=1; int i=1; int i=1;
while(i<5) while(i<5) while(i<=5)
{ cout<<i++<<endl; cout<<++i<<endl;
cout<<i<<endl; } }
i++;
}
}
#include<iostream.h> #include<iostream.h> #include<iostream.h>
void main(void) void main(void) void main(void)
{ { {
int i=1; int i=1; int i=1;
while(i=5) while(i) while(0)
{ { {
cout<<i<<endl; cout<<i<<endl; cout<<i<<endl;
i++; i++; i++;
} } }
} } }

Soal : Ada sejumlah bilangan integer nilai ujian mahasiswa. Jumlahnya tidak
diketahui. Yang diketahui adalah bilangan yang nilainya 999, suatu bilangan yang
dipastikan bukan merupakan nilai ujian. Susun program untuk menginput bilangan
tsb dan menghitung serta mencetak nilai rata-rata dari semua nilai ujian.
3. Pernyataan repeat(do-while)
Bentuk : Keterangan:
repeat  Pengulangan dilakukan terus menerus jika kondisi
Pernyataan masih true
until kondisi  Pengulangan berhenti jika nilai kondisi menjadi false
 Agar kondisi berubah ke false, dalam badan
pengulangan harus ada instruksi yang merubah nilai
kondisi

Flow chart Struktur C++

T-Informatika FT UNPAM
Algoritma dan Pemrograman 63

init;
do
{
pernyataan;
pernyataan;
rubah_kondisi;
} while(kondisi)

rubah_kondisi dapat
diletakan diawal, ditengah,
atau diakhir badan
pengulangan

ALGORITMA #include<iostream.h>
repeat void main(void)
{
DEKLARASI int I=1;
I : integer do
{
DESKRIPSI cout<<I<<endl;
I1 I++;
repeat } while(I 5 );
write(I) }
II+1
until (I<=5)
Apa keluaran dari program
diatas?

Nilai I baru Kondisi


nilai I Tercetak
(Setelah I=I+1) I5
1 1 2 T
2 2 3 T
3 3 4 T
4 4 5 T

T-Informatika FT UNPAM
Algoritma dan Pemrograman 64

5 5 6 F, keluar dari loop

Pertanyaan : Apa perbedaan dan persamaan penggunaan pernyataan for, while, do-
while?
4. Pernyataan continue
Pernyataan continue dimaksudkan untuk memaksa melanjutkan loop (for,
while, do-while)

Contoh untuk pernyataan while :


#include<iostrea
m.h>
void main(void)
{
int i=0;
while(i<5)
{
if(i==3)
{
i++;
continue;
}

cout<<i<<endl;
i++;
}
}
Pada saat i=3 maka i dinaikan 1 dan kondisi while diuji Hasilnya dilayar
lagi , akibatnya pernyataan : akan tercetak :
cout<<i<<endl; 0
i++; 1
tidak dijalankan saat i sama dengan 3 2
4
Contoh untuk pernyataan for :

T-Informatika FT UNPAM
Algoritma dan Pemrograman 65

#include<iostream.h>
void main(void)
{
int i;
for(i=0;i<=5;i++)
{
if(i==3)
continue;
cout<<i<<endl;
}
}

Pada saat i=3 maka i dinaikan 1 dan loop for Hasilnya dilayar akan
diulangi lagi , akibatnya pernyataan : tercetak :
cout<<i<<endl; 0
i++; 1
tidak dijalankan saat i sama dengan 3 2
4

5. Pernyataan break
Pernyataan break dimaksudkan untuk memaksa keluar dari loop (for, while,
do-while)

Contoh :

T-Informatika FT UNPAM
Algoritma dan Pemrograman 66

#include<iostream.h>
void main(void)
{
int i;
for(i=0;i<=5;i++)
{
if(i==3)
break;
cout<<i<<endl;
}
}

Pada saat i=3 maka eksekusi langsung keluar Hasilnya dilayar akan
dari loop , akibatnya pernyataan : tercetak :
cout<<i<<endl; 0
i++; 1
tidak dijalankan saat i sama dengan 3 2

Soal :
1. Susunlah algoritma dan program C++ untuk menginput sebuah bilangan bulat

positif maksimum 255 yang menyatakan suatu bilangan desimal. Kemudian

konversikan dan cetak kedalam bentuk biner.

2. Buat algoritma dan program C++ untuk menghitung dan mencetak 10 suku

pertama deret bilangan berikut : 1,2,4,8,16,…….

3. Sebuah roket ditembakkan tegak lurus keatas. Pada kilometer pertama

menghabiskan 10 kg bahan bakar. Pada kilometer ke-2 menghabiskan 8 kg bahan

bakar (atau 80% dari kilometer sebelumnya). Demikian seterusnya. Susun

algoritma dan program C++ untuk menghitung dan mencetak total bahan bakar yang

dihabiskan setelah mencapai 100 km.

T-Informatika FT UNPAM
Algoritma dan Pemrograman 67

STUDI KASUS
Buatlah Program C++ untuk menilai hasil perkuliahan suatu mata kuliah dari seorang
mahasiswa dengan output :

Nama Mata Kuliah :…………………………………..


SKS :.....................................
--------------------------------------------------------------------------------------------
------------------
NIM NAMA JML HADIR TUGAS UTS UAS NILAI
ANGKA GRADE
--------------------------------------------------------------------------------------------
------------------
......... .................... ................ ........ ..... ..... ...........
. .........

Dengan ketentuan :
Jumlah total perkuliahan : 14 kali Grade :
Nilai angka >80 : A
Bobot Penilaian : 70 <= Nilai angka < 79 : B
Bobot kehadiran : 10% 60 <= Nilai angka < 70 : C
Bobot tugas : 20% 50 <= Nilai angka < 60 : D
Bobot UTS : 30% Nilai angka < 50 : E
Bobot UAS : 40%
Nilai angka = Nilai kehadiran + Nilai
Tugas + Nilai UTS + Nilai UAS
Grade = E jika salah satu unsur penilaian
bernilai 0

Input : NIM, Nama Mhs, Mata Kuliah, SKS,Jumlah Kehadiran, Nilai Tugas, Nilai
UTS, Nilai UAS.
Jumlah mahasiswa tidak dibatasi, Program selesai jika NIM bernilai negatif.

T-Informatika FT UNPAM

Anda mungkin juga menyukai