Meyla Yan SariPage 18
Tujuan Instruksional Khusus :
Setelah Menyelesaikan praktek ini mahasiswa dapat :
Mengetahui dan menjelaskan tentang struktur algoritma percabangan bersyarat ( if-then-else bertingkat, case ).
Membuat algoritma dalam bentuk flowcharts dan pseudocode yang melibatkan permasalahanpermasalahan percabangan bersyarat(if-then-else bertingkat, case)dimana komputer harus melakukan pemilihan untuk menuju ke salah satu cabang berdasarkan kondisi tertentu.
Mengimplementasikan algoritma yang telah dibuat ke dalam bahasa pemrograman dengan menggunakan bahasa C.
Alat dan Bahan
PC minimal 486
Disket DOS/Start Up Win98 , Program C, dan Data
Dasar teori
Salah satu proses didalam suatu algoritma adalah proses percabangan atau seleksi atau
kondisional bertingkat. Dalam algoritma ada beberapa struktur percabangan yang dikenal antara
lain :
1. If-Then-Else bertingkat
2. Switch-Case
1. if-then-else bertingkat
Struktur diagram alirnya :
Catatan :
KONDISI adalah ungkapan yang digunakan untuk menyatakan suatu yang disyaratkan
(ungkapan akan bernilai boolean( kondisi true atau false))
2. Struktur Case
Struktur case merupakan struktur yang dirancang khusus untuk menangani pengambilan
keputusan yang melibatkan sejumlah alternatif.
Struktur diagram alirnya :
Keterangan :
Ungkapan atau ekpresi dapat berupa ungkapan bernilai integer atau bertipe karakter. Setiap alternatif (alternatif_1, alternatif_2, alternatif_3…… alternatif_n) dapat berupa alternatif integer
atau karakter. Setiap proses ( proses_1, proses_2, proses_3 …. Proses_n) dapat berupa proses tunggal atau proses jamak. Seperti halnya pengujian dalam IF-ELSE, pengujian dalam CASE juga dimulai dari alternatif_1 . Bila suatu nilai ungkapan sesuai dengan nilai alternatif, maka proses yang ada dalam alternative tersebut yang akan dikerjakan dan diakhiri dengan kata kunci break ( keluar dari kalang case). Bila nilai ungkapan tidak ada yang cocok dengan semua nilai alternatif maka proses otherwise yang dikerjakan.
Langkah Kerja
Hidupkan komputer anda !
Jalankan Microsoft Visio, dengan cara menekan tombol Start>Program>MS Office 2000>Microsoft Visio. Selanjutnya gambarkanlah algoritma dari permasalahan berikut ini dan simpan dalam satu nama file : Lat04.vsd
Jalankan Microsoft Word, dengan cara menekan tombol Start>Program>MS Office 2000>Microsoft Word. Selanjutnya tuliskan algoritma dari permasalahan berikut ini dan simpan dalam satu nama file : Lat04.doc.
Buatlah algoritma dengan bentuk flowcharts dan pseudocode untuk permasalan berikut ini:
Diketahui tabel konversi nilai sebagai berikut :
Tugas anda adalah membuat algoritmanya untuk memasukkan nilai angka yang diperoleh mahasiswa dan memprosesnya sehingga tampil nilai huruf dan statusnya dari batasan nilai seperti tabel konversi nilai tersebut.
Gunakan perpaduan struktur If-Then-Else menyelesaikan permasalahan ini.
Algoritma_Nilai
{Menentukan nilai huruf dan statusnya dari nilai yang diinputkan}
Kamus / Deklarasi
Var nilai: integer
{variabel nilai bertipe integer }
Algoritma (Deskripsi)
Input (nilai)
{ menginputkannilai yang diperoleh mahasiswa }
If (nilai>=80) then
output("Nilai Huruf : A dan Status : LULUS")
else if (nilai>=65) then
output("Nilai Huruf : B dan Status : LULUS")
else if (nilai>=50) then
output("Nilai Huruf : C dan Status : LULUS")
else if (nilai>=30) then
output("Nilai Huruf : D dan Status : ULANG")
else
output("Nilai Huruf : E dan Status : ULANG")
endif
endif
endif
endif
Buatlah algoritma dengan bentuk flowcharts dan pseudocode untuk permasalan
berikut ini:
Diketahui kode hari 1 s/d 7 yang mewakili nama hari Senin s/d Minggu.
Tugas anda adalah membuat algoritmanya untuk memasukkan kode hari tersebut dan memprosesnya sehingga tampil nama hari yang sesuai dengan kode harinya.
Gunakan struktur If-Then-Else dan struktur Case untuk menyelesaikan
permasalahan ini.
Algoritma Menentukan_Nama_Hari
{ Menampilkan nama hari berdasarkan kode hari yg diinputkan }
Kamus
kode : integer
Algoritma
input (kode) {menginputkan bilangan integer ke variable kode}
If (kode = 1) Then
output ('Hari : Senin')
Else If(kode = 2) Then
output('Hari : Selasa')
Else If(kode = 3) Then
output('Hari : Rabu')
Else If(kode = 4) Then
output('Hari : Kamis')
Else If(kode = 5) Then
output('Hari : Jumat')
Else If(kode = 6) Then
output('Hari : Sabtu')
Else
output('Hari : Minggu')
End If
Algoritma Menampilkan_ Hari
{menampilakan hari dari kode angka yang diinputkan}
Deklarasi
Kode_hari : integer
Deskripsi
Input (kode_hari) {memasukkan kode 1 s/d 7 (menentukan nama hari)}
case (kode_hari)
case 1 : write ('Hari Senin')
case 2 : write ('Hari Selasa')
case 3 : write ('Hari Rabu')
case 4 : write ('Hari Kamis')
case 5 : write ('Hari Jumat')
case 6 : write ('Hari Sabtu')
case 7 : write ('Hari Minggu')
otherwise write ('Masukkan kode hari 1 s/d 7')
endcase
Buatlah algoritma dengan bentuk flowcharts dan pseudocode untuk permasalan berikut ini:
Diketahui kode bulan 1 s/d 12 yang mewakili nama bulan Januari s/d Desember.
Tugas anda adalah membuat algoritmanya untuk memasukkan kode bulan tersebut dan memprosesnya sehingga tampil nama bulan dan jumlah hari dari bulan tersebut yang sesuai dengan kode bulannya.
Gunakan perpaduan struktur If-Then-Else dan struktur Case untuk menyelesaikan permasalahan ini.
Jawab :
Algoritma Kode_Bulan
{ Menampilkan nama bulan dan jumlah hari berdasarkan kode bulan yg diinputkan }
Kamus
kode_bln : integer
Algoritma
input (kode_bln) {menginputkan bilangan integer ke variable kode}
If (kode_bln = 1) Then
write ('Nama bulan : Januari')
write ('Jml hari : 31 Hari')
Else If(kode_bln = 2) Then
write ('Nama bulan : Februari')
write ('Jml hari : 28 hari')
Else If(kode_bln = 3) Then
write ('Nama bulan : Maret')
write ('Jml hari : 31 hari')
Else If(kode_bln = 4) Then
write ('Nama bulan : April')
write ('Jml hari : 30 hari')
Else If(kode_bln = 5) Then
write ('Nama bulan : Mei')
write ('Jml hari : 31 hari')
Else If(kode_bln = 6) Then
write ('Nama bulan : Juni')
write ('Jml hari : 30 hari')
Else If(kode_bln = 7) Then
write ('Nama bulan : Juli')
write ('Jml hari : 31 hari')
Else If(kode_bln = 8) Then
write ('Nama bulan : Agustus')
write ('Jml hari : 30 hari')
Else If(kode_bln = 9) Then
write ('Nama bulan : September')
write ('Jml hari : 31 hari')
Else If(kode_bln = 10) Then
write ('Nama bulan : Oktober')
write ('Jml hari : 30 hari')
Else If(kode_bln = 11) Then
write ('Nama bulan : November')
write ('Jml hari : 31 hari')
Else
write ('Nama bulan : Desember')
write ('Jml hari : 30 hari')
End If
Algoritma Kode_Bulan
{menampilkan nama bulan dan jumlah hari berdasarkan kode bulan yang diinputkan}
Deklarasi
Kode_bulan : integer
Deskripsi
Input (kode_bulan) {memasukkan kode 1 s/d 12}
case (kode_bilan)
case 1 : write ('Nama bulan : Januari')
write ('Jml hari : 31 hari')
case 2 : write t('Nama bulan : Februari')
write ('Jml hari : 28 hari')
case 3 : write ('Nama bulan : Maret')
write ('Jml hari : 31 hari')
case 4 : write ('Nama bulan : April')
write ('Jml hari : 30 hari')
case 5 : write ('Nama bulan : Mei')
write ('Jml hari : 31 hari')
case 6 : write ('Nama bulan : Juni')
write ('Jml hari : 30 hari')
case 7 : write ('Nama bulan : Juli')
write ('Jml hari : 31 hari')
case 8 : write ('Nama bulan : Agustus')
write ('Jml hari : 30 hari')
case 9 : write ('Nama bulan : September')
write ('Jml hari : 31 hari')
case 10 : write ('Nama bulan : Oktober')
write ('Jml hari : 30 hari')
case 11 : write t('Nama bulan : November')
write ('Jml hari : 31 hari')
case 12 : write ('Nama bulan : Desember')
write ('Jml hari : 30 hari')
other wise output ('kode yang anda masukkan salah')
endcase
Cobalah anda implementasikan permasalahan nomor 4, 5, dan 6 ke dalam bentuk program dengan menggunakan bahasa pemrograman Pascal.
Implementasi nomor 4
#include
void main()
{
int nilai;
printf("Masukan nilai : ");
scanf("%d",&nilai);
if(nilai >= 80)
{
printf("\nNilai huruf : A\n");
printf("Status : LULUS");
}
else if(nilai >= 65)
{
printf("\nNilai huruf : B\n");
printf("Status : LULUS");
}
else if(nilai >= 50)
{
printf("\nNilai huruf : C\n");
printf("Status : LULUS");
}
else if(nilai >= 30)
{
printf("\nNilai huruf : D\n");
printf("Status : ULANG");
}
else{
printf("\nNilai huruf : E\n");
printf("Status : ULANG");
}
}
Implementasi nomor 5
Menampilkan nama hari
#include
main()
{
int kode_hari;
printf("Masukan kode hari : ");
scanf("%i",&kode_hari);
if(kode_hari==1)
{
printf("\nHari Senin.");
}
else if(kode_hari==2){
printf("\nHari Selasa.");
}
else if(kode_hari==3){
printf("\nHari Rabu.");
}
else if(kode_hari==4){
printf("\nHari Kamis.");
}
else if(kode_hari==5){
printf("\nHari Jumat.");
}
else if(kode_hari==6){
printf("\nHari Sabtu.");
}
else{
printf("\nHari Minggu.");
}
}
#include
main ()
{
int kode;
printf ("masukkan kode (1 hingga 7) untuk menampilkan hari=");
scanf ("%d",&kode);
switch (kode)
{
case 1 : printf ("\nhari senin");break;
case 2 : printf ("\nhari selasa");break;
case 3 : printf ("\nhari rabu");break;
case 4 : printf ("\nhari kamis");break;
case 5 : printf ("\nhari jumat");break;
case 6 : printf ("\nhari sabtu");break;
case 7 : printf ("\nhari minggu");break;
default : printf ("\nkode yang anda masukkan salah");
}
}
Implementasi nomor 6
#include
main()
{
int kode;
printf("Masukan kode bulan : ");
scanf("%i",&kode);
if(kode ==1)
{
printf ("Bulan Januari, 31 hari");
}
else if(kode ==2)
{
printf ("Bulan Februari, 28 hari");
}
else if(kode ==3)
{
printf("Bulan Maret, 31 hari");
}
else if(kode ==4)
{
printf("Bulan April, 30 hari");
}
else if(kode ==5)
{
printf("Bulan Mei, 31 hari");
}
else if(kode ==6)
{
printf("Bulan Juni, 30 hari");
}
else if(kode ==7)
{
printf("Bulan Juli, 31 hari");
}
else if(kode ==8)
{
printf("Bulan Agustus, 30 hari");
}
else if(kode ==9)
{
printf("Bulan September, 31 hari");
}
else if(kode ==10)
{
printf("Bulan Oktober, 30 hari");
}
else if(kode ==11)
{
printf("Bulan November, 31 hari");
}
else{
printf("Bulan Desember, 30 hari");
}
}
#include
main()
{
int kode;
printf("Masukan kode bulan : ");
scanf("%i",&kode);
printf;
switch(kode)
{
case 1 :
printf("Bulan Januari banyaknya 31 hari");
break;
case 2 :
printf("Bulan Februari, banyaknya 28 hari");
break;
case 3 :
printf("Bulan Maret, banyaknya 31 hari");
break;
case 4 :
printf("Bulan April, banyaknya 30 hari");
break;
case 5 :
printf("Bulan Mei, banyaknya 31 hari");
break;
case 6 :
printf("Bulan Juni, banyaknya 30 hari");
break;
case 7 :
printf("Bulan Juli, banyaknya 31 hari");
break;
case 8 :
printf("Bulan Agustus, banyaknya 30 hari");
break;
case 9 :
printf("Bulan September, banyaknya 31 hari");
break;
case 10 :
printf("Bulan Oktober, banyaknya 30 hari");
break;
case 11 :
printf("Bulan November, banyaknya 31 hari");
break;
default:
printf("Bulan Desember, banyaknya 30 hari");
}
}
Pertanyaan Soal
Buatlah algoritma dan program yang dapat digunakan untuk menjumlahkan atau mengalikan atau mengurangkan atau membagi dua bilangan. (sekali dijalankan hanya mengerjakan salah satunya). Untuk mempermudah proses tersebut kendalikan dalam suatu menu utama.
Anda sekarang mengetahui struktur if–then-else secara bertingkat. Coba terangkan jalannya eksekusi algoritma atau program jika menemui struktur tersebut. Untuk mempermudah jawaban anda sertakan contoh sederhana dalam bentuk algoritma dan berikut programnya.
Demikian juga untuk struktur Case, coba terangkan jalannya eksekusi algoritma atau program jika menemui struktur tersebut. Untuk mempermudah jawaban anda sertakan contoh sederhana dalam bentuk algoritma dan berikut programnya.
Menurut pendapat anda mengapa semua permasalahan percabangan yang dapat diselesaikan dengan struktur if-then-else tidak mesti dapat diselesaikan menggunakan struktur Case ? Jawablah dengan singkat dan jelas. Untuk mempermudah jawaban anda sertakan contoh sederhana dalam bentuk algoritma dan berikut programnya.
Berikanlah kesimpulan dari praktik yang anda lakukan di jobsheet keempat ini .
Penutup
Dengan praktikum ini saya bisa mengerti permasalahan mana yang dapat diselesaikan dengan case atau dengan if then else bertingat
Daftar Pustaka
Jobsheet Algo 04.pdf
Handoko, S. 2011. BUKU AJAR LOGIKA & ALGORITMA.pdf. Semarang: Politeknik Negeri Semarang.
Lampiran
Jawab :
Operasi dua bilangan :
#include
#include
int jumlah (int a, int b)
{
int jml;
jml=a+b;
return (jml);
}
int kurang (int c, int d)
{
int krg;
krg=c-d;
return (krg);
}
int bagi (int e,int f)
{
int bg;
bg= e/f;
return (bg);
}
int kali (int g, int h)
{
int kl;
kl=g*h;
return (kl);
}
int main ()
{
int op_bil, a, b;
puts ("<<<<>>>>>");
puts ("1. penjumlahan");
puts ("2. pengurangan");
puts ("3. pembagian");
puts ("4. perkalian");
printf ("masukkan pilihan anda :)");
scanf ("%d",&op_bil);
switch (op_bil)
{
case 1:
puts ("anda memilih penjumlahan");
printf ("masukkan nilai bilangan pertama "); scanf ("%d",&a);
printf ("masukkan nilai bilangan kedua "); scanf ("%d",&b);
printf ("hasil penjumlahannya adalah %d\n",jumlah (a,b));
break;
case 2:
puts ("anda memilih pengurangan");
printf ("masukkan bilangan pertama "); scanf ("%d",&a);
printf ("masukkan bilangan kedua "); scanf ("%d",&b);
printf ("hasil pengurangannya adalah %d\n", kurang(a,b));
break;
case 3:
puts ("anda memilih pembagian");
printf ("masukkan bilangan pertama "); scanf ("%d",&a);
printf ("masukkan bilangan kedua "); scanf ("%d",&b);
printf ("hasil pembagiannya adalah %d\n",bagi (a,b));
break;
case 4:
puts ("anda memilih perkalian");
printf ("masukkan bilangan pertama "); scanf ("%d",&a);
printf ("masukkan bilangan kedua "); scanf ("%d",&b);
printf ("hasil perkaliannya adalah %d\n",kali (a,b));
break;
default :
printf ("pilihan yang anda masukkan salah!");
}
getch();
return 0;
}
Suatu program yang menggunakan struktur if then else bertingkat, maka program akan mengeksekusi suatu masukan dan memberikan nilai benar atau salah dari masukan tersebut, apabila bernilai benar, maka proses kondisi dibawahnya tidak dikerjakan, namun apabila bernilai salah, maka proses akan terus berjalan pada pengkondisian selanjutnya hingga end proses.
#include
void main()
{
char makan,minum;
printf("Apakah anda sudah makan (Y/N) ? ");
makan = getche();
printf(\n"Apakah anda sudah minum (Y/N) ? ");
minum = getchar();
if(makan=='Y' && minum=='Y')
{
printf("Anda sudah kenyang dan tidak haus.");
}else if(makan=='Y' && minum=='N'){
printf("Anda sudah kenyang tapi haus.");
}else if(makan=='N' && minum=='Y'){
printf("Anda lapar tapi tidak haus.");
}else{
printf("Anda lapar dan haus.");
}
}
Program dengan switch case akan mencocokan kondisi dengan inputan, apabila ada alternatif yang cocok, maka proses di dalam alternatif tersebut yang akan dieksekusi.
#include
#include
void main()
{
int a;
printf("Masukkan absen satu hingga tiga : ");
scanf("%i",&a);
switch(a)
{
case 1:
printf("absen 1 Meyla");
break;
case 2:
printf("absen 2 Yan");
break;
case 3:
printf("absen 3 Sari");
break;
default:
printf("Tidak tersedia");
}
}
Karena struktur case tidak dapat menggunakan operator logika yang bisa di implementasikan pada if then else bertingkat.
#include
void main()
{
int nilai;
printf("Masukan nilai : ");
scanf("%i",&nilai);
printf("\n");
if(nilai>80)
{
printf("lulus dengan Nilai A");
}else if(nilai>60){
printf("lulus dengan Nilai B");
}else{
printf("lulus dengan Nilai C");
}
}
#include
void main()
{
int nilai;
printf("Masukan nilai : ");
scanf("%i",&nilai);
printf("\n");
switch(nilai)
{
case 80:
printf("lulus dengan Nilai A");
break;
case 60:
printf("lulus dengan Nilai B");
break;
default:
printf("lulus dengan Nilai C");
}
}
Kesimpulan :
If then Else bertingkat : proses penyeleksian dengan beberapa kondisi. Apabila alternatif pertama bernilai false, maka akan lanjut ke alternatif berikutnya begitu seterusnya.
Switch Case : struktur yang dirancang khusus untuk menangani pengambilan keputusan yang melibatkan sejumlah alternatif. tidak semua masalah yang bisa diselesaikan IF then else bisa diselesaikan dengan Switch Case, karena switch case tidak bisa menggunakan operator logika.