ALGORITMA z Diperkenalkan Oleh Ahli Matematika Abu Jafar
ALGORITMA z. Diperkenalkan Oleh Ahli Matematika : Abu Ja’far Muhammad Ibnu Musa Al Khawarizmi, seorang ilmuwan Persia yang menulis kitab al jabr w’al muqabala (rules of restoration and reduction) sekitar tahun 825 M z. Suatu prosedur untuk menyelesaikan masalah yang berisi urutan langkah-langkah yg berintegrasi
KRITERIA ALGORITMA 1. 2. 3. 4. 5. Ada Output, Efektifitas dan Efesiensi, Jumlah Langkahnya Berhingga, Berakhir, Terstruktur Suatu algoritma harus menghasilkan output yg tepat guna (efektif) dlm waktu yg relatif singkat & penggunaan memori yg relatif sedikit (efesien) dgn langkah yg berhingga & prosedurnya berakhir baik dlm keadaan diperoleh suatu solusi ataupun tdk ada solusinya
MENYATAKAN ALGORITMA a. Dengan bahasa semu (pseudocode) Contoh algoritma menghitung Luas Segi tiga : 1. Masukan Nilai Alas 2. Masukan Nilai Tinggi 3. Hitung Luas =( Alas * Tinggi ) / 2 4. Cetak Luas
b. Dengan diagram alur atau flowchart Contoh : Start Masukan Alas Masukan Tinggi Luas = (Alas * Tinggi)/2 Cetak Luas Stop
c. Dengan Statement program / penggalan Program Contoh (menggunakan c++): cin>>alas; cin>> tinggi; luas = (alas * tinggi)/2 ; cout>>luas; untuk input data proses untuk output data
MENYATAKAN ALGORITMA
DIAGRAM ALUR (FLOWCHART) Flowchart adalah suatu diagram yang menggambarkan susunan logika suatu program. Simbol : Proses/prosessing, satu atau beberapa himpunan penugasan yang akan dilaksanakan secara berurutan. Input / Output data yg akan dibaca & dimasukan ke dalam memori komputer dari suatu alat input Terminal, berfungsi sebagai awal dan akhir dari suatu proses alur.
Decision (kotak keputusan) berfungsi utk memutuskan arah/percabangan yg diambil sesuai dgn kondisi yg dipenuhi, yaitu Benar/Salah. (dibahas dalam struktur branching). Subroutine digunakan untuk menjalankan proses program) bagian (sub suatu atau prosedur. Preparation digunakan untuk pemberian harga awal.
Connector/penghubung, digunakan untuk menghubungkan diagram alur yang terputus dimana bagian tersebut masih berada pada halaman yang sama. On page Connector, Untuk menghubungkan sambungan dari bagian flowchart yang terputus dimana sambungannya berada pada halaman lain. Flowline, menunjukkan bagian arah instruksi dijalankan
Sruktur Dasar Algoritma z Sequence/urutan/runtunan instruksi dikerjakan dari atas ke bawah secara berurutan z Condition/Decision/selection/branching/keputusan/p emilihan/percabangan/bersyarat ada 2 macam: 1. Bersyarat (if dan case) 2. Tidak bersyarat (goto) z Looping/repetition/iteration/perulangan (for dan while)
MENYATAKAN ALGORITMA DENGAN KALIMAT 1. Tampilkan kata “Algoritma” 1. Nyatakan nilai r sama dengan 7 2. Hitung s sama dengan r dibagi 2 3. Tampilkan nilai s
MENYATAKAN ALGORITMA DENGAN FLOWCHART Start Tampilkan kata “Algoritma” End Start r=7 s = r/2 Tampilkan nilai s End
MENYATAKAN ALGORITMA DENGAN STATEMENT PROGRAM 1. Judul Algoritma 2. Deklarasi Berisi pendefinisian nama/identifier yang digunakan pada bagian deskripsi 3. Deskripsi/statement Berisi penyelesaian masalah berupa deretan intruksi
Contoh Pendeklarasian Tidak ada deklarasi Algoritma tampilan begin Write(“Algoritma”); end. Dengan deklarasi Algoritma hitung r : integer s : real begin r ← 7 s ← r/2 write (s) end.
IDENTIFIER z. Identifier adalah nama yang didefinisikan oleh programmer z. Identifier dalam program: 1. Variabel Tempat menyimpan nilai yang isinya relative berubah sesuai dengan kondisi terkini 2. Konstanta Tempat menyimpan nilai yang isinya tetap selama program dijalankan
IDENTIFIER 3. Tipe data bentukan Jenis data, tipe baru bisa didefinisikan oleh programer 4. Label Bagian program untuk intruksi lompatan 5. Fungsi/prosedur Sub program
Aturan membuat identifier z Terdiri dari 1 huruf atau lebih maksimal 256 karakter z Boleh di gabung dengan angka tapi angka tidak boleh di letakan di depan z Tidak boleh menggunakan keyword/reserved word/kata cadangan z Tidak boleh ada spasi z Tidak boleh menggunakan symbol kecuali underscore (_) z Tidak boleh sama
Latihan Tentukan output flowchart berikut START INPUT X X=2*X X=X+7 X=5*X X=X+5 X=X+10 CETAK X START INPUT A INPUT B Y A>B ? Cetak ‘BT lebih besar’ END Cetak ‘A lebih besar’
1. Buatlah Flowchartnya dari pseudocode berikut ini: a. Masukan kode barang b. Masukan harga barang c. Masukan Jumlah barang d. Hitung bayar = harga * Jumlah barang e. Jika bayar >= 100. 000 maka diberikan discount 10%, selain dari itu tidak mendapat discount f. Hitung total bayar = bayar - discount g. Cetak total bayar
2. Buatlah Flowchartnya dari pseudocode berikut ini: a. Diketahui phi=3. 14 b. Masukan nilai jari-jari (r) c. Hitung Keliling = 2 * phi * r d. Cetak Keliling e. Ingin menghitung kembali? Jika Ya maka kembali ke proses awal, jika Tidak maka program berhenti.
VARIABEL, OPERATOR dan TIPE DATA
VARIABEL z Tempat menyimpan nilai yang isinya berubah sesuai dengan kondisi terkini z Berdasarkan caranya, pengisian nilai ke variabel bisa dilakukan secara: y Langsung menuliskan langsung nilainya di algoritma/program y Tidak Langsung menggunakan simbol/statement pemasukan nilai
Pengisian Nilai ke Variabel Cara langsung z Dengan flowchart Harga <100 z Dengan statement program harga = 100 Cara tidak langsung z Dengan flowchart Masukan harga z Dengan statement program cin>>harga
Pengisian Nilai ke Variabel Cara langsung { int r; float s; r = 7; Cara tidak langsung { int r; float s; cin>>r; s = r/2 Cout<< s; }
Nilai variabel Berupa: 1. Konstanta y. Contoh : A = 100 2. Nilai dari variable lain y. Contoh: A = 100; B = A; 3. Hasil evaluasi ekspresi y. Contoh: A = B * C Ekspresi adalah kalimat matematika yang terdiri dari operand dan operator
OPERATOR Macam operator dasar: z Aritmatika (+, -, *, /, %, pow) z Relational/perbandingan(<, >, z Logika/Boolean ynot , notasi dalam C++ y. Or, notasi dalam C++ y. And, notasi dalam C++ =, <=, >=, <>, ) ! || &&
Dilihat dari jumlah operand yang dibutuhkan: z Unary/uner membutuhkan 1 operand contoh operator ! dan z Binary/biner membutuhkan 2 operand
OPERATOR Aritmatika Relational Logika (boolean) OPERAND HASIL Integer atau float Logika
NAMA TIPE NILAI OPERASI Bilangan bulat (integer) Aritmatika Bilangan bulat + dan Relasional Bilangan desimal (float) Bilangan desimal + Aritmatika dan Relasional Logika (boolean) True dan False Karakter (char) Alfanumerik simbol dan String Relasional Kumpulan karakter (string) Alfanumerik simbol dan String Relasional Logika
` A B not A A or B T T F F F T T T F A and B T F F F
Operator logika (boolean) Not (!): untuk membalik nilai Contoh { typedef enum {false = 0, true = 1} Bool; Bool S, T; S = true; T = !S; maka nilai T = false cout<<S; cout<<T; }
Or (||): jika kedua input false maka output false jika salah satu input true maka output true Contoh typedef enum {false = 0, true = 1} Bool; Bool R, S, T; S = true; T = true; R = S || T maka nilai R = true cout<<R;
And (&&): jika kedua operand true maka output true jika salah satu operand false maka output false Contoh typedef enum {false = 0, true = 1} Bool; Bool R, S, T; S = true; T = false; R = S && T maka nilai R = false cout<<R;
Latihan z Buat program untuk menghitung nilai mahasiswa dimana nilai total adalah jumlah hadir, 20% nilai tugas, 35% nilai uts, dan 45% nilai uas, dengan tampilan: NIM NAMA MATA KULIAH NILAI TUGAS NILAI UTS NILAI UAS NILAI TOTAL = 12345 = jokowaw = algoritma = =
STRUKTUR KEPUTUSAN (DECISION)
1. SATU KONDISI SATU AKSI Jika seleksi kondisi/syarat terpenuhi (benar) maka aksi dilakukan, jika kondisi tidak terpenuhi (salah) maka selesai y t aksi
Dengan Statement program Menggunakan struktur if If (kondisi) aksi Ekspresi kondisi harus menghasilkan nilai logika (boolean)
2. SATU KONDISI DUA AKSI Jika seleksi kondisi terpenuhi (benar) maka aksi dilakukan, jika kondisi tidak terpenuhi (salah) maka aksi lain dilakukan kondisi y t Aksi 1 aksi 2
Dengan Statement program Menggunakan struktur if-else If (kondisi) aksi 1 else aksi 2
3. BANYAK KONDISI BANYAK AKSI Memiliki banyak kondisi dan aksi kondisi 1 Aksi 1 kondisi 2 Aksi 2 kondisi 3 Aksi 4
Dengan Statement program (if) If (kondisi 1) aksi 1 else if (kondisi 2) aksi 2 else if (kondisi 3) aksi 3 …
Dengan Statement Program (Switch Case) Switch (nama variabel/ekspresi) { Case nilai konstanta 1 : aksi 1; break; Case nilai konstanta 2: aksi 2; break; Case nilai konstanta 3 : aksi 3; break; Default : aksi n; break; } z nilai konstanta harus berupa nilai ordinal
Latihan membuat Algoritma 1. Tebak huruf a. Masukan sebuah huruf b. Jika huruf sama dengan huruf yang ditebak maka tampikan kata “Tebakan anda benar” Jika huruf tidak sama dengan huruf yang ditebak maka tampikan kata “Tebakan anda salah”
Latihan membuat Algoritma 2. Menentukan bilangan GENAP dan GANJIL a. Masukan sebuah bilangan b. Jika bilangan habis dibagi 2 maka tampilkan kata “Bilangan genap” Selain itu maka tampilkan kata “Bilangan genap”
Sruktur Dasar Algoritma z Sequence/urutan/runtunan instruksi dikerjakan dari atas ke bawah secara berurutan z Condition/Decision/selection/branching/keputus an/pemilihan/percabangan/bersyarat z Looping/repetition/iteration/perulangan y. For y. While y. Do-while
Struktur Perulangan (For) z For menaik/positif for (nilai awal; syarat perulangan; naik cacahan) { aksi } z For menurun/negatif for (nilai awal; syarat perulangan; turun cacahan) { aksi }
Contoh penggunaan for dalam C For menaik/positif int i; for (i=1; i<=5; i++) { printf("algoritman"); } For menurun/negatif int i; for (i=5; i>=1; i--) { printf("algoritman"); }
For bersarang (nested for) int i, j; for (i=1; i<=2; i++) { for (j=1; j<=3; j++) printf(”%d n”, i); }
Struktur Perulangan (while) int i=1; while (i<5) { printf("algoritma n"); i++; } int i=5; while (i>1) { printf("algoritma n"); i--; }
Struktur Perulangan (do-while) int i=1; do { printf("algoritman"); i++; } while (i<5);
Latihan 1. Menampilkan sampai 20 2. Menampilkan sampai 11 3. Menampilkan 4. Menampilkan bilangan mulai dari angka 11 bilangan mulai dari angka 20 angka 10, 20, 30, 40, 50 10 bilangan ganjil mulai dari 7
Pertemuan 8 Array
LARIK ATAU ARRAY adalah tipe terstruktur yang terdiri dari sejumlah komponen yang mempunyai tipe data yang sama (homogen) Variabel Array terdiri dari : 1. Array Berdimensi Satu 2. Array Berdimensi Banyak
1. Array Berdimensi Satu Bentuk Umum : Tipe_data nama variabel [indeks] Contoh: Var float data [10] jumlah elemen nama variabel tipe data
2. Array Berdimensi dua Bentuk Umum : Tipe_data nama variabel [indeks 1] [indeks 2] Contoh: Var float data [5][6] jumlah elemen baris dan kolom nama variabel tipe data
Latihan Diberikan matriks A sebagai berikut : 1 1 0 1 1 1 0 0 0 1 Perintah pokok yg digunakan pd pengisian matriks A adalah : A[i, j] = 1, jika i <=j , A[i, j] = 0, jika i > j
1. Diberikan matriks A sebagai berikut : 1 2 3 4 0 0 0 4 Perintah pokok yg digunakan pd pengisian matriks A adalah :
2. Diberikan matriks A sebagai berikut : 1 0 0 0 2 2 0 0 3 3 3 0 4 4 Perintah pokok yg digunakan pd pengisian matriks A adalah.
Pertemuan 9 RECORD
RECORD adalah tipe terstruktur yang terdiri dari sejumlah bidang (field) yang mempunyai tipe yang berbeda (heterogen).
Bentuk Umum : struct { tipedata 1 field 1; tipedata 2 field 2 ; tipedata 3 field 3; … tipedata-n field n; } nama variabel ;
Record (Struct) struct { int nim; float nilai; } dt; dt. nim = 123; dt. nilai = 92. 8; printf ("%dn", dt. nim); printf ("%fn", dt. nilai);
PARAMETER
Fungsi tanpa parameter void hitung() { int a=6, b=5, c; c=a*b; printf("%d n", c); } main() { hitung(); } int hitung() { int a=6, b=5; return a*b; } main() { printf("%d n", hitung()); }
Fungsi dengan parameter void hitung(int a, int b) { int c; c=a*b; printf("%d n", c); } main() { int a=6, b=5; hitung(a, b); } int hitung(int a) { int b=6; return a*b; } main() { int a=6; printf("%d n", hitung(a)); }
Parameter z Ketika procedure atau function dipanggil, kita dapat melewatkan suatu nilai ke dalam function atau procedure tersebut. Nilai yang dilewatkan disebut juga argument atau parameter. Ada dua cara melewatkan nilai, yaitu: 1. Passing by Value (Dilewatkan secara nilai) parameter input 2. Passing by Reference parameter input/output
Parameter (lanjutan) Variabel dalam subprogram: 1. Variabel lokal Variabel yang terdapat dalam subprogram yang nilainya hanya berlaku di subprogram itu saja 2. Variabel global Variabel yang terdapat dalam program utama yang nilainya berlaku di seluruh bagian program Parameter berdasarkan lokasi: 1. Parameter formal Parameter yang terdapat pada subprogram 2. Parameter aktual Parameter yang disertakan pada waktu pemanggilan
Passing by refference void hitung(int a) { a=a*a; printf("%dn", a); } main() { int a=5; hitung(a); } void hitung(int a, int c) { int b=5; c=a*b; printf("%d n", c); } main() { } int a=6, c; hitung(a, c);
REKURSI z Rekursi adalah suatu proses yang bisa memanggil dirinya sendiri. z Contoh aplikasi rekursi a. Fungsi pangkat b. Faktorial c. Fibonacci d. Menara Hanoi
Fungsi Pangkat int pangkat (int x, int n) {if(n==1) return x; else return(x*pangkat(x, n-1)); } main() { int x, y; cout<<"Menghitung x pangkat y "<<endl; cout<<"X : "; cin >> x; cout<<"Y : "; cin >> y; cout<<x<<" Pangkat "<<y<<" = "<<pangkat(x, y)<<endl; }
Faktorial int faktorial(int n) { if (n == 1) return 1; else return n * faktorial (n 1); } main() { int n; printf (“Faktorial = "); scanf ("%d", &n); printf ("hasil = %dn", faktorial(n)); }
SUBPROGRAM FUNCTION
Fungsi yang tidak mengembalikan nilai main () { hitung(); } void hitung() { int a, b=10, c=20; a = b + c; printf ("10 + 20 = %dn", a); }
Fungsi yang mengembalikan nilai main () { printf ("10 + 20 = %dn", hitung()); } int hitung() { int b=10, c=20; return b + c; }
Latihan z Buat program yang terdiri dari fungsi untuk menghitung luas persegi panjang, fungsi untuk keliling persegi panjang, dan fungsi untuk volume balok
Teknik Pengurutan Sorting
Algoritma selection sort 1. Tentukan bilangan terkecil dari data 2. Tukar bilangan dengan terkecil tersebut dengan bilangan pertama dari data 3. Ulangi langkah 2 sampai data terurut
Algoritma insertion sort 1. Bandingkan data ke-i (i = data ke-2 s/d data ken) dengan data sebelumnya (i-1), jika lebih kecil maka data tersebut dapat disisipkan ke data awal sesuai dgn posisi yg seharusnya 2. Lakukan langkah 1 untuk data berikutnya (i = i+1) sampai data terurut
Algoritma Bubble sort 1. Bandingkan data ke-n dengan data sebelumnya (n-1), jika data sebelumnya lebih besar, maka tukar. Jika tidak, maka bandingkan data ke n-1 dengan data ke n-2 dan seterusnya 2. ulangi langkah satu untuk data berikutnya (data kedua dengan ketiga, dst) sampai data terakhir 3. Ulangi langkah 1 dan 2 sampai data terurut optimal
Algoritma Radix Sort 1. Kelompokkan data secara terurut berdasarkan digit terkanan semua data 2. Ulangi langkah satu untuk digit kedua dari kanan dan seterusnya sampai digit terkiri sehingga diperoleh data yang terurut
Searching Pencarian
a. Linear/Sequential Search ( Untuk data yg belum terurut / yg sudah terurut ) Pencarian yg dimulai dari record-1 diteruskan ke record selanjutnya yaitu record-2, ke-3, . . . , sampai diperoleh isi record sama dengan informasi yg dicari Algoritma : 1. Tentukan I = 0 2. X adalah data yang dicari 3. Ketika Nilai (I) <> X Maka Tambahkan I = I +1 4. Jika i == N Maka Cetak “Pencarian Gagal” 5. ulangi langkah No. 3 sampai Nilai(I) = X
b. Binary Search ( Untuk data yg sudah terurut ) Digunakan mencari sebuah data pd himp. data yg tersusun secara urut, yaitu data yg telah diurutkan dr besar ke kecil/sebaliknya. Proses dilaksanakan pertama kali pd bgn tengah dr elemen himpunan, jk data yg dicari ternyata < elemen bagian atasnya, maka pencarian dilakukan dr bagian tengah ke bawah.
Algoritma : 1. Kiri = 1 , kanan = N 2. Ketika kiri <= kanan Maka kerjakan langkah No. 3, Jika tidak Maka kerjakan langkah No. 7 3. Tentukan Nilai Tengah dengan rumus tengah = (kiri+ kanan ) / 2 4. Jika X < Nil. Tengah Maka kanan = tengah – 1 5. Jika X > Nil. Tengah Maka kiri = tengah + 1 6. Jika X == Nil. Tengah Maka Nil. Tengah = Nil. Yg dicari 7. Jika X > Maka Pencarian GAGAL
Latihan 1. Buat program dengan linier search untuk menampilkan data data [0] [1] [2] [3] [4] Nilai yang dicari: 9 ditemukan, ada 2 di posisi 2 dan 3 = = =
- Slides: 85