MATERI KULIAH
ALGORITMA DAN PEMROGRAMAN I (2 SKS)
DOSEN PENGAMPU:
TATI HARIHAYATI M.,M.T.
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
Cara mendeskripsikan masalah dengan
komputer :
•
menjabarkan masalah
•
merinci langkah untuk menyelesaikan
masalah
•
membuat sarana interaksi
Tranformasi masalah
menjadi program
komputer diperlukan:
•
bentuk urutan masalah
•
bahasa yang dipakai
algoritma
Program
komputer
solusi
Apakah 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.
Notasi Algoritma
•
Notasi I :
untaian kalimat deskriptif
•
Notasi II :
diagram alir (flow chart)
•
Notasi III :
pseudo-code
Contoh masalah : menghitung luas
Notasi I :
Algoritma Luas_Persegipanjang
Menghitung luas persegipanjang
dengan memasukkan nilai lebar dan
panjang persegipanjang
Deklarasi
luas,panjang,lebar : bil. bulat
Deskripsi
1. Masukkan nilai lebar dan panjang
2. Hitung luas sama dengan panjang kali
lebar
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)
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,
Belajar Memrogram Vs Belajar Bahasa Pemrograman
•
Belajar memprogram
adalah belajar tentang
metodologi pemecahan masalah, kemudian
menuangkannya dalam suatu notasi tertentu
yang mudah dibaca dan dipahami.
•
Belajar bahasa pemrograman
berarti belajar
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
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
Belajar Bahasa Pemrograman
•
belajar memakai suatu bahasa
pemrograman, aturan sintaks, tatacara untuk
memanfaatkan instruksi yang spesifik untuk
setiap bahasa
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
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
Beberapa Paradigma dalam Pemrograman
•
Prosedural / Terstruktur
•
Paradigma Fungsional
•
Paradigma Deklaratif / Logika
•
Paradigma Object-Oriented
•
Paradigma Konkruen
sarana object-oriented
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.
Pemrograman Prosedural
•
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.
•
program dibedakan antara bagian data
dengan bagian instruksi.
–
Bagian
instruksi
terdiri atas runtutan
(
sequence
) instruksi yang dilaksanakan
satu per satu secara berurutan oleh
pemroses. Alur pelaksanaan instruksi
dapat berubah karena adanya
pencabangan kondisional.
–
Data
yang disimpan di dalam memori
dimanipulasi oleh instruksi secara
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).
Pemrograman Berorientasi Objek (PBO)
•
Kerangka berpikir PBO berbeda dengan
pemrograman tradisional.
–
Pemrograman tradisional
:
memisahkan antara data, dan
prosedur yang mengolah data
tersebut.
–
PBO
: data dan prosedur ini
PERTEMUAN 2
NOTASI ALGORITMIK
Algoritma dan Pemrograman I
Teknik Informatika
Algoritma disusun berdasarkan 3 bagian,
antara lain :
1. Judul Algoritma
2. Kamus / Deklarasi
Format Syntax Algoritma
JUDUL
ALGORITMA DEKLARASI/ KAMUS
{Lokal / Umum} ALGORITMA TUBUH ALGORITMA/ DESKRIPSI URAIAN ALGORITMA Nama Algoritma
Type namatipe : tipe [subrange]
Type namatipe : array [min..maks] of tipe Namavar : tipe
Namavar : array [ min..maks] of tipe Const nama = nilai
Procedure namaproc(daftar_nama_parameter:tipe)
Notasi Assigment
Notasi Kondisional/Pemilihan Notasi Pengulangan
Notasi Pemanggilan
Algoritma untuk menulis Hello world:
Algoritma Hello_world
{ program untuk mencetak “Hello world”}
Kamus:
{tidak ada}
Algoritma:
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
Translasi Teks Algoritma ke dalam Teks Program Bahasa C++
Translasi Notasi Kamus
No Algoritma C++
1 #include <nama_unit> 2 CONST
namaconst = nilai
#define namaconst nilai
3 TYPE namatipe :
tipedata
Typedef tipedata namatipe;
4 namavar : tipedata namavar : namatipe
tipedata namavar;
namatipe namavar;
1 #include <iostream.h>
2 CONST
phi = 3.14
#define phi 3.14
3 TYPE
jumlah : integer
Typedef int jumlah;
4 n : integer n : jumlah
int n;
jumlah n;
Translasi Notasi Pengendalian (lanjutan)
No Algoritma C++
Algoritma C++
6 DEPEND ON <ekspresi> <ekspresi 1> : aksi_1 <ekspresi 2> : aksi_2
:
<ekspresi n> : aksi_n ENDDEPEND
atau
CASE namavarcase OF expkonstan 1 : aksi_1 expkonstan 2 : aksi_2
:
expkonstan n : aksi_n ELSE aksi_lain ENDCASE Switch (ekspresi) { case nilai1: aksi_1; break; case nilai2: aksi_2; break; : case nilain: aksi_n; break; default: aksi_lain; }
Translasi Notasi Pengendalian (lanjutan)
Algoritma C++
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;
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);
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;
PERTEMUAN 3
KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
Algoritma dan Pemrograman I
Teknik Informatika
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
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
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 + -* / / % = Penjumlahan Pengurangan Perkalian Pembagian Pembagian dibulatkan Sisa Pembagian Pemberi nilai Relasional < > = <= >= <> < > == <= >= != Kurang dari Lebih dari 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
[image:44.720.13.715.25.516.2]yang ditunjuk oleh pointer
Operator Not
Not
True : False
Not
False : True
Arg 1 Arg 2 Arg 1 AND Arg 2 True
True False False
True False
True False
True False False False
TIPE DATA
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
TABEL PENGELOMPOKAN TIPE DATA DASAR pada ALGORITMA
Tipe Data
Karakteristik
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
Tipe
Karakteristik
Nama Domain Konstanta
Operator yang digunakan
Hasil
Char Karakter Semua data berupa
karakter
“d”, “g”,
[image:48.720.12.718.37.526.2]“%”, “!”,”4” Relasional Boolean
PERTEMUAN 4 DAN 5
DASAR-DASAR ALGORITMA
Algoritma dan Pemrograman I
Teknik Informatika
Pernyataan dan Aksi
langkah penyelesaian
pernyataan (Statement)
aksi (action) dieksekusi
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
)
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.
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 sehingga
gelas A berisi air berwarna biru dan gelas
B berisi air berwarna merah.
ALGORITMA:
Tuangkan air dari gelas A kedalam
gelas B
Tuangkan air dari gelas B kedalam
gelas A
Caranya
:
ilustrasi
A C
A
C
B
A
ilustrasi
C
B
C
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
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
Pemilihan (
Selection
)
If (kondisi)
then
aksi
endIf
If (kondisi)
then
aksi1
else
aksi2
Contoh (Pemilihan) :
If (A>B)
then
Max A
endIf
If (B>A)
then
Max B
endIf
If (A>B)
then
Max A
else
Pengulangan (
Repetition)
for var awal to akhir do
aksi
endfor
repeat
aksi
until kondisi_stop
while kondisi_ulang do
aksi
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
Analisis Satu Kasus
•
Menggunakan konstruksi IF-THEN (jika-maka)
dalam bentuk pernyataan :
if (
kondisi)
then
pernyataan
Contoh Masalah satu kasus :
•
Buatlah algoritma untuk menentukan apakah
suatu bilangan yang dimasukkan oleh user itu
bilangan genap atau bilangan ganjil.
•
Penyelesaian :
Analisis Dua kasus :
• Menggunakan konstruksi IF-THEN-ELSE (jika-maka-kalau tidak) dalam bentuk pernyataan :
if (kondisi)
then
pernyataan1
else
pernyataan2
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
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 kondisi1 then
pernyataan1 else
if kondisi2 then
pernyataan2 else
if kondisi3 then
pernyataan3 else
if kondisi4 then
pernyataan4 endif
Struktur Depend On
Konstruksi Depend On adalah sebagai berikut :
Depend On (
ekspresi)
nilai
1 :
pernyataan
1
nilai
2 :
pernyataan
2
nilai
3 :
pernyataan
3
. . .
nilai
n :
pernyataan
n
else :
pernyataan
x
EndDepend
Struktur Case
Konstruksi CASE adalah sebagai berikut :
case (
ekspresi) of
nilai
1 :
pernyataan
1
nilai
2 :
pernyataan
2
nilai
3 :
pernyataan
3
. . .
nilai
n :
pernyataan
n
else :
pernyataan
x
endcase
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,
Penyelesaian :
ALGORITMA KonversiAngkaTeks
{ Mencetak kata untuk angka 1 sampai 4 } Kamus :
angka : integer { angka yang dibaca } Algoritma :
input(angka)
if angka = 1 then output(“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
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”)
Tugas
Buatlah Algoritma untuk menu
pilihan sebagai berikut :
Menu Pilihan
1.Menghitung Luas Persegipanjang
2.Menghitung Luas Segitiga
KUIS
PERTEMUAN 7
STATEMENT PENGULANGAN
Algoritma dan Pemrograman I
Teknik Informatika
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
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 :
<inisialisasi>
<terminasi>
awal dan akhir pengulangan dinyatakan sebagai kata kunci yang bergantung pada struktur pengulangan yang dipakai.
Tiga macam notasi struktur pengulangan :
• Struktur FOR atau TRAVERSAL ( Pengulangan tanpa kondisi / Unconditional Looping ).
• Struktur WHILE..DO ( Pengulangan dengan kondisi / Conditional Looping )
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 :
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 +
PERTEMUAN 8
PERTEMUAN 9-10
STATEMENT PENGULANGAN (lanjutan)
Algoritma dan Pemrograman I
Teknik Informatika
WHILE.. DO
• Bentuk umum struktur WHILE..DO dalam algoritma adalah :
[inisialisasi]
while (kondisi) do
pernyataan
{ada aksi thd var kondisi}
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.
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
REPEAT…UNTIL
Bentuk umum struktur REPEAT…UNTIL
dalam algoritma :
[inisialisasi] Repeat
pernyataan
{ada aksi thd var kondisi}
Contoh dalam algoritma :
Algoritma Tulisan_10kali
{ Menampilkan tulisan ”Algoritma” sepuluh kali }
Kamus :
pencacah : integer Algoritma :
pencacah 1 repeat
output(“Algoritma”)
Tugas
1. Buatlah Algoritma untuk menghitung :
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
PERTEMUAN 11
PROSEDUR
Algoritma dan Pemrograman I
Teknik Informatika
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 ).
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
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
adalah :Nama- nama peubah yang
dideklarasikan pada bagian
header
prosedur
1.
Parameter aktual ( argument ) adalah :
Parameter yang disertakan pada waktu
pemanggilan prosedur.
2. Parameter formal
adalah :
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
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
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?
Procedure pada Algoritma
Prosedur Dengan Parameter Masukan
Prosedur Dengan Parameter Keluaran
Prosedur Dengan Parameter
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}
1. Contoh translasi prosedur dengan parameter masukan
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)
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 :
2. Contoh translasi prosedur dengan parameter keluaran
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
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 EndProcedure ALGORITMA : {Algoritma utama}
3. Contoh translasi prosedur dengan parameter masukan / keluaran
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 }
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
{ Algoritma utama}
Tugas
Buat Algoritma untuk menghitung faktorial
dengan menggunakan dua prosedur (prosedur memasukkan harga N dan prosedur
PERTEMUAN 12
PERTEMUAN 13
FUNCTION
Algoritma dan Pemrograman I
Teknik Informatika
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
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.
Sifat-sifat modul/fungsi yang baik
•
Nilai
fan-in
tinggi, artinya semakin
sering suatu modul dipanggil oleh
pengguna semakin tinggi nilai
fan-in
•
Fan-out
rendah, artinya semakin
spesifik fungsi suatu modul akan
semakin rendah nilai
fan-out
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
Bentuk Umum Fungsi
Function namafungsi(daftar parameter formal) tipehasil
{I.S. : ………….} {F.S. : …………}
Kamus :
{deklarasi/kamus lokal} Algoritma :
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}
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
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
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
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
•
Buatlah algoritma dan penggunaan
PERTEMUAN 14
ARRAY (LARIK)
Algoritma dan Pemrograman I
Teknik Informatika
ARRAY
•
Array
atau
larik
adalah
koleksi data
dimana setiap elemen memakai
nama
yang sama
dan
bertipe sama
dan setiap
elemen diakses melalui
indeks
arraynya.
•
Array adalah
variabel berindeks
. Indeks
harus bertipe yang memiliki keturutan (ada
succesor dan predesor), misal integer,
Deklarasi Array Dimensi Satu
Bentuk Umum : 1. Kamus :
NamaVarArray : Array[range_indeks] of tipedata 2. Kamus :
Const
maks_array = ….
NamaVarArray : Array[1..maks_array] of tipedata 3. Kamus :
Const
maks_array = ….
Type
NamaTipeArray = Array[1..maks_array] of tipedata NamaVarArray : NamaTipeArray
Deklarasi Array Dimensi Satu
Contoh :
Kamus :
X : Array [1..10] of integer
Artinya : mendefinisikan 10 variabel bertipe integer Yaitu : X(1), X(2), X(3), .. X(10)
Contoh lain :
Deklarasi Array Dimensi Satu
Cara Memberikan Nilai/Harga pada Array
NilaiMka : Array[1..10] of Char
NilaiMka(1)
’A’
Algoritma_Array1D Kamus :
N : array[1..5] of integer i : integer
Algoritma :
N(1) 25 N(2) 12 N(3) 17 N(4) 10 N(5) 15
For i 1 to 5 do Output (N(i)) EndFor
Latihan
1. Buat algoritma untuk menentukan bilangan genap pada Array bilangan(1..N).
2. Buatlah algoritma untuk menampilkan daftar nilai yang terdiri dari NIM(1..N), Nama(1..N), Nilai
Kehadiran(1..N), Nilai Tugas(1..N), Nilai UTS(1..N), Nilai UAS(1..N), Nilai Akhir(1..N) dan Indeks
Nilai(1..N). Dimana Nilai Akhir dihitung dari 10% Nilai Kehadiran, 20% Nilai Tugas, 30% Nilai UTS dan 40% Nilai UAS. Yang dimasukan oleh user
NIM, Nama, Nilai Kehadiran, Nilai Tugas, Nilai UTS dan Nilai UAS. Buat dalam bentuk modular terdiri dari fungsi menghitung Nilai Akhir, fungsi
PERTEMUAN 15
RECORD (REKAMAN)
Algoritma dan Pemrograman I
Teknik Informatika
Definisi Record
Record
atau rekaman adalah salah satu
tipe data terstruktur/bentukan yang
terdiri dari beberapa elemen (
field
).
Setiap
field
menggambarkan informasi
tertentu, dan tipe data dari setiap
field
sudah dikenal, baik itu tipe data dasar
maupun tipe data bentukan lainnya
Deklarasi Record
Bentuk Umum : Kamus :
Type
NamaTipeRecord = Record < field_1 : tipedata_1,
field_2 : tipedata_2, ..
field_n : tipedata_n > EndRecord
Contoh
:
Kamus : Type
RecMahasiswa = Record < NIM, Nama : string,
Nilai : integer, Indeks : char > EndRecord
Mhs : RecMahasiswa
Artinya : mendefinisikan record Mahasiswa dengan field-fieldnya : NIM dan Nama bertipe data string, Nilai bertipe data integer, dan Indeks nilai bertipe char, dan
Mhs : RecMahasiswa
Mhs.NIM
’10109005’
Mhs.Nama
’Ujang’
Mhs.Nilai
70
Mhs.Indeks
‘B’
Algoritma_Record_Mahasiswa Kamus :
Kamus : Type
RecMahasiswa = Record < NIM, Nama : string,
Nilai : integer,
Indeks : char > EndRecord
Mhs : RecMahasiswa Algoritma :
Mhs.NIM ’10109005’ Mhs.Nama ’Ujang’ Mhs.Nilai 70
Mhs.Indeks ‘B’
Output (Mhs.NIM,Mhs.Nama,Mhs.Nilai,Mhs.Indeks)
Latihan
Buat algoritma untuk menghitung luas
segitiga menggunakan record, dimana
field dari record segitiga adalah alas, dan
tinggi. Gunakan sebuah fungsi untuk
menghitung luas segitiga dan sebuah
prosedur untuk memasukkan harga alas
dan tinggi oleh user beserta menampilkan
luas segitiga yang sudah dihitung oleh
Array of Record
Elemen-elemen larik/array bisa juga bertipe terstruktur. Contohnya akan mengolah data mahasiswa sebanyak 100 mahasiswa yang terdiri dari NIM, Nama, dan IPK. Struktur logik dari larik Mahasiswa adalah :
NIM Nama IPK
1 2 .. 100
Dari tabel terlihat setiap elemen larik bertipe terstruktur (Record). Tiap Record terdiri dari NIM, Nama dan IPK.
10109002 Asep 3.04
10109011 Sari 2.78
..
Deklarasi Array of Record
Struktur larik yang menyimpan keseluruhan data
Mahasiswa tersebut dapat dideklarasikan sebagai berikut : Kamus :
Const :
maks_array = 100 Type
RecMahasiswa = record < NIM, Nama : string,
IPK : real > EndRecord
• Cara mengakses suatu elemen array of record Mahasiswa :
Mhs(indeks).field_record
• Cara Memberikan Nilai/Harga pada array of record Mahasiswa :
Mhs(1).NIM ‘10109002’
Mhs(1).Nama ‘Asep’
Latihan
Buat algoritma untuk data berikut :
Daftar Nilai Mahasiswa
Gunakan min. 2 fungsi dan min. 2 prosedur beserta pengendalinya (algoritma utama)
No NIM NAMA N.HADIR N.TUGAS N.UTS N.UAS N A INDEKS
1
..
PERTEMUAN 16