SlideShare a Scribd company logo
1 of 99
Download to read offline
i | H a lS.N.M.P. Simamora -Diktat
Kata Pengantar
Ucapan syukur ke hadirat Allah, SWT dan RasullNya Nabi
Muhammad, SAW. atas ridho dan berkatNya setiap hari dan
berkah serta tuntunanNya; sehingga tulisan ini dapat terlukiskan
dalam menambah pencerahan bagi mahasiswa dan pihak yang
ingin mengenal pemrograman, konsepnya serta terapannya dalam
aplikasi sederhana.
Pemrograman C++ diturunkan dari Bahasa Pemrograman C
yang berorientasi pada lapisan bawah dan atas pada sistem
komputer/komputer. Bahasa Pemrograman C++ tergolong
Middle-Level Programming Language sehingga tanpa end-user
harus menyelami lapisan machine, namun dari pendekatan human-
language dapat menjangkau lapisan bawah sebuah sistem
komputer/komputer. Misalkan mengakses I/O-systems,
pengalamatan jaringan, akses ke hardware-devices, maupun
komunikasi ke lapisan microcontroller. Salah satu translator Bahasa
Pemrograman C++ adalah Dev-Cpp atau Dev-C++. Translator
ini dapat di-download di alamat https://www.4shared.com/file/-
qwXB9tece/devcpp-4992_setup.html. Dev-Cpp lebih user-friendly
dibandingkan TC 3.0 walaupun masing-masing translator ini hasil
produksinya dijalankan di platform sistem operasi DOS. Dev-Cpp
kurang tepat disebut compiler, karena saat proses translasi tidak
menghasilkan object-code (*.obj). Source-code latihan dapat di-
download di https://www.4shared.com/rar/fZjMahMIiq/code_app.html
Semoga bermanfaat bagi pembelajaran awal dan pengenalan
dasar pemrograman. Korespondensi dapat dilakukan via
ruangkelas777@gmail.com
Penulis
♣
ii | H a lS.N.M.P. Simamora -Diktat
Daftar Isi
Kata Pengantar ......................................................................................... i
Daftar Isi ......................................................................................................... ii
1. Operator Arithmatika .............................................................. 1
2. Operator Logika .......................................................................... 14
3. Struktur Kendali Proses ................................................... 29
4. Operator Matematika ........................................................... 45
5. Teknik Array 1D ......................................................................... 59
6. Algoritma Matematika Informasi ............................ 74
♣
1 | H a lS.N.M.P. Simamora -Diktat
Operator Arithmatika
Ada empat operator dasar arithmatika serta satu operator sisa-
bagi yang dikenal dalam pemrograman secara umum, yakni: add
(tambah, ADD, +), substraction (kurang, SUB, −), multiply (kali,
MUL, ∗), divide (bagi, DIV, ÷); dan modulo (sisa-bagi, %).
Misalkan, perhatikan konstruksi-algoritma berikut ini:
aT←(-0.25);
aT=(2−aT)÷(aT+2)∗(5−aT);
tampilkan aT;
Prinsip matematika, prioritas operator MUL dan DIV
dibandingkan ADD dan SUB, sehingga secara analitik dapat
diselesaikan menjadi:
aT=(-0.25);
misalkan, x=(2−aT); y=(aT+2); z=(5−aT);
x=(2−(-0.25))=2.25;
y=(aT+2)=1.75;
z=(5−(-0.25))=5.25;
sehingga, aT=x÷y∗z=6.75;
Dengan demikian isi atau nilai terbaru/termutahir var: aT adalah
6.75;
Berdasarkan jenis bilangan/data-numerik yang digunakan
tersebut adalah Bilangan Pecahan, maka digunakan tipe-data
float.
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
1
2 | H a lS.N.M.P. Simamora -Diktat
float aT;
aT=(-0.25);
aT=(2-aT)/(aT+2)*(5-aT);
cout << aT;
return 0;
}
Tampilan jalannya program:
Misalkan, perhatikan konstruksi-algoritma berikut ini:
d76←0+1−2+3−4+5−6+7−8+9;
tampilkan d76;
Pada contoh ini, penggunaan variabel cuku satu saja, yakni var:
d76 yang langsung menampung hasil komputasi expression:
0+1−2+3−4+5−6+7−8+9;
Operator matematika yang dilibatkan adalah ADD dan SUB, dan
secara analitik dapat diselesaikan sebagai berikut:
d76=1+3+5+7+9−2−4−6−8;
menjadi,
d76=1+3+5+7+9−(2+4+6+8)=25−20=5;
sehingga, d76=5;
Dengan demikian isi atau nilai terbaru/termutahir var: d76
adalah 5;
Berdasarkan jenis bilangan/data-numerik yang digunakan
tersebut adalah Bilangan Bulat, maka digunakan tipe-data int.
Walaupun demikian, oleh sebab Bilangan Bulat dalam range atau
domain Bilangan Pecahan maka dimungkinkan juga atau terbuka
menggunakan tipe-data float.
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
3 | H a lS.N.M.P. Simamora -Diktat
int d76;
d76=0+1-2+3-4+5-6+7-8+9;
cout << d76;
return 0;
}
Tampilan jalannya program:
Misalkan, perhatikan konstruksi-algoritma berikut ini:
ip1t←13%3;
tampilkan ip1t;
Pada statement tersebut, expression melibatkan operator sisa-bagi
yakni modulo. Prinsip operasi modulo ditunjukkan pada statement
berikut ini:
A÷B = C sisa D;
maka,
A%B = D;
Jika A=35, B=5, maka C=7; dan D=0; dituliskan 5
0
7 ;
Jika A=30, B=6, maka C=5; dan D=0; dituliskan 6
0
5 ;
Jika A=125, B=4, maka C=31; dan D=1; dituliskan 4
1
31 ;
Jika A=17, B=3, maka C=5; dan D=2; dituliskan 3
2
5 ;
sehingga, untuk contoh kasus tersebut:
A=13;
B=3;
dan D=1; karena C=4;
Dengan demikian, diperoleh isi var: ip1t adalah 1;
Dalam penanganan operasi modulo selalu melibatkan Bilangan
Bulat, oleh sebab nilai dari sisa-bagi tidak mungkin dalam bentuk
Bilangan Pecahan. Dengan demikian, tipe-data yang digunakan
harus integer atau int.
4 | H a lS.N.M.P. Simamora -Diktat
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
int ip1t;
ip1t=13%3;
cout << ip1t;
return 0;
}
Tampilan jalannya program:
Kasus: -Perhatikan model geometri berikut ini:
A
B C
BC = 10 cm; BE+EC=BC;
AE = 17.3 cm;
Tentukan berapa area ∆BAC.
Solusi:
Konstruksi-algoritma:
BC←10;
AE←17.3;
area=0.5∗(BC∗AE);
tampilkan area;
5 | H a lS.N.M.P. Simamora -Diktat
Diselesaikan secara analitik:
area = 0.5∗(10∗17.3);
= 86.5 cm2 ;
Diperoleh bahwa area ∆ABC adalah 86.5 cm2;
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
float BC,AE,area;
BC=10;
AE=17.3;
area=0.5*(BC*AE);
cout << "Area segitiga ABC adalah " << area <<
" cm2";
return 0;
}
Tampilan jalannya program:
Kasus: -Perhatikan model geometri berikut ini:
Jika a=6-ssp; b=6-ssp; maka
tentukan nilai x.
Solusi:
Konstruksi-algoritma:
a←6;
b←6;
6 | H a lS.N.M.P. Simamora -Diktat
x=(a∗b)÷(a+b);
tampilkan x;
Diselesaikan secara analitik:
x = (6∗6)÷(6+6);
= 3-ssp;
Diperoleh bahwa nilai x adalah 3-ssp;
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
float a,b,x;
a=6;
b=6;
x=(a*b)/(a+b);
cout << x;
return 0;
}
Tampilan jalannya program:
Kasus: -Perhatikan konstruksi-algoritma berikut ini:
♥ + ♥ + ♠ = 6;
♣ + ♥ = 5;
♥ + ♦ + ♠ = 5;
♣ + ♠ + ♠ + ♠ = 9;
♣ + ♥ + ♦ + ♠ = ...?...
Selesaikan persoalan tersebut.
Solusi:
Konstruksi-algoritma:
asumsikan: ♥=q; ♣=p; ♦=r; ♠=s;
♥ + ♥ + ♠ = 6; ⇒ 2q + s = 6;
♣ + ♥ = 5; ⇒ p + q = 5;
♥ + ♦ + ♠ = 5; ⇒ q + r + s = 5;
7 | H a lS.N.M.P. Simamora -Diktat
♣ + ♠ + ♠ + ♠ = 9; ⇒ p + 3s = 9;
2q + s = 6
p + q = 5 −
p + q = 5 ⇔ 2p + 2q = 10
Dituliskan kembali:
2q + s = 6
2p + 2q = 10 −
s − 2p = -4
s − 2p = -4
p + 3s = 9 −
p + 3s = 9 ⇔ 2p + 6s = 18
Dituliskan kembali:
s − 2p = -4
2p + 6s = 18 +
0 + 7s = 14 ; s = 2;
2q + s = 6; q = 2;
p + q = 5; p = 3;
q + r + s = 5; r = 1;
maka, ♥=2; ♣=3; ♦=1; ♠=2;
dan diperoleh bahwa, ♣ + ♥ + ♦ + ♠ = 8;
Dituliskan dalam pemrograman C++
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int q,p,r,s;
q=2;
p=3;
r=1;
s=2;
cout << char(3) << " + " << char(3) << " + " <<
char(6) << " = " << (2*q+s) << ";n";
8 | H a lS.N.M.P. Simamora -Diktat
cout << char(5) << " + " << char(3) << " = " <<
(p+q) << ";n";
cout << char(3) << " + " << char(4) << " + "
<< char(6) << " = " << (q+r+s) << ";n";
cout << char(5) << " + " << char(6) << " + " <<
char(6) << " + " << char(6) << " = " << (p+3*s)
<< ";n";
cout << char(5) << " + " << char(3) << " + "
<< char(4) << " + " << char(6) << " = " <<
(p+q+r+s) << ";";
return 0;
}
Tampilan jalannya program:
Kasus: -Perhatikan rangkaian elektronika berikut ini:
Berdasarkan model tersebut, selesaikan persoalan berikut:
a) Hitunglah Rpengganti BC.
Solusi:
Konstruksi-algoritma:
R1=2K;
R2=3K;
Rpe =
( )
( )21
21.
RR
RR
+
=
( )
( )32
32
+
∗
;
9 | H a lS.N.M.P. Simamora -Diktat
=
5
6
= 1.2K;
maka, Rpe = RBC = 1.2K;
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
float R1,R2,Rpe;
R1=2;
R2=3;
Rpe=(R1*R2)/(R1+R2);
cout << Rpe << "K";
return 0;
}
Tampilan jalannya program:
b) Hitung tegangan-cabang di BC.
Solusi:
Konstruksi-algoritma:
Tegangan = Beda-potensial = Kuat-Arus ∗ Hambatan;
V = i ∗ R;
Vtot = VAB + VBC;
sedangkan,
itot = iAB = iBC;
sehingga,
tegangan-cabang di BC = VBC = iBC ∗ RBC;
iBC = itot =
tot
tot
R
V
; dimana, Vtot = 5V;
Rtot = RAB + RBC; RAB = 20Ω = 0.02K;
= 0.02K + 1.2K;
= 1.22K;
10 | H a lS.N.M.P. Simamora -Diktat
lalu, itot =
K
V
22.1
5
= 4.098360656mA;
dengan demikian, VBC = iBC ∗ RBC = 4.918032787V;
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
float R1,R2,RBC,RAB,Rtot,itot,iBC,Vtot,VBC;
R1=2;
R2=3;
Vtot=5;
RBC=(R1*R2)/(R1+R2);
RAB=0.02;
Rtot=RAB+RBC;
itot=Vtot/Rtot;
iBC=itot;
VBC=iBC*RBC;
cout << VBC << "V";
return 0;
}
Tampilan jalannya program:
c) Hitung tegangan-cabang di AB.
Solusi:
Konstruksi-algoritma:
VAB = iAB ∗ RAB;
= (4.098360656mA)(20Ω)
= 81.96721311 mV
maka, tegangan-cabang di AB adalah 81.97mV.
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
11 | H a lS.N.M.P. Simamora -Diktat
int main()
{
float R1,R2,RBC,RAB,Rtot,itot,iAB,Vtot,VAB;
R1=2;
R2=3;
RAB=0.02;
Vtot=5;
RBC=(R1*R2)/(R1+R2);
Rtot=RAB+RBC;
itot=Vtot/Rtot;
iAB=itot;
RAB=RAB*1000;
VAB=iAB*RAB;
cout << VAB << " mV";
return 0;
}
Tampilan jalannya program:
d) Hitung daya di R=2K.
Solusi:
Konstruksi-algoritma:
Daya = tegangan ∗ kuat-arus;
P = V ∗ i;
sedangkan, PR1 = VBC ∗ iR2K
iR2K = VBC ÷ R1;
=
K
V
2
92.4
= 2.459016393 mA;
sehingga, PR1 = VBC ∗ iR2K
= (4.92V)( 2.459016393 mA)
= 12.09352325KW
dengan demikian daya di R=2K adalah 12.09KW.
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
12 | H a lS.N.M.P. Simamora -Diktat
int main()
{
float
R1,R2,RBC,RAB,Rtot,itot,iBC,i1,Vtot,VBC,PBC;
R1=2;
R2=3;
Vtot=5;
RBC=(R1*R2)/(R1+R2);
RAB=0.02;
Rtot=RAB+RBC;
itot=Vtot/Rtot;
iBC=itot;
VBC=iBC*RBC;
i1=VBC/R1;
PBC=VBC*i1;
cout << PBC << " KW";
return 0;
}
Tampilan jalannya program:
e) Hitung kuat-arus di R=3K.
Solusi:
Konstruksi-algoritma:
VR2 = VBC = 4.92V.
maka, iR2 =
2
2
R
VR
=
K
V
3
74.91803278
= 1.639344262 mA;
dengan demikian, kuat-arus di R=3K adalah 1.639mA.
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
float
R1,R2,RBC,RAB,Rtot,itot,iBC,i2,Vtot,VBC;
R1=2;
13 | H a lS.N.M.P. Simamora -Diktat
R2=3;
Vtot=5;
RBC=(R1*R2)/(R1+R2);
RAB=0.02;
Rtot=RAB+RBC;
itot=Vtot/Rtot;
iBC=itot;
VBC=iBC*RBC;
i2=VBC/R2;
cout << i2 << " mA";
return 0;
}
Tampilan jalannya program:
Rangkaian elektronika tersebut disimulasikan berikut ini:
14 | H a lS.N.M.P. Simamora -Diktat
Operator Logika
Ada tiga operator logika yang dikenal secara umum dalam
pemrograman yakni AND, OR, dan XOR; ditambah satu operator
NOT. Operator logika bekerja berdasar algoritma kerja logic-gates.
Algoritma Kerja Gerbang AND (disimbolkan dalam
pemrograman adalah ‘&’): luaran bernilai 1 jika-dan-hanya-jika
semua nilai-masukan bernilai 1.
Contoh: -Perhatikan konstruksi-algoritma berikut:
A←DEC(15);
B←DEC(21);
z=A•B;
tampilkan z;
Solusi:
Algoritma Matematika Informasi
DEC(15) = (...)2;
15 ÷ 2 = 7 sisa 1
7 ÷ 2 = 3 sisa 1
3 ÷ 2 = 1 sisa 1
1 ÷ 2 = 0 sisa 1
maka, disusun menjadi: (1111)2; dan A = 1111;
DEC(21) = (...)2;
21 ÷ 2 = 10 sisa 1
10 ÷ 2 = 5 sisa 0
5 ÷ 2 = 2 sisa 1
2 ÷ 2 = 1 sisa 0
1 ÷ 2 = 0 sisa 1
maka, disusun menjadi: (10101)2; dan B = 10101;
A : 01111
B : 10101 •
2
15 | H a lS.N.M.P. Simamora -Diktat
C : 00101
sehingga, isi var: C adalah (00101)2 ⇒ transformasikan ke DEC.
00101= DEC(...);
= 0 + 0 + 1.(2)2 + 0 + 1.(2)0;
= 4 + 1;
= DEC(5);
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
int A,B,C;
A=15;
B=21;
C=A&B;
cout << C;
return 0;
}
Tampilan jalannya program:
Algoritma Kerja Gerbang OR (disimbolkan dalam pemrograman
adalah ‘’): luaran bernilai 1 jika-dan-hanya-jika salah-satu nilai-
masukan bernilai 1.
Contoh: -Perhatikan konstruksi-algoritma berikut:
A←DEC(16);
B←DEC(21);
z=A+B;
tampilkan z;
Solusi:
Algoritma Matematika Informasi
DEC(16) = (...)2;
16 ÷ 2 = 8 sisa 0
8 ÷ 2 = 4 sisa 0
4 ÷ 2 = 2 sisa 0
2 ÷ 2 = 1 sisa 0
16 | H a lS.N.M.P. Simamora -Diktat
1 ÷ 2 = 0 sisa 1
maka, disusun menjadi: (10000)2; dan A = 10000;
DEC(21) = (...)2;
21 ÷ 2 = 10 sisa 1
10 ÷ 2 = 5 sisa 0
5 ÷ 2 = 2 sisa 1
2 ÷ 2 = 1 sisa 0
1 ÷ 2 = 0 sisa 1
maka, disusun menjadi: (10101)2; dan B = 10101;
A : 10000
B : 10101 +
C : 10101
sehingga, isi var: C adalah (10101)2 ⇒ transformasikan ke DEC.
10101= DEC(...);
= 1.(2)4 + 0 + 1.(2)2 + 0 + 1.(2)0;
= 16 + 4 + 1;
= DEC(21);
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
int A,B,C;
A=16;
B=21;
C=A|B;
cout << C;
return 0;
}
Tampilan jalannya program:
Algoritma Kerja Gerbang XOR (disimbolkan dalam pemrograman
adalah ‘∧’): luaran bernilai 1 jika-dan-hanya-jika jumlah nilai-
masukan bernilai kelipatan GANJIL.
17 | H a lS.N.M.P. Simamora -Diktat
Contoh: -Perhatikan konstruksi-algoritma berikut:
A←DEC(14);
B←DEC(22);
z=A⊕B;
tampilkan z;
Solusi:
Algoritma Matematika Informasi
DEC(14) = (...)2;
14 ÷ 2 = 7 sisa 0
7 ÷ 2 = 3 sisa 1
3 ÷ 2 = 1 sisa 1
1 ÷ 2 = 0 sisa 1
maka, disusun menjadi: (1110)2; dan A = 1110;
DEC(22) = (...)2;
22 ÷ 2 = 11 sisa 0
11 ÷ 2 = 5 sisa 1
5 ÷ 2 = 2 sisa 1
2 ÷ 2 = 1 sisa 0
1 ÷ 2 = 0 sisa 1
maka, disusun menjadi: (10110)2; dan B = 10110;
A : 01110
B : 10110 ⊕
C : 11000
sehingga, isi var: C adalah (11000)2 ⇒ transformasikan ke DEC.
11000= DEC(...);
= 1.(2)4 + 1.(2)3 + 0 + 0 + 0;
= 16 + 8;
= DEC(24);
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
int A,B,C;
A=14;
B=22;
C=A^B;
cout << C;
return 0;
18 | H a lS.N.M.P. Simamora -Diktat
}
Tampilan jalannya program:
Algoritma Kerja Gerbang NOT (disimbolkan dalam
pemrograman adalah ‘&’): luaran bernilai 1 jika-dan-hanya-jika nilai-
masukan bernilai 0.
Contoh: -Perhatikan konstruksi-algoritma berikut:
zT←DEC(15);
z=∼(zT);
tampilkan z;
Solusi:
Algoritma Matematika Informasi: -Algoritma Komplemen DEC
Langkah-1: -transformasikan DEC-to-BIN dengan panjang 16-bit
(gunakan Algoritma FAST)
DEC(15) = xxxx xxxx xxxx xxxx
= 0000 0000 0000 1111
Langkah-2: -tambahkan dengan (1)2;
0000 0000 0000 1111
1 +
0000 0000 0001 0000
Langkah-3: -NOT-kan bit tersebut;
0000 0000 0001 0000 ⇒ 1111 1111 1110 1111
Langkah-4: -tambahkan dengan (1)2;
1111 1111 1110 1111
1 +
1111 1111 1111 0000
Langkah-5: -transformasikan bit tersebut ke DEC;
i. komplemen-kan bit tersebut;
1111 1111 1111 0000 ⇒ 0000 0000 0000 1111
ii. tambah-kan dengan (1)2;
0000 0000 0000 1111
1 +
0000 0000 0001 0000
19 | H a lS.N.M.P. Simamora -Diktat
iii. transformasikan ke DEC;
0000 0000 0001 0000= 0 + ... + 0.(2)4
+ 0 + 0 + 0 + 0;
= DEC(16);
iv. kali-kan dengan DEC(-1)
DEC(16) ∗ DEC(-1) = DEC(-16);
maka, diperoleh bahwa ∼(DEC(15)) = DEC(-16); sehingga isi
var: z = (-16)10;
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
int zT=;
zT=15;
z=~(zT);
cout << z;
return;
}
Tampilan jalannya program:
Misalkan, perhatikan konstruksi-algoritma berikut ini:
zK←(21H≥055) && (DEC(55)≠21H)  (055=DEC(45));
tampilkan zK;
Tuliskan pemrograman C++ untuk menyelesaikan persoalan
tersebut.
Solusi:
Algoritma Matematikan Informasi
Transformasikan seluruh data-numerik ke dalam DEC;
21H= 0x21 = (21)16 = (...)10;
= 2.(16)1 + 1.(16)0
= 32 + 1 = DEC(33);
20 | H a lS.N.M.P. Simamora -Diktat
055 = (55)8 = (...)10;
= 5.(8)1 + 5.(8)0
= 40 + 5 = DEC(45);
Asumsikan,
x←21H≥055;
apakah 21H≥055; jawab: false (0);
maka, x = 0;
y←DEC(55)≠21H;
apakah DEC(55)≠21H; jawab: true (1);
maka, y = 1;
z←055=DEC(45);
apakah 055=DEC(45); jawab: true (1);
maka, z = 1;
sehingga, prioritas pengerjaan pada AND dibandingkan OR oleh
sebab AND level-nya lebih tinggi dibandingkan OR.
zK = x • y + z;
diuraikan, zK= (x • y);
= 0;
selanjutnya, zK = (zK + z);
= 1;
maka, isi terbaru/termutahir var: zK = 1 (true);
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
unsigned int zK;
zK=(0x21>=055)&&(55!=0x55)||(055==45);
cout << zK;
return 0;
}
Tampilan jalannya program:
21 | H a lS.N.M.P. Simamora -Diktat
Kasus: -Sebuah var: sR menampung data-numerik DEC(32),
lalu di-XOR-kan dengan (1100)2, selanjutnya hasilnya di-AND-
kan dengan 025; lalu di-OR-kan dengan nilai-awal. Hasil-akhir
ditampungkan kembali ke sR, dan di-NOT-kan. Tentukan nilai
terbaru/termutar sR.
Solusi:
Algoritma Matematika Informasi:
DEC(32) = (...)2;
32 ÷ 2 = 16 sisa 0
16 ÷ 2 = 8 sisa 0
8 ÷ 2 = 4 sisa 0
4 ÷ 2 = 2 sisa 0
2 ÷ 2 = 1 sisa 0
1 ÷ 2 = 0 sisa 1
maka, disusun menjadi: (100000)2 ;
025 = (25)8 = (...)2;
Transformasi terlebih dahulu ke DEC, lalu selanjutnya ke BIN;
025 = (25)8 = (...)10;
= 2.(8)1 + 5.(8)0
= 16 + 5 = DEC(21);
DEC(21) = (...)2;
21 ÷ 2 = 10 sisa 1
10 ÷ 2 = 5 sisa 0
5 ÷ 2 = 2 sisa 1
2 ÷ 2 = 1 sisa 0
1 ÷ 2 = 0 sisa 1
maka, disusun menjadi: (10101)2 ;
DEC(32) : 10 0000
(1100)2 : 00 1100 ⊕
sR : 10 1100
(25)8 : 01 0101 •
sR : 00 0100
(32)10 : 10 0000 +
sR : 10 0100
22 | H a lS.N.M.P. Simamora -Diktat
Isi var: sR di-NOT-kan:
sR : 10 0100
sR : 01 1011
Uji nilai DEC isi terbaru var: sR,
DEC(52) : 0000 0011 0100
( ... )10 : 1111 1101 1011 +
DEC(...) :10000 0000 1111
1 : tanda +;
sehingga, 1111 = DEC(15), dan hasil NOT dari sR adalah:
(15)10 − (52)10 = (-37)10;
Gunakan Cara ke-2: Algoritma Komplemen DEC;
sR = 10 0100 = (...)10;
= 1.(2)5 + 0.(2)4 + 0.(2)3 + 1.(2)2 + 0.(2)1 + 0.(2)0
= 32 + 0 + 0 + 4 + 0 + 0
= DEC(36)
Langkah-1: -transformasikan DEC-to-BIN dengan panjang 16-bit
(gunakan Algoritma FAST)
DEC(36) = xxxx xxxx xxxx xxxx
= 0000 0000 0010 0100
Langkah-2: -tambahkan dengan (1)2;
0000 0000 0010 0100
1 +
0000 0000 0010 0101
Langkah-3: -NOT-kan bit tersebut;
0000 0000 0010 0101 ⇒ 1111 1111 1101 1010
Langkah-4: -tambahkan dengan (1)2;
1111 1111 1101 1010
1 +
1111 1111 1101 1011
Langkah-5: -transformasikan bit tersebut ke DEC;
i. komplemen-kan bit tersebut;
1111 1111 1101 1011 ⇒ 0000 0000 0010 0100
ii. tambah-kan dengan (1)2;
0000 0000 0010 0100
1 +
0000 0000 0010 0101
23 | H a lS.N.M.P. Simamora -Diktat
iii. transformasikan ke DEC;
0000 0000 0010 0101= 0 + ... + 1.(2)5
+ 1.(2)2
+ 1.(2)0
;
= DEC(37);
iv. kali-kan dengan DEC(-1)
DEC(37) ∗ DEC(-1) = DEC(-37);
maka, diperoleh bahwa ∼(DEC(36)) = DEC(-37); sehingga isi
var: sR = (-37)10;
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
int sR,a;
sR=32;
a=sR;
sR=sR^12;
sR=sR&025;
sR=sR|a;
sR=(~sR);
cout << sR;
return 0;
}
Tampilan jalannya program:
Kasus: -Perhatikan sirkuit logic-
gate berikut ini:
Tentukan Z1 dan Z2 dalam DEC.
24 | H a lS.N.M.P. Simamora -Diktat
Solusi:
Algoritma Matematika Informasi
Z1 = DEC(19) ⊕ (1101)2 ⊕ 0x28;
Z2 = DEC(19) + Z1 + 0x28;
Transformasikan ke BIN:
0x28 = (28)16 = (...)2;
Transformasi terlebih dahulu ke DEC, lalu selanjutnya ke BIN;
0x28 = (28)16 = (...)10;
= 2.(16)1 + 8.(16)0
= 32 + 8 = DEC(40);
DEC(40) = (...)2;
40 ÷ 2 = 20 sisa 0
20 ÷ 2 = 10 sisa 0
10 ÷ 2 = 5 sisa 0
5 ÷ 2 = 2 sisa 1
2 ÷ 2 = 1 sisa 0
1 ÷ 2 = 0 sisa 1
maka, disusun menjadi: (101000)2 ;
DEC(19) = (...)2;
19 ÷ 2 = 9 sisa 1
9 ÷ 2 = 4 sisa 1
4 ÷ 2 = 2 sisa 0
2 ÷ 2 = 1 sisa 0
1 ÷ 2 = 0 sisa 1
maka, disusun menjadi: (10011)2 ;
0x28 : 10 1000
(1101)2 : 00 1101 ⊕
Z1 : 10 0101
(19)10 : 01 0011 ⊕
Z1 : 11 0110
Proses penjumlahan di Z2:
0x28 : 10 1000
Z1 : 11 0110 +
Z2 : 101 1110
(19)10 : 001 0011 +
Z2 : 111 0001
25 | H a lS.N.M.P. Simamora -Diktat
maka, diperoleh Z1 = (110110)2; dan Z2 = (1110001)2;
Z1, ditransformasikan ke DEC sebagai berikut:
Z1 = 11 0110 = (...)10;
= 1.(2)5 + 1.(2)4 + 0.(2)3 + 1.(2)2 + 1.(2)1 + 0.(2)0
= 32 + 16 + 0 + 4 + 2 + 0
= DEC(54)
Z1, ditransformasikan ke DEC sebagai berikut:
Z1 = 1110010 = (...)10;
= 1.(2)6 + 1.(2)5 + 1.(2)4 + 0.(2)3 + 0.(2)2 + 0.(2)1 + 1.(2)0
= 64 + 32 + 16 + 0 + 0 + 0 + 1
= DEC(113)
Dengan demikian, isi var: Z1 = DEC(54); var: Z2 = DEC(113);
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
int Z1,Z2;
Z1=19^(13)^0x28;
Z2=19+Z1+0x28;
cout << Z1 << " " << Z2;
return 0;
}
Tampilan jalannya program:
Kasus: -Perhatikan sirkuit logic-gate berikut ini, dan tentukan
zK dalam DEC dan HEX.
26 | H a lS.N.M.P. Simamora -Diktat
Solusi:
Algoritma Matematika Informasi:
DEC(75) = (...)2;
75 ÷ 2 = 37 sisa 1
37 ÷ 2 = 18 sisa 1
18 ÷ 2 = 9 sisa 0
9 ÷ 2 = 4 sisa 1
4 ÷ 2 = 2 sisa 0
2 ÷ 2 = 1 sisa 0
1 ÷ 2 = 0 sisa 1
maka, disusun menjadi: (1001011)2;
Transformasikan ke BIN:
0x75 = (75)16 = (...)2;
Transformasi terlebih dahulu ke DEC, lalu selanjutnya ke BIN;
0x75 = (75)16 = (...)10;
= 7.(16)1 + 5.(16)0
= 112 + 5 = DEC(117);
DEC(117) = (...)2;
117 ÷ 2 = 58 sisa 1
58 ÷ 2 = 29 sisa 0
29 ÷ 2 = 14 sisa 1
14 ÷ 2 = 7 sisa 0
7 ÷ 2 = 3 sisa 1
3 ÷ 2 = 1 sisa 1
1 ÷ 2 = 0 sisa 1
maka, disusun menjadi: (1110101)2 ;
DEC(75) : 100 1011
0x75 : 111 0101 ⊕
zK : 011 1110
sehingga, isi var: zK adalah (0111110)2 ⇒ transformasikan ke
DEC dan HEX.
0111110 = DEC(...);
= 0 + 1.(2)5 + 1.(2)4 + 1.(2)3 + 1.(2)2 + 1.(2)1 + 0;
= 32 + 16 + 8 + 4 + 2;
= DEC(62);
DEC(62) = (...)16;
27 | H a lS.N.M.P. Simamora -Diktat
62 ÷ 16 = 3 sisa 14 ; 14 ⇒ e;
3 ÷ 16 = 0 sisa 3
maka, disusun menjadi: (3e)16 = 0x3e;
Dengan demikian, isi terbaru/termutahir zK = DEC(62) = 0x3e
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
int zK;
zK=(75)^0x75;
cout << zK << endl;
cout << hex << zK;
return 0;
}
Tampilan jalannya program:
Kasus: -Buktikan expression berikut:
z • 1 = z;
untuk z ∈ data-numerik;
Solusi:
misalkan: z←DEC(18);
maka, DEC(18) = (...)2;
18 ÷ 2 = 9 sisa 0
9 ÷ 2 = 4 sisa 1
4 ÷ 2 = 2 sisa 0
2 ÷ 2 = 1 sisa 0
1 ÷ 2 = 0 sisa 1
maka, disusun menjadi: (10010)2 ;
1 ditansformasikan dengan panjang 16-bit: 1111 1111
dan 1111 1111 = DEC(-1);
Pembuktikan:
z1 = z + 1;
28 | H a lS.N.M.P. Simamora -Diktat
z2 = z;
DEC(18) : 0001 0010
1 : 1111 1111 •
z1 : 0001 0010
maka, z1 = DEC(18); dan z2 = DEC(18); sehingga terbukti.
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
unsigned int z1,z2,z;
z=18;
z1=z&(-1);
z2=z;
cout << z1 << " " << z2;
return 0;
}
Tampilan jalannya program:
29 | H a lS.N.M.P. Simamora -Diktat
Struktur Kendali Proses
Ada tiga jenis struktur kendali proses yang umum digunakan
dalam pemrograman, yakni: jika-dan-hanya-jika, perulangan, dan
seleksi. Blok kontrol jika-dan-hanya-jika dikenal dengan if-then-
else; perulangan ada tiga kelompok, yakni while, do-while, dan
for; serta seleksi dikenal dengan switch.
3.1 Blok kontrol: if-then-else
Format umum blok dapat dituliskan sebagai berikut:
if( ... ) {
statement;
} else {
statement;
}
Kasus: -Perhatikan statement berikut, dan selesaikan persoalan
yang disajikan; dimana nilai f(x) harus real.
f(x) =
)12(
)3(
+
−
x
x
; range: -5 ≤ x ≤ 5; dan x diperoleh dengan
metode input-value by end-user;
Solusi:
Konstruksi-algoritma:
Agar x selalu bernilai real, maka (2x+1) ≠ 0; sehingga x ≠ -0.5;
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
float fx,x;
3
30 | H a lS.N.M.P. Simamora -Diktat
cout << "Tentukan x?: ";
cin >> x;
if((x==-0.5)||(x<-5)||(x>5)) {
cout << "Maaf, out-of-range...";
} else {
cout << "x=" << x;
cout << " ; f(" << x << ")=";
fx=(x-3)/(2*x+1);
cout << fx;
}
return 0;
}
Tampilan jalannya program:
Kasus: -Perhatikan statement berikut, dan selesaikan persoalan
yang disajikan; dimana nilai z(s) harus real.
z(s) =
s
s )12( −
; range: -1.5 < s < 1.5; dan s diperoleh
dengan metode input-value by end-user;
Solusi:
Konstruksi-algoritma:
Agar s selalu bernilai real, maka s ≠ 0;
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
31 | H a lS.N.M.P. Simamora -Diktat
int main()
{
float s,zS;
cout << "Tentukan s?: ";
cin >> s;
if((s==0)||(s<=-1.5)||(s>=1.5)) {
cout << "Maaf, out-of-range...";
} else {
cout << "s=" << s << " ; ";
cout << "z(" << s << ")=";
zS=(2*s-1)/s;
cout << zS;
}
return 0;
}
Tampilan jalannya program:
3.2 Blok kontrol: while
Format umum blok dapat dituliskan sebagai berikut:
while( ... ) {
statement;
}
Kasus: -Tampilkanlah lima bilangan bulat genap dengan range -3
s.d 15; dimana bilangan-awal diperoleh dengan metode input-
32 | H a lS.N.M.P. Simamora -Diktat
value by end-user. Lakukan proteksi terhadap nilai-masukan
tersebut agar sesuai dengan ketentuan yang ditetapkan.
Solusi:
Konstruksi-algoritma:
Agar nilai-masukan sesuai dengan ketentuan, maka:
i. tidak-boleh bilangan pecahan
ii. tidak-boleh bilangan ganjil
iii. bilangan kurang-dari -3 harus di-block
iv. bilangan-awal tidak-boleh lebih-besar atau sama-dengan 7
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
float x;
int b,i;
cout << "Tentukan bilangan-awal?: ";
cin >> x;
b=x;
if((x-b!=0)||(x<-3)||(x>=7)) {
cout << "Maaf, out-of-range...";
} else {
if(b%2!=0) {
x=x+1;
i=0;
while(i<5) {
cout << x << " ";
x=x+2;
i=i+1;
}
} else {
i=0;
while(i<5) {
cout << x << " ";
x=x+2;
i=i+1;
}
}
}
return 0;
}
33 | H a lS.N.M.P. Simamora -Diktat
Tampilan jalannya program:
3.3 Blok kontrol: do-while
Format umum blok dapat dituliskan sebagai berikut:
do {
statement;
} while( ... );
Kasus: -Tampilkanlah enam bilangan bulat ganjil dengan range -5
s.d 18; dimana bilangan-awal diperoleh dengan metode input-
value by end-user. Lakukan proteksi terhadap nilai-masukan
tersebut agar sesuai dengan ketentuan yang ditetapkan.
Solusi:
Konstruksi-algoritma:
Agar nilai-masukan sesuai dengan ketentuan, maka:
i. tidak-boleh bilangan pecahan
ii. tidak-boleh bilangan genap
iii. bilangan kurang-dari -5 harus di-block
iv. bilangan-awal tidak-boleh lebih-besar atau sama-dengan 8
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
34 | H a lS.N.M.P. Simamora -Diktat
float r;
int b,i;
cout << "Tentukan bilangan-awal?: ";
cin >> r;
b=r;
if((r-b!=0)||(b<-5)||(b>=8)) {
cout << "Maaf, out-of-range...";
} else {
if(b%2==0) {
b=b+1;
i=0;
do {
cout << b << " ";
b=b+2;
i=i+1;
} while(i<6);
} else {
i=0;
do {
cout << b << " ";
b=b+2;
i=i+1;
} while(i<6);
}
}
return 0;
}
Tampilan jalannya program:
35 | H a lS.N.M.P. Simamora -Diktat
3.4 Blok kontrol: for
Format umum blok dapat dituliskan sebagai berikut:
for( ... ) {
statement;
}
Kasus: -Tampilkanlah empat bilangan pecahan dengan range -5
s.d 12; untuk selisih antar-bilangan=0.5, dimana bilangan-awal
harus bentuk pecahan yang diperoleh dengan metode input-value
by end-user. Lakukan proteksi terhadap nilai-masukan tersebut
agar sesuai dengan ketentuan yang ditetapkan.
Solusi:
Konstruksi-algoritma:
Agar nilai-masukan sesuai dengan ketentuan, maka:
i. tidak-boleh bilangan bulat sebagai nilai-masukan
ii. format bilangan pecahan 10.0 adalah 10;
iii. bilangan kurang-dari -5 harus di-block
iv. bilangan-awal tidak-boleh lebih-besar atau sama-dengan 10.5
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
float d;
int b,i;
cout << "Tentukan bilangan-awal?: ";
cin >> d;
b=d;
if((d-b==0)||(d<=-5)||(d>=10.5)) {
cout << "Maaf, out-of-range...";
} else {
for(i=0;i<4;i=i+1) {
cout << d << " ";
d=d+0.5;
}
}
return 0;
}
36 | H a lS.N.M.P. Simamora -Diktat
Tampilan jalannya program:
Kasus: -Apabila ditampilkan sejumlah data-numerik berikut:
[1]: -1;
[2]: -2;
[3]: -3;
[4]: -4;
[5]: -5;
[6]: -6;
[7]: -7;
Selesaikan persoalan ini, dimana nilai-masukan menggunakan
metode deklarasi pada badan-program.
Solusi:
Konstruksi-algoritma:
Blok perulangan untuk indeks dan isi indeks dipisahkan, sehingga
kontrol-perulangan saling independ satu terhadap yang lain.
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
int t,i;
t=-1;
for(i=0;i<7;i=i+1) {
37 | H a lS.N.M.P. Simamora -Diktat
cout << "[" << (i+1) << "]" << ": ";
cout << t;
cout << ";" << endl;
t=t-1;
}
return 0;
}
Tampilan jalannya program:
3.5 Blok kontrol: switch
Format umum blok dapat dituliskan sebagai berikut:
switch( ... ){
case 1: {
statement;
break;
}
case 2: {
statement;
break;
}
...
default: {
statement;
break;
}
}
38 | H a lS.N.M.P. Simamora -Diktat
Kasus: -Ada tiga pilihan diberikan kepada end-user, yakni: Pilihan-
1: menampilkan statement dua baris, yaitu baris pertama adalah
“Teknik Informatika / FTI”; sedangkan baris ke-2 adalah
“Universitas BALE, Bandung”; Pilihan-2: menampilkan statement
“Mari Belajar Pemrograman C++”; dan Pilihan ke-3
menampilkan pertukaran isi dua variabel, var: s1=(-6); var:
s2=666; Selain ketiga pilihan tersebut, lakukan proteksi terhadap
nilai-masukan oleh end-user.
Solusi:
Konstruksi-algoritma:
Untuk pertukaran dua variabel, digunakan algoritma berikut:
s1←(-6);
s2←(666);
z = s1;
s1 = s2;
s2 = z;
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
int x;
cout << "Tentukan pilihan 1 s.d 3?: ";
cin >> x;
switch(x) {
case 1:
{
cout << "Teknik Informatika / FTIn";
cout << "Universitas BALE, Bandung";
break;
}
case 2:
{
cout << "Mari Belajar Pemrograman C++";
break;
}
case 3:
{
int z,s1,s2;
s1=-6;
s2=666;
39 | H a lS.N.M.P. Simamora -Diktat
cout << s1 << " " << s2 << endl;
z=s1;
s1=s2;
s2=z;
cout << s1 << " " << s2;
break;
}
default:
{
cout << "Maaf, out-of-range...";
break;
}
}
return 0;
}
Tampilan jalannya program:
Kasus: -Ada empat pilihan diberikan kepada end-user, dengan
format tampilan berikut ini:
1. Operasi Logika XOR
2. Operasi Modulo
3. Operasi Perbandingan
4. Operasi Arithmatika Pengurangan
Adapun konstruksi-algoritma diuraikan sebagai berikut:
Pilihan ke-1:
z1?;
z2?;
40 | H a lS.N.M.P. Simamora -Diktat
z=z1⊕z2;
tampilkan z;
Pilihan ke-2:
q1?;
q2?;
Q=q1%q2;
tampilkan Q;
Pilihan ke-3:
d76=(31H≠061)&&(DEC(15)≥017);
tampilkan d76;
Pilihan ke-4:
p1?;
p2?;
pR=(p1−p2);
tampilkan pR;
Solusi:
Algoritma Matematika Informasi:
Untuk Pilihan-3:
Transformasikan ke DEC:
31H = (31)16 = (...)10;
= 3.(16)1 + 1.(16)0
= 48 + 1 = DEC(49);
061 = (61)8 = (...)10;
= 6.(8)1 + 1.(8)0
= 48 + 1 = DEC(49);
017 = (17)8 = (...)10;
= 1.(8)1 + 7.(8)0
= 8 + 7 = DEC(15);
Uraikan!
apakah 31H≠061 ; jawab: false (0);
apakah DEC(15)≥017 ; jawab: true (1);
sehingga, d76 = (false) && (true);
dan, var: d76 = false (0);
41 | H a lS.N.M.P. Simamora -Diktat
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
int plh;
cout << "1. Operasi Logika XORn";
cout << "2. Operasi Modulon";
cout << "3. Operasi Perbandingann";
cout << "4. Operasi Arithmatika Pengurangann";
cout << "---------------------------------------
------nn";
cout << "Tentukan pilihan anda?: ";
cin >> plh;
switch(plh) {
case 1: {
int z1,z2,z;
cout << "Tentukan z1?: ";
cin >> z1;
cout << "Tentukan z2?: ";
cin >> z2;
z=z1^z2;
cout << z1 << " XOR " << z2 << " = ";
cout << z;
break;
}
case 2: {
int q1,q2,Q;
cout << "Tentukan q1?: ";
cin >> q1;
cout << "Tentukan q2?: ";
cin >> q2;
Q=q1%q2;
cout << q1 << " MOD " << q2 << " = ";
cout << Q;
break;
}
case 3: {
int d76;
d76=(0x31!=061)&&(15>=017);
cout << "Statement: (0x31 != 061)&&(15 >=
017);n";
cout << "Hasil: " << d76;
break;
42 | H a lS.N.M.P. Simamora -Diktat
}
case 4: {
int p1,p2,pR;
cout << "Tentukan p1?: ";
cin >> p1;
cout << "Tentukan p2?: ";
cin >> p2;
pR=p1-p2;
cout << p1 << "-" << p2 << "=";
cout << pR;
break;
}
default: {
cout << "Maaf, out-of-range...";
break;
}
}
return 0;
}
Tampilan jalannya program:
43 | H a lS.N.M.P. Simamora -Diktat
Kasus: - empat pilihan diberikan kepada end-user, dengan format
tampilan berikut ini:
1. Operasi AND
2. Operasi XOR
3. Operasi OR
4. Operasi NOT
Adapun konstruksi-algoritma diuraikan sebagai berikut:
z1?;
z2?;
Tentukan pilihan anda?: _
Untuk Pilihan ke-4, masing-masing z1 dan z2 akan diperoleh
hasil operasi komplemen-nya.
Solusi:
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
int t,z1,z2,z;
cout << "Tentukan z1?: ";
cin >> z1;
cout << "Tentukan z2?: ";
cin >> z2;
cout << "1. Operasi ANDn";
cout << "2. Operasi XORn";
cout << "3. Operasi ORn";
cout << "4. Operasi NOTn";
cout << "---------------------------------------
------n";
cout << "Tentukan pilihan anda?: ";
cin >> t;
switch(t) {
case 1: {
z=z1&z2;
cout << z1 << " AND " << z2 << " = ";
cout << z;
break;
}
case 2: {
z=z1^z2;
cout << z1 << " XOR " << z2 << " = ";
cout << z;
break;
44 | H a lS.N.M.P. Simamora -Diktat
}
case 3: {
z=z1|z2;
cout << z1 << " OR " << z2 << " = ";
cout << z;
break;
}
case 4: {
cout << "~(" << z1 << ") = " << (~z1) << endl;
cout << "~(" << z2 << ") = " << (~z2) << endl;
break;
}
default: {
cout << "Maaf, out-of-range...";
break;
}
}
return 0;
}
Tampilan jalannya program:
45 | H a lS.N.M.P. Simamora -Diktat
Operator Matematika
Umumnya pada setiap bahasa pemrograman, library translator
yang digunakan menyediakan operator-operator khusus
matematika dalam bentuk function atau method. Beberapa operator
khusus matematika yang umum disediakan seperti: fungsi-fungsi
trigonometri, konstanta Bilangan PHI (π), kuadrat, akar-pangkat
2, logaritma basis bilangan 10. Function atau method ini
disimpankan pada header file (di translator Dev-Cpp) math.h.
Misalkan, tentukan volume bola apabila jari-jarinya adalah 3-ssp.
Solusi:
Konstruksi-algoritma:
r←3;
vol=
3
3
4
r∗∗π ;
tampilkan vol;
vol = (4÷3) ∗ (3.14) ∗ (r)3;
Karena menyesuaikan dengan kapabilitas Dev-Cpp dalam
operator DIV, maka ditransformasikan menjadi:
vol = (4 ∗ (3.14) ∗ (r)3) ÷ 3;
= 113.0973355 ssp3;
Dengan demikian, volume bola tersebut adalah 113.0973355 ssp3;
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float vol,r,phi,r3;
4
46 | H a lS.N.M.P. Simamora -Diktat
r=3;
phi=M_PI;
r3=pow(r,3);
vol=(4*phi*r3)/3;
cout << vol;
return 0;
}
Tampilan jalannya program:
Dari penyelesaian kasus ini dapat disimpulkan bahwa operator
khusus perpangkatan adalah:
z=pow(a,b); dimana z = ab;
Kasus: -Jika z = log(1000), maka tentukan berapa isi
terbaru/termutahir z.
Solusi:
Konstruksi-algoritma
z = log(1000);
maka, untuk mencari nilai log bilangan basis 10 yakni:
z =
( )
( ))10log(
)1000log(
;
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float z;
z=1000;
cout << "log(" << z << ") = ";
z=(log(z))/(log(10));
cout << z;
return 0;
}
47 | H a lS.N.M.P. Simamora -Diktat
Tampilan jalannya program:
Kasus: -Perhatikan model geometri berikut ini:
OA = 3-ssp;
OB = 4-ssp;
Tentukan AB.
Solusi:
Konstruksi-algoritma:
Jika OA = 3-ssp; OB = 4-ssp, maka:
AB = ( )22
)()( OBOA + ;
= ( )22
)4()3( + ;
= ( )169 + ;
= 25-ssp;
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float OA,OB,AB;
OA=3;
OB=4;
OA=pow(OA,2);
OB=pow(OB,2);
AB=sqrt(OA+OB);
cout << AB;
return 0;
}
48 | H a lS.N.M.P. Simamora -Diktat
Tampilan jalannya program:
Dari penyelesaian kasus ini dapat disimpulkan bahwa operator
khusus akar-pangkat 2 adalah:
z=sqrt(S); dimana z = S ;
Perhatikan model grafis berikut ini:
Model ini diturunkan dari nilai sine(x), cosine(x), dan tangent(x);
dimana x adalah nilai sudut (atau disimbolkan dengan θθθθ).
Umumnya pada pemrograman, nilai trigonometri dinyatakan
dalam radian, bukan derajat; sehingga nilai derajat harus
ditransformasikan ke dalam bentuk radian dan sebaliknya.
49 | H a lS.N.M.P. Simamora -Diktat
Misalkan, aR←60o; tentukan sin(aR), cos(aR), dan tan(aR).
Solusi:
Konstruksi-algoritma:
2π rad = 360o;
maka, 1o = (π÷180) rad;
aR=60;
aR= aR ∗ (π ÷180);
Diuraikan satu-persatu sebagai berikut:
mencari nilai sin(aR)
aR=aR∗(π÷180);
z1=sin(aR);
tampilkan z1;
mencari nilai cos(aR)
aR=aR∗(π÷180);
z2=cos(aR);
tampilkan z2;
mencari nilai tan(aR)
aR=aR∗(π÷180);
z3=tan(aR);
tampilkan z3;
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float aR,z1,z2,z3,phi;
phi=M_PI;
aR=60;
aR=aR*(phi/180);
z1=sin(aR);
z2=cos(aR);
z3=tan(aR);
cout << "sin(60)=" << z1 << endl;
cout << "cos(60)=" << z2 << endl;
cout << "tan(60)=" << z3;
return 0;
}
50 | H a lS.N.M.P. Simamora -Diktat
Tampilan jalannya program:
Dari penyelesaian kasus ini dapat disimpulkan bahwa operator
khusus trigonometri adalah:
z1=sin(x); dimana x = 





∗
180
π
x ;
z2=cos(t); dimana t = 





∗
180
π
t ;
z3=tan(s); dimana s = 





∗
180
π
s ;
Kasus: -Perhatikan konstruksi-algoritma berikut:
zK = (1 ÷ (tan(z))) ∗ cos(z);
Tentukan zK untuk z ∈ 0, 30, 60, 90, 120; gunakan struktur
kendali proses for dalam penanganan proses repetisi.
Solusi:
Hindari tan(z)=∞;
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float z,zK,phi,a,a1;
int i;
phi=M_PI;
z=0;
for(i=0;i<5;i=i+1) {
cout << (i+1) << ". " << z << " ";
if(z==0||z==90) {
cout << "N/A" << endl;
} else {
a=z;
51 | H a lS.N.M.P. Simamora -Diktat
a=a*(phi/180);
a1=tan(a);
zK=(1/a1)*cos(a);
cout << zK << endl;
}
z=z+30;
}
return 0;
}
Tampilan jalannya program:
Kasus: -Perhatikan konstruksi-algoritma berikut:
zT = (1 ÷ (sin(z))) ∗ tan(z);
Tentukan zT untuk z ∈ 0, 15, 30, 45, 60, 75, 90, 105, 120;
gunakan struktur kendali proses while dalam penanganan proses
repetisi.
Solusi:
Hindari tan(z)=∞; dan sin(z)=0;
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float z,zT,phi,a,a1;
int i;
phi=M_PI;
z=0;
i=0;
while(z<=120) {
cout << (i+1) << ". " << z << " ";
if(z==0||z==90) {
52 | H a lS.N.M.P. Simamora -Diktat
cout << "N/A" << endl;
} else {
a=z;
a=a*(phi/180);
a1=sin(a);
zT=(1/a1)*tan(a);
cout << zT << endl;
}
z=z+15;
i=i+1;
}
return 0;
}
Tampilan jalannya program:
Kasus: -Buktikan expression berikut ini:
sin(A+B) = sin(A)cos(B) + cos(A)sin(B);
Solusi:
Konstruksi-algoritma:
Misalkan, A←15o; B←100o;
dan, z1=sin(A+B); dan z2=sin(A)cos(B)+cos(A)sin(B);
z1 = sin(15+100) = sin(115) = 0.90631;
z2 = sin(15)cos(100) + cos(15)sin(100) = -0.04494 + 0.95125
= 0.90631;
maka, oleh sebab z1 = z2, hasilnya terbukti.
53 | H a lS.N.M.P. Simamora -Diktat
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
#include<conio.h>
using namespace std;
int main()
{
float A,B,z1,z2,a1,phi;
A=15;
B=100;
a1=(A+B);
phi=M_PI;
A=A*(phi/180);
B=B*(phi/180);
a1=a1*(phi/180);
z1=sin(a1);
z2=sin(A)*cos(B)+cos(A)*sin(B);
if(z1==z2) {
cout << "Terbukti!n";
cout << z1 << " " << z2;
} else {
cout << "Tidak terbukti!n";
cout << z1 << " " << z2;
}
getch();
return 0;
}
Tampilan jalannya program:
Kasus: -Buktikan expression berikut ini:
sin(A)+sin(B) = ( ) ( )22 cossin2 BABA −+
;
Solusi:
Konstruksi-algoritma:
Misalkan, A←45o; B←70o;
dan, z1=sin(A)+sinB);
54 | H a lS.N.M.P. Simamora -Diktat
serta, z2= ( ) ( )22 cossin2 BABA −+
;
z1 = sin(45)+sin(70) = 0.70711 + 0.93970 = 1.64681;
z2 = 2∗(0.843391)∗(0.976296) = 1.646799;
maka, oleh sebab z1 = z2, hasilnya terbukti.
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float A,B,z1,z2,a1,a2,phi;
A=45;
B=70;
a1=(A+B)/2;
a2=(A-B)/2;
phi=M_PI;
A=A*(phi/180);
B=B*(phi/180);
a1=a1*(phi/180);
a2=a2*(phi/180);
z1=sin(A)+sin(B);
z2=2*sin(a1)*cos(a2);
if(z1==z2) {
cout << "Terbukti!n";
cout << z1 << " " << z2;
} else {
cout << "Tidak terbukti!n";
cout << z1 << " " << z2;
}
return 0;
}
Tampilan jalannya program:
55 | H a lS.N.M.P. Simamora -Diktat
Kasus: -Buktikan expression berikut ini:
cos(A)cos(B) =
2
)cos()cos( BABA −++
;
Solusi:
Konstruksi-algoritma:
Misalkan, A←25o; B←80o;
dan, z1=cos(A)cos(B); serta,
z2=0.5(cos(A+B)+cos(A-B));
z1 = cos(25)cos(80) = 0.15738;
z2 = 0.5(cos(105)+cos(-55)) = 0.15738;
maka, oleh sebab z1 = z2, hasilnya terbukti.
Agar terhindar dari nilai di belakang koma yang tidak sinkron,
maka gunakan algoritma pembulatan berikut ini:
(floor(x1∗10
α
+0.5)) ÷ 10
α
;
dimana, α = panjang-digit di belakang koma;
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float A,B,z1,z2,a1,a2,phi,u;
A=25;
B=80;
a1=(A+B);
a2=(A-B);
phi=M_PI;
A=A*(phi/180);
B=B*(phi/180);
a1=a1*(phi/180);
a2=a2*(phi/180);
u=(pow(10,4));
z1=cos(A)*cos(B);
z1=(floor(z1*u+0.5))/u;
z2=(cos(a1)+cos(a2))/2;
z2=(floor(z2*u+0.5))/u;
if(z1==z2) {
cout << "Terbukti!n";
cout << z1 << " " << z2;
56 | H a lS.N.M.P. Simamora -Diktat
} else {
cout << "Tidak terbukti!n";
cout << z1 << " " << z2;
}
return 0;
}
Tampilan jalannya program:
Kasus: -Buktikan expression berikut ini:
sin(2A) = 2.sin(A).cos(A);
Solusi:
Konstruksi-algoritma:
Misalkan, A←65o;
dan, z1=sin(130); serta,
z2=2.(sin(65)).(cos(65));
z1 = 0.76604;
z2 = 0.76604;
maka, oleh sebab z1 = z2, hasilnya terbukti.
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float A,z1,z2,a1,phi;
A=65;
phi=M_PI;
a1=2*A;
a1=a1*(phi/180);
A=A*(phi/180);
z1=sin(a1);
z2=2*sin(A)*cos(A);
if(z1==z2) {
57 | H a lS.N.M.P. Simamora -Diktat
cout << "Terbukti!n";
cout << z1 << " " << z2;
} else {
cout << "Tidak terbukti!n";
cout << z1 << " " << z2;
}
return 0;
}
Tampilan jalannya program:
Kasus: -Perhatikan statement berikut ini:
xC = sin(δ)cos(φ) + 2 sin(δ)cos(φ) + ... + 8.sin(δ)cos(φ);
dimana, δ=30; φ=60;
Selesaikanlah persoalan tersebut. Gunakan struktur kendali
proses for dalam penanganan proses looping/repetisi.
Solusi:
Konstruksi-algoritma:
xC = ∑=
8
1
)cos().sin(.
x
x φδ ; dimana, δ=30; φ=60;
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float A,B,phi,z,xC;
int i,N;
N=8;
A=30;
B=60;
phi=M_PI;
A=A*(phi/180);
58 | H a lS.N.M.P. Simamora -Diktat
B=B*(phi/180);
xC=0;
for(i=0;i<N;i=i+1) {
z=(i+1)*sin(A)*cos(B);
cout << (i+1) << ": " << z << endl;
xC=xC+z;
}
cout << "Hasil-akhir: " << xC;
return 0;
}
Tampilan jalannya program:
59 | H a lS.N.M.P. Simamora -Diktat
Teknik Array 1D
Agar sebuah variabel dapat menampung lebih dari satu nilai data,
maka digunakan teknik array (larik). Array dapat didefinisikan
sebagai sebuah teknik atau metode untuk menampungkan lebih
dari dua data, numerik atau non-numerik; dengan tipe-data yang
sama sebanyak kapasitas variabel tersebut yang ditetapkan.
Indeks array dimulai dari 0, bukan 1 sehingga pencacah untuk
indeks yang umum disebut math-based.
Misalkan, sebuah variabel yakni sns menampung data-numerik
0.56, -1, 2.75, 3, 3, -12.5;
maka, dapat disebutkan indeks ke-2 (math-based) adalah -1; namun
apabila dideklarasikan dengan teknik array 1D yakni:
sns[0] = 0.56;
sns[1] = -1;
sns[2] = 2.75;
sns[3] = 3;
sns[4] = 3;
sns[5] = -12.5;
disimpulkan bahwa, panjang array var: sns adalah 6.
Apabila var: sns ditransformasikan dengan teknik array 2D
(asumsi disusun dalam 3-baris;2-kolom), maka dapat dituliskan
sebagai berikut:
sns[0][0] = 0.56;
sns[0][1] = -1;
sns[1][0] = 2.75;
sns[1][1] = 3;
sns[2][0] = 3;
sns[2][1] = -12.5;
5
60 | H a lS.N.M.P. Simamora -Diktat
Apabila isi var: sns akan ditampilkan secara vertikal, maka:
0.56
-1
2.75
3
3
-12.5
Dituliskan dalam pemrograman C++ (asumsi: penanganan proses
repetisi menggunakan struktur kendali proses while) sebagai
berikut:
#include<iostream>
using namespace std;
int main()
{
float sns[7]={0.56,-1,2.75,3,3,-12.5};
int i;
i=0;
while(i<6) {
cout << sns[i] << endl;
i=i+1;
}
return 0;
}
Tampilan jalannya program:
Dituliskan dalam pemrograman C++ (asumsi: penanganan proses
repetisi menggunakan struktur kendali proses for) sebagai
berikut:
#include<iostream>
using namespace std;
int main()
61 | H a lS.N.M.P. Simamora -Diktat
{
float sns[7]={0.56,-1,2.75,3,3,-12.5};
int i;
for(i=0;i<6;i=i+1) {
cout << sns[i] << endl;
}
return 0;
}
Tampilan jalannya program:
Perbedaam while dengan do-while terletak pada posisi statement
yang akan dieksekusi dan blok program kontrol perulangan.
Dituliskan dalam pemrograman C++ (asumsi: penanganan proses
repetisi menggunakan struktur kendali proses do-while) sebagai
berikut:
#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;
int main()
{
float sns[7]={0.56,-1,2.75,3,3,-12.5};
int i;
i=0;
do {
cout << sns[i] << endl;
i=i+1;
}while(i<6);
cout << "nTekan sembarang tombol...";
getch();
system("cls");
return 0;
}
62 | H a lS.N.M.P. Simamora -Diktat
Tampilan jalannya program:
Kasus: -Sebuah variabel, var: xL, menampungkan sejumlah data-
numerik, yakni: 56H,056,DEC(23),DEC(-23),065; apabila (math-
based) data ke-2 saling dipertukarkan dengan ke-5, lalu hasil
termutahir ditampungkan ke var: xR, dan dilakukan operasi
komputasi sebagai berikut:
LR[1]←xL[2]⊕xR[3];
LR[2]←xL[4]−xR[5];
LR[3]←xL[5]xR[1];
LR[4]←xL[1]•xR[4];
Hasil-akhir ditampungkan ke var: LR, maka tampilkan secara
horisontal isi xL, xR, dan LR.
Solusi:
Algoritma Matematika Informasi:
u←xL[2];
xL[2]←xL[5];
xL[5]←u;
maka, diperoleh bahwa:
var: xL ∈ {56H,056,DEC(23),DEC(-23),065};
var: xR ∈ {56H,065,DEC(23),DEC(-23),056};
56H = (56)16 = (...)10;
= 5.(16)1 + 6.(16)0;
= 80 + 6 = DEC(86);
DEC(86) = (...)2;
86 ÷ 2 = 43 sisa 0
43 ÷ 2 = 21 sisa 1
63 | H a lS.N.M.P. Simamora -Diktat
21 ÷ 2 = 10 sisa 1
10 ÷ 2 = 5 sisa 0
5 ÷ 2 = 2 sisa 1
2 ÷ 2 = 1 sisa 0
1 ÷ 2 = 0 sisa 1
disusun-ulang menjadi: (1010110)2;
056 = (56)8 = (...)10;
= 5.(8)1 + 6.(8)0;
= 40 + 6 = DEC(46);
DEC(46) = (...)2;
46 ÷ 2 = 23 sisa 0
23 ÷ 2 = 11 sisa 1
11 ÷ 2 = 5 sisa 1
5 ÷ 2 = 2 sisa 1
2 ÷ 2 = 1 sisa 0
1 ÷ 2 = 0 sisa 1
disusun-ulang menjadi: (101110)2;
DEC(23) = (...)2;
23 ÷ 2 = 11 sisa 1
11 ÷ 2 = 5 sisa 1
5 ÷ 2 = 2 sisa 1
2 ÷ 2 = 1 sisa 0
1 ÷ 2 = 0 sisa 1
disusun-ulang menjadi: (10111)2;
DEC(-23) = (...)2;
Gunakan Algoritma Matematika Informasi: transformasi negatip-
DEC-to-BIN:
Langkah-1: -positipkan DEC tersebut
DEC(-23) ⇒ DEC(23);
Langkah-2: -transformasikan DEC-to-BIN dalam 16-bit;
DEC(23) = xxxx xxxx xxxx xxxx
= 0000 0000 0001 0111
Langkah-3: -NOT-kan BIN tersebut
0000 0000 0001 0111 ⇒ 1111 1111 1110 1000
64 | H a lS.N.M.P. Simamora -Diktat
Langkah-4: -tambah-kan BIN tersebut dengan (1)2;
1111 1111 1110 1000
0000 0000 0000 0001 +
1111 1111 1110 1001
maka, DEC(-23) = (1111 1111 1110 1001)2;
065 = (65)8 = (...)10;
= 6.(8)1 + 5.(8)0;
= 48 + 5 = DEC(53);
DEC(53) = (...)2;
53 ÷ 2 = 26 sisa 1
26 ÷ 2 = 13 sisa 0
13 ÷ 2 = 6 sisa 1
6 ÷ 2 = 3 sisa 0
3 ÷ 2 = 1 sisa 1
1 ÷ 2 = 0 sisa 1
disusun-ulang menjadi: (110101)2;
Uji: LR[1]←xL[2]⊕xR[3];
xL[2] : 101110
xR[3] : 010111 ⊕
LR[1] : 111001
111001 = DEC(...);
= 1.(2)5 + 1.(2)4 + 1.(2)3 + 0 + 0 + 1.(2)0;
= 32 + 16 + 8 + 0 + 1;
= DEC(57);
isi LR[1]=DEC(57);
Uji: LR[2]←xL[4]−xR[5];
xL[4] : DEC(-23)
xR[5] : DEC(46) −
LR[2] : DEC(-69)
isi LR[2]=DEC(-69);
Uji: LR[3]←xL[5]xR[1];
xL[5] : 0110101
xR[1] : 1010110 +
LR[3] : 1110111
65 | H a lS.N.M.P. Simamora -Diktat
1110111 = DEC(...);
= 1.(2)6 + 1.(2)5 + 1.(2)4 + 0 + 1.(2)2 + 1.(2)1 + 1.(2)0;
= 64 + 32 + 16 + 0 + 4 + 2 + 1;
= DEC(119);
isi LR[3]=DEC(119);
Uji: LR[4]←xL[1]•xR[4];
xL[1] : 01010110
xR[4] : 11101001 •
LR[4] : 01000000
01000000 = DEC(...);
= 0 + 1.(2)6 + 0 + 0 + 0 + 0;
= 0 + 64 + 0 + 0 + 0;
= DEC(64);
isi LR[4]=DEC(64);
maka, ditampilkan dalam DEC sebagai berikut:
var: xL ∈ {86,46,23,-23,53};
var: xR ∈ {86,53,23,-23,46};
var: LR ∈ {57,-69,119,64};
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
int xL[6]={0x56,056,23,-23,065},xR[6],LR[6],i,u;
for(i=0;i<5;i=i+1) {
xR[i]=xL[i];
cout << xL[i] << " ";
}
cout << endl;
u=xR[1];
xR[1]=xR[4];
xR[4]=u;
for(i=0;i<5;i=i+1) {
cout << xR[i] << " ";
}
cout << endl;
LR[0]=xL[1]^xR[2];
LR[1]=xL[3]-xR[4];
66 | H a lS.N.M.P. Simamora -Diktat
LR[2]=xL[4]|xR[0];
LR[3]=xL[0]&xR[3];
for(i=0;i<4;i=i+1) {
cout << LR[i] << " ";
}
return 0;
}
Tampilan jalannya program:
Kasus: -Apabila sejumlah data non-numerik ditampungkan ke var:
b2 berikut ini (math-based):
b2[1]←’♥’;
b2[2]←’A’;
b2[3]←’♠’;
b2[4]←’7’;
b2[5]←’a’;
b2[6]←’♣’;
b2[7]←’♦’;
Tampilkanlah isi b2 dirunut dari belakang secara horisontal
sebelum dan sesudah. Gunakan struktur kendali proses do-while
dalam penanganan proses repetisi. Dan gunakan metode swapping
untuk menampilkan perubahan posisi isi array.
Solusi:
Konstruksi-algoritma:
‘♥’: 3;
‘A’: 65;
‘♠’: 6;
‘7’: 55;
‘a’: 97;
‘♣’: 5;
‘♦’: 4;
sebelum: b2 ∈ {‘♥’, ‘A’, ‘♠’, ‘7’, ‘a’, ‘♣’, ‘♦’};
67 | H a lS.N.M.P. Simamora -Diktat
sesudah: b2 ∈ {‘♦’, ‘♣’, ‘a’, ‘7’, ‘♠’, ‘A’, ‘♥’};
Dituliskan dalam pemrograman C++
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
char b2[8],k;
int i;
b2[0]=char(3);
b2[1]=char(65);
b2[2]=char(6);
b2[3]=char(55);
b2[4]=char(97);
b2[5]=char(5);
b2[6]=char(4);
i=0;
do {
cout << b2[i] << " ";
i=i+1;
} while(i<7);
cout << endl;
i=0;
do{
k=b2[i];
b2[i]=b2[7-1-i];
b2[7-1-i]=k;
} while(i<3);
i=0;
do {
cout << b2[i] << " ";
i=i+1;
} while(i<7);
return 0;
}
Tampilan jalannya program:
68 | H a lS.N.M.P. Simamora -Diktat
Kasus: -Uraikanlah dan tampungkan Model Bilangan 4 Formula
sesuai statement berikut ini:
s←4;
shr[0]=(s+s)−(s+s);
shr[1]=(s+s)÷(s+s);
shr[2]=(s÷s)+(s÷s);
shr[3]=s−(s(s−s));
shr[4]=s+((s−s)∗s);
shr[5]=s+(s(s−s));
shr[6]=s+((s+s)÷s);
shr[7]=(s+s)−(s÷s);
shr[8]=(s+s)+(s−s);
shr[9]=(s+s)+(s÷s);
shr[10]=(44−s)÷s;
shr[11]=44÷(√s∗√s);
shr[12]=s∗(s−(s÷s));
shr[13]=(44÷s)+√s;
shr[14]=s+s+s+√s;
Gunakan struktur kendali proses for untuk penanganan proses
repetisi/looping. Dan tampilkan isi var: shr secara horisontal.
Solusi:
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float s,shr[15],a,b,c,d,e;
int i;
s=4;
a=(s+s);
b=(s-s);
c=(s/s);
d=(pow(s,b));
e=(sqrt(s));
shr[0]=a-a;
shr[1]=a/a;
shr[2]=c+c;
shr[3]=s-d;
shr[4]=s+(b*s);
shr[5]=s+d;
69 | H a lS.N.M.P. Simamora -Diktat
shr[6]=s+(a/s);
shr[7]=a-c;
shr[8]=a+b;
shr[9]=a+c;
shr[10]=(44-s)/s;
shr[11]=44/(e*e);
shr[12]=s*(s-c);
shr[13]=(44/s)+e;
shr[14]=a+s+e;
for(i=0;i<15;i=i+1) {
cout << shr[i] << " ";
}
return 0;
}
Tampilan jalannya program:
Kasus: -Berdasarkan kasus sebelumnya, lakukan urutan indeks
terbalik pada isi var: shr; menggunakan teknik decreasing.
Gunakan struktur kendali proses do-while dalam penanganan
proses looping/repetisi.
Solusi:
sebelum: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14;
sesudah: 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0;
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float s,shr[15],a,b,c,d,e;
int i;
s=4;
a=(s+s);
b=(s-s);
c=(s/s);
d=(pow(s,b));
70 | H a lS.N.M.P. Simamora -Diktat
e=(sqrt(s));
shr[0]=a-a;
shr[1]=a/a;
shr[2]=c+c;
shr[3]=s-d;
shr[4]=s+(b*s);
shr[5]=s+d;
shr[6]=s+(a/s);
shr[7]=a-c;
shr[8]=a+b;
shr[9]=a+c;
shr[10]=(44-s)/s;
shr[11]=44/(e*e);
shr[12]=s*(s-c);
shr[13]=(44/s)+e;
shr[14]=a+s+e;
i=0;
do {
cout << shr[i] << " ";
i=i+1;
} while(i<15);
cout << endl;
i=0;
do {
cout << shr[(15-1)-i] << " ";
i=i+1;
}while(i<15);
return 0;
}
Tampilan jalannya program:
Kasus: -Sebuah lingkaran dengan radius=2.75-ssp; apabila nilai
radius ditampungkan (math-based) ke indeks ke-1, area lingkaran
ditampungkan ke indeks-2, keliling lingkaran ditampungkan ke
indeks ke-3 var: YBS; maka tampilkan isi YBS secara vertikal.
Gunakan struktur kendali proses while dalam penanganan proses
repetisi/looping.
71 | H a lS.N.M.P. Simamora -Diktat
Solusi:
Konstruksi-algoritma:
r←2.75;
maka, YBS[1]←2.75;
area = π ∗ r2;
= 3.14 ∗ (2.75)2;
= 23.75829444;
maka, YBS[2]←23.75829444;
Keliling = 2∗π∗r;
= (2)(3.14)(2.75);
= 17.27875959;
maka, YBS[3]←17.27875959;
sehingga, YBS ∈ {2.75,23.75829444,17.27875959};
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float r,phi,YBS[4];
int i;
r=2.75;
phi=M_PI;
YBS[0]=2.75;
YBS[1]=phi*(pow(r,2));
YBS[2]=(2*phi)*r;
i=0;
while(i<3) {
cout << YBS[i] << endl;
i=i+1;
}
return 0;
}
Tampilan jalannya program:
72 | H a lS.N.M.P. Simamora -Diktat
Kasus: -Perhatikan konstruksi-algoritma berikut ini:
jika 21∗41=861 adalah (2∗4)∗100+(2+4)∗10+1;
sehingga, 800 + 60 + 1 = 861;
dan, 31∗81=2511 adalah (3∗8)∗100+(3+8)∗10+1;
sehingga, 2400 + 110 + 1 = 2511;
Selesaikan persoalan ini dengan teknik array 1D. Gunakan
struktur kendali proses for dalam penanganan proses repetisi.
Solusi:
Konstruksi-algoritma:
x1 ∗ y1 = c;
xy ∈ Bilangan Bulat;
a←x∗y∗100;
b←(x+y) ∗10;
dan, c=a+b+1;
Misalkan, 41 dan 51; xy1⇐451; maka, x=4; dan y=5;
41 ∗ 51 = 2091;
diuraikan: a=4∗5∗100=2000;
b=(4+5)∗10=90;
c=2000+90+1=2091;
Misalkan, 61 dan 91; xy1⇐691; maka, x=6; dan y=9;
61 ∗ 91 = 5551;
diuraikan: a=6∗9∗100=5400;
b=(6+9)∗10=150;
c=5400+150+1=5551;
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int i,zR[4],a,b,c,x,y;
cout << "Tentukan x?: ";
cin >> x;
cout << "Tentukan y?: ";
cin >> y;
a=x*y*100;
b=(x+y)*10;
c=a+b+1;
73 | H a lS.N.M.P. Simamora -Diktat
zR[0]=x*10+1;
zR[1]=y*10+1;
zR[2]=zR[0]*zR[1];
cout << "Bilangan yang ditentukan: ";
cout << x << "1 dan " << y << "1" << endl;
cout << "Hasil perkalian = " << c << endl;
for(i=0;i<3;i=i+1) {
cout << zR[i] << " ";
}
return 0;
}
Tampilan jalannya program:
74 | H a lS.N.M.P. Simamora -Diktat
Algoritma Matematika Informasi
Data dan informasi yang di-input-kan ke dalam sistem
komputer/komputer modern akan diproses secara matematik;
oleh sebab itu, dasar pemrosesan dalam sistem
komputer/komputer modern adalah Algoritma Matematika
Informasi. Dasar kerja dan pemrosesan Algoritma Matematika
Informasi adalah operasi arithmatika dan operasi logika, Hukum
De’Morgan, Logika Matematika, dan Teori Himpunan.
Misalkan, z=(234)10; transformasikan isi z ke DEC.
Solusi:
(234)10 = 2-ratusan + 3-puluhan + 4-satuan;
= 2.(10)2 + 3.(10)1 + 4.(10)0 ;
= 200 + 30 + 4;
= DEC(234);
6.1 Tranformasi BIN-to-DEC
Bilangan Basis 2 disebut binary-digit (bit), umumnya dituliskan
dalam kode sebutan BIN. Bilangan basis ini memiliki range 0 s.d
1, dan berikut dituliskan level kesetaraan dengan DEC:
BIN DEC BIN DEC
000 000 0 001 001 9
000 001 1 001 010 10
000 010 2 001 011 11
000 011 3 001 100 12
000 100 4 001 101 13
000 101 5 001 110 14
000 110 6 001 111 15
000 111 7 010 000 16
001 000 8 010 001 17
6
75 | H a lS.N.M.P. Simamora -Diktat
Contoh: -Tuliskan Algoritma Matematika Informasi untuk
menyelesaikan persoalan berikut ini:
(001011)2 = (...)10;
Solusi:
Algoritma Matematika Informasi:
(001011)2 = 0.(2)5 + 0.(2)4 + 1.(2)3 + 0.(2)2 + 1.(2)1 + 1.(2)0;
= 0 + 0 + 8 + 0 + 2 + 1;
= DEC(11);
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float B[6],D;
int i;
B[0]=1*(pow(2,0));
B[1]=1*(pow(2,1));
B[2]=0*(pow(2,2));
B[3]=1*(pow(2,3));
B[4]=0*(pow(2,4));
B[5]=0*(pow(2,5));
D=0;
for(i=0;i<6;i=i+1) {
D=D+B[i];
}
cout << D;
return 0;
}
Tampilan jalannya program:
Contoh: -Tuliskan Algoritma Matematika Informasi untuk
menyelesaikan persoalan berikut ini:
(010001)2 = (...)10;
76 | H a lS.N.M.P. Simamora -Diktat
Solusi:
Algoritma Matematika Informasi:
(010001)2 = 0.(2)5 + 1.(2)4 + 0.(2)3 + 0.(2)2 + 0.(2)1 + 1.(2)0;
= 0 + 16 + 0 + 0 + 0 + 1;
= DEC(17);
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float B[6],D;
int i;
B[0]=1*(pow(2,0));
B[1]=0*(pow(2,1));
B[2]=0*(pow(2,2));
B[3]=0*(pow(2,3));
B[4]=1*(pow(2,4));
B[5]=0*(pow(2,5));
D=0;
for(i=0;i<6;i=i+1) {
D=D+B[i];
}
cout << D;
return 0;
}
Tampilan jalannya program:
Contoh: -Tuliskan Algoritma Matematika Informasi untuk
menyelesaikan persoalan berikut ini:
(1010101)2 = (...)10;
Solusi:
Algoritma Matematika Informasi:
(1010101)2=1.(2)6 + 0.(2)5 + 1.(2)4 + 0.(2)3 + 1.(2)2 + 0.(2)1 + 1.(2)0
77 | H a lS.N.M.P. Simamora -Diktat
= 64 + 0 + 16 + 0 + 4 + 0 + 1;
= DEC(85);
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float B[7],D;
int i;
B[0]=1*(pow(2,0));
B[1]=0*(pow(2,1));
B[2]=1*(pow(2,2));
B[3]=0*(pow(2,3));
B[4]=1*(pow(2,4));
B[5]=0*(pow(2,5));
B[6]=1*(pow(2,6));
D=0;
for(i=0;i<7;i=i+1) {
D=D+B[i];
}
cout << D;
return 0;
}
Tampilan jalannya program:
6.2 Tranformasi OCT-to-DEC
Bilangan Basis 8 adalah basis bilangan yang digunakan untuk
pengalamatan hardware; umumnya dituliskan dalam kode sebutan
OCT. Bilangan basis ini memiliki range 0 s.d 7. Dalam
pemrograman umum diidentifikasi dengan prefix 0...; umumnya
pada Bahasa Pemrograman C/C++, JAVA, dan JavaScript.
Misalkan, 056, 076, 023; namun salah bila dituliskan 078.
78 | H a lS.N.M.P. Simamora -Diktat
Berikut ditunjukkan bilangan/data-numerik kesetaraan OCT
terhadap DEC.
OCT DEC OCT DEC
00 0 11 9
01 1 12 10
02 2 13 11
03 3 14 12
04 4 15 13
05 5 16 14
06 6 17 15
07 7 20 16
10 8 21 17
Contoh: -Tuliskan Algoritma Matematika Informasi untuk
menyelesaikan persoalan berikut ini:
(21)8 = (...)10;
Solusi:
Algoritma Matematika Informasi:
(21)8 = 021 = 2.(8)1 + 1.(8)0;
= 16 + 1;
= DEC(17);
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float O[3],D;
int i;
O[0]=1*(pow(8,0));
O[1]=2*(pow(8,1));
D=0;
for(i=0;i<2;i=i+1) {
D=D+O[i];
}
cout << D;
return 0;
}
79 | H a lS.N.M.P. Simamora -Diktat
Tampilan jalannya program:
Contoh: -Tuliskan Algoritma Matematika Informasi untuk
menyelesaikan persoalan berikut ini:
(171)8 = (...)10;
Solusi:
Algoritma Matematika Informasi:
(171)8= 0171 = 1.(8)2 + 7.(8)1 + 1.(8)0;
= 64 + 56 + 1;
= DEC(121);
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float O[4],D;
int i;
O[0]=1*(pow(8,0));
O[1]=7*(pow(8,1));
O[2]=1*(pow(8,2));
D=0;
for(i=0;i<3;i=i+1) {
D=D+O[i];
}
cout << D;
return 0;
}
Tampilan jalannya program:
80 | H a lS.N.M.P. Simamora -Diktat
6.3 Tranformasi HEX-to-DEC
Bilangan Basis 16 adalah basis bilangan yang digunakan untuk
pengalamatan hardware dan microcontroller; umumnya dituliskan
dalam kode sebutan HEX. Bilangan basis ini memiliki range 0 s.d
9 dilanjutkan dengan A s.d F. Dalam pemrograman umum
diidentifikasi dengan prefix 0x... atau ...H; umumnya digunakan
pada Bahasa Pemrograman C/C++, JAVA, dan JavaScript.
Misalkan, 0x56, 0x76, 0x45, 0xa6, 8H, 0x23; namun salah bila
dituliskan 0x7G.
Berikut ditunjukkan bilangan/data-numerik kesetaraan HEX
terhadap DEC.
HEX DEC HEX DEC
0h 0 9h 9
1h 1 Ah 10
2h 2 Bh 11
3h 3 Ch 12
4h 4 Dh 13
5h 5 Eh 14
6h 6 Fh 15
7h 7 10h 16
8h 8 11h 17
Tidak ada perbedaan mode status capital maupun lower-case untuk
pengenal yakni H atau h.
Contoh: -Tuliskan Algoritma Matematika Informasi untuk
menyelesaikan persoalan berikut ini:
(11)16 = (...)10;
Solusi:
Algoritma Matematika Informasi:
(11)16 = 0x11 = 1.(16)1 + 1.(16)0;
= 16 + 1;
= DEC(17);
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
81 | H a lS.N.M.P. Simamora -Diktat
int main()
{
float H[3],D;
int i;
H[0]=1*(pow(16,0));
H[1]=1*(pow(16,1));
D=0;
for(i=0;i<2;i=i+1) {
D=D+H[i];
}
cout << D;
return 0;
}
Tampilan jalannya program:
Contoh: -Tuliskan Algoritma Matematika Informasi untuk
menyelesaikan persoalan berikut ini:
(1ae)16 = (...)10;
Solusi:
Algoritma Matematika Informasi:
(1ae)16 = 0xAE = 1.(16)2 + 10.(16)1 + 14.(16)0;
= 256 + 160 + 14;
= DEC(430);
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float H[4],D;
int i;
H[0]=14*(pow(16,0));
H[1]=10*(pow(16,1));
H[2]=1*(pow(16,2));
D=0;
82 | H a lS.N.M.P. Simamora -Diktat
for(i=0;i<3;i=i+1) {
D=D+H[i];
}
cout << D;
return 0;
}
Tampilan jalannya program:
Contoh: -Tuliskan Algoritma Matematika Informasi untuk
menyelesaikan persoalan berikut ini:
(a0b0)16= (...)10;
Solusi:
Algoritma Matematika Informasi:
(a0b0)16= 0xa0b0 = 10.(16)3 + 0.(16)2 + 11.(16)1 + 0.(16)0;
= 40960 + 0 + 176 + 0;
= DEC(41136);
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float H[5],D;
int i;
H[0]=0*(pow(16,0));
H[1]=0xb*(pow(16,1));
H[2]=0*(pow(16,2));
H[3]=0xa*(pow(16,3));
D=0;
for(i=0;i<4;i=i+1) {
D=D+H[i];
}
cout << D;
return 0;
}
83 | H a lS.N.M.P. Simamora -Diktat
Tampilan jalannya program:
6.4 Tranformasi DEC-to-BIN
Untuk merepresentasikan data-numerik dalam decimal ke binary-
digit, digunakan transformasi DEC-to-BIN.
Misalkan: DEC(215) = (...)2;
Solusi:
Algoritma Matematika Informasi
215 ÷ 2 = 107 sisa 1
107 ÷ 2 = 53 sisa 1
53 ÷ 2 = 26 sisa 1
26 ÷ 2 = 13 sisa 0
13 ÷ 2 = 6 sisa 1
6 ÷ 2 = 3 sisa 0
3 ÷ 2 = 1 sisa 1
1 ÷ 2 = 0 sisa 1
maka, disusun-ulang menjadi: (11010111)2;
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int dE[15],x,y;
int i,N;
x=215;
N=0;
while(x>0) {
y=x%2;
dE[N]=y;
N=N+1;
x=x/2;
}
for(i=0;i<N;i=i+1) {
84 | H a lS.N.M.P. Simamora -Diktat
cout << dE[N-1-i];
}
return 0;
}
Tampilan jalannya program:
Contoh: --Tuliskan Algoritma Matematika Informasi untuk
menyelesaikan persoalan berikut ini:
(101)10 = (...)2;
Solusi:
Algoritma Matematika Informasi:
101 ÷ 2 = 50 sisa 1
50 ÷ 2 = 25 sisa 0
25 ÷ 2 = 12 sisa 1
12 ÷ 2 = 6 sisa 0
6 ÷ 2 = 3 sisa 0
3 ÷ 2 = 1 sisa 1
1 ÷ 2 = 0 sisa 1
maka, disusun-ulang menjadi: (1100101)2;
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int data[15],x,y;
int i,N;
x=101;
N=0;
while(x>0) {
y=x%2;
data[N]=y;
N=N+1;
85 | H a lS.N.M.P. Simamora -Diktat
x=x/2;
}
for(i=0;i<N;i=i+1) {
cout << data[N-1-i];
}
return 0;
}
Tampilan jalannya program:
6.5 Tranformasi DEC-to-OCT
Untuk merepresentasikan data-numerik dalam decimal ke binary-
digit, digunakan transformasi DEC-to-OCT.
Misalkan: DEC(215) = (...)8;
Solusi:
Algoritma Matematika Informasi
215 ÷ 8 = 26 sisa 7
26 ÷ 8 = 3 sisa 2
3 ÷ 8 = 0 sisa 3
maka, disusun-ulang menjadi: (327)8;
Berbeda dengan BIN, pada OCT umumnya sebuah translator
menyediakan function/method untuk mentransformasikan ke octal.
Asumsi menggunakan function/method yang disediakan oleh
translator.
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
unsigned int data;
data=215;
cout << oct << data;
return 0;
}
86 | H a lS.N.M.P. Simamora -Diktat
Tampilan jalannya program:
Contoh: -Tuliskan Algoritma Matematika Informasi untuk
menyelesaikan persoalan berikut ini:
(121)10 = (...)8;
Solusi:
Algoritma Matematika Informasi:
121 ÷ 8 = 15 sisa 1
15 ÷ 8 = 1 sisa 7
1 ÷ 8 = 0 sisa 1
maka, disusun-ulang menjadi: (171)8;
Asumsi menggunakan cara konvensional/model analitik
berdasarkan Algoritma Matematika Informasi.
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int data[15],x,y;
int i,N;
x=121;
N=0;
while(x>0) {
y=x%8;
data[N]=y;
N=N+1;
x=x/8;
}
for(i=0;i<N;i=i+1) {
cout << data[N-1-i];
}
return 0;
}
87 | H a lS.N.M.P. Simamora -Diktat
Tampilan jalannya program:
6.6 Tranformasi DEC-to-HEX
Untuk merepresentasikan data-numerik dalam decimal ke binary-
digit, digunakan transformasi DEC-to-HEX.
Misalkan: DEC(315) = (...)16;
Solusi:
Algoritma Matematika Informasi
315 ÷ 16 = 19 sisa 11 ; 11 ⇒ B;
19 ÷ 16 = 1 sisa 3
1 ÷ 16 = 0 sisa 1
maka, disusun-ulang menjadi: (13B)16;
Berbeda dengan BIN, pada HEX umumnya sebuah translator
menyediakan function/method untuk mentransformasikan ke hexal.
Asumsi menggunakan function/method yang disediakan oleh
translator.
Dituliskan dalam pemrograman C++
#include<iostream>
using namespace std;
int main()
{
unsigned int data;
data=315;
cout << hex << data;
return 0;
}
Tampilan jalannya program:
88 | H a lS.N.M.P. Simamora -Diktat
Contoh: -Tuliskan Algoritma Matematika Informasi untuk
menyelesaikan persoalan berikut ini:
(621)10 = (...)16;
Solusi:
Algoritma Matematika Informasi:
621 ÷ 16 = 38 sisa 13 ; 13 ⇒ D;
38 ÷ 16 = 2 sisa 6
2 ÷ 16 = 0 sisa 2
maka, disusun-ulang menjadi: (26D)16;
Asumsi menggunakan cara konvensional/model analitik
berdasarkan Algoritma Matematika Informasi.
Dituliskan dalam pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
char data[15];
int x,y;
int i,N;
x=621;
N=0;
while(x>0) {
y=x%16;
if(y>=10&&y<=15) {
if(y==10) {
data[N]='a';
}
if(y==11) {
data[N]='b';
}
if(y==12) {
data[N]='c';
}
if(y==13) {
data[N]='d';
}
if(y==14) {
data[N]='e';
}
if(y==15) {
data[N]='f';
89 | H a lS.N.M.P. Simamora -Diktat
}
} else {
if(y==1) {
data[N]='1';
}
if(y==2) {
data[N]='2';
}
if(y==3) {
data[N]='3';
}
if(y==4) {
data[N]='4';
}
if(y==5) {
data[N]='5';
}
if(y==6) {
data[N]='6';
}
if(y==7) {
data[N]='7';
}
if(y==8) {
data[N]='8';
}
if(y==9) {
data[N]='9';
}
}
N=N+1;
x=x/16;
}
for(i=0;i<N;i=i+1) {
cout << data[N-1-i];
}
return 0;
}
Tampilan jalannya program:
90 | H a lS.N.M.P. Simamora -Diktat
6.7 Algoritma FAST
Algoritma ini bekerja berdasar teknik/metode BCD (Binary-
Coded-Decimal) 8421; 8421 menjelaskan posisi setiap digit pada
deret Bilangan Basis 2.
Apabila diuraikan, maka deret Bilangan Basis 2 (dari kanan-ke-
kiri merujuk pada posisi MSB-LSB); MSB: Most-Significant-Bit
berada pada posisi kiri; LSB: Least-Significant-Bit berada pada
posisi kanan; atau secara umum disebut juga: MSD: Most-
Significant-Digit; dan LSD: Least-Significant-Digit;
dst ... 1024 256 128 64 32 16 8 4 2 1;
Contoh: -Tuliskan Algoritma Matematika Informasi untuk
persoalan berikut ini:
5ah = (...)2;
Solusi:
Gunakan Algoritma FAST: -transformasi HEX-to-BIN
Langkah-1: pisahkan digit berdasar posisi MSD-LSD;
LSD ⇒ a;
MSD ⇒ 5;
Langkah-2: transformasikan setiap digit ke dalam DEC;
0xa = DEC(10);
0x5 = DEC(5);
Langkah-3: transformasikan masing-masing digit DEC tersebut
dalam representasi posisi bit di deret BIN dengan masing-masing
panjang 4-bit;
DEC(10) = xxxx = 8+0+2+0;
DEC(5) = xxxx = 0+4+0+1;
Langkah-4: transformasikan setiap digit DEC tersebut dalam BIN
dengan panjang masing-masing 4-bit;
DEC(10) = 8+0+2+0 = 1010;
DEC(5) = 0+4+0+1 = 0101;
Langkah-5: concatenate-kan bit tersebut dalam posisi MSD-LSD;
5ah = 0101 1010;
Dengan demikian, diperoleh bahwa 5ah = (01011010)2;
Dibuktikan dengan pemrograman C++
#include<iostream>
#include<math.h>
91 | H a lS.N.M.P. Simamora -Diktat
using namespace std;
int main()
{
float D,bi1[3],bi2[5],s1;
float z1,z2,z3,z4,z5,z6,z7,z8;
int i,s2;
s1=5;
s2=10;
cout << s1;
cout << hex << s2;
cout << " = ";
bi1[0]=s2*(pow(16,0));
bi1[1]=s1*(pow(16,1));
D=0;
for(i=0;i<2;i=i+1) {
D=D+bi1[i];
}
cout << D << endl;
z1=0;
z2=1;
z3=0;
z4=1;
z5=1;
z6=0;
z7=1;
z8=0;
cout << z8 << z7 << z6 << z5;
cout << z4 << z3 << z2 << z1 << " = ";
bi2[0]=z1*(pow(2,0));
bi2[1]=z2*(pow(2,1));
bi2[2]=z3*(pow(2,2));
bi2[3]=z4*(pow(2,3));
bi2[4]=z5*(pow(2,4));
bi2[5]=z6*(pow(2,5));
bi2[6]=z7*(pow(2,6));
bi2[7]=z8*(pow(2,7));
D=0;
for(i=0;i<8;i=i+1) {
D=D+bi2[i];
}
cout << D;
return 0;
}
92 | H a lS.N.M.P. Simamora -Diktat
Tampilan jalannya program:
Kasus: -Tuliskan Algoritma Matematika Informasi untuk
persoalan berikut ini:
0666 = (...)16;
Solusi:
Gunakan Algoritma FAST: -transformasi OCT-to-HEX
Langkah-1: pisahkan digit berdasar posisi MSD-LSD;
LSD ⇒ 6;
MSD/LSD ⇒ 6;
MSD ⇒ 6;
Langkah-2: transformasikan setiap digit ke dalam DEC;
06 = DEC(6);
06 = DEC(6);
06 = DEC(6);
Langkah-3: transformasikan masing-masing digit DEC tersebut
dalam representasi posisi bit di deret BIN dengan masing-masing
panjang 3-bit;
DEC(6) = xxx = 4+2+0;
DEC(6) = xxx = 4+2+0;
DEC(6) = xxx = 4+2+0;
Langkah-4: transformasikan setiap digit DEC tersebut dalam BIN
dengan panjang masing-masing 4-bit;
DEC(6) = 4+2+0 = 110;
DEC(6) = 4+2+0 = 110;
DEC(6) = 4+2+0 = 110;
Langkah-5: concatenate-kan bit tersebut dalam posisi MSD-LSD;
0666 = 110 110 110;
Langkah-6: split-kan kelompok bit tersebut dalam posisi MSD-
LSD masing-masing 4-bit;
110110110 = xxx1 1011 0110; ganti x⇒0;
sehingga, diperoleh: 0001 1011 0110
Langkah-7: transformasikan setiap kelompok BIN tersebut ke
DEC dalam posisi MSD-LSD;
93 | H a lS.N.M.P. Simamora -Diktat
0110 = 0+4+2+0 = DEC(6);
1011 = 8+0+2+1 = DEC(11);
0001 = 0+0+0+1 = DEC(1);
Langkah-8: transformasikan masing-masing DEC tersebut ke
HEX sesuai dengan posisi MSD-LSD;
DEC(6) = 6H;
DEC(11) = BH;
DEC(1) = 1H;
Langkah-9: concatenate-kan setiap digit HEX tersebut sesuai
dengan posisi MSD-LSD; menjadi: 1B6H
Dengan demikian, diperoleh bahwa 0666 = (1b6)16;
Dibuktikan dengan pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float D,bi1[3],bi2[5],s1,s2,s3;
float z1,z3;
int i,z2;
s1=6;
s2=6;
s3=6;
cout << "0" << s3 << s2 << s1 << " = ";
bi1[0]=s1*(pow(8,0));
bi1[1]=s2*(pow(8,1));
bi1[2]=s3*(pow(8,2));
D=0;
for(i=0;i<3;i=i+1) {
D=D+bi1[i];
}
cout << "DEC(" << D << ")n";
z1=6;
z2=11;
z3=1;
cout << "0x" << z3;
cout << hex << z2;
cout << z1 << " = ";
bi2[0]=z1*(pow(16,0));
bi2[1]=z2*(pow(16,1));
bi2[2]=z3*(pow(16,2));
D=0;
94 | H a lS.N.M.P. Simamora -Diktat
for(i=0;i<3;i=i+1) {
D=D+bi2[i];
}
cout << "DEC(" << D << ")";
return 0;
}
Tampilan jalannya program:
Kasus: -Tuliskan Algoritma FAST untuk menyelesaikan
persoalan berikut:
(010011)2 = (...)16;
Solusi:
Algoritma Matematika Informasi:
010011 ⇒ xx01 0011 ; ganti x=0; ⇒ 0001 0011;
selanjutnya: LSD: 0011: (3)10 = 3H;
dan, MSD: 0001: (1)10 = 1H;
lalu, di-concatenate-kan menjadi: 13H;
maka diperoleh bahwa, (010011)2 = (13)16;
Dibuktikan dengan pemrograman C++
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float D,bi1[7],bi2[3],s1,s2,s3,s4,s5,s6;
float z1;
int i,z2;
s1=1;
s2=1;
s3=0;
s4=0;
s5=1;
s6=0;
cout << s6 << s5;
cout << s4 << s3 << s2 << s1 << " = ";
95 | H a lS.N.M.P. Simamora -Diktat
bi1[0]=s1*(pow(2,0));
bi1[1]=s2*(pow(2,1));
bi1[2]=s3*(pow(2,2));
bi1[3]=s4*(pow(2,3));
bi1[4]=s5*(pow(2,4));
bi1[5]=s6*(pow(2,5));
D=0;
for(i=0;i<6;i=i+1) {
D=D+bi1[i];
}
cout << "DEC(" << D << ")n";
z1=3;
z2=1;
cout << z2 << z1 << "h = ";
bi2[0]=z1*(pow(16,0));
bi2[1]=z2*(pow(16,1));
D=0;
for(i=0;i<2;i=i+1) {
D=D+bi2[i];
}
cout << "DEC(" << D << ")";
return 0;
}
Tampilan jalannya program:
96 | H a lS.N.M.P. Simamora -Diktat
Daftar Pustaka
Davis, S. R. (2004). C++ for Dummies-5th Edition. Wiley
Publishing.
Eggleston, D.L. (2011). Basic Electronics for Scientist and Engineers.
Cambridge University Press.
Sedgewick, R. (2003). Algorithms-third edition. Addison-Wesley.
Simamora, S.N.M.P. (2002). "Diktat SK-100 Dasar Komputer dan
Pemrograman". Dept. Sistem Komputer, Fak. Teknik. ITHB.
Bandung.
Simamora, S.N.M.P. (2011). "Diktat Kuliah TIF301 Algoritma
dan Pemrograman-1". Program studi Teknik Informatika. Univ.
BALE. Bandung.
Simamora, S.N.M.P. (2013). "Diktat Kuliah Algoritma dan
Pemrograman-I". Program studi Teknik Informatika. Univ.
Widyatama. Bandung.
Simamora, S.N.M.P. (2016). Modul Belajar Praktis Algoritma dan
Pemrograman. Penerbit Deepublish. Yogyakarta.
Skiena, S. S. (1998). The Algorithm Design Manual. Springer
Verlag, New York.
Winston, W. L. (1994). Introduction to Mathematical Programming:
Applications and Algorithms 2nd Edition. Duxbury Pr.
♣

More Related Content

What's hot

Algoritma dan pengetahuan terkait (menghitung, konversi, dll)
Algoritma dan pengetahuan terkait (menghitung, konversi, dll) Algoritma dan pengetahuan terkait (menghitung, konversi, dll)
Algoritma dan pengetahuan terkait (menghitung, konversi, dll) Fazar Ikhwan Guntara
 
Kumpulan Kode C & C++
Kumpulan Kode C & C++Kumpulan Kode C & C++
Kumpulan Kode C & C++Fajar Sany
 
Struktur data
Struktur dataStruktur data
Struktur dataam_ghandr
 
Materi kuliah 18 fungsi part 1
Materi kuliah 18   fungsi part 1Materi kuliah 18   fungsi part 1
Materi kuliah 18 fungsi part 1Budi Yono
 
Soal Pascal OSN Komputer
Soal Pascal OSN KomputerSoal Pascal OSN Komputer
Soal Pascal OSN KomputerLabieb Maududi
 
Materi kuliah 18 fungsi part 1
Materi kuliah 18   fungsi part 1Materi kuliah 18   fungsi part 1
Materi kuliah 18 fungsi part 1Budi Yono
 
Pembahasan ujian teori pemrograman pascal bagian 1
Pembahasan ujian teori pemrograman pascal bagian 1Pembahasan ujian teori pemrograman pascal bagian 1
Pembahasan ujian teori pemrograman pascal bagian 1Damun Setiaji
 
Intermediate code kode antara
Intermediate code   kode antaraIntermediate code   kode antara
Intermediate code kode antaraGunawan Manalu
 
Jawaban soal uts dasar program komputer
Jawaban soal uts dasar program komputerJawaban soal uts dasar program komputer
Jawaban soal uts dasar program komputerPebrian Prestya
 
Perkenalan Pemrograman C++
Perkenalan Pemrograman C++Perkenalan Pemrograman C++
Perkenalan Pemrograman C++Sparisoma Viridi
 
Pushdown Automata - Materi 8 - TBO
Pushdown Automata - Materi 8 - TBOPushdown Automata - Materi 8 - TBO
Pushdown Automata - Materi 8 - TBOahmad haidaroh
 
Penggunaan loop sebagai kerangka dasar algoritma
Penggunaan loop sebagai kerangka dasar algoritma Penggunaan loop sebagai kerangka dasar algoritma
Penggunaan loop sebagai kerangka dasar algoritma Fazar Ikhwan Guntara
 

What's hot (20)

Latihan latihan logika algoritma
Latihan latihan logika algoritmaLatihan latihan logika algoritma
Latihan latihan logika algoritma
 
Pengenalan c++ bagian 3
Pengenalan c++ bagian 3Pengenalan c++ bagian 3
Pengenalan c++ bagian 3
 
Kompilasi13 ka p (2)
Kompilasi13 ka p (2)Kompilasi13 ka p (2)
Kompilasi13 ka p (2)
 
Algoritma dan pengetahuan terkait (menghitung, konversi, dll)
Algoritma dan pengetahuan terkait (menghitung, konversi, dll) Algoritma dan pengetahuan terkait (menghitung, konversi, dll)
Algoritma dan pengetahuan terkait (menghitung, konversi, dll)
 
Kumpulan Kode C & C++
Kumpulan Kode C & C++Kumpulan Kode C & C++
Kumpulan Kode C & C++
 
Struktur data
Struktur dataStruktur data
Struktur data
 
Pengenalan c++ bagian 1
Pengenalan c++ bagian 1Pengenalan c++ bagian 1
Pengenalan c++ bagian 1
 
Pengenalan c++ bagian 2
Pengenalan c++ bagian 2Pengenalan c++ bagian 2
Pengenalan c++ bagian 2
 
Materi kuliah 18 fungsi part 1
Materi kuliah 18   fungsi part 1Materi kuliah 18   fungsi part 1
Materi kuliah 18 fungsi part 1
 
Modul6
Modul6Modul6
Modul6
 
Soal Pascal OSN Komputer
Soal Pascal OSN KomputerSoal Pascal OSN Komputer
Soal Pascal OSN Komputer
 
Soal dan bahasan Pascal
Soal dan bahasan PascalSoal dan bahasan Pascal
Soal dan bahasan Pascal
 
Materi kuliah 18 fungsi part 1
Materi kuliah 18   fungsi part 1Materi kuliah 18   fungsi part 1
Materi kuliah 18 fungsi part 1
 
Pembahasan ujian teori pemrograman pascal bagian 1
Pembahasan ujian teori pemrograman pascal bagian 1Pembahasan ujian teori pemrograman pascal bagian 1
Pembahasan ujian teori pemrograman pascal bagian 1
 
Intermediate code kode antara
Intermediate code   kode antaraIntermediate code   kode antara
Intermediate code kode antara
 
Jawaban soal uts dasar program komputer
Jawaban soal uts dasar program komputerJawaban soal uts dasar program komputer
Jawaban soal uts dasar program komputer
 
Pert.6 stack
Pert.6 stackPert.6 stack
Pert.6 stack
 
Perkenalan Pemrograman C++
Perkenalan Pemrograman C++Perkenalan Pemrograman C++
Perkenalan Pemrograman C++
 
Pushdown Automata - Materi 8 - TBO
Pushdown Automata - Materi 8 - TBOPushdown Automata - Materi 8 - TBO
Pushdown Automata - Materi 8 - TBO
 
Penggunaan loop sebagai kerangka dasar algoritma
Penggunaan loop sebagai kerangka dasar algoritma Penggunaan loop sebagai kerangka dasar algoritma
Penggunaan loop sebagai kerangka dasar algoritma
 

Similar to Diktat c++ d76_dev-cpp

Pertemuan 5 : Algoritma & Pemrograman
Pertemuan 5 : Algoritma & PemrogramanPertemuan 5 : Algoritma & Pemrograman
Pertemuan 5 : Algoritma & PemrogramanTri Retna
 
Java programming sns
Java programming snsJava programming sns
Java programming snsstaffpengajar
 
Pemrograman terstruktur
Pemrograman terstrukturPemrograman terstruktur
Pemrograman terstrukturMeiland Meebo
 
Introduction to-basic language-programming
Introduction to-basic language-programmingIntroduction to-basic language-programming
Introduction to-basic language-programmingstaffpengajar
 
sns_paper complement_r010110
sns_paper complement_r010110sns_paper complement_r010110
sns_paper complement_r010110S N M P Simamora
 
Pengenalan konsep pemrograman c++
Pengenalan konsep pemrograman c++ Pengenalan konsep pemrograman c++
Pengenalan konsep pemrograman c++ Aan Einsam
 
Latihan01 d76 politel_r01122007
Latihan01 d76 politel_r01122007Latihan01 d76 politel_r01122007
Latihan01 d76 politel_r01122007staffpengajar
 
Solusi quiz 2_AlPro-I
Solusi quiz 2_AlPro-ISolusi quiz 2_AlPro-I
Solusi quiz 2_AlPro-Istaffpengajar
 

Similar to Diktat c++ d76_dev-cpp (20)

Algoritma dan Pemrograman
Algoritma dan Pemrograman Algoritma dan Pemrograman
Algoritma dan Pemrograman
 
Pertemuan 5 : Algoritma & Pemrograman
Pertemuan 5 : Algoritma & PemrogramanPertemuan 5 : Algoritma & Pemrograman
Pertemuan 5 : Algoritma & Pemrograman
 
about C Languages
about C Languagesabout C Languages
about C Languages
 
Instalasi Dev-C++
Instalasi Dev-C++Instalasi Dev-C++
Instalasi Dev-C++
 
Latihan AlPro-I
Latihan AlPro-ILatihan AlPro-I
Latihan AlPro-I
 
Java programming sns
Java programming snsJava programming sns
Java programming sns
 
Latihan individu no 3
Latihan individu no 3Latihan individu no 3
Latihan individu no 3
 
Latihan individu no 3
Latihan individu no 3Latihan individu no 3
Latihan individu no 3
 
Pemrograman terstruktur
Pemrograman terstrukturPemrograman terstruktur
Pemrograman terstruktur
 
Introduction to-basic language-programming
Introduction to-basic language-programmingIntroduction to-basic language-programming
Introduction to-basic language-programming
 
Daskom 3
Daskom 3Daskom 3
Daskom 3
 
sns_paper complement_r010110
sns_paper complement_r010110sns_paper complement_r010110
sns_paper complement_r010110
 
sp243-061043-959-1.ppt
sp243-061043-959-1.pptsp243-061043-959-1.ppt
sp243-061043-959-1.ppt
 
Pengenalan konsep pemrograman c++
Pengenalan konsep pemrograman c++ Pengenalan konsep pemrograman c++
Pengenalan konsep pemrograman c++
 
Matlab tutor sns
Matlab tutor snsMatlab tutor sns
Matlab tutor sns
 
Latihan01 d76 politel_r01122007
Latihan01 d76 politel_r01122007Latihan01 d76 politel_r01122007
Latihan01 d76 politel_r01122007
 
Kompilasi13 ka p
Kompilasi13 ka pKompilasi13 ka p
Kompilasi13 ka p
 
Kompilasi13 ka p (1)
Kompilasi13 ka p (1)Kompilasi13 ka p (1)
Kompilasi13 ka p (1)
 
Cc++
Cc++Cc++
Cc++
 
Solusi quiz 2_AlPro-I
Solusi quiz 2_AlPro-ISolusi quiz 2_AlPro-I
Solusi quiz 2_AlPro-I
 

More from staffpengajar

Lthn_kasus_M13_alpro.pdf
Lthn_kasus_M13_alpro.pdfLthn_kasus_M13_alpro.pdf
Lthn_kasus_M13_alpro.pdfstaffpengajar
 
Dasar Operator Arithmatika_python.pdf
Dasar Operator Arithmatika_python.pdfDasar Operator Arithmatika_python.pdf
Dasar Operator Arithmatika_python.pdfstaffpengajar
 
artikel_IoT_PR_snmpsimamora.pdf
artikel_IoT_PR_snmpsimamora.pdfartikel_IoT_PR_snmpsimamora.pdf
artikel_IoT_PR_snmpsimamora.pdfstaffpengajar
 
Japaness multiplification 3 variables and 4 variables
Japaness multiplification 3 variables and 4 variablesJapaness multiplification 3 variables and 4 variables
Japaness multiplification 3 variables and 4 variablesstaffpengajar
 
Randomize number vbscript_sns
Randomize number vbscript_snsRandomize number vbscript_sns
Randomize number vbscript_snsstaffpengajar
 
sns77 vb script_politel
sns77 vb script_politelsns77 vb script_politel
sns77 vb script_politelstaffpengajar
 
Algoritma Matematika Informasi dalam Pemrograman C++
Algoritma Matematika Informasi dalam Pemrograman C++Algoritma Matematika Informasi dalam Pemrograman C++
Algoritma Matematika Informasi dalam Pemrograman C++staffpengajar
 
Artikel sns op-bndg_2000
Artikel sns op-bndg_2000Artikel sns op-bndg_2000
Artikel sns op-bndg_2000staffpengajar
 
sns about struct-cpp
sns about struct-cppsns about struct-cpp
sns about struct-cppstaffpengajar
 
Allen d76 matlab-adjoe_
Allen d76 matlab-adjoe_Allen d76 matlab-adjoe_
Allen d76 matlab-adjoe_staffpengajar
 
What about spim-simulator
What about spim-simulatorWhat about spim-simulator
What about spim-simulatorstaffpengajar
 
Notes reliability engineering
Notes reliability engineeringNotes reliability engineering
Notes reliability engineeringstaffpengajar
 

More from staffpengajar (20)

Lthn_kasus_M13_alpro.pdf
Lthn_kasus_M13_alpro.pdfLthn_kasus_M13_alpro.pdf
Lthn_kasus_M13_alpro.pdf
 
M15_alpro_.pdf
M15_alpro_.pdfM15_alpro_.pdf
M15_alpro_.pdf
 
M09-jarKomp-1_.pdf
M09-jarKomp-1_.pdfM09-jarKomp-1_.pdf
M09-jarKomp-1_.pdf
 
M10-jarKomp-1.pdf
M10-jarKomp-1.pdfM10-jarKomp-1.pdf
M10-jarKomp-1.pdf
 
Dasar Operator Arithmatika_python.pdf
Dasar Operator Arithmatika_python.pdfDasar Operator Arithmatika_python.pdf
Dasar Operator Arithmatika_python.pdf
 
artikel_IoT_PR_snmpsimamora.pdf
artikel_IoT_PR_snmpsimamora.pdfartikel_IoT_PR_snmpsimamora.pdf
artikel_IoT_PR_snmpsimamora.pdf
 
data_dan_DBase_.pdf
data_dan_DBase_.pdfdata_dan_DBase_.pdf
data_dan_DBase_.pdf
 
Japaness multiplification 3 variables and 4 variables
Japaness multiplification 3 variables and 4 variablesJapaness multiplification 3 variables and 4 variables
Japaness multiplification 3 variables and 4 variables
 
Randomize number vbscript_sns
Randomize number vbscript_snsRandomize number vbscript_sns
Randomize number vbscript_sns
 
sns77 vb script_politel
sns77 vb script_politelsns77 vb script_politel
sns77 vb script_politel
 
Algoritma Matematika Informasi dalam Pemrograman C++
Algoritma Matematika Informasi dalam Pemrograman C++Algoritma Matematika Informasi dalam Pemrograman C++
Algoritma Matematika Informasi dalam Pemrograman C++
 
Artikel sns op-bndg_2000
Artikel sns op-bndg_2000Artikel sns op-bndg_2000
Artikel sns op-bndg_2000
 
sns about struct-cpp
sns about struct-cppsns about struct-cpp
sns about struct-cpp
 
Allen d76 matlab-adjoe_
Allen d76 matlab-adjoe_Allen d76 matlab-adjoe_
Allen d76 matlab-adjoe_
 
What about spim-simulator
What about spim-simulatorWhat about spim-simulator
What about spim-simulator
 
Notes reliability engineering
Notes reliability engineeringNotes reliability engineering
Notes reliability engineering
 
Matlab sns_77
Matlab sns_77Matlab sns_77
Matlab sns_77
 
sns es oop_
sns es oop_sns es oop_
sns es oop_
 
Oop aju allen-UBB
Oop aju allen-UBBOop aju allen-UBB
Oop aju allen-UBB
 
M8 tif314 krywn_sns
M8 tif314 krywn_snsM8 tif314 krywn_sns
M8 tif314 krywn_sns
 

Recently uploaded

Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docxbkandrisaputra
 
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdfShintaNovianti1
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...Kanaidi ken
 
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxModul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxherisriwahyuni
 
implementasu Permendikbudristek no 53 2023
implementasu Permendikbudristek no 53 2023implementasu Permendikbudristek no 53 2023
implementasu Permendikbudristek no 53 2023DodiSetiawan46
 
Karakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional DuniaKarakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional DuniaNadia Putri Ayu
 
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptxPPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptxHeruFebrianto3
 
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxPPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxnerow98
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKDEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKirwan461475
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxRezaWahyuni6
 
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxPanduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxsudianaade137
 
Aksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru PenggerakAksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru Penggeraksupriadi611
 
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxJurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxBambang440423
 
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxKONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxawaldarmawan3
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...Kanaidi ken
 
Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5KIKI TRISNA MUKTI
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxmawan5982
 
Kelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara InggrisKelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara InggrisNazla aulia
 
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASKurniawan Dirham
 
Ppt tentang perkembangan Moral Pada Anak
Ppt tentang perkembangan Moral Pada AnakPpt tentang perkembangan Moral Pada Anak
Ppt tentang perkembangan Moral Pada Anakbekamalayniasinta
 

Recently uploaded (20)

Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docx
 
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
 
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxModul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
 
implementasu Permendikbudristek no 53 2023
implementasu Permendikbudristek no 53 2023implementasu Permendikbudristek no 53 2023
implementasu Permendikbudristek no 53 2023
 
Karakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional DuniaKarakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional Dunia
 
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptxPPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
 
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxPPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKDEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptx
 
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxPanduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
 
Aksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru PenggerakAksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru Penggerak
 
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxJurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
 
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxKONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
 
Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
 
Kelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara InggrisKelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara Inggris
 
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
 
Ppt tentang perkembangan Moral Pada Anak
Ppt tentang perkembangan Moral Pada AnakPpt tentang perkembangan Moral Pada Anak
Ppt tentang perkembangan Moral Pada Anak
 

Diktat c++ d76_dev-cpp

  • 1.
  • 2. i | H a lS.N.M.P. Simamora -Diktat Kata Pengantar Ucapan syukur ke hadirat Allah, SWT dan RasullNya Nabi Muhammad, SAW. atas ridho dan berkatNya setiap hari dan berkah serta tuntunanNya; sehingga tulisan ini dapat terlukiskan dalam menambah pencerahan bagi mahasiswa dan pihak yang ingin mengenal pemrograman, konsepnya serta terapannya dalam aplikasi sederhana. Pemrograman C++ diturunkan dari Bahasa Pemrograman C yang berorientasi pada lapisan bawah dan atas pada sistem komputer/komputer. Bahasa Pemrograman C++ tergolong Middle-Level Programming Language sehingga tanpa end-user harus menyelami lapisan machine, namun dari pendekatan human- language dapat menjangkau lapisan bawah sebuah sistem komputer/komputer. Misalkan mengakses I/O-systems, pengalamatan jaringan, akses ke hardware-devices, maupun komunikasi ke lapisan microcontroller. Salah satu translator Bahasa Pemrograman C++ adalah Dev-Cpp atau Dev-C++. Translator ini dapat di-download di alamat https://www.4shared.com/file/- qwXB9tece/devcpp-4992_setup.html. Dev-Cpp lebih user-friendly dibandingkan TC 3.0 walaupun masing-masing translator ini hasil produksinya dijalankan di platform sistem operasi DOS. Dev-Cpp kurang tepat disebut compiler, karena saat proses translasi tidak menghasilkan object-code (*.obj). Source-code latihan dapat di- download di https://www.4shared.com/rar/fZjMahMIiq/code_app.html Semoga bermanfaat bagi pembelajaran awal dan pengenalan dasar pemrograman. Korespondensi dapat dilakukan via ruangkelas777@gmail.com Penulis ♣
  • 3. ii | H a lS.N.M.P. Simamora -Diktat Daftar Isi Kata Pengantar ......................................................................................... i Daftar Isi ......................................................................................................... ii 1. Operator Arithmatika .............................................................. 1 2. Operator Logika .......................................................................... 14 3. Struktur Kendali Proses ................................................... 29 4. Operator Matematika ........................................................... 45 5. Teknik Array 1D ......................................................................... 59 6. Algoritma Matematika Informasi ............................ 74 ♣
  • 4. 1 | H a lS.N.M.P. Simamora -Diktat Operator Arithmatika Ada empat operator dasar arithmatika serta satu operator sisa- bagi yang dikenal dalam pemrograman secara umum, yakni: add (tambah, ADD, +), substraction (kurang, SUB, −), multiply (kali, MUL, ∗), divide (bagi, DIV, ÷); dan modulo (sisa-bagi, %). Misalkan, perhatikan konstruksi-algoritma berikut ini: aT←(-0.25); aT=(2−aT)÷(aT+2)∗(5−aT); tampilkan aT; Prinsip matematika, prioritas operator MUL dan DIV dibandingkan ADD dan SUB, sehingga secara analitik dapat diselesaikan menjadi: aT=(-0.25); misalkan, x=(2−aT); y=(aT+2); z=(5−aT); x=(2−(-0.25))=2.25; y=(aT+2)=1.75; z=(5−(-0.25))=5.25; sehingga, aT=x÷y∗z=6.75; Dengan demikian isi atau nilai terbaru/termutahir var: aT adalah 6.75; Berdasarkan jenis bilangan/data-numerik yang digunakan tersebut adalah Bilangan Pecahan, maka digunakan tipe-data float. Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { 1
  • 5. 2 | H a lS.N.M.P. Simamora -Diktat float aT; aT=(-0.25); aT=(2-aT)/(aT+2)*(5-aT); cout << aT; return 0; } Tampilan jalannya program: Misalkan, perhatikan konstruksi-algoritma berikut ini: d76←0+1−2+3−4+5−6+7−8+9; tampilkan d76; Pada contoh ini, penggunaan variabel cuku satu saja, yakni var: d76 yang langsung menampung hasil komputasi expression: 0+1−2+3−4+5−6+7−8+9; Operator matematika yang dilibatkan adalah ADD dan SUB, dan secara analitik dapat diselesaikan sebagai berikut: d76=1+3+5+7+9−2−4−6−8; menjadi, d76=1+3+5+7+9−(2+4+6+8)=25−20=5; sehingga, d76=5; Dengan demikian isi atau nilai terbaru/termutahir var: d76 adalah 5; Berdasarkan jenis bilangan/data-numerik yang digunakan tersebut adalah Bilangan Bulat, maka digunakan tipe-data int. Walaupun demikian, oleh sebab Bilangan Bulat dalam range atau domain Bilangan Pecahan maka dimungkinkan juga atau terbuka menggunakan tipe-data float. Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() {
  • 6. 3 | H a lS.N.M.P. Simamora -Diktat int d76; d76=0+1-2+3-4+5-6+7-8+9; cout << d76; return 0; } Tampilan jalannya program: Misalkan, perhatikan konstruksi-algoritma berikut ini: ip1t←13%3; tampilkan ip1t; Pada statement tersebut, expression melibatkan operator sisa-bagi yakni modulo. Prinsip operasi modulo ditunjukkan pada statement berikut ini: A÷B = C sisa D; maka, A%B = D; Jika A=35, B=5, maka C=7; dan D=0; dituliskan 5 0 7 ; Jika A=30, B=6, maka C=5; dan D=0; dituliskan 6 0 5 ; Jika A=125, B=4, maka C=31; dan D=1; dituliskan 4 1 31 ; Jika A=17, B=3, maka C=5; dan D=2; dituliskan 3 2 5 ; sehingga, untuk contoh kasus tersebut: A=13; B=3; dan D=1; karena C=4; Dengan demikian, diperoleh isi var: ip1t adalah 1; Dalam penanganan operasi modulo selalu melibatkan Bilangan Bulat, oleh sebab nilai dari sisa-bagi tidak mungkin dalam bentuk Bilangan Pecahan. Dengan demikian, tipe-data yang digunakan harus integer atau int.
  • 7. 4 | H a lS.N.M.P. Simamora -Diktat Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { int ip1t; ip1t=13%3; cout << ip1t; return 0; } Tampilan jalannya program: Kasus: -Perhatikan model geometri berikut ini: A B C BC = 10 cm; BE+EC=BC; AE = 17.3 cm; Tentukan berapa area ∆BAC. Solusi: Konstruksi-algoritma: BC←10; AE←17.3; area=0.5∗(BC∗AE); tampilkan area;
  • 8. 5 | H a lS.N.M.P. Simamora -Diktat Diselesaikan secara analitik: area = 0.5∗(10∗17.3); = 86.5 cm2 ; Diperoleh bahwa area ∆ABC adalah 86.5 cm2; Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { float BC,AE,area; BC=10; AE=17.3; area=0.5*(BC*AE); cout << "Area segitiga ABC adalah " << area << " cm2"; return 0; } Tampilan jalannya program: Kasus: -Perhatikan model geometri berikut ini: Jika a=6-ssp; b=6-ssp; maka tentukan nilai x. Solusi: Konstruksi-algoritma: a←6; b←6;
  • 9. 6 | H a lS.N.M.P. Simamora -Diktat x=(a∗b)÷(a+b); tampilkan x; Diselesaikan secara analitik: x = (6∗6)÷(6+6); = 3-ssp; Diperoleh bahwa nilai x adalah 3-ssp; Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { float a,b,x; a=6; b=6; x=(a*b)/(a+b); cout << x; return 0; } Tampilan jalannya program: Kasus: -Perhatikan konstruksi-algoritma berikut ini: ♥ + ♥ + ♠ = 6; ♣ + ♥ = 5; ♥ + ♦ + ♠ = 5; ♣ + ♠ + ♠ + ♠ = 9; ♣ + ♥ + ♦ + ♠ = ...?... Selesaikan persoalan tersebut. Solusi: Konstruksi-algoritma: asumsikan: ♥=q; ♣=p; ♦=r; ♠=s; ♥ + ♥ + ♠ = 6; ⇒ 2q + s = 6; ♣ + ♥ = 5; ⇒ p + q = 5; ♥ + ♦ + ♠ = 5; ⇒ q + r + s = 5;
  • 10. 7 | H a lS.N.M.P. Simamora -Diktat ♣ + ♠ + ♠ + ♠ = 9; ⇒ p + 3s = 9; 2q + s = 6 p + q = 5 − p + q = 5 ⇔ 2p + 2q = 10 Dituliskan kembali: 2q + s = 6 2p + 2q = 10 − s − 2p = -4 s − 2p = -4 p + 3s = 9 − p + 3s = 9 ⇔ 2p + 6s = 18 Dituliskan kembali: s − 2p = -4 2p + 6s = 18 + 0 + 7s = 14 ; s = 2; 2q + s = 6; q = 2; p + q = 5; p = 3; q + r + s = 5; r = 1; maka, ♥=2; ♣=3; ♦=1; ♠=2; dan diperoleh bahwa, ♣ + ♥ + ♦ + ♠ = 8; Dituliskan dalam pemrograman C++ #include<iostream> #include<conio.h> using namespace std; int main() { int q,p,r,s; q=2; p=3; r=1; s=2; cout << char(3) << " + " << char(3) << " + " << char(6) << " = " << (2*q+s) << ";n";
  • 11. 8 | H a lS.N.M.P. Simamora -Diktat cout << char(5) << " + " << char(3) << " = " << (p+q) << ";n"; cout << char(3) << " + " << char(4) << " + " << char(6) << " = " << (q+r+s) << ";n"; cout << char(5) << " + " << char(6) << " + " << char(6) << " + " << char(6) << " = " << (p+3*s) << ";n"; cout << char(5) << " + " << char(3) << " + " << char(4) << " + " << char(6) << " = " << (p+q+r+s) << ";"; return 0; } Tampilan jalannya program: Kasus: -Perhatikan rangkaian elektronika berikut ini: Berdasarkan model tersebut, selesaikan persoalan berikut: a) Hitunglah Rpengganti BC. Solusi: Konstruksi-algoritma: R1=2K; R2=3K; Rpe = ( ) ( )21 21. RR RR + = ( ) ( )32 32 + ∗ ;
  • 12. 9 | H a lS.N.M.P. Simamora -Diktat = 5 6 = 1.2K; maka, Rpe = RBC = 1.2K; Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { float R1,R2,Rpe; R1=2; R2=3; Rpe=(R1*R2)/(R1+R2); cout << Rpe << "K"; return 0; } Tampilan jalannya program: b) Hitung tegangan-cabang di BC. Solusi: Konstruksi-algoritma: Tegangan = Beda-potensial = Kuat-Arus ∗ Hambatan; V = i ∗ R; Vtot = VAB + VBC; sedangkan, itot = iAB = iBC; sehingga, tegangan-cabang di BC = VBC = iBC ∗ RBC; iBC = itot = tot tot R V ; dimana, Vtot = 5V; Rtot = RAB + RBC; RAB = 20Ω = 0.02K; = 0.02K + 1.2K; = 1.22K;
  • 13. 10 | H a lS.N.M.P. Simamora -Diktat lalu, itot = K V 22.1 5 = 4.098360656mA; dengan demikian, VBC = iBC ∗ RBC = 4.918032787V; Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { float R1,R2,RBC,RAB,Rtot,itot,iBC,Vtot,VBC; R1=2; R2=3; Vtot=5; RBC=(R1*R2)/(R1+R2); RAB=0.02; Rtot=RAB+RBC; itot=Vtot/Rtot; iBC=itot; VBC=iBC*RBC; cout << VBC << "V"; return 0; } Tampilan jalannya program: c) Hitung tegangan-cabang di AB. Solusi: Konstruksi-algoritma: VAB = iAB ∗ RAB; = (4.098360656mA)(20Ω) = 81.96721311 mV maka, tegangan-cabang di AB adalah 81.97mV. Dituliskan dalam pemrograman C++ #include<iostream> using namespace std;
  • 14. 11 | H a lS.N.M.P. Simamora -Diktat int main() { float R1,R2,RBC,RAB,Rtot,itot,iAB,Vtot,VAB; R1=2; R2=3; RAB=0.02; Vtot=5; RBC=(R1*R2)/(R1+R2); Rtot=RAB+RBC; itot=Vtot/Rtot; iAB=itot; RAB=RAB*1000; VAB=iAB*RAB; cout << VAB << " mV"; return 0; } Tampilan jalannya program: d) Hitung daya di R=2K. Solusi: Konstruksi-algoritma: Daya = tegangan ∗ kuat-arus; P = V ∗ i; sedangkan, PR1 = VBC ∗ iR2K iR2K = VBC ÷ R1; = K V 2 92.4 = 2.459016393 mA; sehingga, PR1 = VBC ∗ iR2K = (4.92V)( 2.459016393 mA) = 12.09352325KW dengan demikian daya di R=2K adalah 12.09KW. Dituliskan dalam pemrograman C++ #include<iostream> using namespace std;
  • 15. 12 | H a lS.N.M.P. Simamora -Diktat int main() { float R1,R2,RBC,RAB,Rtot,itot,iBC,i1,Vtot,VBC,PBC; R1=2; R2=3; Vtot=5; RBC=(R1*R2)/(R1+R2); RAB=0.02; Rtot=RAB+RBC; itot=Vtot/Rtot; iBC=itot; VBC=iBC*RBC; i1=VBC/R1; PBC=VBC*i1; cout << PBC << " KW"; return 0; } Tampilan jalannya program: e) Hitung kuat-arus di R=3K. Solusi: Konstruksi-algoritma: VR2 = VBC = 4.92V. maka, iR2 = 2 2 R VR = K V 3 74.91803278 = 1.639344262 mA; dengan demikian, kuat-arus di R=3K adalah 1.639mA. Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { float R1,R2,RBC,RAB,Rtot,itot,iBC,i2,Vtot,VBC; R1=2;
  • 16. 13 | H a lS.N.M.P. Simamora -Diktat R2=3; Vtot=5; RBC=(R1*R2)/(R1+R2); RAB=0.02; Rtot=RAB+RBC; itot=Vtot/Rtot; iBC=itot; VBC=iBC*RBC; i2=VBC/R2; cout << i2 << " mA"; return 0; } Tampilan jalannya program: Rangkaian elektronika tersebut disimulasikan berikut ini:
  • 17. 14 | H a lS.N.M.P. Simamora -Diktat Operator Logika Ada tiga operator logika yang dikenal secara umum dalam pemrograman yakni AND, OR, dan XOR; ditambah satu operator NOT. Operator logika bekerja berdasar algoritma kerja logic-gates. Algoritma Kerja Gerbang AND (disimbolkan dalam pemrograman adalah ‘&’): luaran bernilai 1 jika-dan-hanya-jika semua nilai-masukan bernilai 1. Contoh: -Perhatikan konstruksi-algoritma berikut: A←DEC(15); B←DEC(21); z=A•B; tampilkan z; Solusi: Algoritma Matematika Informasi DEC(15) = (...)2; 15 ÷ 2 = 7 sisa 1 7 ÷ 2 = 3 sisa 1 3 ÷ 2 = 1 sisa 1 1 ÷ 2 = 0 sisa 1 maka, disusun menjadi: (1111)2; dan A = 1111; DEC(21) = (...)2; 21 ÷ 2 = 10 sisa 1 10 ÷ 2 = 5 sisa 0 5 ÷ 2 = 2 sisa 1 2 ÷ 2 = 1 sisa 0 1 ÷ 2 = 0 sisa 1 maka, disusun menjadi: (10101)2; dan B = 10101; A : 01111 B : 10101 • 2
  • 18. 15 | H a lS.N.M.P. Simamora -Diktat C : 00101 sehingga, isi var: C adalah (00101)2 ⇒ transformasikan ke DEC. 00101= DEC(...); = 0 + 0 + 1.(2)2 + 0 + 1.(2)0; = 4 + 1; = DEC(5); Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { int A,B,C; A=15; B=21; C=A&B; cout << C; return 0; } Tampilan jalannya program: Algoritma Kerja Gerbang OR (disimbolkan dalam pemrograman adalah ‘’): luaran bernilai 1 jika-dan-hanya-jika salah-satu nilai- masukan bernilai 1. Contoh: -Perhatikan konstruksi-algoritma berikut: A←DEC(16); B←DEC(21); z=A+B; tampilkan z; Solusi: Algoritma Matematika Informasi DEC(16) = (...)2; 16 ÷ 2 = 8 sisa 0 8 ÷ 2 = 4 sisa 0 4 ÷ 2 = 2 sisa 0 2 ÷ 2 = 1 sisa 0
  • 19. 16 | H a lS.N.M.P. Simamora -Diktat 1 ÷ 2 = 0 sisa 1 maka, disusun menjadi: (10000)2; dan A = 10000; DEC(21) = (...)2; 21 ÷ 2 = 10 sisa 1 10 ÷ 2 = 5 sisa 0 5 ÷ 2 = 2 sisa 1 2 ÷ 2 = 1 sisa 0 1 ÷ 2 = 0 sisa 1 maka, disusun menjadi: (10101)2; dan B = 10101; A : 10000 B : 10101 + C : 10101 sehingga, isi var: C adalah (10101)2 ⇒ transformasikan ke DEC. 10101= DEC(...); = 1.(2)4 + 0 + 1.(2)2 + 0 + 1.(2)0; = 16 + 4 + 1; = DEC(21); Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { int A,B,C; A=16; B=21; C=A|B; cout << C; return 0; } Tampilan jalannya program: Algoritma Kerja Gerbang XOR (disimbolkan dalam pemrograman adalah ‘∧’): luaran bernilai 1 jika-dan-hanya-jika jumlah nilai- masukan bernilai kelipatan GANJIL.
  • 20. 17 | H a lS.N.M.P. Simamora -Diktat Contoh: -Perhatikan konstruksi-algoritma berikut: A←DEC(14); B←DEC(22); z=A⊕B; tampilkan z; Solusi: Algoritma Matematika Informasi DEC(14) = (...)2; 14 ÷ 2 = 7 sisa 0 7 ÷ 2 = 3 sisa 1 3 ÷ 2 = 1 sisa 1 1 ÷ 2 = 0 sisa 1 maka, disusun menjadi: (1110)2; dan A = 1110; DEC(22) = (...)2; 22 ÷ 2 = 11 sisa 0 11 ÷ 2 = 5 sisa 1 5 ÷ 2 = 2 sisa 1 2 ÷ 2 = 1 sisa 0 1 ÷ 2 = 0 sisa 1 maka, disusun menjadi: (10110)2; dan B = 10110; A : 01110 B : 10110 ⊕ C : 11000 sehingga, isi var: C adalah (11000)2 ⇒ transformasikan ke DEC. 11000= DEC(...); = 1.(2)4 + 1.(2)3 + 0 + 0 + 0; = 16 + 8; = DEC(24); Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { int A,B,C; A=14; B=22; C=A^B; cout << C; return 0;
  • 21. 18 | H a lS.N.M.P. Simamora -Diktat } Tampilan jalannya program: Algoritma Kerja Gerbang NOT (disimbolkan dalam pemrograman adalah ‘&’): luaran bernilai 1 jika-dan-hanya-jika nilai- masukan bernilai 0. Contoh: -Perhatikan konstruksi-algoritma berikut: zT←DEC(15); z=∼(zT); tampilkan z; Solusi: Algoritma Matematika Informasi: -Algoritma Komplemen DEC Langkah-1: -transformasikan DEC-to-BIN dengan panjang 16-bit (gunakan Algoritma FAST) DEC(15) = xxxx xxxx xxxx xxxx = 0000 0000 0000 1111 Langkah-2: -tambahkan dengan (1)2; 0000 0000 0000 1111 1 + 0000 0000 0001 0000 Langkah-3: -NOT-kan bit tersebut; 0000 0000 0001 0000 ⇒ 1111 1111 1110 1111 Langkah-4: -tambahkan dengan (1)2; 1111 1111 1110 1111 1 + 1111 1111 1111 0000 Langkah-5: -transformasikan bit tersebut ke DEC; i. komplemen-kan bit tersebut; 1111 1111 1111 0000 ⇒ 0000 0000 0000 1111 ii. tambah-kan dengan (1)2; 0000 0000 0000 1111 1 + 0000 0000 0001 0000
  • 22. 19 | H a lS.N.M.P. Simamora -Diktat iii. transformasikan ke DEC; 0000 0000 0001 0000= 0 + ... + 0.(2)4 + 0 + 0 + 0 + 0; = DEC(16); iv. kali-kan dengan DEC(-1) DEC(16) ∗ DEC(-1) = DEC(-16); maka, diperoleh bahwa ∼(DEC(15)) = DEC(-16); sehingga isi var: z = (-16)10; Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { int zT=; zT=15; z=~(zT); cout << z; return; } Tampilan jalannya program: Misalkan, perhatikan konstruksi-algoritma berikut ini: zK←(21H≥055) && (DEC(55)≠21H)  (055=DEC(45)); tampilkan zK; Tuliskan pemrograman C++ untuk menyelesaikan persoalan tersebut. Solusi: Algoritma Matematikan Informasi Transformasikan seluruh data-numerik ke dalam DEC; 21H= 0x21 = (21)16 = (...)10; = 2.(16)1 + 1.(16)0 = 32 + 1 = DEC(33);
  • 23. 20 | H a lS.N.M.P. Simamora -Diktat 055 = (55)8 = (...)10; = 5.(8)1 + 5.(8)0 = 40 + 5 = DEC(45); Asumsikan, x←21H≥055; apakah 21H≥055; jawab: false (0); maka, x = 0; y←DEC(55)≠21H; apakah DEC(55)≠21H; jawab: true (1); maka, y = 1; z←055=DEC(45); apakah 055=DEC(45); jawab: true (1); maka, z = 1; sehingga, prioritas pengerjaan pada AND dibandingkan OR oleh sebab AND level-nya lebih tinggi dibandingkan OR. zK = x • y + z; diuraikan, zK= (x • y); = 0; selanjutnya, zK = (zK + z); = 1; maka, isi terbaru/termutahir var: zK = 1 (true); Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { unsigned int zK; zK=(0x21>=055)&&(55!=0x55)||(055==45); cout << zK; return 0; } Tampilan jalannya program:
  • 24. 21 | H a lS.N.M.P. Simamora -Diktat Kasus: -Sebuah var: sR menampung data-numerik DEC(32), lalu di-XOR-kan dengan (1100)2, selanjutnya hasilnya di-AND- kan dengan 025; lalu di-OR-kan dengan nilai-awal. Hasil-akhir ditampungkan kembali ke sR, dan di-NOT-kan. Tentukan nilai terbaru/termutar sR. Solusi: Algoritma Matematika Informasi: DEC(32) = (...)2; 32 ÷ 2 = 16 sisa 0 16 ÷ 2 = 8 sisa 0 8 ÷ 2 = 4 sisa 0 4 ÷ 2 = 2 sisa 0 2 ÷ 2 = 1 sisa 0 1 ÷ 2 = 0 sisa 1 maka, disusun menjadi: (100000)2 ; 025 = (25)8 = (...)2; Transformasi terlebih dahulu ke DEC, lalu selanjutnya ke BIN; 025 = (25)8 = (...)10; = 2.(8)1 + 5.(8)0 = 16 + 5 = DEC(21); DEC(21) = (...)2; 21 ÷ 2 = 10 sisa 1 10 ÷ 2 = 5 sisa 0 5 ÷ 2 = 2 sisa 1 2 ÷ 2 = 1 sisa 0 1 ÷ 2 = 0 sisa 1 maka, disusun menjadi: (10101)2 ; DEC(32) : 10 0000 (1100)2 : 00 1100 ⊕ sR : 10 1100 (25)8 : 01 0101 • sR : 00 0100 (32)10 : 10 0000 + sR : 10 0100
  • 25. 22 | H a lS.N.M.P. Simamora -Diktat Isi var: sR di-NOT-kan: sR : 10 0100 sR : 01 1011 Uji nilai DEC isi terbaru var: sR, DEC(52) : 0000 0011 0100 ( ... )10 : 1111 1101 1011 + DEC(...) :10000 0000 1111 1 : tanda +; sehingga, 1111 = DEC(15), dan hasil NOT dari sR adalah: (15)10 − (52)10 = (-37)10; Gunakan Cara ke-2: Algoritma Komplemen DEC; sR = 10 0100 = (...)10; = 1.(2)5 + 0.(2)4 + 0.(2)3 + 1.(2)2 + 0.(2)1 + 0.(2)0 = 32 + 0 + 0 + 4 + 0 + 0 = DEC(36) Langkah-1: -transformasikan DEC-to-BIN dengan panjang 16-bit (gunakan Algoritma FAST) DEC(36) = xxxx xxxx xxxx xxxx = 0000 0000 0010 0100 Langkah-2: -tambahkan dengan (1)2; 0000 0000 0010 0100 1 + 0000 0000 0010 0101 Langkah-3: -NOT-kan bit tersebut; 0000 0000 0010 0101 ⇒ 1111 1111 1101 1010 Langkah-4: -tambahkan dengan (1)2; 1111 1111 1101 1010 1 + 1111 1111 1101 1011 Langkah-5: -transformasikan bit tersebut ke DEC; i. komplemen-kan bit tersebut; 1111 1111 1101 1011 ⇒ 0000 0000 0010 0100 ii. tambah-kan dengan (1)2; 0000 0000 0010 0100 1 + 0000 0000 0010 0101
  • 26. 23 | H a lS.N.M.P. Simamora -Diktat iii. transformasikan ke DEC; 0000 0000 0010 0101= 0 + ... + 1.(2)5 + 1.(2)2 + 1.(2)0 ; = DEC(37); iv. kali-kan dengan DEC(-1) DEC(37) ∗ DEC(-1) = DEC(-37); maka, diperoleh bahwa ∼(DEC(36)) = DEC(-37); sehingga isi var: sR = (-37)10; Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { int sR,a; sR=32; a=sR; sR=sR^12; sR=sR&025; sR=sR|a; sR=(~sR); cout << sR; return 0; } Tampilan jalannya program: Kasus: -Perhatikan sirkuit logic- gate berikut ini: Tentukan Z1 dan Z2 dalam DEC.
  • 27. 24 | H a lS.N.M.P. Simamora -Diktat Solusi: Algoritma Matematika Informasi Z1 = DEC(19) ⊕ (1101)2 ⊕ 0x28; Z2 = DEC(19) + Z1 + 0x28; Transformasikan ke BIN: 0x28 = (28)16 = (...)2; Transformasi terlebih dahulu ke DEC, lalu selanjutnya ke BIN; 0x28 = (28)16 = (...)10; = 2.(16)1 + 8.(16)0 = 32 + 8 = DEC(40); DEC(40) = (...)2; 40 ÷ 2 = 20 sisa 0 20 ÷ 2 = 10 sisa 0 10 ÷ 2 = 5 sisa 0 5 ÷ 2 = 2 sisa 1 2 ÷ 2 = 1 sisa 0 1 ÷ 2 = 0 sisa 1 maka, disusun menjadi: (101000)2 ; DEC(19) = (...)2; 19 ÷ 2 = 9 sisa 1 9 ÷ 2 = 4 sisa 1 4 ÷ 2 = 2 sisa 0 2 ÷ 2 = 1 sisa 0 1 ÷ 2 = 0 sisa 1 maka, disusun menjadi: (10011)2 ; 0x28 : 10 1000 (1101)2 : 00 1101 ⊕ Z1 : 10 0101 (19)10 : 01 0011 ⊕ Z1 : 11 0110 Proses penjumlahan di Z2: 0x28 : 10 1000 Z1 : 11 0110 + Z2 : 101 1110 (19)10 : 001 0011 + Z2 : 111 0001
  • 28. 25 | H a lS.N.M.P. Simamora -Diktat maka, diperoleh Z1 = (110110)2; dan Z2 = (1110001)2; Z1, ditransformasikan ke DEC sebagai berikut: Z1 = 11 0110 = (...)10; = 1.(2)5 + 1.(2)4 + 0.(2)3 + 1.(2)2 + 1.(2)1 + 0.(2)0 = 32 + 16 + 0 + 4 + 2 + 0 = DEC(54) Z1, ditransformasikan ke DEC sebagai berikut: Z1 = 1110010 = (...)10; = 1.(2)6 + 1.(2)5 + 1.(2)4 + 0.(2)3 + 0.(2)2 + 0.(2)1 + 1.(2)0 = 64 + 32 + 16 + 0 + 0 + 0 + 1 = DEC(113) Dengan demikian, isi var: Z1 = DEC(54); var: Z2 = DEC(113); Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { int Z1,Z2; Z1=19^(13)^0x28; Z2=19+Z1+0x28; cout << Z1 << " " << Z2; return 0; } Tampilan jalannya program: Kasus: -Perhatikan sirkuit logic-gate berikut ini, dan tentukan zK dalam DEC dan HEX.
  • 29. 26 | H a lS.N.M.P. Simamora -Diktat Solusi: Algoritma Matematika Informasi: DEC(75) = (...)2; 75 ÷ 2 = 37 sisa 1 37 ÷ 2 = 18 sisa 1 18 ÷ 2 = 9 sisa 0 9 ÷ 2 = 4 sisa 1 4 ÷ 2 = 2 sisa 0 2 ÷ 2 = 1 sisa 0 1 ÷ 2 = 0 sisa 1 maka, disusun menjadi: (1001011)2; Transformasikan ke BIN: 0x75 = (75)16 = (...)2; Transformasi terlebih dahulu ke DEC, lalu selanjutnya ke BIN; 0x75 = (75)16 = (...)10; = 7.(16)1 + 5.(16)0 = 112 + 5 = DEC(117); DEC(117) = (...)2; 117 ÷ 2 = 58 sisa 1 58 ÷ 2 = 29 sisa 0 29 ÷ 2 = 14 sisa 1 14 ÷ 2 = 7 sisa 0 7 ÷ 2 = 3 sisa 1 3 ÷ 2 = 1 sisa 1 1 ÷ 2 = 0 sisa 1 maka, disusun menjadi: (1110101)2 ; DEC(75) : 100 1011 0x75 : 111 0101 ⊕ zK : 011 1110 sehingga, isi var: zK adalah (0111110)2 ⇒ transformasikan ke DEC dan HEX. 0111110 = DEC(...); = 0 + 1.(2)5 + 1.(2)4 + 1.(2)3 + 1.(2)2 + 1.(2)1 + 0; = 32 + 16 + 8 + 4 + 2; = DEC(62); DEC(62) = (...)16;
  • 30. 27 | H a lS.N.M.P. Simamora -Diktat 62 ÷ 16 = 3 sisa 14 ; 14 ⇒ e; 3 ÷ 16 = 0 sisa 3 maka, disusun menjadi: (3e)16 = 0x3e; Dengan demikian, isi terbaru/termutahir zK = DEC(62) = 0x3e Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { int zK; zK=(75)^0x75; cout << zK << endl; cout << hex << zK; return 0; } Tampilan jalannya program: Kasus: -Buktikan expression berikut: z • 1 = z; untuk z ∈ data-numerik; Solusi: misalkan: z←DEC(18); maka, DEC(18) = (...)2; 18 ÷ 2 = 9 sisa 0 9 ÷ 2 = 4 sisa 1 4 ÷ 2 = 2 sisa 0 2 ÷ 2 = 1 sisa 0 1 ÷ 2 = 0 sisa 1 maka, disusun menjadi: (10010)2 ; 1 ditansformasikan dengan panjang 16-bit: 1111 1111 dan 1111 1111 = DEC(-1); Pembuktikan: z1 = z + 1;
  • 31. 28 | H a lS.N.M.P. Simamora -Diktat z2 = z; DEC(18) : 0001 0010 1 : 1111 1111 • z1 : 0001 0010 maka, z1 = DEC(18); dan z2 = DEC(18); sehingga terbukti. Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { unsigned int z1,z2,z; z=18; z1=z&(-1); z2=z; cout << z1 << " " << z2; return 0; } Tampilan jalannya program:
  • 32. 29 | H a lS.N.M.P. Simamora -Diktat Struktur Kendali Proses Ada tiga jenis struktur kendali proses yang umum digunakan dalam pemrograman, yakni: jika-dan-hanya-jika, perulangan, dan seleksi. Blok kontrol jika-dan-hanya-jika dikenal dengan if-then- else; perulangan ada tiga kelompok, yakni while, do-while, dan for; serta seleksi dikenal dengan switch. 3.1 Blok kontrol: if-then-else Format umum blok dapat dituliskan sebagai berikut: if( ... ) { statement; } else { statement; } Kasus: -Perhatikan statement berikut, dan selesaikan persoalan yang disajikan; dimana nilai f(x) harus real. f(x) = )12( )3( + − x x ; range: -5 ≤ x ≤ 5; dan x diperoleh dengan metode input-value by end-user; Solusi: Konstruksi-algoritma: Agar x selalu bernilai real, maka (2x+1) ≠ 0; sehingga x ≠ -0.5; Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { float fx,x; 3
  • 33. 30 | H a lS.N.M.P. Simamora -Diktat cout << "Tentukan x?: "; cin >> x; if((x==-0.5)||(x<-5)||(x>5)) { cout << "Maaf, out-of-range..."; } else { cout << "x=" << x; cout << " ; f(" << x << ")="; fx=(x-3)/(2*x+1); cout << fx; } return 0; } Tampilan jalannya program: Kasus: -Perhatikan statement berikut, dan selesaikan persoalan yang disajikan; dimana nilai z(s) harus real. z(s) = s s )12( − ; range: -1.5 < s < 1.5; dan s diperoleh dengan metode input-value by end-user; Solusi: Konstruksi-algoritma: Agar s selalu bernilai real, maka s ≠ 0; Dituliskan dalam pemrograman C++ #include<iostream> using namespace std;
  • 34. 31 | H a lS.N.M.P. Simamora -Diktat int main() { float s,zS; cout << "Tentukan s?: "; cin >> s; if((s==0)||(s<=-1.5)||(s>=1.5)) { cout << "Maaf, out-of-range..."; } else { cout << "s=" << s << " ; "; cout << "z(" << s << ")="; zS=(2*s-1)/s; cout << zS; } return 0; } Tampilan jalannya program: 3.2 Blok kontrol: while Format umum blok dapat dituliskan sebagai berikut: while( ... ) { statement; } Kasus: -Tampilkanlah lima bilangan bulat genap dengan range -3 s.d 15; dimana bilangan-awal diperoleh dengan metode input-
  • 35. 32 | H a lS.N.M.P. Simamora -Diktat value by end-user. Lakukan proteksi terhadap nilai-masukan tersebut agar sesuai dengan ketentuan yang ditetapkan. Solusi: Konstruksi-algoritma: Agar nilai-masukan sesuai dengan ketentuan, maka: i. tidak-boleh bilangan pecahan ii. tidak-boleh bilangan ganjil iii. bilangan kurang-dari -3 harus di-block iv. bilangan-awal tidak-boleh lebih-besar atau sama-dengan 7 Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { float x; int b,i; cout << "Tentukan bilangan-awal?: "; cin >> x; b=x; if((x-b!=0)||(x<-3)||(x>=7)) { cout << "Maaf, out-of-range..."; } else { if(b%2!=0) { x=x+1; i=0; while(i<5) { cout << x << " "; x=x+2; i=i+1; } } else { i=0; while(i<5) { cout << x << " "; x=x+2; i=i+1; } } } return 0; }
  • 36. 33 | H a lS.N.M.P. Simamora -Diktat Tampilan jalannya program: 3.3 Blok kontrol: do-while Format umum blok dapat dituliskan sebagai berikut: do { statement; } while( ... ); Kasus: -Tampilkanlah enam bilangan bulat ganjil dengan range -5 s.d 18; dimana bilangan-awal diperoleh dengan metode input- value by end-user. Lakukan proteksi terhadap nilai-masukan tersebut agar sesuai dengan ketentuan yang ditetapkan. Solusi: Konstruksi-algoritma: Agar nilai-masukan sesuai dengan ketentuan, maka: i. tidak-boleh bilangan pecahan ii. tidak-boleh bilangan genap iii. bilangan kurang-dari -5 harus di-block iv. bilangan-awal tidak-boleh lebih-besar atau sama-dengan 8 Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() {
  • 37. 34 | H a lS.N.M.P. Simamora -Diktat float r; int b,i; cout << "Tentukan bilangan-awal?: "; cin >> r; b=r; if((r-b!=0)||(b<-5)||(b>=8)) { cout << "Maaf, out-of-range..."; } else { if(b%2==0) { b=b+1; i=0; do { cout << b << " "; b=b+2; i=i+1; } while(i<6); } else { i=0; do { cout << b << " "; b=b+2; i=i+1; } while(i<6); } } return 0; } Tampilan jalannya program:
  • 38. 35 | H a lS.N.M.P. Simamora -Diktat 3.4 Blok kontrol: for Format umum blok dapat dituliskan sebagai berikut: for( ... ) { statement; } Kasus: -Tampilkanlah empat bilangan pecahan dengan range -5 s.d 12; untuk selisih antar-bilangan=0.5, dimana bilangan-awal harus bentuk pecahan yang diperoleh dengan metode input-value by end-user. Lakukan proteksi terhadap nilai-masukan tersebut agar sesuai dengan ketentuan yang ditetapkan. Solusi: Konstruksi-algoritma: Agar nilai-masukan sesuai dengan ketentuan, maka: i. tidak-boleh bilangan bulat sebagai nilai-masukan ii. format bilangan pecahan 10.0 adalah 10; iii. bilangan kurang-dari -5 harus di-block iv. bilangan-awal tidak-boleh lebih-besar atau sama-dengan 10.5 Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { float d; int b,i; cout << "Tentukan bilangan-awal?: "; cin >> d; b=d; if((d-b==0)||(d<=-5)||(d>=10.5)) { cout << "Maaf, out-of-range..."; } else { for(i=0;i<4;i=i+1) { cout << d << " "; d=d+0.5; } } return 0; }
  • 39. 36 | H a lS.N.M.P. Simamora -Diktat Tampilan jalannya program: Kasus: -Apabila ditampilkan sejumlah data-numerik berikut: [1]: -1; [2]: -2; [3]: -3; [4]: -4; [5]: -5; [6]: -6; [7]: -7; Selesaikan persoalan ini, dimana nilai-masukan menggunakan metode deklarasi pada badan-program. Solusi: Konstruksi-algoritma: Blok perulangan untuk indeks dan isi indeks dipisahkan, sehingga kontrol-perulangan saling independ satu terhadap yang lain. Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { int t,i; t=-1; for(i=0;i<7;i=i+1) {
  • 40. 37 | H a lS.N.M.P. Simamora -Diktat cout << "[" << (i+1) << "]" << ": "; cout << t; cout << ";" << endl; t=t-1; } return 0; } Tampilan jalannya program: 3.5 Blok kontrol: switch Format umum blok dapat dituliskan sebagai berikut: switch( ... ){ case 1: { statement; break; } case 2: { statement; break; } ... default: { statement; break; } }
  • 41. 38 | H a lS.N.M.P. Simamora -Diktat Kasus: -Ada tiga pilihan diberikan kepada end-user, yakni: Pilihan- 1: menampilkan statement dua baris, yaitu baris pertama adalah “Teknik Informatika / FTI”; sedangkan baris ke-2 adalah “Universitas BALE, Bandung”; Pilihan-2: menampilkan statement “Mari Belajar Pemrograman C++”; dan Pilihan ke-3 menampilkan pertukaran isi dua variabel, var: s1=(-6); var: s2=666; Selain ketiga pilihan tersebut, lakukan proteksi terhadap nilai-masukan oleh end-user. Solusi: Konstruksi-algoritma: Untuk pertukaran dua variabel, digunakan algoritma berikut: s1←(-6); s2←(666); z = s1; s1 = s2; s2 = z; Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { int x; cout << "Tentukan pilihan 1 s.d 3?: "; cin >> x; switch(x) { case 1: { cout << "Teknik Informatika / FTIn"; cout << "Universitas BALE, Bandung"; break; } case 2: { cout << "Mari Belajar Pemrograman C++"; break; } case 3: { int z,s1,s2; s1=-6; s2=666;
  • 42. 39 | H a lS.N.M.P. Simamora -Diktat cout << s1 << " " << s2 << endl; z=s1; s1=s2; s2=z; cout << s1 << " " << s2; break; } default: { cout << "Maaf, out-of-range..."; break; } } return 0; } Tampilan jalannya program: Kasus: -Ada empat pilihan diberikan kepada end-user, dengan format tampilan berikut ini: 1. Operasi Logika XOR 2. Operasi Modulo 3. Operasi Perbandingan 4. Operasi Arithmatika Pengurangan Adapun konstruksi-algoritma diuraikan sebagai berikut: Pilihan ke-1: z1?; z2?;
  • 43. 40 | H a lS.N.M.P. Simamora -Diktat z=z1⊕z2; tampilkan z; Pilihan ke-2: q1?; q2?; Q=q1%q2; tampilkan Q; Pilihan ke-3: d76=(31H≠061)&&(DEC(15)≥017); tampilkan d76; Pilihan ke-4: p1?; p2?; pR=(p1−p2); tampilkan pR; Solusi: Algoritma Matematika Informasi: Untuk Pilihan-3: Transformasikan ke DEC: 31H = (31)16 = (...)10; = 3.(16)1 + 1.(16)0 = 48 + 1 = DEC(49); 061 = (61)8 = (...)10; = 6.(8)1 + 1.(8)0 = 48 + 1 = DEC(49); 017 = (17)8 = (...)10; = 1.(8)1 + 7.(8)0 = 8 + 7 = DEC(15); Uraikan! apakah 31H≠061 ; jawab: false (0); apakah DEC(15)≥017 ; jawab: true (1); sehingga, d76 = (false) && (true); dan, var: d76 = false (0);
  • 44. 41 | H a lS.N.M.P. Simamora -Diktat Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { int plh; cout << "1. Operasi Logika XORn"; cout << "2. Operasi Modulon"; cout << "3. Operasi Perbandingann"; cout << "4. Operasi Arithmatika Pengurangann"; cout << "--------------------------------------- ------nn"; cout << "Tentukan pilihan anda?: "; cin >> plh; switch(plh) { case 1: { int z1,z2,z; cout << "Tentukan z1?: "; cin >> z1; cout << "Tentukan z2?: "; cin >> z2; z=z1^z2; cout << z1 << " XOR " << z2 << " = "; cout << z; break; } case 2: { int q1,q2,Q; cout << "Tentukan q1?: "; cin >> q1; cout << "Tentukan q2?: "; cin >> q2; Q=q1%q2; cout << q1 << " MOD " << q2 << " = "; cout << Q; break; } case 3: { int d76; d76=(0x31!=061)&&(15>=017); cout << "Statement: (0x31 != 061)&&(15 >= 017);n"; cout << "Hasil: " << d76; break;
  • 45. 42 | H a lS.N.M.P. Simamora -Diktat } case 4: { int p1,p2,pR; cout << "Tentukan p1?: "; cin >> p1; cout << "Tentukan p2?: "; cin >> p2; pR=p1-p2; cout << p1 << "-" << p2 << "="; cout << pR; break; } default: { cout << "Maaf, out-of-range..."; break; } } return 0; } Tampilan jalannya program:
  • 46. 43 | H a lS.N.M.P. Simamora -Diktat Kasus: - empat pilihan diberikan kepada end-user, dengan format tampilan berikut ini: 1. Operasi AND 2. Operasi XOR 3. Operasi OR 4. Operasi NOT Adapun konstruksi-algoritma diuraikan sebagai berikut: z1?; z2?; Tentukan pilihan anda?: _ Untuk Pilihan ke-4, masing-masing z1 dan z2 akan diperoleh hasil operasi komplemen-nya. Solusi: Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { int t,z1,z2,z; cout << "Tentukan z1?: "; cin >> z1; cout << "Tentukan z2?: "; cin >> z2; cout << "1. Operasi ANDn"; cout << "2. Operasi XORn"; cout << "3. Operasi ORn"; cout << "4. Operasi NOTn"; cout << "--------------------------------------- ------n"; cout << "Tentukan pilihan anda?: "; cin >> t; switch(t) { case 1: { z=z1&z2; cout << z1 << " AND " << z2 << " = "; cout << z; break; } case 2: { z=z1^z2; cout << z1 << " XOR " << z2 << " = "; cout << z; break;
  • 47. 44 | H a lS.N.M.P. Simamora -Diktat } case 3: { z=z1|z2; cout << z1 << " OR " << z2 << " = "; cout << z; break; } case 4: { cout << "~(" << z1 << ") = " << (~z1) << endl; cout << "~(" << z2 << ") = " << (~z2) << endl; break; } default: { cout << "Maaf, out-of-range..."; break; } } return 0; } Tampilan jalannya program:
  • 48. 45 | H a lS.N.M.P. Simamora -Diktat Operator Matematika Umumnya pada setiap bahasa pemrograman, library translator yang digunakan menyediakan operator-operator khusus matematika dalam bentuk function atau method. Beberapa operator khusus matematika yang umum disediakan seperti: fungsi-fungsi trigonometri, konstanta Bilangan PHI (π), kuadrat, akar-pangkat 2, logaritma basis bilangan 10. Function atau method ini disimpankan pada header file (di translator Dev-Cpp) math.h. Misalkan, tentukan volume bola apabila jari-jarinya adalah 3-ssp. Solusi: Konstruksi-algoritma: r←3; vol= 3 3 4 r∗∗π ; tampilkan vol; vol = (4÷3) ∗ (3.14) ∗ (r)3; Karena menyesuaikan dengan kapabilitas Dev-Cpp dalam operator DIV, maka ditransformasikan menjadi: vol = (4 ∗ (3.14) ∗ (r)3) ÷ 3; = 113.0973355 ssp3; Dengan demikian, volume bola tersebut adalah 113.0973355 ssp3; Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float vol,r,phi,r3; 4
  • 49. 46 | H a lS.N.M.P. Simamora -Diktat r=3; phi=M_PI; r3=pow(r,3); vol=(4*phi*r3)/3; cout << vol; return 0; } Tampilan jalannya program: Dari penyelesaian kasus ini dapat disimpulkan bahwa operator khusus perpangkatan adalah: z=pow(a,b); dimana z = ab; Kasus: -Jika z = log(1000), maka tentukan berapa isi terbaru/termutahir z. Solusi: Konstruksi-algoritma z = log(1000); maka, untuk mencari nilai log bilangan basis 10 yakni: z = ( ) ( ))10log( )1000log( ; Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float z; z=1000; cout << "log(" << z << ") = "; z=(log(z))/(log(10)); cout << z; return 0; }
  • 50. 47 | H a lS.N.M.P. Simamora -Diktat Tampilan jalannya program: Kasus: -Perhatikan model geometri berikut ini: OA = 3-ssp; OB = 4-ssp; Tentukan AB. Solusi: Konstruksi-algoritma: Jika OA = 3-ssp; OB = 4-ssp, maka: AB = ( )22 )()( OBOA + ; = ( )22 )4()3( + ; = ( )169 + ; = 25-ssp; Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float OA,OB,AB; OA=3; OB=4; OA=pow(OA,2); OB=pow(OB,2); AB=sqrt(OA+OB); cout << AB; return 0; }
  • 51. 48 | H a lS.N.M.P. Simamora -Diktat Tampilan jalannya program: Dari penyelesaian kasus ini dapat disimpulkan bahwa operator khusus akar-pangkat 2 adalah: z=sqrt(S); dimana z = S ; Perhatikan model grafis berikut ini: Model ini diturunkan dari nilai sine(x), cosine(x), dan tangent(x); dimana x adalah nilai sudut (atau disimbolkan dengan θθθθ). Umumnya pada pemrograman, nilai trigonometri dinyatakan dalam radian, bukan derajat; sehingga nilai derajat harus ditransformasikan ke dalam bentuk radian dan sebaliknya.
  • 52. 49 | H a lS.N.M.P. Simamora -Diktat Misalkan, aR←60o; tentukan sin(aR), cos(aR), dan tan(aR). Solusi: Konstruksi-algoritma: 2π rad = 360o; maka, 1o = (π÷180) rad; aR=60; aR= aR ∗ (π ÷180); Diuraikan satu-persatu sebagai berikut: mencari nilai sin(aR) aR=aR∗(π÷180); z1=sin(aR); tampilkan z1; mencari nilai cos(aR) aR=aR∗(π÷180); z2=cos(aR); tampilkan z2; mencari nilai tan(aR) aR=aR∗(π÷180); z3=tan(aR); tampilkan z3; Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float aR,z1,z2,z3,phi; phi=M_PI; aR=60; aR=aR*(phi/180); z1=sin(aR); z2=cos(aR); z3=tan(aR); cout << "sin(60)=" << z1 << endl; cout << "cos(60)=" << z2 << endl; cout << "tan(60)=" << z3; return 0; }
  • 53. 50 | H a lS.N.M.P. Simamora -Diktat Tampilan jalannya program: Dari penyelesaian kasus ini dapat disimpulkan bahwa operator khusus trigonometri adalah: z1=sin(x); dimana x =       ∗ 180 π x ; z2=cos(t); dimana t =       ∗ 180 π t ; z3=tan(s); dimana s =       ∗ 180 π s ; Kasus: -Perhatikan konstruksi-algoritma berikut: zK = (1 ÷ (tan(z))) ∗ cos(z); Tentukan zK untuk z ∈ 0, 30, 60, 90, 120; gunakan struktur kendali proses for dalam penanganan proses repetisi. Solusi: Hindari tan(z)=∞; Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float z,zK,phi,a,a1; int i; phi=M_PI; z=0; for(i=0;i<5;i=i+1) { cout << (i+1) << ". " << z << " "; if(z==0||z==90) { cout << "N/A" << endl; } else { a=z;
  • 54. 51 | H a lS.N.M.P. Simamora -Diktat a=a*(phi/180); a1=tan(a); zK=(1/a1)*cos(a); cout << zK << endl; } z=z+30; } return 0; } Tampilan jalannya program: Kasus: -Perhatikan konstruksi-algoritma berikut: zT = (1 ÷ (sin(z))) ∗ tan(z); Tentukan zT untuk z ∈ 0, 15, 30, 45, 60, 75, 90, 105, 120; gunakan struktur kendali proses while dalam penanganan proses repetisi. Solusi: Hindari tan(z)=∞; dan sin(z)=0; Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float z,zT,phi,a,a1; int i; phi=M_PI; z=0; i=0; while(z<=120) { cout << (i+1) << ". " << z << " "; if(z==0||z==90) {
  • 55. 52 | H a lS.N.M.P. Simamora -Diktat cout << "N/A" << endl; } else { a=z; a=a*(phi/180); a1=sin(a); zT=(1/a1)*tan(a); cout << zT << endl; } z=z+15; i=i+1; } return 0; } Tampilan jalannya program: Kasus: -Buktikan expression berikut ini: sin(A+B) = sin(A)cos(B) + cos(A)sin(B); Solusi: Konstruksi-algoritma: Misalkan, A←15o; B←100o; dan, z1=sin(A+B); dan z2=sin(A)cos(B)+cos(A)sin(B); z1 = sin(15+100) = sin(115) = 0.90631; z2 = sin(15)cos(100) + cos(15)sin(100) = -0.04494 + 0.95125 = 0.90631; maka, oleh sebab z1 = z2, hasilnya terbukti.
  • 56. 53 | H a lS.N.M.P. Simamora -Diktat Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> #include<conio.h> using namespace std; int main() { float A,B,z1,z2,a1,phi; A=15; B=100; a1=(A+B); phi=M_PI; A=A*(phi/180); B=B*(phi/180); a1=a1*(phi/180); z1=sin(a1); z2=sin(A)*cos(B)+cos(A)*sin(B); if(z1==z2) { cout << "Terbukti!n"; cout << z1 << " " << z2; } else { cout << "Tidak terbukti!n"; cout << z1 << " " << z2; } getch(); return 0; } Tampilan jalannya program: Kasus: -Buktikan expression berikut ini: sin(A)+sin(B) = ( ) ( )22 cossin2 BABA −+ ; Solusi: Konstruksi-algoritma: Misalkan, A←45o; B←70o; dan, z1=sin(A)+sinB);
  • 57. 54 | H a lS.N.M.P. Simamora -Diktat serta, z2= ( ) ( )22 cossin2 BABA −+ ; z1 = sin(45)+sin(70) = 0.70711 + 0.93970 = 1.64681; z2 = 2∗(0.843391)∗(0.976296) = 1.646799; maka, oleh sebab z1 = z2, hasilnya terbukti. Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float A,B,z1,z2,a1,a2,phi; A=45; B=70; a1=(A+B)/2; a2=(A-B)/2; phi=M_PI; A=A*(phi/180); B=B*(phi/180); a1=a1*(phi/180); a2=a2*(phi/180); z1=sin(A)+sin(B); z2=2*sin(a1)*cos(a2); if(z1==z2) { cout << "Terbukti!n"; cout << z1 << " " << z2; } else { cout << "Tidak terbukti!n"; cout << z1 << " " << z2; } return 0; } Tampilan jalannya program:
  • 58. 55 | H a lS.N.M.P. Simamora -Diktat Kasus: -Buktikan expression berikut ini: cos(A)cos(B) = 2 )cos()cos( BABA −++ ; Solusi: Konstruksi-algoritma: Misalkan, A←25o; B←80o; dan, z1=cos(A)cos(B); serta, z2=0.5(cos(A+B)+cos(A-B)); z1 = cos(25)cos(80) = 0.15738; z2 = 0.5(cos(105)+cos(-55)) = 0.15738; maka, oleh sebab z1 = z2, hasilnya terbukti. Agar terhindar dari nilai di belakang koma yang tidak sinkron, maka gunakan algoritma pembulatan berikut ini: (floor(x1∗10 α +0.5)) ÷ 10 α ; dimana, α = panjang-digit di belakang koma; Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float A,B,z1,z2,a1,a2,phi,u; A=25; B=80; a1=(A+B); a2=(A-B); phi=M_PI; A=A*(phi/180); B=B*(phi/180); a1=a1*(phi/180); a2=a2*(phi/180); u=(pow(10,4)); z1=cos(A)*cos(B); z1=(floor(z1*u+0.5))/u; z2=(cos(a1)+cos(a2))/2; z2=(floor(z2*u+0.5))/u; if(z1==z2) { cout << "Terbukti!n"; cout << z1 << " " << z2;
  • 59. 56 | H a lS.N.M.P. Simamora -Diktat } else { cout << "Tidak terbukti!n"; cout << z1 << " " << z2; } return 0; } Tampilan jalannya program: Kasus: -Buktikan expression berikut ini: sin(2A) = 2.sin(A).cos(A); Solusi: Konstruksi-algoritma: Misalkan, A←65o; dan, z1=sin(130); serta, z2=2.(sin(65)).(cos(65)); z1 = 0.76604; z2 = 0.76604; maka, oleh sebab z1 = z2, hasilnya terbukti. Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float A,z1,z2,a1,phi; A=65; phi=M_PI; a1=2*A; a1=a1*(phi/180); A=A*(phi/180); z1=sin(a1); z2=2*sin(A)*cos(A); if(z1==z2) {
  • 60. 57 | H a lS.N.M.P. Simamora -Diktat cout << "Terbukti!n"; cout << z1 << " " << z2; } else { cout << "Tidak terbukti!n"; cout << z1 << " " << z2; } return 0; } Tampilan jalannya program: Kasus: -Perhatikan statement berikut ini: xC = sin(δ)cos(φ) + 2 sin(δ)cos(φ) + ... + 8.sin(δ)cos(φ); dimana, δ=30; φ=60; Selesaikanlah persoalan tersebut. Gunakan struktur kendali proses for dalam penanganan proses looping/repetisi. Solusi: Konstruksi-algoritma: xC = ∑= 8 1 )cos().sin(. x x φδ ; dimana, δ=30; φ=60; Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float A,B,phi,z,xC; int i,N; N=8; A=30; B=60; phi=M_PI; A=A*(phi/180);
  • 61. 58 | H a lS.N.M.P. Simamora -Diktat B=B*(phi/180); xC=0; for(i=0;i<N;i=i+1) { z=(i+1)*sin(A)*cos(B); cout << (i+1) << ": " << z << endl; xC=xC+z; } cout << "Hasil-akhir: " << xC; return 0; } Tampilan jalannya program:
  • 62. 59 | H a lS.N.M.P. Simamora -Diktat Teknik Array 1D Agar sebuah variabel dapat menampung lebih dari satu nilai data, maka digunakan teknik array (larik). Array dapat didefinisikan sebagai sebuah teknik atau metode untuk menampungkan lebih dari dua data, numerik atau non-numerik; dengan tipe-data yang sama sebanyak kapasitas variabel tersebut yang ditetapkan. Indeks array dimulai dari 0, bukan 1 sehingga pencacah untuk indeks yang umum disebut math-based. Misalkan, sebuah variabel yakni sns menampung data-numerik 0.56, -1, 2.75, 3, 3, -12.5; maka, dapat disebutkan indeks ke-2 (math-based) adalah -1; namun apabila dideklarasikan dengan teknik array 1D yakni: sns[0] = 0.56; sns[1] = -1; sns[2] = 2.75; sns[3] = 3; sns[4] = 3; sns[5] = -12.5; disimpulkan bahwa, panjang array var: sns adalah 6. Apabila var: sns ditransformasikan dengan teknik array 2D (asumsi disusun dalam 3-baris;2-kolom), maka dapat dituliskan sebagai berikut: sns[0][0] = 0.56; sns[0][1] = -1; sns[1][0] = 2.75; sns[1][1] = 3; sns[2][0] = 3; sns[2][1] = -12.5; 5
  • 63. 60 | H a lS.N.M.P. Simamora -Diktat Apabila isi var: sns akan ditampilkan secara vertikal, maka: 0.56 -1 2.75 3 3 -12.5 Dituliskan dalam pemrograman C++ (asumsi: penanganan proses repetisi menggunakan struktur kendali proses while) sebagai berikut: #include<iostream> using namespace std; int main() { float sns[7]={0.56,-1,2.75,3,3,-12.5}; int i; i=0; while(i<6) { cout << sns[i] << endl; i=i+1; } return 0; } Tampilan jalannya program: Dituliskan dalam pemrograman C++ (asumsi: penanganan proses repetisi menggunakan struktur kendali proses for) sebagai berikut: #include<iostream> using namespace std; int main()
  • 64. 61 | H a lS.N.M.P. Simamora -Diktat { float sns[7]={0.56,-1,2.75,3,3,-12.5}; int i; for(i=0;i<6;i=i+1) { cout << sns[i] << endl; } return 0; } Tampilan jalannya program: Perbedaam while dengan do-while terletak pada posisi statement yang akan dieksekusi dan blok program kontrol perulangan. Dituliskan dalam pemrograman C++ (asumsi: penanganan proses repetisi menggunakan struktur kendali proses do-while) sebagai berikut: #include<iostream> #include<conio.h> #include<stdio.h> using namespace std; int main() { float sns[7]={0.56,-1,2.75,3,3,-12.5}; int i; i=0; do { cout << sns[i] << endl; i=i+1; }while(i<6); cout << "nTekan sembarang tombol..."; getch(); system("cls"); return 0; }
  • 65. 62 | H a lS.N.M.P. Simamora -Diktat Tampilan jalannya program: Kasus: -Sebuah variabel, var: xL, menampungkan sejumlah data- numerik, yakni: 56H,056,DEC(23),DEC(-23),065; apabila (math- based) data ke-2 saling dipertukarkan dengan ke-5, lalu hasil termutahir ditampungkan ke var: xR, dan dilakukan operasi komputasi sebagai berikut: LR[1]←xL[2]⊕xR[3]; LR[2]←xL[4]−xR[5]; LR[3]←xL[5]xR[1]; LR[4]←xL[1]•xR[4]; Hasil-akhir ditampungkan ke var: LR, maka tampilkan secara horisontal isi xL, xR, dan LR. Solusi: Algoritma Matematika Informasi: u←xL[2]; xL[2]←xL[5]; xL[5]←u; maka, diperoleh bahwa: var: xL ∈ {56H,056,DEC(23),DEC(-23),065}; var: xR ∈ {56H,065,DEC(23),DEC(-23),056}; 56H = (56)16 = (...)10; = 5.(16)1 + 6.(16)0; = 80 + 6 = DEC(86); DEC(86) = (...)2; 86 ÷ 2 = 43 sisa 0 43 ÷ 2 = 21 sisa 1
  • 66. 63 | H a lS.N.M.P. Simamora -Diktat 21 ÷ 2 = 10 sisa 1 10 ÷ 2 = 5 sisa 0 5 ÷ 2 = 2 sisa 1 2 ÷ 2 = 1 sisa 0 1 ÷ 2 = 0 sisa 1 disusun-ulang menjadi: (1010110)2; 056 = (56)8 = (...)10; = 5.(8)1 + 6.(8)0; = 40 + 6 = DEC(46); DEC(46) = (...)2; 46 ÷ 2 = 23 sisa 0 23 ÷ 2 = 11 sisa 1 11 ÷ 2 = 5 sisa 1 5 ÷ 2 = 2 sisa 1 2 ÷ 2 = 1 sisa 0 1 ÷ 2 = 0 sisa 1 disusun-ulang menjadi: (101110)2; DEC(23) = (...)2; 23 ÷ 2 = 11 sisa 1 11 ÷ 2 = 5 sisa 1 5 ÷ 2 = 2 sisa 1 2 ÷ 2 = 1 sisa 0 1 ÷ 2 = 0 sisa 1 disusun-ulang menjadi: (10111)2; DEC(-23) = (...)2; Gunakan Algoritma Matematika Informasi: transformasi negatip- DEC-to-BIN: Langkah-1: -positipkan DEC tersebut DEC(-23) ⇒ DEC(23); Langkah-2: -transformasikan DEC-to-BIN dalam 16-bit; DEC(23) = xxxx xxxx xxxx xxxx = 0000 0000 0001 0111 Langkah-3: -NOT-kan BIN tersebut 0000 0000 0001 0111 ⇒ 1111 1111 1110 1000
  • 67. 64 | H a lS.N.M.P. Simamora -Diktat Langkah-4: -tambah-kan BIN tersebut dengan (1)2; 1111 1111 1110 1000 0000 0000 0000 0001 + 1111 1111 1110 1001 maka, DEC(-23) = (1111 1111 1110 1001)2; 065 = (65)8 = (...)10; = 6.(8)1 + 5.(8)0; = 48 + 5 = DEC(53); DEC(53) = (...)2; 53 ÷ 2 = 26 sisa 1 26 ÷ 2 = 13 sisa 0 13 ÷ 2 = 6 sisa 1 6 ÷ 2 = 3 sisa 0 3 ÷ 2 = 1 sisa 1 1 ÷ 2 = 0 sisa 1 disusun-ulang menjadi: (110101)2; Uji: LR[1]←xL[2]⊕xR[3]; xL[2] : 101110 xR[3] : 010111 ⊕ LR[1] : 111001 111001 = DEC(...); = 1.(2)5 + 1.(2)4 + 1.(2)3 + 0 + 0 + 1.(2)0; = 32 + 16 + 8 + 0 + 1; = DEC(57); isi LR[1]=DEC(57); Uji: LR[2]←xL[4]−xR[5]; xL[4] : DEC(-23) xR[5] : DEC(46) − LR[2] : DEC(-69) isi LR[2]=DEC(-69); Uji: LR[3]←xL[5]xR[1]; xL[5] : 0110101 xR[1] : 1010110 + LR[3] : 1110111
  • 68. 65 | H a lS.N.M.P. Simamora -Diktat 1110111 = DEC(...); = 1.(2)6 + 1.(2)5 + 1.(2)4 + 0 + 1.(2)2 + 1.(2)1 + 1.(2)0; = 64 + 32 + 16 + 0 + 4 + 2 + 1; = DEC(119); isi LR[3]=DEC(119); Uji: LR[4]←xL[1]•xR[4]; xL[1] : 01010110 xR[4] : 11101001 • LR[4] : 01000000 01000000 = DEC(...); = 0 + 1.(2)6 + 0 + 0 + 0 + 0; = 0 + 64 + 0 + 0 + 0; = DEC(64); isi LR[4]=DEC(64); maka, ditampilkan dalam DEC sebagai berikut: var: xL ∈ {86,46,23,-23,53}; var: xR ∈ {86,53,23,-23,46}; var: LR ∈ {57,-69,119,64}; Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { int xL[6]={0x56,056,23,-23,065},xR[6],LR[6],i,u; for(i=0;i<5;i=i+1) { xR[i]=xL[i]; cout << xL[i] << " "; } cout << endl; u=xR[1]; xR[1]=xR[4]; xR[4]=u; for(i=0;i<5;i=i+1) { cout << xR[i] << " "; } cout << endl; LR[0]=xL[1]^xR[2]; LR[1]=xL[3]-xR[4];
  • 69. 66 | H a lS.N.M.P. Simamora -Diktat LR[2]=xL[4]|xR[0]; LR[3]=xL[0]&xR[3]; for(i=0;i<4;i=i+1) { cout << LR[i] << " "; } return 0; } Tampilan jalannya program: Kasus: -Apabila sejumlah data non-numerik ditampungkan ke var: b2 berikut ini (math-based): b2[1]←’♥’; b2[2]←’A’; b2[3]←’♠’; b2[4]←’7’; b2[5]←’a’; b2[6]←’♣’; b2[7]←’♦’; Tampilkanlah isi b2 dirunut dari belakang secara horisontal sebelum dan sesudah. Gunakan struktur kendali proses do-while dalam penanganan proses repetisi. Dan gunakan metode swapping untuk menampilkan perubahan posisi isi array. Solusi: Konstruksi-algoritma: ‘♥’: 3; ‘A’: 65; ‘♠’: 6; ‘7’: 55; ‘a’: 97; ‘♣’: 5; ‘♦’: 4; sebelum: b2 ∈ {‘♥’, ‘A’, ‘♠’, ‘7’, ‘a’, ‘♣’, ‘♦’};
  • 70. 67 | H a lS.N.M.P. Simamora -Diktat sesudah: b2 ∈ {‘♦’, ‘♣’, ‘a’, ‘7’, ‘♠’, ‘A’, ‘♥’}; Dituliskan dalam pemrograman C++ #include<iostream> #include<conio.h> using namespace std; int main() { char b2[8],k; int i; b2[0]=char(3); b2[1]=char(65); b2[2]=char(6); b2[3]=char(55); b2[4]=char(97); b2[5]=char(5); b2[6]=char(4); i=0; do { cout << b2[i] << " "; i=i+1; } while(i<7); cout << endl; i=0; do{ k=b2[i]; b2[i]=b2[7-1-i]; b2[7-1-i]=k; } while(i<3); i=0; do { cout << b2[i] << " "; i=i+1; } while(i<7); return 0; } Tampilan jalannya program:
  • 71. 68 | H a lS.N.M.P. Simamora -Diktat Kasus: -Uraikanlah dan tampungkan Model Bilangan 4 Formula sesuai statement berikut ini: s←4; shr[0]=(s+s)−(s+s); shr[1]=(s+s)÷(s+s); shr[2]=(s÷s)+(s÷s); shr[3]=s−(s(s−s)); shr[4]=s+((s−s)∗s); shr[5]=s+(s(s−s)); shr[6]=s+((s+s)÷s); shr[7]=(s+s)−(s÷s); shr[8]=(s+s)+(s−s); shr[9]=(s+s)+(s÷s); shr[10]=(44−s)÷s; shr[11]=44÷(√s∗√s); shr[12]=s∗(s−(s÷s)); shr[13]=(44÷s)+√s; shr[14]=s+s+s+√s; Gunakan struktur kendali proses for untuk penanganan proses repetisi/looping. Dan tampilkan isi var: shr secara horisontal. Solusi: Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float s,shr[15],a,b,c,d,e; int i; s=4; a=(s+s); b=(s-s); c=(s/s); d=(pow(s,b)); e=(sqrt(s)); shr[0]=a-a; shr[1]=a/a; shr[2]=c+c; shr[3]=s-d; shr[4]=s+(b*s); shr[5]=s+d;
  • 72. 69 | H a lS.N.M.P. Simamora -Diktat shr[6]=s+(a/s); shr[7]=a-c; shr[8]=a+b; shr[9]=a+c; shr[10]=(44-s)/s; shr[11]=44/(e*e); shr[12]=s*(s-c); shr[13]=(44/s)+e; shr[14]=a+s+e; for(i=0;i<15;i=i+1) { cout << shr[i] << " "; } return 0; } Tampilan jalannya program: Kasus: -Berdasarkan kasus sebelumnya, lakukan urutan indeks terbalik pada isi var: shr; menggunakan teknik decreasing. Gunakan struktur kendali proses do-while dalam penanganan proses looping/repetisi. Solusi: sebelum: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14; sesudah: 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0; Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float s,shr[15],a,b,c,d,e; int i; s=4; a=(s+s); b=(s-s); c=(s/s); d=(pow(s,b));
  • 73. 70 | H a lS.N.M.P. Simamora -Diktat e=(sqrt(s)); shr[0]=a-a; shr[1]=a/a; shr[2]=c+c; shr[3]=s-d; shr[4]=s+(b*s); shr[5]=s+d; shr[6]=s+(a/s); shr[7]=a-c; shr[8]=a+b; shr[9]=a+c; shr[10]=(44-s)/s; shr[11]=44/(e*e); shr[12]=s*(s-c); shr[13]=(44/s)+e; shr[14]=a+s+e; i=0; do { cout << shr[i] << " "; i=i+1; } while(i<15); cout << endl; i=0; do { cout << shr[(15-1)-i] << " "; i=i+1; }while(i<15); return 0; } Tampilan jalannya program: Kasus: -Sebuah lingkaran dengan radius=2.75-ssp; apabila nilai radius ditampungkan (math-based) ke indeks ke-1, area lingkaran ditampungkan ke indeks-2, keliling lingkaran ditampungkan ke indeks ke-3 var: YBS; maka tampilkan isi YBS secara vertikal. Gunakan struktur kendali proses while dalam penanganan proses repetisi/looping.
  • 74. 71 | H a lS.N.M.P. Simamora -Diktat Solusi: Konstruksi-algoritma: r←2.75; maka, YBS[1]←2.75; area = π ∗ r2; = 3.14 ∗ (2.75)2; = 23.75829444; maka, YBS[2]←23.75829444; Keliling = 2∗π∗r; = (2)(3.14)(2.75); = 17.27875959; maka, YBS[3]←17.27875959; sehingga, YBS ∈ {2.75,23.75829444,17.27875959}; Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float r,phi,YBS[4]; int i; r=2.75; phi=M_PI; YBS[0]=2.75; YBS[1]=phi*(pow(r,2)); YBS[2]=(2*phi)*r; i=0; while(i<3) { cout << YBS[i] << endl; i=i+1; } return 0; } Tampilan jalannya program:
  • 75. 72 | H a lS.N.M.P. Simamora -Diktat Kasus: -Perhatikan konstruksi-algoritma berikut ini: jika 21∗41=861 adalah (2∗4)∗100+(2+4)∗10+1; sehingga, 800 + 60 + 1 = 861; dan, 31∗81=2511 adalah (3∗8)∗100+(3+8)∗10+1; sehingga, 2400 + 110 + 1 = 2511; Selesaikan persoalan ini dengan teknik array 1D. Gunakan struktur kendali proses for dalam penanganan proses repetisi. Solusi: Konstruksi-algoritma: x1 ∗ y1 = c; xy ∈ Bilangan Bulat; a←x∗y∗100; b←(x+y) ∗10; dan, c=a+b+1; Misalkan, 41 dan 51; xy1⇐451; maka, x=4; dan y=5; 41 ∗ 51 = 2091; diuraikan: a=4∗5∗100=2000; b=(4+5)∗10=90; c=2000+90+1=2091; Misalkan, 61 dan 91; xy1⇐691; maka, x=6; dan y=9; 61 ∗ 91 = 5551; diuraikan: a=6∗9∗100=5400; b=(6+9)∗10=150; c=5400+150+1=5551; Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { int i,zR[4],a,b,c,x,y; cout << "Tentukan x?: "; cin >> x; cout << "Tentukan y?: "; cin >> y; a=x*y*100; b=(x+y)*10; c=a+b+1;
  • 76. 73 | H a lS.N.M.P. Simamora -Diktat zR[0]=x*10+1; zR[1]=y*10+1; zR[2]=zR[0]*zR[1]; cout << "Bilangan yang ditentukan: "; cout << x << "1 dan " << y << "1" << endl; cout << "Hasil perkalian = " << c << endl; for(i=0;i<3;i=i+1) { cout << zR[i] << " "; } return 0; } Tampilan jalannya program:
  • 77. 74 | H a lS.N.M.P. Simamora -Diktat Algoritma Matematika Informasi Data dan informasi yang di-input-kan ke dalam sistem komputer/komputer modern akan diproses secara matematik; oleh sebab itu, dasar pemrosesan dalam sistem komputer/komputer modern adalah Algoritma Matematika Informasi. Dasar kerja dan pemrosesan Algoritma Matematika Informasi adalah operasi arithmatika dan operasi logika, Hukum De’Morgan, Logika Matematika, dan Teori Himpunan. Misalkan, z=(234)10; transformasikan isi z ke DEC. Solusi: (234)10 = 2-ratusan + 3-puluhan + 4-satuan; = 2.(10)2 + 3.(10)1 + 4.(10)0 ; = 200 + 30 + 4; = DEC(234); 6.1 Tranformasi BIN-to-DEC Bilangan Basis 2 disebut binary-digit (bit), umumnya dituliskan dalam kode sebutan BIN. Bilangan basis ini memiliki range 0 s.d 1, dan berikut dituliskan level kesetaraan dengan DEC: BIN DEC BIN DEC 000 000 0 001 001 9 000 001 1 001 010 10 000 010 2 001 011 11 000 011 3 001 100 12 000 100 4 001 101 13 000 101 5 001 110 14 000 110 6 001 111 15 000 111 7 010 000 16 001 000 8 010 001 17 6
  • 78. 75 | H a lS.N.M.P. Simamora -Diktat Contoh: -Tuliskan Algoritma Matematika Informasi untuk menyelesaikan persoalan berikut ini: (001011)2 = (...)10; Solusi: Algoritma Matematika Informasi: (001011)2 = 0.(2)5 + 0.(2)4 + 1.(2)3 + 0.(2)2 + 1.(2)1 + 1.(2)0; = 0 + 0 + 8 + 0 + 2 + 1; = DEC(11); Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float B[6],D; int i; B[0]=1*(pow(2,0)); B[1]=1*(pow(2,1)); B[2]=0*(pow(2,2)); B[3]=1*(pow(2,3)); B[4]=0*(pow(2,4)); B[5]=0*(pow(2,5)); D=0; for(i=0;i<6;i=i+1) { D=D+B[i]; } cout << D; return 0; } Tampilan jalannya program: Contoh: -Tuliskan Algoritma Matematika Informasi untuk menyelesaikan persoalan berikut ini: (010001)2 = (...)10;
  • 79. 76 | H a lS.N.M.P. Simamora -Diktat Solusi: Algoritma Matematika Informasi: (010001)2 = 0.(2)5 + 1.(2)4 + 0.(2)3 + 0.(2)2 + 0.(2)1 + 1.(2)0; = 0 + 16 + 0 + 0 + 0 + 1; = DEC(17); Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float B[6],D; int i; B[0]=1*(pow(2,0)); B[1]=0*(pow(2,1)); B[2]=0*(pow(2,2)); B[3]=0*(pow(2,3)); B[4]=1*(pow(2,4)); B[5]=0*(pow(2,5)); D=0; for(i=0;i<6;i=i+1) { D=D+B[i]; } cout << D; return 0; } Tampilan jalannya program: Contoh: -Tuliskan Algoritma Matematika Informasi untuk menyelesaikan persoalan berikut ini: (1010101)2 = (...)10; Solusi: Algoritma Matematika Informasi: (1010101)2=1.(2)6 + 0.(2)5 + 1.(2)4 + 0.(2)3 + 1.(2)2 + 0.(2)1 + 1.(2)0
  • 80. 77 | H a lS.N.M.P. Simamora -Diktat = 64 + 0 + 16 + 0 + 4 + 0 + 1; = DEC(85); Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float B[7],D; int i; B[0]=1*(pow(2,0)); B[1]=0*(pow(2,1)); B[2]=1*(pow(2,2)); B[3]=0*(pow(2,3)); B[4]=1*(pow(2,4)); B[5]=0*(pow(2,5)); B[6]=1*(pow(2,6)); D=0; for(i=0;i<7;i=i+1) { D=D+B[i]; } cout << D; return 0; } Tampilan jalannya program: 6.2 Tranformasi OCT-to-DEC Bilangan Basis 8 adalah basis bilangan yang digunakan untuk pengalamatan hardware; umumnya dituliskan dalam kode sebutan OCT. Bilangan basis ini memiliki range 0 s.d 7. Dalam pemrograman umum diidentifikasi dengan prefix 0...; umumnya pada Bahasa Pemrograman C/C++, JAVA, dan JavaScript. Misalkan, 056, 076, 023; namun salah bila dituliskan 078.
  • 81. 78 | H a lS.N.M.P. Simamora -Diktat Berikut ditunjukkan bilangan/data-numerik kesetaraan OCT terhadap DEC. OCT DEC OCT DEC 00 0 11 9 01 1 12 10 02 2 13 11 03 3 14 12 04 4 15 13 05 5 16 14 06 6 17 15 07 7 20 16 10 8 21 17 Contoh: -Tuliskan Algoritma Matematika Informasi untuk menyelesaikan persoalan berikut ini: (21)8 = (...)10; Solusi: Algoritma Matematika Informasi: (21)8 = 021 = 2.(8)1 + 1.(8)0; = 16 + 1; = DEC(17); Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float O[3],D; int i; O[0]=1*(pow(8,0)); O[1]=2*(pow(8,1)); D=0; for(i=0;i<2;i=i+1) { D=D+O[i]; } cout << D; return 0; }
  • 82. 79 | H a lS.N.M.P. Simamora -Diktat Tampilan jalannya program: Contoh: -Tuliskan Algoritma Matematika Informasi untuk menyelesaikan persoalan berikut ini: (171)8 = (...)10; Solusi: Algoritma Matematika Informasi: (171)8= 0171 = 1.(8)2 + 7.(8)1 + 1.(8)0; = 64 + 56 + 1; = DEC(121); Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float O[4],D; int i; O[0]=1*(pow(8,0)); O[1]=7*(pow(8,1)); O[2]=1*(pow(8,2)); D=0; for(i=0;i<3;i=i+1) { D=D+O[i]; } cout << D; return 0; } Tampilan jalannya program:
  • 83. 80 | H a lS.N.M.P. Simamora -Diktat 6.3 Tranformasi HEX-to-DEC Bilangan Basis 16 adalah basis bilangan yang digunakan untuk pengalamatan hardware dan microcontroller; umumnya dituliskan dalam kode sebutan HEX. Bilangan basis ini memiliki range 0 s.d 9 dilanjutkan dengan A s.d F. Dalam pemrograman umum diidentifikasi dengan prefix 0x... atau ...H; umumnya digunakan pada Bahasa Pemrograman C/C++, JAVA, dan JavaScript. Misalkan, 0x56, 0x76, 0x45, 0xa6, 8H, 0x23; namun salah bila dituliskan 0x7G. Berikut ditunjukkan bilangan/data-numerik kesetaraan HEX terhadap DEC. HEX DEC HEX DEC 0h 0 9h 9 1h 1 Ah 10 2h 2 Bh 11 3h 3 Ch 12 4h 4 Dh 13 5h 5 Eh 14 6h 6 Fh 15 7h 7 10h 16 8h 8 11h 17 Tidak ada perbedaan mode status capital maupun lower-case untuk pengenal yakni H atau h. Contoh: -Tuliskan Algoritma Matematika Informasi untuk menyelesaikan persoalan berikut ini: (11)16 = (...)10; Solusi: Algoritma Matematika Informasi: (11)16 = 0x11 = 1.(16)1 + 1.(16)0; = 16 + 1; = DEC(17); Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std;
  • 84. 81 | H a lS.N.M.P. Simamora -Diktat int main() { float H[3],D; int i; H[0]=1*(pow(16,0)); H[1]=1*(pow(16,1)); D=0; for(i=0;i<2;i=i+1) { D=D+H[i]; } cout << D; return 0; } Tampilan jalannya program: Contoh: -Tuliskan Algoritma Matematika Informasi untuk menyelesaikan persoalan berikut ini: (1ae)16 = (...)10; Solusi: Algoritma Matematika Informasi: (1ae)16 = 0xAE = 1.(16)2 + 10.(16)1 + 14.(16)0; = 256 + 160 + 14; = DEC(430); Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float H[4],D; int i; H[0]=14*(pow(16,0)); H[1]=10*(pow(16,1)); H[2]=1*(pow(16,2)); D=0;
  • 85. 82 | H a lS.N.M.P. Simamora -Diktat for(i=0;i<3;i=i+1) { D=D+H[i]; } cout << D; return 0; } Tampilan jalannya program: Contoh: -Tuliskan Algoritma Matematika Informasi untuk menyelesaikan persoalan berikut ini: (a0b0)16= (...)10; Solusi: Algoritma Matematika Informasi: (a0b0)16= 0xa0b0 = 10.(16)3 + 0.(16)2 + 11.(16)1 + 0.(16)0; = 40960 + 0 + 176 + 0; = DEC(41136); Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float H[5],D; int i; H[0]=0*(pow(16,0)); H[1]=0xb*(pow(16,1)); H[2]=0*(pow(16,2)); H[3]=0xa*(pow(16,3)); D=0; for(i=0;i<4;i=i+1) { D=D+H[i]; } cout << D; return 0; }
  • 86. 83 | H a lS.N.M.P. Simamora -Diktat Tampilan jalannya program: 6.4 Tranformasi DEC-to-BIN Untuk merepresentasikan data-numerik dalam decimal ke binary- digit, digunakan transformasi DEC-to-BIN. Misalkan: DEC(215) = (...)2; Solusi: Algoritma Matematika Informasi 215 ÷ 2 = 107 sisa 1 107 ÷ 2 = 53 sisa 1 53 ÷ 2 = 26 sisa 1 26 ÷ 2 = 13 sisa 0 13 ÷ 2 = 6 sisa 1 6 ÷ 2 = 3 sisa 0 3 ÷ 2 = 1 sisa 1 1 ÷ 2 = 0 sisa 1 maka, disusun-ulang menjadi: (11010111)2; Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { int dE[15],x,y; int i,N; x=215; N=0; while(x>0) { y=x%2; dE[N]=y; N=N+1; x=x/2; } for(i=0;i<N;i=i+1) {
  • 87. 84 | H a lS.N.M.P. Simamora -Diktat cout << dE[N-1-i]; } return 0; } Tampilan jalannya program: Contoh: --Tuliskan Algoritma Matematika Informasi untuk menyelesaikan persoalan berikut ini: (101)10 = (...)2; Solusi: Algoritma Matematika Informasi: 101 ÷ 2 = 50 sisa 1 50 ÷ 2 = 25 sisa 0 25 ÷ 2 = 12 sisa 1 12 ÷ 2 = 6 sisa 0 6 ÷ 2 = 3 sisa 0 3 ÷ 2 = 1 sisa 1 1 ÷ 2 = 0 sisa 1 maka, disusun-ulang menjadi: (1100101)2; Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { int data[15],x,y; int i,N; x=101; N=0; while(x>0) { y=x%2; data[N]=y; N=N+1;
  • 88. 85 | H a lS.N.M.P. Simamora -Diktat x=x/2; } for(i=0;i<N;i=i+1) { cout << data[N-1-i]; } return 0; } Tampilan jalannya program: 6.5 Tranformasi DEC-to-OCT Untuk merepresentasikan data-numerik dalam decimal ke binary- digit, digunakan transformasi DEC-to-OCT. Misalkan: DEC(215) = (...)8; Solusi: Algoritma Matematika Informasi 215 ÷ 8 = 26 sisa 7 26 ÷ 8 = 3 sisa 2 3 ÷ 8 = 0 sisa 3 maka, disusun-ulang menjadi: (327)8; Berbeda dengan BIN, pada OCT umumnya sebuah translator menyediakan function/method untuk mentransformasikan ke octal. Asumsi menggunakan function/method yang disediakan oleh translator. Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { unsigned int data; data=215; cout << oct << data; return 0; }
  • 89. 86 | H a lS.N.M.P. Simamora -Diktat Tampilan jalannya program: Contoh: -Tuliskan Algoritma Matematika Informasi untuk menyelesaikan persoalan berikut ini: (121)10 = (...)8; Solusi: Algoritma Matematika Informasi: 121 ÷ 8 = 15 sisa 1 15 ÷ 8 = 1 sisa 7 1 ÷ 8 = 0 sisa 1 maka, disusun-ulang menjadi: (171)8; Asumsi menggunakan cara konvensional/model analitik berdasarkan Algoritma Matematika Informasi. Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { int data[15],x,y; int i,N; x=121; N=0; while(x>0) { y=x%8; data[N]=y; N=N+1; x=x/8; } for(i=0;i<N;i=i+1) { cout << data[N-1-i]; } return 0; }
  • 90. 87 | H a lS.N.M.P. Simamora -Diktat Tampilan jalannya program: 6.6 Tranformasi DEC-to-HEX Untuk merepresentasikan data-numerik dalam decimal ke binary- digit, digunakan transformasi DEC-to-HEX. Misalkan: DEC(315) = (...)16; Solusi: Algoritma Matematika Informasi 315 ÷ 16 = 19 sisa 11 ; 11 ⇒ B; 19 ÷ 16 = 1 sisa 3 1 ÷ 16 = 0 sisa 1 maka, disusun-ulang menjadi: (13B)16; Berbeda dengan BIN, pada HEX umumnya sebuah translator menyediakan function/method untuk mentransformasikan ke hexal. Asumsi menggunakan function/method yang disediakan oleh translator. Dituliskan dalam pemrograman C++ #include<iostream> using namespace std; int main() { unsigned int data; data=315; cout << hex << data; return 0; } Tampilan jalannya program:
  • 91. 88 | H a lS.N.M.P. Simamora -Diktat Contoh: -Tuliskan Algoritma Matematika Informasi untuk menyelesaikan persoalan berikut ini: (621)10 = (...)16; Solusi: Algoritma Matematika Informasi: 621 ÷ 16 = 38 sisa 13 ; 13 ⇒ D; 38 ÷ 16 = 2 sisa 6 2 ÷ 16 = 0 sisa 2 maka, disusun-ulang menjadi: (26D)16; Asumsi menggunakan cara konvensional/model analitik berdasarkan Algoritma Matematika Informasi. Dituliskan dalam pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { char data[15]; int x,y; int i,N; x=621; N=0; while(x>0) { y=x%16; if(y>=10&&y<=15) { if(y==10) { data[N]='a'; } if(y==11) { data[N]='b'; } if(y==12) { data[N]='c'; } if(y==13) { data[N]='d'; } if(y==14) { data[N]='e'; } if(y==15) { data[N]='f';
  • 92. 89 | H a lS.N.M.P. Simamora -Diktat } } else { if(y==1) { data[N]='1'; } if(y==2) { data[N]='2'; } if(y==3) { data[N]='3'; } if(y==4) { data[N]='4'; } if(y==5) { data[N]='5'; } if(y==6) { data[N]='6'; } if(y==7) { data[N]='7'; } if(y==8) { data[N]='8'; } if(y==9) { data[N]='9'; } } N=N+1; x=x/16; } for(i=0;i<N;i=i+1) { cout << data[N-1-i]; } return 0; } Tampilan jalannya program:
  • 93. 90 | H a lS.N.M.P. Simamora -Diktat 6.7 Algoritma FAST Algoritma ini bekerja berdasar teknik/metode BCD (Binary- Coded-Decimal) 8421; 8421 menjelaskan posisi setiap digit pada deret Bilangan Basis 2. Apabila diuraikan, maka deret Bilangan Basis 2 (dari kanan-ke- kiri merujuk pada posisi MSB-LSB); MSB: Most-Significant-Bit berada pada posisi kiri; LSB: Least-Significant-Bit berada pada posisi kanan; atau secara umum disebut juga: MSD: Most- Significant-Digit; dan LSD: Least-Significant-Digit; dst ... 1024 256 128 64 32 16 8 4 2 1; Contoh: -Tuliskan Algoritma Matematika Informasi untuk persoalan berikut ini: 5ah = (...)2; Solusi: Gunakan Algoritma FAST: -transformasi HEX-to-BIN Langkah-1: pisahkan digit berdasar posisi MSD-LSD; LSD ⇒ a; MSD ⇒ 5; Langkah-2: transformasikan setiap digit ke dalam DEC; 0xa = DEC(10); 0x5 = DEC(5); Langkah-3: transformasikan masing-masing digit DEC tersebut dalam representasi posisi bit di deret BIN dengan masing-masing panjang 4-bit; DEC(10) = xxxx = 8+0+2+0; DEC(5) = xxxx = 0+4+0+1; Langkah-4: transformasikan setiap digit DEC tersebut dalam BIN dengan panjang masing-masing 4-bit; DEC(10) = 8+0+2+0 = 1010; DEC(5) = 0+4+0+1 = 0101; Langkah-5: concatenate-kan bit tersebut dalam posisi MSD-LSD; 5ah = 0101 1010; Dengan demikian, diperoleh bahwa 5ah = (01011010)2; Dibuktikan dengan pemrograman C++ #include<iostream> #include<math.h>
  • 94. 91 | H a lS.N.M.P. Simamora -Diktat using namespace std; int main() { float D,bi1[3],bi2[5],s1; float z1,z2,z3,z4,z5,z6,z7,z8; int i,s2; s1=5; s2=10; cout << s1; cout << hex << s2; cout << " = "; bi1[0]=s2*(pow(16,0)); bi1[1]=s1*(pow(16,1)); D=0; for(i=0;i<2;i=i+1) { D=D+bi1[i]; } cout << D << endl; z1=0; z2=1; z3=0; z4=1; z5=1; z6=0; z7=1; z8=0; cout << z8 << z7 << z6 << z5; cout << z4 << z3 << z2 << z1 << " = "; bi2[0]=z1*(pow(2,0)); bi2[1]=z2*(pow(2,1)); bi2[2]=z3*(pow(2,2)); bi2[3]=z4*(pow(2,3)); bi2[4]=z5*(pow(2,4)); bi2[5]=z6*(pow(2,5)); bi2[6]=z7*(pow(2,6)); bi2[7]=z8*(pow(2,7)); D=0; for(i=0;i<8;i=i+1) { D=D+bi2[i]; } cout << D; return 0; }
  • 95. 92 | H a lS.N.M.P. Simamora -Diktat Tampilan jalannya program: Kasus: -Tuliskan Algoritma Matematika Informasi untuk persoalan berikut ini: 0666 = (...)16; Solusi: Gunakan Algoritma FAST: -transformasi OCT-to-HEX Langkah-1: pisahkan digit berdasar posisi MSD-LSD; LSD ⇒ 6; MSD/LSD ⇒ 6; MSD ⇒ 6; Langkah-2: transformasikan setiap digit ke dalam DEC; 06 = DEC(6); 06 = DEC(6); 06 = DEC(6); Langkah-3: transformasikan masing-masing digit DEC tersebut dalam representasi posisi bit di deret BIN dengan masing-masing panjang 3-bit; DEC(6) = xxx = 4+2+0; DEC(6) = xxx = 4+2+0; DEC(6) = xxx = 4+2+0; Langkah-4: transformasikan setiap digit DEC tersebut dalam BIN dengan panjang masing-masing 4-bit; DEC(6) = 4+2+0 = 110; DEC(6) = 4+2+0 = 110; DEC(6) = 4+2+0 = 110; Langkah-5: concatenate-kan bit tersebut dalam posisi MSD-LSD; 0666 = 110 110 110; Langkah-6: split-kan kelompok bit tersebut dalam posisi MSD- LSD masing-masing 4-bit; 110110110 = xxx1 1011 0110; ganti x⇒0; sehingga, diperoleh: 0001 1011 0110 Langkah-7: transformasikan setiap kelompok BIN tersebut ke DEC dalam posisi MSD-LSD;
  • 96. 93 | H a lS.N.M.P. Simamora -Diktat 0110 = 0+4+2+0 = DEC(6); 1011 = 8+0+2+1 = DEC(11); 0001 = 0+0+0+1 = DEC(1); Langkah-8: transformasikan masing-masing DEC tersebut ke HEX sesuai dengan posisi MSD-LSD; DEC(6) = 6H; DEC(11) = BH; DEC(1) = 1H; Langkah-9: concatenate-kan setiap digit HEX tersebut sesuai dengan posisi MSD-LSD; menjadi: 1B6H Dengan demikian, diperoleh bahwa 0666 = (1b6)16; Dibuktikan dengan pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float D,bi1[3],bi2[5],s1,s2,s3; float z1,z3; int i,z2; s1=6; s2=6; s3=6; cout << "0" << s3 << s2 << s1 << " = "; bi1[0]=s1*(pow(8,0)); bi1[1]=s2*(pow(8,1)); bi1[2]=s3*(pow(8,2)); D=0; for(i=0;i<3;i=i+1) { D=D+bi1[i]; } cout << "DEC(" << D << ")n"; z1=6; z2=11; z3=1; cout << "0x" << z3; cout << hex << z2; cout << z1 << " = "; bi2[0]=z1*(pow(16,0)); bi2[1]=z2*(pow(16,1)); bi2[2]=z3*(pow(16,2)); D=0;
  • 97. 94 | H a lS.N.M.P. Simamora -Diktat for(i=0;i<3;i=i+1) { D=D+bi2[i]; } cout << "DEC(" << D << ")"; return 0; } Tampilan jalannya program: Kasus: -Tuliskan Algoritma FAST untuk menyelesaikan persoalan berikut: (010011)2 = (...)16; Solusi: Algoritma Matematika Informasi: 010011 ⇒ xx01 0011 ; ganti x=0; ⇒ 0001 0011; selanjutnya: LSD: 0011: (3)10 = 3H; dan, MSD: 0001: (1)10 = 1H; lalu, di-concatenate-kan menjadi: 13H; maka diperoleh bahwa, (010011)2 = (13)16; Dibuktikan dengan pemrograman C++ #include<iostream> #include<math.h> using namespace std; int main() { float D,bi1[7],bi2[3],s1,s2,s3,s4,s5,s6; float z1; int i,z2; s1=1; s2=1; s3=0; s4=0; s5=1; s6=0; cout << s6 << s5; cout << s4 << s3 << s2 << s1 << " = ";
  • 98. 95 | H a lS.N.M.P. Simamora -Diktat bi1[0]=s1*(pow(2,0)); bi1[1]=s2*(pow(2,1)); bi1[2]=s3*(pow(2,2)); bi1[3]=s4*(pow(2,3)); bi1[4]=s5*(pow(2,4)); bi1[5]=s6*(pow(2,5)); D=0; for(i=0;i<6;i=i+1) { D=D+bi1[i]; } cout << "DEC(" << D << ")n"; z1=3; z2=1; cout << z2 << z1 << "h = "; bi2[0]=z1*(pow(16,0)); bi2[1]=z2*(pow(16,1)); D=0; for(i=0;i<2;i=i+1) { D=D+bi2[i]; } cout << "DEC(" << D << ")"; return 0; } Tampilan jalannya program:
  • 99. 96 | H a lS.N.M.P. Simamora -Diktat Daftar Pustaka Davis, S. R. (2004). C++ for Dummies-5th Edition. Wiley Publishing. Eggleston, D.L. (2011). Basic Electronics for Scientist and Engineers. Cambridge University Press. Sedgewick, R. (2003). Algorithms-third edition. Addison-Wesley. Simamora, S.N.M.P. (2002). "Diktat SK-100 Dasar Komputer dan Pemrograman". Dept. Sistem Komputer, Fak. Teknik. ITHB. Bandung. Simamora, S.N.M.P. (2011). "Diktat Kuliah TIF301 Algoritma dan Pemrograman-1". Program studi Teknik Informatika. Univ. BALE. Bandung. Simamora, S.N.M.P. (2013). "Diktat Kuliah Algoritma dan Pemrograman-I". Program studi Teknik Informatika. Univ. Widyatama. Bandung. Simamora, S.N.M.P. (2016). Modul Belajar Praktis Algoritma dan Pemrograman. Penerbit Deepublish. Yogyakarta. Skiena, S. S. (1998). The Algorithm Design Manual. Springer Verlag, New York. Winston, W. L. (1994). Introduction to Mathematical Programming: Applications and Algorithms 2nd Edition. Duxbury Pr. ♣