Anda di halaman 1dari 41

PRAKTIKUM 9

Looping : For
A. Dasar Teori
Mengulang suatu proses merupakan tindakan yang
dijumpai dalam pemrograman. Pada semua bahasa pemrograman,
pengulangan proses ditangani dengan suatu mekanisme yang
Dengan menggunakan loop, suatu proses yang berulang
misalnya menampilkan tulisan yang sama seratus kali pada
layar dapat diimpelementasikan dengan kode program yang
pendek.

banyak
disebut

loop.

Pada pemrograman proses perulangan dapat dibagi menjadi 2


bagian utama yaitu:
1. Perulangan yang sudah di ketahui jumlah perulangannya
sebelum perulangan tersebut dilakukan.
2. Perulangan yang belum di ketahui jumlah perulangannya
sebelum perulangan tersebut di lakukan. Dalam hal ini dapat
dibagi menjadi dua bagian yaitu:
a) kondisi perulangan diperiksa diawal perulangan.
b) kondisi perulangan diperiksa diakhir perulangan.
Untuk kasus 1 seharusnya menggunakan perulangan dengan penyataan for . Sedangkan pada
kasus 2a dan 2b akan menggunakan pernyataa while atau do while.
Bentuk pernyataan for :
for (ungkapan1; ungkapan2; ungkapan3)
pernyataan;

Keterangan:
Ungkapan1 : digunakan untuk memberikan inisialisasi terhadap variabel pengendali loop.
Ungkapan2 : dipakai sebagai kondisi untuk keluar dari loop.
Ungkapan3 : dipakai sebagai pengatur kenaikan nilai variabel pengendali loop.
Ketiga ungkapan dalam for tersebut harus dipisahkan dengan tanda titik koma (;).
Dalam hal ini pernyatan bisa berupa pernyataan tunggal maupun jamak. Jika pernyataannya
terbentuk jamak, maka pernyataan-pernyataan tersebut harus diletakkan di antara kurung kurawal
buka ({) dan kurung kurawal tutup (}), sehingga formatnya menjadi :
for (ungkapan1; ungkapan2; ungkapan3)
{
pernyataan;
pernyataan;
.
.
.
}

Laporan Praktikum Konsep Pemrograman Pengulangan | Rendra Budi Hutama | 2110131036

Halaman 1

B. Tugas Pendahuluan
C.
D. Buatlah desain flowchart untuk setiap soal dalam percobaan

E.
1. Program penampil bilangan ganjil
F.
a. Algoritma
G.
H. Deklarasikan i dan n sebagai bilangan bulat
I.
1. Inisiasi nilai i dengan 1
2. Baca nilai n
3. Jika i kurang dari 2 * n maka lakukan langkah 4, jika
tidak maka program langsung selesai
4. Cetak nilai dari i
5. Tambahkan i dengan angka 2 kemudian simpan di i,
kembali ke langkah 3
J.
b. Flowchart
K.
L.

M.
N.
O.
P.
Q.
R.
S.
T.

START

i=1

READ
n

IF
i < 2*n

Y
PRINT
i

i=i+2

END

2. Program Penghitung Bilangan Triangular


U.
a. Algoritma
V. Deklarasikan i, bil dan jum sebagai bilangan bulat.
W.
1. Inisiasi nilai awal jum dengan 0
2. Masukkan bilangan
3. Berikan nilai bil kepada i
4. Jika i < 0 maka lakukan langkah 5 7 bila tidak langsung
lakukan langkah 8
5. Cetak nilai i
6. Kurangi i dengan 1, dan simpan hasilnya di i lagi
7. Tambahkan jum dengan i, dan simpan hasilnya di jum lagi
X.
Kembali ke langkah 4
8. Cetak nilai jum
Y.
b. Flowchart

START

jum = 0

READ
bil

i = bil

IF
i<0

Y
PRINT
i

i=i-1

jum = jum + i

PRINT
jum

END

Laporan Praktikum Konsep Pemrograman Pengulangan | Rendra Budi Hutama | 2110131036

Halaman 2

Z.
AA.
3. Program Penampil Abjad
AB.
a. Algoritma
AC. Deklarasikan i, bil dan jum sebagai bilangan bulat.
AD.
1. Inisiasi nilai awal i dengan 90
2. Jika i >= 45 maka lakukan langkah 3-4 bila tidak maka
program akan langsung selesai.
3. Cetak nilai i sebagai huruf sesuai kode ASCIInya.
4. Kurangi i dengan 1 dan simpan hasilnya di i kembali
AE.
Kembali ke langkah 2
AF.
b. Flowchart
AG.
AH.
AI.
AJ.
AK.
AL.
AM.
AN.
4. Program Penampil Bilangan Positif Negatif Berurutan
AO.
a. Algoritma
AP. Deklarasikan i dan n sebagai bilangan bulat
AQ.
1. Inisiasi nilai i dengan 1
2. Baca nilai n
3. Jika i kurang dari n maka lakukan langkah 4,
jika tidak maka program langsung selesai
i=i+2
4. Jika sisa bagi antara i dan 2 adalah nol, maka
tampilkan hasil kali i dengan -1 bila tidak
tampilkan i saja
5. Tambahkan i dengan angka 1 kemudian
simpan di i, kembali ke langkah 3
AR.
b. Flowchart
PRINT
AS.
i
AT.

START

i = 90

IF
i>= 65
N
Y
PRINT
i sbg char

i=i+1

END

START

i=1

READ
n

IF
i <= n
Y

IF
i % 2 == 0

AU.

PRINT
I * -1

AV.
AW.

END

Laporan Praktikum Konsep Pemrograman Pengulangan | Rendra Budi Hutama | 2110131036

Halaman 3

5. Program Pengecek Bilangan Prima


AX.
a. Algoritma
AY.
AZ. Deklarasikan isPrima dan i, bil sebagai
bilangan bulat
BA.
1. Inisiasi nilai isPrima dengan 1 (True)
2. Masukkan nilai bil.
3. Berikan nilai bil - 1 kepada i
4. Jika i < 0 maka lakukan langkah 5 7, bila
tidak langsung lakukan langkah 7
5. Jika sisa bagi bil dengan i sama dengan nol
atau nilai bil sama dengan 1 maka ubah
nilai isPrima menjadi 0 (False) dan
langsung menuju ke langkah 10
6. Kurangi i dengan 1, dan simpan hasilnya di
i lagi
BB.
Kembali ke langkah 4
7. Jika nilai isPrima sama dengan 1(True)
maka cetak Bilangan Prima, bila tidak
maka cetak Bukan Prima
BC.
b. Flowchart
BD.

START

isPrima = 1

READ
bil

i = bil - 1

IF
i<0

Y
i=i-1

IF
Bil % 2
== 0
Y
isPrima = 0

PRINT

Bukan Prima

IF
isPrima
== 1
Y

END

Laporan Praktikum Konsep Pemrograman Pengulangan | Rendra Budi Hutama | 2110131036

PRINT
Bilangan Prima

Halaman 4

BE.
6. Program Penghitung Indeks Prestasi Sementara
BF.
a. Algoritma
START
BG.
1. Inisiasi nilai awal i
i=1
dengan 1
2. Masukkan nilai n
READ
(banyaknya nilai)
n
3. Berikan nilai n ke i
4. Jika nilai i <= 5 maka
lakukan langkah 5 - ?,
i=n
bila tidak langsung
langkah ?
N
5. Masukkan nilaiHuruf
Y
dan banyaknya jam
IF
6. Konversi nilai huruf
i <= 5
menjadi nilai angka sesuai
kriteria A -> 4, B->3,
i=i+1
C->2, D->1, E->0
READ
7. Hitung jumlah nilai dalam
nilaiHuruf, jumlahJam
jam(jumNilaiJam)
dengan menjumlahkan
jumlah nilai
a
jam(jumNilaiJam)
dengan perkalian nilai
b
angka dan jam kemudian
simpan nilainya di
jumNilaiJam
jumNilaiJam = jumNilaiJam + nilaiAngka * jam;
jumJam = jumJam + jam;
8. Hitung jumlah
jam(jumJam) dengan
menambahkan jumlah
jam ditambah jam dan
PRINT
ips = jumNilaiJam/jumJam
END
ips
simpan hasilnya
jummJam
9. Tambahkan nilai i dengan 1 simpan hasilnya di i lagi
BH.
Kembali ke langkah 4
10. Hitung ips dengan membagi jumlah nilai jam (jumNilaiJam) dengan jumlah
jam(jumJam)
11. Tampilkan nilai ips ke layar
BI.
BJ.

Laporan Praktikum Konsep Pemrograman Pengulangan | Rendra Budi Hutama | 2110131036

Halaman 5

b. Flowchart
BK.
nilaiAngka = 0

BL.

BM. Percobaan
BN.
1. Gunakan loop for untuk membuat program sebagai berikut:
BO.
input : n
BP.
output : 1 3 4 5 m ( m = bilangan ganjil ke n)
BQ.
a. Listing Program
BR.
BS.
BT.
BU.
BV.
BW.
BX.
BY.
BZ.
CA.
CB.
CC.
CD.
CE.
CF.
CG.
CH.
CI.
CJ.
CK.
CL.
CM.
CN.
CO.

#include <stdio.h>
main()
{
int i,n;
printf("PRAKTIKUM 9 SOAL 1\nRENDRA | 2110131036 | 1D4ITB\n");
printf("\n======================================== \n\n");
printf("PROGRAM PENAMPIL BILANGAN GANJIL\n");
printf("\n======================================== \n");
printf("\nMasukkan jumlah bilangan ganjil : ");
scanf("%d",&n);
printf("\nHasil pengulangan : ");
n = n * 2;
for(i=1;i<n;i+=2)
{
printf("%d ",i);
}
printf("\n");
}

b. Capture Program
CP.
CQ.

CR.
c. Analisis Program
CS.
CT. Sejatinya, bilangan ganjil merupakan bilangan yang tidak habis dibagi dengan
bilangan dua. Namun, dengan cara lain, bilangan ganjil juga dapat kita peroleh dengan
menambah 2 (i+=2) tiap bilangan secara terus menerus mulai dari bilangan 1. Agar
banyaknya bilangan ganjil yang dapat ditampilkan dapat dibatasi, maka di control loop
diberikan batas yaitu sebanyak 2 kali n sehingga jumlah bilangan ganjil sesuai dengan
jumlah(n) yang kita inputkan karena pada looping ini sendiri memiliki step sebanyak 2
2 tiap loop.
CU.

2. Hitunglah bilangan triangular dari masukan pengguna, yang dibaca dari keyboard
dengan menggunakan scanf(). Bilangan triangular adalah penjumlahan dari bilangan
CV.
masukan dengan seluruh bilangan sebelumnya.
CW.
CX.
Contoh
CY.
Input
:7
CZ.
Output
: 7 + 6 + 5 + 4 + 3 + 2 + 1 = 28
DA.
a. Listing Program
DB.
DC.
DD.
DE.
DF.
DG.
DH.
DI.
DJ.
DK.
DL.
DM.
DN.
DO.
DP.
DQ.
DR.
DS.
DT.
DU.
DV.
DW.
DX.
DY.
DZ.
EA.
EB.

#include <stdio.h>
main()
{
int i,bil,jum = 0;
printf("PRAKTIKUM 9 SOAL 2\nRENDRA | 2110131036 | 1D4ITB\n");
printf("\n======================================== \n\n");
printf("PROGRAM PENGHITUNG BILANGAN TRIANGULAR\n");
printf("\n======================================== \n");
printf("\nMasukkan bilangan : ");
scanf("%d",&bil);
printf("\nHasil pengulangan : ");
for(i=bil;i>0;i--)
{
printf("%d ",i);
jum = jum + i;
if(i != 1)
printf("+ ");
}
printf("= %d \n",jum);
}

b. Capture Program
EC.
ED.

EE.
c. Analisis Program
EF.
EG. Untuk menampilkan bilangan triangular seperti 5 + 4 + 3 + 2 + 1 = 28, kita dapat
menggunakan looping atau pengulangan, dimana looping tersebut adalah looping
menurun dengan operator decrement. Pertama kita harus tahu bilangan maksimal yang
diinputkan kemudian bilangan tersebut kita jadikan patokan nilai awal looping.
Selanjutnya bilangan tadi di-loop hingga bilangan tersebut habis atau sama dengan nol,
di setiap loop / putaran, bilangan tersebut dijumlah dengan bilangan sebelumnya dan
pada akhirnya total dri seluruh penjumlahan tadi dapat kita peroleh dan tampilkan.
EH.

3. Gunakan loop for dengan kenaikan varibel negatif untuk menampilkan seluruh karaker
dari Z sampai dengan A dalam baris-baris yang terpisah.
EI.
a. Listing Program
EJ.
EK.
EL.
EM.
EN.
EO.
EP.
EQ.
ER.
ES.
ET.
EU.
EV.
EW.
EX.
EY.
EZ.
FA.
FB.
FC.

#include <stdio.h>
main()
{
int i,bil,jum = 0;
printf("PRAKTIKUM 9 SOAL 3\nRENDRA | 2110131036 | 1D4ITB\n");
printf("\n======================================== \n\n");
printf("PROGRAM PENAMPIL ABJAD\n");
printf("\n======================================== \n");
printf("Diketahui A = %d dan Z = %d\n\n",'A','Z');
//ASCII Z = 90 dan A = 65
for(i=90;i>=65;i--)
printf("%c \n",i);
printf("\n");
}

b. Capture Program
FD.
FE.

FF.
c. Analisis Program
FG.
FH. Dalam bahasa C, setiap karakter memiliki bilangan ASCII sendiri. Untuk huruf
kapital, bilangan ASCII karakter A adalah 65 sedangkan Z adalah 90. Maka dari itu,
untuk menampilkan abjad secara terbalik dari Z ke A, kita dapat melakukan looping
secara menurun / decreement dari bilangan 90 hingga 65, kemudian bilangan tersebut
dapat ditampilkan langsung namun harus diformat sebagai karakter.
FI.

4. Gunakan loop for untuk membuat program sebagai berikut:


FJ.
input : n
FK.
output : 1 -2 3 -4 5 -6 7 -8 n
FL.
a. Listing Program
FM.
FN. #include <stdio.h>
FO.
FP. main()
FQ. {
FR.
int i,n;
FS.
FT.
printf("PRAKTIKUM 9 SOAL 4\nRENDRA
| 2110131036 |
1D4ITB\n");
FU.
printf("\n======================================== \n\n");
FV.
printf("PROGRAM PENAMPIL BILANGAN POSTIF NEGATIF\n");
FW.
printf("\n======================================== \n");
FX.
FY.
printf("\nMasukkan jumlah bilangan : ");
FZ.
scanf("%d",&n);
GA.
GB.
printf("\nHasil pengulangan : ");
GC.
for(i=1;i<=n;i++)
GD.
{
GE.
if(i % 2 == 0)
GF.
printf("%d ",i*-1);
GG.
else
GH.
printf("%d ",i);
GI.
}
GJ.
printf("\n");
GK. }

GL.
b. Capture Program
GM.
GN.

GO.
c. Analisis Program
GP.
GQ. Sebenarnya program ini adalah program penampil bilangan biasa, namun ada
perbedaan di bilangan kelipatan dua, yaitu bilangan tesebut menjadi bilangan negatif.
Untuk melakukan hal tersebut maka di dalam looping for kita perlu menyisipkan
decision if dimana jika bilangan tersebut habis dibagi 2 maka bilangan tersebut akan
dikalikan dengan (-1) sehingga bilangan tersebut menjadi bilangan negatif, sedangkan
apabila tidak habis dibagi 2, bilangan tesebut dapat langsung ditampilkan.
GR.

5. Gunakan loop for untuk mendefinisikan apakah sebuah bilangan adalah bilangan pima
GS.
atau bukan
GT.
input : 27
GU.
output : Bilangan adalah bilangan prima
GV.
a. Listing Program
GW.
GX.
GY.
GZ.
HA.
HB.
HC.
HD.
HE.
HF.
HG.
HH.
HI.
HJ.
HK.
HL.
HM.
HN.
HO.
HP.
HQ.
HR.
HS.
HT.
HU.
HV.
HW.
HX.
HY.
HZ.

#include <stdio.h>
main()
{
int i,bil,isPrima = 1;
printf("PRAKTIKUM 9 SOAL 5\nRENDRA | 2110131036 | 1D4ITB\n");
printf("\n======================================== \n\n");
printf("PROGRAM PENGECEK BILANGAN PRIMA\n");
printf("\n======================================== \n");
printf("\nMasukkan bilangan : ");
scanf("%d",&bil);
for(i=bil-1;i>1;i--)
{
if(bil % i == 0 || bil == 1 )
{
isPrima = 0;
break;
}
}
if(isPrima)
printf("\nBilangan %d ADALAH bilangan prima.\n",bil);
else
printf("\nBilangan %d BUKAN bilangan prima.\n",bil);
printf("\n\n");
}

IA.
b. Capture Program
IB.

IC.
c. Analisis Program
ID. Bilangan prima adalah bilangan yang hanya habis dibagi dengan bilangan 1 dan
bilangan itu sendiri. Dari definisi tersebut dapat kita aplikasikan ke dalam bahasa
pemrograman, yaitu untuk mendefiniskan suatu bilangan apakah prima atau tidak kita
dapat menggunakan looping for menurun sesuai dengan bilangan prima tadi hingga
bilangan 1, dimana di setiap loop / putaran kita akan coba apakah bilangan tersebut
habis dibagi dengan bilangan lain dibawahnya kecuali bilangan 1 atau tidak, apabila
habis dibagi, maka loop akan berhenti dan langsung dapat kita definisikan
bahwasannya bilangan tersebut bukanlah bilangan prima bila tidak ada satupun
bilangan di bawah bilangan tersebut yang membanginya habis, maka bilangan tersebut
adalah bilangan prima.
IE.

6. Dengan menggunakan looping dan switch case atau else if buatlah program dalam
C untuk menghitung Indeks Prestasi Semester seorang mahasiswa, dimana yang
diinputkan adalah nilai huruf dari 5 mata kuliah yang diikutinya dan jumlah jam mata
kuliah tsb. Dimana konversi nilai huruf ke angka untuk menghitung IPS adalah sebagai
berikut: A -> 4, B->3, C->2, D->1, E->0 dan rumus IPS = jumlah (nilai *
jam)/jumlah jam keseluruhan.
IF.
a. Listing Program
IG.
IH.
II.
IJ.
IK.
IL.
IM.
IN.
IO.
IP.
IQ.
IR.
IS.
IT.
IU.
IV.
IW.
IX.
IY.
IZ.
JA.
JB.
JC.
JD.
JE.
JF.
JG.
JH.
JI.
JJ.
JK.
JL.
JM.
JN.
JO.
JP.
JQ.
JR.
JS.
JT.
JU.
JV.
JW.
JX.
JY.
JZ.
KA.
KB.
KC.
KD.
KE.
KF.
KG.
KH.
KI.
KJ.
KK.

b.

#include <stdio.h>
main()
{
int i;
float nilaiAngka, jam, jumNilaiJam = 0, jumJam = 0, ips;
char nilaiHuruf;
printf("PRAKTIKUM 9 SOAL 6\nRENDRA | 2110131036 | 1D4ITB\n");
printf("\n======================================== \n\n");
printf("PROGRAM PENGHITUNG INDEKS PRESTASI SEMENTARA\n");
printf("\n======================================== \n");
for(i=1;i<=5;i++)
{
fflush(stdin);
printf("\nMasukkan nilai huruf mata kuliah %d \t: ",i);
scanf("%c",&nilaiHuruf);
printf("Masukkan jumlah jam mata kuliah %d \t: ",i);
scanf("%f",&jam);
switch(nilaiHuruf)
{
case 'A':
case 'a' :
nilaiAngka
break;
case 'B':
case 'b':
nilaiAngka
break;
case 'C':
case 'c':
nilaiAngka
break;
case 'D':
case 'd':
nilaiAngka
break;
case 'E':
case 'e':
nilaiAngka
break;
}

= 4;

= 3;

= 2;

= 1;

= 0;

jumNilaiJam = jumNilaiJam + nilaiAngka * jam;


jumJam
= jumJam + jam;
printf("\n");
}
ips = jumNilaiJam / jumJam;
printf("\nIndeks Prestasi Sementara anda adalah %.2f",ips);
printf("\n\n");
}

b. Capture Program
KL.
KM.
a

KN.
c. Analisis Program
KO.
KP.Pada program ini, setiap looping akan meminta masukkan / input dari user berupa nilai
huruf dan jumlah jam dari sebuah mata kuliah. Agar nilai dapat diproses, maka harus
dikonversi terlebih dahulu menjadi nilai angka, yaitu dengan menggunakan pernyataan
switch. Baru setelah itu nilai dapat diolah sedemikian rupa sehingga dapat diketahui
output berupa indeks prestasi sementara dari siswa pemilik nilai-nilai tersebut.
KQ.

KR. Kesimpulan
KS.
1. Pernyataan for adalah salah satu pernyataan dalam bahasa permrograman yang
digunakan untuk menjalankan pengulangan.
2. Pengulangan dengan menggunakan pernyataan for membutuhkan 3 parameter yang
harus diketahui terlebih dahulu yaitu inisialisai, batas dan pengendali loop.
3. Pengulangan menggunakan for, dapat berupa pengulangan yang menurun atau menaik
sesuai dengan operator increment atau decrement yang kita gunakan.
4. Di dalam struktur pengulangan kita dapat memberikan statement-statement atau
pernyataan-pernyataan yang nantinya diulang sesuai dengan pengulangan atau
loopingnya.
5. Jika statemen yang dijalankan hanya satu, maka tidak membutuhkan kurung kurawal
{} bila lebih dari satu maka harus diberikan kurung kurawal sebagai penanda sebuah
blok statement.
KT.

KU. PRAKTIKUM 10
KV.

Looping : while, do while

KW.
A. Dasar Teori
KX.
KY.
Seperti yang sudah dijelaskan pada bab sebelumnya, bahwa perulangan yang
sudah diketahui berapa kali akan dijalankan, maka sebaiknya menggunakan perulangan for.
Sedangkan yang belum diketahui berapakali akan diulangi maka dapat menggunakan while atau
do-while. Menggunakan pernyataan while ketika kondisi perluangan diperiksa sebelum
menjalankan pernyataan dan menggunakan do_while ketika perulangan kodisiperulangan
tersebut diperiksa setelah mejalankan pernyataan.
KZ. Pada pernyataan while, pemeriksaan terhadap loop dilakukan di bagian awal
(sebelum tubuh loop). Pernyataan while akan diulangi terus selama kondisi bernilai benar,
atau diulangi selama kondisinya benar, jika kondisinya salah maka perulangan (loop)
dianggap selesai. Lebih jelasnya, bentuk pe rnyataan while adalah sebagai berikut :

LA.
LB.
dengan pernyataan dapat berupa pernyataan tunggal, pernyataan majemuk
ataupun pernyataan kosong. Dengan melihat gambar 10.1, tampak bahwa ada
kemungkinan pernyataan yang merupakan tubuh loop tidak dijalankan sama sekali,
yaitu kalau hasil pengujian kondisi while yang pertama kali ternyata bernilai salah.
LC.

Proses pengulangan terhadap pernyataan dijelaskan pada gambar 10.1.

LD.
LE.

B. Tugas Pendahuluan
LF.
1) Flowchart program menampilkan
LG.kecuali bilangan X
semua bilangan
(x besar). LH.

2) Flowchart program menjumlah


inputan beberapa data

LI.
LJ.

START
LK.
LL.
jum = 0
LM.
jwb = y
LN.
LO.

START

READ
huruf

LP.

3) Flowchart program mencari


jumlah, nilai maksimal, nilai minimal
dari inputan beberapa data

START

i=0
min = 0
max = 0
jum = 0
jwb = y

READ
n
READ
n

IF
huruf != X

N
Y
PRINT
huruf

jum = jum + bil


jum = jum + bil
READ
jwb
READ
jwb

END
IF

jwb == y

N
Y
READ
bil

PRINT
jum

IF
max < bil
||
max == 0

max = bil

IF
min > bil ||
min == 0

min = bil

END
IF

jwb == y

Y
READ
bil

PRINT
jum

END

5) Flowchart program mengitung


jumlah karakter dan spasi.

4) Flowchart program menampilkan


LQ.
deret angka 0 1 3 6 10 15 21. n
START

START

i=1
total = 0

jumHuruf = 0
jumSpasi = 0

READ
n

READ
huruf

IF
i <= n

IF
huruf ==

Y
Y

total = total + i;

JumHuruf++

jumSpasi++
PRINT
total

i=i+2

IF

huruf
!= \n

END

N
END

START

total = 25000k
sisa = total
i=1

7) Flowchart menghitung
lamanya bulan pencicilan biaya
haji

READ
cicilan, naik
i++

IF
sisa > 0

IF
i % 12
== 0

sisa =
total + total * naik /100

sisa =
sisa - cicilan

END

PRINT
i

LR.
LS.6) Flowchart program

menghitung jumlah angka dari


suatu bilangan
IF
kar == 1

START
N

angka = 1

jum = 0
IF
kar == 2

READ
kar

IF
kar == 3

jum = jum + angka

PRINT
kar

IF
kar == 4

IF
kar == 5

IF

huruf
!= \n

N
PRINT
kar

IF
kar == 6

IF
kar == 7

angka = 2

angka = 3

angka = 4

angka = 5
Y

angka = 6
Y

END
N

IF
kar == 8

IF
kar == 9

angka = 7

angka = 8
Y

angka = 9

angka = 0

C. Percobaan
LT.
1. Gunakan loop while untuk membuat program yang dapat menampilkan semua
karakter yang diketikkan di keyboard sampai yang diketikkan pada keybord huruf X (x
besar).
LU.
a. Listing Program
LV.
LW.
#include <stdio.h>
LX.
LY.
main()
LZ.
{
MA.
char huruf;
MB.
MC.
printf("PRAKTIKUM 10 SOAL 1\nRENDRA
| 2110131036 |
1D4ITB\n");
MD.
printf("\n======================================== \n\n");
ME.
printf("PROGRAM BERHENTI KETIKA X DITEKAN\n");
MF.
printf("\n======================================== \n");
MG.
MH.
printf("\nKetik sembarang karakter kemudian Enter : \n");
MI.
MJ.
huruf = getchar();
MK.
ML.
while(huruf != 'X')
MM.
{
MN.
huruf = getchar();
MO.
}
MP.
MQ.
printf("Program dihentikan karena anda menginputkan karakter
X\n");
MR.
}

MS.
b. Capture Program
MT.
MU.

MV.
c. Analisis Program
MW.
MX.
Pada program ini, pengulangan while akan melakukan seleksi terhadap
masukkan yang diinputkan user. Pengulangan while akan terus dijalankan selama
kondisi benar yaitu ketika karakter yang dimasukkan tidak sama dengan X (x besar).
MY.
2. Gunakan loop while untuk membuat program yang dapat mencari total angka yang
dimasukkan.
MZ.
a. Listing Program
NA.
NB.
#include <stdio.h>
NC.
ND.
main()
NE.
{
NF.
int i = 1, jum = 0, bil;
NG.
char jwb;
NH.
NI.
printf("PRAKTIKUM 10 SOAL 2\nRENDRA
| 2110131036 |
1D4ITB\n");
NJ.
printf("\n======================================== \n\n");
NK.
printf("PROGRAM PENJUMLAH BILANGAN\n");

NL.
NM.
NN.
NO.
NP.
NQ.
NR.
NS.
NT.
NU.
NV.
NW.
NX.
NY.
NZ.
OA.
OB.
OC.
OD.
OE.

printf("\n======================================== \n");
do
{
fflush(stdin);
printf("\nMasukkan bilangan ke %d \t = ",i);
scanf("%d", &bil);
jum = jum + bil;
printf("Mau coba lagi [Y/T]? ");
fflush(stdin);
scanf("%c",&jwb);
i++;
} while(jwb == 'Y' || jwb == 'y');
printf("\nHasil penjumlahan diatas adalah %d",jum);
}

OF.

b. Capture Program
OG.
OH.

OI.
c. Analisis Program
OJ.
OK.
Karena program ini setidaknya harus dijalankan minimal sekali, maka jenis
pengulangan yang cocok adalah pengulangan do while. Untuk setiap kali
pengulangan, program akan meminta untuk menginputkan bilangan, dari setiap
pengulangan tadi akan dilakukan operasi penjumlahan. Ketika pengulangan berhenti,
yaitu ketika user memasukkan karakter T, hasil penjumlahan dari semua bilangan
yang dimasukkan tadi dapat ditampilkan segera.
OL.
OM.

3. Pada program no 2 tambahkan rata-rata, maksimum dan minimum dari angka yang
dimasukkan.
ON.
a. Listing Program
OO.
OP.
#include <stdio.h>
OQ.
OR.
main()
OS.
{
OT.
int i = 1, jum = 0, rata = 0, min=0, max=0, bil;
OU.
char jwb = 'y';
OV.
OW.
printf("PRAKTIKUM 10 SOAL 3\nRENDRA
| 2110131036 |
1D4ITB\n");
OX.
printf("\n======================================== \n\n");
OY.
printf("PROGRAM PENJUMLAH BILANGAN\n");
OZ.
printf("\n======================================== \n");
PA.
PB.
while(jwb == 'Y' || jwb == 'y')
PC.
{
PD.
fflush(stdin);

PE.
PF.
PG.
PH.
PI.
PJ.
PK.
PL.
PM.
PN.
PO.
PP.
PQ.
PR.
PS.
PT.
PU.
PV.
PW.
PX.
PY.
PZ.
QA.
QB.
QC.

printf("\nMasukkan bilangan ke %d \t = ",i);


scanf("%d", &bil);
jum = jum + bil;
if(max < bil || max == 0)
max = bil;
if(min > bil || min == 0)
min = bil;
printf("Mau coba lagi [Y/T]? ");
fflush(stdin);
scanf("%c",&jwb);
i++;
}
rata = jum / (i -1);
printf("\nTotal bilangan \t= %d",jum);
printf("\nRata-rata \t= %d",rata);
printf("\nNilai Minimal \t= %d",min);
printf("\nNilai Maksimal \t= %d",max);
}

QD.
b. Capture Program
QE.
QF.

QG.
c. Analisis Program
QH.
QI.
Sama dengan soal no 2, bedanya disini kita harus mencari nilai maksimal,
minimum dan rata-rata. Untuk memperoleh nilai maksimal kita banding-bandingkan
nilai yang dimasukkan setiap pengulangan. Jika nilai yang dimasukkan lebih besar
dari nilai maksimal sebelumnya maka nilai maksimal adalah nilai tersebut. Apabila
nilai yang dimasukkan lebih kecil daripada nilai minimal sebelumnya yang ada, maka
nilai minimal adalah nilai tersebut. Sedangkan nilai rata-rata didapat dari jumlah
semua bilangan yang kemudian dibagi dengan jumlah pengulangan.
QJ.
QK.

4. Dengan menggunakan pernyataan looping, buatlah program berikut:


QL. Input
:
n
QM. output
:
0 1 3 6 10 15 21 28 . Bilangan ke n
QN.
a. Listing Program
QO.
QP.
#include <stdio.h>
QQ.
QR.
main()
QS.
{
QT.
int i,n,total=0;
QU.
printf("PRAKTIKUM 10 SOAL 4\nRENDRA
| 2110131036 |
1D4ITB\n");
QV.
printf("\n======================================== \n\n");
QW.
printf("PROGRAM PENAMPIL BARIS GEOMETRI\n");
QX.
printf("\n======================================== \n");
QY.
QZ.
printf("\nMasukkan jumlah bilangan : ");
RA.
scanf("%d",&n);
RB.
RC.
printf("\nHasil pengulangan : ");
RD.
for(i=0;i<n;i++)
RE.
{
RF.
total = total + i;
RG.
printf("%d ",total);
RH.
}
RI.
printf("\n");
RJ.
}

RK.
b. Capture Program
RL.
RM.

RN.
c. Analisis Program
RO.
RP.
Pada program ini, step atau langkah tiap pengulangan dimodifikasi
sehingga di setiap perulangan step atau langkah bertambah 1. Dengan cara tersebut
maka akan dapat ditampilkan deret seperti diatas.
RQ.
5. Gunakan while pada program yang digunakan untuk menghitung banyaknya karakter
dari kalimat yang dimasukkan melalui keyboard (termasuk karakter spasi). Untuk
mengakhiri pemasukan kalimat, tombol ENTER (\n) harus ditekan
RR.
RS. Input
: Ketikkan sembarang kalimat
RT. Output :
RU.
RV. jumlah karakter
=
m
RW. jumlah spasi
=
n
RX.

a. Listing Program
RY.
RZ.
#include <stdio.h>
SA.
SB.
main()
SC.
{
SD.
char karakter;
SE.
int jum = 0,jumspasi=0;
SF.
SG.
printf("PRAKTIKUM 10 SOAL 5\nRENDRA
| 2110131036 |
1D4ITB\n");
SH.
printf("\n======================================== \n\n");
SI.
printf("PROGRAM PENGHITUNG JUMLAH KARAKTER\n");
SJ.
printf("\n======================================== \n");
SK.
printf("\nMasukkan kalimat sembarang = ");
SL.
do
SM.
{
SN.
scanf("%c",&karakter);
SO.
SP.
if(karakter == ' ')
SQ.
jumspasi++;
SR.
else
SS.
jum++;
ST.
SU.
} while(karakter != '\n');
SV.
SW.
printf("\nJumlah semua karakter \t = %d",jum);
SX.
printf("\nJumlah karakter spasi \t = %d",jumspasi);
SY.
}

SZ.
b. Capture Program
TA.
TB.

TC.
c. Analisis Program
TD.
TE.
Penggunaan do while pada program ini difungsikan sebagai pengulangan
untuk setiap karakter atau spasi yang dimasukkan user. Untuk setiap pengulangan,
program akan mencatat dan menghitung jumlah karakter atau spasi yang diinputkan
secara increment. Ketika pengulangan selesai atau ketika user menekan [Enter],
program akan menampilkan jumlah dari karakter dan spasi yang dimasukkan tadi.
TF.

6. Buatlah program untuk menghitung jumlah angka dari suatu bilangan.


TG. Contohnya : Jumlah angka dari bilangan 3255 = 3 + 2 + 5 + 5 = 15
TH. Jumlah angka dari bilangan 4589 = 4 + 5 + 8 + 9 = 26
TI.
dan sebagainya
TJ.
.
a. Listing Program
TK.
TL. #include <stdio.h>
TM.
TN. main()
TO. {
TP.
char kar;
TQ.
int i,angka,jum = 0;
TR.
TS.
printf("PRAKTIKUM 10 SOAL 6\nRENDRA | 2110131036 | 1D4ITB\n");
TT.
printf("\n======================================== \n\n");
TU.
printf("PENGHITUNG JUMLAH ANGKA SUATU BILANGAN\n");
TV.
printf("\n======================================== \n");
TW.
TX.
printf("\nMasukkan bilangan\t = ");
TY.
TZ.
i = 1;
UA.
do
UB.
{
UC.
kar = getchar();
UD.
UE.
switch(kar)
UF.
{
UG.
case '1': angka = 1; break;
UH.
case '2': angka = 2; break;
UI.
case '3': angka = 3; break;
UJ.
case '4': angka = 4; break;
UK.
case '5': angka = 5; break;
UL.
case '6': angka = 6; break;
UM.
case '7': angka = 7; break;
UN.
case '8': angka = 8; break;
UO.
case '9': angka = 9; break;
UP.
case '0': angka = 0; break;
UQ.
}
UR.
US.
if(kar != '\n')
UT.
{
UU.
jum = jum + angka;
UV.
if(i != 1)
//Menghilangkan + pada angka pertama
UW.
printf("+ ");
UX.
printf("%d ", angka);
UY.
i++;
UZ.
}
VA.
VB.
} while(kar != '\n');
VC.
printf("\b \b = %d \n\n",jum);
VD. }
VE.

b. Capture Program
VF.
VG.

VH.
c. Analisis Program
VI.
VJ. Untuk melakukan operasi jumlah angka suatu bilangan, hal yang perlu kita
lakukan adalah membaca inputan bilangan user karakter per karakter dahulu.

Kemudian dari tiap karakter tadi kita konversi menjadi bilangan atau integer
menggunakan decision switch sehingga dapat kita hitung dan ketahui jumlah dari tiap
angka di bilangan tersebut.
VK.
7. Seorang mau menabung untuk pembiayaan ibadah hajinya. Biaya ibadah haji saat ini
senilai a juta. Jika tiap bulan dia mampu menabung sebesar b rupiah. Dengan program
anda yang menggunakan fungsi, bantulah orang ini untuk menghitung berapa bulan
dia butuhkan agar biaya hajinya bisa terpenuhi. Yang menjadikan masalah ini tidak
dapat diselesaikan dengan pembagian langsung a/b adalah bahwa setiap tahun biaya
haji naik rata-rata c% dari biaya awal (a). Nilai a, b, c dimasukkan oleh user.
VL.
a. Listing Program
VM.
VN.
#include <stdio.h>
VO.
VP.
main()
VQ.
{
VR.
float total,cicilan,kenaikan,sisa;
VS.
int i = 0;
VT.
VU.
printf("PRAKTIKUM 10 SOAL 7\nRENDRA
| 2110131036 |
1D4ITB\n");
VV.
printf("\n======================================== \n\n");
VW.
printf("PROGRAM PENGHITUNG LAMA CICILAN HAJI\n");
VX.
printf("\n======================================== \n");
VY.
VZ.
printf("\nMasukkan total biaya haji\t = Rp.");
WA.
scanf("%f",&total);
WB.
printf("\nMasukkan cicilan tiap bulan\t = Rp.");
WC.
scanf("%f",&cicilan);
WD.
printf("\nMasukkan prosentase kenaikan tiap tahun = ");
WE.
scanf("%f",&kenaikan);
WF.
WG.
sisa = total;
WH.
while(sisa > 0)
WI.
{
WJ.
i++;
WK.
if(i % 12 == 0)
WL.
sisa = sisa + (total * (kenaikan / 100));
WM.
sisa = sisa - cicilan;
WN.
}
WO.
WP.
printf("\nWaktu yang dibutuhkan untuk melunasi biaya haji
adalah %d bulan",i);
WQ.
}
WR.

b. Capture Program
WS.
WT.

WU.
WV.
WW.
c. Analisis Program

WX.
WY.
Seseorang dikatakan lunas membayar apabila sisa pinjamannya tidak lebih
dari nol Untuk menghitung jumlah bulan pelunasan seperti ini, kita dapat
menggunakan pengulangan do while yaitu pengulangan sampai sisa pinjaman habis.
Perlakuan khusus dengan pernyataan if diberikan tiap bulan ke-12, karena pada bulan
tersebut jumlah pinjaman meningkat sebanyak n % dari jumlah total pinjaman
sehingga menyebabkan proses pelunasan menjadi lebih lama.
WZ.

D. Tugas Tambahan
XA.
1. Tambahkan program yang ada pada soal no 4 dengan menghitung huruf kecil, huruf
besar dan karakter angka.
XB.
a. Listing Program
XC.
XD.
#include <stdio.h>
XE.
XF.
main()
XG.
{
XH.
char karakter;
XI.
int jumspasi=0,jumupp=0,jumlow=0,jumint=0;
XJ.
XK.
printf("PRAKTIKUM 10 SOAL Tambahan\nRENDRA |
2110131036 | 1D4ITB\n");
XL.
printf("\n========================================
\n\n");
XM.
printf("PROGRAM PENGHITUNG JUMLAH KARAKTER\n");
XN.
printf("\n========================================
\n");
XO.
XP.
printf("A = %d, Z = %d, a = %d, z = %d, 0 = %d, 9 = %d
\n",'A','Z','a','z','0','9');
XQ.
printf("\nMasukkan kalimat sembarang = ");
XR.
do
XS.
{
XT.
scanf("%c",&karakter);
XU.
XV.
if(karakter == ' ')
XW.
jumspasi++;
XX.
else if(karakter <= 90 && karakter >= 65)
XY.
jumupp++;
XZ.
else if(karakter <= 122 && karakter >= 97)
YA.
jumlow++;
YB.
else if(karakter <= 57 && karakter >= 48)
YC.
jumint++;
YD.
YE.
}
while(karakter != '\n');
YF.
YG.
printf("\nJumlah semua karakter \t = %d",jumspasi +
jumupp + jumlow + jumint);
YH.
printf("\nJumlah karakter spasi \t = %d",jumspasi);
YI.
printf("\nJumlah karakter kapital\t = %d",jumupp);
YJ.
printf("\nJumlah karakter kecil \t = %d",jumlow);
YK.
printf("\nJumlah karakter angka \t = %d",jumint);
YL.
}

YM.
YN.
YO.
YP.
b. Capture Program
YQ.

YR.

YS.
c. Analisis Program
YT.
YU.
Hampir sama dengan soal no 5, soal ini adalah pengembangannya dimana
setiap inputan yang berupa karakter kita seleksi menggunakan decision if sesuai
dengan nilai ASCII masing-masing karakter.
YV.
2. Untuk soal no.6 jika nilai c adalah kenaikan dari tahun sebelumnya dan setiap 6 bulan
sekali dia mendapatkan bonus gaji sebesar d ribu yang selalu dia gunakan untuk
menambah tabungan hajinya berapa bulan dia butuhkan agar biaya hajinya terpenuhi?
YW.
a. Listing Program
YX.

YY.
#include <stdio.h>
YZ.
ZA.
main()
ZB.
{
ZC.
float total,cicilan,kenaikan,bonus,sisa;
ZD.
int i = 0;
ZE.
ZF.
printf("PRAKTIKUM 10 SOAL 7\nRENDRA | 2110131036 |
1D4ITB\n");
ZG.
printf("\n========================================
\n\n");
ZH.
printf("PROGRAM PENGHITUNG LAMA CICILAN HAJI\n");
ZI.
printf("\n========================================
\n");
ZJ.
ZK.
printf("\nMasukkan total biaya haji\t = Rp.");
ZL.
scanf("%f",&total);
ZM.
printf("\nMasukkan cicilan tiap bulan\t = Rp.");
ZN.
scanf("%f",&cicilan);
ZO.
printf("\nMasukkan prosentase kenaikan tiap tahun =
");
ZP.
scanf("%f",&kenaikan);
ZQ.
printf("\nMasukkan bonus gaji tiap 6 bulan\t = Rp. ");
ZR.
scanf("%f",&bonus);
ZS.
ZT.
ZU.
sisa = total;
ZV.
while(sisa > 0)
ZW.
{
ZX.
i++;
ZY.
if(i % 12 == 0)
ZZ.
sisa = sisa + (total * (kenaikan / 100));
AAA.
if(i % 6 == 0)
AAB.
sisa = sisa - bonus;
AAC.
AAD.
sisa = sisa - cicilan;
AAE.
}
AAF.

AAG.
printf("\nWaktu yang dibutuhkan untuk melunasi biaya
haji adalah %d bulan",i);
AAH.
AAI.
}

AAJ.
b. Capture Program
AAK.
AAL.

AAM.
c. Analisis Program
AAN.
AAO.
Pengembangan dari soal no 7 dimana setiap 6 bulan sekali sisa pinjaman
akan dikurangi jumlah bonus yang diterima. Untuk mengatasi hal ini, sama seperti
sebelumnya yaitu menggunakan operator modulus untuk mengetahui interval 6 bulan
tersebut.
AAP.

E. Kesimpulan
AAQ.
1. Pernyataan while dan do while adalah pernyataan lain selain for yang digunakan untuk
melakukan pengulangan pada program
2. Perbedaan while dan do while dengan for terletak pada parameter-parameternya dimana
pada for sudah diketahui berapa kali akan dijalankan. Sedangkan pada while dan do
while tidak.
3. Pada pernyataan while kondisi diperiksa di awal ketika akan melakukan pengulangan
sehingga bisa saja pengulangan tidak terjadi.
4. Pada pernyataan do while kondisi diperiksa di akhir pengulangan sehingga mau tidak mau
program akan dijalankan minimal satu kali.
AAR.
AAS.

AAT. PRAKTIKUM 11
AAU.

Looping : Looping : break, continue, nested loop

AAV.
A. Dasar Teori
AAW.
AAX.
Untuk keluar dari perulangan/loop dapat dilakukan setelah sarat perulangan
dipenuhi. Akan tetapi ada cara lain untuk keluar dari perulangan walaupun sarat belum
terpenuhi, yaitu dengan menggunakan pernyataan break. Pernyataan break sesungguhnya telah
diperkenalkan pada pernyataan switch. Pernyataan ini berfungsi untuk keluar dari loop for,
do-while dan while. Sedangkan pada switch yaitu untuk menuju ke akhir (keluar dari) struktur
switch. Pernyataan break digunakan untuk keluar dari satu blok
AAY.
Selain pernyataan break ada juga pernyataan yang berhubungan dengan
perulangan yaitu pernyataan continue. Pernyataan continue digunakan untuk mengarahkan
eksekusi ke iterasi (proses) berikutnya pada loop yang sama. Pada do-while dan while,
pernyataan continue menyebabkan eksekusi menuju ke kondisi pengujian pengulangan. Pada
loop for, pernyataan continue menyebabkan bagian penaik variabel pengendali loop
dikerjakan dan kondisi untuk keluar dari loop for diuji kembali. Ilustrasi flowchart yang
menunjukkan perbedaan break dan continue ditunjukkan pada gambar 11.1.
AAZ.

ABA.
Selain dua pernyataan diatas masih ada pernyataan yang berhubungan
dengan loop yaitu goto. Pernyataan goto merupakan intruksi untuk mengarahkan eksekusi
ke pernyataan yang diawali dengan suatu label. Label sendiri berupa suatu pengenal
(identifier) yang diikuti dengan tanda titik dua (:)
ABB.
Contoh pemakaian goto:
ABC. goto cetak;
ABD.
Mengisyaratkan agar eksekusi dilanjutkan ke pernyataan yang diawali
dengan label cetak: . Pernyataan ini sebaiknya tidak digunakan.

ABE.
Untuk menghentikan program tanpa harus menyelesaikan sampai akhir
pernyataan, yaitu melalui pemanggilan fungsi exit(). Hal ini biasa dilakukan, jika di dalam suatu
eksekusi terdapat suatu kondisi yang tak dikehendaki. Prototipe dari fungsi exit() didefinisikan
pada file stdlib.h, yang memiliki deklarasi sebagai berikut :
ABF. void exit(int status);
ABG.
ABH.
status biasanya diberi nilai 0 untuk pernghentian program secara normal.
ABI.
ABJ.
Loop di dalam Loop
ABK.
ABL. Dalam suatu loop bisa terkandung loop yang lain, sehingga jika loop
tersebut diulangi n kali dan loop yang didalamnya dijuga dilakukan m kali maka pernyataan
yang berada didalam nested loop sebanyak n x n. Loop yang terletak di dalam loop
biasa disebut dengan loop di dalam loop (nested loop). Salah satu contoh nested loop misalnya
pada permasalahan untuk membuat tabel perkalian:
ABM.

ABN.
ABO.
ABP.
Implementasi dalam program selengkapnya adalah sebagai berikut :
ABQ.
ABR.
for (baris = 1; baris <= MAKS; baris++) {
ABS.
for (kolom = 1; kolom <= MAKS; kolom++) {
ABT. hasil_kali = baris * kolom;
ABU. printf ("%2d", hasil_kali);
ABV.
}
ABW.
printf("\n"); /* pindah baris */
ABX.
}
ABY.

ABZ.
ACA.
ACB.
ACC.

ACF.
ACG.

ACH.
ACI.
ACJ.
ACK.

Bagian yang terletak dalam bingkai di depan dapat dapat diperoleh melalui
for (baris = 1; baris <= MAKS; baris++)
{
ACD.
hasil_kali = baris * kolom;
ACE.
printf (%2d, hasil_kali);
}

dengan MAKS didefinisikan bernilai 8. Bagian loop yang terdalam :


for (kolom = 1; kolom <= MAKS; kolom++)
{
ACL.
hasil_kali = baris * kolom;
ACM.
printf (%2d, hasil_kali);

ACN. }
ACO.
ACP.
digunakan untuk mencetak suatu deret hasil perkalian dalam satu baris. Untuk
berpindah ke baris berikutnya, pernyataan yang digunakan yaitu printf(\n); Adapun
pencetakan untuk semua baris dikendalikan melalui
ACQ.

ACR.

for (baris = 1; baris <= MAKS; baris++)

ACS.
ACT.
Pernyataan di atas mempunyai arti dari baris ke-1 sampai dengan baris keMAKS.
ACU.

B. Tugas Pendahuluan
ACV.
1) Flowchart program yang akan berhenti

ACW.
ketika user menekan ENTER

2) Flowchart program menampilkan bilangan di


bawah 100 kecuali kelipatan 7 dan 11
START

START

i=1

kar =

READ
n
READ
kar

i=i+2

IF
i<n

IF

huruf
== \n

break

IF
i < 100
Y

END
break

3) Flowchart program penampil bilangan ganjil


kecuali kelipatan 3
START

IF
i % 7==0
||
i % 11== 0

i=1
Y
continue

READ
n
i=i+2

PRINT
i
IF
i<n
Y

continue

IF
i % 3 == 0

N
PRINT
i

END

N
END

ACX.

4) Flowchart program untuk menerima


daftar nilai mahasiswa

5) Flowchart program membentuk


matriks n x n

START

i=0
min = 0
max = 0
jum = 0
jwb = y

START

START

READ
n

READ
n

i=1

i=1
i++

i++

READ
n

IF
i <= n

i++

IF

6) Flowchart program
membentuk matriks bertingkat

IF
i <= n
Y

n <= i

j=1

j=1

j+++

j+++

jum = jum + bil


IF
j <= n
IF
max < bil
||
max == 0

max = bil

IF
min > bil ||
min == 0

IF
j <= i
Y

Y
PRINT
j

PRINT
i

END

END

min = bil

START

rata = jum / i

PRINT
jum,rata,min,max

7) Flowchart program dengan


konfirmasi ingin keluar program
atau tidak.

char jwb

READ
jwb

END

Kode Program

IF

jwb
!= y

END

C. Percobaan
ACY.
1. Dengan menggunakan pernyataan break, buatlah program yang dapat menampilkan
semua tampilan karakter yang diketikkan dan program berakhir ketika ditekan tombol
Enter.
ACZ.
a. Listing Program
ADA.
ADB.
#include <stdio.h>
ADC.
ADD.
main()
ADE.
{
ADF.
char huruf = ' ';
ADG.
printf("PRAKTIKUM 11 SOAL 1\nRENDRA
| 2110131036 |
1D4ITB\n");
ADH.
printf("\n======================================== \n\n");
ADI.
printf("PROGRAM BERHENTI KETIKA ENTER DITEKAN\n");
ADJ.
printf("\n======================================== \n");
ADK.
ADL.
printf("\nKetik sembarang karakter kemudian tekan enter :
\n");
ADM.
ADN.
do
ADO.
{
ADP.
if(huruf == '\n')
ADQ.
break;
ADR.
ADS.
huruf = getchar();
ADT.
ADU.
} while(1);
ADV.
ADW.
puts("Program dihentikan karena anda menekan Enter");
ADX.
}

ADY.
b. Capture Program
ADZ.
AEA.

AEB.
c. Analisis Program
AEC.
AED.
Program ini menggunakan do while untuk melakukan pengulangan
pembacaan karakter per karakter. Pengulangan akan terus menerus dilakukan karena
kondisi dibuat selalu benar (True) hingga user mengetikkan [Enter] yang dalam
bahasa C disimbolkan dengan karakter \n.
AEE.
2. Dengan menggunakan pernyataan continue, buatlah program yang dapat
menampilkan bilangan ganjil dari 1 sampai < n (n diinputkan), kecuali bilangan
ganjil tersebut kelipatan 3.
AEF. Contoh Input : 10
AEG. Output : 1 5 7
AEH.
a. Listing Program
AEI.
AEJ.
AEK.
AEL.
AEM.
AEN.

#include <stdio.h>
main()
{
int i,n;

AEO.
1D4ITB\n");
AEP.
AEQ.
AER.
AES.
AET.
AEU.
AEV.
AEW.
AEX.
AEY.
AEZ.
AFA.
AFB.
AFC.
AFD.
AFE.
AFF.
AFG.
AFH.

printf("PRAKTIKUM

11

SOAL

2\nRENDRA

2110131036

printf("\n======================================== \n\n");
printf("BILANGAN GANJIL KECUALI KELIPATAN 3 \n");
printf("\n======================================== \n");
printf("\nMasukkan jumlah bilangan ganjil : ");
scanf("%d",&n);
printf("\nHasil pengulangan : ");
for(i=1;i<n;i+=2)
{
if(i % 3 == 0)
{
continue;
}
printf("%d ",i);
}
printf("\n");

AFI.
b. Capture Program
AFJ.
AFK.

AFL.
c. Analisis Program
AFM.
AFN.
Untuk menskip bilangan kelipatan 3 pada pengulangan, maka hal yang
perlu kita lakukan tentunya pertama adalah mengecek bilangan tersebut apakah
kelipatan 3 atau bukan, caranya yaitu dengan menggunakan operator modulus / sisa
bagi. Jika sisa bagi bilangan tersebut dengan 3 adalah nol, maka bisa dipastikan
bilangan tersebut adalah bilangan kelipatan 3. Dan untuk menskip nya digunakan
perintah continue yang akan melanjutkan pengulangan langsung ke pengulangan
selanjutnya.
AFO.
AFP.
3. Dengan menggunakan pernyataan break dan continue, buatlah program untuk membuat
program dengan input n, dan output, bilangan ganjil kecuali kelipatan 7 dan 11 mulai dari
1 sampai < n atau bilangan tersebut <100
AFQ. Contoh
AFR. Input
: 20
AFS. Output
: 1 3 5 9 13 15 17 19
AFT.
a. Listing Program
AFU.
#include <stdio.h>
AFV.
AFW.
main()
AFX.
{
AFY.
int i,n;
AFZ.
AGA.
printf("PRAKTIKUM 11 SOAL 3\nRENDRA | 2110131036 |
1D4ITB\n");
AGB.
printf("\n========================================
\n\n");
AGC.
printf("BILANGAN GANJIL < 100 KECUALI KEL. 7 & 11
\n");

AGD.
\n");
AGE.
AGF.
AGG.
AGH.
AGI.
AGJ.
AGK.
AGL.
AGM.
AGN.
AGO.
AGP.
AGQ.
AGR.
AGS.
AGT.
AGU.

printf("\n========================================
printf("\nMasukkan batas bilangan = ");
scanf("%d",&n);
printf("\nHasil pengulangan \t= ");
for(i=1;i<n;i+=2)
{
if(i > 100)
break;
if(i % 7 == 0 || i % 11 == 0)
continue;
printf("%d ",i);
}
printf("\n");
}

b. Capture Program
AGV.
AGW.

AGX.
c. Analisis Program
AGY.
AGZ.
Untuk menghilangkan bilangan ganjil yang kelipatan 7 dan 11, maka di
setiap pengulangan perlu kita beri perlakuan khusus dengan decision if, dimana
apabila bilangan tersebut habis dibagi dengan bilangan 7 atau 11 maka pengulangan
akan di-skip menggunakan pernyataan continue. Pengulangan akan berhenti sesuai
bilangan yang dimasukkan oleh user, tapi tidak bisa lebih dari 100 karena telah
dibatasi pernyataan break;
AHA.
4. Buatlah program untuk menerima daftar nilai mahasiswa sbb :
AHB. Input
:
- Jumlah data (n)
AHC.
- Nilai ke-1 s/d Nilai ke-n
AHD. Output
:
- Nilai minimal
AHE.
- Nilai maksimal
AHF. - Nilai rata-rata (rata-rata = nilai total / jumlah data)
AHG. (Petunjuk : Gunakan loop for dan seleksi kondisi dengan if)
AHH.
a. Listing Program
AHI.
AHJ.
#include <stdio.h>
AHK.
AHL.
main()
AHM.
{
AHN.
int i,n;
AHO.
float nilai, jum = 0, max = 0, min = 0, rata;
AHP.
AHQ.
printf("PRAKTIKUM 11 SOAL 5\nRENDRA | 2110131036 |
1D4ITB\n");
AHR.
printf("\n======================================== \n\n");
AHS.
printf("PROGRAM PENJUMLAH HINGGA BILANGAN KE-n \n");
AHT.
printf("\n======================================== \n");
AHU.
AHV.
printf("\nMasukkan jumlah data \t = ");

AHW.
AHX.
AHY.
AHZ.
AIA.
AIB.
AIC.
AID.
AIE.
AIF.
AIG.
AIH.
AII.
AIJ.
AIK.
AIL.
AIM.
AIN.
AIO.
AIP.
AIQ.
AIR.
AIS.
AIT.
AIU.
AIV.
AIW.
AIX.
AIY.
AIZ.

scanf("%d", &n);
for(i=1;i<=n;i++)
{
fflush(stdin);
printf("\nMasukkan nilai ke %d \t = ",i);
scanf("%f", &nilai);
jum = jum + nilai;
if(i == 1)
{
max = nilai;
min = nilai;
}
else
{
if(max < nilai)
max = nilai;
if(min > nilai)
min = nilai;
}
}
printf("\nNilai maksimal \t\t = %0.2f",max);
printf("\nNilai minimal \t\t = %0.2f",min);
printf("\nNilai rata-rata \t = %0.2f",jum / n);
}

AJA.
b. Capture Program
AJB.
AJC.
t

AJD.
c. Analisis Program
AJE.
AJF.
Untuk mengumpulkan data nilai, program akan melakukan pengulangan
sesuai jumlah data yang diinputkan sebelumnya. Di tiap pengulangan, kita akan
dimintai inputan nilai yang kemudian akan diolah untuk mendapatkan nilai max, min
dan rata-rata. Untuk memperoleh nilai maksimal kita banding-bandingkan nilai yang
dimasukkan setiap pengulangan. Jika nilai yang dimasukkan lebih besar dari nilai
maksimal sebelumnya maka nilai maksimal adalah nilai tersebut. Apabila nilai yang
dimasukkan lebih kecil daripada nilai minimal sebelumnya yang ada, maka nilai
minimal adalah nilai tersebut. Sedangkan nilai rata-rata didapat dari jumlah semua
bilangan yang kemudian dibagi dengan jumlah pengulangan.
AJG.

AJH.

5. Dengan menggunakan pernyataan nested loop, buatlah program berikut:


AJI. Input
:n
AJJ. Output :

AJK.
a. Listing Program
AJL.

AJM.
#include <stdio.h>
AJN.
AJO.
main()
AJP.
{
AJQ.
int i,j,n;
AJR.
AJS.
printf("PRAKTIKUM 11 SOAL 5\nRENDRA | 2110131036 |
1D4ITB\n");
AJT.
printf("\n========================================
\n\n");
AJU.
printf("MEMBUAT MATRIK n x n \n");
AJV.
printf("\n========================================
\n");
AJW.
AJX.
printf("\nMasukkan jumlah data \t = ");
AJY.
scanf("%d", &n);
AJZ.
AKA.
printf("\n\nHasil pengulangan \t = \n");
AKB.
AKC.
for(i=1;i<=n;i++)
AKD.
{
AKE.
for(j=1;j<=n;j++)
AKF.
{
AKG.
printf("%d ",j);
AKH.
}
AKI.
printf("\n");
AKJ.
}
AKK.
}

b. Capture Program
AKL.
AKM.

AKN.
c. Analisis Program
AKO.
AKP.
Untuk membentuk matriks seperti ini, diperlukanlah loop bersarang atau
nested loop atau bisa juga disebut loop di dalam loop. Looping pertama akan
membuat baris pada matriks sedangkan looping kedua yaitu looping yang berada di
dalam loop pertama akan menyatakan kolom dari matriks tersebut.

AKQ.
6. Dengan menggunakan pernyataan nested loop, buatlah program berikut:
AKR. Input
:n
AKS. Output :

AKT.
a. Listing Program
AKU.

AKV.
#include <stdio.h>
AKW.
AKX.
main()
AKY.
{
AKZ.
int i,j,n;
ALA.
ALB.
printf("PRAKTIKUM 11 SOAL 6\nRENDRA | 2110131036 |
1D4ITB\n");
ALC.
printf("\n========================================
\n\n");
ALD.
printf("MEMBUAT MATRIK BERTAMBAH \n");
ALE.
printf("\n========================================
\n");
ALF.
ALG.
printf("\nMasukkan jumlah data \t = ");
ALH.
scanf("%d", &n);
ALI.
printf("\nHasil pengulangan \t = \n\n");
ALJ.
for(i=1;i<=n;i++)
ALK.
{
ALL.
for(j=1;j<=i;j++)
ALM.
{
ALN.
printf("%d ",i);
ALO.
}
ALP.
printf("\n");
ALQ.
}
ALR.
}
ALS.

b. Capture Program
ALT.
ALU.

ALV.
c. Analisis Program
ALW.
ALX.
Sama halnya soal no 5, disini kita menggunakan nested loop dimana loop
pertama menyatakan baris sedangkan loop kedua menyatakan kolom, perbedaannya
pada program ini adalah penampilan baris dibatasi yaitu tidak lebih dari no baris.
ALY.

7. Pada akhir setiap 4 buah program diatas tambahkan tanyaan apakah anda ingin
keluar (y/t)?, pertanyaan tersebut hanya bisa di jawab dengan huruf y (y kecil) dan t(t
kecil). Dan akan keluar dari program setelah dijawab dengan y (y kecil)
a. Listing Program
ALZ.
#include <stdio.h>
AMA.
AMB.
main()
AMC.
{
AMD.
char jwb;
AME.
int i,n;
AMF.
printf("PRAKTIKUM 11 SOAL 7a\nRENDRA
| 2110131036 |
1D4ITB\n");
AMG.
printf("\n======================================== \n\n");
AMH.
printf("BILANGAN GANJIL < 100 KECUALI KEL. 7 & 11 \n");
AMI.
printf("\n======================================== \n");
AMJ.
AMK.
do
AML.
{
AMM.
// UNTUK 4 SCRIPT PROGRAM DIATAS BISA DITARUH DISINI,
CONTOH :
AMN.
printf("\nMasukkan batas bilangan = ");
AMO.
scanf("%d",&n);
AMP.
printf("\nHasil pengulangan \t= ");
AMQ.
for(i=1;i<n;i+=2)
AMR.
{
AMS.
if(i > 100)
AMT.
break;
AMU.
AMV.
if(i % 7 == 0 || i % 11 == 0)
AMW.
continue;
AMX.
AMY.
printf("%d ",i);
AMZ.
}
ANA.
// HINGGA DISINI
ANB.
ANC.
printf("\n\n");
AND.
printf("Apakah anda ingin keluar [y/t]?");
ANE.
fflush(stdin);
ANF.
jwb = getchar();
ANG.
} while(jwb != 'y');
ANH.
}

ANI.
b. Capture Program
ANJ.
ANK.

ANL.
c. Analisis Program
ANM.
Pada program ini ditambahkan pengulangan do while agar program yang
dijalankan dapat diulang-ulang hingga user menginginkan sendiri untuk keluar yaitu
dengan memasukkan karakter [y] ketika ada pertanyaan. Pemilihan pengulangan do
while adalah karena setidaknya program akan dijalankan minimal satu kali.
ANN.

D. Tugas Tambahan
ANO.
ANP.
Dengan menggunakan pernyataan nested loop, buatlah program berikut:
ANQ.
Input : n
ANR.
Output : 2 3 5 7 11. Bilangan prima ke n
ANS.
1. Listing Program
ANT.
ANU. #include <stdio.h>
ANV.
ANW. main()
ANX. {
ANY.
int i = 1 ,bil = 2, pembagi, n, isPrima;
ANZ.
AOA.
printf("PRAKTIKUM 11 SOAL TAMBAHAN\nRENDRA | 2110131036 |
1D4ITB\n");
AOB.
printf("\n======================================== \n\n");
AOC.
printf("PROGRAM DERET BILANGAN BRIMA \n");
AOD.
printf("\n======================================== \n");
AOE.
AOF.
printf("\nMasukkan banyaknya bilangan \t = ");
AOG.
scanf("%d", &n);
AOH.
AOI.
printf("\nDaftar bilangan prima \t\t = ");
AOJ.
while(i <= n)
AOK.
{
AOL.
isPrima = 1;
AOM.
for(pembagi=2;pembagi<bil;pembagi++)
AON.
{
AOO.
if(bil % pembagi == 0)
AOP.
{
AOQ.
isPrima = 0;
AOR.
break;
AOS.
}
AOT.
}
AOU.
AOV.
if(isPrima)
AOW.
{
AOX.
printf("%d ",bil);
AOY.
i++;
AOZ.
}
APA.
APB.
bil++;
APC.
}
APD. }

APE.
2. Capture Program
APF.
APG.

APH.
3. Analisis Program
API.
APJ. Untuk membuat deret bilangan prima dibutuhkan nested loop. Loop pertama
adalah loop untuk menampilkan deret bilangan sedangkan loop kedua adalah loop untuk
mengecek bilangan tersebut, apakah bisa habis dibagi bilangan lain selain bilangan itu
dan bilangan satu atau tidak. Jika tidak ada satupun bilangan selain bilangan 1 di bawah
bilangan tersebut yang bisa membagi, maka bisa langsung ditampilkan di deret karena
bilangan tersebut adalah bilangan prima.
APK.
APL.

APM.
E. Kesimpulan
APN.
1. Di dalam pengulangan atau looping terdapat beberapa pernyataan yang menyebabkan
jalannya looping tersebut berubah yaitu pernyataan break dan continue.
2. Pernyataan break berfungsi untuk keluar dari loop for, do-while dan while.
3. Pernyataan continue digunakan untuk mengarahkan eksekusi ke iterasi (proses)
berikutnya pada loop yang sama.
4. Pernyataan goto merupakan intruksi untuk mengarahkan eksekusi ke pernyataan
yang diawali dengan suatu label. Label sendiri berupa suatu pengenal (identifier)
yang diikuti dengan tanda titik dua (:)
5. Pernyataan exit digunakan untuk menghentikan program tanpa harus menyelesaikan
sampai akhir pernyataan, yaitu melalui pemanggilan fungsi exit().
6. Dalam suatu loop bisa terkandung loop yang lain, sehingga jika loop tersebut
diulangi n kali dan loop yang didalamnya dijuga dilakukan m kali maka pernyataan yang
berada didalam nested loop sebanyak n x n. Loop yang terletak di dalam loop
biasa disebut dengan loop di dalam loop (nested loop).

APO.