PENGERTIAN ALGORITMA

dokumen-dokumen yang mirip
ALGORITMA PERULANGAN

Konstruksi Dasar Algoritma

STRUKTUR DASAR ALGORITMA

Algoritma Pemrograman

Algoritma Pemrograman

Algoritma Pemrograman

Nama, Tipe, Ekspresi, dan Nilai

Algoritma Pemrograman

Algoritma Pemrograman I

Algoritma Pemrograman

ALGORITMA TUGAS 2 RESUME ALGORITMA PERCABANGAN DAN ALGORITMA PERULANGAN. Disusun Oleh : Sakina Mawardah Teknik Informatika. Dosen : Asep M. Yusuf, S.

Algoritma Pemrograman

STRUKTUR DASAR ALGORITMA

Algoritma Pemrograman

Algoritma Pemrograman

Tugas Algoritma Kelompok XI NILAM CAHYA, MUH. JASIM, IMADUDDIN. Soal

Teori Algoritma. Struktur Algoritma

Algoritma Pemrograman

Struktur Pengulangan

Pertemuan 4 RUNTUNAN/SEKUENSIAL

Algoritma Pemrograman

Pertemuan Ke-2 (Teks Algoritma) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

LOOPING. Brigida Arie Minartiningtyas, M.Kom

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

Proses, Instruksi, dan Aksi

I. KATA PENGANTAR. Modul Algoritma Pemrograman. Modul Ke-4 - Hal 1

Brigida Arie Minartiningtyas, M.Kom

Algoritma & Pemrograman

Algoritma dan Struktur Data I Mia Fitriawati, S.Kom, M.Kom

BAB IV STRUKTUR PROGRAM Struktur program pada dasarnya tersusun 3 struktur program utama yaitu : a. Struktur Berurutan (Sequence Structure) b.

Algoritma & Pemrograman 1. Muhamad Nursalman Pendilkom/Ilkom Universitas Pendidikan Indonesia

Algoritma Pemrograman

Algoritma Pemrograman

BAHAN AJAR ALGORITMA DAN PEMROGRAMAN I

Nama : Aji Dulmajid Kelas : TI-B2. Algoritma dan Pascal. Kumpulan Script

Pertemuan 3 Penyeleksian Kondisi dan Perulangan

ALGORITMA & FLOWCHART

PEMILIHAN. Runtunan. Dian Palupi Rini, M.Kom

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

BAHAN AJAR ALGORITMA DAN PEMROGRAMAN I

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

Dasar Komputer & Pemrograman 2A

Perulangan. Bentuk Proses. 1. Perulangan For positif contoh 1 : perulangan positif untuk satu statement :

Bab 1 Algoritma dan Pemrograman Tersruktur

Pertemuan 4 Diagram Alur / Flowchart

Algoritma dan Pemrograman Bab 05 Struktur Pengulangan. Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia

PENYELEKSIAN KONDISI dengan IF

Contoh 1: Akan dicetak angka 1 sampai 10 dengan menggunakan perulangan for

TIPE, NAMA, DAN NILAI

ALGORITMA (KOMPUTER) : ATURAN PENULISAN DAN STRUKTUR DASARNYA

Algoritma Pemrograman

Definisi Percabangan

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

BAB I TUJUAN DAN LANDASAN TEORI

Teori Algoritma. Algoritma Perulangan

Algoritma dan Struktur Data I

Algoritma,Flowchart, Konsep

SEQUENCE. Program SEQ1 { Contoh penulisan sequence per baris } Program SEQ2 { Contoh penulisan sequence dengan tanda titik koma}

ALGORITMA DAN STRUKTUR DATA 1

Dasar-dasar Algoritma Dan Representasi Algoritma. Pengampu : Muhammad Zidny Naf an, M.Kom

ALGORITMA dan PEMROGRAMAN

Bab 2 DASAR-DASAR ALGORITMA

PENGANTAR ALGORITMA & PEMROGRAMAN C/C++ Analisis Algoritma dan Struktur Data (TKE 670)

Pernyataan FOR Pernyataan WHILE Pernyataan REPEAT. Dewi Sartika,M.Kom

Memulai Pemrograman Pascal dengan Delphi Console 1. Buka aplikasi delphi 2. Pilih File New Other Console Application

MODUL 1. Struktur Bahasa PASCAL secara umum

PRAKTIKUM 7 TIPE DATA TERSTRUKTUR. Larik : deretan data yang punya type data sejenis. Misalnya : Daftar Nomor Telpon, Tabel Pajak dll.

P A S C A L D A S A R

Algoritma Pemrograman

STRUKTUR KENDALI. Memanfaatkan struktur kendali untuk kasus komputasi

Algoritma dan Pemrograman

PENGANTAR LOGIKA DAN ALGORITMA DENGAN PASCAL

SOAL PASCAL A. 1. Lengkapi Source Code Dibawah ini : {* Program Menghitung dengan Operator Matematika*}

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

2 ATURAN PENULISAN TEKS ALGORITMA

Algoritma Pemrograman

Yudha Dwi P. N. Pertemuan 2 Pengantar Algoritma

TPI4202 e-tp.ub.ac.id. Lecture 5

Modul Algoritma Dan Pemrograman Pascal

I. KATA PENGANTAR. Modul Algoritma Pemrograman. Modul Ke-3 - Hal 1

Pengenalan Pascal. Sejarah Singkat Pascal

IF32222 STRUKTUR DATA TIPE DATA. Oleh : Andri Heryandi, M.T.

ALGORITMA DAN PEMROGRAMAN

Prosedur dan Fungsi ALGORITMA DAN PEMROGRAMAN [IS ] Dosen: Yudha Saintika, S.T., M.T.I

BAB I ALGORITMA DAN FLOWCHART

MODUL PRAKTIKUM ALGORITMA PEMROGRAMAN TEKNIK INFORMATIKA

Modul Algoritma dan Pemograman Rismira Andriyani, S.Kom i

Algoritma. Menurut Kamus Besar Bahasa Indonesia Algoritma adalah urutan logis pengambilan putusan untuk pemecahan masalah.

PROSES PENJUALAN BUKU

Chapter 5 Choice. repeatedly if tanda 2 on label: lakukan proses potong 2 if tanda 3 on label: lakukan proses potong 3 until switched off program 5.

Struktur Data. Belajar Struktur Data Menggunakan Pascal Pertemuan-1

Dasar Komputer & Pemrogaman 2A

PUTERA BATAM LOGIKA INFORMATIKA DAN ALGORITMA DAFTAR ISI. BAB IV : PEMILIHAN A. Pengertian

Algoritma dan Struktur Data

Algoritma Pemrograman

Teknik Percabangan. Brigida Arie Minartiningtyas, M.Kom

ALGORITMA & PEMROGRAMAN

Pertemuan 4 Perulangan

MODUL 3 ALGORITMA PEMROGRAMAN

Chapter 3.2 : Tipe, Nama dan Nilai

Transkripsi:

PENGERTIAN Algoritma adalah urutan langkah-langkah untuk memecahkan suatu masalah Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data masukkan menjadi keluaran Algoritma adalah deretan instruksi yang jelas dalam memecahkan masalah, yaitu untuk memperoleh keluaran yang diinginkan dari suatu masukkan dalam jumlah waktu yang terbatas. Algoritma adalah prosedur komputasi yang terdefinisi dengan baik yang menggunakan beberapa nilai sebagai masukkan dan menghasilkan beberapa nilai yang disebut keluaran. Jadi algoritma adalah deretan langkah komputasi yang mentransformasikan masukkan menjadi keluaran. Algoritma yang ditulis dalam bahasa komputer dinamakan program. Bahasa komputer yang digunakan untuk menulis program dinamakan bahasa pemrograman. Orang yang membuat program komputer disebut pemrogram, dan kegiatan merancang dan menulis program disebut pemrograman, serta ada aktivitas menulis kode program dinamakan coding. Pada pemrograman ditekankan pada pemecahan masalah, rancangan pemecahan masalah berisi urutan langkahlangkah pencapaian solusi ditulis dalam notasi diskriptif (notasi algoritmik) Notasi Algoritmik terdiri 3 (tiga), yaitu: I. Menyatakan langkah-langkah algoritma dengan untaian kalimat diskriptif Contoh Program Euclidean Diberikan dua bilangan tak-negatif m dan n (m n). Algoritma Euclidean mencari pembagi bersama terbesar, gcd, dari dua bilangan tersebut, yaitu bilangan terbesar yang habis membagi m dan n. 1. Jika n = 0 maka 2. Bagilah m dan n dan misalkan r adalah sisanya. 3. Ganti nilai m dan nilai n dengan nilai r, lalu ulangi kembali langkah 1 Algoritma dan Pemrograman 1

II. Menggunakan bagan alir (flowchart) Mulai Baca m dan n n=0 Ya tidak r=m MOD n m=n n=r Tulis m Selesai III. Menggunakan pseudo-code. Contoh Program Euclidean {Diberikan dua bilangan tak-negatif m dan n (m n). Algoritma Euclidean mencari pembagi bersama terbesar, gcd, dari dua bilangan, yaitu bilangan terbesar yang habis membagi m dan n} m, n : integer {bilangan bulat yang dicari pbt nya} r : integer { sisa hasil bagi } : Read(m,n) While m 0 do r m n m MOD n n r endwhile write(m) Algoritma dan Pemrograman 2

NO. PERNYATAAN ALGORITMIK BAHASA PASCAL 1 Penugasan := 2 Pembacaan read read readln 3 Penulisan write write writeln Contoh Algoritmik: Type Titik : record <x:real, y:real> p: Titik a,b : integer NamaArsip, h : string nilai : real c : char nilai 1200.0 read(p.x, P.y) read(namaarsip) h Nama Arsip read(a, b) read(c) write( Nama arsip:,namaarsip) write( Koordinat titik adalah:,p.x,,, P.y) write(b, nilai) write( Karakter yang dibaca adalah:, C) Pascal: (* *) Type Titik = record x:real; y:real; end; var p : Titik a,b : integer; NamaArsip, h : string[12]; nilai : real; c : char; Algoritma dan Pemrograman 3

(* *) Nilai:=1200.0; readln(p.x, P.y); readln(namaarsip); h := Nama Arsip; readln(a, b); readln(c); writeln( Nama arsip:,namaarsip); writeln( Koordinat titik adalah:,p.x,,, P.y); writeln(b, nilai); write( Karakter yang dibaca adalah:, C); SOAL-SOAL 1. Tuliskan beberapa contoh algoritma dalam kehidupan sehari-hari. Dan tuliskan juga beberapa contoh langkah dalam algoritma. 2. Tiga pasang suami isteri yang sedang menempuh perjalanan sampai ke sebuah sungai. Di situ mereka menemukan sebuah perahu kecil yang hanya bisa menampung tidak lebih dari dua orang setiap kali menyeberang. Penyeberangan sungai dirumitkan oleh keadaan bahwa para suami sangat pencemburu dan tidak amu meninggalkan isteri-isteri mereka jika ada lelaki lain. Tulis algoritma untuk menunjukkan bagaimana penyebrangan itu bisa dilakukan. 3. Misalkan terdapat dua buah ember, masing-masing mempunyai volum 5 liter dan 3 liter. Tuliskan algoritma untuk memperoleh air sebanyak 1 liter dengan hanya menggunakan kedua ember tersebut. 4. Di manakah letak kesalahan algoritma menjalankan sepeda motor berikut: menjalankan sepeda motor: 1. Hidupkan starter 2. Masukkan kunci kontak 3. Tekan gigi 1 4. Perbesar gas 5. jalan 5. Definisikan sebuah struktur untuk menyatakan data nasabah di sebuah bank. Data nasabah terdiri atas field: nomor account, nama nasabah, alamat nasabah, kota nasabah, nomor telpon nasabah, untuk setiap field, didefinisiakn tipe data yang cocok 6. Definisikan sebuah tipe struktur untuk menyatakan penerbangan di sebuah bandara. Data penerbangan terdiri atas: nomor penerbangan (missal (GA306), bandara (kota) asal, bandara Algoritma dan Pemrograman 4

tujuan, tanggal keberangkaran, jam keberangkatan (departure time), jam datang (arrival time). Untuk setiap field, definisikan tipe data yang cocok. 7. Tuliskan rumus berikut dalam notasi algoritmik: (a) V = 4 3 r 3 (b) X 1 = b 2 b 2a 4ac 2 b b 4ac (c) X 12 = 2a 1 d c (d) M = ad bc b a 8. Apa perbedaan n n + 2 dari sudut pandang algoritma dan n = n+2 dari sudut pandang matematika 9. Sebuah mobil melaju dengan kecepatan tetap v km/jam. Jika mobil tersebut berjalan selama t jam, tuliskan algoritma untuk menghitung jarak yang ditempuh mobil (dalam km). Algoritma tersebut membaca masukkan berupa v dan t, menghitung jarak dengan rumus s = vt, lalu mencetak jarak tersebut 10. Translasikan algoritma pada nomor 5 ke dalam program dalam bahasa Pascal, lalu tes program tersebut dengan bermacam-macam nilai v dan t. Algoritma dan Pemrograman 5

NOTASI Pseudo-code Notasi pseudo-code mempunyai korespondensi dengan notasi bahasa pemrograman sehingga proses penerjemahan dari pseudo-code ke program menjadi lebih mudah. Tidak ada aturan baku pada pseudo-code, sembarang versi pseudo-code dapat diterima asalkan bisa dipahami, tidak seperti pada bahasa pemrograman. Pernyataan 1 Pernyataan 2 Tulis nilai X dan Y Pernyataan isikan nilai X ke dalam min write(x,y) Pseudo-code-nya min X write(x,y) Algoritmik min X write(x,y); Bahasa Pascal min := X; Printf( %d %d, X,Y); Bahasa C min = X, Write X,Y Bahasa Basic min = X Write(*,*) X,Y Bahasa Fortran min = X Struktur Teks Algoritma Algoritma Pertama adalah untuk mencetak tulisan Salam PROGRAM Salam {Program untuk mencetak Salam Masukkan : - Keluaran : string Salam } {tidak ada} Write( Salam ) Algoritma Kedua program untuk mencetak tabel konversi suhu dalam derajat Fahrenheit (F) dan suhu ekuivalennya dalam derajat Celcius (C) dengan menggunakan rumus: C = 5/9 (F 32) PROGRAM Fahrenheit_Celcius {Program untuk mencetak tabel Fahrenheit-Celcius dari x sampai y dengan kenaikan sebesar step Masukkan: suhu awal, suhu akhir, step Keluaran: tabel konversi suhu dalam C dan F } Algoritma dan Pemrograman 6

F, C : real X, y, step : integer read(x, y, step) F x while F y do C = 5/9 * (F 32) write(f, C) F F + step endwhile Dengan memperhatikan dua algoritma di atas, terlihat bahwa teks algoritma terdiri dari tiga bagian (blok) yaitu: 1. Bagian judul (header) 2. Bagian deklarasi (declaration) 3. Bagian algoritma Notasi Algoritma secara umum PROGRAM Nama Program { penjelasan tentang algoritma, uraian singkat masalah, masukkan dan keluaran} { semua nama yang digunakan, meliputi nama tipe, nama konstanta, nama variabel, nama prosedur, dan nama fungsi diumumkan di sini} { berisi langkah-langkah penyelesian masalah} Bahasa Pascal Algoritma dan Pemrograman 7

Program Nama_Program { penjelasan tentang program, uraian singkat masalah, masukkan dan keluaran} (* Deklarasi *) [const] {semua nama tetapan dan harga tetapan didefinisikan di sini} [tipe] {semua nama tipe bentukan didefinisikan di sini} [var] {semua nama variabel global bentukan didefinisikan di sini} (* Algoritma *) {semua instruksi program dituliskan di sini} Translasi notasi algoritma ke dalam bahasa Pascal untuk program mencetak kata salam dan konversi suhu dari Fahrenheit dan Celcius. 1. Program Mencetak Salam PROGRAM Salam; {Program untuk mencetak Salam, Masukkan program ini tidak ada. Keluarannya adalah tulisan Salam di layar } (* *) {tidak ada} (* *) Write( Salam ); 2. Program Konversi suhu dari Fahrenheit ke Celcius PROGRAM Fahrenheit_Celcius; {Program untuk mencetak tabel Fahrenheit-Celcius dari x sampai y dengan kenaikan sebesar step. Masukkan: suhu awal, suhu akhir, step dan Keluaran: tabel konversi suhu dalam C dan F } (* *) F, C : real; Algoritma dan Pemrograman 8

x, y, step : integer; Begin (* *) read(x); read(y); read(step); F := x; while F <= y do C := 5/9 * (F 32); writeln(f,, c); F := F + step; end; Algoritma dan Pemrograman 9

RUNTUNAN Runtunan adalah struktur algoritma yang paling dasar yang berisi rangkaian instruksi yang diproses secara skuensial, satu persatu, mulai dari instruksi yang pertama sampai instruksi yang terakhir. Algoritma runtunan (squence) satu atau lebih instruksi, yang berarti bahwa 1. tiap instruksi dierjakan satu persatu 2. tiap instruksi dilaksanakan tepat sekali, tidak ada instruksi yang diulang 3. urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi sebagaimana yang tertulis dalam teks algoritmanya 4. akhir dari instruksi terakhir merupakan akhir algoritma Contoh 1. Mencetak pesan salam a. Algoritma untuk mencetak tulisan Salam PROGRAM Salam {Program untuk mencetak Salam } {tidak ada} Write( Salam ) b. String Salam disimpan dalam suatu variabel tipe string kemudian baru dicetak PROGRAM Salam {Program untuk mencetak Salam } Pesan : string : Pesan Salam Write(pesan) Algoritma dan Pemrograman 10

c. String Salam disimpan sebagai konstanta kemudian baru dicetak PROGRAM Salam {Program untuk mencetak Salam } Const Pesan = Salam : Write(pesan) 2. Algoritma membaca nama seseorang dari papan ketik, lalu menampilkan ucapan salam diikuti nama orang tersebut. PROGRAM Salam { mencetak Salam diikuti nama orang. Nama orang dibaca dahulu } nama : string Read(nama) Write( Salam, nama) 3. Algoritma membaca dua buah nilai untuk variabel A dan B, lalu mempertukarkan nilai kedua variabel tersebut. PROGRAM Pertukaran {mempertukarkan nilai A dan B. Nilai A dan B dibaca dahulu} A, B, C : integer {A dan B sudah terdefinisi dengan nilai} {perkukarkan nilai A dan B} C A {simpan nilai A dipenampung sementara C} A B {sekarang A dapat diisi nilai B} B C {isi B dengan nilai A semula yang tadi disimpan di C} {tulis nilai A dan B setelah pertukaran} Write(A) Write(B) Algoritma dan Pemrograman 11

Pascal: PROGRAM Pertukaran; {mempertukarkan nilai A dan B. Nilai A dan B dibaca terlebih dahulu} (* *) A, B, C : integer; (* *) {baca nilai A dan B} Write( A =? ); readln(a); Write( B =? ); readln(b); {perkukarkan nilai A dan B} C := A {simpan nilai A dipenampung sementara C} A := B {sekarang A dapat diisi nilai B} B := C {isi B dengan nilai A semula yang tadi disimpan di C} {tulis nilai A dan B setelah pertukaran} Writeln( A =?,A); Writeln( B =?,B); 4. Algoritma membaca panjang dan lebar kemudian menghitung luas persegi panjang = panjang kali lebar. PROGRAM Luas_persegi_panjang Panjang : real Lebar : real Luas : real read(panjang, lebar) luas panjang * lebar write(luas) Algoritma dan Pemrograman 12

Pascal: PROGRAM Luas_persegi_panjang; (* *) Panjang : real; Lebar : real; Luas : real; (* *) write( berapa panjang persegi? = ); readln(panjang); write( berapa lebar persegi? = ); readln(lebar); luas := panjang * lebar; writeln( luas persegi panjang =,luas); 5. Algoritma membaca waktu tempuh seorang pelari maraton dalam jam, menit, detik ke dalam detik. PROGRAM Konversi_ke_detik { membaca waktu tempuh pelari maraton dalam jam, menit, detik konversi ke detik dan hasilnya ditampilkan sebagai keluaran } Type Jam = record < hh : integer {jam} mm : integer {menit} dd : integer {detik} > J : Jam TotalDetik : integer : read(jam, menit, detik) totaldetik (J.hh*3600) + (J.mm*60) + J*ss write(totaldetik) Algoritma dan Pemrograman 13

Pascal: PROGRAM Konversi_ke_detik; { membaca waktu tempuh pelari maraton dalam jam, menit, detik konversi ke detik dan hasilnya ditampilkan sebagai keluaran } (* *) Type Jam = record hh : longint; {jam} mm : longint; {menit} dd : longint; {detik} end; var J : Jam; Totaldetik : longint; (* : *) write( Jam : ); readln(j.hh); write( Menit: ); readln(j.mm); write( Detik: ); readln(j.dd); totaldetik := (J.hh*3600) + (J.mm*60) + J*ss; writeln( Total Detik =,totaldetik); Membaca/ Menulis dari/ke Arsip Asumsi bahwa data masukkan dibaca dari papan ketik (keyboard) dan keluaran dicetak ke layar (monitor), kadang data dibaca dari arsip (file) atau keluaran (output) ditulis ke arsip. a. Membuka arsip untuk dibaca var Fin : text {nama variabel arsip} assign(fin, data.txt ); {data masukkan telah disimpan data.txt} reset(fin);... {instruksi selanjutnya} Algoritma dan Pemrograman 14

b. Membuka arsip untuk ditulis Var Fout : text {nama variabel arsip} assign(fout, hasil.txt ); {data keluaran akan disimpan hasil.txt} rewrite(fout);... {instruksi selanjutnya} c. Menutup arsip Misalkan arsip data.txt telah selesai dibaca, cara menutup arsip tersebut adalah Close(Fin); d. Pernyataan untuk membaca data dari arsip Membaca sebuah data dan menyimpan hasil pembacaan ke dalam variabel x adalah read(fin, x); e. Pernyataan untuk menulis data ke arsip Menulis sebuah data x write(fout, x); Contoh Misalkan arsip data.txt sudah berisi panjang dan lebar persegi panjang seperti berikut (antara data dipisahkan dengan spasi) 15 20 Keluaran hasil program ditulis ke arsip hasil.txt. PROGRAM Luas_persegi_panjang; { membaca panjang dan lebar persegi panjang dari arsip, menghitung luasnya, lalu mencetak luas tersebut ke arsip hasil.txt} (* *) var Panjang : real; {panjang persegi panjang dalam cm} Lebar : real; {lebar persegi panjang dalam cm} Luas : real; {luas persegi panjang dalam cm 2 } Fin, Fout : text; {Pointer ke arsip masukkan dan keluaran} Algoritma dan Pemrograman 15

(* *) {buka arsip masukkan} assign(fin, data.txt); riset(fin); {buka arsip keluaran} assign(fout, hasil.txt); rewrite(fout); {baca panjang dan lebar dari arsip Fin} read(fin, panjang, lebar); luas := panjang * lebar; {tulis luas persegi panjang ke arsip Fout} Writeln(Fout, Luas persegi panjang =,luas); {tutup arsip} close(fin); close(fout); SOAL-SOAL 1. Buatlah sebuah algoritma dengan spesifikasi sebagai berikut Menampilkan tulisan Halo, siapa namamu?, lalu Meminta pengguna memasukkan namanya, dan akhirnya Menulis pesan senang berteman denganmu, <nama>, yang dalam hal ini <nama> adalah string yang dibaca berdasarkan nama masukkan 2. Tulislah algoritma untuk menghitung luas bangun geometri lain (lingkaran, persegi, segitiga, trapesium). Data masukkan dibaca dari piranti masukkan dan luas bangun ditampilkan sebagai keluaran 3. Dibaca durasi waktu dalam detik. Tulislah algoritma untuk konversi waktu tersebut ke dalam jam, menit, detik. Algoritma dan Pemrograman 16

4. Tulislah algoritma untuk membaca panjang sebuah benda dalam satua meter, lalu mengkonversinya ke dalam satuan inch, kaki dan yard (1 inch = 2,54 mm, 1 kaki = 30,48 cm, dan 1 yard = 0,9144 m) 5. Berat badan ideal ada hubungannya dengan tinggi badan seseorang. Untuk menentukan berat badan ideal, tinggi badan dikurangi 100, lalu dikurangi lagi dengan 10% dari hasil pengukuran pertama. Tulislah algoritma yang membaca tinggi badan lalu menentukan berat badan yang ideal untuk tinggi tersebut. Algoritma dan Pemrograman 17

Masalah Satu Kasus Notasi algoritmik untuk masalah satu kasus adalah dengan menggunakan konstruksi IF-THEN (jika-maka) dalam bentuk pernyataan If kondisi then Aksi aksi Pernyataan di atas berarti bahwa aksi akan dilaksanakan bila kondisi bernilai benar (true), bila bernilai salah (false) tidak ada aksi apapun yang akan dikerjakan. end Mencetak Pesan Genap PROGRAM BilanganGenap {Mencetak pesan Genap jika sebuah bilangan yang dibaca merupakan bilangan genap} x : integer read(x) if x mod 2 = 0 then write( genap ) Program dalam bentuk bahasa Pascal: PROGRAM BilanganGenap; {Mencetak pesan "Genap" jika sebuah bilangan yang dibaca merupakan bilangan genap} uses wincrt; (* *) var x : integer; (* *) Begin clrscr; read(x); if x mod 2 = 0 then write('genap'); (* *) readln; benar Aksi-1 kondisi benar kondisi - salah salah Aksi-2 Masalah Dua Kasus Algoritma dan Pemrograman 18 end

Notasi algoritmik untuk masalah dua kasus adalah dengan menggunakan konstruksi IF-THEN- ELSE (jika-maka-kalau tidak) dalam bentuk pernyataan If kondisi then Aksi-1 Else Aksi-2 Pernyataan di atas berarti bahwa aksi-1 akan dilaksanakan bila kondisi bernilai benar (true) sebaliknya jika kondisi bernilai salah, maka aksi-2 yang akan dilaksanakan. Menentukan bilangan terbesar (Maksimum) PROGRAM Maksimum {Menentukan bilangan terbesar dari dua bilangan bulat} Read(A,B) If A > B then Write( Bilangan terbesar :,A) Else {berarti B A } Write( Bilangan terbesar :,B) Endif Program dalam bahasa Pascal PROGRAM Maksimum; {Menentukan bilangan terbesar dari dua bilangan bulat} uses wincrt; (* *) Var A, B : integer; (* *) Begin clrscr; Read(A,B); If A > B then Write('Bilangan terbesar : ',A) Else {berarti B >= A } Write('Bilangan terbesar : ',B); (* Endif *) Algoritma dan Pemrograman 19

Masalah Tiga Kasus atau Lebih benar Kondisi- 1 salah Aksi-1 benar Kondisi- 2 salah Aksi-2 Aksi-3 Masalah yang mempunyai tiga kasus atau end lebih dapat dianalisis dengan konstruksi IF- THEN- ELSE bertingkat-tingkat if kondisi-1 then end aksi-1 if if end kondisi-2 then aksi-2 aksi-3 Algoritma membaca sebuah bilangan bulat, kemudian menentukan apakah bilangan bulat tersebut positif, negatif atau nol. Baca bilangan bulat tersebut misalkan x, Analisis kasus Kasus 1: bila x > 0 maka x adalah bilangan positif, Kasus 2: bila x < 0 maka x adalah bilangan negatif, Kasus 3: bila x = 0 maka x adalah bilangan nol. PROGRAM JenisBilanganBulat {menentukan apakah bilangan bulat positif, negatif atau nol} x : integer read(x) Algoritma dan Pemrograman 20

If x > 0 then Write( positif ) If x < 0 then Write( negatif ) If x = 0 then Write( Nol ) Pascal: PROGRAM JenisBilanganBulat; {menentukan apakah bilangan bulat positif, negatif atau nol} uses wincrt; (* *) var x : integer; (* *) read(x); if x > 0 then write('positif') if x < 0 then write('negatif') if x = 0 then write('nol') Tuliskan algoritma membacakan temparatur air (T dalam satuan derajat Celcius) pada tekanan normal lalu menentukan apakah wujud air tersebut dalam padat (T 0 o C), cair (0 < T < 100), atau gas (T > 100). Misalkan suhu air adalah T Analisis Kasus Kasus 1: jika T 0 o C, maka air berwujud padat, Kasus 2: jika 0 < T < 100, maka air berwujud cair, Kasus 3: jika T > 100, maka air berwujud uap. PROGRAM WujudAir Var T : real Algoritma dan Pemrograman 21

read(t) if T 0 then write( padat ) if (T > 0) and (T < 100) then write( Cair ) if T > 100 then write( gas atau uap ) Pascal: PROGRAM WujudAir; uses wincrt; (* *) Var T : real; (* *) Begin clrscr; read(t); if T <= 0 then write('padat') if (T > 0) and (T < 100) then write('cair') if T > 100 then write('gas atau uap') Tuliskan algoritma konversi nilai mahasiswa, berdasarkan rata skala 100 menjadi skala 4. bila nilai NA 80 maka nilai A bila nilai 75 NA < 80 maka nilai B+ bila nilai 70 NA < 75 maka nilai B bila nilai 65 NA < 70 maka nilai C+ bila nilai 60 NA < 65 maka nilai C bila nilai 55 NA < 60 maka nilai D+ bila nilai 50 NA < 55 maka nilai D bila nilai 0 NA < 50 maka nilai E PROGRAM KonversiNilai {menghitung nilai konversi dari skala 100 menjadi skala 4} Algoritma dan Pemrograman 22

NA : real if NA 80 then write( A ) if (NA >= 75) or (NA < 80) then write( B+ ) if (NA >= 70) or (NA < 75) then write( B ) if (NA >= 65) or (NA < 70) then write( C+ ) if (NA >= 60) or (NA < 65) then write( C+ ) if (NA >= 55) or (NA < 60) then write( D+ ) if (NA>= 50) or (NA < 55) then write( D ) if (NA < 50) then write( E ) Pascal: PROGRAM KonversiNilai; {menghitung nilai konversi dari skala 100 menjadi skala 4} uses wincrt; (* *) var NA : real; (* *) Begin read(na); if NA >= 80 then Algoritma dan Pemrograman 23

write('a') if (NA >= 75) and (NA < 80) then write('b+') if (NA >= 70) and (NA < 75) then write('b') if (NA >= 65) and (NA < 70) then write('c+') if (NA >= 60) and (NA < 65) then write('c') if (NA >= 55) and (NA < 60) then write('d+') if (NA>= 50) and (NA < 55) then write('d') if (NA < 50) then write('e') Struktur Case Menentukan nama bulan berdasarkan nomor bulan PROGRAM NamaBulan; uses wincrt; var Nomor_bulan : integer; clrscr; write('ketik Nomor bulan (1-12): '); readln(nomor_bulan); case Nomor_bulan of 1 : writeln('januari'); 2 : writeln('pebruari'); 3 : writeln('maret'); 4 : writeln('april'); 5 : writeln('mei'); 6 : writeln('juni'); Algoritma dan Pemrograman 24

7 : writeln('juli'); 8 : writeln('agustus'); 9 : writeln('september'); 10 : writeln('oktober'); 11 : writeln('nopember'); 12 : writeln('desember'); writeln('bukan Bulan yang benar'); end; PROGRAM NamaBulan; (* *) uses wincrt; var Nomor_bulan : integer; (* *) clrscr; write('ketik Nomor bulan (1-12): '); readln(nomor_bulan); case Nomor_bulan of 1 : writeln('januari'); 2 : writeln('pebruari'); 3 : writeln('maret'); 4 : writeln('april'); 5 : writeln('mei'); 6 : writeln('juni'); 7 : writeln('juli'); 8 : writeln('agustus'); 9 : writeln('september'); 10 : writeln('oktober'); 11 : writeln('nopember'); 12 : writeln('desember'); writeln('bukan Bulan yang benar'); end; Tugas Individu Kerjakan Semua Soal Kumpulkan pada pertemuan 2 Atau ansoriunlam@yahoo.co.id Soal Latihan 1. Buatlah algoritma yang membaca sebuah bilangan bulat positif lalu menentukan bilangan tersebut merupakan kelipatan 4 atau bukan. 2. Pasar swalayan A memberikan diskon harga bagi pembeli yang nila total belanja lebih dari Rp 100.000,00. Tulis algoritma untuk menentukan harga belanja setelah dikurangi diskon. Data masukkan adala nilai total belanja pembeli, sedangkan keluaran adalah diskon harga dan nilai belanja setelah dikurangi diskon. Algoritma dan Pemrograman 25

3. Tulis algoritma membaca 3 buah bilangan bulat, lalu mengurutkan 3 buah bilangan tersebut dari nilai yang kecil ke nilai yang besar. 4. Tulislah algoritma yang membaca panjang (integer) tiga buah sisi segitiga a, b, dan c dalam hal ini a b c. Tentukan apakah ketiga bilangan tersebut membetuk segitiga siku-siku, segitiga lancip, atau segitiga tumpul (gunakan teorema Phytagoras) 5. Tulislah algoritma membaca bilangan bulat positif dalam rentang 1 10, dan konversikan ke angka Romawi. Algoritma dan Pemrograman 26

PENGULANGAN Pengulangan yang akan dipelajari hanya 3 macam notasi konstruksi, yaitu: 1. Pernyataan FOR, 2. Pernyataan WHILE, 3. Pernyataan REPEAT. Pernyataan FOR adalah konstruksi pengulangan tanpa kondisi, artinya instruksi-instruksi di dalam badan pengulangan diulangi sejumlah kali yang dispesifikasikan oleh pemrogram. Pada sebagian besar masalah kondisi pengulangan tidak diketahui sebelum eksekusi, yang dapat ditentukan hanya kondisi berhenti pengulangan, ini disebut pengulangan dengan kondisi. Jenis ini merupakan pengulangan menggunakan pernyataan WHILE dan REPEAT. a. Pernyataan FOR Bentuk umum pernyataan FOR ada dua macam: menaik (ascending) atau menurun (descending). FOR menaik Bentuk umum untuk For menaik for pencacah nilai_awal to nilai_akhir do aksi endfor Contoh Algoritma PROGRAM Cetak_banyak_Helloword {mencetak kata Hello word sebanyak 10 kali} i : integer {pencacah pengulangan } for i 1 to 10 do { ulangi sebanyak 10 kali } writeln( Hello word ) endfor Program Pascal: PROGRAM Cetak_banyak_Helloword; {mencetak kata "Hello word" sebanyak 10 kali} uses wincrt; (* *) var i : integer; {pencacah pengulangan } (* *) Begin Algoritma dan Pemrograman 27

clrscr; for i := 1 to 10 do { ulangi sebanyak 10 kali } writeln('hello word'); Contoh lain PROGRAM PenjumlahanDeret { mejumlahkan deret 1 + 2 +... + N, dengan N bilangan bulat positif } N: integer i: integer jumlah : integer read(n) jumlah 0 { inisialisasi jumlah deret = 0 } for i to N { ulangi penjumlahan deret sebanyak N } jumlah jumlah + 1 endfor write(jumlah) PASCAL: PROGRAM PenjumlahanDeret; { mejumlahkan deret 1 + 2 +... + N, dengan N bilangan bulat positif } uses wincrt; (* *) var N: integer; i: integer; jumlah : integer; (* *) Begin clrscr; readln(n); jumlah := 0; { inisialisasi jumlah deret = 0 } for i := 0 to N do { ulangi penjumlahan deret sebanyak N } jumlah := jumlah + i; end; (* endfor *) writeln(jumlah) FOR menurun Bentuk umum untuk for menurun: for pencacah nilai_akhir downto nilai_awal do aksi Algoritma dan Pemrograman 28

endfor Contoh: PROGRAM HitungMundur {Hitung mundur dari 100} i : integer for i 100 downto 0 do write(i) endfor write( Go ) Pascal: PROGRAM HitungMundur; {Hitung mundur dari 20} uses wincrt; (* *) var i : integer; (* *) Begin for i:= 20 downto 0 do writeln(i); (* endfor *) write('go'); Contoh lain: PROGRAM Bilangan_segitiga i, j : integer for i 5 downto 1 do for j 1 to i do writeln(i); Pascal: Algoritma dan Pemrograman 29

PROGRAM Bilangan_segitiga; uses wincrt; (* *) var i, j : integer; (* *) clrscr; for i:=5 downto 1 do for j:=1 to i do write(i); end; writeln; end; b. Pernyataan WHILE Bentuk umum pernyataan WHILE adalah: while kondisi do aksi andwhile Contoh: PROGRAM Cetak_banyak_Helloword {mencetak kata Hello word sebanyak 10 kali} i : integer {pencacah pengulangan } i 1 while i 10 do write( Hello word ) i i + 1 endwhile Pascal: PROGRAM Cetak_banyak_Helloword; {mencetak kata "Hello word" sebanyak 10 kali} uses wincrt; (* *) var i : integer; {pencacah pengulangan } Algoritma dan Pemrograman 30

(* *) i := 1; while i < 10 do writeln('hello word'); i := i + 1 end; contoh lain PROGRAM PenjumlahanDeret { mejumlahkan deret 1 + 2 +... + N, dengan N bilangan bulat positif } N: integer i: integer jumlah : integer read(n) jumlah 0 { inisialisasi jumlah deret = 0 } i 1 while i N do jumlah jumlah + 1 i i + 1 endwhile { i > N } write(jumlah) Pascal: PROGRAM PenjumlahanDeret; { mejumlahkan deret 1 + 2 +... + N, dengan N bilangan bulat positif } uses wincrt; (* *) var N: integer; i: integer; jumlah : integer; (* *) Begin Algoritma dan Pemrograman 31

clrscr; read(n); jumlah := 0; { inisialisasi jumlah deret = 0 } i := 1; while i < N do jumlah := jumlah + i; i := i + 1 end; (*endwhile*) { i > N } write(jumlah); c. Pernyataan REPEAT Bentuk umum pernyataan REPEAT adalah: repeat aksi until kondisi Contoh: Menuliskan kata Hello word sebanyak 10 baris, menggunakan REPEAT UNTIL. PROGRAM Cetak_banyak_Helloword {mencetak kata Hello word sebanyak 10 kali} i : integer {pencacah pengulangan } i 1 repeat writeln( Hello word ) i i + 1 until i > 10 Pascal: PROGRAM Cetak_banyak_Helloword; {mencetak kata "Hello word" sebanyak 10 kali} uses wincrt; (* *) var i : integer; {pencacah pengulangan } Algoritma dan Pemrograman 32

(* *) clrscr; i := 1; repeat writeln('hello word'); i := i + 1; until i > 10; Contoh lain: PROGRAM PenjumlahanDeret { mejumlahkan deret 1 + 2 +... + N, dengan N bilangan bulat positif } N: integer i: integer jumlah : integer read(n) jumlah 0 { inisialisasi jumlah deret = 0 } i 1 repeat jumlah jumlah + 1 i i + 1 until i > N write(jumlah) Pascal: PROGRAM PenjumlahanDeret; } { mejumlahkan deret 1 + 2 +... + N, dengan N bilangan bulat positif uses wincrt; (* *) var Algoritma dan Pemrograman 33

N: integer; i: integer; jumlah : integer; (* *) read(n); jumlah := 0; { inisialisasi jumlah deret = 0 } i := 1; repeat jumlah := jumlah + i; i := i + 1; until i > N; write(jumlah); Algoritma dan Pemrograman 34

PEMECAHAN MASALAH Pada bagian ini akan disajikan beberapa contoh pemecahan masalah, pemecahan masalah disajikan dari bentuk sederhana sampai pada bentuk yang lebih sulit (kompleks). Pemecahan masalah diharapkan dapat menjadi pola-pola yang dapat digunakan untuk memecahkan masalah yang sejenis. d. PERSAMAAN LINEAR DUA VARIABEL Persamaan linear dua variabel mempunyai bentuk: a x + b y = p (1) c x + d y = q (2) Penyelesaian persamaan linear ada beberapa macam diantaranya: eleminasi, substitusi, grafik, matriks. Apabila diselesaikan dengan matriks, maka diperoleh persamaan matriks = (3) x = = = (pd-bq)/(ad-bc) (4) y = = = (aq-cp)/(ad-bc) (5) dengan syarat ad bc 0 (6) berdasarkan penyelesaian pada persamaan (4) dan (5), disusun algoritmik untuk penyelesaian persamaan dua variabel. PROGRAM PersamaanLinear { Penyelesaian persamaan linear dua variabel ax + by = p dan cx + dy = q menggunakan penyelesaian materik, nilai a, b, c, d, p, q dibaca sebagai masukkan dan nilai x dan y dicetak seagai keluaran } a, b, c, d : real p, q, det : real readln(a) readln(b) readln(c) readln(d) det ad bc if det <> 0 then x (pd-bq)/(ad-bc) y (aq-cp)/(ad-bc) write(x) write(y) write( Tidak dapat diselesaikan ) Algoritma dan Pemrograman 35

Program Pascal: e. PROGRAM PersamaanLinear; f. { Penyelesaian persamaan linear dua variabel ax + by = p dan cx + dy = q menggunakan penyelesaian matrik } g. uses wincrt; h. i. (* *) j. var k. a, b, c, d : real; l. p, q, det : real; m. x, y : real; n. o. (* *) p. Begin q. write('a = '); readln(a); r. write('b = '); readln(b); s. write('c = '); readln(c); t. write('d = '); readln(d); u. write('p = '); readln(p); v. write('q = '); readln(q); w. det := a*d - b*c; x. if det <> 0 then y. z. x := (p*d-b*q)/det; aa. y := (a*q-c*p)/det; bb. writeln('x = ',x:5:0); cc. writeln('y = ',y:5:0); dd. end ee. ff. write('tidak dapat diselesaikan'); gg. (* *) hh. ii. AKAR PERSAMAAN KUADRAT Bentuk umum persamaan kuadrat ax 2 + bx + c = 0 dengan syarat a 0 Akar-akar persamaan kuadrat dapat dihitung dengan menggunakan rumus berikut ini: x 1,2 = Jenis akar persamaan kuadrat tergantung pada nilai b 2 4ac (determinan atau D), yaitu: Jika nilai b 2 4ac < 0, maka akar-akarnya imaginer, Jika nilai b 2 4ac > 0, maka akar-akarnya riil dan berbeda, Jika nilai b 2 4ac = 0, maka akar-akarnya riil dan sama. Permasalahan ini dapat dibagi menjadi tiga kasus, Kasus 1 : D < 0, akar-akarnya imaginer, Algoritma dan Pemrograman 36

Kasus 2 : D > 0, akar-akarnya riil dan berbeda, Kasus 3 : D = 0, akar-akarnya riil dan sama. PROGRAM AkarPersamaanKuadrat { menhitung akar-akar persamaan kuadrat ax 2 + bx + c = 0, nilai a, b, c dibaca sebagai masukkan (a 0) dan akar-akarnya dicatak sebagai keluaran } a, b, c : real { koefisien persamaan kuadrat } D : real { determinan persamaan kuadrat} x1, x2 : real { akar-akar persamaan kuadrat read (a,b,c) D b*b 4*a*c if D < 0 then write( akar-akar imaginer ) if D > 0 then x1 (-b + SQRT(D))/(2*a) x2 (-b - SQRT(D))/(2*a) { D = 0 } x1 (-b + SQRT(D))/(2*a) x2 x1 write(x1,x2) Pascal: PROGRAM AkarPersamaanKuadrat; { menghitung akar-akar persamaan kuadrat, nilai a, b, c sebagai masukkan (a<>0) dan akar-akarnya dicatak sebagai keluaran } uses wincrt; (* *) var a, b, c : real; { koefisien persamaan kuadrat } D : real; { determinan persamaan kuadrat} x1, x2 : real; { akar-akar persamaan kuadrat} (* *) read (a,b,c); D := b*b - 4*a*c; if D < 0 then write('akar-akar imaginer') if D > 0 then Algoritma dan Pemrograman 37

x1 := (-b + SQRT(D))/(2*a); x2 := (-b - SQRT(D))/(2*a); end { D = 0 } x1 := (-b + SQRT(D)/(2*a)); x2 := x1; end; (* *) writeln('x1 = ',x1:3:0); writeln('x2 = ',x2:3:0) (* *) jj. MENGHITUNG PANGKAT (a n ) n bilangan bulat positif Buatlah algoritma untuk membaca a dan n bilangan bulat (n 0) lalu menghitung perpangkatan a n. Perpangkatan a n berarti mengalikan a sebanyak n faktor. a n = a x a x a x... x a (sebanyak n faktor) Misalkan hasil perpangkatan tersebut adalah p, pertama p diinisialkan 1 bukan 0, karena ia akan selalu dikalikan dengan a. Lakukan perkalian p dengan a sebanyak n kali PROGRAM perpangkatan { menghitung perpangkatan a n, dengan masukkan a dan n bilangan bulat dan keluaran hasil dari perpangkatan } a : real { nilai yang dipangkatkan } n : integer { pangkat } p : real { hasil perpangkatan } i : integer { pencacah pengulangan } read(a,n) p 1 for i 1 to n do p p * a endfor write(p) Pascal: PROGRAM perpangkatan; { menghitung perpangkatan an, dengan masukkan a dan n bilangan bulat dan keluaran hasil dari perpangkatan } uses wincrt; Algoritma dan Pemrograman 38

(* *) var a : real; { nilai yang dipangkatkan } n : integer; { pangkat } p : real; { hasil perpangkatan } i : integer; { pencacah pengulangan } (* *) read(a,n); p := 1; for i := 1 to n do p := p * a; (* endfor *) write(p); MENGHITUNG PANGKAT n bilangan bulat sebarang Algoritma sebelumnya dapat dikembangkan juga dapat digunakan untuk menghitung a n bilangan bulat (negatif, nol atau positif), algoritma sebelumnya hanya untuk bilangan bulat positif saja. Gunakan kenyataan bahwa a -n = PROGRAM perpangkatan { menghitung perpangkatan an, dengan masukkan a dan n bilangan bulat sembarang dan keluaran hasil dari perpangkatan } a : real; { nilai yang dipangkatkan } n,m : integer; { pangkat } p : real; { hasil perpangkatan } i : integer; { pencacah pengulangan } read(a,n) p := 1 for i := 1 to ABS(n) do p := p * a Algoritma dan Pemrograman 39

{ tuliskan hasil perpangkatan tergantung pada n } if n < 0 then write(1/p:8:3) write(p:8:3); Pascal: PROGRAM perpangkatan; { menghitung perpangkatan an, dengan masukkan a dan n bilangan bulat sembarang dan keluaran hasil dari perpangkatan } uses wincrt; (* *) var a : real; { nilai yang dipangkatkan } n,m : integer; { pangkat } p : real; { hasil perpangkatan } i : integer; { pencacah pengulangan } (* *) clrscr; read(a,n); p := 1; for i := 1 to ABS(n) do p := p * a;{tuliskan hasil perpangkatan tergantung pada n} if n < 0 then write(1/p:8:3) write(p:8:3); (* *) Algoritma dan Pemrograman 40