Instruksi case
digunakan sebagai
instruksi pemilihan Bentuk instruksi case:
dimana aksi yang akan case (variabel)
nilai-1 : aksi-1;
dilakukan bergantung nilai-2 : aksi-2;
nilai-3 :aksi-3;
pada nilai dari satu .
.
nilai n : aksi n
otherwise : aksi-x;
endcase.
CASE dan If then
else
Konstruksi CASE di atas dapat ekivalen dengan
struktur If then else bertingkat-tingkat seperti
berikut ini:
If ekspresi = nilai 1 then
aksi 1
else
if ekspresi = nilai 2 then
aksi 2
else
if ekspresim = nilai 3 then
aksi 3
.
.
.
If ekspresi = nilai n then
aksi n
else { otherwise}
aksi x
end if
end if
end if
endif
Contoh perbandingan penggunaan
if then else dan case
Program konversi angka ke teks { mencetak kata untuk angka 1
sampai angka 3 }
Deklarasi:
Deklarasi:
angka : integer { angka yang
dibaca} angka : integer {angka
yang dibaca}
ALGORITMA : Algoritma :
read (angka)
if angka = 1 then read (angka)
write (satu) case (angka):
else 1 : write (satu)
If angka = 2 then
write (dua) 2 : write (dua)
else 3 : write (tiga)
If angka =3 then otherwise write (angka
write (tiga)
yang dimasukkan salah)
else
write (angka yang end case
dimasukkan harus 1 s/d 3)
end if
contoh
Gaji karyawan pada sebuah perusahaan didasarkan
pada jam kerja dalam satu bulan serta posisi atau
golongannya dalam perusahaan itu. Upah per jam
menurut golongan adalah sebagai berikut:
Golongan upah/jam(Rp)
A 5000
B 6000
C 7500
D 9000
Apabila karyawan bekerja lebih dari 150 jam per minggu, maka
kelebihan jam kerja tersebut dihitung sebagai lembur dengan
upah/jam 25% di atas upah reguler. Buat sebuah algoritma yang
menerima nama, golongan, serta jam kerja karyawan, kemudian
tampilkan gaji totalnya dalam satu bulan.
Algoritma Gaji_Karyawan Case (golongan)
{ algoritma yang menerima nama, A : upah 5000;
golongan serta jam-kerja kemudian
B : upah 6000;
menampilkan total gaji yang diterima
karyawan } C : upah 7500;
D : upah 9000;
Definisi variabel default : write (golongannya
salah !);
real gaji, total, jamkerja,
lembur, upah; upah 0;
string nama; endcase
char golongan;
Rincian Langkah If (jam kerja > 150)
write (Masukkan nama then lembur (jamkerja 150)*
karyawan :); upah *1.25;
read (nama); gaji 150*upah;
write (Masukkan golongan else lembur 0;
nya :); endif
read (golongan ); total gaji + lembur;
write (Masukkan jam write (Gaji yang diterima sdr : ,
Contoh lain
Buatlah algoritma yang memungkinkan pengguan dapat
memilih untuk menentukan luas empat persegi panjang,
keliling empat persegi panjang, dan panjang diagonal persegi
panjang. Masukkan program adalah panjang dan lebar
persegi panjang.
Diagonal =
Bentuk umum : N
while (kondisi) do
..............
instruksi-instruksi Makna dari bentuk instruksi
.............. tersebut adalah : ulangi
endwhile ...instruksi-instruksi...
Perhatikan:
1. Ada instruksi yang berkaitan dengan kondisi
sebelum masuk ke while/do sehingga kondisi ini
terpenuhi dan penanggulangan bisa dilaksanakan.
Bila tidak, kemungkinan instruksi while tidak bisa
dijalankan.
2. Ada satu instruksi di antara instruksi-insruksi yang
diulang yang mengubah nilai variabel perulangan
agar pada satu saat kondisi perulangan tidak
terpenuhi sehingga perulangan bisa berhenti, atau
jumlah perulangan bisa diatasi. Bila tidak, ada
kemungkinan perulangan berlangsung terus tak
berhingga.
Contoh 6:
Algoritma berikut ini menggunakan while/do untuk
menampilkan angka 1 hingga 100 secara berurutan.
Perhatikan bahwa perintah: angka 1 adalah kondisi
awal, sedangkan instruksi : angka angka + 1 adalah
instruksi yang
Algoritma bisa mengubah
perulangan_1 kondisiangka
{ mencetak hingga
1 tidak
terpenuhi,
hingga pada saat angka > 100.
100}
Deklarasi:
integer angka;
Deskripsi
angka 1;
while ( angka < 101) do
write (angka);
angka angka + 1;
Contoh 7:
Algoritma berikut ini menggunakan while/do dan juga if
then else untuk menampilkan syair anak ayam yang mati
mulai dari 10 hingga habis. Langkah utama untuk algoritma ini
adalah : berikan nilai awal 10 hingga ke jumlah anak ayam,
Algoritma perulangan_2 { mencetak syair anak ayam}
kemudian lakukan perulangan while selama masih ada anak
ayam (anak>0), dimana dalam perulangan ini ditampilkan anak
Definisi variabel
ayamku turun ... kemudian jumlah anak dikurangi satu.
integer anak;
Rincian langkah
anak 10;
if (anak > 0)
endif.
2. Perulangan Repeat - until
Bentuk umum:
repeat Instruksi-
..................... instruksi
Instruksi instruksi
.....................
until (kondisi).
kondi N
Makna dari bentuk si
instruksi tersebut adalah :
ulangi pelaksanaan Y
instruksi intruksi
hingga kondisi
terpenuhi.
Perhatikan:
1. Instruksi-instruksi akan diulang
hanya pabila kondisi tidak Contoh 8 :
Algoritma perulangan_4
{ menghitung jumlah 1 + 2+ 3+ ...+ N, N dimasukkan lewat keyboard}
Deklarasi
integer cacah , N, jumlah;
Deskripsi
write (Masukkan nilai N : );
read (N);
cacah 1;
jumlah 0;
repeat
Jumlah Jumlah + cacah;
cacah cacah + 1;
until (cacah > N).
write ( Jumlahnya = , Jumlah);
3. Perulangan for
Bentuk umum:
for (var = awal to akhir step n) Var=awal
........................
Instruksi instruksi Y Var=akh
ir?
.......................
N
endfor
Instruksi-
instruksi
Ulangi instruksi instruksi
tersebut berdasarkan Var=var
variabel perulangan mulai +n
dari nilai awal hingga nilai
akhir dengan perubahan
sebesar n.
Contoh
1. Algoritma menampilkan halo .... sebanyak 10 kali
dengan instruksi for.
Deklarasi
integer cacah;
Deksripsi
for (cacah = 1 to 10 step 1)
write (halo ...);
end for.
Contoh perulangan for
(contd..)
Algoritma menghitung nilai rata dari N
buah bilangan yang dimasukkan lewat
keyboard, menggunakan instruksi for.
Algoritma Perulangan { menghitung nilai rata dari N buah bilangan }
Deklarasi
integer cacah, N, angka, Jumlah;
real Rata;
Deskripsi
write (Masukkan berapa bilangan :);
read (N);
Jumlah 0;
for (cacah = 1 to N step 1)
write {Masukkan bilangan ke , cacah);
read (angka);
Jumlah Jumlah + angka ;
endfor
Rata Jumlah / N;
write (Rata-rata = , Rata);
for : by ProgramC++
// program CetakSegitigaBintang
// mencetak segitiga bintang dengan tinggi segitiga = N
#include <iostream>
using namespace std;
main ()
{
// Deklarasi
Int N, i, j;
// Algoritma:
cout << Tinggi segitiga N = ?; cin>> N;
// cetak bagian segitiga dari baris 1 sampai N
for (i=1; i<=N; i++)
{
for (j=1; j<=1; j++)
{
cout << *;
}
cout << endl;
}
}
Program penjumlahan deret
// PROGRAM PenjumlahanDeret repeat
While // Menjumlahkan deret // 1 + 2 + 3 + ... + N
// dengan N adalah bilangan bulat positif.
# include <iostream>
# includes <iostream> using namespace std;
using namespace std;
main ( )
{
main ( )
// Deklarasi
{
int N ;
// Deklarasi int i ;
int N ; int sum;
int i ;
int sum; // Algoritma:
//Algoritma: cout << Berapa N ? ; cin >> N;
cout << Berapa N ? ; cin >> N; sum = 0;
sum = 0; i =1 ;
i =1 ; do
{
While ( i<= N)
sum = sum + i;
(
i++;
Sum = sum + i; while ( i <= N};
i++; Cout << Jumlah deret = << sum << endl;
) }
Cout << Jumlah deret = << sum <<
endl;
}
for
menggunakan
# include <iostream>
main ( )
// Deklarasi
int N ;
int i ;
int sum;
// Algoritma:
sum = sum + i;
1. Susun sebuah
algoritma yang
menerima input berupa
2. Susun sebuah algoritma
sebuah bilangan bulat X
untuk menghitung jumlah deret
> 1 kemudian
berikut ini dengan N buah suku
menghitung rata-rata
dimana N dibaca dari keyboard:
dari bilangan bulat yang
ada antara 1 hingga X. 1 1/3 + 1/5 1/7 + 1/9 1/11 + ..... +
1/N
N adalah bilangan bulat positif (dibaca
terlebih dahulu).
Jawaban soal 1 menggunakan C++
endwhile endwhile
Jawaban soal 2 (menghitung jumlah deret pecahan)
Program Penjumlahan deretpecahan
{Menjumlahkan deret yang berbentuk
while k N do
pecahan:
If i mod 2 =1 then { suku
1 + 1/3-1/5+1/7-1/9+...+ 1/N
Nilai N dibaca ditentukan terlebih dahulu.} ke-i ganjil}
Deklarasi : jumlah jumlah + 1/k
jumlah : real {jumlah deret}
else { suku ke-i genap}
N : integer {penyebut pd suku
terakhir, N >0} jumlah jumlah 1/k
i : integer { suku ke-i } endif
k : integer { penyebut sku ke-i}
ii+1 {tinjau suku berikutnya
}
ALGORITMA :
k k +2 {tinju penyebut suku
read (N)
berikutnya}
Jumlah 0
i 1 { suku pertama} end while {k > N)
k 1 { penyebut suku pertama } write (jumlah)
Prosedur : subprogram(subroutine) & fungsi)
1. Modularisasi : suatu
program yang besar dan
kompleks dapat dibagi ke
dalam beberapa prosedur
sehingga setiap prosedur 2. Simplifikasi : dalam suatu program sering
diperlukan suatu tugas yang harus berulangkali
merupakan bagian yang dikerjakan dengan nilai variabel yang berbeda. Agar
tidak merepotkan maka tugas ini cukup ditulis sekali
mudah dikerjakan. Dengan saja dalam bentuk prosedur yang kemudian dipanggil
berulangkali sesuai kebutuhan.
Mulai Return
Mulai
Deklarasi Algoritma
{deklarasi variabel-variabel persegi panjang
prosedur}
Prosedur Prosedur Prosedur Prosedur
Deskripsi Menu menghit Hitung Tampil
ung Luas Diagonal Hasil
{ deskripsi dari tugas-tugas
prosedur}
Prosedur Prosedur
baca hitung
Dimensi Keliling
contoh
Algoritma Empat_Persegi_panjang Deskripsi
pilihan 0;
{ algoritma ini menunjukkan contoh repeat
pemakaian prosedur untuk menghitung menu;
luas, keliling, dan diagonal dari empat write (Masukan pilihan anda :);
Deklarasi Deklarasi.
Deklarasi
integer tanggal, bulan, tahun;
string nama_bulan;
Berikut ini contoh yang melksanakan fungsi Nama_bulan (input integer bln) string;
fungsi matematis f(x) = x2 + 8x + 10 Deskripsi
write (tanggal :); read (tanggal);
write (bulan :) ; read (bulan);
write (tahun :) ; read (tahun);
Fungsi F (input real x) real
Nama_bulan Nama_bulan (bulan);
[menghitung nilai fungsi write (tanggal, , nama_bulan, , tahun);
f(x) = x^2 + 8x + 10
fungsi Nama_bulan (input integer bln) string;
{fugsi yang mengembalikan nama bulan berdasarkan angka
bulan}
Deklarasi Deklarasi
string nama_bln;
real y; Deskripsi
case (bln);
Deksripsi 1 : nama_bln Januari;
2 : nama_bln februari;
y x*x + 8x + 10 3 : nama_bln Maret ;
return y 4 : nama bln April;
...
11 : nama bln November;
12: nama_bln desember;
Endcase
larik
for i 1 to 6 do
DEKLARASI
x : array [1..6] integer
write (x[i])
i : integer end for
jumlah, u : real
{hitung nilai rata-rata}
ALGORITMA
jumlah 0
{baca 6 buah nilai integer, simpan di x[i], i for i 1 to 6 do
= 1,2,...6} jumlah jumlah + x[i]
for i 1 to 6 do endfor
read (x[i]) u jumlah/6
end for write(u)
OPERASI MATRIKS
Matriks adalah larik dua dimensi, memiliki
dimensi baris dan dimensi kolom.
1. Matriks bujur sangkar: jmlhbaris=jmlh
kolom
Operasi matriks:
2. Matriks segi-empat
1. Menjumlahkan dua matriks
=jmlhbarisjmlhkolom
2. Mengalikan dua matriks
3. Matriks diagonal : elemen2nya 0
kecuali diagonal 3. Mencari determinan matriks
4. Matriks identitas : elemen diagonalnya 4. Tranpose
bernilai 1 semua 5. Invers matriks
5. Matriks segitiga atas 6. Persamaan linear
6. Matrisk segitiga bawah
Menjumlahkan dua matriks
Algoritma jumlah matriks {menjumlahkan dua matrik}
Deklarasi
Const integer brs=3, klm=3;
Integer A[brs][klm],B[brs][klm],C[brs][klm];
Integer ibx, ikx;
Deskripsi
{Menjumlahkan matriks A dan B}
{baca matriks A} for (ibx=1 to brs step 1)
for (ibx=1 to brs step 1) for (ikx=1 to klm step 1)
for (ikx=1 to klm step 1) C[ibx][ikx] A[ibx][ikx]+B[ibx][ikx];
endfor.
read (A[ibx][ikx]);
endfor.
endfor.
endfor {menampilkan matriks C }
for (ibx=1 to brs step 1)
for (ikx=1 to klm step 1)
{baca matriks B} write (C[ibx][ikx]);
for (ibx=1 to brs step 1) endfor.
for (ikx=1 to klm step 1) write ();
endfor.
read (B[ibx][ikx]);
endfor.
endfor.
Mengalikan dua matriks
Algoritma Perkalian_Matriks {mengalikan matriks}
{mengalikan dua buah matriks C=A x B}
for (i=1 to brsB step 1)
Deklarasi for (j=1 to klmB step 1)
integer brsA=3, klmA=4, brsB=4,
C[i][j] 0;
klmB=5;
integer A [brsA][klmA],B[brsB][brsB];
for (k=1 to klmA step 1)
integer i,k,j; C[i][j]=C[i][j] + A[i][k]*B[k][j];
endfor.
Deksripsi endfor.
{baca matriks A} endfor.
for (i=1 to brsA step 1)
for (k=1 to klmA step 1) {menampilkan hasil perkalian}
read (A[i][k]);
for (i=1 to brsA step 1)
endfor.
endfor. for (j=1 to klmB step 1)
write (C[i][j]);
endfor.
{baca matriks B} write ( );
for (i=1 to brsB step 1) endfor.
for (j=1 to klmB step 1)
read (B[i][j]);
endfor.
KUIS
1. Tampilkan bilangan genap
dari
2- 100
1. 2.
Catatan tambahan