Senin, 07 April 2008

ALGORITMA

PENGENALAN ALGORITMA

PENGERTIAN ALGORITMA
Algoritma merupakan urutan langkah-langkah yang sistematis untuk menyelesaikan sebuah masalah. Notasi algoritmik adalah notasi untuk menuliskan algoritma. Notasi algoritmik bukan notasi bahasa pemrograman, karena itu notasi algoritmik tidak dapat dijalankan oleh komputer. Agar bisa dibaca oleh komputer maka notasi algoritmik ini diterjemahkan ke bahasa pemrograman.
Dengan kata lain algoritma merupakan urutan logis pengambilan keputusan untuk memecahkan masalah.
Contoh: Permasalahan.
Pertukaran isi 2 buah bejana. Nama bejana adalah A dan B. Bejana A berisi air putih dan bejana B berisi teh.
Perintah selanjutnya adalah tukarkan isi kedua buah bejana tersebut sehingga menghasilkan Bejana A berisi teh dan Bejana B berisi air putih.
Pemecahan/Solusi
Untuk menukar isi kedua buah bejana tersebut diperlukan sebuah bejana lagi. Nama bejana tersebut adalah bejana C. Bejana C digunakan sebagai penampung sementara.
Sehingga algoritmanya/urutan logis penukaran isi dua buah bejana sebagai berikut.
Algoritma tukar_isi_bejana
Diberikan dua buah bejana A dan B; bejana A berisi air putih dan bejana B berisi teh. Tukarkan isi bejana sedemikian sehingga bejana A berisi teh dan bejana B berisi air putih.
Deskripsi:
1. Tuangkan larutan dari bejana A ke dalam bejana C
2. Tuangkan larutan dari bejana B ke dalam bejana A
3. Tuangkan larutan dari bejana C ke dalam bejana B







Menurut Donald E.Knuth, Algoritma mempunyai 5 ciri penting:
1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas
2. Setiap langkah harus didefinisikan dengan tepat dan tidak berarti dua(ambigu)
3. Algoritma memiliki nol atau lebih masukkan (input)
4. Algoritma mempunyai nol atau lebih keluaran (output)
5. Algoritma harus efektif.

MEKANISME PELAKSANAAN ALGORITMA OLEH PEMROSES
Komputer merupakan salah satu alat pemroses. Agar dapat dibaca oleh komputer algoritma harus diterjemahkan ke dalam bahasa pemrograman yang disebut program. Jadi program adalah implementasi algoritma yangditulis dalam bahasa pemrograman tertentu sehingga dapat dilaksanakan oleh komputer. Secara garis besar komputer tersusun atas empat komponen utama, yaitu: piranti masukkan, piranti keluaran, unit pemroses utama, dan memory. Unit pemroses utama merupakan otak komputer yang berfungsi untuk mengerjakan operasi-operasi dasar seperti operasi perbandingan, operasi perhitungan, operasi membaca, dan operasi menulis. Memory adalah komponen yang berfungsi untuk menyimpan dan mengingat data. Yang disimpan di dalam memory adalah program (berisi operasi-operasi yang akan dikerjakan oleh CPU) dan data atau informasi(sesuatu yang diolah oleh operasi-operasi). Piranti masukkan/keluaran (I/O devices) adalah alat yang memasukkan data atau program ke dalama memory dan alat yang digunakan komputer untuk mengkomunikasikan hasil-hasil aktivitasnya.

UNIT PEMROSES UTAMA (CPU)
PIRANTI
MASUKKAN
PIRANTI
KELUARAN
MEMORY






Mekanisme kerja keempat komponen
Mula-mula program dimasukkan ke dalam memori komputer. Ketika program dilaksanakan (execute), setiap instruktur yang telah tersimpan di dalam memory dikirim ke CPU. CPU mengerjakan operasi-operasi yang bersesuaian dengan instruksi tersebut. Bila suatu operasi memerlukan data, data dibaca dari piranti masukkan, disimpan di dalam memory, lalu dikirim ke CPU untuk operasi yang memerlukannya tadi. Bila proses menghasilkan keluaran atau informasi, keluaran disimpan ke dalam memory, lalu memory menuliskan keluaran tadi ke piranti keluaran.

DASAR-DASAR ALGORITMA

2.1. Proses, Instruksi, dan Aksi
Pada dasarnya, sebuah algoritma merupakan deskripsi pelaksanaan suatu proses. Sebuah proses dikerjakan oleh pemroses menurut algoritma yang ditulis. Tiap langkah instruksi tersebut mengerjakan suatu tindakan (aksi). Bila suatu aksi dikerjakan, maka sejumlah operasi yang bersesuaian dengan aksi itu dikerjakan oleh pemroses. Efek dari pengerjaan suatu aksi dapat diamati dengan membandingkan keadaan pada saat aksi belum dimulai (t0) dan keadaan pada saat aksi selesai dikerjakan (t1).
t0: keadaan sebelum aksi dikerjakan
aksi
t1: keadaan sesudah aksi dikerjakan
Ex.
Perhatikan pertukaran 2 buah bejana diatas!
Pada saat setiap pelaksanaan aksi, amati keadaan awal dan keadaan akhirnya
t0 : bejana A berisi larutan berwarna merah, bejana B berisi larutan berwarna biru (bejana C masih kosong)
1. Tuangkan larutan dari bejana A ke dalam bejana C
t1 : bejana A kosong, bejana C berisi larutan berwarna merah

t0 : bejana A kosong, bejana B berisi larutan berwarna biru
2. Tuangkan larutan dari bejana B ke dalam bejana A
t1 : bejana A berisi larutan biru, bejana B kosong

t0 : bejana B kosong, bejana C berisi larutan berwarna merah
3. Tuangkan larutan dari bejana C ke dalam bejana B
t1 : bejana B berisi larutan berwarna merah, bejana A berisi larutan berwarna biru (bejana C masih kosong)

Peninjauan keadaan pada algoritma diatasmemperhatika kenyataan bahwa keadaan akhir sebua aksi dapat menjadi keadaan awal untuk aksi selanjutnya. Keadaan awal dari aksi pertama merupakan keadaan awal algoritma, sedangkan keadaan akhir dari aksi yang terakhir dikerjakan merupakan keadaan akhir algoritma. Jika T0 adalah keadaan sebelum algoritma dikerjakan dan T1 adalah keadaan sesudah algoritma dikerjakan, maka pada algoritma pertukaran isi dua buah bejana:

T0 : bejana A berisi larutan berwarna merah, bejana B berisi larutan berwarna biru
Algoritma TUKAR ISI BEJANA
T1 : bejana B berisi larutan berwarna merah, bejana A berisi larutan berwarna biru

Catatan: bejana C tidak dicantumkan karena bejana C tidak penting untuk masalah ini.

2.2. Struktur Dasar Algoritma
Sebuah algoritma dibangun atas 3 buah struktur dasar, yaitu:
a. Runtunan (sequence)
b. Pemilihan (selection)
c. Pengulangan (repetition)
2.2.a Runtunan
Sebuah runtunan terdiri dari satu atau lebih instruksi. Tiap instruksi dikerjakan secara berurutan sesuai dengan urutan penulisannya, yakni sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai dikerjakan.
Contoh: runtunan sebuah instruksi : A1, A2, A3, A4, A5.
Maka, mula-mula pemroses akan mengerjakan instruksi A1. Instruksi A2 dilaksanakan setelah instruksi A1 selesai dikerjakan. Begitu seterusnya sampai instruksi A5 dikerjakan. Setelah instruksi A5 dikerjakan maka algoritma akan berhenti.
2.2.b Pemilihan
Sebuah instruksi dikerjakan jika kondisi tertentu sudah terpenuhi.
IF KONDISI THEN
AKSIPemilihan dengan memberikan 1 pilihan aksi bila kondisi dipenuhi bernilai benar.


IF BERARTI “JIKA”, THEN BERARTI “MAKA”
Kondisi adalah persyaratan yang dapat bernilai benar atau salah.
Aksi hanya dilaksanakan apabila kondisi bernilai benar, jika kondisi bernilai salah maka aksi tidak akan dikerjakan.
Pemilihan dengan memberi 2 pilihan aksi tergantung dari nilai kondisinya.


IF KONDISI THEN
AKSI 1
ELSE
AKSI 2





ELSE BERARTI “KALAU TIDAK”.
Bila kondisi bernilai benar maka aksi 1 yang akan dikerjakan tetapi kalau tidak maka aksi 2 dikerjakan.
IF KONDISI 1 THEN
AKSI 1
ELSE
IF KONDISI 2 THEN
AKSI 2
ELSE
AKSI 3Apabila pilihan aksi yang dilakukan lebih dari 2 buah, maka struktur pemilihannya menjadi lebih rumit. Struktur umumnya:









2.2.C Pengulangan
Mengerjakan pekerjaan secara berulang-ulang.
ATURAN PENULISAN TEKS ALGORITMA
Teks algoritma disusun oleh 3 bagian/blok: bagian kepala/header, bagian deklarasi, bagian deskripsi. Tiap bagian diisi dengan komentar yang diapit dengan {}.
1. Kepala algoritma
Bagian yang terdiri atas nama algoritma dan penjelasan spesifikasi tentang algoritma tersebut. Nama algoritma disingkat tapi cukup untuk menggambarkan isi algoritma. Dibawah nama algoritma berisi penjelasan singkat tentang apa yang dilakukan oleh algoritma.
Contoh:
Algoritma Luas_Bujursangkar
{menghitung luas lingkaran untuk ukuran jari-jari tertentu. Algoritma menerima masukkan jari-jari, menghitung luasnya, lalu mencetak luas lingkaran ke piranti keluaran}






Contoh lain: algoritma luas_persegi_panjang, algoritma luas_segitiga,dll


2. Deklarasi
Untuk mendefinisikan semua nama yang dipakai di dalam algoritma. Nama tersebut dapat berupa nama tetapan, nama peubah, nama tipe, nama prosedure, dan nama fungsi

3. Deskripsi
Merupakan bagian inti dari suatu algoritma. Bagian ini berisi uraian langkah-langkah penyelesaian masalah langkah-langkah tersebut dibuat dengan menggunakan notasi.

TYPE, NAMA DAN NILAI
Program komputer bekerja dengan memanipulasi objek/data di dalam memory. Objek yang akan di program bermacam-macam jenis dan tipenya. Tipe data dikelompokkan menjadi 2, yaitu: tipe dasar dan tipe bentukkan.
TYPE
1. Tipe dasar
Tipe dasar adalah tipe yang dapat langsung dipakai.
Yang termasuk tipe dasar adalah bilangan logika, bilangan bulat, bilangan riil dan karakter.
a. Bilangan logika
Nama tipe: Boolean
Rentang Nilai:
- Mempunyai buah nilai, true atau false
- True dilambangkan 1, false dilambangkan 0
Tetapan: true dan false
Operasi:
- dikenal dengan nama operasi logika
- operator yang digunakan: not, and, or, xor.

Contoh:
Jika a dan b adalah peubah (variabel) yang bertipe boolean, maka hasil operasi a dan b dengan operator boolean tersebut diberikan oleh tabel kebenaran berikut:
a
Not a
True
False
False
True

a
b
A and b
A or b
A xor b
True
True
True
True
False
True
False
False
True
True
False
True
False
True
True
False
False
False
False
False

b. Bilangan bulat
- Bilangan yang tidak mengandung pecahan desimal
- Nama tipe: integer
- Tetapan: tetapan untuk nilai bertipr bilangan bulat harus ditulis tanpa mengandung titik desimal. Contoh: 78 -14 7654 0 5 99991
- Operasi: operasi yang dilakukan terhadap bilangan bulat ada 2, yaitu: operasi aritmatika dan operasi perbandingan.
A. Operasi aritmatika
Operator: +, -, *, div, mod (sisa hasil bagi)
Operator div dan mod merupakan operator pembagian khusus untuk bil bulat yang memberikan hasil pembagian dalam bil bulat.
Objek yang dioperasikan namanya operand.

B. Operasi perbandingan
Operasi perbandingan terhadap bilangan bulat dengan salah satu operator relasional menghasilkan nilai boolean (true/false).
Operator untuk bilangan bulat: <, <=, >, >=, =, ≠
c. Bilangan riil
- Bilangan yang mengandung pecahan desimal.
- Tetapan: bilangan riil harus mengandung “.”. Contoh: 18.0
- Tipe: real
- Operasi: operasi aritmatika dan operasi perbandingan
A. Operasi aritmatika
Operator yang digunakan: +, -, *, /

B. Operasi perbandingan
Operasi perbandingan terhadap bilangan riil dengan salah satu operator relasional menghasilkan nilai boolean (true/false).
Operator: <, <=, >, >=, =, ≠
d. Karakter
Yang termasuk karakter adalah huruf alfabet, tanda baca, angka, dan simbol-simbol khusus.
- Nama tipe: char
- Rentang nilai: semua huruf dalam alfabet, angka desimal, tanda baca, operator aritmatika dan simbol khusus.
- Tetapan: untuk data bertipe karakter harus diapit oleh tanda petik tunggal.
- Operasi: operasi perbandingan, yang berlaku untuk tipe karakter: <, <=, >, >=, =, ≠

2. Tipe bentukkan
tipe bentukkan adalah tipe yang dibentuk dari tipe dasar atau dari tipe bentukkan lain yang telah didefinisikan. Ada 3 macam tipe bentukkan:
1. String
2. Tipe dasar yang diberi nama dengan nama tipe baru
3. Rekaman (record)

4.2.1 String

Pengertian
String adalah deretan karakter dengan panjang tertentu. Karakter adalah string dengan panjang 1.
Nama Tipe: string
Tetapan: string harus diapit oleh tanda petik tunggal. Ex: ‘Jurusan Multimedia’
Operasi: ada 2, yaitu: operasi penyambungan dan operasi perbandingan.
>> Operasi Penyambungan
Operator: + (penyambung)
Contoh: ‘Jurusan’ + ‘Multimedia’= ‘JurusanMultimedia’
‘Jurusan’ + ‘ Multimedia’= ‘Jurusan Multimedia’

>> Operasi Perbandingan
Operator: <, <=, >, >=, =, ≠
String yang disusun oleh gabungan numerik dan karakter sering dinamakan alfanumerik. Karena sering digunakan, maka tipe string diperlakukan sebagai tipe dasar.

4.2.2 Tipe dasar yang diberi nama dengan nama tipe baru

Untuk memberi nama baru pada tipe dasar yang digunakan sebagai tipe bentukkan maka gunakan kata kunci type

Contoh: type bilbulat : integer
Penjelasan: bilbulat adalah tipe bilangan bulat yang sama dengan tipe integer. Bila mempunyai sebuah peubah(variabel) yang bernama P dan bertipe bilbulat, peubah P tersebut sama saja bertipe integer


4.2.3 Rekaman (record)

Rekaman disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu/ dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Karena strukturnya disusun oleh field-field maka rekaman dinamakan juga tipe terstruktur.

Contoh:
Titik dalam koordinat kartesius dinyatakan sebagai (x,y) dengan x adalah nilai absis dalam arah sumbu –X dan y adalah nilai ordinak dalam arah sumbu –Y, x dan y Є R.
Pembahasan:
Titik dapat dinyatakan sebagai tipe bentukkan dengan x dan y sebagai nama fieldnya.
Cara penulisan tipe titik: type titik : record
Cara penulisan lainnya: type titik: record
Type titik: record

Kata kunci record menyatakan bahwa titik adalah tipe rekaman. Jika dideklarasikan P adalah peubah (variabel) bertipe titik, Maka cara mengacu tiap field adalah:
P.x
P.y
Tipe titik didefinisikan sebagai berikut:
Nama tipe: titik
Rentang nilai: (real, real)
Contoh tetapan: <2.7,13.2>
Operasi: operasi aritmatik bilangan riil terhadap x dan y
Operasi perbandingan terhadap x dan y

NAMA

Di dalam algoritma , nama dipakai sebagai pengidentifikasi “sesuatu” dan pemrogram mengacu “sesuatu” itu melalui namanya. Maka setiap nama haruslah unik, tidak boleh ada 2 nama yang sama.

Di dalam algoritma, “sesuatu” yang diberi nama dapat berupa:
1. Peubah (variabel)
Adalah tempat menyimpan data/informasi di memori yang isinya dapat diubah.
Deklarasi
X, nilai_ujian, jumlah: real
K : integer
C : char
Contoh:






X, nilai_ujian, jumlah, k, c adalah nama peubah. Nilai-nilai peubah dapat diubah sesuai kebutuhan di dalam algoritma.

2. Tetapan (constant)
Adalah tempat penyimpanan di dalam memori yang isinya tetap selama pelaksanaan program dan tidak dapat diubah; notasi untuk menyatakan tetapan adalah const.
Contoh:


Deklarasi
Const phi = 3.14
Const Nmax = 100
Const sandi = ‘xyz’





Phi, Nmax, sandi adalah nama tetapan. Nilai tetapan yang sudah diisikan ke dalam nama tetapan tidak dapat diubah di dalam algoritma.

3. Tipe bentukkan
Nama tipe bentukkan diberikan oleh pemrogram
Contoh:
Deklarasi
Type titik : record
Type jam : record

P : titik
J1, J2 : jam
















Titik dan jam adalah nama tipe, sedangkan P adalah nama peubah yang bertipe titik. J1 dan J2 adalah peubah bertipe jam

4. Nama fungsi
Contoh:
Deklarasi
Function maximum (a,b: integer)àinteger
{mengembalikan nilai terbesar antara a dan b}






Maximum adalah nama fungsi


5. Nama prosedur
Deklarasi
Prosedure tukar (input/output a,b: integer)
{mempertukarkan nilai a dan b}contoh:



tukar adalah nama prosedur.
Memory berfungsi untuk menyimpan data dan program. Memori dapat dibayangkan sebagai sekumpulan sel yang menerus (continue). Sel-sel tersebut selanjutnya dinamakan elemen memory. Jika suatu nama menyatakan nama peubah atau nama tetapan, maka nama peubah dan nama tetapan tersebut menyatakan lokasi memori yang diberi nama. Tiap lokasi memori menyimpan nilai peubah atau tetapan yang bersesuaian. Isi elemen memori diacu melalui namanya.

Aturan penulisan nama dalam algoritma adalah:
1. Nama harus dimulai dengan huruf alfabet, tidak boleh dimulai dengan angka, spasi atau karakter khusus lainnya;
2. Huruf besar/huruf kecil tidak dibedakan;
3. Karakter penyusun nama hanya boleh huruf alfabet, angka, dan “_” (underscore)
4. Karakter-karakter di dalam nama tidak boleh dipisah dengan spasi;
5. Panjang nama tidak dibatasi.
NB. Nama sebaiknya interpretatif àmencerminkan nilai intristik atau fungsi yang dikandungnya. Pemrogram sangat dianjurkan memberikan penjelasan terhadap nama yang didefinisikan.
Contoh penamaan yang benar:
· Titik6 atau titik_6
· Nilaiujian atau nilai_ujian
· Pt1 atau pt_1, dll
Semua nama yang digunakan dalam algoritma harus didefinisikan atau dideklarasikan di dalam bagian DEKLARASI. DEKLARASI digunakan untuk tempat mengacu suatu kata untuk diketahui makna atau terjemahannya.
DEKLARASI
{nama tetapan}
Const phi=1.14 {tetapan π}
Const Nmaks=100 {jumlah siswa}
Const sandi=’xyz’ {kunci rahasia}Contoh mendefinisikan nama dalam deklarasi:






NILAI
Nilai adalah besaran dari tipe data yang sudah dikenal. Nilai dapat berupa isi yang disimpan oleh nama peubah atau nama tetapan. Algoritma pada hakikatnya adalah memanipulasi nilai yang disimpan di dalam elemen memori. Nilai yang dikandung oleh peubah dimanipulasi dengan cara mengisikannya ke peubah lain yang bertipe sama, dipakai untuk perhitungan, dituliskaan ke piranti keluaran.
1. Pengisian nilai ke dalam nama peubah
Peubah menyimpan nilai dari tipe tertentu. Sebuah nilai dapat dimasukkan ke dalam nama peubah dengan 2 cara:
a. Pengisian nilai secara langsung
b. Dibaca dari piranti masukkan

Pengisian nilai secara langsung
è Memasukkan sebuah nilai ke dalam nama peubah langsung di dalam teks algoritma.
è Notasi pengisian nilai secara langsung: “ß”
è Nilai yang dapat diberikan kepada peubah dapat berupa tetapan, nilai nama peubah lain, atau nilai sebuah ekspresi. Nilai tersebut harus sama dengan tipe peubah.
è
Peubah ß tetapan {nilai tetapan diisikan ke dalam peubah}
Peubah1 ß peubah2 {nilai peubah2 disalin ke dalam peubah1}
Peubah ß ekspresi {hasil perhitungan diisikan ke dalam peubah}Contoh penulisan notasi algoritmik untuk pengisian nilai:



è Contoh soal
Misalnya di dalam DEKLARASI sudah didefinisikan nama k bertipe integer, jarak bertipe real, ketemu bertipe boolean, namakota bertipe string dan j bertipe jam. Contoh pengisian nama-nama peubah tersebut dengan nilai tetapan adalah:
K ß 5
Jarak ß 0.03
Ketemu ß false
Namakota ß ‘Solo’
{mengisi j dengan jam 6:12:39}
j.hh ß 6 {jam 6}
j.mm ß 12 {menit 12}
j.ss ß 39 {detik 39}

















Contoh pengisian nilai ini berarti elemen memori yang masing-masing bernama k, jarak, ketemu, namakota, j diisi nilai berturut-turut 5, 0.03, false, ‘Solo’, dan <6:12:39>. Keadaan elemen memorinya adalah:


K
5
Jarak
0.03


Ketemu
False


Namakota
‘Solo’
j.hh
6
j.mm
12
j.ss
39
NB. Bahwa nilai yang disimpan sebuah nama adalah nilai yang terbaru diisikan ke dalamnya. Nilai yang baru diisikan menyebabkan nilai yang lama hilang. Misal: jarak diisi 78.90 dan namakota ‘Bali’, maka Keadaan elemen memorinya menjadi:
Jarak ß 78.90
Namakota ß ‘Bali’



K
5
Jarak
78.90


Ketemu
False


Namakota
‘Bali’
j.hh
6
j.mm
12
j.ss
39

Dibaca dari piranti masukkan
è Nilai untuk nama peubah dapat diisi dari piranti masukkan.
è Mengisi nilai dari piranti masukkan dinamakan operasi pembacaan data.
è Instruksi pembacaan nilai untuk nama peubah dilakukan dengan notasi read
è Contoh penulisan: read (nama1, nama2,...,namaN), dengan syarat nama1, nama2,...,namaN adalah nama peubah yang sudah didefinisikan tipenya di dalam DEKLARASI.
è Contoh soal
Misalnya M, a1, a2, a3 bertipe real, namakota dan namasiswa bertipe string, nilai bertipe integer dan p adalah rekaman bertipe titik. Cara membaca nilai untuk semua peubah tersebut adalah:
Read (M)
Read (a1, a2, a3)
Read (namakota)
Read (namasiswa, nilai)
Read (p.x, p.y)








Ketika instruksi : read (M) dilaksanakan oleh komputer, komputer membaca nilai M dari piranti masukkan. Bila pemakai mengetikkan angka 78 lalu diikuti dengan menekan tombol , maka lokasi memori yang bernama M sekarang berisi 78. Begitu juga bila instruksi Read (namasiswa, nilai) dilaksanakan oleh komputer, komputer menunggu pemakai mengetikkan nilai untuk namasiswa, nilai dari alat masukkan. Bila pemakai mengetikkan ahmad 98.4, maka namasiswa dan nilai berisi ahmad 98.4. Keadaan memori:


M
78
namasiswa
‘ahmad’
nilai
98.4



2. Ekspresi
Suatu nilai dipakai untuk proses transformasi menjadi keluaran yang diinginkan. Transformasi nilai menjadi keluaran dilakukan melalui suatu perhitungan (komputasi). Cara perhitungan ini dinyatakan dalam suatu ekspresi. Ekspresi terdiri atas operand dan operator. Operand adalah nilai yang dioperasikan dengan operator tertentu. Operand dapat berupa tetapan, nama peubah, nama tetapan atau hasil dari suau fungsi. Hasil evaluasi dari sebuah ekspresi adalah nilai di dalam rentang yang sesuai dengan tipe operand yang dipakai.
Ada 3 macam ekspresi:
a. Ekspresi aritmatik
b. Ekspresi relasional
c. Ekspresi string
a. Ekspresi aritmatik
è Ekspresi yang baik operand-nya bertipe numerik dan hasilnya juga bertipe numerik.
è Contoh:
DEKLARASI
A, B, C : REAL
D : INTEGER
I, J, K : INTEGER







Contoh ekspresi numerik misalnya: a*c
Hasil evaluasi ekspresi tersebut juga bertipe real. Pada ekspresi ini, operand-nya: a dan b. Sedangkan operatornya adalah *. Bila hasil perhitungan disimpan ke dalam nama peubah, maka nama peubah tersebut haruslah bertipe sama dengan tipe hasil. Pengisian hasil evaluasi ekspresi a*c ke dalam nama peubah c melalui pengisian nilai
c ß a*b (benar)
d ß a*b (salah), karena d bertipe integer sedangkan hasil evaluasi tersebut harus bertipe real.
Contoh lain: penyimpanan ekspresi (i + j) div 2 ke dalam nama peubah k :
k ß (i + j) div 2 (benar)
(a/2.5) + c*b
i + (j*k) – 10*(d + k)
100.0/(a + c)-2.5
NB. Perhatikan tingkatan operatornya. Tingkatan operator akan berubah apabila diisi kurung pada penulisannya.

Contoh diatas merupakan ekspresi biner à ekspresi yang operatornya membutuhkan dua buah operand (sehingga operatornya disebut operator biner)

Selain itu ada juga ekspresi uner à ekspresi dengan 1 buah operand, misalnya: -a. –a adalah ekspresi uner. Selain merupakan operator biner, operator “-” merupakan satu-satunya operator uner dari seluruh operator aritmatika.

Ekspresi biner diatas ditulis dengan notasi infix à notasi yang digunakan dalam kehidupan sehari-hari. Susunan notasi infix adalah: operand1 operator operand2. Contoh: 6 * 8. Notasi prefix, susunannya à operator operand1 operand2. Contoh: *+a/bc-d*ef. Notasi postfix (suffix atau polish), susunannya: operand1 operand2 operator. Contoh: abc/+def*-*.

Contoh: nyatakanlah rumus-rumus dibawah ini dalam notasi algoritmik!
T= (C+32); z=2x+y/5w; y=5(a+b/cd+m/p+q)
Pembahasan:
T ß 5/9 *(C + 32)
z ß (2*x+y)/(5*w)
y ß 5((a+b)/(c*d)+m/(p+q))








b. Ekspresi relasional
è Ekspresi yang operatornya <,>, ≥, ≤, ≠, =, not, and, or, dan xor. Hasil evaluasi ekspresinya adalah nilai bertipe boolean (true atau false).
è
DEKLARASI
Ketemu, besar: boolean
x, y : integerContoh:




c. Ekspresi string
è Ekspresi dengan operator “+” (operator penyambung)

3. Menuliskan nilai ke piranti keluaran
è Nilai yang disimpan memori dapat ditampilkan ke piranti keluaran. Instruksi penulisan nilai dilakukan dengan notasi write


è Contoh:
Write (nama1, nama2, ..., namaN)
Write (tetapan)
Write (nama, tetapan, ekspresi)



è Contoh soal:
Misalnya A, B, nama_siswa, nilai telah didefinisikan tipenya di dalam deklarasi. Algoritma untuk mencetak nilai yang disimpan oleh nama-nama tersebut adalah:
Write (100)
Write (A)
Write (‘A’)
Write (‘Jurusan Teknik Multimedia’)
Write (‘nilai A= ’, A)
Write (nama_siswa, nilai)
Write (A+B)
Write (‘nilai seluruhnya adalah ’, A+B/2*10)








Bila A bernilai 8, B bernilai 6, nama_siswa bernilai ‘ahmad’, nilai bernilai 90.8 maka keluaran yang dicetak ke piranti keluaran adalah:
100
8
A
Jurusan Teknik Multimedia
Nilai A= 8
Ahmad 90.8
Nilai seluruhnya adalah 38










PENULISAN ALGORITMA SECARA UTUH
Contoh 1
Mencetak string ‘Hallo, Dunia’ ke piranti keluaran
Algoritma cetak_hallo
{mencetak string ‘Hallo, Dunia’ ke piranti keluaran}

Deklarasi
{tidak ada}

Deskripsi
Write (‘Hallo, Dunia’)









Contoh 2
string ‘Hallo, Dunia’ disimpan di dalam sebuah peubah yang bertipe string.
Algoritma cetak_hallo
{mencetak string ‘Hallo, Dunia’ ke piranti keluaran}

Deklarasi
Ucapan: string

Deskripsi
Ucapan ß ‘Hallo, Dunia’
Write (Ucapan)













Contoh 3
string ‘Hallo, Dunia’ disimpan di dalam nama tetapan.
Algoritma cetak_hallo
{mencetak string ‘Hallo, Dunia’ ke piranti keluaran}

Deklarasi
Const Ucapan: ‘Hallo, Dunia’

Deskripsi
Write (Ucapan)











Tgl: 3 nopember 2007 à test kecil 1 algoritma


Kiri: sebutkan struktur dasar algoritma dan jelaskan sebutkan bagian-bagian algoritma & jelaskan 20
Jelaskan perbedaan hasil output algoritma dibwh ini jelaskan perbedaan penggunaan pencetakan string tanpa variabel, dengan variabel dan dengan constant 40
40








Soal ulangan:
1. Tipe terstruktur untuk jadwal kereta api. Jadwal keberangkatan kereta api terdiri atas informasi nomor kereta api, kota asal, kota tujuan, jam berangkat, dan jam tiba. Buatlah tipe terstruktur untuk permasalahan diatas.
2. Data nilai untuk setiap siswa, yang harus disimpan sebuah tipe terstruktur adalah NIS, nama siswa, mata pelajaran. Pada mata pelajaran harus menyimpan data kode mata pelajaran, nama mata pelajaran, nilai mata pelajaran.























Jawaban:
1. Type Jam : record <>

Type jadwal_KA : record <>

2. Type mata_pelajaran : record
<>
Type nilai_sis : record
<>














RUNTUNAN
PENGENALAN
Algoritma merupakan runtunan (sequence) satu atau lebih instruksi, yang berarti bahwa:
1. Tiap instruksi dikerjakan satu per satu;
2. Tiap instruksi dilaksanakan tepat sekali; tidak ada instruksi yang diulang;
3. Urutan instruksi yang dilaksanakan pemroses sama dengan urutan aksi sebagaimana yang tertulis di dalam teks algoritmanya;
4. Akhir dari instruksi terakhir merupakan akhir algoritma.
Bila runtunan instruksi dalam algoritma berturut-turut dilambangkan dengan A1, A2, A3, A4, dan A5, maka urutan pelaksanaan instruksi tersebut adalah seperti diagram dibawah ini.
A1

A2

A3

A4

A5

PENGARUH URUTAN INSTRUKSI
Algoritma runtunan_1
{algoritma yang menghasilkan keluaran yang berbeda jika urutan instruksi diubah}
DEKLARASI
A, B : Integer
DESKRIPSI
A ß 10
A ß 2*A
B ß A
Write (B)
{Nilai B yang dicetak ke piranti keluaran = 20}Urutan instruksi di dalam algoritma adalah penting. Urutan instruksi yang berbeda dalam runtunan dapat menghasilkan keluaran yang berbeda. Contoh:












Algoritma runtunan_2
{algoritma yang menghasilkan keluaran yang berbeda jika urutan instruksi diubah}
DEKLARASI
A, B : Integer
DESKRIPSI
A ß 10
B ß A
A ß 2*A
Write (B)
{Nilai B yang dicetak ke piranti keluaran = 10}








CONTOH-CONTOH RUNTUNAN
Menghitung luas segitiga. Luas sembarang segitiga adalah setengah dari panjang alas dikali tinggi. Panjang alas dan tinggi segitiga dibaca dari piranti masukkan. Luas segitiga dicetak ke piranti keluaran.
Algoritma Luas_Segitiga
{Dibaca panjang alas (a) dan tinggi (t) segitiga. Hitunglah luas segitiga tersebut. Untuk panjang alas dan tinggi tertentu. Luas segitiga dihitung dengan rumus L = ½ at. Nilai L dicetak ke piranti keluaran }
DEKLARASI
a : real {panjang alas segitiga dalam satuan cm }
t : real {tinggi alas segitiga dalam satuan cm }
L : real {luas segitiga dalam satuan cm}
DESKRIPSI
Read (a)
Read (t)
L ß a*t/2
Write (L)








Soal
1. Menghitung komisi yang diterima salesman berdasarkan jumlah penjualan yang dicapai. Salesman itu mendapat komisi 10% dari hasil penjualannya. Masukkan algoritma adalah nama salesman dan jumlah penjualan yang dicapainya. Tampilkan ke piranti keluaran nama salesman dan besar komisi yang diperoleh!
2. Dibaca nama karyawan dan gaji pokok bulanannya. Gaji bersih yang diterima pegawai adalah:
gaji bersih=gaji pokok+tunjangan-pajak

tunjangan karyawan dihitung 20% dari gaji pokok, sedangkan pajak adalah 15% dari gaji pokok ditambah tunjangan.
3. Dibaca dua buah titik P1(x1,y1) dan P2(x2,y2). Tulislah algoritma untuk menghitung titik tengah dari P1 dan P2. Titik tengah dari dua P1 da P2 adalah P3(x3,y3) yang dihitung dengan rumus:
X3=x1+x2/2 dan y3=y1+y2/2
4. Mengkonversi konversi jam-menit-detik(hh-mm-ss) menjadi total detik. Data jam-menit-detik dibaca dari piranti masukkan.
Ingat: 1 menit = 60 detik
1 jam = 3600 detik
5. Dibaca lama sebuah percakapan telepon dalam satuan detik. Tulislah algoritma untuk menghitung berapa jam, berapa menit, berapa detikkah lama percakapan tersebut.
6. Menghitung selisih waktu dari dua buah jam, J1 (hh.mm.ss) dan jam J2 (hh.mm.ss) dengan syarat J2.hh > J1.hh
7. Misalnya seorang penelpon di warung telekomunikasi memulai percakapan pada pukul J1 dan selesai pada pukul J2. Bila 1 pulsa = 5 detik dan biaya per pulsa Rp 150,00. Tulislah algoritma untuk menghitung lama percakapan (dalam jam.menit.detik) dan biaya yang harus dibayar penelpon. Untuk menyederhanakan masalah, andaikanlah wartel itu tutup tepat pukul 0:0:0 malam.
8. Bagaimana cara mempertukarkan nilai A dan B? Misalnya sebelum pertukaran nilai A=8, nilai B=5, maka setelah pertukaran nilai A=5 dan nilai B=8. Andaikan nilai yang ditukarkan bertipe integer.















KUNCI JAWABAN
1. Algoritma komisi_salesman
{menghitung besar komisi yang diterima seorang salesman. Besar komisi adalah 10% dari nilai penjualan yang dicapainya. Data masukkan adalah nama salesman dan nilai penjualannya. Keluaran algoritma adalah besar komisi yang diterima saleman tersebut}

DEKLARASI
Nm_salesman : string {nama untuk salesman}
Nil_pejualan : real {nilai penjualan yang dicapai, dalam Rp}
Komisi : real {besar komisi, dalam Rp}

DESKRIPSI
Read(nm_salesman, nil_penjualan)
Komisi ß 0.1 * nil_penjualan
Write(komisi)

2. Algoritma gaji_karyawan
{menghitung gaji bersih karyawan. Data masukkan adalah nama karyawan dan gaji pokok bulanannya. Gaji bersih = gaji pokok+tunjangan-pajak. Tunjangan adalah 20% dari gaji pokok. Sedangkan pajak adalah 15% dari gaji pokok+tunjangan}

DEKLARASI
Nm_kary : string
Gapok, tunj, pajak, gaber : real

DESKRIPSI
Read (nm_kary, gapok)
Tunj ß 0.2 * gapok
Pajak ß 1.5 *(gapok+tunj)
Gaber ß gapok+tunj-pajak
Write (gaber)

3. Algoritma titik_tengah
{dibaca dua buah titik P1(x1,y1) dan P2(x2,y2). Hitunglah titik tengah dari kedua buah titik tersebut}

DEKLARASI
Type titik : record
P1, P2, P3: titik

DESKRIPSI
Read (P1.x, P1.y) {dibaca titik P1}
Read (P2.x, P2.y) {dibaca titik P2}
P3.x ß (P1.x +P2.x)/2
P3.y ß (P1.y+P2.y)/2
Write (P3.x, P3.y)

4. Algoritma konversi_jam_ke_detik
{dibaca jam-menit-detik (hh.mm.ss). konversilah jam-menit-detik ke dalam total detik}

DEKLARASI
Type jam : record
J: jam
Tot_det: integer


DESKRIPSI
Read(J.hh, J.mm, J.ss)
Tot_det ß (J.hh*3600)+(J.mm*60)+J.ss
Write (tot_det)
5. Algoritma konversi_detik_ke_jam
{mengkonversikan jumlah detik menjadi jam-menit-detik}

DEKLARASI

Type jam: record
J: jam
Tot_det: integer
Sisa: integer {peubah pembantu}

DESKRIPSI

Read(tot_det)
J.hh ß tot_det div 3600 {mendapatkan jam}
sisa ß tot_det mod 3600
J.mm ß sisa div 60 {mendapatkan menit}
J.ss ß sisa mod 60 {mendapatkan detik}
Write (J.hh, J.mm, J.ss)


6. Algoritma selisih_jam
{dibaca 2 buah jam, J1 dan J2. Hitunglah selisih J2-J1=J3}

DEKLARASI

Type jam : record <>
J1, J2, J3: jam
Tot_det1, tot_det2, selisih_det: integer
Sisa: integer {peubah pembantu}

DESKRIPSI
{membaca J1 dan J2}
Read(J1.hh, J1.mm, J1.ss) {jam 1}
Read(J2.hh, J2.mm, J2.ss) {jam 2}

{konversi jam ke total detik}
Tot_det 1ß (J1.hh*3600)+(J1.mm*60)+J1.ss {konversi jam 1}
Tot_det 2ß (J2.hh*3600)+(J2.mm*60)+J2.ss {konversi jam 2}
{menghitung selisih total detik}
Selisih_det ß tot_det2 – tot_det1
{konversi detik ke jam-menit-detik}
Read(selisih_det)
J3.hh ß selisih_det div 3600 {mendapatkan jam}
sisa ß selisih_det mod 3600
J3mm ß sisa div 60 {mendapatkan menit}
J3.ss ß sisa mod 60 {mendapatkan detik}
Write (J3.hh, J3.mm, J3.ss)


7. Algoritma wartel
{menghitung biaya percakapan di warung telekomunikasi. Biaya percakapan dihitung dari lama percakapan}

DEKLARASI
Const biaya_per_pls : 150 {biaya per pulsa}
Type jam : record
J1 : jam {awal percakapan}
J2 : jam {akhir percakapan}
J3 : jam {lama percakapan}
Tot_det1, tot_det2 : integer
Sisa : integer {peubah pembantu}
Lama : integer
Pulsa : real
Biaya : real

DESKRIPSI
Read (J1.hh, J1.mm, J1.ss) {membaca jam awal percakapan}
Read (J2.hh, J2.mm, J2.ss) {membaca jam akhir percakapan}

{konversi jam ke jumlah detik}
Tot_det 1ß (J1.hh*3600)+(J1.mm*60)+J1.ss {konversi jam 1}
tot_det 2ß (J2.hh*3600)+(J2.mm*60)+J2.ss {konversi jam 2}

{menghitung lama percakapan dalam jumlah detik}
lama ß tot_det2-tot_det1
{menghitung jumlah pulsa dan biaya untuk seluruh pulsa}
Pulsa ßlama/5
Biaya ß pulsa * biaya_per_pulsa
{konversi lama ke dalam jam-menit-detik}
J3.hh ß lama div 3600 {mendapatkan jam}
Sisa ß lama mod 3600
J3.mm ß sisa div 60 {mendapatkan menit}
J3.ss ß sisa mod 60 {mendapatkan detik}
Write (J3.hh, J3.mm, J3.ss, biaya)

8. Algoritma tukar
{menukarkan nilai A dan B. Nilai A dan B dibaca dari piranti masukkan}

DEKLARASI
A : integer {nilai pertama}
B : integer {nilai kedua}
C : integer {peubah pembantu}

DESKRIPSI
{baca nilai A dan B}
Read (A, B)

{cetak nilai A dan B sebelum pertukaran}
Write (A, B)

{proses pertukaran}
C ß A {simpan nilai A di tempat pemampungan sementara}
A ß B {sekarang A dapat diisi nilai B}
B ß C {isi B dengan nilai A semula yang tadi disimpan di C }

{cetak nilai A dan B setelah pertukaran}
Write (A, B)




































PEMILIHAN

PENDAHULUAN
Di dalam program, adakalanya suatu aksi hanya dikerjakan bila memenuhi syarat atau kondisi tertentu. Jadi, dalam memecahkan masalah, harus menganalisis kasus-kasus apa saja yang mungkin ada. Sebagai contoh untuk menentukan kuadran sebuah titik P(x,y) di dalam bidang kartesius.
Kasus-kasus yang mungkin untuk titik P(x,y) adalah:
Kasus 1: x > 0 dan y > 0, maka P(x,y) terletak di kuadran 1
Kasus 2: x <> 0, maka P(x,y) terletak di kuadran 2
Kasus 3: x <> 0 dan y <> y
A ≠ 10
M = n
P ≤ q
A + b > 1
Str = ‘itb’
K mod 4 = 0
Ketemu = true
Not berhenti
(x > 0) and (y <>bernilai benar (true). Bila bernilai salah (false), tidak ada aksi yang dilaksanakan. Kata endif sengaja ditambahkan untuk mempertegas awal dan akhir struktur if-then.
>>CONTOH
a. If x > 100 then
x ß x+1
endif
b. If kar =’*’ then
Stop ß true
Endif
c. If (a ≠ 0) or (p = 1) then
q ß a* p
write (q)
endif

Tidak ada komentar: