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 CekGigiMotor1 ELSE IF(Gigi=2 AND Kec<=60) THEN CekGigiMotor1 ELSE IF(Gigi=3 AND Kec<=80) THEN CekGigiMotor1 ELSE IF(Gigi=4 AND Kec>80) THEN CekGigiMotor1 ELSE CekGigiMotor0 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