Modul Algoritma Dan Pemrograman Dasar
Modul Algoritma Dan Pemrograman Dasar
Oleh :
Drs. Janoe Hendarto,M.Kom.
1
Daftar Isi
1.2 Algoritma...................................................................................... 6
2
3.4 Struktur program C/C++ ............................................................ 27
4
BAB I - PENGANTAR
Pendahuluan
Program komputer dibuat berdasarkan langkah-langkah logis
untuk menyelesaikan masalah. Lagkah-langkah tersebut ditulis dalam
suatu instruksi yang bisa dipahami oleh komputer, kemudian komputer
akan menerjemahkan ke dalam bahasa mesin dan mengerjakan langkah-
langkah tersebut.
Penyajian
1.1 Latar Belakang
Pada saat ini kebutuhan data semakin kompleks. Bayangkan:
indeks dari 8 milyar halaman ! (Google). Semua program komputer
berkaitan dengan data :
• Sistem Informasi menyimpan data laporan, user, informasi, dsb
• Game menyimpan data pemain, posisi, skor, dsb
• Search engine menyimpan data URL, hyperlink, bobot, dsb
• Dan lain sebagainya
Pemilihan algoritma juga mempengaruhi waktu eksekusi oleh
komputer, sebagai contoh : Contoh kasus sederhana : Dimisalkan ada
3.000 file teks dengan rata-rata 20 baris tiap file teks-nya. Dimana tiap
baris mengandung 10 kata. Jadi akan ada 600.000 kata. Tentukan
jumlah kata “corona”. Jika dimisalkan dibutuhkan waktu 1 milidetik
untuk mencek sebuah kata sama dengan “corona”.
Solusi 1: menggunakan sequential searching, membutuhkan waktu
1 milidetik x 600.000 kata = 600 detik = 10 menit
Solusi 2 : Binary searching : log 2 600000 = 19 milidetik vs 10 menit!
5
1.2 Algoritma
Algoritma adalah urutan logis pengambilan putusan untuk
pemecahan masalah (set of steps). Dalam lingkungan pemrograman,
langkah penyelesaian permasalahan harus mengikuti 3 tahap berikut:
1. Analisis permasalahan, merupakan rinci permasalahan dan
pendalaman permasalahan hingga mendapatkan ide solusi dalam
pemecahannya.
2. Perancangan algoritma untuk menyelesaikan masalah tersebut,
meliputi proses menyatakan algoritma, validasi dan analisis
algoritma.
3. Implementasikan algoritma tersebut pada sebuah bahasa
pemrograman seperti C++, Java, Python, dan lain sebagainya.
Pastikan program tersebut berjalan tanpa error (sintax, running
maupun output error) dengan menggunakan data uji.
6
dalam hal pengimplementasian hasil analisis pemecahan masalah ke
dalam bentuk program komputer yang benar, baik secara logika maupun
secara sintaksis. Roadmap belajar algoritma dan pemrograman seperti
pada Gambar 1.1 berikut.
7
harga yang relatif mahal, mampu melakukan banyak operasi secara
simultan.
Unit kontrol
Arithmetic
Logical Unit
(ALU)
8
1.4 Program dan Bahasa Pemrograman
Komputer merupakan alat yang mempunyai keunggulan dalam
kecepatan proses dan melakukan perhitungan yang komplek. Komputer
mampu menyimpan data dalam ukuran besar, melakukan manipulasi
dan menghasilkan informasi sebagai hasil keluarannya. Masalahnya ialah
bahwa komputer tidaklah dapat melaksanakan itu semua tanpa
mendapatkan instruksi atau perintah mengenai apa yang harus
dikerjakan, yaitu yang disebut dengan program.
Program ditulis secara terinci, sistematis, logis, dapat dimengerti /
dipahami dan dapat dilaksanakan oleh komputer. Baris program disebut
dengan pernyataan (statement), dan masing-masing pernyataan
mengerjakan tugas tertentu. Dengan program akan dapat dilakukan
kontrol langkah-langkah yang harus dikerjakan komputer.
Proses pembuatan program komputer sampai diperolehnya hasil
yang dikehendaki disebut dengan pemrograman komputer, dan
dilaksanakan oleh pemrogram (programmer). Bahasa yang digunakan
sebagai komunikasi diantara orang dengan komputer (untuk penulisan
program) disebut bahasa pemrograman. Bahasa pemrograman
mencakup notasi, simbol, pernyataan, tata bahasa, dan lain-lain aspek
bahasa.
Penulisan program harus memenuhi aturan sintak (syntatic rule)
dari bahasa pemrograman. Perbedaan mendasar diantara bahasa
pemrograman dengan bahasa sehari-hari yang digunakan manusia ialah
bahwa bahasa pemrograman digunakan sangat tepat dan tidak ada
pengecualian atau arti ganda (ambiguities). Masalahnya ialah karena
komputer tidaklah dapat berfikir dan menimbang-nimbang sebagaimana
dapat dilakukan oleh manusia. Komputer hanya akan mengikuti perintah
persis sebagaimana yang diberikan.
Komputer tidak dapat menafsirkan perintah untuk memehami apa
yang diinginkan oleh pembuat program. Sehingga kesalahan dalam
9
penulisan akan mengubah maksud dari suatu program dan menyebabkan
komputer mengerjakan aksi yang salah.
Dilihat kedekatannya kepada “bahasa manusia”, maka bahasa
pemrograman dikelompokkan menjadi dua, yaitu:
1. Bahasa pemrograman tingkat rendah
11
dan administrasi sedangkan Fortran untuk terapan ilmiah. Pascal dan
C merupakan bahasa pemrograman bertujuan umum, karena dapat
digunakan untuk berbagai aplikasi. Dalam kenyataannya
pengelompokkan tersebut tidak terlalu ketat digunakan.
12
Tabel 1.1 Perbedaan kompiler dan interpreter.
Kompiler Interpreter
a) Dengan interpreter
b) Dengan kompiler
Laksanakan
program lengkap
13
1.6 Pemrograman Terstruktur
Ide pemrograman terstruktur pertama kali disampaikan oleh
Profesor Edsger Djikstra dari Universitas Eidenhower sekitar tahun
1965. Djikstra mengusulkan tidak dipergunakannya pernyataan
GOTO yang dapat menyebabkan timbulnya “spaghetti logic”, yang akan
menjadikan sulitnya dilakukan perbaikan ataupun pengembangan
program. Kemudian HD Millis menanggapi dengan mengemukakan
bahwa pemrograman terstruktur tidak hanya dihubungkan dengan
tidak digunakannya pernyataan GOTO, akan tetapi juga dengan
struktur dari program. Struktur program yang akan menentukan
program yang terstruktur menggunakan pernyataan GOTO atau tidak.
15
BAB II - NOTASI ALGORITMA
Pendahuluan
Pada bab ini akan dijelaskan 3 notasi algoritma dan contoh
penggunaannya pada beberapa algoritma sederhana. Diharapkan siswa
dapat menuliskan algoritma untuk suatu penyelesaian masalah.
Penyajian
Notasi algoritma bukan notasi bahasa pemrograman. Ada beberapa notasi
yang digunakan dalam penulisan algoritma, yaitu notasi algoritma
deskriptif dan notasi algoritma flowchart.
2.1 Notasi Deskriptif
Notasi pertama menyatakan langkah-langkah algoritma dengan kalimat
deskriptif. Contoh:
Algoritma Euclidean
Diberikan dua buah bilangan bulat tak negatif m dan n (m>=n). Carilah
FPB dari kedua bilangan tersebut.
Deskripsi
16
Tabel 2.1 Bagan Flowchart
BAGAN NAMA FUNGSI
INPUT/OUTPUT
input/output data
DATA
Penghubung bagian-bagian
OFF PAGE
flowchart pada halaman yang
CONNECTOR
berbeda
17
Proses yang dilakukan komputer sebenarnya hanya ada 3 proses:
input, proses data dan output.
Misal Masalah 1: bagaimana menentukan bahwa suatu bilangan itu
adalah bilangan genap atau ganjil?
Input : bilangan bulat.
mulai
Masukkan Bilangan
Bulat
YA
Sisa Tulis
bagi=0 ? “GENAP”
Tidak
Tulis
“GANJIL”
Selesai
18
2.3 Notasi Menggunakan pseudo-code
Pseudo-code adalah notasi yang menyerupai notasi bahasa pemrograman
tingkat tinggi, khususnya Bahasa Pascal dan C.
Algoritma Euclidean
{Dibaca dua buah bilangan bulat tak negatif m dan n (m>=n). Carilah
FPB dari kedua bilangan tersebut.}
Deklarasi
m,n,r : integer
Deskripsi
read(m,n)
while n<> 0 do
r m mod n
m n
n r
endwhile
write(m)
19
{menghitung selisih waktu antara jam1 : menit 1: detik1 dengan
jam2: menit2 : detik2}
deklarasi
jam1,menit1, detik1,jam2, menit2,detik2 : integer;
sisa, tdetik2, tdetik1, selisih,sjam, smenit,sdetik :
integer;
deskripsi
read(jam1,menit1,detik1)
read(jam2,menit2,detik2)
tdetik1 3600*jam1+60*menit1*detik1
tdetik2 3600*jam2+60*menit2*detik2
selisihtdeti2-tdetik1
sjamselisih div 3600
sisa selisih mod 3600
smenitselisih div 60
sdetikselisih mod 60
write(sjam,smenit,sdetik)
Penutup
2.4 Latihan Soal
1. Tulislah algoritma menentukan bilangan terbesar dari 3 bilangan
bulat A, B, C menggunakan notasi bahasa alami.
2. Tulislah algoritma mengurutkan dari kecil ke besar 3 bilangan
bulat A, B, C menggunakan notasi diagram alir.
3. Tulislah algoritma menghitung luas segi tiga menggunakan
pseudocode.
20
BAB III - TIPE DATA
Pendahuluan
Pada bab ini dileaskan tipe data dan operasi baca tulis data, juga
dijelaskan struktur pemrograman pada bahasa C/C++.
Penyajian
3.1 Tipe Data
Tipe data ada dua macam, yaitu : tipe dasar dan tipe bentukan. Tipe
dasar adalah tipe data yang dapat langsung dipakai. Tipe bentukan
dibentuk oleh tipe dasar atau tipe bentukan lain yang sudah
didefinisikan.
3.1.1 Tipe Dasar
Yang termasuk dalam tipe dasar adalah : bilangan bulat (integer),
logika (boolean), karakter, bilangan riil (float) dan string. Tiga tipe dasar
yang pertama disebut tipe ordinal karena setiap nilai konstantanya bisa
diubah ke nilai integer.
1. Bilangan Bulat (Integer)
Jenis data ini terdiri atas integer positif, integer negatif dan nol.
Pada C++ jenis data ini di bagi atas beberapa bagian, seperti pada Tabel
3.1.
Tabel 3.1 Tipe data integer
Tipe Keterangan Ukuran Jangkauan nilai
21
jangkauan unsigned : 0.. 4294967295
panjang
long long Bilangan 8 byte 20 digit bilangan bulat
bulat dengan
jangkauan
panjang
22
4. Bilangan Riil (float)
Penulisan untuk jenis data ini selalu menggunakan titik desimal.
Nilai konstanta numerik real berkisar dari 1E-38 sampai dengan 1E+38
dengan mantissa yang signifikan sampai dengan 11 digit. E menunjukkan
nilai 10 pangkat. Nilai konstanta numerik real menempati memori sebesar
6 byte.
Contoh :
123.45
12345. → salah, titik desimal tidak boleh dibelakang
12E5
12E+5
-12.34
.1234 → salah, titik desimal tidak boleh dimuka
Pada C++, jenis data ini dibedakan atas beberapa tipe, seperti pada
Tabel 3.2.
Tabel 3.2 Tipe data float
Tipe Ukuran memori Jangkauan nilai
(dalam byte)
float 4 3.4*(10^-38) … 3.4*(10^+38)
double 8 1.7*(10^-308) – 1.7*(10^+308)
long double 10 3.4*(10^-4932) – 1.1*(10^+4932)
5. Tipe String
Nilai data string merupakan urut-urutan dari karakter yang terletak
di antara tanda petik tunggal. Nilai data string akan menenpati memori
23
sebesar banyaknya karakter stringnya ditambah dengan 1 byte. Contoh :
’Belajar’, ’Pemrograman’, merupakan nilai konstanta string.
Operasi terhadap tipe string terdiri dari :
a. Operasi Penyambungan
Operatornya : +. Digunakan untuk menyambung 2 nilai string.
Contoh :
’Belajar’ + ’Pemrograman’ menjadi ’BelajarPemrograman’
b. Operasi Perbandingan
3.2 Nama
Nama diberikan kepada peubah (variabel), konstanta, tipe
bentukan, nama fungsi, dan nama prosedur.
Aturan penamaan :
1. Diawali dengan huruf alfabet.
2. Huruf besar atau kecil dibedakan.
3. Nama tidak boleh mengandung operator aritmatika, operator
relasional, tanda baca, spasi.
3.2.1 Variabel.
Variabel adalah suatu identifier non-standar yang nilainya tidak tetap
atau nilainya merupakan hasil dari suatu proses.
(variabel yang dimaksudkan disini sama seperti halnya arti variabel pada
aljabar).
24
Bentuk umum deklarasinya adalah :
1. Jika hanya 1 (satu) variabel yang dideklarasikan :
Tipe_data identifier;
2. Jika lebih dari 1 (satu) variabel dan masing-masing memiliki tipe data
yang sama :
Tipe_data id-1, id-2, …., id-3;
3. Jika beberapa variabel yang berbeda tipe datanya :
Tipe_data_1 identifier-1;
Tipe_data_2 identifier-2;
.
.
.
Tipe_data_n identifier-n;
Contoh :
int x;
float p,q,r;
char a,b;
boolean m,n;
3.3 Nilai
Nilai adalah besaran dari tipe data yang sudah didefinisikan. Nilai
dapat berupa variabel atau konstanta.
variabel = nilai
Contoh : N = 10;
25
Atau variabel=variabel
Contoh : N=M;
cin>>variabel input;
Contoh : cin>>A>>B>>C;
3.3.2 Ekspresi
Sebuah ekspresi merupakan kumpulan dari operand-operand
(seperti : bilangan, konstanta, variabel dll) yang bersama-sama dengan
operator membentuk suatu bentuk aljabar dan menyatakan suatu nilai.
Ada 2 (dua) jenis ekspresi dalam bahasa C++, yaitu :
1. Ekspresi numerik / aritmatika, yaitu suatu ekspresi yang
menghasilkan nilai numerik / aritmatika.
2. Ekspresi Boolean atau ekspresi logika, yaitu suatu ekspresi yang
menghasilkan nilai boolean / logika (true/false).
Contoh :
1. (b * b – 4 * a * c) / (2*a) / (2 * a) ekspresi numerik, jika a,b dan
c adalah bilangan (variabel bernilai numerik).
2. Upah < 1000.0 ekspresi boolean (“upah” adalah suatu variabel
bernilai real).
3.3.3 Menuliskan Nilai ke Piranti Keluaran
Untuk keperluan keluaran (mencetak keluaran) digunakan identifier
standar COUT.
26
Pada setiap keluaran ada fungsi untuk pindah ke baris baru (new line).
Pada COUT ada ENDL.
1. //Program LuasLingkaran;
2. #include<iostream>
3. Using namespace std;
4. float jari2, Luas ;
5. int main(){
6. cout<<”Masukkan jari-jari : ”; cin>>jari2;
7. Luas = 314*jari2*jari2;
8. cout<<”Luas = ”<<Luas<<endl;
9. return 0;
10. }
27
Contoh:
- #include<stdio.h>
o Membangkitkan perintah/kata tercadang seperti scanf,
printf, gets, getchar, dll
- #include<iostream>
o Membangkitkan perintah seperti cin, cout dll
- #include<algorithm>
o Berfungsi agar kita bisa menggunakan perintas seperti min,
max, sort, dsb
3.4.2 Bagian Deklarasi
Pada bagian ini dideklarasikan : tipe, variabel, konstanta, prosedur,
dan fungsi.
1. Deklarasi tipe
Digunakan untuk membuat tipe bentukan atau tipe khusus yang
nantinya digunakan dalam deklarasi variabel.
Bentuk deklarasi :
Typedef pengenal = tipe data;
Contoh Typedef bilangan = int;
2. Deklarasi variabel
Digunakan untuk mendeklarasikan semua variabel yang dipakai
dalam program.
Bentuk umum deklarasi :
Bentuk umum deklarasinya adalah :
1. Jika hanya 1 (satu) variabel yang dideklarasikan :
Tipe_data identifier;
2. Jika lebih dari 1 (satu) variabel dan masing-masing memiliki tipe data
yang sama :
Tipe_data id-1, id-2, …., id-3;
3. Jika beberapa variabel yang berbeda tipe datanya :
28
Tipe_data_1 identifier-1;
Tipe_data_2 identifier-2;
.
.
.
Tipe_data_n identifier-n;
Contoh :
int x;
float p,q,r;
char a,b;
boolean m,n;
3. Deklarasi konstanta
Deklarasi ini untuk mendefinisikan nama yang memiliki nilai tetap.
Bagian umum deklarasinya adalah :
CONST identifier = nilai;
Contoh :
CONST phi = 3.14;
x= 2;
y = ‘S’;
29
Penutup
3.5 Latihan soal
1. Tulislah rumus berikut dalam bahasa C++ :
4
V = r 3
a. 3
a −b b
m= (1 − )
b. 3ac cd
30
BAB IV - STRUKTUR RUNTUNAN DAN
PERCABANGAN
Pendahuluan
Pada bab ini dijelaskan struktur pada algoritma/pemrograman.
Pada bab ini dijelaskan 2 dari 3 struktur tersebut, yaitu struktur
runtunan dan struktur percabangan.
Penyajian
4.1 Struktur Runtunan
Sebuah runtunan (sequence) terdiri dari satu atau lebih instruksi.
Tiap instruksi dikerjakan sesuai dengan urutan penulisannya, yakni
sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai
dilaksanakan. Urutan instruksi menentukan keadaan akhir program. Bila
urutannya diubah, maka hasil akhirnya mungkin juga berubah.
Contoh berikut adalah program menukar dua buah nilai integer A dan B.
Misal sebelum penukaran nilai A = 5, nilai B=3. Setelah penukaran, nilai
A=3, nilai B=5.
1. //Program Tukar;
2. #include<iostream>
3. using namespace std;
4. int A,B, temp;
5. int main()
6. {
7. cout<<”Masukkan nilai A : ”; cin>>A;
8. cout<<”Masukkan nilai B : ”; cin>>B;
9. temp=A; A=B; B= temp;
10. cout<<”Nilai A sekarang = “<< A;
11. cout<<”Nilai B sekarang = “<< B;
12. }
Jika urutan instruksi di atas diubah, maka hasilnya juga berubah. Misal:
31
temp=A;
A=B;
B= temp;
diubah menjadi :
temp=A;
B= temp;
A=B;
1. //Program BilanganGenap;
2. #include<iostream>
3. using namespace std;
4. int Bil;
32
5. int main(){
6. cout<<”Masukkan bilangan”;
7. cin>>Bil;
8. if(bil mod 2 == 0) Cout<<Bil<<” adalah bilangan genap”;
9. }
1. if(kondisi) aksi1;
2. else aksi 2;
1. //Program BilanganGenapGanjil;
2. #include<iostream>
3. using namespace std;
4. int Bil;
5. int main(){
6. cout<<”Masukkan bilangan : “; cin>>Bil;
7. if(bil mod 2 == 0) cout<<Bil<<” adalah bilangan genap”;
8. else Cout<<Bil<<” adalah bilangan ganjil”;
9. }
if(kondisi1) aksi1;
else if(kondisi2) aksi2
if kondisi3 aksi3
....
else aksiN;
33
1. //Program KonversiNilai;
2. /*Program untuk merubah nilai angka menjadi nilai huruf*/
3. #include<iostream>
4. using namespace std;
5. int Nilai;
6. int main(){
7. cout<<”Masukkan bilangan”; cin>>Nilai>>;
8. if(Nilai>= 80) cout<<”Nilai =A”<<endl;
9. else {if(Nilai>= 65) cout<<”Nilai = B”<<endl;
10. else {if(Nilai>= 50) cout<<”Nilai = C”<<endl;
11. else {if(Nilai>= 35) cout<<”Nilai = D”<<endl;
12. else cout<<”Nilai = E”<<endl;
13. }
14. }
15. }
16. }
switch (nama_variabel)
{
nilai1 : aksi1; break;
nilai2 : aksi2; break;
...
nilaiN : aksiN; break;
default: aksiN1;
}
Contoh program KonversiNilai menggunakan struktur Switch :
1. //Program KonversiNilai;
2. //Program untuk merubah nilai angka menjadi nilai huruf
3. #include<iostream>
4. using namespace std;
34
5. int NilaiAngka;
6. int main()
7. {
8. cin<<” Masukkan bilangan”; cin>>NilaiAngka;
9. switch (NilaiAngka/10){
10. case 10 :
11. case 9 : cout<<“Nilai = A”; break;
12. case 8 :
13. case 7 : cout<<“Nilai = B”; break;
14. case 6 :
15. case 5 : cout<<“Nilai = C”; break;
16. case 4 :
17. case 3 : cout<<“Nilai = D”; break;
18. case 2 :
19. case 1 :
20. case 0 : cout<<“Nilai = E”; break;
21. default: cout<<” Masukkan nilai salah”;
22. }
23. }
Nilai bisa berupa nilai tunggal atau beberapa nilai yang disebutkan satu
per satu.
Penutup
4.3 Latihan Soal
1. Buatlah program yang membaca waktu tempuh dalam jam-menit-
detik, kemudian mengubahnya dalam detik.
2. Buatlah program yang mebaca waktu dalam detik, kemudian
mengubahnya dalam jam-menit-detik.
3. Dibaca dua buah waktu J1 (jam1-menit1-detik1) dan J2 (jam2-
menit2-detik2). Buatlah program menghitung selisih waktu dari
dari J1 ke J2 (selisih jam-selisih menit-selisih detik).
4. Buatlah program menukar dua nilai A dan B tanpa menggunakan
variabel bantu temp.
35
5. Buatlah program menampilkan jumlah hari dalam satu bulan.
Masukan program ini adalah nomor bulan dan tahun. Misalkan
bulan 3 tahun 2010, maka program akan menampilkan 31.
6. Buatlah program untuk membaca tiga bilangan bulat A, B, C, lalu
mengurutkannya dari yang kecil ke besar.
7. Buatlah program untuk menghitung total pendapatan dengan
ketentuan :
Total pendapatan = Gaji Pokok + Uang Lembur
Berikut tabel gaji pokok dan lembur perjam berdasarkan golongan:
Golongan Gaji Pokok Lembur per jam
I 1000000 10000
II 2000000 20000
III 3000000 30000
Uang lembur diberikan jika jam kerja melebihi 50 jam.
36
BAB V - STRUKTUR PENGULANGAN
Pendahuluan
Dalam algoritma/pemrograman disediakan struktur pengulangan
untuk mengerjakan instruksi yang sama lebih dari satu kali. Dalam
bahasa C/C++ terdapat 3 bentuk struktur pengulangan, yaitu : For,
While-Do, dan Do-While.
Penyajian
5.1 Struktur Pengulangan
Struktur pengulangan secara umum :
<inisialisasi>
awal pengulangan
badan pengulangan
akhir pengulangan
<terminasi>
Awal dan akhir pengulangan tergantung pada struktur pengulangan yang
digunakan. Terdapat tiga macam struktur pengulangan, yaitu :
1. Struktur FOR
2. Struktur WHILE
3. Struktur DO-WHILE
1. //Program HitungFaktorial;
2. #include<iostream>
3. using namespace std;
4.
5. int i,n;
6. long Faktorial;
7. int min()
8. {
9. cout<<“Nilai faktorial berapa ?”; cin>>n;
10. Faktorial =1;
11. for(i= 1; i<=n; i++)
12. Faktorial =Faktorial * i;
13. cout<<“Nilai faktorial “<<N<<” adalah =”<<Faktorial<<endl;
14. }
38
1. //Program HitungFaktorial;
2. #include<iostream>
3. using namespace std;
4. int i,n;
5. long Faktorial;
6. int min()
7. {
8. cout<<“Nilai faktorial berapa ?”; cin>>n;
9. Faktorial =1;
10. For(i=n; i>=1; i--)
11. Faktorial =Faktorial * i;
12. cout<<“Nilai faktorial “<<N<<” adalah =”<<Faktorial<<endl;
13. }
1. //Program HitungFaktorial;
2. #include<iostream>
3. using namespace std;
4.
5. int i,n;
6. long Faktorial;
7. int main()
8. {
9. cout<<“Nilai faktorial berapa ?”; cin>>n;
10. Faktorial =1; i=1;
11. while (i<=n)
12. {
13. Faktorial =Faktorial * i;
14. i=i + 1;
15. }
16. cout<<“Nilai faktorial “<<N<<“ adalah =’,Faktorial);
17. }
1. #include<iostream>
2. using namespace std;
3.
4. int i,n;
5. long Faktorial;
6. int main() {
7. cout<<“Nilai faktorial berapa ?”; cin>>n;
8. Faktorial=1; i=1;
9. do
10. Faktorial =Faktorial * i;
11. i=i + 1;
12. while(i <= n);
13. cout<<”Nilai faktorial” <<N<<” adalah = “<<Faktorial<<endl;
14. }
Penutup
5.5 Latihan Soal
1. Terdapat sejumlah N siswa. Setiap siswa memiliki nilai UTS dan
UAS antara 0-100. Misalkan untuk merubah nilai angka menjadi
nilai huruf mengikuti aturan :
- Jika Nilai rata-rata UTS dan UAS >= 80, maka nilainya A.
- Jika 80 > Nilai rata-rata UTS dan UAS >= 65, maka nilainya
B.
- Jika 65 > Nilai rata-rata UTS dan UAS >= 50, maka nilainya
C.
- Jika 50 > Nilai rata-rata UTS dan UAS >= 35, maka nilainya
D.
- Jika 35 > Nilai rata-rata UTS dan UAS >= 0, maka nilainya
E.
40
Buatlah program untuk membaca nilai UTS dan UAS dari N
siswa, kemudian menghitung berapa siswa yang mendapat nilai A,
B, C, D, atau E.
2. Buatlah program untuk menampilkan semua solusi bilangan bulat
tidak negatif dari persamaan :
X + Y + Z = 25
3. Buatlah program mengisi password. Program akan terus meminta
masukan password selama kata kunci yang dimasukkan salah.
41
BAB VI - SUB PROGRAM
Pendahuluan
Dalam bahasa pemrograman prosedural, program bisa terdiri dari
beberapa sub program. Dengan membuat sub program, penulisan kode
program yang sama berulangkali bisa dihindarkan, juga memudahkan
menulis dan menemukan kesalahan program.
Dalam Bahasa C++ terdapat sub program berupa fungsi tanpa
pengembalian nilai (menggunakan void) dan fungsi yang mengembalikan
nilai dengan tipe data tertentu. Sub program ini hanya perlu ditulis sekali,
tetapi dapat dipanggil berkali-kali oleh program utama atau sub program
lain.
Penyajian
6.1 Pendeklarasian Fungsi tanpa pengembalian nilai
Bentuk deklarasi fungsi tanpa pengembalian nilai (tanpa
parameter) adalah :
void NamaFungsi;
Bagian_deklarasi;
{
Bagian pernyataan;
}
Contoh :
1. void HitungLuasSegitiga();
2. float alas, tinggi, Luas;
3. {
4. cout<<“Masukkan panjang alas segi tiga :”; cin>>alas;
5. cout<<“Masukkan tinggi segi tiga :”; cin>>tinggi;
6. Luas=(1/2)*alas*tinggi;
7. cout<<“Luas segi tiga = “<<Luas<<endl;
8. }
42
6.2 Pemanggilan Fungsi tanpa pengembalian nilai
Fungsi tanpa pengembalian nilai bukan program yang berdiri
sendiri, jadi tidak bisa dieksekusi secara langsung. Fungsi baru
dilaksanakan dengan cara memanggil namanya dari program utama atau
sub program lain.
Ketika nama fungsi dipangil, kendali program secara otomatis akan
berpindah ke fungsi tersebut. Instruksi di dalam fungsi dilaksanakan.
Setelah semua selesai, kendali program berpindah secara otomatis ke
instruksi sesudah pemanggilan tersebut.
Contoh program utama untuk memanggil prosedur
HitungLuasSegitiga di atas :
int main(){
HitungLuasSegitiga();
}
6.3 Variabel Global dan Lokal
Variabel yang dideklarasikan dalam prosedur hanya dikenal di
badan sub program tersebut, sehingga disebut variabel Lokal.
Sedangkan variabel yang dideklarasikan sebelum program
utama(int main()) bersifat Global, karena dikenali di semua bagian
program.
1. //Program TukarNilai;
2. #include<iostream>
3. using namespace std;
4.
5. int A, B; //A,B variabel global
6. void Tukar();
7. int temp; //temp variabel lokal
8. {
9. temp= A;
10. A= B;
11. B=temp;
12. }
13. int main() {
14. cout<<“Masukkan nilai A = “<<endl;cin>>A;
15. cout<<“Masukkan nilai B = “<<endl;cin>>B;
16. Tukar();
17. cout<<“Nilai A sesudah ditukar = “<<A<<endl;
43
18. cout<<“Nilai B sesudah ditukar = “<<B<<endl;
19. }
6.4 Parameter
Kebanyakan program memerlukan pertukaran informasi antara
fungsi dengan pemanggilnya. Tiap item data ditransfer antara parameter
aktual dan parameter formal yang bersesuaian.
Parameter aktual adalah parameter yang disertakan waktu
pemanggilan, sedangkan parameter formal adalah parameter yang
dideklarasikan di dalam bagian Nama Fungsi.
Berdasarkan maksud penggunaannya, terdapat tiga jenis
parameter formal yang disertakan di dalam fungsi tanpa pengembalian
nilai :
1. parameter masukan
2. parameter keluaran
3. parameter masukan/keluaran
44
tanda ‘*’ di depan nama parameter formal dan pada saat pemanggilan, di
depan parameter aktual diberi tanda ‘&’.
1. Parameter Masukan (By value)
Contoh program menggunakan parameter masukan dalam deklarasi
fungsi tanpa pengembalian nilai:
1. //Program SegitigaKarakter;
2. #include<iostream>
3. using namespace std;
4.
5. int M;
6. char K;
7. void CetakSegitiga(char C; int N);
8. {
9. for(int i=1; i<=n; i++)
10. {
11. for(int j=1; j<=i; j++)
12. cout<<C;
13. cout<<endl;
14. }
15. }
16.
17. int main() {
18. cout<<“Masukkan karakter yang akan dicetak <<endl; cin>>K;
19. cout<<“Masukkan tinggi segi tiga :”; cin>>M;
20. CetakSegitiga(K,M);
21. }
1. //Program ABC;
45
2. #include<iostream>
3. using namespace std;
4.
5. int A, B, C;
6. void XYZ(int X,Y; int &Z);
7. {
8. //X dan Y parameter masukan, Z parameter keluaran}
9. X= X + 1;
10. Y= Y + 1;
11. Z = X + Y;
12. }
13.
14. int main()
15. {
16. A= 2;
17. B= 5;
18. XYZ(A,B,C); {Pemanggilan prosedur XYZ}
19. cout<<A<<" "<< B<<" "<<C); //Menampilkan nilai A, B, dan C setelah pem
anggilan prosedur
20. }
46
pemanggilnya juga berubah sesuai nilai keluaran yang dihasilkan
prosedur.
Program TukarNilai;
1. #include<iostream>
2. using namespace std;
3.
4. int X, Y;
5. void Tukar (int &A; int &B);
6. int temp;
7. {
8. temp = A;
9. A = B;
10. B=temp;
11. }
12. int main() {
13. X= 2; Y= 5;
14. Tukar (X,Y);
15. cout<<“Nilai X setelah ditukar = “<<X<<endl;
16. cout<<“Nilai Y setelah ditukar = “<<Y<<endl;
17. }
Penutup
6.5 Latihan Soal
1. Buatlah prosedur mencari bilangan terbesar dari 3 bilangan integer A,
B, dan C.
2. Buatlah prosedur menghitung nilai rata-rata dari N buah bilangan.
47
BAB VII - FUNGSI DENGAN PENGEMBALIAN NILAI
Pendahuluan
Pada bab ini akan dijelaskan sub program yag kedua, yaitu fungsi
yang mengembalikan nilai.
Penyajian
7.1 Definisi Fungsi
Fungsi adalah sub program yang memberikan/mengembalikan
sebuah nilai dari tipe tertentu. Sebagaimana halnya prosedur, fungsi
diakses dengan memanggil namanya. Selain itu, fungsi juga dapat
mengandung daftar parameter formal. Parameter formal pada fungsi
selalu berupa parameter masukan, karena parameter pada fungsi
merupakan masukan yang digunakan oleh fungsi tersebut untuk
menghasilkan nilai.
7.2 Pendeklarasian Fungsi
Deklarasi fungsi adalah :
Tipe_data NamaFungsi(daftar parameter masukan):;
bagian deklarasi
{
Bagian Pernyataan;
Return nilai_fungsi;
}
1. //Program Terbesar
2. #include<iostream>
3. using namespace std;
4.
5. int A,B,C,D,Z;
6. int Maks(int X,Y)
7. {
8. int temp;
9. if(X > Y) temp= X;
10. else temp = Y;
11. return temp;
12. }
13.
14. int main() {
15. A = 3; B = 6; C= 10; D = 8;
16. cout<<"Bilangan terbesar antara "<<A<<" dan "<< B<<" adalah "<<Maks(A,
B);
17. Z= Maks(C,D);
18. cout<<"Bilangan terbesar antara "<<C<<" dan "<<D<<" adalah "<< Z;
19. cout<<"Yang terbesar antara "<< A<<" "<<B<<" "<<C<<" dan "<<D;
20. If(Maks(A,B) > Maks(C,D))
21. cout<<" adalah = "<< Maks(A,B));
22. cout<<" adalah = "<< Maks(C,D));
23. }
Contoh 2 :
Penutup
7.4 Latihan Soal
1. Buatlah fungsi yang menerima masukan 2 titik A( x1, y1) dan B( x 2, y 2)
dan menghitung jarak kedua titik tersebut dengan rumus
jarak = d =
(x1 − x2)2 + ( y1 − y 2)2
2. Buatlah fungsi untuk mengembalikan nilai mutlak X.
50
BAB VIII - TIPE DATA ARRAY
Pendahuluan
Pada bab ini akan dijelaskan tipe data array dan penggunaannya.
Dengan memahami tipe data array, maka siswa dapat membuat program
yag berkaitan dengan manipulasi banyak data dengan tipe yang sama,
seperti masalah pencaria data atau pengurutan data.
Penyajian
Array atau larik terdiri atas bagian-bagian komponen yang memiliki
tipe data sama. Dalam penyimpanannya array selalu mempunyai jumlah
komponen yang tetap yang ditunjukkan oleh indeksnya.
8.1 Deklarasi Array
Variabel array dideklarasikan dengan mencantumkan tipe data dan
nama variabel yang diikuti dengan nomor indeks yang menyatakan
banyaknya lokasi memori yang ingin dibuat.
tipe data nama_variabel[indeks]
contoh int nilai[100]
Pada bahasa C/C++, no indeks dimulai dari 0, jadi pada contoh di atas,
indeks dari 0-99, sehingga bisa menampung 100 elemen bertipe integer.
8.2 Mengakses Data:
Cara mengakses data larik adalah dengan menunjukkan :
Nama_Larik[no.indeks] ;
Misal : x[1] → berarti kita mengakses data larik x pada no.indeks ke-1.
Keuntungan :
Menggunakan data larik, kita tidak akan kehilangan nilai dari suatu data.
Kelemahan :
Saat ditentukan suatu variabel bertipe data array maka ia akan
langsung mengambil tempat pada memory penyimpanannya sesuai
51
dengan tipe data yang digunakan pada array, baik nantinya semua
komponen pada array itu digunakan ataupun tidak.
8.3 Array Dimensi Banyak
Dalam pemrograman kadang kita menghadapi masalah saat kita
akan mendeklarasikan suatu matriks. Dengan adanya tipe data array
maka masalah itu dapat diselesaikan, yaitu dengan menggunakan array
dengan dimensi dua atau lebih yang kemudian dikenal dengan array
dimensi banyak.
Pendeklarasian :
tipe data Nama_Array [indeks1][ indeks2]
Contoh :
int matriks[10][ 10]
Berarti matriks itu akan mempunyai dimensi (10x10), namun itu hanya
batas atas dari indeks yang dipesan dalam memori penyimpanan (di atas
itu tidak akan disimpan), sedangkan apabila nantinya kita hanya
memasukkan jumlah baris misal 2 dan jumlah kolom 2 itu boleh saja
selama tidak lebih dari 10.
Entry-entry dari matriks tersebut dapat kita panggil dengan mengetikkan
Nama_Array[indeks] ;
dari contoh diatas berarti Matriks[2,3] yaitu entry dari matriks pada baris
kedua kolom ketiga.
8.4 Contoh Kasus menggunakan tipe data array
1. Program menghitung nilai maksimum, minimum, rata-rata dari
sejumlah data integer.
1. int main ()
2. {
3. int i,n,maks,min,jum,h;
4. int nilai[10];
5. float rerata;
6. cout<<"Banyaknya data =";
7. cin>>n;
8. jum=0;
52
9. for (i=1;i<=n;i++)
10. {
11. cout<<"Data ke - " <<i<<"= ";
12. cin>>nilai[i-1];
13. jum =jum + nilai[i-1];
14. }
15. rerata= float(jum)/n;
16. maks=nilai[0];
17. min=nilai[0];
18. for (i=1;i<=n-1;i++)
19. {
20. if (nilai[i]>maks)
21. maks=nilai[i];
22. if (nilai[i]<min)
23. min=nilai[i];
24. }
25. cout<<"Nilai Terbesar ="<<maks<<endl;
26. cout<<"Nilai Terkecil ="<<min<<endl;
27. cout<<"Nilai Rata-rata ="<<rerata<<endl;
28. }
1. #include <iostream.h>
2. using namespace std ;
3. int main(){
4. //deklarasi
5. int matrix_a[3][3],matrix_b[3][3],matrix_c[3][3];
6. int i,j;
7. char opr;
8. //input nilai matriks ke-1 dari baris dan kolom
9. for(i=1;i<=3;i++){
10. for(j=1;j<=3;j++){
11. cout<<"Masukkan matriks(1) nilai baris ke-"<<i<<"kolom ke-
"<<j<<" : ";
12. cin>>matrix_a[i-1][j-1];
13. }
14. cout<<endl;
15. }
16. //output matriks ke-1
17. for(i=1;i<=3;i++){
18. for(j=1;j<=3;j++){
19. cout<<matrix_a[i-1][j-1]<<"\t";
20. }
21. cout<<endl;
22. }
23. //input nilai matriks ke-2 dari baris dan kolom
53
24. for(i=1;i<=3;i++){
25. for(j=1;j<=3;j++){
26. cout<<"Masukkan matriks(2) nilai baris ke-"<<i<<"kolom ke-
"<<j<<" : ";
27. cin>>matrix_b[i-1][j-1];
28. }
29. cout<<endl;
30. }
31. //output matriks ke-2
32. cout<<endl;
33. for(i=1;i<=3;i++){
34. for(j=1;j<=3;j++){
35. cout<<matrix_b[i-1][j-1]<<"\t";
36. }
37. cout<<endl;
38. }
39. //Input Operator
40. cout<<"Tulis operator ";
41. cin>>opr;
42. //switching operator
43. for(i=1;i<=3;i++){
44. for(j=1;j<=3;j++){
45. switch(opr){
46. case '+' : matrix_c[i-1][j-1] = matrix_a[i-1][j-
1] + matrix_b[i-1][j-1];
47. break;
48. case ‘-‘ : matrix_d[i-1][j-1] = matrix_a[i-1][j-
1] - matrix_b[i-1][j-1];
49. break;
50. }
51. }
52. }
53.
54. //Output Hasil matriks dari Operator +
55. cout<<endl;
56. for(i=1;i<=3;i++){
57. for(j=1;j<=3;j++){
58. cout<<matrix_c[i-1][j-1]<<"\t";
59. }
60. cout<<endl;
61. }
62. //Output Hasil matriks dari Operator -
63. cout<<endl;
64. for(i=1;i<=3;i++){
65. for(j=1;j<=3;j++){
66. cout<<matrix_d[i-1][j-1]<<”\t”;
67. }
68. cout<<endl;
69. }
70. }
54
8.5 Array di dalam Fungsi
Berikut adalah program untuk menentukan rerata, maksimum dan
minimum pada array dengan menggunakan fungsi.
1. #include <iostream>
2. #include <conio.h>
3. using namespace std;
4. typedef int larik[100000];
5.
6. void bacadata(larik x, int& n)
7. {
8. srand(time(NULL));
9. cout << "banyak data :";
10. cin >> n;
11. for (int i = 1; i <= n; i++) {
12. x[i] = rand() % 100 + 1;
13. }
14. }
15. float rerata(larik y, int m)
16. {
17. long long sum = 0;
18. for (int i = 1; i <= m; i++)
19. sum += y[i];
20. return (float)sum / m;
21. }
22.
23. void maxmin(larik x, int n, int& max, int& min)
24. {
25. max = x[1];
26. min = x[1];
27. for (int i = 2; i <= n; i++)
28. if (x[i] > max)
29. max = x[i];
30. else if (x[i] < min)
31. min = x[i];
32. }
33.
34. void cetak(larik x, int n)
35. {
36. for (int i = 1; i <= n; i++) {
37. cout << x[i] << " ";
38. if (i % 20 == 0)
39. cout << endl;
40. }
41. cout << "\n";
42. getch();
43. }
44.
45. int main()
46. {
47. larik y;
55
48. int m, max, min;
49. bacadata(y, m);
50. cetak(y, m);
51. cout << "\nrata-rata = " << rerata(y, m) << endl;
52. maxmin(y, m, max, min);
53. cout << "maximum = " << max << endl;
54. cout << "minimum = " << min << endl;
55. getch();
56. return 0;
57. }
Penutup
8.5 Latihan Soal
1. Buatlah program untuk menghitung nilai standar deviasi dari
sejumlah data nilai ujian (0-100)
2. Buatlah program untuk menampilkan matriks transpose dari
suatu matriks.
56
BAB IX - TIPE DATA STUKTUR
Pendahuluan
Pada bab ini akan dijelaskan tipe data struktur dan array dengan
elemennya bertipe struktur.
Penyajian
9.1 Deklarasi Struktur
Struktur adalah sekumpulan variabel yang masing-masing tipe
datanya bisa berbeda dan dikelompokkan ke dalam satu nama.
Deklarasi :
struct nama_struktur{
tipedata namafield1;
tipedata namafield2;
tipedata namafieldN;
}
Contoh :
struct mhs{
char NIM[5];
char Nama[30];
float IPK;
}
57
Contoh : cout<<mhs.NIM;
9.3 Array bertipe Struktur
Untuk bisa memanipulasi sejumlah data bertipe struktur maka
digunakan array dengan elemen bertipe struktur.
Contoh : untuk menyimpan 100 data mahsiswa yang setiap data siswa
terdiri dari NIM, Nama, dan IPK adalah sebagai berikut :
typedef struct siswa {
char NIM[5];
char Nama[30];
float IPK;
}mhs;
mhs data_mhs[100];
9.4 Contoh Kasus
1. Program membaca dan menampilkan data siswa yang terdiri dari NIM,
Nama, dan IPK :
1. #include <iostream.h>
2. #include <conio.h>
3. int main()
4. {
5. struct siswa {
6. char nim[5];
7. char nama[30];
8. float ipk;
9. } mhs;
10. cout<<"Masukkan NIM : ";
11. cin.getline(mhs.nim,5);
12. cout<<"Masukkan Nama : ";
13. cin.getline(mhs.nama,30);
14. cout<<"Masukkan IPK : ";
15. cin>>mhs.ipk;
16. cout<<"Data siswa yang dimasukkan : "<<endl;
17. cout<<"NNIM Siswa : "<<mhs.nim<<endl;
18. cout<<"Nama Siswa : "<<mhs.nama<<endl;
19. cout<<"IPK Siswa : "<<mhs.ipk;
20. getch();
21. }
58
2. Program membaca dan menampilkan sejumlah data siswa, dengan
setiap data siswa terdiri dari NIM, Nama, dan IPK :
1. #include <iostream.h>
2. #include <conio.h>
3. int main ()
4. {
5. int i,n;
6. struct siswa {
7. char nim[5];
8. char nama[30];
9. float ipk;
10. };
11. struct siswa mhs[5];
12. cout<<"Barapa data siswa ?";
13. cin>>n;
14. for (i=0;i<n;i++)
15. {
16. cout<<"Siswa ke - "<<i+1<<": "<<endl;
17. cout<<"Masukkan NIM : ";
18. cin>>mhs[i].nim;
19. cin.getline(mhs[i].nama,30);
20. cout<<"Masukkan Nama : ";
21. cin.getline(mhs[i].nama,30);
22. cout<<"Masukkan IPK : ";
23. cin>>mhs[i].ipk;
24. }
25. cout<<"Data siswa yang dimasukkan : "<<endl;
26. for (i=1;i<=n;i++)
27. {
28. cout<<"Siswa ke - "<<i<<": "<<endl;
29. cout<<"NIM : "<<mhs[i-1].nim<<endl;
30. cout<<"Nama : "<<mhs[i-1].nama<<endl;
31. cout<<"IPK : "<<mhs[i-1].ipk<<endl;
32. cout<<endl;
33. }
34. getch();
35. }
59
9.5 Fungsi dalam struktur
Fungsi dapat didefinisikan dalam struktur sehingga lebih
sederhana dan dapat mengurangi jumlah parameternya.
Sebagai contoh perhatikan program berikut :
1. #include <iostream>
2. #include <string.h>
3. #include <conio.h>
4. using namespace std;
5.
6. typedef struct {
7. string no_hp, nama;
8. string Operator()
9. {
10. string kartu;
11. if (no_hp[4] == 49 && no_hp[5] == 49)
12. kartu = "Halo";
13. else if (no_hp[4] == 49)
14. kartu = "Simpati";
15. else if (no_hp[4] == 53 && no_hp[5] == 50)
16. kartu = "As";
17. else if (no_hp[4] == 55 || (no_hp[4] == 49 && no_hp[5] == 56))
18. kartu = "XL";
19. else if (no_hp[4] == 51)
20. kartu = "Axis";
21. else if (no_hp[4] == 57)
22. kartu = "Tri";
23. else if (no_hp[4] == 53 || no_hp[4] == 54)
24. kartu = "M3";
25. else
26. kartu = "Operator lain";
27. return kartu;
28. }
29. } kontak;
30. typedef kontak larik[102];
31. int i, kk = 0;
32. void buatdata(larik x, int& n)
33. {
34. char c, d, e;
35. int k, i, j;
36. bool b, cek[10];
37. cout << "banyak kontak : ";
38. cin >> n;
39. srand(time(NULL));
40. for (i = 1; i <= n; i++) {
41. x[i].no_hp = "+628";
42. for (j = 0; j < 10; j++) {
43. c = rand() % 9;
44. x[i].no_hp += 49 + c;
45. }
60
46. x[i].nama = "";
47. for (j = 0; j < 10; j++) {
48. d = (65 + rand() % 20);
49. x[i].nama += d;
50. }
51. }
52. }
53.
54. void cetak(larik x, int n)
55. {
56. int i, j, p;
57. for (i = 1; i <= n; i++) {
58. cout << x[i].nama << " "
59. << " " << x[i].no_hp << " " << x[i].Operator();
60. cout << endl;
61. }
62. cout << endl;
63. }
64.
65. void cetakOperator(larik x, int n, string noperator)
66. {
67. for (int i = 1; i <= n; i++) {
68. if (x[i].Operator() == noperator) {
69. cout << x[i].nama << " "
70. << " " << x[i].no_hp << " " << x[i].Operator();
71. cout << endl;
72. }
73. }
74. }
75.
76. int main()
77. {
78. int n;
79. larik x, y, z;
80. buatdata(x, n);
81. cetak(x, n);
82. cetakOperator(x, n, "Simpati");
83. getch();
84. return 0;
85. }
Penutup
9.6 Latihan Soal
1. Buatlah program menyimpan suatu titik koordinat dalam struktur.
2. Buatlah program menyimpan sejumlah titik koordinat.
3. Buatlah program untuk menyimpan sejumlah bilangan pecah
rasional, dan menampilkan bilangan pecahan tersebut yang
nilainya paling besar.
61
BAB X - REKURSI
Pendahuluan
Pada bab ini dijelaskan konsep rekursi dan contoh penggunaannya.
Penyajian
Suatu subprogram tidak hanya bisa memanggil sub program lain,
tetapi juga bisa memanggil dirinya sendiri. Cara ini dikenal dengan
sebutan rekursi.
Rekursi banyak dipakai pada persoalan yang dapat dipecahkan
secara induktif. Misalnya untuk menghitung faktorial.
1, jika m = 0
m! =
1x 2 x3 x 4....xm jika m 0
Coba pada cout << fact(3) << endl; maka hasilnya adalah 6.
62
10.2 Subprogram Rekursif
Rekursi juga bisa diterapkan pada subprogram secara umum
(fungsi tanpa pengembalian nilai). Berikut contoh fungsi Balik :
63
Penutup
10.3 Latihan Soal
1. Lihat kembali Algoritma Euclidean untuk menghitung nilai FPB.
Buatlah subprogram untuk menghitung nilai FPB berdasarlan
Algoritma Euclidean, secara rekursif.
2. Buatlah fungsi rekursif dan non rekursif untuk menghitung nilai
XN, dngan X bilangan riil dan N bilangan bulat.
64
LATIHAN SOAL
BEGIN
FOR i=1 TO m DO
FOR j=1 TO n DO X[G[i,j]] = X[G[i,j]] + 1;
65
b. Program dua b
1. //program dua b
2. #include<iostream>
3. #include<stdlib.h>
4. #include<conio.h>
5. int main()
6. { int *x, i, n, t=0;
7. cin>>n;
8. x=new int[n];
9. for (i=1;i<=n;i++) {
10. x[i] = i%3+2*i;
11. t += x[i];
12. cout<<x[i]<<" ";
13. }
14. cout<<"\nNilai t = "<<t;
15. getch(); free(x); return 0;
16. }
66
4.
Tuliskan bagaimana output dari program komputer berikut :
1. #include <iostream>
2. using namespace std;
3. main()
4. {
5. int N = 5, x, i, t = 4, sum = 0, hasil;
6. for (i = 1; i <= N; i++) {
7. x = i + 3 * i - i % 5 / 3;
8. sum += x;
9. cout << x << " ";
10. switch (i) {
11. case 1: {
12. hasil = sum / 4;
13. break;
14. }
15. case 2: {
16. hasil = sum / 2;
17. break;
18. }
19. case 3: {
20. hasil = sum * 3 / 4;
21. break;
22. }
23. default: {
24. hasil = sum * i / N + i;
25. }
26. }
27. cout << hasil << endl;
28. t += hasil;
29. }
30. cout << " \n" << t;
31. }
5.
67
6. Diketahui fungsi sebagai berikut :
68
DAFTAR PUSTAKA
69