Contoh Kasus A : Belajar Naik Motor

advertisement
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Contoh Kasus A : Belajar Naik Motor
Si Nono baru lulus SMA, dia dikasih sepeda motor oleh ayahnya dengan merk YAMAHAL . Namun
sayangnya motor tersebut bukan motor matic, jadi nono harus belajar mengenai memindahkan gigi
dengan aturan yang diberikan ayahnya gigi 1 untuk kecepatan 0-40 km/jam, gigi 2 untuk
kecepatan 41-60 km/jam, gigi 3 untuk 61-80 km/jam, dan gigi 4 untuk kecepatan lebih dari 80
km/jam. Tentukan apakah nono bisa mengendarai motor denga menggunakan gigi yang benar.
Input
Baris pertama gigi motor yang sedang dipakai (1≤G≤4), baris kedua diisi oleh kecepatan yang
sedang berjalan (0≤V≤180)
Output
1 – jika nono menggunakan gigi yang tepat
0 - jika nono menggunakan gigi yang salah
Contoh
No
Input
1 1
35
2 4
20
3 3
80
Output
1
0
1
Solusi:
Menggunakan Raptor Procedure dalam Raptor
Klik kanan di bagian tab main, sehingga muncul
Kemudian klik
, sehingga muncul
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 1 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Isi dengan nama procedure
Jenis parameter parameter masukan
Isi dengan parameter masukan
Untuk kasus di atas
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 2 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Kemudian buat flowchart-nya, untuk tab
Algoritma & Pemrograman I
gambar flowchart-nya adalah
Ver/Rev : 1/1
Halaman : 3 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Sedangkan untuk tab
gambar flowchart-nya adalah
Menggunakan Algoritma
Judul
: Algoritma untuk memeriksa apakah gigi motor yang digunakan sesuai dengan
kecepatan motor menggunakan Fungsi
Kamus
: Gigi_Motor_Sekarang
: INTEGER
Kecepatan_Motor_Sekarang
: INTEGER
Algoritma : FUNCTION CekGigiMotor(Gigi:INTEGER, Kec:INTEGER) : INTEGER
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 4 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
IF(Gigi=1 AND Kec<=40) THEN
CekGigiMotor1
ELSE
IF(Gigi=2 AND Kec<=60) THEN
CekGigiMotor1
ELSE
IF(Gigi=3 AND Kec<=80) THEN
CekGigiMotor1
ELSE
IF(Gigi=4 AND Kec>80) THEN
CekGigiMotor1
ELSE
CekGigiMotor0
ENDIF
ENDIF
ENDIF
ENDIF
END FUNCTION
{Algoritma Pemanggil}
INPUT Gigi_Motor_Sekarang
INPUT Kecepatan_Motor_Sekarang
OUTPUT CekGigiMotor(Gigi_Motor_Sekarang, Kecepatan_Motor_Sekarang)
Judul
Kamus
Algoritma
: Algoritma untuk memeriksa apakah gigi motor yang digunakan sesuai dengan
kecepatan motor menggunakan Prosedur
: Gigi_Motor_Sekarang
: INTEGER
Kecepatan_Motor_Sekarang
: INTEGER
Status_Benar
: INTEGER
: PROCEDURE CekGigiMotor(Gigi:INTEGER, Kec:INTEGER, Status :
INTEGER)
IF(Gigi=1 AND Kec<=40) THEN
Status 1
ELSE
IF(Gigi=2 AND Kec<=60) THEN
Status 1
ELSE
IF(Gigi=3 AND Kec<=80) THEN
Status 1
ELSE
IF(Gigi=4 AND Kec>80) THEN
Status 1
ELSE
Status 0
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 5 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
ENDIF
ENDIF
ENDIF
ENDIF
END PROCEDURE
{Algoritma Pemanggil}
INPUT Gigi_Motor_Sekarang
INPUT Kecepatan_Motor_Sekarang
CekGigiMotor(Gigi_Motor_Sekarang,
Status_Benar)
OUTPUT Status_Benar
Kecepatan_Motor_Sekarang,
Menggunakan Program (Bahasa C/C++)
//Program untuk memeriksa apakah gigi motor yang digunakan sesuai dengan kecepatan
//motor menggunakan Fungsi
#include <stdio.h>
//Fungsi Cek Gigi yang digunakan
int Fungsi_CekGigiMotor(int Gigi, int Kec){
if(Gigi=1 AND Kec<=40) {
return 1;
}else{
if(Gigi=2 AND Kec<=60) {
return 1;
}else{
if(Gigi=3 AND Kec<=80) {
return 1;
}else{
if(Gigi=4 AND Kec>80) {
return 1;
}else{
return 0;
}
}
}
}
}//End Function
//Program pemanggil
int main(){
//deklarasi variabel data
int Gigi_Motor_Sekarang;
int Kecepatan_Motor_Sekarang;
//Input
scanf("%d",&Gigi_Motor_Sekarang);
scanf("%d",&Kecepatan_Motor_Sekarang);
//Proses dan Output
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 6 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
//Panggil dan Output Fungsi
printf("%d\n",Fungsi_CekGigiMotor(Gigi_Motor_Sekarang,
Kecepatan_Motor_Sekarang));
return 0;
}
//Program untuk memeriksa apakah gigi motor yang digunakan sesuai dengan kecepatan
//motor menggunakan Prosedur
#include <stdio.h>
//Prosedur Cek Gigi yang digunakan
void Prosedur_CekGigiMotor(int Gigi, int Kec, int Status){
if(Gigi=1 AND Kec<=40) {
Status=1;
}else{
if(Gigi=2 AND Kec<=60) {
Status=1;
}else{
if(Gigi=3 AND Kec<=80) {
Status=1;
}else{
if(Gigi=4 AND Kec>80) {
Status=1;
}else{
Status=0;
}
}
}
}
}//End Prosedur
//Program pemanggil
int main(){
//deklarasi variabel data
int Gigi_Motor_Sekarang;
int Kecepatan_Motor_Sekarang;
int Status_Benar;
//Input
scanf("%d",&Gigi_Motor_Sekarang);
scanf("%d",&Kecepatan_Motor_Sekarang);
//Proses dan Output
//Panggil Prosedur
Prosedur_CekGigiMotor(Gigi_Motor_Sekarang,
Status_Benar);
//Output Prosedur
printf("%d\n",Status_Benar);
return 0;
}
Algoritma & Pemrograman I
Ver/Rev : 1/1
Kecepatan_Motor_Sekarang,
Halaman : 7 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Contoh Kasus B : Deret Angka
Deret
Suku ke
1+
1
3+
2
5+
3
7+
4
…+
…
????
n
Berdasarkan pola deret dari suku ke-1 sampai suku ke-4 bisa kita bilang bahwa deret tersebut
akan menjumlahkan semua bilangan ganjil. Oleh karena itu untuk suku ke-n isi deretnya adalah
(2n-1) kenapa bisa ini?cari sendiri jawabannya
Input
Baris pertama suku terakhir dari deret (1≤N≤10000)
Output
Jumlah Total deret
Contoh
No
Input
1 1
2 4
3 2
Output
1
16
4
Solusi:
Menggunakan Raptor Procedure dalam Raptor
Flowchart-nya, untuk tab
gambar flowchart-nya adalah
Sedangkan untuk tab
Algoritma & Pemrograman I
gambar flowchart-nya adalah
Ver/Rev : 1/1
Halaman : 8 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Menggunakan Algoritma
Judul
: Algoritma untuk menghitung deret bilangan ganjilmenggunakan Fungsi
Kamus
: N
: INTEGER
Jml_Deret_Ganjil : INTEGER
Algoritma : FUNCTION Sum_Deret Ganjil(N:INTEGER) : INTEGER
Jml_Deret_Ganjil  0
FOR I  1 TO N STEP 1 DO
Jml_Deret_Ganjil  Jml_Deret_Ganjil + ((2*i)-1)
ENDFOR
Sum_Deret_Ganjil  Jml_Deret_Ganjil
END FUNCTION
{Algoritma Pemanggil}
INPUT N
OUTPUT Sum_Deret Ganjil(N)
Judul
: Algoritma untuk menghitung deret bilangan ganjilmenggunakan Prosedur
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 9 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Kamus
Algoritma
: N
: INTEGER
Jml_Deret_Ganjil
: INTEGER
: PROCEDURE Sum_Deret Ganjil(N:INTEGER, Total: INTEGER)
Total  0
FOR I  1 TO N STEP 1 DO
Total Total+ ((2*i)-1)
ENDFOR
END PROCEDURE
{Algoritma Pemanggil}
INPUT N
Sum_Deret_Ganjil(N,Jml_Deret_Ganjil)
OUTPUT Jml_Deret_Ganjil
Menggunakan Program (Bahasa C/C++)
//Program untuk menghitung nilai pada deret bilangan ganjil menggunakan Fungsi
#include <stdio.h>
//Fungsi Hitung nilai deret bilangan ganjil
int Fungsi_Sum_DeretGanjil(int N){
Jml_Deret_Ganjil = 0;
for(int i=1;i<=N;i++) {
Jml_Deret_Ganjil = Jml_Deret_Ganjil + ((2*i)-1);
}
return Jml_Deret_Ganjil
}//End Function
//Program pemanggil
int main(){
//deklarasi variabel data
int N;
//Input
scanf("%d",&N);
//Proses dan Output
//Panggil dan Output Fungsi
printf("%d\n",Fungsi_Sum_DeretGanjil(N));
return 0;
}
//Program untuk menghitung nilai pada deret bilangan ganjil menggunakan Prosedur
#include <stdio.h>
//Prosedur Hitung nilai deret bilangan ganjil
void Prosedur_ Sum_DeretGanjil(int N, int Total){
Total = 0;
for(int i=1;i<=N;i++) {
Total = Total + ((2*i)-1);
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 10 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
}
}//End Prosedur
//Program pemanggil
int main(){
//deklarasi variabel data
int N;
//Input
scanf("%d",&N);
//Proses dan Output
//Panggil Prosedur
Prosedur_ Sum_DeretGanjil(N, Total);
//Output Prosedur
printf("%d\n",Total);
return 0;
}
Selanjutnya silahkan kerjakan studi kasus berikut ini (selesaikan dengan menggunakan
Fungsi dan/atau Prosedur)
Kasus A : Deret Angka
Dik deret bilangan berikut ini:
ଵ
ଶ
ଷ
1. + + + ⋯ +? ? ?
ଵ
ଷ
଻
2. 2 – 4 + 6 – 8 ± … ± ???
3. 1ଶ + 2ଷ + 3ସ + ⋯ +? ? ?
Input
Baris pertama suku terakhir dari deret (1≤N≤10000)
Output
Jumlah Total deret
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 11 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Kasus B : Permainan prima
Ada seorang penggemar bilangan prima ingin bermain-main dengan bilangan prima. Dia ingin
menginput banyak bilangan pada table array dan kemudian dia ingin mencari bilangan prima pada
table tersebut serta dia ingin menyulap semua bilangan primanya menjadi 0. Buatlah program
untuk membantu orang tersebut dengan menggunakan fungsi atau procedure!
Desain Tampilan:
--Menu Utama—
1. Input Bilangan
2. Tampilkan Bilangan Prima
3. Sulap Bilangan Prima jadi 0
Pilihan Anda :
Bila pilihan 1 : Baris pertama merupakan banyaknya baris (0 < b ≤ 15), dan baris kedua
merupakan banyaknya kolom (0 < k ≤ 25), baris selanjutnya adalah bilangan-bilangan pada posisi
baris dan kolomnya.
Contoh:
Input: 2
2
45
6 35
Bila pilihan 2 : Tampilkan bilangan prima pada table bilangan tersebut
Output: 2 3 5
Bila pilihan 3 : Tampilkan table bilangan setelah bilangan prima dirubah menjadi 0
Contoh:
Output: 0 0
40
(catatan: pilihan 2 dan 3 bisa di lakukan setelah melakukan pilihan 1)
By. Sodiq
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 12 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Kasus C : Perhitungan Bangun Ruang
Ada seorang matematikawan yang sedang mengajarkan bangun ruang, namun dia kebingungan
dalam membuat program untuk menghitung luas permukaan dan volume dari beberapa bangun
ruang. Buatlah program untuk membantu matematikawan tersebut dengan menggunakan fungsi
atau procedure!
Desain Tampilan:
--Menu Utama—
Menghitung Luas Permukaan dan Volume
1. Balok
2. Tabung
3. Kerucut
Pilihan Anda :
Bila pilihan 1 : Lakukan input keperluan balok dan tampilkan luas permukaan serta volumenya.
Contoh:
Input: 2 //input panjang
3//input lebar
4//input tinggi
Output: 52//luas permukaan
24//volume
Bila pilihan 2 : Lakukan input keperluan tabung dan tampilkan luas permukaan serta volumenya.
(lihat contoh pada pilihan 1)
Bila pilihan 3 : Lakukan input keperluan kerucut dan tampilkan luas permukaan serta volumenya.
(lihat contoh pada pilihan 1)
(catatan: inputan bagi semua bangun ruang tersebut adalah keperluan untuk menghitungnya,
misal pada balok diperlukan p, l, dan t. untuk tabung dan kerucut cari sendiri)
By. Sodiq
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 13 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Kasus D : Data Tukang Cilok
Ada seorang penjual cilok yang berpikir modern. Dia berpikir bahwa setiap penjualannya dia
menyisihkan 10% dari hasil jualannya per hari, dan datanya diinputkan setelah seminggu.
Kemudian dia ingin menambahkan fitur untuk mencari penyisihan uang terkecil di hari ke berapa.
Buatlah program untuk membantu matematikawan tersebut dengan menggunakan fungsi atau
procedure!
Desain Tampilan:
--Menu Utama—
1. Input Data
2. View Data
3. Cari Penyisihan Uang Terkecil
Pilihan Anda :
Bila pilihan 1 : Lakukan input berikut:
< hari ke berapa (1 sampai <= 7 ) > < hasil penjualannya per hari >
Contoh:
Input: 1
25000
2
80000
3
80000
4
50000
5
75000
7
50000
Bila pilihan 2 : Tampilkan data dengan format berikut:
<hari ke-> <hasil penjualannya> <10 % dari uang yang disisihkan*hasil penjualannya>
Contoh:
Output:
1
25000
2500
2
80000
8000
3
80000
8000
4
50000
5000
5
75000
7500
7
50000
5000
Bila pilihan 3 : Tampilkan hari ke berapa yang jumlah uang sisihannya terkecil
< hari > < hasi penjualannya > < uang yang disisihkan >
Contoh:
Output:
1
25000
2500
By. Sodiq
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 14 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Kasus E : Perumahan Tahan Banjir
Sebuah kantor pembangunan perumahan yang bernama “Perumahan Tahan Banjir” ingin mendata
rumah – rumah yang ada di dalam perumahan tersebut, mulai dari rumah kosong, dan rumah yang
sudah berpenghuni, dan juga mengetahui masing2 tipe rumah yang ada sehingga bisa mengetahui
area perumahan yang sudah dipakai
Tampilan pertama berisi menu pilihan yang pertama yang terdiri dari.
1. Input luas perumahan
2. Input rumah (jumlah rumah, tipe rumah, kosong/tidak)
3. Output jumlah rumah yang kosong atau tidak, dan luas area perumahan yang tidak kosong
Contoh
+++++Perumahan Tahan Banjir++++++
1. Input Luas Perumahan
2. Input Rumah
3. Output jumlah rumah kosong dan tidak luas lahan perumahan yang berpenghuni
Pilih : 1
Total luas perumahan (m2) : 500000
Pilih : 2
Input jumlah rumah : 2
Rumah 1
Tipe : 24
Berpenghuni : 1 //1 untuk ia dan 0 untuk tidak
Rumah 2
Tipe: 32
Berpenghuni : 1
Pilih: 3
Jumlah rumah : 2
Berpenghuni : 2
Kosong : 0
Luas lahan berpenghuni :
Luas lahan perumahan dikurang luas lahan berpenghuni
500000 – (luas tipe 24 + luas tipe 32)
By. Kurnia
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 15 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Kasus F : Progam Rumus rumus matematika
Seorang guru matematika mengadakan sebuah lomba kompetisi program, program tersebut berisi
rumus rumus hitung matematika.
Tampilan pertama berisi menu pilihan yang pertama yang terdiri dari.
1. Hitung luas segitiga
2. Hitung Luas Segi empat
3. Hitung Luas persegi
Contoh
++++++ Rumus - rumus Matematika ++++
1. Luas segitiga
2. Luas Segi empat
3. Luas Persegi
Pilih : 1
Alas : 4
Tinggi : 2
Luas : 4
Pilih : 2
Sisi : 2
Luas : 4
Pilih : 3
Panjang : 4
Lebar: 2
Luas : 8
By. Kurnia
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 16 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Kasus G : Menghitung IPK
Seorang mahasiswa baru tidak terbiasa dengan aturan perhitungan IPK, lalu ia bertanya pada
Dosen, setelah bertanya pada dosen ia dapat menghitung ipk nya, namun si mahasiswa ini adalah
orang yang pelupa, lalu ia bertanya lagi kepada dosen. Saking banyaknya bertanya akhirnya c
dosen menyurun mahasiswa tersebut untuk membuat program menghitung IPK
Contoh
+++ IPK Kalkulator +++
1. Input mata kuliah
2. Hitung IPK
Pilih : 1
Input jumlah matakuliah : 3
Matakuliah 1
Nama Matakuliah :
Jumlah SKS :
Nilai : A/B/C/D
Matakuliah 2
Nama Matakuliah :
Jumlah SKS :
Nilai : A/B/C/D
Matakuliah 3
Nama Matakuliah :
Jumlah SKS :
Nilai : A/B/C/D
Pilih : 2
IPK anda adalah :
By. Kurnia
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 17 dari 18
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
Universitas Widyatama
Kasus H : Baris jadi kolom, kolom jadi baris
Pada sebuah kasus matematika, seorang mahasiswa diberi tugas oleh dosennya untuk mengubah
sebuah array berdimensi dua, yaitu baris menjadi kolom , dan kolom menjadi baris. Dengan
menerapkan fungsi atau prosedur buat programnya
Input
Baris kedua banyaknya kolom (k) dan baris (b) array
Baris ketiga sampai sampai b adalah nilai dari array berdimensi banyak
Output
Array yang telah diubah antara kolom dan barisnya
Contoh
Input
34
123
567
890
Output
158
269
370
By. Kurnia
Algoritma & Pemrograman I
Ver/Rev : 1/1
Halaman : 18 dari 18
Download