*** S E L A M A T D A T A N G ***

ALGORITMA

Algoritma adalah urutan langkah logis penyelesaian masalah yang disusun secara sistematis. Kata logis berarti nilai kebenarannya harus dapat ditentukan, benar atau salah. Langkah-langkah yang benar akan menghasilkan penyelesaian masalah dengan benar, sedangkan sebaliknya langkah-langkah yang salah tidak akan menyelesaikan masalah.

Aturan Penulisan Teks Algoritma

Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi tersebut dapat ditulis dalam notasi apapun, asalkan mudah untuk dimengerti dan dipahami. Tidak ada notasi baku dalam penulisan teks algoritma, selanjutnya disebut notasi algoritmik. Hal terpenting yang harus dipahami adalah bahwa teks algoritma tidak sama dengan teks program. Namun agar teks algritma lebih mudah ditranslasikan ke dalam notasi bahasa pemograman, maka sebaiknya notasi algoritmik tersebut berkoresponden dengan notasi bahasa pemograman secara umum.


Notasi Algoritma


Perhatikan tabel diatas!

Perintah Read merupakan perintah kepada komputer untuk membaca input dari piranti masukkan (keyboard) sedangkan perintah Write merupakan perintah kepada komputer untuk menulis atau menampilkan ke piranti keluaran (monitor).


Contoh Penyelesaian Kasus Sederhana Algoritma

Carilah Volume Kubus jika diketahui setiap sisi kubus memiliki nilai N?

Langkah pertama yang harus kita lakukan adalah dengan mencari rumus untuk mencari Volume Kubus. Jika diketahui rumus Volume Kubus = sisi a x sisi b x sisi c. Maka penerapan rumus tersebut dalam sebuah algoritma dapat dilakukan sebagai berikut:


Algoritma Volume_Kubus
{Algoritma untuk mencari nilai volume dari sebuah kubus}

Deklarasi
sisi : integer
vol : real

Deskripsi
write ('Masukkan Nilai Sisi Kubus = ') readln (sisi)
vol = sisi x sisi x sisi
writeln ('Nilai Sisi Kubus = ',vol :8:2)
readln
end.

selamat mencoba dengan menggunakan program Pascal!

Tipe Data Sederhana

Apabila digunakan pengenal variabel di dalam program Pascal, maka variabel tersebut harus dideklarasikan terlebih dahulu. Pada waktu mendeklarasikan suatu variabel, maka harus menentukan tipe dari datanya. Tipe dari data menunjukkan suatu nilai yang dapat digunakan oleh variabel bersangkutan. Tipe data yang ada dalam Pascal dapat berupa tipe data standart, tipe data yang didefinisikan sendiri, tipe data terstruktur dan tipe pointer.

Tipe Data Standar
Tipe data Integer
Data integer merupakan nilai bilangan bulat baik dalam bentuk desimal maupun hexadesimal.


Tipe data Real
Digunakan untuk keperluan data real (pecahan). Dalam Turbo Pascal 7.1 menyediakan 5 buah jenis data real, yaitu: real, single, double, extended dan comp. Jangkauan masing-masing sebagai berikut:


Tipe data Karakter

Tipe data char merupakan tipe data yang mengandung sebuah karakter. Karakter dapat berupa sembarang elemen dalam ASCII yang ditulis diantara tanda petik tunggal.

Tipe data String

Tipe data string berupa sederetan karakter.

Tipe data Boolean
Tipe ini hanya mengenal dua buah nilai saja, yaitu true (benar) atau false (salah).

Operator

Pada tipe data bilangan bulat, riil, char, dan string dalam dilakukan operasi aritmatika dan operasi logika dengan menggunakan operator-operator tertentu sebagai berikut :


A. Operator Aritmatika

+ (tambah)
- (kurang)
* (kali)
/ (bagi)
MOD (sisa hasil bagi)
DIV (hasil bulat dari suatu pembagian)

contoh
10 + 15 (hasil : 25)
8 - 2.8 (hasil : 5.2)
10.0 / 3.0 (hasil : 3.3333...)
7.2 * 0.5 (hasil : 3.6)
10 mod 3 (hasil : 1)
20 mod 5 (hasil : 0)
10 div 3 (hasil : 3)
2 + 3 (hasil : 5)
'2' + '3' (hasil : '23')
'Manajemen' + 'Informatika' (hasil : Manajemen Informatika)


B. Operator Relational

< (kurang dari) > (lebih dari)
= (sama dengan)

contoh
4 <> 15 (hasil : False)
'A' = 'A' (hasil : True)
'Y' = 'y' (hasil : False)


C. Operator Logika

Operasi yang dapat dilakukan pada data bertipe boolean adalah operasi logika atau operasi boolean dengan menggunakan operator logika. Ambil x dan y adalah suatu variabel bertipe boolean. Hasil operasi x dan y ditunjukkan pada tabel berikut :











contoh
Pada algoritma atau program, misal x bernilai True dan Y bernilai False, maka :
x and y (hasil : False)
x or y (hasil : False)
x xor y (hasil : True)
(x and y) or x (hasil : False)
(x xor y) and y (hasil : False)

RUNTUNAN

Algoritma merupakan runtunan/squence 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.

Kasus Runtunan

Kasus 1. Menghitung komisi yang diterima salesman berdasarkan jumlah penjualan yang dicapainya. Salesman itu mendapat komisi 10% dari hasil penjualannya. Masukkan algoritma adalah nama salesman dan jumlah penjualan yang dicapainya. Tampilan piranti keluaran nama salesman dan besar komisi yang diperolehnya.


kasus 2. Dibaca nama karyawan dan gaji pokok, gaji bersih diperoleh dari :

GajiBersih = GajiPokok + Tunjangan - Pajak

Tunjangan karyawan dihitung 20% dari gaji pokok, sedangkan pajak adalah 15% dari gaji pokok ditambah tunjangan.



Pengaruh Urutan Runtunan

Urutan instruksi dalam algoritma sangat penting. Urutan langkah yang berbeda dalam runtunan dapat menghasilkan keluaran yang berbeda pula.

Translasi ke Pascal




PEMILIHAN

Menganalisis kasus dari suatu masalah artinya menentukan kondisi Boolean (bernilai true atau false) dan menentukan aksi yang dilakukan jika kondisi tersebut berlaku. Kondisi Boolean adalah suatu ekspresi relasional yang bernilai true atau false bergantung pada nilai masing-masing operand yang terlihat didalamnya. Ada 2 struktur dalam pemilihan, yakni struktur if then else dan struktur case.

Struktur If - Then - Else

SATU KASUS

Jika Golongan = III maka
GajiPokok = 800.000

Pernyataan diatas dapat ditulis dalam struktur umum :

if kondisi then
aksi
endif

if Golongan = III then
GajiPokok = 800.000
endif

Dalam bahasa Indonesia, if berarti jika dan then berarti maka. Kondisi adalah persyaratan yang dapat bernilai benar atau salah. Aksi hanya akan dilaksanakan jika kondisi bernilai benar. Sebaliknya, jika kondisi bernilai salah, maka aksi tidak akan dilaksanakan.


Kasus 1. Dibaca sebuah bilangan bulat dari keyboard. Tuliskan algoritma untuk mencetak pesan "bilangan genap" jika bilangan tersebut adalah genap. Bilangan genap adalah bilangan yang habis dibagi 2 (sisa = 0).



DUA KASUS

Kondisi if-then hanya memberikan satu pilihan aksi bila kondisi dipenuhi atau bernilai benar, dan tidak memberikan pilihan aksi lain jika kondisi bernilai salah. Berikut adalah kondisi if then else, yang memberi pilihan aksi lain jika kondisi bernilai salah.

if Kondisi then
Aksi 1
else
Aksi 2
Endif

Else artinya kalau tidak. Jika kondisi bernilai benar, maka aksi 1 akan dikerjakan, tetapi kalau tidak, aksi 2 yang akan dilaksanakan. Misal pada pernyataan berikut:

if Golongan = III then
GajiPokok = 800.000
Else
GajiPokok = 900.000
Endif

Kasus 2. Dibaca dua buah bilangan bulat dari peranti masukan. Tentukan dari kedua bilangan yang terbesar. Misalkan kedua bilangan tersebut adalah A dan B



Kasus 3. Karyawan honorer di PT "ABC" digaji berdasarkan jumlah jam kerjanya selama satu minggu. Upah per jam adalah Rp. 7.000,-. Jika jam kerja lebih besar dari 48 jam, maka sisanya dianggap sebagai jam lembur. Upah lembur adalah Rp. 10.000,-. Dibaca jumlah jam kerja seorang karyawan, tentukan upah mingguannya.

Penyelesaian:

Misalkan jumlah jam kerja (JJK)

Berikut algoritma yang bisa dibuat dari kasus diatas

TIGA KASUS atau LEBIH

Apabila pilihan aksi yang dilakukan lebih dari dua buah, maka struktur pemilihan menjadi lebih rumit, dinamakan pemilihan bersarang.

if Golongan = III then
GajiPokok = 800.000
Else
if Golongan = IV then
GajiPokok = 900.000
Else
GajiPokok = 1.000.000
Endif
End

Bentuk umum dari pemilihan diatas adalah sebagai berikut :

Tiga kasus :

if (Kondisi 1) then
Aksi 1
Else
if (Kondisi 2) then
Aksi 2

Else
if (Kondisi 3) then
Aksi 3
Endif
Endif

Endif


Kasus 4. Misalkan karyawan PT."ABC" dikelompokkan berdasarkan golongannya. Upah per jam tiap karyawan bergantung pada golongannya. Ketentuannya adalah sebagai berikut :


Jumlah jam kerja yang normal selama seminggu adalah 48 jam. Kelebihan jam kerja dianggap lembur dengan upah lembur adalah Rp. 3000/jam untuk semua golongan karyawan. Buat algoritma untuk masalah diatas!

Penyelesaian :



Pascal :



Pascal :




PENGULANGAN

Rata Penuh

Pendahuluan

Salah satu kelebihan komputer adalah kemampuannya untuk mengerjakan pekerjaan yang sama berulang kali tanpa mengenal lelah. Ini berbeda dengan manusia yang cepat lelah bila mengerjakan pekerjaan yang sama berulang-ulang. Tidak hanya lelah, tapi juga cepat bosan.

Struktur Pengulangan Ada 3 struktur dalam pengulangan, yakni repeat-until, for to do, while do.


Repeat Until
Struktur pengulangan repeat until dapat ditulis sebagai berikut :

Repeat
Aksi
Until kondisi
Struktur repeat until (repeat artinya ulangi, sedangkan until artinya sampai)
Kasus 1
Buatlah algoritma dengan keluaran sebagai berikut :


Penjualan
Kode Barang : ..............................
Nama Barang : ..............................
Harga : ..............................Jumlah Jual : ..............................
Total Harga : ..............................
Ada barang lain lagi (Y/T) :

Nama barang diperoleh berdasarkan kode barang mengikuti tabel berikut ini :


Sedangkan total harga diperoleh dari rumus berikut ini :Total Harga = harga x jumlah jual

Jika dijawab "Y" maka algoritma akan menampilkan kembali menu penjualan, jika dijawab "T" maka akan keluar dari algoritma.

Analisis
Yang menjadi variabel untuk menghentikan algoritma pada kasus ini adalah jawab, aksi akan terus diulangi (Repeat) sampai (Until) jawab = T. Pada saat jawab = T algoritma akan berhenti.


Kasus 2.
Terdapat N bilangan yang diinput dari piranti masukan. Tentukan nilai rata-rata dari N bilangan tersebut!

Penyelesaian
Misalkan terdapat 4 bilangan sebagai berikut :
4 7 6 9

N = 4, tentukan k=1, nilai k ini ditambah 1 setiap kali terjadi pengulangan, sehingga pengulangan akan berhenti pada saat k = N. Nilai rata-rata bilangan di atas adalah (4 + 7 + 6 + 9)/4, yakni 6,5. Jika dibentuk dalam rumus dapat dituliskan Rata = (x(1) + x(2) + x(3) + x(4))/N. Misalkan (x(1) + x(2) + x(3) + x(4)) dinamakan sebagai variabel jumlah.
Definisikan jumlah = 0 dan k = 1. Baca x yang pertama yakni 4, jumlah = 0 + 4, sehingga jumlah adalah 4. Naikkan nilai k menjadi 2 dengan perintah k = k+1, lalu baca x yang kedua, jumlah = 4 + 7, sehingga jumlah adalah 13. Demikian seterusnya sampai k = N. Anda perhatikan nilai 0 dan 4 yang ditulis tebal adalah jumlah pada langkah sebelumnya, sehingga dapat dibentuk rumus jumlah = jumlah + x. Berikut adalah algoritma untuk mencari nilai rata-rata dari N bilangan.

PROSEDUR DAN FUNGSI

Modularisasi Program
Dalam aktivitas yang sebenarnya, pembuatan sistem akan melibatkan program yang besar dan rumit. Sehingga pemrograman terkadang perlu untuk memecah program menjadi beberapa sub program yang lebih kecil dan sederhana. Sub program yang telah dibuat dapat dipanggil pada program utama pada saat dibutuhkan. Teknik pemrograman yang memecah program menjadi beberapa sub program dan memanggilnya pada saat dibutuhkan dinamakan teknik pemrograman modular. Sub program yang dibuat dapat berupa prosedur ataupun fungsi. Pemilihan apakah suatu subprogram adalah prosedur atau fungsi akan dibahas selanjutnya.
Ada 2 keuntungan modularisasi program ini, yakni (1) untuk aktivitas yang dilakukan berulang-ulang, modularisasi menghindari penulisan teks program yang sama berulang-ulang, (2) kemudahan dalam menuliskan dan menemukan kesalahan dalam program.

Prosedur
Prosedur adalah 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.
Struktur dasar prosedur adalah bagian judul (header) yang terdiri atas nama prosedur dan komentar yang menjelaskan spesifikasi prosedur tersebut, bagian deklarasi, dan bagian deskripsi. Notasi algoritmik yang digunakan untuk mendefinisikan struktur prosedur adalah :


Kasus 1. Buat prosedur untuk menentukan rata-rata dari N bilangan. Lalu panggil dalam algoritma Rerata. Penyelesaian:




Fungsi
Adalah modul program yang memberikan/mengembalikan (return) sebuah nilai yang bertipe sederhana (integer, real, boolean, dan string).

Notasi algoritmik fungsi adalah :



Tipe hasil menspesifikasikan tipe nilai yang diberikan oleh fungsi :


Algoritma pemanggil :


Kasus 1.
Karyawan honorer di PT."ABC" digaji berdasarkan jumlah jam kerjanya selama satu minggu. Upah per jam adalah Rp. 7.000,-. Jika jam kerja lebih besar dari 48 jam, maka sisanya dianggap sebagai jam lembur. Upah lembur adalah Rp. 10.000,-. Dibaca jumlah jam kerja seorang karyawan, tentukan upah mingguannya.

Penyelesaian
Misalkan jumlah jam kerja (JJK)

Jika JJK < upah =" JJK"> 48 jam, Upah = (48 x 7.000) + (JJK - 48) x 10.000

Versi 1


Versi 2


Algoritma Pemanggil

Fungsi

Algoritma Pemanggil


Fungsi


Fungsi


Fungsi


Fungsi


Algoritma Pemanggil :


L A R I K


Larik Satu Dimensi


Sebuah peubah atau tetapan hanya menyimpan sebuah nilai dari tipe tertentu. Seringkali kita perlu mengolah sekumpulan data yang bertipe sama, misalnya hasil ujian 100 orang mahasiswa, tabel harga barang dipasar swalayan, daftar kode wilayah dalam percakapan interlokal, dan sebagainya. Bila kumpulan data disimpan secara beruntun di dalam memori, maka tiap elemen data dapat diacu dengan menggunakan indeks. Indeks menyatakan posisi data relatif di dalam kumpulannya. Strunktur penyimpanan data seperti ini dinamakan larik (array). Nama lain larik adalah tabel, vektor, atau peubah majemuk.

Larik adalah struktur data yang menyimpan sekumpulan elemen yang bertipe sama, setiap elemen diakses langsung melalui indeksnya. Indeks larik haruslah tipe data yang menyatakan keterurutan, misalnya integer atau karakter.

Larik A dengan 8 buah elemen dapat dibayangkan secara logic sebagai kotak yang terurut dengan tiap kotak dari larik diberi indeks 1, 2, 3, ..., 8. Tiap elemen larik ditulis dengan notasi:

A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8].

Angka di dalam kurung siku menyatakan indeks larik.

Setiap elemen larik menyimpan sebuah nilai. Karena seluruh elemen larik bertipe sama, maka nilai yang disimpan oleh setiap elemen juga harus bertipe sama. Gambar diatas memperlihatkan larik A yang setiap elemennya berisi nilai 8 orang siswa. Nilai siswa pertama disimpan di dalam A[1], nilai siswa kedua disimpan di dalam A[2], demikian seterusnya.

Larik adalah struktur yang statik, artinya jumlah elemen larik harus sudah diketahui sebelum program dieksekusi. Jumlah elemen matriks tidak d, dapat diubah, ditambah atau dikurangi selama pelaksanaan program. Mendefinisikan larik di dalam bagian deklarasi artinya mendefinisikan banyaknya elemen larik, dan mendefinisikan tipe elemen larik.

Mendefinisikan banyaknya elemen larik berarti memesan sejumlah tempat di memori, sehingga memori akan mengalokasikan sejumlah lokasi memori sebanyak elemen larik yang bersangkutan. Tiap elemen larik dapat berupa tipe sederhana (integer, real, char, boolean, string), tipe terstruktur (tipe bentukan seperti rekaman), atau bahkan bertipe larik.

Mendefinisikan Larik Satu Dimensi

Contoh mendefinisikan larik di dalam bagian deklarasi :

1. Sebagai Peubah

Misalkan :
  • L adalah nama peubah larik yang mempunyai 50 buah elemen yang bertipe integer, dengan indeks larik bertipe integer dan dimulai dari 1.
  • NamaMhs adalah larik yang mempunyai 10 buah elemen yang bertipe string, indeks larik bertipe char dan dimulai dari 'a'.
  • NilUjian adalah peubah larik yang mempunyai 75 buah elemen yang bertipe real, indeks larik bertipe integer dan dimulai dari 0.
Cara mendefinisikan ketiga buah peubah larik tersebut di dalam bagian deklarasi adalah :


2. Sebagai Tipe Baru

Misalkan TabInt didefinisikan sebagai nama sebuah tipe baru untuk larik yang bertipe integer. Banyak elemen larik adalah :

Mendefinisikan ukuran maksimum elemen larik sebagai sebuah tetapan.

Cara mengacu pada elemen larik adalah melalui indeksnya, sehingga nilai indeks harus terdefinisi. Elemen larik tersusun secara beruntun. Karena itu, elemennya diproses secara beruntun melalui indeks yang terurut, asalakan indeks tersebut sudah terdefinisi.

Proses adalah aksi dilakukan terhadap elemen larik.













Larik bertipe terstruktur.


Struktur logik larik TabMhs adalah :




Bekerja dengan dua buah larik. Dua buah larik atau lebih dapat dioperasikan sekaligus. Misalkan nilai ujian N orang mahasiswa telah disimpan di dalam larik Ujian [1...N]. Kita akan menghitung nilai indeks.


Deklarasi data :


Prosedur untuk menghitung nilai indeks sebagai berikut :