Download - Alpro I-latihan_kasus-r11102015
Latihan & Kasus
Ir. Sihar, MT.
T. Informatika – Fak. Teknik
Bandung – 2015
Algoritma dan Pemrograman – I (4 sks)
Daftar Pustaka
1) Davis, S. R. (2004). C++ for Dummies-5th Edition. Wiley Publishing.
2) Sedgewick, R. (2003). Algorithms-third edition. Addison-Wesley.
3) Shaffer, C. A. (2009). A Practical Introduction to Data Structuresand Algorithm Analysis. Department of Computer Science, VirginiaTech.
4) Simamora, S.N.M.P. (2002). "Diktat SK-100 Dasar Komputer danPemrograman". Dept. Sistem Komputer, Fak. Teknik. ITHB.Bandung.
5) Simamora, S.N.M.P. (2011). "Diktat Kuliah TIF301 Algoritma danPemrograman-1". Program studi Teknik Informatika. Univ. BALE.Bandung.
6) Simamora, S.N.M.P. (2013). "Diktat Kuliah Algoritma danPemrograman-I". Program studi Teknik Informatika. UTAMA.Bandung.
7) Skiena, S. S. (1998). The Algorithm Design Manual. SpringerVerlag, New York.
Sebuah variabel, zK, adalah input-value by end-user diproses dengan statement
berikut: x1←2*zK;
Tuliskan algoritma dan pemrograman C++ untuk mendapatkan isi zK jika
menggunakan unary-method pada expression tersebut. Tunjukkan tampilan
jalannya program.
Kasus:
Solusi: Agar expression dapat ditransformasikan dalam bentuk unary-method, maka:
statement tersebut harus menggunakan variabel yang sama yakni zK; mengapa zK,
oleh sebab pada soal diminta isi zK. Dengan demikian, expression 2∗zK diubah
posisi menjadi: zK∗2; dan statement tersebut dapat ditulis-ulang kembali menjadi:
zK←zK∗2; ⇒ zK∗= 2; dan zK←input-value by end-user
Algoritma dan pemrograman C++: Tampilan jalannya program:
Kasus: Tuliskan algoritma dan pemrograman C++, jika variabel Y1 diisikan DEC(-2) dan isi
variabel x adalah 2 kali isi Y1 untuk statement berikut: z2←x+Y1;
Tunjukkan tampilan jalannya program.
Solusi: Konstruksi-algoritma: Y1←DEC(-2);
x←2∗Y1;
z2←x+Y1;
Algoritma Pseudocode:
deklarasi var: Y1,x,z2 ∈ Float;
Y1←DEC(-2);
x←2∗Y1;
z2←x+Y1;
tampilkan z2;
Oleh sebab dalam kasus tidak ada
spesifik penggunaan bilangan
bulat atau pecahan, maka tipe-
data yang digunakan boleh int
atau float. Dalam penyelesaian
ini digunakan float dengan
alasan, tipe-data ini telah
merepresentasikan juga bilangan
bulat (int).
Algoritma dan pemrograman C++:
Tampilan jalannya program:
Alternatif-1: Alternatif-2:
Sebuah variabel, x1 dan x1∈Bil.Pecahan, adalah input-value by end-user diproses
dengan statement berikut: x1←9+zK;
Tuliskan algoritma dan pemrograman C++ untuk mendapatkan isi x1 jika
menggunakan unary-method pada expression tersebut. Tunjukkan tampilan
jalannya program.
Kasus:
Solusi: Agar expression dapat ditransformasikan dalam bentuk unary-method, maka:
statement tersebut harus menggunakan variabel yang sama yakni x1; mengapa x1,
oleh sebab pada soal diminta isi x1. Dengan demikian, expression 9+x1 diubah
posisi menjadi: x1+9; dan statement tersebut dapat ditulis-ulang kembali menjadi:
x1←x1+9; ⇒ x1+=9; dan x1←input-value by end-user
Algoritma dan pemrograman C++: Tampilan jalannya program:
Kasus: Sebuah variabel, t1, dikalikan dengan DEC(-7), hasilnya dikurangkan kembali dengan
nilai awal, DEC(-7), dan ditampungkan kembali ke t1. Tuliskan algoritma dan
pemrograman C++ untuk mendapatkan berapa isi t1 terakhir (ter-update) jika t1
sebelumnya didapatkan dari input-value by end-user. Tunjukkan tampilan jalannya
program.
Solusi: Konstruksi-algoritma: t1←?;
t1←t1∗DEC(-7);
t1←t1−DEC(-7);
tampilkan t1;
Algoritma dan pemrograman C++: Tampilan jalannya program:
Digunakannya tipe-data float untuk
menghindari hasil bersifat ambigue jika t1 di-
input-kan dalam bilangan pecahan
Kasus: Apabila diisikan DEC(125) ke variabel y, lalu di-MOD-kan dengan DEC(-2); lalu di-
MUL-kan dengan DEC(225); hasilnya di-ADD-kan dengan DEC(2). Tuliskan algoritma
pseudocode dan C++ beserta dengan tampilan jalannya program. Khusus untuk
algoritma dan pemrograman C++ gunakan unary-method pada expression untuk
statement yang dituliskan.
Solusi: Konstruksi-algoritma: y←DEC(125);
y←y%DEC(-2);
y←y∗DEC(225);
y←y+DEC(2);
tampilkan y;
MOD: modulo
MUL: multiply
ADD: add/sum
deklarasi var: y ∈ Int;
y←125;
y←y%-2;
y←y∗225;
y←y+2;
tampilkan y;
Algoritma Pseudocode: Algoritma dan pemrograman C++:
Tampilan jalannya program:
⇒ y=DEC(125);
⇒ y=DEC(1);
⇒ y=DEC(225);
⇒ y=DEC(227);
⇒tampilkan y=DEC(227);
Kasus: Berapakah nilai D, jika: D←A%B; untuk nilai A dan B berikut ini:
A←DEC(-27); B←DEC(2);
-27÷2 = -13 sisa -1, maka:
-27%2 = -1;
Algoritma dan pemrograman C++: Tampilan jalannya program:
A←DEC(28); B←DEC(-12);
28 ÷ -12 = -2 sisa 4, maka:
28 % -12 = 4;
Algoritma dan pemrograman C++: Tampilan jalannya program:
Berlaku Hukum Komutatif:
X + Z = Z + X
X ∗ Z = Z ∗ X
Kasus: Berapakah nilai D, jika: D←A%B; untuk nilai A dan B berikut ini:
A←DEC(27); B←DEC(-2);
27 ÷ -2 = -13 sisa 1, maka:
27 % -2 = 1;
Algoritma dan pemrograman C++: Tampilan jalannya program:
A←DEC(-65); B←DEC(7);
-65÷7 = -9 sisa -2, maka:
-27%7 = -2;
Algoritma dan pemrograman C++: Tampilan jalannya program:
Tidak berlaku Hukum Komutatif:
X − Z ≠ Z − X
X ÷ Z ≠ Z ÷ X
Kasus: Nilai awal DEC(1.5) ditampungkan ke sebuah variabel, p1, dikalikan dengan DEC(-7),
lalu ditambahkan dengan DEC(-7); hasilnya dikurangkan kembali dengan nilai awal
dan ditampungkan kembali ke p1. Tuliskan algoritma dan pemrograman C++ untuk
mendapatkan berapa isi p1 terakhir (ter-update) jika pada expression digunakan
unary-method pada statement yang dituliskan.
Solusi: Algoritma Pseudocode:
deklarasi var: p1 ∈ Float;
p1←DEC(1.5);
p1←p1∗DEC(-7);
p1←p1+DEC(-7);
p1←p1−DEC(1.5);
tampilkan p1;
Algoritma dan pemrograman C++: Tampilan jalannya program:
⇒ p1=DEC(1.5);
⇒ p1=DEC(-10.5);
⇒ p1=DEC(-17.5);
⇒ p1=DEC(-19);
⇒ tampilkan DEC(-19);
Kasus: Apabila diisikan DEC(125) ke variabel y, lalu di-DIV-kan dengan DEC(-2); lalu di-MUL-
kan dengan DEC(225); hasilnya di-SUB-kan dengan DEC(2). Tuliskan algoritma
pseudocode dan C++ beserta dengan tampilan jalannya program. Khusus untuk
algoritma dan pemrograman C++ gunakan unary-method pada expression untuk
statement yang dituliskan.
Solusi: Algoritma Pseudocode:
deklarasi var: y ∈ Float;
y←DEC(125);
y←y/DEC(-2);
y←y∗DEC(225);
y←y−DEC(2);
tampilkan y;
Algoritma dan pemrograman C++: Tampilan jalannya program:
⇒ y=DEC(125);
⇒ y=DEC(-62.5);
⇒ y=DEC(-14062.5);
⇒ y=DEC(-14064.5);
⇒ tampilkan DEC(- 14064.5);
DIV: divide
MUL: multiply
SUB: substraction
Kasus: Jika diketahui sebuah algoritma pseudocode berikut ini:
deklarasi var: x,G,t∈ Bil.Pecahan;
x←DEC(1.5);
t←?;
masukkan t;
G←2÷(x+(t/2);
tampilkan G;
Tuliskan algoritma dan pemrograman C++ untuk mendapatkan G, sertakan dengan
tampilan jalannya program.Solusi:
Algoritma dan pemrograman C++: Tampilan jalannya program:
Solusi:
Kasus: Jika diketahui sebuah statement berikut ini: zL←A∗4; jika diasumsikan variabel A
diisikan DEC(3), selesaikan persoalan berikut ini:
a). Tuliskan algoritma dan pemrograman C++ untuk mendapatkan zL jika operator
yang digunakan ADD. b). Tuliskan algoritma dan pemroograman C++ seperti pada a)
namun expression digunakan unary-method.
a). Konstruksi-algoritma:
A*4 = A+A+A+A;
sehingga : zL← A+A+A+A;
Algoritma dan pemrograman C++:
Tampilan jalannya program:
b). Konstruksi-algoritma:
zL← A+A+A+A;
Ubah expression dalam unary-method, maka
gunakan 1-variabel yang sama; misalkan: zL
sehingga : zL← zL+zL+zL+zL;
Statement menjadi:
Algoritma dan pemrograman C++:
zL+=zL;
zL+=zL;
Untuk mentransformasikan operator
MUL⇒ ADD: x+x+x+x+x;
Untuk mentransformasikan sebuah
expression menjadi dalam bentuk
unary-method, maka harus
menggunakan 1-variabel, boleh x atau
z bergantung pada statement.
Kasus: Perhatikan statement berikut: z←x∗5; jika variabel x diisikan DEC(4), tuliskan
algoritma dan pemrograman C++ untuk expression menggunakan unary-method dan
operator ADD. Tunjukkan tampilan jalannya program.
Solusi: Konstruksi-algoritma: x←DEC(4);
z←x+x+x+x+x;
Diubah expression dalam unary-method: misalkan: var: x;
x+=x;
x+=x;
x+=4;
tampilkan x;
Algoritma dan pemrograman C++:
Tampilan jalannya program:
4+4+4+4+4;
8
12
4
16
4
4
20
⇒ DEC(4)+DEC(4);
⇒ DEC(8)+DEC(8);
⇒ DEC(16)+DEC(4);
⇒ tampilkan DEC(20);
x+x+x+x+x;
tidak memenuhi
Kasus: Ubahlah statement berikut dalam expression dengan unary-method:
z←a+a+a+a+a+a+a;
jika variabel a diisikan DEC(5), dengan algoritma dan pemrograman C++; tunjukkan
tampilan jalannya program.Solusi: Konstruksi-algoritma: a←DEC(5);
z←a+a+a+a+a+a+a;
Diubah expression dalam unary-method: misalkan: var: a;
a+=a;
a+=a;
a+=a;
a+=5;
tampilkan z;
⇒ DEC(5)+DEC(5);
⇒ DEC(10)+DEC(10);
⇒ DEC(20)+DEC(20);
⇒ DEC(40)+DEC(5)
⇒ tampilkan DEC(45);
Kesimpulan: expression pada
statement tsb, tidak dapat
ditransformasikan dengan
unary-method.
Algoritma dan pemrograman C++: Tampilan jalannya program:
Solusi:
Kasus: Jika ditetapkan formula: A ÷ B = C sisa D; dalam operator MOD: A%B=D, maka
jelaskanlah bentuk pecahan berikut,
bahwa A adalah identilk dan sama-dengan (4 ∗ 7) + 3;
Buktikan dengan algoritma dan pemrograman C++ dan tunjukkan tampilan jalannya
program.
7
34
7
34Konstruksi-algoritma:
7
31
7
3)74(=
+∗A=31;
B=7;
C=4;
D=3;
sehingga: 31%7 = 3;
Algoritma dan pemrograman C++:
Tampilan jalannya program:
A ÷ B = C sisa D ditransformasikan dalam bentuk pecahan
menjadi:( )
B
DBC
B
DC
+∗=
Solusi:
Kasus: Jika ditetapkan formula: A ÷ B = C sisa D; dalam operator MOD: A%B=D, maka
jelaskanlah bentuk pecahan berikut,
bahwa A adalah identilk dan sama-dengan (2 ∗ 12) + 1;
Buktikan dengan algoritma dan pemrograman C++ dan tunjukkan tampilan jalannya
program.
12
12
12
12Konstruksi-algoritma:
12
25
12
1)122(=
+∗A=25;
B=12;
C=2;
D=1;
sehingga: 25%12 = 1;
Algoritma dan pemrograman C++:
Tampilan jalannya program:
A ÷ B = C sisa D ditransformasikan dalam bentuk pecahan
menjadi:( )
B
DBC
B
DC
+∗=
Solusi:
Kasus: Jika ditetapkan formula: A ÷ B = C sisa D; dalam operator MOD: A%B=D, maka
jelaskanlah bentuk pecahan berikut,
bahwa A adalah identilk dan sama-dengan (0 ∗ 14) + 11;
Buktikan dengan algoritma dan pemrograman C++ dan tunjukkan tampilan jalannya
program.
14
11
14
11Konstruksi-algoritma:
14
11
14
11)140(=
+∗A=11;
B=14;
C=0;
D=11;
sehingga: 11%14 = 11;
Algoritma dan pemrograman C++:
Tampilan jalannya program:
A ÷ B = C sisa D ditransformasikan dalam bentuk pecahan
menjadi:( )
B
DBC
B
DC
+∗=
Solusi:
Kasus: Pada sebuah balok, diketahui panjang=1.5cm, lebar=5.5cm, tinggi=2cm. Tuliskan
algoritma dan pemrograman C++ untuk menghitung volume balok tersebut, dan
tunjukkan tampilan jalannya program.
Konstruksi-algoritma: Volume-balok = panjang∗lebar∗tinggi;
Vb⇒Volume-kubus;
p⇒panjang;
l⇒lebar;
t⇒tinggi;
Algoritma dan pemrograman C++: Tampilan jalannya program:
Solusi:
Kasus: Tuliskan algoritma dan pemrograman C++ untuk menghitung volume kubus apabila
nilai sisi kubus dalam kelompok bilangan pecahan dan didapatkan dengan metode
input-value by end-user. Tunjukkan tampilan jalannya program.
Konstruksi-algoritma: Volume-kubus = sisi∗ sisi ∗ sisi;
Vk⇒Volume-kubus;
s⇒sisi;
Algoritma dan pemrograman C++: Tampilan jalannya program:
Kasus: Sebuah variabel, t2, dikalikan dengan DEC(-2), lalu ditambahkan dengan DEC(2);
hasilnya dikurangkan kembali dengan nilai awal, DEC(-2), dan ditampungkan kembali
ke t2. Tuliskan algoritma dan pemrograman C++ untuk mendapatkan berapa isi t2
terakhir (ter-update) jika t2 sebelumnya didapatkan dari input-value by end-user.
Tunjukkan tampilan jalannya program.
Solusi: Konstruksi-algoritma: t2←?;
t2←t2∗DEC(-2);
t2←t2+DEC(2);
t2←t2−DEC(-2);
tampilkan t1;
Algoritma dan pemrograman C++: Tampilan jalannya program:
Digunakannya tipe-data float untuk
menghindari hasil bersifat ambigue jika t2 di-
input-kan dalam bilangan pecahan
Kasus: Jika dinyatakan bahwa (2.1)3 = (2.1)∗(2.1)∗(2.1), maka tuliskan algoritma dan
pemrograman C++ untuk mendapatkan Z, jika diketahui statement berikut:
Z ← Z5 + 5;
dimana, nilai Z didapatkan dari input-value dari end-user dan Z ∈ Bilangan Pecahan.
Sertakan juga dengan algoritma pseudocode.
Tunjukkan tampilan jalannya program.
Solusi: Algoritma Pseudocode: deklarasi var: Z ∈ float;
Z←?;
masukkan Z;
Z5 ← Z ∗ Z ∗ Z ∗ Z ∗ Z;
sehingga: Z← Z ∗ Z ∗ Z ∗ Z ∗ Z + 5;
tampilkan Z;
Algoritma dan pemrograman C++: Tampilan jalannya program:
Kasus:
Solusi:
Jika diketahui suatu lingkaran dengan jari-jari = r, tuliskan algoritma dan
pemrograman C++ untuk menghitung luas lingkaran jika input-value didapatkan
dengan dua cara yaitu: deklarasi pada program (ditetapkan range: 12 s.d 17 cm), dan
input-value by end-user.
Tunjukkan tampilan jalannya program untuk masing-masing cara tersebut.
Luas lingkaran = π.r2
π = 3.14
Cara deklarasi Cara input-an
range untuk r sebagai input-value: 12 s.d 17 cm
Algoritma dan pemrograman C++:
Tampilan jalannya program:
Algoritma dan pemrograman C++:
Tampilan jalannya program:
Kasus:
Solusi:
Jika diketahui modifikasi pengerjaan operator matematika dengan unary-method
adalah: A=A+15; menjadi A+=15, maka: tuliskan algoritma dan pemrograman C++
untuk statement berikut:
X←X%43;
jika X merupakan hasil deklarasi: X←DEC(15) dan expression ditransformasi dengan
unary-method.
Berapakah nilai X?
Sertakan dengan algoritma pseudocode.
Algoritma Pseudocode: deklarasi var: X ∈ int;
X←15;
X%=43;
tampilkan x;
output: X=15;
Algoritma dan pemrograman C++: Tampilan jalannya program:
Kasus:
Solusi:
Jika diketahui suatu algoritma berikut: suatu bilangan ditampungkan ke suatu variabel
zK lalu ditambahkan dengan 5, selanjutnya isi variabel zK tsb dikalikan dengan 1.5 dan
terakhir dikurangkan dengan 10. Jika bilangan tsb adalah kelompok bilangan: 15 s.d 35,
tulislah algoritma dan pemrograman C++ untuk menampilkan isi akhir dari operand-hasil
apabila bilangan tsb hasil deklarasi. Sertakan juga dengan algoritma pseudocode.
Algoritma Pseudocode: deklarasi var: zK ∈ float;
zK←16.4;
zK←zK+5;
zK←zK∗1.5;
zK←zK−10;
tampilkan zK;
range zK: 15 s.d 35
Algoritma dan pemrograman C++: Tampilan jalannya program:
Apabila statement pada expression
ditemukan bilangan pecahan (sebagai
konstanta, K), maka variabel pada
statement tersebut nyatakan dalam
float (pecahan)
Kasus: Tuliskan Algoritma Matematika Informasi untuk mendapatkan z dan buktikan dengan
algoritma dan pemrograman C++, jika diketahui statement berikut:
z ← x•y;
dimana, x←DEC(10) dan y←0x1B;
Tunjukkan tampilan jalannya program.
Solusi: Algoritma Matematika Informasi:
DEC(10) : 001 010
0x1B : 011 011 •
DEC(10) ← 001 010
sehingga, z=DEC(10);
Algoritma dan pemrograman C++: Tampilan jalannya program:
Kasus: Tuliskan Algoritma Matematika Informasi untuk mendapatkan a3 dan buktikan
dengan algoritma dan pemrograman C++, jika diketahui statement berikut:
a3 ← a1+a2;
dimana, a1←0210 dan a2←0xc3;
Tunjukkan tampilan jalannya program.
Solusi:
Algoritma dan pemrograman C++: Tampilan jalannya program:
Algoritma Matematika Informasi:
0210 : 1000 1000
0xc3 : 1100 0011 +
DEC(203)←1100 1011
sehingga, a3=DEC(203);
Kasus: Tuliskan Algoritma Matematika Informasi untuk mendapatkan z3 dan buktikan dengan
algoritma dan pemrograman C++, jika diketahui statement berikut:
z3 ← z1⊕z2;
dimana, z1←0xf2 dan z2←0111;
Tunjukkan tampilan jalannya program.
Solusi:
Algoritma dan pemrograman C++: Tampilan jalannya program:
Algoritma Matematika Informasi:
0xf2 : 011 110 010
0111 : 001 001 001 ⊕
DEC(187)←010 111 011
sehingga, z3=DEC(187);
Kasus: Tuliskan algoritma dan pemrograman C++ untuk mendapatkan c, jika diketahui
statement berikut:
c ← a≠b;
dimana, a←DEC(21) dan b←DEC(-91);
Tunjukkan tampilan jalannya program.
Solusi:
Algoritma dan pemrograman C++: Tampilan jalannya program:
jika dituliskan expression: a≠≠≠≠b, dan hasilnya ditampungkan ke c maka nilai c
bernilai TRUE (nilai TRUE direpresentasikan dengan DEC(1)); karena DEC(21)
tidak sama dengan DEC(-91).
Kasus: Sebuah variabel, t2, menampung hasil dari statement: {DEC(42) < 0x2A} • {0110 >
23h} + {(01101)2 ≥ DEC(21)}. Tuliskan konstruksi-algoritma untuk menentukan isi
variabel tersebut, dan buktikan dengan algoritma dan pemrograman C++. Sertakan
dengan tampilan jalannya program.
Solusi: Oleh sebab pada expression terdapat bilangan bukan basis-10 (decimal), maka terlebih
dahulu ditransformasikan ke dalam decimal agar memudahkan melihat hirarki nilai
bilangannya.
0x2A = (2)(16) + (10)(1) = 32+10 = DEC(42)
0110 = (1)(64) + (1)(8) + 0 = 64+8 = DEC(72)
23h = (2)(16) + (3)(1) = 32+3 = DEC(35)
(01101)2 = (1)(8) + (1)(4) + 0 + (1)(1) = DEC(13)
Konstruksi-algoritma:
Nilai FALSE direpresentasikan dengan DEC(0), sehingga t2 berisi nilai DEC(0).
Konstruksi-algoritma:
lanjutan...
Algoritma dan pemrograman C++: Tampilan jalannya program:
Kasus: Sebuah variabel z yang berperan sebagai operand-hasil menampung statement:
z ← a1 + a2 • a3; dimana masing-masing isi variabel a1, a2, dan a3 dituliskan berikut
ini:
a1 ← {0x7 ≤ DEC(-12)};
a2 ← {DEC(-12) > DEC(-12)};
a3 ← {DEC(10) ≠ ah};
Tuliskan konstruksi-algoritma untuk menentukan isi z, dan buktikan dengan algoritma
dan pemrograman C++. Sertakan dengan tampilan jalannya program.
Solusi: Dalam menuliskan sebuah algoritma dan pemrograman dapat dilakukan dengan
berbagai cara, dan hal ini dapat diterima dengan alasan sebuah algoritma tersebut
pada dasarnya adalah bersifat unik; namun tetap harus berdasar konstruksi persoalan
yang disajikan. Setiap expression bernilai bukan dalam decimal, terlebih dahulu
ditransformasikan ke dalam decimal.
Konstruksi-algoritma:
a1 ← {0x7 ≤ DEC(-12)};
0x7 = (7)(1) = DEC(7)
sehingga:
a1 ← {DEC(7) ≤ DEC(-12)};
maka nilai a1 bernilai FALSE
a2 ← {DEC(-12) > DEC(-12)};
sehingga:
maka nilai a2 bernilai FALSE
a3 ← {DEC(10) ≠ ah};
ah=0xa= (10)(1) = DEC(10)
sehingga:
a3 ← {DEC(10) ≠ DEC(10)};
maka nilai a3 bernilai FALSE
lanjutan...Dituliskan kembali statement tersebut menjadi:
z ← a1 + a2 • a3;
z ← FALSE + FALSE • FALSE;
z = FALSE;
Nilai FALSE direpresentasikan dengan DEC(0), sehingga z berisi nilai
DEC(0).
Keterangan:
+ : OR
• : AND
FALSE + FALSE
FALSE
Alternatif-1
Algoritma dan pemrograman C++: Tampilan jalannya program:
lanjutan...
Alternatif-2
Algoritma dan pemrograman C++: Tampilan jalannya program: