Dasar Algoritma dan Struktur Data
•
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.
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
•
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.
urutan logika langkah kerja untuk
menyelesaikan suatu masalah.
Notasi Algoritma
•
Notasi I :
untaian kalimat deskriptif
•
Notasi II :
diagram alir (flow chart)
Notasi I :
Algoritma
Luas_Persegipanjang
Menghitung luas persegipanjang dengan
memasukkan nilai lebar dan panjang persegipanjang
Deklarasi
luas,panjang,lebar : bil. bulat
Deskripsi
- Masukkan nilai lebar dan panjang
- Hitung luas sama dengan panjang kali
lebar
- Tampilkan luas
Notasi II :
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 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 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
•
titik berat : coder
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:
- benar
- berlaku umum untuk beragam data (valid)
- mudah dibaca
- mudah dimodifikasi dan dikembangkan
- efisiensi dalam penggunaan ruang dan
waktu (kompleksitas rendah)
- cepat dalam mengakses
- handal/reliability
Bahasa pemrogram dibedakan
berdasarkan
tujuan dan fungsinya diantaranya :
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.
–
Contoh: MODULA-2 atau ADA
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
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.
2. Metode
langkah demi langkah secara eksak dalam memecahkan suatu masalah.
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 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.
– PBO : data
dan prosedur ini dipadukan sebagai sebuah obyek.
======================================================================
Materi 2
NOTASI ALGORITMIK
NOTASI ALGORITMIK
Algoritma disusun berdasarkan 3 bagian, antara lain :
1.
Judul Algoritma
2.
Kamus / Deklarasi
3.
Algoritma / Deskripsi
Format Syntax
Algoritma
JUDUL ALGORITMA Nama Algoritma
DEKLARASI/ 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)
DESKRIPSI Notasi
Assigment
Notasi
Kondisional/Pemilihan
Notasi
Pengulangan
Notasi
Pemanggilan
URAIAN ALGORITMA Kumpulan
algoritma masing-masing Procedure 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++
2
|
|
#define
namaconst nilai
|
CONTOH
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++
|
5
|
IF (kondisi) THEN
aksi1
ELSE
aksi2
ENDIF
|
If (kondisi)
aksi1;
else
aksi2;
atau
If (kondisi)
{
aksi1;
}
else
{
aksi2;
}
|
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;
}
|
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;
/*ada aksi thd var kondisi*/
}while (kondisi_ulang);
|
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);
Materi 3
KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
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 :
- 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
- Menggunakan kata yg berarti dan mudah dibaca dan interpretatif
- Tidak boleh ada simbol-simbol khusus kecuali underscore
- Huruf kecil dan kapital tidak dibedakan
OPERATOR
•
Operator
adalah notasi yang dipakai untuk melaksanakan suatu operasi terhadap data dan
identifier (operand)
Tabel Pengelompokan Operator
JENIS OPERATOR
|
NOTASI
|
KEGUNAAN
|
||
Algoritma
|
||||
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
Kurang
dari atau sama dengan
Lebih
dari atau sama dengan
Tidak
sama dengan
|
||
Tabel Pengelompokan Operator (lanjutan)
JENIS
OPERATOR
|
NOTASI
|
KEGUNAAN
|
|
Algoritma
|
|||
Logika
|
not
and
or
xor
|
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
|
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 (Arsip)
TABEL PENGELOMPOKAN TIPE DATA DASAR pada ALGORITMA
Dasar – Dasar Algoritma
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
- Runtunan (Sequence)
- Pemilihan (Selection)
- 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 sehingga gelas A berisi air berwarna biru dan gelas B
berisi air berwarna merah.
ALGORITMA:
Caranya :
Kita siapkan satu buah
gelas C untuk menampung sementara air dari gelas A sebelum dipindah ke gelas B
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.
Misal nilai A=8, B=5. Tukarkan nilai A dan B, sehingga menjadi A=5, B=8.
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
else
Max ßB
endIf
|
If (A>B)
then
Max ßA
endIf
If (B>A)
then
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(“AMIKOM)
EndFor
iß1
Repeat
output(“AMIKOM”)
ißi+1
Until (i>5)
iß1
While (i<=5) do
output(“AMIKOM”)
ißi+1
EndWhile
Statement Pilihan
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
masukan dengan 2. Jika data masukan habis dibagi 2, maka dapat ditulis bahwa
bilangan tersebut bilangan genap, jika tidak maka akan ditulis bilangan
tersebut bilangan ganjil
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
kondisi1 then
pernyataan1
else
if kondisi2 then
pernyataan2
else
if kondisi3 then
pernyataan3
else
if kondisi4 then
pernyataan4
endif
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 suatu nilai
(konstanta).
Struktur Case
Konstruksi CASE adalah sebagai berikut :
case (ekspresi) of
nilai1
: pernyataan1
nilai2
: pernyataan2
nilai3
: pernyataan3
.
. .
nilain
: pernyataann
else
: pernyataanx
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
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.
•
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
•
endif
•
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
Tidak ada komentar:
Posting Komentar