Struktur Dasar Algoritma MASALAH dan SOLUSI ALGORITMA SOURCE

  • Slides: 34
Download presentation
Struktur Dasar Algoritma

Struktur Dasar Algoritma

MASALAH dan SOLUSI ALGORITMA SOURCE CODE MASALAH HASIL EXECUTABLE CODE RUN ALGORITMA dan STRUKTUR

MASALAH dan SOLUSI ALGORITMA SOURCE CODE MASALAH HASIL EXECUTABLE CODE RUN ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 1

ALGORITMA � Algoritma ◦ urutan langkah-langkah yang logis utuk memecahkan masalah � Kata algoritma

ALGORITMA � Algoritma ◦ urutan langkah-langkah yang logis utuk memecahkan masalah � Kata algoritma diambil dari nama seorang ilmuwan Persia Abu Ja’far Mohammed Ibn Mûsâ al-Khowârizmî ◦ menulis buku berjudul Kitab Al jabr w’al-muqabala (rules of restoration and reduction, pada sekitar tahun 825). ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 2

JENIS PROSES ALGORITMA � Sequence, runut ◦ Langkah kedua dikerjakan setelah mengerjakan langkap pertama

JENIS PROSES ALGORITMA � Sequence, runut ◦ Langkah kedua dikerjakan setelah mengerjakan langkap pertama � Selection, pemilihan ◦ Jika syarat terpenuhi maka kerjakan proses X ◦ Jika syarat tidak terpenuhi maka kerjakan proses Y � Iteration, pengulangan ◦ Proses dikerjakan berulang kali sampai kondisi tidak memenuhi ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 3

NOTASI ALGORITMA (FLOWCHART) Terminal, mengawali atau mengakhiri rangkaian proses Input/Output, membaca masukan atau menampilkan

NOTASI ALGORITMA (FLOWCHART) Terminal, mengawali atau mengakhiri rangkaian proses Input/Output, membaca masukan atau menampilkan keluaran Process, mengolah Decision, memeriksa kondisi Connector, menggabung proses ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 4

NOTASI ALGORITMA (FLOWCHART) Start SEQUENCE RUNUT A Langkah ke-1: Proses A B Langkah ke-2:

NOTASI ALGORITMA (FLOWCHART) Start SEQUENCE RUNUT A Langkah ke-1: Proses A B Langkah ke-2: Proses B C Langkah ke-3: Proses C D Langkah ke-4: Proses D Stop ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 5

NOTASI ALGORITMA (FLOWCHART) Start SELECTION PEMILIHAN A B ATAU Ke-1: Proses A Ke-2: Proses

NOTASI ALGORITMA (FLOWCHART) Start SELECTION PEMILIHAN A B ATAU Ke-1: Proses A Ke-2: Proses B Ke-3: Proses D Ya C D Stop ALGORITMA dan STRUKTUR DATA: Bahasa C Ke-1: Ke-2: Ke-3: Ke-4: Pendahuluan Proses A B C D 6

NOTASI ALGORITMA (FLOWCHART) Start SELECTION PEMILIHAN A B C D Ke-1: Ke-2: Ke-3: Ke-4:

NOTASI ALGORITMA (FLOWCHART) Start SELECTION PEMILIHAN A B C D Ke-1: Ke-2: Ke-3: Ke-4: Proses A B D E Ya E Stop ALGORITMA dan STRUKTUR DATA: Bahasa C Ke-1: Ke-2: Ke-3: Ke-4: Pendahuluan Proses A B C E 7

NOTASI ALGORITMA (FLOWCHART) Start ITERATION PENGULANGAN A Ke-1: Proses A Ke-2: Proses B Ke-3:

NOTASI ALGORITMA (FLOWCHART) Start ITERATION PENGULANGAN A Ke-1: Proses A Ke-2: Proses B Ke-3: Proses C Ke-4: Proses B Ke-5: Proses C … Ke-n-1: Proses B Ke-n: Proses D C B Ya D Stop ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 8

NOTASI ALGORITMA (PSEUDOCODE) Masukan input, read, get, key-in Keluaran print, write, display Pemberian nilai

NOTASI ALGORITMA (PSEUDOCODE) Masukan input, read, get, key-in Keluaran print, write, display Pemberian nilai Pemilihan if <kondisi benar> <proses> else <proses> endif if <kondisi benar> <proses> endif ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 9

NOTASI ALGORITMA (PSEUDOCODE) P E N G U L A N G A N

NOTASI ALGORITMA (PSEUDOCODE) P E N G U L A N G A N for <kondisi benar> <proses> endfor while <kondisi benar> <proses> endwhile do <kondisi benar> <proses> while <kondisi benar> repeat <proses> until <kondisi benar> ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 10

NOTASI ALGORITMA (KODE MAYA) Masukan isi, baca, masukkan, ketik, baca file Keluaran tulis, cetak,

NOTASI ALGORITMA (KODE MAYA) Masukan isi, baca, masukkan, ketik, baca file Keluaran tulis, cetak, tampil , rekam Pemberian nilai Pemilihan jika <kondisi benar> <proses> selain itu <proses> akhir jika <kondisi benar> <proses> akhir jika ALGORITMA dan STRUKTUR DATA: Bahasa C Pengulangan ulangi selama <kondisi benar> <proses> akhir pengulangan ulangi <proses> sampai <kondisi benar> Pendahuluan 11

MENGECAT DINDING Toko Indo April mau mengecat dinding kedua sisi, 12 m 2 perlu

MENGECAT DINDING Toko Indo April mau mengecat dinding kedua sisi, 12 m 2 perlu sekaleng cat. Berapa kaleng cat diperlukan? Masukan ? Keluaran ? Panjang dinding Tinggi dinding Jumlah kaleng cat Pj 1, Tg 1, Pj 2, Tg 2 Algoritma Kaleng Flowchart Pseudodcode Kode Maya ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 12

MENGECAT DINDING 12 m 2 perlu sekaleng cat. Start A Read Pj 1, Tg

MENGECAT DINDING 12 m 2 perlu sekaleng cat. Start A Read Pj 1, Tg 1, Pj 2, Tg 2 Klg= Ls / 12 Ls= Pj 1*Tg 1 + Pj 2*Tg 2 Print Klg A ALGORITMA dan STRUKTUR DATA: Bahasa C Stop Pendahuluan 13

MENGECAT DINDING 12 m 2 perlu sekaleng cat. PSEUDOCODE read panjang 1, tinggi 1,

MENGECAT DINDING 12 m 2 perlu sekaleng cat. PSEUDOCODE read panjang 1, tinggi 1, panjang 2, tinggi 2 luas panjang 1 * tinggi 1 + panjang 2 * tinggi 2 kaleng luas / 12 print kaleng ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 14

MENGECAT DINDING 12 m 2 perlu sekaleng cat. KODE MAYA baca panjang 1, tinggi

MENGECAT DINDING 12 m 2 perlu sekaleng cat. KODE MAYA baca panjang 1, tinggi 1, panjang 2, tinggi 2 luas panjang 1 * tinggi 1 + panjang 2 * tinggi 2 kaleng luas / 12 cetak kaleng ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 15

POTONGAN HARGA SUSU Toko Indo April memberi potongan harga susu 20%, maksimum 3 kaleng

POTONGAN HARGA SUSU Toko Indo April memberi potongan harga susu 20%, maksimum 3 kaleng atau kotak. Berapa uang yang harus dibayar pembeli? Masukan ? Keluaran ? Jumlah yang dibeli Harga sekaleng Uang yang harus dibayar Jumlah, Harga Algoritma Bayar Flowchart Pseudodcode Kode Maya ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 16

POTONGAN HARGA SUSU Potongan 20%, maksimum 3. Start A Read HRG, JML Print BYR

POTONGAN HARGA SUSU Potongan 20%, maksimum 3. Start A Read HRG, JML Print BYR JML 3 BYR= 3*HRG*0. 8 + (JML-3)*HRG Stop Ya BYR= JML*HRG*0. 8 A ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 17

POTONGAN HARGA SUSU Potongan 20%, maksimum 3. PSEUDOCODE input harga, jumlah if jumlah <=

POTONGAN HARGA SUSU Potongan 20%, maksimum 3. PSEUDOCODE input harga, jumlah if jumlah <= 3 bayar jumlah * harga * 0. 8 else bayar (3 * harga * 0. 8) + (jumlah – 3) * harga endif print bayar ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 18

POTONGAN HARGA SUSU Potongan 20%, maksimum 3. KODE MAYA baca harga, jumlah jika jumlah

POTONGAN HARGA SUSU Potongan 20%, maksimum 3. KODE MAYA baca harga, jumlah jika jumlah <= 3 bayar jumlah * harga * 0. 8 selain itu bayar (3 * harga * 0. 8) + (jumlah – 3) * harga akhir jika cetak bayar ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 19

SYARAT ALGORITMA 1. Finiteness ◦ Algoritma harus berakhir, terminate, halt ◦ Langkah algoritma harus

SYARAT ALGORITMA 1. Finiteness ◦ Algoritma harus berakhir, terminate, halt ◦ Langkah algoritma harus didefinisikan dengan tepat dan tidak ambiguous 2. Definiteness 3. Input ◦ Algoritma memerlukan masukan untuk diolah ◦ Algoritma memberi hasil keluaran ◦ Langkah algoritma dikerjakan dalam waktu yang wajar 4. Output 5. Effectiveness ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 20

PEMECAHAN MASALAH A. B. C. D. E. F. G. Definisi masalah Membuat model Merancang

PEMECAHAN MASALAH A. B. C. D. E. F. G. Definisi masalah Membuat model Merancang algoritma Menulis program Kompilasi program Run dan hasil Dokumentasi ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 21

SIKLUS PEMECAHAN MASALAH DEFINISI MASALAH MEMBUAT MODEL RANCANG ALGO TULIS PROGRAM COMPILE Y S.

SIKLUS PEMECAHAN MASALAH DEFINISI MASALAH MEMBUAT MODEL RANCANG ALGO TULIS PROGRAM COMPILE Y S. Err RUN Y ALGORITMA dan STRUKTUR DATA: Bahasa C O. Err DOKUMENTASI Pendahuluan 22

SIKLUS PEMECAHAN MASALAH Berapa besarnya biaya untuk memasang keramik pada suatu kamar belajar? DATA

SIKLUS PEMECAHAN MASALAH Berapa besarnya biaya untuk memasang keramik pada suatu kamar belajar? DATA YANG DIPERLUKAN Persegi panjang Bentuk ruangan ? pj ruang dan lb ruang Ukuran ruangan ? pj krmik dan lb krmik Ukuran keramik ? harga perbox, keping perbox Harga keramik ? upah permeter Upah kerja ? ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 23

SIKLUS PEMECAHAN MASALAH MODEL PERHITUNGAN hitung kebutuhan keramik hitung upah kerja total biaya =

SIKLUS PEMECAHAN MASALAH MODEL PERHITUNGAN hitung kebutuhan keramik hitung upah kerja total biaya = biaya krmik + upah kerja ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 24

SIKLUS PEMECAHAN MASALAH get pj_ruang, lb_ruang masukan get pj_krmik, lb_krmik get harga_perbox, keping_perbox get

SIKLUS PEMECAHAN MASALAH get pj_ruang, lb_ruang masukan get pj_krmik, lb_krmik get harga_perbox, keping_perbox get upah_permeter krmik_sisi_pj pj_ruang pj_krmik proses krmik_sisi_lb lb_ruang lb_krmik jml_krmik krmik_sisi_pj * krmik_sisi_lbr jml_cadang 5% * jml_krmik total_krmik jumlah_krmik + jumlah_cadang biaya_krmik total_krmik keping_perbox * harga_perbox biaya_upah pj_ruang * lb_ruang / upah_permeter total_biaya biaya_krmik + biaya_upah print total_biaya keluaran ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 25

SIKLUS PEMECAHAN MASALAH # include <stdio. h> void main() { int pj_ruang, lb_ruang, pj_krmik,

SIKLUS PEMECAHAN MASALAH # include <stdio. h> void main() { int pj_ruang, lb_ruang, pj_krmik, lb_krmik, keping; float harga, upah, bea_krmik, bea_upah; int sisi_pj, sisi_lb, butuh; scanf("%d %d", &pj_ruang, &lb_ruang); scanf("%d %d", &pj_krmik, &lb_krmik); scanf("%f %d %f", &harga, &keping, &upah); sisi_pj = ceil(pj_ruang / pj_krmik); sisi_lb = ceil(lb_ruang / lb_krmik); butuh = ceil (sisi_pj * sisi_lb * 1. 05); bea_krmik = butuh / keping * harga; bea_upah = pj_ruang * lb_ruang * upah / 10000; printf("bea keramik = %. 0 f n", bea_krmik); printf("bea upah = %. 0 f n", bea_upah); printf("total bea = %. 0 f", bea_krmik + bea_upah); } ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 26

SIKLUS PEMECAHAN MASALAH # include <stdio. h> void main() { int pj_ruang, lb_ruang, pj_krmik,

SIKLUS PEMECAHAN MASALAH # include <stdio. h> void main() { int pj_ruang, lb_ruang, pj_krmik, lb_krmik, keping; float harga, upah, bea_krmik, bea_upah; int sisi_pj, sisi_lb, butuh; scanf("%d %d", &pj_ruang, &lb_ruang); scanf("%d %d", &pj_krmik, &lb_krmik); scanf("%f %d %f", &harga, &keping, &upah); sisi_pj = ceil(pj_ruang / pj_krmik); ERROR sisi_lb = ceil(lb_ruang / lb_krmik); butuh = ceil (sisi_pj * sisi_lb * 1. 05); bea_krmik = butuh / keping * harga; bea_upah = pj_ruang * lb_ruang * upah / 10000; printf("bea keramik = %. 0 f n", bea_krmik); printf("bea upah = %. 0 f n", bea_upah); printf("total bea = %. 0 f", bea_krmik + bea_upah); } Function ‘ceil’ should have a prototype ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 27

SIKLUS PEMECAHAN MASALAH # include <stdio. h> # include <math. h> tambahkan void main()

SIKLUS PEMECAHAN MASALAH # include <stdio. h> # include <math. h> tambahkan void main() { int pj_ruang, lb_ruang, pj_krmik, lb_krmik, keping; float harga, upah, bea_krmik, bea_upah; int sisi_pj, sisi_lb, butuh; scanf("%d %d", &pj_ruang, &lb_ruang); scanf("%d %d", &pj_krmik, &lb_krmik); scanf("%f %d %f", &harga, &keping, &upah); sisi_pj = ceil(pj_ruang / pj_krmik); sisi_lb = ceil(lb_ruang / lb_krmik); butuh = ceil (sisi_pj * sisi_lb * 1. 05); bea_krmik = butuh / keping * harga; bea_upah = pj_ruang * lb_ruang * upah / 10000; printf("bea keramik = %. 0 f n", bea_krmik); printf("bea upah = %. 0 f n", bea_upah); printf("total bea = %. 0 f", bea_krmik + bea_upah); } Success ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 28

SIKLUS PEMECAHAN MASALAH 200 320 30 30 50000 5 75000 bea keramik = 600000

SIKLUS PEMECAHAN MASALAH 200 320 30 30 50000 5 75000 bea keramik = 600000 bea upah = -11520 total bea = 588480 ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 29

SIKLUS PEMECAHAN MASALAH # include <stdio. h> # include <math. h> void main() {

SIKLUS PEMECAHAN MASALAH # include <stdio. h> # include <math. h> void main() { float pj_ruang, lb_ruang, pj_krmik, lb_krmik; float harga, keping, upah; float sisi_pj, sisi_lb, butuh, bea_krmik, bea_upah; scanf("%f %f", &pj_ruang, &lb_ruang); scanf("%f %f", &pj_krmik, &lb_krmik); scanf("%f %f %f", &harga, &keping, &upah); sisi_pj = ceil(pj_ruang / pj_krmik); sisi_lb = ceil(lb_ruang / lb_krmik); butuh = ceil (sisi_pj * sisi_lb * 1. 05); bea_krmik = ceil(butuh / keping) * harga; bea_upah = pj_ruang * lb_ruang * upah / 10000; printf("bea keramik = %. 0 f n", bea_krmik); printf("bea upah = %. 0 f n", bea_upah); printf("total bea = %. 0 f", bea_krmik + bea_upah); } Success ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 30

SIKLUS PEMECAHAN MASALAH 200 320 30 30 50000 5 75000 bea keramik = 850000

SIKLUS PEMECAHAN MASALAH 200 320 30 30 50000 5 75000 bea keramik = 850000 bea upah = 480000 total bea = 1330000 100 20 20 10000 10 50000 bea keramik = 30000 bea upah = 50000 total bea = 80000 ALGORITMA dan STRUKTUR DATA: Bahasa C Pendahuluan 31

SIKLUS PEMECAHAN MASALAH O O O O O // menghitung biaya pemasangan keramik #

SIKLUS PEMECAHAN MASALAH O O O O O // menghitung biaya pemasangan keramik # include <stdio. h> # include <math. h> void main() { float pj_ruang, lb_ruang, pj_krmik, lb_krmik; float harga, keping, upah; float sisi_pj, sisi_lb, butuh, bea_krmik, bea_upah; scanf("%f %f", &pj_ruang, &lb_ruang); scanf("%f %f", &pj_krmik, &lb_krmik); scanf("%f %f %f", &harga, &keping, &upah); sisi_pj = ceil(pj_ruang / pj_krmik); sisi_lb = ceil(lb_ruang / lb_krmik); butuh = ceil (sisi_pj * sisi_lb * 1. 05); bea_krmik = ceil(butuh / keping) * harga; bea_upah = pj_ruang * lb_ruang * upah / 10000; printf("bea keramik = %. 0 f n", bea_krmik); printf("bea upah = %. 0 f n", bea_upah); printf("total bea = %. 0 f", bea_krmik + bea_upah); } ALGORITMA dan STRUKTUR DATA: Bahasa C O O O O O Pendahuluan 32

Terima kasih Pendahuluan 33

Terima kasih Pendahuluan 33