Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis Algoritma adalah urutan logis pengambilan keputusan untuk pemecahan masalah Urutan logis berarti urutan langkahlangkah harus benar, dan langkah-langkah itu sendiri juga harus benar
Berasal dari ahli matematikia Arab : Abu Jafar Muhammad Ibnu Musa AlKhuwarizmi
Algoritmna merupakan kerangka dasar dari konsep suatu program untuk menyelesaikan masalah . Algoritma tidak terikat dari suatu bahasa pemrograman manapun atau dengan kata lain bahasa yang digunakan adalah bebas dengan bahasa apapun, baik memakai bahasa Indonesia, bahasa Inggris atau bahasa lainnya.
Setiap orang punya pola pikir yang berbeda, karena itu akan menghasilkan algoritma yang berbeda Algoritma dikatakan benar apabila dapat memecahkan masalah Perlu dipertimbangkan masalah efisiensi dalam penyusunan algoritma Pemilihan rute jalan, misalnya :
Beberapa rute mungkin akan menghasilkan tujuan yang sama Ada rute yang lebih efisien dibanding rute lainnya Sebaiknya yang diambil adalah rute terpendek
Penulisan Algoritma :
Algoritma dapat dinotasikan dalam beberapa cara, yaitu: Dengan untaian kalimat deskriptif (natural)
Tapi sering membingungkan (ambiguous)
Tapi sering membingungkan (ambiguous) Dengan pseudocode
Sudah lebih dekat ke bahasa pemrograman, namun sulit dimengerti oleh orang yang tidak mengerti pemrograman
Dengan flowchart
Bagus secara visual akan tetapi repot kalau algoritmanya panjang
FLOWCHART
Flowchart lebih baik dibandingkan pseudocode Merupakan gambaran dalam bentuk diagram alir dari algoritma-algoritma dalam suatu program yang menyatakan arah alur program tersebut Disajikan dalam bentuk grafik/gambar Dapat membantu programmer maupun orang lain dalam memahami alur program (apa saja input, proses dan output dari program) Representasi visual, karena itu lebih mudah dipahami Jumlah simbol yang digunakan sedikit, karena itu lebih sederhana dan lebih mudah dipelajari
Flow Chart
flow chart (diagram alir)
(menggambarkan urutan langkah-langkah kegiatan /program mulai dari awal sampai akhir dengan menggunakan simbol atau gambar tertentu.)
Kegunaan : mendesain dan mempresentasikan program
Lambang Flowchart
Terminator (mulai/selesai) Input/output Proses Decision (percabangan) Data Flow (Aliran data) Preparation (pemberian nilai awal suatu variabel) Call (memanggil prosedur/fungsi) Connector (di halaman yg sama Connector ( di halaman lain)
Mulai
NA = 25%tg+25%uts+50%uas
NA>60
Gagal
Lulus
Selesai
PEmrograman : aktifitas yg dilakukan dengan membat intruksi untuk menyelesaikan permasalahan yg dimenegeti oleh komputer Program : coding, hasil pemrograman Bahasa Pemrograman : Bahasa program yang digunakan untuk membuat urutan instruksi yg dimengerti oleh komputer. Pemrograman (programer) : orang yg membuat program komputer.
beberapa langkah umum dalam pembuatan suatu program yaitu Mendefinisikan masalah
mendefinisikan permasalahan. langkah ini harus dilakukan untuk menentukan masalah yang ada serta ditentukan pula input dan output program
Mencari solusinya
Bila untuk mendapatkan solusi harus melalui langkah yang terlalu rumit dapat dilakukan pembagian masalah dalam beberapa modul-modul kecil agar mudah untuk dikerjakan. Lalu modul-modul kecil tersebut digabungkan menjadi satu untuk dapat menentukan solusi.
Menentukan algoritma Menulis program Menguji program Mendokumentasikan program Merawat program
Contoh : if x > y then if x > z then tulis x sebagai bilangan terbesar else tulis z sebagai bilangan terbesar else if y > z then tulis y sebagai bilangan terbesar else tulis z sebagai bilangan terbesar
Pemilihan (selection process) kelebihan struktur/jenis proses pemilihan kemampuannya yg memungkinkan pemroses mengikuti jalur aksi yg berbeda berdasarkan kondisi yg ada Memungkinkan menulis algoritma untuk permasalah praktis yg demikian kompleks.
Buat sebuah algoritma untuk memilih bilangan terkecil dari 3 buah bilangan
Algoritma Dalam Bahasa Natural 1. Ambil bilangan pertama dan set kecil sama dengan bilangan pertama 2. Ambil bilangan kedua dan bandingkan dengan kecil 3. Apa bila bilangan kedua lebih kecil dari kecil, set kecil sama dengan bilangan kedua 4. Ambil blangan ketiga dan bandingan dengan kecil 5. Apabila bilangan ketiga lebih kecil dari kecil, set kecil sama dengan bilangan ketiga 6. Variabel kecil berisi bilangan terkecil. 7.Tayangkan hasilnya.
contoh : algoritma :
for i dari 1 sampai 50 do tulis saya berjanji tidak akan nakal dan malas lagi
Struktur pengulangan- repeat-until - next NIM 13599001 13599009 13599087 Nama Ahmad Sadikin Rusli Nasution Hamidah Alamat Jl.Mawar 31 A Jl.Dago 231 Telepon 2504321 2503456
Jl.Pelesiran 2519038 24
Else
Tinjau entry berikutnya di dalam tabel
Algoritma dia atas mengandung kelemahan, karena program tidak tahu kapan harus berhenti (program tidak tahu berapa kali pernyataan) Struktur For-Do : jumlah pengulangan sudah diketahui sebelum pebgulangan dilaksanakan. Maka untuk menyelesaikan algoritma dia atas (pengulangan tidak dapat diketahui dari awa) maka digunakan struktur repeat-until (pegulangan aksi terus dilakukan sampai ditemukan entry dari NIM yang dicari atau akhir tabel sudah terlampaui.
: selama kondisi (persyaratan) pengulangan masih benar, maka aksi dikerjakan Repeat-until vs Kondisi pengulangan Di evaluasi di akhir while-do kondisi pengulangan di evaluasi di awal
Struktur CASE
Konstruksi CASE dapat menyederhanakan IF THEN ELSE yang bertingkat (lebih dari 2 kasus)
Konstruksi CASE
CASE ekspresi
Nilai1 : pernyataan1 Nilai2 : pernyataan2 Nilai3 : pernyataan3 ... ... Nilain : pernyataann Otherwise : pernyataanx
endCASE ---------------------------------------------------------------------------Ekspresi menghasilkan suatu nilai (konstanta), range dari konstanta yang bukan bertipe real.
Contoh CASE
Algoritma untuk membaca nomor hari (integer) , lalu menuliskan nama hari sesuai dengan angka harinya. ------------------------------------------------------------------------------Read(nomor_hari) CASE nomor_hari
1: write(Minggu) 2: write(Senin) 3: write(Selasa) 4: write(Rabu) 5: write(Kamis) 6: write(Jumat) 7: write(Sabtu;) Otherwise: write(bukan hari yang benar)
endCASE
NOTASI ALGORITMA
PROGRAM NamaHari { mencetak nama hari berdasarkan nomor hari (1..7) } DEKLARASI Nomor_hari : integer ALGORITMA Read(nomor_hari) CASE nomor_hari
1: write(Minggu) 2: write(Senin) 3: write(Selasa) 4: write(Rabu) 5: write(Kamis) 6: write(Jumat) 7: write(Sabtu;) Otherwise: write(bukan hari yang benar)
endCASE
Latihan CASE
Buat algoritma untuk konversikan Huruf ke Status dari Nilai Mahasiswa, dengan menggunakan Struktur CASE. Seperti :
A = Sangat Baik B = Baik C = Cukup D = Kurang E = Sangat Kurang
Struktur dari suatu program pascal terdiri dari sebuah judul program dan suatu blok program atau badan program. Blok program dibagi lagi menjadi dua bagian, yaitu : bagian deklarasi dan bagian pernyataan.
1. Judul program
2. Blok program a. Bagian deklarasi - deklarasi label - deklarasi konstanta - deklarasi tipe - deklarasi variable - deklarasi prosedur - deklarasi fungsi b. Bagian pernyataan
Program pascal yang paling sederhana adalah program yang hanya terdiri dari sebuah bagian pernyataan saja. Begin End.
Program pascal tidak mengenal aturan penulisan di kolom tertentu, jadi boleh ditulis mulai kolom berapapun. Penulisan statementstatement pada contoh program yang menjorok masuk beberapa kolom tidak mempunyai pengaruh diproses, hanya dimaksudkan supaya mempermudah pembacaan program, sehingga akan lebih terlihat bagian-bagiannya, dan baik untuk dokumentasi. Judul program sifatnya optional dan tidak signifikan didalam program. Jika ditulis dapat digunakan untuk memberi nama program dan daftar dari parameter tentang komunikasi program dengan lingkungannya yang sifatnya sebagai dokumentasi saja. Judul program bila ditulis harus terletak pada awal dari program dan diakhiri dengan titik koma. Contoh : Program contoh ; Begin Writeln ( UHAMKA ); Writeln( --------------- ); End .
1.3 Deklarasi
Bagian deklarasi digunakan bila didalam program menggunakan pengenal (identifier) yang dapat berupa label, konstanta, tipe, variable, prosedur dan fungsi.
Contoh : Var Total, Gaji, Tunjangan : real ; Jumlahanak : integer ; Keterangan : string [25] ; Begin Gaji : = 500000 ; Jumlahanak : = 3 ; Tunjangan : = 0.25 * Gaji + Jumlahanak * 30000 ; Total : = Gaji + Tunjangan ; Keterangan : = Karyawan Teladan ; Writeln ( Gaji bulanan = Rp. , Gaji ) ; Writeln ( Tunjangan = Rp. , Tunjangan ) ; Writeln ( Total gaji = Rp. , Total ) ; Writeln ( Keterangan = Rp. , Keterangan ) ; End .
2. Tipe data terstruktur : array, record, file, set 3. Tipe data penunjuk
TIPE DATA :
Untuk menyatakan tipe data dari sebuah variabel (peubah) pada Deklarasi.
OPERATOR :
Menspesifikasikan operasi apa yang dapat dilakukan terhadap peubah (variabel) dan konstanta.
EKSPRESI :
Mengkombinasikan peubah-peubah dan dan konstanta untuk menghasilkan hasil baru.
TIPE DATA
1. TIPE DATA DASAR :
Tipe yang dapat langsung dipakai.
BILANGAN LOJIK
NAMA TIPE :
Boolean
RANAH NILAI :
Dua buah nilai : Benar (true) dan Salah (false) bilangan logik :benar 1, salah 0
KONSTANTA :
True dan False
OPERASI :
Operasi Logika atau operasi boolean Operasi logika menghasilkan nilai : true atau false Operator logika : AND, OR dan XOR
Maka :
operasi logika hasil -----------------------------------------( x and y) or z true A and ( y or z) true Not (x and z) false (y xor z) and y false
BILANGAN BULAT
Bilangan yang tidak mengandung pecahan desimal, misal : 34, 8, 0, -17, 45678901, dsb NAMA TIPE : Integer RANAH NILAI :
tipe Rentang nilai Byte 0 .. 255 Shortint -128 .. 127 Word 0 .. 65535 Integer -32768 .. 32767 Longint -2147483648 .. 2147483647
Contoh ; deklarasi :
X : byte Y : integer
Maka :
Peubah X tidak dapat dioperasikan untuk nilai-nilai di atas 255 Peubah Y tidak dapat dioperasikan untuk nilai-nilai di atas 32767
Contoh program
Program salahtipe; Uses wincrt; Var a,b,x : shortInt; Begin a:=10; b:=20; X:=a*b; {x akan bernilai -56, bukan 200} Writeln(Nilai x=, x); End.
OPERASI :
1. Operasi aritmetika : + (tambah) (kurang) * (kali) Div (hasil bagi bilangan bulat) Mod (sisa hasil bagi) Contoh : 3 + 10 10 DIV 3 10 MOD 3
< > =
Lebih kecil Lebih kecil atau sama dengan Lebih besar Lebih besar atau sama dengan Sama dengan Tidak sama dengan
BILANGAN RIIL
Bilangan yang mengandung pecahan desimal : 3.65, 0.003, 29.0, .24, dll NAMA TIPE :
Real
RANAH NILAI : tipe Real Single Double extended Rentang nilai 2.9 x 10 -39 .. 1.7 x 1038 1.5 x 10-45 .. 3.4 x 1038 5.0 x 10-324 .. 1.7 x 10308 3.4 x 10-4932 .. 1.1 x 104932 Format 6 byte 4 byte 8 byte 10 byte
10/2.5
7.2 * 0.5
< >
Lebih kecil Lebih kecil atau sama dengan Lebih besar Lebih besar atau sama dengan Tidak sama dengan
Tipe bilangan riil tidak mengenal operator kesamaan (=), karena bilangan riil tidak bisa disajikan secara tepat oleh komputer, Misal : 1/3 tidak sama dengan 0.33333, sebab 1/3 = 0.33333(dg angka 3 yg tidak pernah berhenti).
KARAKTER
Semua huruf-huruf abjad, semua tanda baca, karakter khusus, karakter kosong (null) . NAMA TIPE :
Char
RANAH NILAI :
Adalah semua huruf di dalam alfabet (a..z, A..Z, angka desimal (0..9), tanda baca(.,:,!,dll), operator aritmetika(+,-,dll), karakter khusus($,#,@,dll)
KONSTANTA :
Karakter harus diapit oleh tanda petik tunggal.
Contoh : h, y, ., , 9, $
KARAKTER - next
OPERASI : Hanya Operasi Perbandingan :
< > =
Contoh : a = a T = t y y m < z q > z
Lebih kecil Lebih kecil atau sama dengan Lebih besar Lebih besar atau sama dengan Sama dengan Tidak sama dengan
hasil: true hasil: false hasil: false hasil: true hasil : false
STRING
Adalah untaian karakter dengan panjang tertentu. NAMA TIPE :
String
RANAH NILAI :
Deretan karakter yg telah didefinisikan pada ranah karakter.
KONSTANTA :
Semua konstanta string harus diapit oleh tanda petik tunggal. Contoh: BANDUNG, ganesha, Jl. Pahlawan no. 76, , k768532, dll.
STRING - next
OPERASI :
1. Operasi Penyambungan (Concatenation):
Operator : + (penyambungan, bukan tambah)
Contoh :
Teknik + Informatika hasil : Teknik Informatika aaa + bbb hasil: aaa bbb 1 + 2 hasil: 12 2. Operasi Perbandingan :
STRING - next
2. Operasi Perbandingan menghasilkan nilai boolean (true dan false)
< > = Lebih kecil Lebih kecil atau sama dengan Lebih besar Lebih besar atau sama dengan Sama dengan Tidak sama dengan
Syarat penamaan (variabel, konstanta, nama type bentukan, nama field, nama fungsi,nama prosedur)
Harus unik (tidak boleh dua buah nama yang sama) Harus dimulai dengan huruf alfabet (tidak boleh dimulai dg angka, spasi, atau karakter khusus lainnya) Huruf besar dan huruf kecil tidak dibedakan Karakter penyusun nama hanya boleh huruf alfabet, angka, dan _ (underscore) Tidak boleh mengandung operator aritmetika, relasional, tanda banca, dan karakter khusus lainnya Karakter tidak boleh dipisah dengan spasi Panjang nama tidak dibatasi
2. Konstanta (constant)
Tempat penyimpanan di dalam memori yg nilainya tetap selama pelaksanaan program dan. Notasi yg digunakan adalah const Contoh ; const phi = 3.14, Nmaks = 100, sandi = xyz, dll
2.
Pembacaan :
Nilai peubah dapat diisi secara eksternal dafri piranti masukan, misalnya dari keyboard, dari file, mouse, dsb. Akan membaca sesuai apa yg kita masukkan (inputkan). Contoh : Read (M) : komputer membaca nilai M yg diinputkan dari luar (mis: keyboard), jika nilai yg diketik adalah 78, maka lokasi memori yg bernama M sekarang berisi 78
EKSPRESI
Transformasi nilai menjadi keluaran dilakukan melalui sutu perhitungan (komputasi) Cara perhitungan itu dinyatakan dalam suatu ekspresi Ekspresi terdiri atas :OPERAND dan OPERATOR
2.
3.
Repeat (salah)
Program JumlahDeretPecahan; Uses wincrt; Var x : integer; s : real; Begin s:=0; repeat writeln(masukan bilangan bulat :) ; Readln(x); s := s + 1/x; Until x = 0; write(s:4:2); End.
While (salah)
Program menuprogram; Uses wincrt; Var NomorMenu : integer; Begin While NomorMenu <> 4 do begin writeln( MENU ); writeln(1. Baca Data ); writeln(2. Cetak Data); writeln(3. Ubah Data); writeln(4. Keluar Program); writeln(masukan pilihan anda (1/2/3/4)? ); Write(masukan nomor menu yg anda pilih :); readln(NomorMenu); Case (NomorMenu) of 1 : write(Anda memilih nomor 1); 2 : write(Anda memilih nomor 2); 3. Write(Anda memilih nomor 3); 4: write(Keluar Program); Else write(nomor yg anda pilih tidak terdaftar); End; End; End.