Materi Kuliah Algoritma dan Pemrograman I
MATERI KULIAH
ALGORITMA DAN PEMROGRAMAN I (2 SKS)
JURUSAN TEKNIK INFORMATIKA UNIKOM
PERTEMUAN 1
PENGANTAR ALGORITMA Algoritma dan Pemrograman I Teknik Informatika
Sistem Komputer
- Sebuah sistem komputer terdiri dari
Hardware (perangkat keras) , Software (perangkat lunak) dan Brainware, sedangkan Software dapat dikelompokkan menjadi Operating System Software, Programming Language Software dan Application Program Software.
Bagan Sistem Komputer
Cara mendeskripsikan masalah dengan komputer :
- menjabarkan masalah
- merinci langkah untuk menyelesaikan masalah
- membuat sarana interaksi manusia-
komputer
Tranformasi masalah menjadi program
komputer diperlukan:- bentuk urutan masalah
- bahasa yang dipakai
- konsep mesin computer
Program
komputer
solusi masalahApakah Algoritma itu?
- Algorism algorithm
- nama penulis buku Arab yaitu Abu Ja‟far Muhammad ibnu Musa Al-Khuwarizmi
- Algoritma adalah:
- – penyusunaan aspek proses logika dari suatu pemecahan masalah tanpa melihat karakteristik bahasa pemrograman yang akan digunakan
- – urutan notasi logika yang merupakan hasil analisis dan rancangan sistematik dari strategi pemecahan masalah, untuk menggambarkan urutan langkah kerja yang jika dikerjakan akan membawa ke tujuannya.
- – urutan logika langkah kerja untuk menyelesaikan suatu masalah.
- Notasi I :
diagram alir (flow chart)
- Notasi II :
pseudo-code
- Notasi III :
Contoh masalah : menghitung luas
persegipanjang.
Notasi I : Algoritma Luas_Persegipanjang
Menghitung luas persegipanjang
dengan memasukkan nilai lebar dan
panjang persegipanjangDeklarasi luas,panjang,lebar : bil. bulat Deskripsi
1. Masukkan nilai lebar dan panjang
2. Hitung luas sama dengan panjang kali
lebar3. Tampilkan luas
Notasi II :
mulai Input
panjang,
lebar
luas panjang * lebar
Output
luas Notasi III : Algoritma Luas_Persegipanjang { Menghitung luas persegipanjang dengan memasukkan nilai lebar dan panjang persegipanjang}
Kamus: luas, panjang, lebar : integer
Algoritma:
input(panjang,lebar) luas panjang * lebar output(luas)
Definisi Program/Pemrograman
- Adalah kumpulan instruksi-instruksi tersendiri yang biasanya disebut source code yang dibuat oleh programmer (pembuat program)
- Program adalah kumpulan instruksi atau perintah yang disusun sedemikian rupa sehingga mempunyai urutan nalar yang tepat untuk menyelesaikan suatu persoalan. (Menurut P. Insap Santosa)
- Instruksi (statement) yang dimaksud adalah syntax (cara penulisan) sesuai dengan bahasa pemrograman yang digunakan yang mempunyai komponen-komponen : Input, Output, Proses, Percabangan dan Perulangan.
- Belajar memprogram
metodologi pemecahan masalah, kemudian menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami. berarti belajar
- Belajar bahasa pemrograman
memakai suatu bahasa, aturan-aturan tata bahasanya, instruksi-instruksinya, tata cara pengoperasian compiler-nya, dan
memanfaatkan instruksi-instruksi tersebut untuk
membuat program yang ditulis hanya dalam bahasa itu saja.Belajar Memprogram
- belajar bahasa pemrograman
- belajar tentang strategi pemecahan masalah, metodologi dan sistematika pemecahan masalah kemudian
menuliskannya dalam notasi yang
disepakati bersama - bersifat pemahaman persoalan, analisis dan sintesis
- titik berat : designer program
Belajar Bahasa Pemrograman
- belajar memakai suatu bahasa
pemrograman, aturan sintaks, tatacara untuk
memanfaatkan instruksi yang spesifik untuk
setiap bahasa coder- titik berat :
Bahasa Pemrograman
- Adalah alat untuk membuat program
- Contoh: C, C++, C#, Pascal, Basic, Perl, PHP, ASP, JHP, Java, dll.
• Perbedaan: cara memberikan instruksi
- Persamaan: bertujuan menghasilkan
output yang sama
Syarat-syarat sebuah Program yang baik:
1. benar 2. berlaku umum untuk beragam data (valid) 3. mudah dibaca
4. mudah dimodifikasi dan dikembangkan
5. efisiensi dalam penggunaan ruang dan
waktu (kompleksitas rendah)
Bahasa pemrogram dibedakan berdasarkan
tujuan dan fungsinya diantaranya :
Beberapa Paradigma dalam Pemrograman
- Prosedural / Terstruktur
- Paradigma Fungsional • Paradigma Deklaratif / Logika
- Paradigma Object-Oriented
- Paradigma Konkruen sarana object-oriented
event- programming.
Paradigma Pemrograman
- Pemrograman Prosedural – Berdasarkan urutan-urutan, sekuensial
- – Program adalah suatu rangkaian prosedur untuk memanipulasi data. Prosedur merupakan kumpulan instruksi yang dikerjakan secara berurutan.
- – Harus mengingat prosedur mana yang sudah dipanggil dan apa yang sudah diubah.
- Pemrograman Fungsional – Berdasarkan teori fungsi matematika
- – Fungsi merupakan dasar utama program.
- Pemrograman Terstruktur – Secara berurutan dan terstrukrtur.
- – Program dapat dibagai-bagi menjadi prosedur dan fungsi.
- – Contoh: PASCAL dan C • Pemrograman Modular –
Pemrograman ini membentuk banyak modul.
- – Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri
- – Sebuah program dapat merupakan kumpulan modul- modul.
Paradigma Pemrograman (lanjutan)
- Pemrograman Berorientasi Obyek
- – Pemrograman berdasarkan prinsip obyek, dimana obyek memiliki data/variabel/property dan
method/event/prosedur yang dapat dimanipulasi
- – Contoh: C++, Object Pascal, dan Java.
- Pemrograman Berorientasi Fungsi
- – Pemrograman ini berfokus pada suatu fungsi tertentu
saja. Sangat tergantung pada tujuan pembuatan
bahasa pemrograman ini. - – Contoh: SQL (Structured Query Language), HTML, XML dan lain-lain.
- Pemrograman Deklaratif
- – Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada memecahkan masalah dengan implementasi algoritma.
- – Contoh: PROLOG
- Algoritma berisi urutan langkah-langkah penyelesaian masalah proses yang prosedural.
• Definisi Prosedural menurut Kamus Besar
Bahasa Indonesia:
1. Tahap-tahap kegiatan untuk menyelesaikan
suatu aktivitas.
2. Metode langkah demi langkah secara eksak
dalam memecahkan suatu masalah.- program dibedakan antara bagian data dengan bagian instruksi.
instruksi terdiri atas runtutan
- – Bagian
(sequence) instruksi yang dilaksanakan
satu per satu secara berurutan oleh pemroses. Alur pelaksanaan instruksi dapat berubah karena adanya pencabangan kondisional.
yang disimpan di dalam memori
- – Data
dimanipulasi oleh instruksi secara beruntun atau prosedural.
Paradigma Object-Oriented
• mengkonstruksi program dari objek-objek dalam
ruang lingkup masalahnya.- sekumpulan objek yang mempunyai sifat yang sama. Dapat menjadi sebuah kelas. Sebuah kelas mempunyai attribute (sekumpulan sifat/ciri).
- menawarkan konsep modularitas, penggunaan ulang, dan kemudahan modifikasi.
Pemrograman Berorientasi Objek (PBO)
• Kerangka berpikir PBO berbeda dengan
pemrograman tradisional.
:
- – Pemrograman tradisional
memisahkan antara data, dan prosedur yang mengolah data tersebut.
: data dan prosedur ini
- – PBO dipadukan sebagai sebuah obyek.
PERTEMUAN 2 NOTASI ALGORITMIK
Algoritma dan Pemrograman I
Teknik Informatika
UNIKOM
Algoritma disusun berdasarkan 3 bagian, antara lain :
1. Judul Algoritma
2. Kamus / Deklarasi
3. Algoritma / Deskripsi
Format Syntax Algoritma JUDUL
Nama Algoritma ALGORITMA
Type namatipe : tipe [subrange]
DEKLARASI/Type namatipe : array [min..maks] of tipe KAMUS
Namavar : tipe {Lokal / Umum}
Namavar : array [ min..maks] of tipe ALGORITMA
Const nama = nilai Procedure namaproc(daftar_nama_parameter:tipe) TUBUH
Notasi Assigment ALGORITMA/
Notasi Kondisional/Pemilihan DESKRIPSI
Notasi Pengulangan Notasi Pemanggilan Kumpulan algoritma masing-masing Procedure
URAIAN ataupun Function yang dipanggil dari Tubuh
ALGORITMA
Algoritma untuk menulis Hello world:
Algoritma Hello_world { program untuk mencetak “Hello world”} Kamus:{tidak ada} Algoritma:
Output (“Hello world”) Algoritma untuk menghitung luas segitiga:
LuasSegi3
{algoritma untuk menghitung luas segitiga dengan diketahui alas dan tingginya}
KAMUS:
panjang,lebar : integer luas : real
ALGORITMA:
panjang 10 lebar 5 luas 0.5*alas * tinggi output
(“Luas Segitiga : “,luas) Translasi Teks Algoritma ke dalam Teks Program Bahasa C++ No Algoritma
C++
1 #include <nama_unit>
Translasi
Notasi namaconst = nilai
Kamus
3 TYPE namatipe : Typedef tipedata namatipe; tipedata
4 namavar : tipedata tipedata namavar;
namavar : namatipe namatipe namavar;1 #include <iostream.h>
Contoh :
2 CONST #define phi 3.14 phi = 3.14
3 TYPE Typedef int jumlah; jumlah : integer Translasi Notasi Pengendalian (lanjutan) No Algoritma
C++
5 IF (kondisi) THEN If (kondisi) aksi1 aksi1; ELSE else aksi2 aksi2; ENDIF atau If (kondisi) { aksi1; } else { aksi2;
Translasi Notasi Pengendalian (lanjutan) Algoritma
C++
6 DEPEND ON <ekspresi> Switch (ekspresi) <ekspresi 1> : aksi_1 { <ekspresi 2> : aksi_2 case nilai1: : aksi_1; <ekspresi n> : aksi_n break;
ENDDEPEND case nilai2: atau aksi_2; CASE namavarcase OF break; expkonstan 1 : aksi_1 : expkonstan 2 : aksi_2 case nilain:
: aksi_n; expkonstan n : aksi_n break;
ELSE default: aksi_lain; aksi_lain }
Translasi Notasi Pengendalian (lanjutan)
AlgoritmaC++ 7 [inisialisasi] WHILE ( kondisi_ulang ) DO daftar_aksi {ada aksi thd var kondisi} ENDWHILE
[inisialisasi] while ( kondisi_ulang ) { daftar_aksi ; /*ada aksi thd var kondisi*/ }
8 [inisialisasi] REPEAT daftar_aksi {ada aksi thd var kondisi} UNTIL ( kondisi_stop )
[inisialisasi] do { daftar_aksi;
/*ada aksi thd var kondisi*/ }while ( kondisi_ulang ); Translasi Notasi Pengendalian (lanjutan) Algoritma
9 namavar TRAVERSAL [awal..akhir] daftar_aksi; atau
FOR var awal TO/DOWNTO akhir STEP counter DO daftar_aksi
ENDFOR C++ for(awal;kondisiulang;step) { daftar_aksi;
}
Contoh Algoritma
Algoritma Luas_Lingkaran
{menghitung luas lingkaran diketahui jari-jarinya}
Kamus:
Const phi = 3.14 r : integer Luas : real
Algoritma:
r 5 Luas phi * r * r output
(”Jari –jari = ”,r); output (”Luas lingkaran = ”,Luas);
Contoh program C++ #include <iostream.h> #define phi 3.14 main () { int r; float Luas; r = 5; Luas = phi * r * r; cout << ”Jari-jari : ” << r; cout << ”\nLuas lingkaran : ” << Luas; }
PERTEMUAN 3
Algoritma dan Pemrograman I Teknik Informatika UNIKOM IDENTIFIER (pengenal)
- Nama tipe (di bagian deklarasi Type)
- Tempat penyimpanan suatu data :
- – variable jika isinya dapat berubah dalam kisaran tertentu – konstanta jika isinya selalu tetap.
- – file, penyimpanan data di storage, dan sifatnya menetap.
- Fungsi dan Prosedur • Judul Algoritma
Penamaan pengenal :
1. Berupa satu atau beberapa karakter
- Huruf (A s/d Z, a s/d z)
- Angka (0 1 2 3 4 5 6 7 8 9 )
- Garisbawah/underscore (_) diawali huruf dan tidak diawali angka
2. Menggunakan kata yg berarti dan mudah dibaca dan interpretatif
3. Tidak boleh ada simbol-simbol khusus kecuali
underscore
4. Huruf kecil dan kapital tidak dibedakan dan identifier (operand)
OPERATOR
- Operator adalah notasi yang dipakai untuk melaksanakan suatu operasi terhadap data
Tabel Pengelompokan Operator JENIS OPERATOR NOTASI KEGUNAAN Algoritma Bahasa C++
Negasi - - Mengubah data angka menjadi -/+
Aritmatika +- / div mod
Pengurangan Perkalian Pembagian Pembagian dibulatkan Sisa Pembagian Pemberi nilai
- / / % = Penjumlahan
Relasional < > = <= >= <>
< > == <= >= !=
Kurang dari Lebih dari Sama dengan Kurang dari atau sama dengan Lebih dari atau sama dengan Tidak sama dengan
JENIS OPERATOR NOTASI KEGUNAAN Algoritma Bahasa C++ Logika not and or xor
! && || tdk ada
Negasi terhadap nilai Boolean Operasi And thd dua nilai Boolean Operasi Or thd dua nilai Boolean Operasi Xor thd dua nilai Boolean
Bit shl shr sot and or xor
<< >> ~ & | ^
Geser satu bit ke kiri Geser satu bit ke kanan Komplemen suatu bit Operasi And terhadap dua bit Operasi Or terhadap dua bit Operasi Xor terhadap dua bit
Address & Menunjukkan alamat memori suatu variable yang menyatakan nilai yang ditunjuk oleh pointer
Tabel Pengelompokan Operator (lanjutan)
Operator Not Not True : False Not False : True
Operator AND
Arg 1 Arg 2 Arg 1 AND Arg 2 True True True True False False False True False
False False False
1. Tipe Data Dasar
Integer (bilangan bulat), Real (bilangan pecahan), Boolean (bilangan logik) dan Char (karakter)
2. Tipe Data Bentukan
String (kumpulan dari beberapa karakter), Array (larik), Record (rekaman), Pointer (penunjuk alamat), File (Arsip)
TABEL PENGELOMPOKAN TIPE DATA DASAR pada ALGORITMA
Tipe DataKarakteristik Nama Domain Konstanta Operator yang digunakan Hasil Boolean Boolean True dan false
True False .T. .F. y n Operasi logic
(And, Or, Not, Xor, Eq, NEq) Boolean Integer Integer
(bil. bulat) Semua data yang berisi bilangan bulat
0,-25,100 Aritmatika (+,-,*,/,Mod, Div) Relasional (=,<>, >=, >=, <, <=)
Integer Boolean Real Riil (bil. pecahan)
Semua data yang berisi bilangan pecahan 1, 5.2, 100,
0.1 Aritmatika (+,-,*,/,^) Relasional (≠,>,>=,<,<=)
Riil Boolean
Tipe Karakteristik Nama Domain Konstanta Operator yang digunakan Hasil
Char Karakter Semua data berupa karakter “d”, “g”,
“%”, “!”,”4” Relasional Boolean TABEL PENGELOMPOKAN TIPE DATA DASAR pada ALGORITMA (lanjutan)
PERTEMUAN 4 DAN 5
Algoritma dan Pemrograman I
Teknik Informatika
UNIKOM
Pernyataan dan Aksi
langkah penyelesaian pernyataan (Statement) aksi (action) dieksekusi operasi dikerjakan oleh pemroses
Contoh Pernyataan dan Aksi :
- Pernyataan pada algoritma : Tulis “Hello, world”
- menggambarkan aksi menuliskan “Hello, world” ke piranti keluaran (layar).
- efek dari aksi ini, dilayar akan tertera tulisan Hello, world
Struktur Dasar Algoritma
1. Runtunan (Sequence)
2. Pemilihan (Selection)
3. Pengulangan (Repetition)
Runtunan (Sequence)
- Algoritma merupakan runtunan (sequence) satu atau lebih instruksi/pernyataan,
- setiap pernyataan dikerjakan secara berurutan sesuai dengan urutan penulisannya. Sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan.
- Urutan instruksi menentukan keadaan akhir algoritma
Contoh 1 (Runtunan) :
Diberikan 2 buah gelas, A dan B; gelas A berisi air berwarna merah, gelas
B berisi air berwarna biru. Pertukarkan isi
kedua gelas itu sedemikian sehinggagelas A berisi air berwarna biru dan gelas
B berisi air berwarna merah.A B A B
ALGORITMA:
Tuangkan air dari gelas A kedalam gelas B Tuangkan air dari gelas B kedalam gelas A
Caranya :
Kita siapkan satu buah gelas C untuk menampung sementara air dari gelas A sebelum dipindah ke gelas B
ilustrasi A C A C B A B A
ilustrasi C B
C B A
Algoritma Tukar_isi
{Diberikan 2 buah gelas, A dan B; gelas A berisi air
berwarna merah, gelas B berisi air berwarna biru. Isi
kedua gelas A dan B ditukar sedemikian sehingga
gelas A berisi air berwarna biru dan gelas B berisi air berwarna merah}Kamus :
gelas A,gelas B, gelas C : air
Algoritma:
Tuangkan air dari gelas A kedalam gelas C Tuangkan air dari gelas B kedalam gelas A Tuangkan air dari gelas C kedalam gelas B
Hasil akhir algoritma adalah:
gelas A berisi air dari gelas B, dan gelas B berisi air dari gelas A semula
Contoh 2 (runtunan):
Misal nilai A=8, B=5. Tukarkan nilai A dan B, sehingga
menjadi A=5, B=8.Algoritma : B A
A B
Algoritma : C A A B B C
Pemilihan (Selection)
If (kondisi) then aksi endIf If (kondisi) then aksi1 else aksi2 endIf
Contoh (Pemilihan) :
If (A>B) then Max A endIf
If (B>A) then Max B endIf
If (A>B) then Max A else Max B endIf Pengulangan (Repetition)
for var awal to akhir do
aksi
endfor repeat
aksi
until kondisi_stop while kondisi_ulang do
aksi
endwhile
Contoh (Pengulangan) :
For i 1 to 5 do output (“UNIKOM)
EndFor i1 Repeat output
(“UNIKOM”) ii+1 Until (i>5)
i1
While (i<=5) do output (“UNIKOM”) ii+1
PERTEMUAN 5
STATEMENT PEMILIHAN
Algoritma dan Pemrograman I
Teknik Informatika
UNIKOM Analisis Satu Kasus
• Menggunakan konstruksi IF-THEN (jika-maka)
dalam bentuk pernyataan : if (kondisi) then
pernyataan endif
Contoh Masalah satu kasus :
- Buatlah algoritma untuk menentukan apakah suatu bilangan yang dimasukkan oleh user itu bilangan genap atau bilangan ganjil.
- Penyelesaian :
Bilangan genap adalah bilangan yang habis
dibagi dengan 2 (sisa pembagian = 0). Oleh
karena itu, kita perlu membagi data masukandengan 2. Jika data masukan habis dibagi 2,
maka dapat ditulis bahwa bilangan tersebut
bilangan genap, jika tidak maka akan ditulis
Analisis Dua kasus :
- Menggunakan konstruksi IF-THEN-ELSE (jika- maka-kalau tidak) dalam bentuk pernyataan : if (kondisi) then
pernyataan1
else
pernyataan2
endif Contoh masalah analisis dua kasus :
Tulislah algoritma yang membaca sebuah bilangan bulat, lalu
menuliskan pesan “genap” jika bilangan tersebut adalah genap atau “ganjil” jika bilangan tersebut adalah bilangan ganjil, dengan menggunakan analisis dua kasus.- Penyelesaian :
Misalkan bilangan yang dibaca adalah bil. Hanya ada dua kemungkinan jenis untuk bil, yaitu bilangan genap atau
bilangan ganjil. Bilangan genap adalah bilangan yang habis
dibagi dengan 2 (sisa pembagian = 0), sedangkan bilangan ganjil bersisa 1 bila dibagi dengan 2. Contohnya, 4 adalah bilangan genap karena 4 mod 2 = 0, tapi 3 adalah bilangan ganjil karena 3 mod 2 =1.Analisis Tiga Kasus atau Lebih : Tiga Kasus : if kondisi1 then
pernyataan1
else if kondisi2 then
pernyataan2
else if kondisi3 then
pernyataan3
endif endif endif
Empat Kasus : if kondisi 1 then pernyataan
1 else if kondisi 2 then pernyataan
2 else if kondisi 3 then pernyataan
3 else if kondisi 4 then pernyataan
4 endif endif endif Struktur Depend On Konstruksi Depend On adalah sebagai berikut : Depend On (ekspresi) nilai1 : pernyataan1 nilai2 : pernyataan2 nilai3 : pernyataan3 . . . nilain : pernyataann else : pernyataanx EndDepend
Ekspresi adalah sembarang ekspresi (aritmatika
atau boolean) atau variabel yang menghasilkan
Struktur Case Konstruksi CASE adalah sebagai berikut : case (ekspresi) of nilai1 : pernyataan1 nilai2 : pernyataan2 nilai3 : pernyataan3 . . . nilain : pernyataann else : pernyataanx endcase
Ekspresi adalah sembarang ekspresi (aritmatika atau
boolean) atau variabel yang menghasilkan suatu nilai (konstanta). Konstruksi CASE yang ekivalen dengan konstruksi IF-THEN-ELSE if (ekspresi = nilai1) then pernyataan1 else if (ekspresi = nilai2) then pernyataan2 else if (ekspresi = nilai3) then pernyataan3 . . . if (ekspresi = nilain) then pernyataann else { otherwise } pernyataanx endif endif endif
Contoh Masalah :
- Buatlah algoritma yang membaca sebuah
bilangan bulat yang nilainya terletak antara 1
sampai 4, lalu mencetak teks angka tersebut.
Misalkan bila dibaca angka 1, maka tercetak
tulisan “satu”, bila dibaca 2, maka tercetak di
layar tulisan “dua”, demikian seterusnya. Jika angka yang dimasukkan selain 1 sampai 4, tuliskan pesan bahwa angka yang dimasukkan salah.
(“satu”) else if angka = 2 then output
(“dua”) else if angka = 3 then output
(„tiga‟) else if angka = 4 then output
(„empat‟) else output („angka yang dimasukkan salah‟) endif endif Dengan konstruksi CASE, algoritma untuk masalah di atas dapat dibuat menjadi lebih singkat sebagai berikut : ALGORITMA KonversiAngkaTeks
{ Mencetak kata untuk angka 1 sampai 4 }
Kamus : angka : integer { angka yang dibaca } Algoritma : input(angka) case angka 1 : output
(“satu”) 2 : output (“dua”) 3 : output (“tiga”) 4 : output (“empat”) else : output
(“angka yang dimasukkan salah”) endcase
Tugas
Buatlah Algoritma untuk menu pilihan sebagai berikut : Menu Pilihan
1.Menghitung Luas Persegipanjang
2.Menghitung Luas Segitiga
0. Keluar
KUIS
PERTEMUAN 7
STATEMENT PENGULANGAN
Algoritma dan Pemrograman I
Teknik Informatika
UNIKOM
Secara umum struktur pengulangan dibagi dua bagian :
- Kondisi pengulangan
Yaitu ekspresi Boolean yang harus dipenuhi untuk melaksanakan pengulangan. Kondisi ini dinyatakan secara
Explisit ( oleh pemrogram ) dan Implisit (
dikelola oleh komputer ).- Badan ( body ) pengulangan Yaitu bagian algoritma yang diulang.
Format Sintaks Algoritma
Stuktur pengulangan biasanya disertai dengan :
- Inisialisasi
Aksi yang dilakukan sebelum pengulangan dilakukan pertama kali.
- Terminasi
Aksi yang dilakukan setelah pengulangan selesai dilaksanakan. Struktur pengulangan secara umum : awal dan akhir pengulangan
<inisialisasi> dinyatakan sebagai kata kunci
yang bergantung pada struktur pengulangan yang dipakai.Inisialisasi dan terminasi adalah bagian yang opsional .
<terminasi> Tiga macam notasi struktur pengulangan :
- Struktur FOR atau TRAVERSAL ( Pengulangan tanpa kondisi / Unconditional Looping ).
( Pengulangan dengan kondisi / Conditional Looping )
- Struktur WHILE..DO
- Struktur REPEAT..UNTIL
FOR
- Statement for digunakan untuk mengulang eksekusi suatu
ungkapan dengan jumlah pengulangan yang sudah tertentu.
- Bentuk sintaksnya dalam algoritma :
FOR var awal to/downto akhir step counter DO
pernyataan
ENDFOR
atau
FOR var awal to/downto akhir DO
pernyataan
ENDFOR
atau namavar TRAVERSAL [ awal..akhir ]
Contoh dalam algoritma :
Algoritma Tulisan_10kali { Menampilkan tulisan ”Algoritma” sepuluh kali } Kamus : pencacah : integer Algoritma : for pencacah 1 to 10 do output
(“Algoritma”) EndFor
Tugas
1. Buatlah Algoritma untuk menghitung :
a. S = 1 + 2 + 3 + .. + n
b. S = 1
- – 2/3 + 3/5 – 4/7
2. Buatlah Algoritma untuk menghitung faktorial
3. Buatlah Algoritma untuk menentukan suku ke-n dari deret fibbonancy
4. Buatlah Algoritma untuk perkalian m dengan n menggunakan operator +
5. Buatlah Algoritma untuk menentukan indeks nilai (nilai mutu) dari 10 buah nilai akhir.
PERTEMUAN 8
UTS (UJIAN TENGAH SEMESTER)
PERTEMUAN 9-10
STATEMENT PENGULANGAN (lanjutan)
Algoritma dan Pemrograman I
Teknik Informatika
UNIKOM
- Bentuk umum struktur WHILE..DO dalam algoritma adalah :
[inisialisasi] while (kondisi) do
pernyataan {ada aksi thd var kondisi}
endwhile [terminasi] Cara kerja loop dengan while..do
- melakukan inisialisasi, yaitu memberikan nilai awal yang ada kaitannya dengan nilai
condition (kondisi)
- memeriksa nilai kondisi.
1. Bila nilainya true, maka laksanakan loop yaitu mengerjakan instruksi yang ada dalam loop.
- Loop selesai.
Perbedaan FOR dengan WHILE..DO
- FOR digunakan untuk proses pengulangan yang jumlah
pengulangannya dapat diketahui di awal.
- WHILE..DO selain dapat berfungsi
seperti FOR juga dapat digunakan
untuk proses yang jumlah
pengulangannya tidak dapat diketahui. Struktur WHILE..DO
REPEAT…UNTIL
Bentuk umum struktur REPEAT…UNTIL
dalam algoritma :[inisialisasi] Repeat
pernyataan {ada aksi thd var kondisi}
Until(keadaan) [terminasi]
Contoh dalam algoritma :
Algoritma Tulisan_10kali { Menampilkan tulisan ”Algoritma” sepuluh kali } Kamus : pencacah : integer Algoritma : pencacah 1 repeat output
(“Algoritma”) pencacah pencacah + 1 until (pencacah > 10)
Tugas
a. S = 1 + 2 + 3 + .. + n
b. S = 1
- – 2/3 + 3/5 – 4/7 menggunakan bentuk while_do dan repeat_until.
2. Buatlah Algoritma untuk menghitung faktorial, menggunakan while_do dan repeat_until.
3. Buatlah Algoritma untuk perkalian m dengan n menggunakan operator +, menggunakan while_do dan repeat_until.
PERTEMUAN 11 PROSEDUR
Algoritma dan Pemrograman I
Teknik Informatika
UNIKOM
Prosedur dan struktur prosedur PROSEDUR :
Modul program yang mengerjakan tugas / aktivitas
yang spesifik dan menghasilkan suatu efek netto. Suatu efek netto diketahui dengan membandingkan keadaan awal dan keadaan akhir pada pelaksanaan sebuah prosedur. Mendefinisikan prosedur :- Menuliskan nama prosedur
- Mendeklarasikan nama-nama konstanta, peubah (variabel) dan tipe ( jika ada ).
- Menjabarkan rangkaian yang dilakukan.
Prosedur dan struktur prosedur (lanjutan)
Struktur Prosedur :
◦ Bagian Judul (header)
Terdiri atas Nama prosedur dan deklarasi parameter ( jika ada ).
◦ Bagian deklarasi (kamus) Untuk mengumumkan nama-nama.
◦ Bagian deskripsi (badan algoritma) Disebut juga badan prosedur.
Nama prosedur sebaiknya diawali dengan kata kerja karena prosedur berisi suatu aktivitas, misalnya HitungLuas, Tukar, CariMaks, Inisialisasi, AktifkanMenu, dan lain sebagainya.
Prosedur yang baik adalah
- Prosedur yang independent dari program pemanggilannya. Prosedur yang tidak menggunakan peubah- peubah global di dalam badan prosedurnya.
- Jika program utama perlu mengkomunikasikan nilai peubah global ke dalam prosedur, maka ada satu cara untuk melakukannya yaitu dengan menggunakan parameter .
Parameter
Parameter adalah :Nama- nama peubah yang dideklarasikan pada bagian header prosedur
1. Parameter aktual ( argument ) adalah : Parameter yang disertakan pada waktu pemanggilan prosedur.
Parameter yang dideklarasikan di dalam
bagian header prosedur itu sendiri.Parameter actual dan Parameter formal
Aturannya :
- Jumlah parameter aktual pada pemanggilan prosedur harus sama dengan jumlah parameter formal pada deklarasi rosedurnya.
Tiap parameter aktual harus bertipe sama
dengan tipe parameter formal yang bersesuaian.- Tiap parameter aktual harus diekspresikan dalam cara yang taat-asas dengan parameter formal yang bersesuaian, bergantung pada jenis parameter formal.
Tiga Jenis Parameter formal 1. Parameter masukan ( Input parameter )
Parameter yang nilainya berlaku sebagai masukan untuk prosedur.
Dalam bahasa pemrograman, istilah parameter masukan ini sering dinamakan parameter nilai ( value parameter atau parameter by value ).
2. Parameter keluaran ( Output parameter).
Parameter yang menampung keluaran yang dihasilkan oleh prosedur, parameter ini sering juga disebut parameter referensi ( parameter by reference ).
3. Parameter masukan / keluaran ( Input/Output parameter ).
Parameter yang berfungsi sebagai masukan sekaligus keluaran bagi prosedur tersebut. Ini pun termasuk ke dalam parameter by reference .
Program dengan Prosedur atau Tanpa Prosedur? Sangat dianjurkan menulis program yang modular.
Program yang dipecah menjadi beberapa prosedur ( fungsi ) menunjukan teknik pemrograman yang baik dan terstruktur.
Prosedur dengan Parameter atau Tanpa Parameter? Sangat dianjurkan menulsikan prosedur dengan parameter.
Parameter berfungsi sebagai media komunikasi antara modul
dengan program pemanggil. Selain itu, parameter dapat mengurangi
kebutuhan penggunaan peubah global.
Parameter Masukan atau Parameter Keluaran?
Tergantung pada kasus yang ada.Procedure pada Algoritma
Prosedur Dengan Parameter Masukan
Prosedur Dengan Parameter Keluaran Prosedur Dengan Parameter Masukan/Keluaran Prosedur Dengan Parameter Masukan Pada Algoritma
1. Cara memanggil (dari algoritma/program utama)
Kamus : Procedure namaprosedur(input namaparameter : type) Algoritma : namaprosedur(parameter_aktual)
2. Cara mendifinisikan:
Procedure namaprosedur(input namaparameter : type)
{ I.S.(kondisi awal) : … } { F.S.(kondisi akhir) : … } Kamus :{deklarasi/kamus lokal} Algoritma :
{aksi-aksi dalam satu prosedur} Prosedur Dengan Parameter Keluaran pada Algoritma
1. Cara memanggil (dari algoritma/program utama)
Kamus : Procedure namaprosedur(output namaparameter : type) Algoritma : namaprosedur(parameter_aktual)
2.
:
Cara mendifinisikan
Procedure namaprosedur(output namaparameter : type) { I.S.(kondisi awal) : … } { F.S.(kondisi akhir) : … } Kamus :
{deklarasi/kamus lokal} Algoritma :
{aksi-aksi dalam satu prosedur} Prosedur Dengan Parameter Masukan/Keluaran Pada Algoritma
1. Cara memanggil (dari algoritma/program utama)
Kamus : Procedure namaprosedur(input/output namaparameter : type) Algoritma : namaprosedur(parameter_aktual)
2. Cara mendifinisikan:
Procedure namaprosedur(input/output namaparameter : type) { I.S.(kondisi awal) : … } { F.S.(kondisi akhir) : … } Kamus :
{deklarasi/kamus lokal} Algoritma :
{aksi-aksi dalam satu prosedur} procedure HitungLuasSegitiga(input alas, tinggi : real) { I.S. : alas dan tinggi sudah terdefinisi nilainya } { F.S. : menampilkan luas segitiga } Kamus : luas : real { luas segitiga, dalam cm2 } Algoritma : luas (alas * tinggi)/2 output(luas)
EndProcedure
Algoritma utama yang memanggil prosedur HitungLuasSegitiga
Algoritma_Segitiga { Menghitung luas N buah segitiga. } Kamus : i, N : integer a, t : real Procedure HitungLuasSegitiga(input alas, tinggi : real) { Menghitung luas segitiga dengan rumus L =(alas x tinggi)/2 } Algoritma : input (N) { tentukan banyaknya segitiga } for i 1 to N do input (a,t) HitungLuasSegitiga(a,t) endfor EndProcedure
ALGORITMA : {Algoritma utama} Procedure HitungLuasSegitiga(input alas, tinggi : real, output luas : real) { I.S. : alas dan tinggi sudah terdefinisi nilainya } { F.S. : menghasilkan luas segitiga. } Kamus :
{ tidak ada } Algoritma : luas (alas * tinggi)/2 EndProcedure
Algoritma _Segitiga { Menghitung luas N buah segitiga. } Kamus : i, N : integer
a, t : real L : real { luas segitiga } Procedure HitungLuasSegitiga(input alas, tinggi : real , output luas : real
) Algoritma : input (N) { tentukan banyaknya segitiga } for i 1 to N do input (a,t) HitungLuasSegitiga(a,t,L) output (L) endfor
ALGORITMA : {Algoritma utama}
Algoritma utama yang memanggil prosedur HitungLuasSegitiga Procedure Tukar(input/output A,B : integer) { I.S. : nilai A dan B sudah terdefinisi. } { F.S : A berisi nilai B, B berisi nilai A semula. } Kamus : temp : integer { peubah Bantu } Algoritma : temp A { simpan nilai A ke dalam temp } A B
{ isikan nilai B ke dalam A } B temp { isikan nilai temp ke dalam B } EndProcedure
Algoritma utama yang memanggil prosedur Tukar { Algoritma utama}
Algoritma _SelisihXY {Prog. untuk menghitung selisih nilai X dan Y,dengan syarat X ≥ Y jika X < Y,ma ka X dan Y dipertukarkan dengan memanggil prosedur Tukar. } Kamus :
X, Y, Z : integer Procedure Tukar(input/output A,B : integer) { mempertukarkan nilai A dan B } Algoritma : input(X,Y) { baca nilai X dan Y terlebih dahulu } {Jika X < Y, pertukaran nilai X dan Y dengan memanggil prosedur Tukar } If (X < Y) then
Tukar(X,Y) endif Z X – Y { hitung selisih x dan Y } output(Z)
EndProcedure
Tugas
Buat Algoritma untuk menghitung faktorial dengan menggunakan dua prosedur (prosedur memasukkan harga N dan prosedur menampilkan faktorial dari N) beserta pengendalinya (algoritma utama)
PERTEMUAN 12
PERTEMUAN 13 FUNCTION
Algoritma dan Pemrograman I
Teknik Informatika
UNIKOM
Definisi Fungsi
• Fungsi/function adalah bagian dari
program yang memiliki nama tertentu, digunakan untuk mengerjakan suatu pekerjaan tertentu, serta letaknya dipisahkan dari bagian program yang menggunakan fungsi tersebut.
Keuntungan menggunakan fungsi
- Program besar dapat dipisah menjadi program-program kecil.
- Dapat dikerjakan oleh beberapa orang sehingga koordinasi mudah.
- Kemudahan dalam mencari kesalahan- kesalahan karena alur logika jelas dan kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.
- Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu program keseluruhan.
- Mempermudah dokumentasi.
- Reusability: suatu fungsi dapat digunakan kembali oleh program atau fungsi lain
Sifat-sifat modul/fungsi yang baik
fan-in tinggi, artinya semakin
- Nilai
sering suatu modul dipanggil oleh
pengguna semakin tinggi nilai fan-in rendah, artinya semakin - Fan-out
spesifik fungsi suatu modul akan semakin rendah nilai fan-out tinggi: artinya
- Self-contained
kemampuan untuk memenuhi kebutuhannnya sendiri.
Kategori Function
- Standard Library Function
Yaitu fungsi-fungsi yang telah disediakan oleh Compiler dalam file-file header atau library.
Misalnya: clrscr(), printf(), getch(),writeln(),readln()
- Programmer-Defined Function
Adalah function yang dibuat oleh programmer sendiri. Function ini memiliki nama tertentu yang unik dalam program, letaknya terpisah dari program utama, dan bisa dijadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga di-include-kan untuk penggunaanya.
Bentuk Umum Fungsi
Function namafungsi(daftar parameter formal) tipehasil {I.S. : ………….} {F.S. : …………} Kamus :
{deklarasi/kamus lokal} Algoritma :
{aksi-aksi dalam fungsi tertentu} EndFunction
Contoh Fungsi untuk memutlakan nilai negatif Function Absolut(Input X : integer) integer /* definisi fungsi */ {I.S. : Harga X sudah terdefinisi} {F.S. : menghasilkan fungsi absolut dari x} Kamus : Algoritma : if (X<0) then Absolut -1 * X { atau return( X ) } EndIf EndFunction {Algoritma utama} Algoritma_Nilai_Absolut {membuat nilai absolut dari X} Kamus : Function Absolut(Input X : integer) integer Nilai : integer Algoritma : Nilai Absolut(-123,45) {memasukkan secara langsung angka -123.45 ke variabel Nilai} output("nilai mutlaknya adalah ", Nilai); }
Latihan 1
• Sebuah fungsi rumus matematika
didefinisikan sebagai berikut: F(x)=3*x1+x2 Dimana nilai x1 dan x2 adalah bilangan bulat, buatlah algoritma fungsi dari rumus matematika tersebut- Gunakan dalam algoritma utama
Latihan 2
- Antrian di kasir mempunyai urutan nomor dari 1..10 urutan 10 adalah seorang ibu hamil yang akan melahirkan, Seorang Satpam ingin merubah urutan antrian tersebut menjadi 10..1
- Buatlah algoritma fungsi untuk satpam tersebut agar dapat merubah urutan posisi antrian beserta algoritma utamanya.
Latihan 3
- Sebuah bioskop terdapat antrian penonton berjumlah 10 orang diskon diberikan pada tiap orang berdasarkan urutan nomor (misal nomor 10 mendapat diskon 5% dibagi 10) buatlah fungsi penghitung diskon yang akan mengembalikan total diskon yang diberikan kepada 10 orang tersebut dan penggunaan fungsi pada algoritma utama
Tugas
- Sebuah fungsi matamatika akan mengembalikan hasil perhitungan dari 5 buah bilangan dengan deret urutan
sebagai berikut 3,6,7,8,0 rumus dari
fungsi tersebut adalah - – F(x)=nilai terbesar/2