• Tidak ada hasil yang ditemukan

BAB I ALGORITMA DAN PEMROGRAMAN

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB I ALGORITMA DAN PEMROGRAMAN"

Copied!
60
0
0

Teks penuh

(1)

BAB I

ALGORITMA DAN PEMROGRAMAN

Pengantar Algoritma

Apakah Algoritma ?

Sejarah kata Algoritma berasal dari nama seorang ahli matematika bangsa Arab yaitu Abu Ja'far Muhammad ibnu Musa al-Khuwarizmi. Al-Khuwarizmi dibaca oleh orang Barat menjadi Algorism. Perubahan kata algorism menjadi algorithm karena kata algorism sering dikelirukan dengan arithmetic, sehingga akhiran –sm berubah menjadi –thm. Lambat laun kata algorithm dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna aslinya. Dalam bahasa Indonesia kata algorithm diserap menjadi algoritma.

Definisi Algoritma adalah : Susunan langkah-langkah sistematis dan logis dalam pemecahan suatu masalah.

Ada 3 cara dalam menyusun algoritma yaitu :

Algoritma cara ke-1 :

Dengan merumuskan langkah-langkah pemecahan masalah melalui kalimat yang tersetruktur (tersusun secara logis).

Contoh :

Ada persoalan sbb : Dua buah gelas misalkan gelas A berisi air warna merah dan gelas B berisi air warna biru. Permasalahannya adalah bagaimana mempertukarkan isi kedua gelas A dan B sehingga gelas A berisi air warna biru dan gelas B berisi air warna merah. Buatlah algoritmanya.

Jawab :

Langkah-langkahnya sbb:

1. Sediakan satu gelas kosong misalkan C 2. Tuangkan isi gelas A ke gelas C

3. Tuangkan isi gelas B ke gelas A 4. Tuangkan isi gelas C ke gelas B 5. Selesai {Program : URUT.PAS} PROGRAM URUT_DATA; USES CRT; VAR D,X,Z : BYTE; T : LONGINT; R : REAL;

DATA : ARRAY[1..5] OF BYTE; BEGIN CLRSCR; T:=0; FOR D:=1 TO 5 DO BEGIN Write('DATA KE ',D,' : '); ReadLn(DATA[d]); T:=T+Data[d]; END;

(2)

WriteLn;

Write('Data sebelum diurut : '); FOR D:= 1 TO 5 DO Write(Data[d]:3); { --- URUT DATA ---} FOR D:= 1 TO 4 DO BEGIN FOR X:= D+1 TO 5 DO BEGIN

IF DATA[d] > DATA[x] THEN BEGIN Z:=DATA[d]; DATA[d] := DATA[x]; DATA[x] := Z; END; END; END; WriteLn; WriteLn;

Write('DATA SETELAH DIURUT : '); FOR D:=1 TO 5 DO WRITE(DATA[d]:3); WRITELN; WRITELN('TOTAL : ',T); R:=T/D; WRITELN('RATA : ',R:10:2); READLN; END.

Algoritma cara ke-2 :

Menggabungkan kalimat dengan penggalan statements yang ada di suatu bahasa pemrograman (mis : Pascal ). Biasa disebut Pseudo code (mirip kode/perintah pemrograman)

Contoh : Algoritma untuk konversi bilangan berbasis-10 menjadi bilangan berbasis-2.

1. INPUT a { a adalah bilangan bebasis 10}

Hit = 1 { hit adalah indeks untuk menyimpan sisa hasil bagi } 2. DO WHILE a>0

sb = sisa bagi a dengan 2 bil(hit) = sb

hit = hit + 1

a = hasil pembagian a dengan 2

ENDDO

3. DO WHILE hit > 0 cetak bil(hit); hit = hit + 1

(3)

Algoritma cara ke-3 :

Menggunakan diagram alir (flowchart). Lambang lambang flowchart secara umum

No Lambang Keterangan

1 Terminal (Start atau Finish) : Sebagai lambang

untuk mengawali flowchart dan mengakhiri flowchart.

2 Input atau Output : Sebagai lambang untuk

memasukkan data atau mengeluarkan data atau hasil proses data

3 Proses : Sebagai lambang proses terhadap data

maupun formulasi matematis lainnya.

4 Predefined proses : Merupakan suatu Prosedur

atau Rutin atau Sub Program baik yang terpisah dari program utama maupaun yang terpadu dalam satu program.

5 Preparasi : Pemberian harga awal terhadap

suatu pengenal ( indentifier) yang akan digunakan

6 Decision ( Pengambilan keputusan berdasarkan

hasil pengujian ekspresi logis apakah hasilnya True atau False )

7 Connector dalam satu halaman

8 Connector ke halaman lain

9 Line : Sebagai lambang arah / arus dari aliran

program

(4)

Contoh: flowchart konversi bilangan basis 10 menjadi bilangan basis-2 :

Gambar 1.2 : Flowchart konversi bil desimal ke biner.

Buatlah program menggunakan Turbo Pascal untuk konversi bil basis 10 ke bil basis 2 sesuai flowchart diatas. Simpan program dengan nama Biner.Pas

{ Nama Program : Biner.Pas } Program Konversi_Biner; Uses Crt;

Var Hit,A,SB : Integer;

Bil:Array[1..100] of Integer; Begin

ClrScr;

Write('Masukan bilangan basis 10 : '); ReadLn(A); Hit:=1; Repeat SB := A Mod 2; Bil[Hit]:=SB; Hit:=Hit+1; A := A Div 2; Until A=0; Writeln; Repeat Write(Bil[Hit]:2); Hit:=Hit-1; Until Hit=0; ReadLn; End. END START HIT = 1 INPUT - A SB=MOD(A/2) BIL(HIT)=SB HIT=HIT+1 A=DIV(A/2) A=0 ? No Yes L

Cetak Sisa Hasil Bagi dari Belakang ke Depan

HIT = HIT - 1 HIT>0

L

No

(5)

Algoritma merupakan jantung Ilmu Informatika

Algoritma adalah merupakan jantung ilmu komputer atau informatika. Banyak cabang ilmu komputer yang diacu dalam terminologi algoritma. Namun jangan beranggapan algoritma selalu identik dengan ilmu komputer saja. Cara membuat kue atau masakan yang dinyatakan dalam resep masakan, itu juga merupakan algoritma. Ibu-ibu yang mencoba resep masakan tersebut akan membaca satu persatu langkah pembuatannya, lalu mengerjakan proses (melakukan aksi) sesuai yang ia baca. Secara umum, pihak yang mengerjakan proses disebut pemroses (processor). Pemroses dapat berupa manusia, komputer, robot, alat mekanik, alat elektronik dll. Melaksanakan algoritma berarti mengerjakan langkah-langkah yang tertulis dalam algoritma tersebut.

Mekanisme Pelaksanaan Algoritma

Agar algoritma dapat dilaksanakan dalam komputer maka algoritma harus di ubah ke notasi bahasa pemrograman sehingga disebut program. Jadi program adalah merupakan perwujudan atau implementasi dari algoritma. Program ditulis dalam salah satu bahasa pemrograman. Kegiatan menulis program disebut pemrograman(programming). Orang yang menulis program disebut pemrogram (programmer). Tiap langkah di dalam program disebut pernyataan atau instruksi. Jadi program adalah : "Sederetan instruksi yang sistematis dan logis yang menggunakan sintaks tertentu untuk menyelesaikan permasalahan".

Secara garis besar komputer tersusun atas 4 komponen utama yaitu : 1. Input device (piranti masukan)

2. Output device (piranti keluaran)

3. Unit pemroses utama (Central Processing Unit ) 4. Memory (piranti penyimpan sementara)

Mekanisme kerja ke-empat komponen tersebut dapat dijelaskan sbb :

- Program dimasukan kedalam memori komputer.

- Setiap instruksi yang ada di memori di dikirim ke CPU untuk dieksekusi.

- CPU mengerjakan operasi-operasi yang bersesuain dengan instruksi tsb. • Bila operasi memerlukan data maka data dibaca dari pirnati

masukan. Data yang dimasukan disimpan dimemori lalu dikirim ke CPU untuk operasi yang memerlukan operasi tadi.

• Bila proses menghasilkan keluaran atau informasi, maka keluaran disimpan ke memori, lalu memori menuliskan keluaran ke piranti keluaran (mis : screen atau printer)

Perbedaan belajar Memprogram dengan Belajar Bahasa Pemrograman

- Belajar memprogram adalah belajar tentang metodologi pemecahan masalah, kemudian menuangkannya kedalam suatu notasi yang mudah dipahami. Belajar algoritma sama dengan belajar memprogram.

- Belajar bahasa pemrograman adalah belajar memakai suatu bahasa, aturan dan tata bahasanya, instruksi-instruksinya, cara pengoreasian compiler-nya. Belajar bahasa program contohnya adalah belajar Turbo- Pascal.

(6)

Pemrograman Prosedural.

Bahasa pemrograman yang menerapkan konsep prosedural didalam penulisan programnya misalnya adalah T.Pascal. Teknik pemrograman prosedural adalah : program di bagi menjadi beberapa bagian program yang lebih kecilyang disebut modul atau sub program atau rutin atau procedure atau function. Bagian-bagian program kecil ini nantinya di kontrol atau dikendalikan dari program utama (main program). Setiap sub program dapat di panggil berkali-kali dari program utama. Perhatikan skema konsep pemrograman prosedural berikut ini.

Gambar 1.3 : Diagram konsep prosedural.

Program Utama memanggil sub program Procedure Proc1 kemudian melaksanakan semua statements yang ada di sub program Procedure Proc1 hingga selesai (disini digambarkan dengan Exit). Kemudian program keluar dari sub program dan kembali ke perintah (statements) dibawah pemanggil. Demikian juga dengan prosedur-prosedur yang lain. Contoh : { Program: Modular1.Pas} Program Prosedure1; Uses Crt; Label Ulang;

Var Pilihan : integer;

{ --- } Procedure Pros_Persegi;

Var P,L,Luas : Integer; Begin

ClrScr;

WriteLn('Menghitung Luas Persegi Panjang'); Write('Masukkan Panjang : '); ReadLn(P);

** Program Utama {statements} ... ... CALL Proc1 {statements} CALL Proc2 {statements} ... ... END Procedure Proc1 {statements} ... ... ... EXIT Procedure Proc2 {statements} ... ... ... EXIT

(7)

Write('Masukkan Lebar : '); ReadLn(L); Luas := P * L;

Write('Luas adalah : ',Luas:10); ReadLn;

End;

{ --- } Procedure Pros_Lingkaran;

Var R, Luas : Real; Begin

ClrScr;

WriteLn('Menghitung Luas Lingkaran');

Write('Masukkan Panjang Jari-jari: '); ReadLn(R); Luas := Pi * R * R;

Write('Luas adalah : ',Luas:10:5); ReadLn;

End;

{ --- } Procedure Pros_Kubus;

Var S, Volume : Integer; Begin

ClrScr;

WriteLn('Menghitung Volume Kubus');

Write('Masukkan Panjang Sisi kubus: '); ReadLn(S); Volume := S * Sqr(S);

Write('Luas adalah : ',Volume:10); ReadLn;

End;

{ --- Bag Utama Program --- } Begin

ulang: ClrScr;

WriteLn('Ini modul utama ');

WriteLn('1. Luas Persegi panjang '); WriteLn('2. Luas Lingkaran '); WriteLn('3. Volume Kubus '); WriteLn('4. Selesai '); WriteLn;

Write('Pilihan anda : '); ReadLn(Pilihan); Case Pilihan of 1 : Pros_Persegi; 2 : Pros_Lingkaran; 3 : Pros_Kubus; Else Exit; End; GoTo ulang; ReadLn; End.

(8)

BAB-2

Aturan Penulisan Teks Algoritma

Teks Algoritma

Agar algoritma mudah ditranslasikan ke dalam notasi bahasa pemrograman, maka sebaiknya notasi algoritmik tersebut berkoresponden dengan notasi bahasa pemrograman secara umum. Misalkan kita menulis perintah :

tulis nilai x dan y dalam notasi algoritmik ditulis menjadi :

write(x,y)

Tabel notasi algoritmik

No. Notasi biasa Notasi algoritmik Notasi T.Pascal

1 masukan nilai x readln(x) ReadLn(x);

2 isikan nilai 5 kedalam x x Å 5 X:=5;

3 isikan nilai x kedalam min min Å x Min:=x;

4 tambahkan nilai 1 ke X itulah X x Å x + 1 X:=x+1;

5 tulis nilai x dan y write(x,y) Write(x,y);

6 jika a lebih besar dari b maka if a>b then If a>b Then Aturan diatas tidak baku, hanya penyesuaian dengan bahasa pemrograman Turbo Pascal.

Pada dasarnya teks algoritma tersusun dari 3 bagian (blok) yaitu : 1. Kepala Algoritma atau judul (header)

2. Bagian deklarasi.

3. Bagian deskripsi (uraian) algoritma.

- Header atau kepala algoritma bagian yang terdiri dari nama algoritma dan penjelasan singkat (spesifikasi) tentang algoritma tersebut. Penjelasan di apit tanda kurung kurawal { - }.

- Deklarasi merupakan bagian untuk mendefinisikan semua nama yang dipakai dalam algoritma. Nama dapat berupa nama peubah, tetapan, tipe, prosedur, fungsi, dll.

- Deskripsi merupakan bagian yang menjelaskan atau menguraikan langkah-langkah penyelesaian masalah. Uraian ditulis baris perbaris sesuai urutan yang harus dikerjakan secara sistematis.

Gambaran sebuah algoritma seperti berikut :

Algoritma NAMA_ALGORITMA

{ penjelasan tentang algoritma yang berisi uraian singkat mengenai apa yang dilakukan oleh algoritma}

DEKLARASI :

{ semua nama yang dipakai meliputi nama peubah, tetapan, tipe, prosedur, fungsi, label didefinisikan di bagian ini } DESKRIPSI :

(9)

Translasi teks algoritma ke dalam Teks Program

Teks algoritma hanya berisi pemikiran konseptual. Agar dapat dilaksanakan oleh komputer, algoritma harus ditranslasikan kedalam notasi bahasa pemrograman tertentu. Dalam hal ini kita akan mentranslasikan kedalam notasi bahasa pemrograman pascal.

Algoritma Kode program dengan Pascal

Sebelum kita bisa mentranslasikan notasi algoritma ke notasi bahasa pemrograman Turbo Pascal maka sebaiknya kita perlu mengetahui struktur dasar penulisan program pascal. Dibawah ini adalah skema struktur penulisan program pada T.Pascal secara umum sebagai berikut.

Algoritma UPAH_KARYAWAN

{menghitung upah mingguan karyawan. Masukkan yang dibaca dari papan kunci adalah nama karyawan,

golongan, dan jumlah jam kerja. nama karyawan dan upah kerja dicetak ke piranti keluaran}

DEKLARASI

const UL = 3000 {upah lembur/jam} Nama : String

gol : char {'A','B','C','D'} JJK : integer

upah : real

UJ : real {upah per jam}

DESKRIPSI Read(Nama, gol, JJK) Case (gol) gol='A' : UJ <- 4000 gol='B' : UJ <- 5000 gol='C' : UJ <- 6000 gol='D' : UJ <- 7500 endcase If JJK <= 48 then upah <- JJK * UJ else upah <- 48 * UJ + (JJK-48) * UL endif write(Nama, upah) Program UPAH_KARYAWAN;

{menghitung upah mingguan karyawan. Masukkan yang dibaca dari papan kunci adalah nama karyawan,

golongan, dan jumlah jam kerja. nama karyawan dan upah kerja dicetak ke piranti keluaran}

Uses Crt;

const UL = 3000; {upah lembur/jam} Var Nama : String;

gol : char; {'A','B','C','D'} JJK : integer;

upah : real;

UJ : real; {upah per jam}

Begin ClrScr;

Write('Nama : ');ReadLn(Nama); Write('Gol : ');ReadLn(gol); Write('Jlh jam kerja:');ReadLn(JJK); Case gol of 'A' : UJ := 4000; 'B' : UJ := 5000; 'C' : UJ := 6000; 'D' : UJ := 7500; end; If JJK <= 48 then upah := JJK * UJ else upah := 48 * UJ + (JJK-48) * UL; writeLn('Nama : ',nama); writeLn('Upah : ',upah:10:2); ReadLn; End.

(10)

Gambar 2.1 : Struktur penulisan program pada T.Pascal

Bag. Judul :

Bagian ini untuk memberikan judul dari program yang akan dibuat. Judul ini sama dengan header pada algoritma. Penulisan judul diawali Clausa "Program" diikuti nama program yang diberikan oleh pemrogram. Nama program dibuat sedapat mungkin berkoresponden dengan isi program. Judul program bersifat optional artinya boleh tidak dibuat dan tidak akan mengganggu jalannya program.

Bag. Deklarasi :

Bagian ini terbagi menjadi dua kategori yaitu :

- deklarasi unit-unit pascal yaitu menyertakan unit-unit pascal yang nantinya akan mendukung proses compilasi program. Beberapa unit pascal daintaranya adalah Crt, Print, Graph, Windos dll. Deklarasi unit pascal diawali dengan clausa "USES" diikuti dengan nama unit-nya. Misalnya : Uses Crt; - deklarasi pengenal untuk mendefinisikan pengenal-pengenal yang akan

digunakan dalam program utama. Pengenal dapat berupa Type, Constanta, Variabel, Label, Prosedur, Fungsi. Deklarasi pengenal diawal dengan clausa dari masing-masing jenis pengenal lalu diikuti nama pengenal beserta tipe-nya. Berikut ini adalah clausa yang dimasud.

Bag. Judul program Bag. Deklarasi

Deklarasi Unit Pascal Deklarasi Pengenal

Bag. Blok Utama program

Program Latihan;

Uses Crt;

Var Nama : String ; Gaji : LongInt;

Begin ClrScr;

Write('Nama : '); ReadLn(Nama);

Write('Gaji Pokok : '); ReadLn(Gaji);

ReadLn; End.

(11)

Type --> clausa untuk pengenal berupa type buatan.

Const --> clausa untuk pengenal berupa constanta (tetapan). Var --> clausa untuk pengenal berupa variabel (peubah). Label --> clausa untuk pengenal berupa Label (pengenal baris). Procedure --> clausa untuk pengenal berupa prosedur.

Function --> clausa untuk pengenal berupa fungsi.

Bag. Blok Utama program

Bagian ini adalah bagian utama program. Blok utama program diawal clausa "BEGIN" dan diakhiri clausa "END."

CONTOH : Program Contoh_Program1; Uses Crt; Const Harga = 1000; var Jumlah : Integer; HasilX : Real; Bagin ClrScr; Jumlah := 10;

HasilX := Jumlah * Harga;

Writeln(‘Hasil perkaliannya adalah :’,HasilX); ReadLn;

End.

Blok Utama

(12)

BAB III

Tipe, Nama, dan Nilai Pengenal

Pengantar

Pada umumnya, program komputer bekerja dengan memanipulasi objek(data) di dalam memori. Objek yang akan diprogram bermacam-macam jenis atau tipenya, misalnya nilai numerik, karakter, string dan rekaman (record). Suatu tipe menyatakan pola penyajian data dalam komputer. Tipe data dapat dikelompokan menjadi atas dua macam: tipe data dasar dan tipe tipe bentukan. Tipe dasar adalah tipe yang dapat langsung dipakai, sedangkan tipe bentukan dibentuk dari tipe dasar. Suatu tipe diacu dari namanya. Nilai-nilai yang dicakup oleh tipe tersebut dinyatakan di dalam ranah (domain) nilai.

Tipe Dasar - Bilangan Logika - Bil Bulat - Bil Riil - Karakter Tipe Nama Tipe

Ranah Nilai Tetapan Operasi

Bilangan Logika

boolean True atau False True dan

False

not, and, or, xor 1.byte 0..255 2.shortInt -128..127 3.word 0..65535 4.integer -32768..32767 Bilangan Bulat integer 5.LongInt -2147483648 ..2147483647 tidak me-ngandung titik desimal 1. aritmatika (+ - * div mod ) 2. perbandingan (<, <=, >,>=, =, <>) Bilangan Riil real 1. real 2.9x10-39..1.7x1038 2. single 1.5x10-45..3.4x1038 3. double 5.0x10-324 ..1.7x10308 4.extended 3.4x10-4932 ...1.1x104932 harus ditulis dengan titik desimal 1. aritmatika (+ - * / ) 2. perbandingan (<, <=, >,>=, <>)

Karakter char - semua alfabet - semua angka - tanda baca - operator aritmatik - karakter khusus harus diapit tanda petik tunggal perbandingan (=, <>, <, >, >=)

(13)

Tipe Bentukan - String.

- Tipe dasar yang diberi nama tipe baru.

- Rekaman (record). Tipe Nama

Tipe

Ranah Nilai Tetapan Operasi

String string deretan karakter yang didefinisikan pada ranah karakter harus diapit petik tunggal 1. Penyambungan (+) 2. Perbandingan (=, <>, <, >, >=, <=) hasil operasi berupa bilangan logic (true/false)

Tipe dasar yang diberi nama tipe baru:

Kita dapat memberi nama baru untuk tipe dasar dengan kata kunci type ranah nilai, tetapan dan operasi sama seperti tipe dasar aslinya.

Contoh :

type BilBulat : integer;

BilBulat adalah tipe bilangan bulat yang sama dengan tipe integer.

Rekaman

Rekaman disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau tipe bentukan yang sudah didefinisikan. Nama rekaman ditentukan oleh pemrogram sendiri.

Contoh :

NilMhs adalah nama tipe tersetruktur yang menyatakan nilai ujian seorang mahasiswa untuk suatu mata kuliah (MK) yang diambil. Data setiap mahasiswa adalah NIM (Nomor Induk Mahasiswa), Nama Mahasiswa, Kode Mata Kuliah, Nilai mata kuliah.

NIM NamaMhs KodeMK Nilai

Cara menuliskan tipe NilMhs : type NilMhs : record

< NIM : string { Nomor Induk Mahasiswa} NamaMhs : string

(14)

KodeMK : string {kode mata kuliah} Nilai : integer {nilai M.Kuliah } >

Jika dideklarasikan M adalah peubah bertipe NilMhs, maka cara mengacu tiap field pada rekaman M adalah :

M.NIM M.NamaMhs M.KodeMK M.Nilai

TipeNilMhsdidefinisikan sebagai berikut : Nama Tipe : NilMhs

Ranah Nilai : sesuai ranah masing-masing field

Contoh tetapan: <'2007001', 'Shulthan Sany', 'FI123',85>

<'2007002','Sundari Zahra','MA222',78>

Operasi : - operasi aritmatik bilangan bulat terhadap Nilai

- operasi string terhadap NIM, NamaMhs, KodeMK

Nama

Setiap objek diberi nama agar objek tersebut mudah diindentifikasi dari objek lainnya. Dalam algoritma nama dipakai sebagai pengindentifikasi "sesuatu" dan pemrogram mengacu "sesuatu" itu melalui namanya. Karena itu tiap nama haruslah unik (tidak sama). Didalam algoritma "sesuatu" yang diberi nama itu dapat berupa :

1. Label

Label merupakan pengenal baris. Suatu baris dalam program diberi nama/pengenal. Label ini diberikan pada baris tertentu biasanya untuk instruksi percabangan.

2. Peubah (variabel)

Variabel adalah alamat memory yang diberi nama sebagai tempat penyimpan data/informasi dan isi variabel dapat diubah.

3. Tetapan (constanta)

Sama dengan variabel tetapi isinya tetap (tidak bisa diubah) selama pelaksanaan program.

4. Tipe bentukan. Nama tipe bentukan diberikan oleh pemrogram. 5. Fungsi (function).

6. Prosedur (procedure).

Nilai

- Pengisian nilai ke dalam nama peubah

Nilai adalah besaran dari tipe data yang sudah dikenal. Nilai dapat berupa isi yang disimpan oleh nama peubah (variabel) atau nama tetapan(constanata), atau hasil dari perhitungan atau nilai yang dikirim oleh fungsi lain.

Cara mengisi nilai ke dalam nama peubah dapat dilakukan sbb : • Pengisian nilai secara langsung.

Nama := 'Budi Santoso'; Gaji := 2500000;

Tunj := Gaji * 0.1;

(15)

ReadLn(Nama); ReadLn(Gaji); - Ekspresi

Transformasi nilai(data) menjadi keluaran(informasi) melalui suatu proses perhitungan dinyatakan dalam suatu ekspresi. Ekspresi terdiri dari operand dan operator. Operand adalah nilai yang dioperasikan, operator adalah lambang untuk operasi. Ada tiga macam ekspresi yaitu :

• Ekspresi Aritmatik menggunakan operator aritmatika. c:=a*b;

a:=a+1;

d:=(a+b)/c*0.1;

Operator yang digunakan ( +, -, *, /, div, mod, sqr, sqrt)

• Ekspresi Relational (ekspresi perbandingan yang menghasilkan nilai boolean)

a>b; a>=d; c=d; e<f;

Operator yang digunakan (<, <=, >, >=, =, <>)

• Ekspresi Relational menggunakan operator (not, and, or, xor ). Ekpresi ini menghasilkan nilai boolean (True atau False).

Kondisi 1 Kondisi 2 AND OR XOR

T T T T F T F F T T F T F T T T T F F F Not -T F Not - F T • Ekspresi String

Ekspresi string adalah ekspresi dengan operator "+" (operator penyambungan/concatenation).

a:='Budi'; b:='Joko';

write(a+b); { BudiJoko} - Menuliskan Nilai kepiranti keluaran (output device)

Nilai yang disimpan dimemori dapat ditampilkan ke piranti keluaran (misalnya layar peraga). Instruksi penulisan nilai dilakukan dengan notasi Write

Nama := 'Budi Santoso'; Gaji := 2500000;

Tunj := Gaji * 0.1; WriteLn(Nama);

WriteLn(Gaji); WriteLn(Tunj);

(16)

BAB IV

Struktur Dasar Algoritma

Dasar-dasar Algoritma

Proses, Instruksi dan Aksi

Tiap langkah instruksi mengerjakan suatu tindakan (aksi). Bila suatu aksi dilaksanakan, 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 setelah

aksi selesai dikerjakan t1.

t0 : keadaan sebelum aksi dikerjakan aksi

t1 : keaaan setelah aksi dikerjalan

Struktur Dasar Algoritma

Konstruksi algoritma dibangun atas 3 konstruksi dasar yaitu :

- Runtunan aksi

- Pemilihan aksi

- Pengulangan aksi

Runtunan Aksi (Squence)

Proses pelaksanaan instruksi dikerjakan beruntun dari urutan istruksi pertama, instruksi kedua, instruksi ketiga dan seterusnya hingga berakhir atau berhenti karna ada kesalahan isntruksi. Urutan instruksi menentukan keadaan akhir dari algoritma. Bila urutannya diubah maka kemungkinan hasil akhir juga berubah.

Perhatikan ilustrasi berikut. Misalkan runtunan instruksi yang dilambangkan dengan A1, A2, A3, A4 dan A5 yang disusun sbb :

A1 A2 A3 A4 A5

Mula-mula pemroses malaksanakan istruksi A1. Selesai instruksi A1 dilanjutkan pelaksanaan instruksi A2. Intrsuksi A3 akan dilaksanakan jika instruksi A2 selesai dikerjakan dan seterusnya hingga A5. Pelaksanaan instruksi akan berurut kecuali jika ada perintah percabangan.

Pengaruh urutan instruksi terhadap hasil adalah apabila urutan diubah maka hasil akhir kemungkinan juga berubah.

Contoh : Kita ambil persoalan seperti pada bab-I

Ada persoalan sbb : Dua buah gelas misalkan gelas A berisi air warna merah dan gelas B berisi air warna biru. Permasalahannya adalah bagaimana

(17)

mempertukarkan isi kedua gelas A dan B sehingga gelas A berisi air warna biru dan gelas B berisi air warna merah. Buatlah algoritmanya.

Jawab :

Contoh A Contoh B

Langkah-langkahnya sbb:

1. Sediakan satu gelas kosong misalkan C

2. Tuangkan isi gelas A ke gelas C 3. Tuangkan isi gelas B ke gelas A 4. Tuangkan isi gelas C ke gelas B 5. Selesai

Hasil akhir adalah gelas A berisi larutan biru dan gelas B berisi larutan merah. Keadaan hasil akhir ini adalah jawaban yang sesuai dengan keinginan algoritma.

Langkah-langkahnya sbb:

1. Sediakan satu gelas kosong misalkan C

2. Tuangkan isi gelas B ke gelas A 3. Tuangkan isi gelas A ke gelas C 4. Tuangkan isi gelas C ke gelas B 5. Selesai

Hasil akhir adalah gelas A

kosong dan gelas B berisi larutan campuran merah dan biru.

Keadaan hasil akhir ini adalah jawaban yang tidak sesuai dengan keinginan algoritma. Jika urutan diubah {Program : Lagu.Pas} Program LaguIndonesiaRaya; Uses Crt; Begin ClrScr;

WriteLn('Indonesia tanah airku'); WriteLn('Tanah tumpah darahku'); WriteLn('Disanalah aku berdiri'); WriteLn('Jadi pandu ibuku'); ReadLn;

End.

- - - hasil- - -

Indonesia tanah airku Tanah tumpah darahku Disanalah aku berdiri Jadi pandu ibuku

{Program : Lagu.Pas}

Program LaguIndonesiaRaya; Uses Crt;

Begin ClrScr;

WriteLn('Disanalah aku berdiri'); WriteLn('Tanah tumpah darahku'); WriteLn('Indonesia tanah airku'); WriteLn('Jadi pandu ibuku'); ReadLn;

End.

- - - hasil- - -

Disanalah aku berdiri Tanah tumpah darahku Indonesia tanah airku Jadi pandu ibuku

(18)

BAB V

Pemilihan aksi

Pemilihan Aksi (Selection)

Adakalanya suatu instruksi hanya akan dikerjakan jika kondisi tertentu dipenuhi dan tidak akan dikerjakan kalau kondisi tertentu tersebut tidak terpenuhi. Untuk mengambil keputusan (decision) apakah instruksi akan dikerjakan atau tidak, maka struktur penulisan secara umum dapat dituliskan sbb :

Ada dua model untuk melakukan decision yaitu : 1. Dengan struktur If – Then – Else - EndIf 2. Dengan struktur Case of – Else – EndCase Bentuk struktur If – Then – Else – EndIf

Kondisi; berupa ekspresi logic yang akan diperiksa oleh pemroses. Ekpresi logic ini akan menghasilkan nilai logika (kebenaran/kepatutan) yaitu True atau False. Pemroses akan menguji <kondisi> yang ditentukan, jika <kondisi> bernilai benar (True) maka Aksi akan diproses, tetapi jika <kondisi> bernilai salah (False) maka

Aksi tidak akan diproses. Bila Aksi lebih dari satu; maka aksi-aksi tersebut diblok oleh Begin – End.

Pelaksanaan instruksi akan dilanjutkan pada instruksi-instruksi di bawah Aksi Bentuk penulisan struktur pemilihan diatas hanya memberikan satu pilihan aksi saja yaitu bila kondisi bernilai benar dan tidak memberikan pilihan aksi lain bila kondisi bernilai salah. Bentuk pemilihan yang lebih umum adalah memilih satu dari dua pilihan aksi bergantung pada nilai kondisinya benar atau salah. Bentuk yang dimaksud dalah :

Else artinya "selain itu" atau "kalau tidak". Bila kondisi benar maka Aksi_1 yang diproses, kalau tidak benar maka Aksi_2 yang diproses.

If <kondisi> Then Aksi; If <kondisi> Then Aksi_1 Else Aksi_2; ExpLogic True False Aksi_1 Aksi_2 If <expresiLogic> Then Aksi; ATAU

(19)

Contoh program :

{ Nama Program : If1.Pas } Program Jenis_Kelamin; USES CRT;

VAR JK:CHAR; BEGIN

CLRSCR;

WRITE('JENIS KELAMIN : '); READLN(JK); IF JK = 'L' THEN WRITELN('LAKI-LAKI') ELSE WRITELN('PEREMPUAN'); READLN; END.

Untuk pilihan kondisi yang lebih dari dua adalah sbb : IF <kondisi_1> Then

Aksi_1

Else If <kondisi_2> Then Aksi_2

Else If <kondisi_3> Then Aksi_3 ……. Else Aksi_n; ExpLogic1 True False Aksi_1 ExpLogic2 True Aksi_2 ExpLogic3 True Aksi_3 False Aksi_N; False If <expLogic> Then Begin Aksi_1a; Aksi_1b; End Else Begin Aksi_2a; Akso_2b; End;

(20)

Contoh program:

{ Nama Program : If2.Pas } Program Nama_Bulan; USES CRT; VAR BULAN:INTEGER; NAMABULAN:STRING; BEGIN CLRSCR;

WRITE('MASUKKAN SUATU BILANGAN : '); READLN(BULAN); IF BULAN=1 THEN

NAMABULAN:='JANUARI' ELSE IF BULAN=2 THEN NAMABULAN:='FEB' ELSE IF BULAN=3 THEN NAMABULAN:='MAR' ELSE IF BULAN=4 THEN NAMABULAN:='APR' ELSE IF BULAN=5 THEN NAMABULAN:='MEI' ELSE IF BULAN=6 THEN NAMABULAN:='JUN' ELSE IF BULAN=7 THEN NAMABULAN:='JUL' ELSE IF BULAN=8 THEN NAMABULAN:='AGT' ELSE IF BULAN=9 THEN NAMABULAN:='SEP' ELSE IF BULAN=10THEN NAMABULAN:='OKT' ELSE IF BULAN=11THEN NAMABULAN:='NOP' ELSE IF BULAN=12 THEN NAMABULAN:='DES' ELSE

NAMABULAN:='SALAH';

WRITELN('NAMA BULAN : ', NAMABULAN); READLN;

(21)

Bentuk struktur Case of – Else – EndCase

Bentuk lain yang bisa digunakan untuk pemilihan aksi berdasarkan kondisi adalah :

Nilai variabel akan di cek; jika nilainya ber-Nilai1 maka aksi_1 yang diproses, jika ber-Nilai2 maka aksi_2 yang diproses dan jika semua nilai tidak ada yang cocok maka aksi_akhir yang diproses.

Contoh program:

{ Nama Program : Case1.Pas } Program Kelompok_Usia;

USES CRT;

VAR UMUR :INTEGER;

NAMA,KELOMPOK: STRING; BEGIN

CLRSCR;

WRITE('MASUKAN NAMA ANDA :');READLN(NAMA); WRITE('MASUKKAN UMUR ANDA:');READLN(UMUR); CASE UMUR OF 0..5 : KELOMPOK := 'BALITA'; 6..17 : KELOMPOK := 'ANAK-ANAK'; 18..25 : KELOMPOK := 'REMAJA'; 26..65 : KELOMPOK := 'DEWASA'; 66..100: KELOMPOK := 'MANULA'; ELSE KELOMPOK:='LUAR BIASA'; END;

WRITELN(NAMA,' KAMU TERGOLONG ', KELOMPOK); READLN; END. --- Case variabel of Nilai1 : aksi_1; Nilai2 : aksi_2; Nilai3 : aksi_3; … Nilai_n : aksi_n; Else Aksi_akhir; End;

(22)

Contoh program : {Program : Case2.Pas} Program CaseOfElse; Uses Crt; Var NilAng : Integer; NilHur : string[1]; Begin Clrscr;

Write('Input Nilai Angka :'); Readln(NilAng); Case NilAng Of 81..100 : NilHur:='A'; 71..80 : NilHur:='B'; 61..70 : NilHur:='C'; 51..60 : NilHur:='D'; 41..50 : NilHur:='E'; Else NilHur:='K'; End;

Write('Nilai Huruf :',NilHur); Readln;

End.

- - - - - - - - - - - - - - - Contoh program:

{ Nama Program : Repeat1.Pas } Program Faktorial; USES CRT; VAR U,N:INTEGER; F:LONGINT; BEGIN CLRSCR;

WRITE('BERAPA FAKTORIAL ? : ');READLN(N); F:=1; u:=0; Repeat U:=U+1; F:=F*U; Until U = N; WRITELN(F); READLN; END. ---

(23)

BAB VI

Pengulangan aksi

Pengulangan Aksi (Repetition)

Salah satu kelebihan komputer adalah kemampuannya melakukan pekerjaan yang sama berulang kali dengan cepat tanpa mengenal lelah. Misalkan kita diminta untuk menulis kata "Merdeka" sebanyak 1000 kali maka kita selain lelah juga bosan dan memakan waktu yang relatif lama. Tetapi tidak demikian halnya dengan komputer Untuk dapat melakukan pekerjaan yang sama dan berulang-ulang sebanyak yang diinginkan maka kita dapat menuliskan algoritma-nya sesuai dengan struktur umum pengulangan seperti dibawah ini. Ada tiga macam bentuk pengulangan yang dapat dibuat yaitu :

1. For – To – Do - EndFor 2. Repeat – Until

3. While – Do - EndWhile Bentuk Umum Struktur Pengulangan

Struktur pengulangan yang ada pada Turbo Pascal adalah seperti berikut.

Ket :

1. For To Do

Variabel akan diisi nilai mulai dari N1 hingga mencapai nilai N2. Setiap kali kenaikan nilai variabel; blok Aksi yang diapit kata Begin-End akan dilaksanakan secara berurut. Jadi apabila perubahan nilai variabel terjadi

Cara 3. While <kondisi> Do Begin Aksi_1; Aksi_2; .... End; Cara 2. Repeat Aksi_1; Aksi_2; .... Until <kondisi>; Cara 1. For Variabel := N1 To N2 DO Begin Aksi_1; Aksi_2; .... End; Cara 3. While <kondisi> Do Aksi_1 Aksi_2 .... EndWhile Cara 2. Repeat Aksi_1 Aksi_2 .... Until <kondisi> Cara 1.

For peubah Å Nawal To Nakhir DO Aksi_1

Aksi_2 .... EndFor

(24)

sebanyak 5 kali, maka berarti blok aksi juga diproses sebanyak 5 kali juga, kecuali ada perintah untuk keluar dari perulangan walaupun nilai variabel belum mencapai N2.

2. Repeat ... Until

Repeat artinya ulangi, Until artinya hingga. Blok aksi yaitu mulai Aksi_1, Aksi_2 dst akan dilaksanakan berulang-ulang hingga <kondisi> yang disyaratkan terpenuhi. Atau dapat diartikan sbb "Ulangilah aksi-aksi dibawah ini hingga <kondisi> yang disyaratkan terpenuhi".

3. While .... Do

While artinya selama, Do artinya kerjakan. Selama <kondisi> yang disyaratkan masih benar maka blok aksi akan diproses terus menerus (kecuali ada perintah keluar dari perulangan). Blok aksi dimulai dengan kata Begin dan diakhiri kata End.

Contoh-ccontoh program: { Nama Program : For1.Pas } Program Faktorial; USES CRT; VAR U,N:INTEGER; F,C,K:LONGINT; BEGIN CLRSCR;

WRITE('BERAPA FAKTORIAL ? : ');READLN(N); F:=1; FOR U:=1 TO N DO F:=F*U; WRITELN(F); READLN; END. --- { Nama Program : For2.Pas }

Program Sinus; USES CRT;

VAR U,D : LONGINT; S:REAL; CONST PHI=3.14; BEGIN CLRSCR; U:=0; D:=0; FOR U:= 1 TO 13 DO BEGIN S:=SIN((PHI/180)*D); WRITELN('SIN: ',D, ' = ',S:5:2); D:=D+15; END; READLN; END.

(25)

---

{Nama Program : For3.Pas} Program Animasi;

USES CRT;

VAR U : INTEGER; BEGIN

CLRSCR;

FOR U:= 25 DOWNTO 1 DO BEGIN

GOTOXY(10,U); WRITELN('I LOVE YOU'); DELAY(500); GOTOXY(10,U); WRITELN(' '); END; READLN; END. - - - - - - - - - - - - {Nama Program : Repeat1.Pas}

Program Repeat1; USES CRT;

VAR U,F : INTEGER; BEGIN CLRSCR; U:=0; F:=1; REPEAT U:=U+1; F:=F*U; UNTIL U=5;

WRITELN( U,' FAKTORIAL = ' ,F); READLN;

END.

- - - - - - - - - - - - {Nama Program : Repeat2.Pas}

Program Perulangan_RepeatUntil; Uses Crt; Var I : Integer; Begin I := 0; Repeat

Inc(I); { menaikan nilai I dengan kenaikan 1} Writeln(‘Nilai I adalah : ‘,I);

Until I = 10; Readln;

(26)

{Nama Program : Repeat3.Pas} Program Putar; USES CRT ; VAR T:STRING; PK,KOL:BYTE; BEGIN CLRSCR;

T:='SELAMAT DATANG DI FATEK UMSU...'; PK:=LENGTH(T); KOL:= (80-PK) DIV 2; REPEAT T := COPY(T,2,PK-1) + COPY(T,1,1); GOTOXY(KOL,5); WRITE(T); DELAY(50000); UNTIL KEYPRESSED; END. - - - - - - - - - - - - { Nama Program : While1.Pas }

Program Faktorial; USES CRT;

VAR U,F : INTEGER; BEGIN CLRSCR; U:=0; F:=1; WHILE U<5 DO BEGIN U:=U+1; F:=F*U; END;

WRITELN( U,' FAKTORIAL = ' ,F); READLN;

END.

- - - - - - - - - - - - {Nama Program : While2.Pas}

Program CetakAngkaUrut; Uses Crt; Var I : Integer; Begin I := 1; While I <= 10 Do Begin

Writeln(‘Nilai I adalah : ‘,I) Inc(I);

End; Readln; End.

(27)

{Nama Program : While3.Pas} Program Perkalian;

USES CRT;

VAR A,B,C : INTEGER; BEGIN CLRSCR; A:=0; WHILE A<5 DO BEGIN A:=A+1; B:=0; While B<3 Do Begin B:=B+1; C:=A*B; WriteLn(A,'x',B,'=',C:3); End; WriteLn; END; READLN; END. - - - - - - - - - - - -

(28)

BAB VII

Prosedur

Pengertian Prosedur

Sebuah program yang besar dapat dipecah-pecah menjadi bagian-bagian program yang lebih kecil. Penggalan program ini disebut modul atau subprogram atau rutin atau prosedur atau fungsi. Subprogram kadangkala cukup independen dari program utama sehingga programnya dapat dirancang tanpa mempertimbangkan konteks tempat ia digunakan. Subprogram ini dapat dieksekusi berulang-ulang sesuai keperluan. Teknik pemrograman ini dinamakan teknik pemrograman modular atau teknik pemrograman prosedural.

Modularisasi program memberikan dua keuntungan yaitu :

- Untuk menghindari penulisan teks program yang sama secara berulang. Dapat mengurangi panjangnya program.

- Kemudahan menulis dan menemukan kesalahan (debug) program.

- Menjadikan program lebih flexible.

Gambar 7.1 Mekanisme penggunaan modul dari program utama.

Ada dua macam prosedur yaitu prosedur terpasang (standart) dan prosedur buatan pemakain.

Contoh prosedur standart adalah ClrScr --> membersihkan layar

Mendefinisikan prosedur

Pada dasarnya struktur prosedur sama dengan struktur algoritma yang sudah kita kenal, yaitu ada judul(header), deklarasi (keterangan) dan deskripsi (uraian).

** Program Utama {statements} ... ... CALL Proc1 {statements} CALL Proc2 {statements} ... ... END Procedure Proc1 {statements} ... ... ... EXIT Procedure Proc2 {statements} ... ... ... EXIT

(29)

Gambar 7.2 Struktur prosedur.

Pemanggilan prosedur

Prosedur bukan program yang berdiri sendiri, ia tidak dapat dieksekusi secara langsung. Isi prosedur hanya dapat diakses dengan cara memanggil namanya dari program pemanggilanya ( program utama atau modul lain). Bentuk umum cara pemanggilan prosedur adalah sbb :

NAMA_PROSEDUR;

Ketika nama prosedur dipanggil maka kendali program berpindah secara otomatis ke prosedur yang dipanggil tersebut. Setelah isi prosedur selesai dieksekusi, kendali program kembali ke instruksi sesudah pemanggil prosedur. Nama global dan nama lokal

Nama-nama indentifier yang dideklarasikan di dalam bagian deklarasi prosedur, hanya dikenal di dalam badan prosedur itu saja. Nama-nama indentifier tersebut dikatakan bersifat "lokal" dan hanya dapat dikenali didalam prosedur itu sendiri, sedangkan nama-nama yang dideklarasikan di program utama bersifat "global" dan dapat dikenali didalam prosedur.

Parameter

Kebanyakan program memerlukan pertukaran informasi antara prosedur/fungsi dan titik dimana ia dipanggil. Penggunaan parameter menawarkan mekanisme pertukaran informasi tersebut. Tiap item data ditransfer antara parameter aktual dan parameter formal yang bersesuaian. Parameter aktual adalah parameter yang disertakan pada waktu pemanggilan prosedur, sedangkan parameter formal adalah parameter yang dideklarasikan didalam header prosedur itu sendiri. Ketika prosedur itu dipanggil, parameter aktual menggantikan parameter formal. Tiap parameter aktual berpasangan dengan parameter formal yang bersesuaian.

Procedure NAMA_PROSEDUR { keterangan spesifikasi singkat tentang prosedur}

Deklarasi

{ semua nama yang dipakai dalam prosedur dan hanya berlaku lokal dalam prosedur}

Deskripsi

{ badan prosedur berisikan kumpulan instruksi }

Procedure CETAK_HALO { mencetak string 'Halo' ke piranti keluaran}

Deklarasi

{ tidak ada nama pengenal} Deskripsi

write('Halo')

Contoh Algoritma

(30)

contoh :

Procedure SATU(input x,y : integer)

{ cth prosedure dgn parameter formal berjenis parameter masukan, K.Awal : nilai x dan nilai y sudah terdefenisi

K.Akhir : nilai x dan y masing-masing dinaikkan satu, lalu dicetak ke piranti keluaran } DEKLARASI: { TIDAK ADA} DESKRIPSI: x Å x + 1 y Å y + 1 write(x) write(y) Algoritma PQR

{ cth program utama yg memanggil prosedur SATU } DEKLARASI:

a, b : real

procedure SATU(input x, y : integer )

{cth prosedur dgn parameter formal berjenis parameter masukan} DESKRIPSI: SATU(4,10) read(a, b) SATU(a, b) SATU(a+2, 20) - Masukan - Keluaran - Masukan / keluaran

- Prosedur tanpa parameter

- Prosedur dengan parameter

(31)

BAB VIII

Fungsi

Pengertian Fungsi

Fungsi merupakan potongan program yang tidak dapat berdiri sendiri, karena fungsi memberikan hasil berupa suatu nilai dan memerlukan suatu tempat untuk menampung nilai tersebut.

Ada fungsi standart (fungsi terpasang) dan ada fungsi buatan (defined function) Contoh-contoh fungsi dan prosedur standart antara lain :

Fungsi Numerik : 1. ABS(n)

Memberikan nilai mutlak (harga positif) dari bilangan n. N : Real atau Integer;

Hasil : sesuai dengan tipe-n 2. FRAC(n)

Memperoleh bilangan pecahan dari suatu bilangan pecahan (real).

N : Real

Hasil : Real

3. INT(n)

Memperoleh bilangan bulat dari suatu bilangan pecahan (real).

N : Real

Hasil : Real

4. TRUNC(n)

Memperoleh bilangan bulat dari suatu bilangan pecahan (real).

N : Real

Hasil : LongInt

5. ROUND(n)

Membulatkan bilangan pecahan (real) atau pembulatan.

N : Real

Hasil : LongInt

6. EXP(n)

Memperoleh nilai exponential (ex(e=bilangan natural)).

N : Real

(32)

7. LN(n)

Memperoleh nilai logaritma natural. N : Real atau Integer

Hasil : Real

8. SQR(n)

Memperoleh nilai kwadrat N : Real atau Integer Hasil : sesuai tipe argumen - n 9. SQRT(n)

Memperoleh nilai akar kwadrat (√n) N : Real atau Integer

Hasil : Real

10. PI

Memperoleh nilai konstanta bernilai 3.14

Hasil : Real

11. SIN(n)

Memperoleh nilai sinus - n

N : Real

Hasil : Real

12. COS(n)

Memperoleh nilai cosinus - n

N : Real

Hasil : Real

13. ARCTAN(n)

Memperoleh nilai arcus tangen - n

N : Real

Hasil : Real

14. ODD(n)

Menentukan apakah n bilangan ganjil atau tidak (True/False)

N : Word

Hasil : Bolean

15. RANDOM(n)

Memperoleh bilangan acak

N : Word

Hasil : Real Æ 0 ≤ hasil < n 16. RANDOM

Menentukan bilangan acak

Hasil : Real Æ 0 ≤ hasil < 1

360o = 2Л radian

(33)

Prosedur dan fungsi Library standart untuk string : 1. CHR(n)

Memperoleh karakter dengan nomor ASCII-n

N : Byte

Hasil : Char

2. ORD(kar)

Memperoleh nomor ASCII dari karakter kar kar : Char

Hasil : Byte

3. CONCATE(string1, string2, string3, ... ) Menggabungkan string1, string2, string3, ... string1, string2, string3, ... : String

Hasil : String

4. LENGTH(st)

Memperoleh jumlah karakter dari - st

St : String

Hasil : Byte

5. POS(st1, st2)

Menentukan posisi st1 didalam st2 St1 : Char atau String

Hasil : Byte

6. UPCASE(kar)

Mengubah karakter huruf kecil menjadi huruf besar (berlaku hanya 1 karakter awal)

kar : Char

Hasil : Char

7. COPY(st, p, n)

Menyalin isi st dimulai posisi p sebanyak n karakter

st : String

p,n : Byte

Hasil : String

8. READKEY

Meminta penekanan 1 tombol. Tombol yang diberikan tidak tampil di layar

Hasil : Char

9. DELETE(st, p, n)

Menghapus isi st dimulai posisi p sebanyak n karakter

st : String

p,n : Byte

(34)

10. INSERT(st1, st2, p)

Menyisip st1 kedalam st2 pada posisi p. Hasilnya disimpam di dalam st2. st1, st2 : String

p : Byte

Hasil : String

11. STR(Bil[:k[:d]],BilSt)

Mengubah bilangan numerik Bil menjadi bilangan string dengan format tertentu. Hasil disimpan dalam BilSt.

k, d : Byte dimana K=lebar kolom, D=lebar desimal

BilSt : String

12. VAL(BilSt, Hasil, ValErr)

Mengubah bilangan string menjadi bilangan numerik. BilSt : String (angka)

Hasil : Real atau Integer

ValErr : Word {Program Kon1.Pas} Program Konversi1; Uses Crt; Var a : string; b : real; err: integer; Begin ClrScr; a := '1234.5'; val(a,b,err); if err<>0 then write('salah') else write(b+2:10:2); Readln; End. - - - {Program Kon2.Pas} Program Konversi2; Uses Crt; Var a : string; b : real; err: integer; Begin ClrScr; a := 'abc'; val(a,b,err); if err<>0 then write('salah') else write(b+2:10:2); Readln; End. Hasilnya 1236.5 Hasilnya : salah

(35)

- - - Mendefenisika Fungsi

Seperti halnya prosedur, struktur fungsi sama dengan struktur algoritma yaitu ada header yang berisi nama fungsi dan spesifikasi fungsi, bagian deklarasi, dan badan fungsi. Setiap fungsi mempunyai nama yang unik serta daftar parameter formal (jika ada).

Kata cadangan FUNCTION mengawali bagian deklarasi fungsi diikuti oleh identifier yang merupakan nama dari fungsinya dan secara optional dapat diikuti oleh kumpulan parameter, tipe dari fungsinya dan diakhiri dengan titik koma. Contoh deklarasi fungsi :

FUNCTION Pangkat(X, Y : real) : Real; Pemanggilan Fungsi

Fungsi diakses dengan cara memanggil namanya dari program pemanggil diikuti dengan daftar parameter aktual (bila ada).

Contoh pemanggilan fungsi (menggunakan notasi algoritmik): peubah Å Nama_Fungsi(daftar parameter aktual) atau

Write(Nama_Fungsi(daftar parameter aktual)) Contoh dalam program :

{Nama Program : Fungsi1.Pas } Program Faktorial;

Uses Crt;

Var f,x : Integer;

Function Fak(x:integer) :integer; Var f:integer; u:byte; Begin f:=1; for u:=1 to x do f:=f*u; fak:=f; End;

Function Nama_Fungsi(dtr parameter formal) { keterangan spesifikasi singkat tentang fungsi}

Deklarasi

{ semua nama yang dipakai dalam fungsi dan hanya berlaku lokal dalam fungsi} Deskripsi

{ badan fungsi berisikan kumpulan instruksi }

Function F( input x:real) of real;

{ mengembalikan nilai F(x)=2x2+5x-8} Deklarasi { tidak ada } Deskripsi return 2*x*x+5x-8

(36)

Begin { -- blok utama program -- } ClrScr;

write('Masukan berapa faktorial : '); readLn(x);

write(x,' faktorial adalah ',Fak(x)); readLn;

End.

- - - { Nama Program : Fungsi2.Pas}

Program Contoh_Fungsi; Uses Crt;

Var

X, Y, Z : Integer; { --- Bag. Prosedur --- }

Procedure Inp_Bil(A, B : Integer); Begin

Write('Input Bilangan I : ');Readln(X); Write('Input Bilangan II : ');Readln(Y); End;

{ --- Bag. Fungsi --- } Function Tam_Bil(A, B : Integer) : Integer; Begin Tam_Bil:=A+B; End; { --- Program Utama --- } Begin Clrscr; Inp_Bil(X, Y);

Write('Hasil dari : ',X,' + ',Y,' = ',Tam_Bil(X, Y)); Readln;

End.

pemangilan fungsi Tam_Bil dgn parameter aktual x dan y

(37)

BAB IX

Larik (Array)

Definisi Larik (Array)

Array (larik) adalah salah satu bentuk struktur data yang bersifat linier (kontinu). Variabel array digunakan untuk menyimpan sejumlah data yang bertipe sama sehingga dapat menghemat jumlah variabel yang digunakan. Penunjukan kepada setiap lokasi atau elemen array menggunakan nama variabel dan subscrip (index), nilai subscrip selalu dimulai dengan 1 (satu).

Contoh : a = 10 a = a + 5 a = 5

Maka dimemori komputer nilai data dari variabel a adalah 5. Nilai data a yang 10 (baris pertama), dan 15 (baris kedua) akan terhapus oleh nilai data a yang 5 (baris ketiga). Masalah yang muncul adalah bila semua nilai a tersebut sangat dibutuhkan, bagaimana caranya ?. Jawabnya gunakan variabel array.

Ilustrasi :

lokasi / elemen data

Nama Array Subscrip/index

1 2 3 4 5 6 7 8 Mendefinisikan Larik di dalam bagian DEKLARASI

- mendefenisikan banyaknya elemen larik - mendefenisikan tipe elemen larik

Contoh deklarasi variabel larik/array: Var

V_Array_SatuD : Array[1..4] of tipe_data;

V_Array_DuaD : Array[1..4, 1..2] of tipe_data; atau

const max = 50;

type Larik = array[1..max] of real; var X : Larik;

Operasi pada tipe data array 1. Proses isi data array 2. Proses tampil data array 3. Proses urutkan data array 4. Proses cari data array

(38)

Cara Mengacu elemen larik

Elemen larik diacu melalui indeksnya. Nilai indeks harus terdefenisi. Dengan mengacu larik yang sudah didefenisikan sebelunya. Contoh cara mengacu elemen larik adalah :

L[4] { mengacu elemen ke-4 dari Larik L } P[k] { mengacu elemen ke-k dari Larik P }

Harga[i+1] { mengacu elemen ke-i+1 dari Larik Harga } Pemrosesan Larik

Proses adalah aksi yang dilakukan terhadap elemen larik. Proses dapat berupa aksi pengisian nilai kedalam larik, aksi pembacaan nilai dalam larik, penulisan nilai yang ada dalam larik ke media output, atau manipulasi lainnya.

Contoh :

{Nama Program : Array1.Pas} program mencari_hari_lahir; uses crt;

type

x = string[7]; const

faktorBLN : array[1..12] of byte =(0,3,3,6,1,4,6,2,5,0,3,5); hari : array[0..8] of x = ('Minggu','Senin','Selasa','

,'Rabu','Kamis','Jumat','Sabtu'); var

i: word;

nama :string[255]; j1,j2,j3,j4 :integer;

tanggal,Bulan, Tahun : integer; Begin

ClrScr;

writeln('PROGRAM MENCARI HARI KELAHIRAN ABAD 20'); WRITELN('Tahun input dari 1900 s/d 1989');

WRITELN('****************************** ');

write('MASUKKAN TANGGAL YANG DICARI: '); READLN(Tanggal); write('MASUKKAN BULANNYA : ');READLN(Bulan); write('MASUKKAN TAHUNNYA JUGA : ');READLN(Tahun); if tahun > 1900 then tahun := tahun - 1900;

j1 := trunc(tahun * 365.25); j2 := j1 + faktorBLN[Bulan];

if (tahun/4 = int(tahun/4)) and (Bulan < 3) then J2 := j2-1; j3 := j2 + tanggal;

j4 := trunc(frac(j3/7)*10); writeln;

writeln('HARI TERSEBUT ADALAH HARI: ',HARI[J4]); readln;

End.

Larik dua dimensi

Larik dua dimensi larik yang elemen datanya dibentuk dari 2 bidang data yaitu bidang baris dan bidang kolom. Larik dua dimensi biasanya digunakan untuk matrik. Karna elemen matrik diakses berdasarkan nomor baris dan nomor kolom.

(39)

elemen matrik 2 terletak di baris-1 kolom-1 elemen matrik 1 terletak di baris-1 kolom-2 elemen matrik 4 terletak di baris-1 kolom-3 elemen matrik 3 terletak di baris-2 kolom-1 elemen matrik 5 terletak di baris-2 kolom-2 elemen matrik 0 terletak di baris-2 kolom-3 contoh :

uses crt;

const p:array[1..3,1..4] of byte = ((2,3,4,5),(1,2,2,1),(2,3,3,2)); q:array[1..3,1..4] of byte = ((3,2,2,1),(2,3,3,4),(4,5,3,2)); var k,b:byte ;

r:array[1..3,1..4] of byte; begin

{ ---- proses mengisi larik dua dimensi ---- } clrscr; for b:=1 to 3 do begin for k:=1 to 4 do write(p[b,k]:3); writeln; end;

{ ---- proses penulisan larik dua dimensi ---- } writeln; writeln; for b:=1 to 3 do begin for k:=1 to 4 do write(q[b,k]:3); writeln; end; { --- penjumlahan matrik r=p+q --- } for b:=1 to 3 do begin for k:=1 to 4 do r[b,k]:=p[b,k]+q[b,k]; end;

{ ---- proses penulisan larik dua dimensi hasil penjumlahan --- } writeln; writeln; for b:=1 to 3 do begin for k:=1 to 4 do

=

0

5

3

4

1

2

A

(40)

write(r[b,k]:3); writeln;

end; readln; end.

PENCARIAN DATA DALAM ARRAY

Apabila suatu array sudah diisi data maka dapat dilakukan pencarian data tertentu didalam array dengan kemungkinan :

• Data yang dicari tidak ada didalam array

• Data ditemukan, selanjutnya perlu dipastikan subscrip lokasi tempat data itu berada.

Permasalahan :

Deklarasikan satu array numerik dengan subscrip 10, kemudian input data kedalam semua array tersebut. Selanjutnya diinput data numerik sembarang oleh operator untuk dicari didalam array tersebut. Output yang diminta adalah 1 diantara 2 kemungkinan yaitu :

• Jika ditemukan tampilkan dan pada subscrip ke berapa • Data tidak ditemukan.

Buatlah algoritma untuk keperluan tersebut. Pemahaman :

• Output : Satu diantara dua kemungkinan, yaitu :

- Data ditemukan pada subscrip yang ke berapa - Data tidak ditemukan

• Input : - 10 data numerik - 1 data numerik

• Analisis : - Deklarasikan array dengan subscrip 10 dengan perintah array.

- Input data kedalam array dengan proses perulangan - Input 1 data numerik yang akan dicari ke array - Cari data didalam array dengan prsoses perulangan

- Dalam setiap perulangan dilakukan pembandingan data yang dicari

- Jika sama berarti data ditemukan dan proses perulangan dihentikan

- Jika sampai ke subscrip akhir tidak ada yang sama berarti data tidak ditemukan

• Algoritma : ...

Mengurutkan Data Dalam Array (Sort)

Dalam banyak hal perlu data dalam keadaan berurutan. Pengurutan data ada dua macam , yaitu :

1. Ascending atau urutan menaik 2. Descending atau urutan menurun

(41)

Untuk menghasilkan data berurutan proses dasar yang dilakukan adalah mebandingkan dua data yang berdekatan. Untuk mengetahui harga data yang lebih besar atau yang lebih kecil, dilakukan operasi pembanding. Kemudian jika posisi kedua data itu tidak sesuai dengan urutan yang diinginkan, maka dilakukan pertukaran tempat. Sedangkan jika sesuai dengan urutan yang diinginkan tentu tidak perlu proses apapun.

Algortima untuk pengurutan data ini dikembangkan menurut logika untuk memperoleh proses yang seefisien mungkin sehingga dapat meminimalkan kegiatan dan waktu proses. Beberapa macam algoritma pengurutan data yang selama ini dikenal, antara lain :

1. Model Bubble / Exchange Sort

Membandingkan elemen yang sekarang dengan elemen yang berikutnya, jika elemen sekarang > elemen berikutnya, maka dilakukan pertukaran.

2. Model Selection Sort

Membandingkan elemen sekarang dengan elemen yang berikutnya sampai dengan terakhir.

3. Model Insertion Sort

Pengurutan dilakukan dengan cara membandingkan data ke-i (dimana i dimulai dari data ke-2 sampai dengan terakhir) dengan data berikutnya. Jika ditemukan data yang lebih kecil maka data tersebut disisipkan ke depan sesuai dengan posisi yang semestinya.

4. Model Quick Sort

Membandingkan suatu elemen (disebut pivot) dengan elemen yang lain dan menyusunnya sedemikian rupa sehingga elemen-elemen lain yang lebih kecil dari pada pivot tersebut terletak disebelah kirinya dan elemen-elemen lain yang lebih besar dari pada pivot terletak disebelah kanannya.

SORT

Definisi Sort

Sort adalah proses pengurutan data yang sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu.

Pada umumnya terdapat 2 jenis pengurutan : ™ Ascending (Naik) ™ Descending (Turun) Contoh : Data Acak : 5 6 8 1 3 25 10 Terurut Ascending : 1 3 5 6 8 10 25 Terurut Descending : 25 10 8 6 5 3 1 Bubble / Exchange Sort

Memindahkan elemen yang sekarag dengan elemen yang berikutnya, jika elemen sekarang > elemen berikutnya, maka tukar posisi.

(42)

Proses : Langkah 1 :

Pengecekan dapat dimulai dari data paling awal atau paling akhir. Pada contoh di samping ini pengecekan di mulai dari data yang paling akhir. Data paling akhir dibandingkan dengan data di depannya, jika ternyata lebih kecil maka tukar. Dan pengecekan yang sama dilakukan terhadap data yang selanjutnya sampai dengan data yang paling awal.

Langkah 2 :

Kembalinya data paling akhir dibandingkan dengan data didepannya jika ternyata lebih kecil maka tukar, tetapi kali ini pengecekan tidak dilakukan sampai dengan data paling awal yaitu 2 karena data tersebut pasti merupakan data terkecil (didapatkan dari hasil pengurutan pada langkah 1).

Langkah 3 : Langkah 4 :

Proses pengecekan pada langkah 3 dst. Sama dengan langkah sebelumnya.

Langkah 5 : Terurut : 22 10 15 3 8 2 22 10 15 3 2 8 22 10 15 2 3 8 22 10 2 15 3 8 22 2 10 15 3 8 2 22 10 15 3 8 2 22 10 15 3 8 2 22 10 15 3 8 2 22 10 3 15 8 2 22 3 10 15 8 2 3 22 10 15 8 2 3 22 10 15 8 2 3 22 10 8 15 2 3 22 8 10 15 2 3 8 22 10 15 2 3 8 22 10 15 2 3 8 22 10 15 2 3 8 10 22 15 2 3 8 10 22 15 2 3 8 10 15 22 2 3 8 10 15 22

(43)

Proses di atas adalah pengurutan data dengan metoda bubble ascending. Untuk yang descending adalah kebalikan dari proses diatas. Berikut penggalan listing program Procedure TukarData dan Procedure Bubble Sort.

Procedure TukarData

Procedure TukarData(var a,b : word); Var c : word; Begin c:=a; a:=b; b:=c; End;

Procedure Bubble Sort Ascending

Procedure Asc_Bubble(var data:array; jmldata:integer); Var i,j : integer;

Begin

For i:= 2 to JmlData do

For j:= JmlData DownTo i Do If data[j] < data[j-1] Then

Tukardata (data[j], data[j-1]); End;

Untuk pengurutan secara descending anda hanya perlu menggantikan baris ke-6 dengan berikut ini :

If data[j] > data[j-1] then Selection Sort

Membandingkan elemen yang sekarang dengan elemen yang berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang maka dicatat posisinya dan kemudian ditukar. Dan begitu seterusnya.

Proses :Langkah 1: Langkah 2 :

i = 1 2 3 4 5 6 22 10 15 3 8 2 pembanding Posisi 22 > 10 2 10 < 15 2 10 > 3 4 3 < 8 4 3 > 2 6

Posisi data ke-1(22) = 6

Tukar data ke-1 dengan data ke-6 2 10 15 3 8 22 i = 1 2 3 4 5 6 2 10 15 3 8 22 pembanding Posisi 10 < 15 2 10 > 3 4 3 < 8 4 3 < 22 4

Posisi data ke-2(10) = 4

Tukar data ke-2 dengan data ke-4 2 3 15 10 8 22

(44)

Langkah 3 : Langkah 4 :

Langkah 5 : Terurut :

Proses pengurutan di atas adalah dengan metoda selection Ascending. Untuk descending hanyalah kebalikan dari proses di atas. Berikut penggalan listing program Procedure Selection Sort secara ascending

Procedure Selection Sort Ascending Procedure Asc_Selection;

Var min, pos : byte; Begin

For i:= 1 to max-1 do Begin

Pos:=i;

For j:= i+1 to max do

If data[j] < data[pos] then pos:=j;

If i <> pos then

tukardata(data[i],data[pos]); End;

End;

Untuk pengurutan secara descending, anda hanya perlu mengganti baris ke-8 sbb :

if data[pos] < data[j] then pos:=j;

i = 1 2 3 4 5 6 2 3 15 10 8 22 pembanding Posisi 15 > 10 4 10 > 8 5 8 < 22 5 Posisi data ke-3(15) = 5 Tukar data ke-3 dengan data ke-5 i = 1 2 3 4 5 6 2 3 8 10 15 22 pembanding Posisi 10 < 15 4 10 < 22 4 Posisi data ke-4 tetap Pada posisinya = 4 (tidak berubah)

i = 1 2 3 4 5 6 2 3 8 10 15 22 pembanding Posisi 15 < 20 5 posisi data ke-5 tetap pada posisinya = 5 (tidak

(45)

Insertion Sort

Pengurutan dilakukan dengan cara membandingkan data ke-I (dimana I dimulai dari data ke-2 sampai dengan data terakhir) dengan data berikutnya. Jika ditemukan data yang lebih kecil maka data tersebut disisipkan ke depan sesuai posisi yang seharusnya.

Proses : Langkah 1: Langkah 2 : Langkah 3 : Langkah 4: Langkah 5 : Langkah 6 : i = 1 2 3 4 5 6 22 10 15 3 8 2 temp cek geser 10 temp<22 data ke-1Æ posisi 2

temp menempati posisi ke-1.

i = 1 2 3 4 5 6 10 22 15 3 8 2 temp cek geser 15 temp<22 data ke-2Æ posisi 3

temp>10 temp menempati posisi ke-2.

i = 1 2 3 4 5 6 10 15 22 3 8 2 temp cek geser

3 temp < 22 data ke-3Æ posisi 4 temp < 15 data ke-2Æ posisi 3 temp < 10 data ke-1Æposisi 2 temp menempati posisi ke-1.

3 10 15 22 8 2

i = 1 2 3 4 5 6 3 10 15 22 8 2 temp cek geser

8 temp < 22 data ke-4Æposisi 5 temp < 15 data ke-3Æposisi 4 temp < 10 data ke-2Æposisi 3 temp > 3 temp menempati posisi ke-2. 3 8 10 15 22 2

i = 1 2 3 4 5 6 3 8 10 15 22 2 temp cek geser

2 temp < 22 data ke-5Æposisi 6 temp < 15 data ke-4Æposisi 5 temp < 10 data ke-3Æposisi 4 temp < 8 data ke-2Æposisi 3 temp < 3 data ke-1Æposisi 2 temp menempati posisi ke-1.

(46)

Procedure Insertion Sort Ascending Procedure Asc_Insert;

Var i , j , temp : byte; Begin

For i := 2 to max do Begin

Temp :=data[i]; j := i-1;

while (data[j] > temp) and (j>0) do begin data[j+1] := data[j]; dec(j); end; data[j+1]:=temp; end; end;

Untuk pengurutan secara descending anda tinggal mengganti baris ke 8 dengan baris berikut ini :

(47)

BAB X

QUICK SORT

Membandingkan suatu elemen (disebut pivot) dengan elemen yang lain dan menyusunnya sedemikian rupa sehingga elemen- elemen lain yang lebih kecil daripada pivot tersebut terletak di sebelah kirinya dan elemen-elemen lain yang lebih besar daripada pivot tersebut terletak di sebelah kanannya. Sehingga dengan demikian telah terbentuk dua sublist, yang terletak di sebelah kiri dan kanan dari pivot. Lalu pada sublist kiri dan sublist kanan kita anggap sebuah list baru dan kita kerjakan proses yang sama seperti sebelumnya. Demikian seterusnya sampai tidak terdapat sublist lagi. Sehingga didalamnya telah terjadi proses Rekursif.

Proses :

Bilangan yang di dalam kurung merupakan pivot

Persegi panjang yang digambarkan dengan garis terputus-putus menunjukkan sublist.

i bergerak dari sudut kiri ke kanan sampai mendapatkan nilai yang >= pivot. j bergerak dari sudut kanan ke kiri sampai menemukan nilai yang < pivot.

Langkah 1 :

i berhenti pada index ke-1 karena langsung mendapatkan nilai yang > dari pivot (15).

j Berhenti pada index ke-6 karena juga langsung mendapatkan nilai yang < dari pivot.

Karena i < j maka data yang ditunjuk olh I ditukar dengan data yang ditunjuk oleh j sehingga menjadi :

2 10 15 3 8 22

Index = 1 2 3 4 5 6 j

i

(48)

Langkah 2 :

i berhenti pada index ke-3 (pivot) karena tidak menemukan bilangan yang > dari pivot.

j berhenti pada index k-5 menunjuk pada nilai yang < dari pivot.

Karena i < j maka data yang ditunjuk oleh i (pivot) ditukar dengan data yang ditunjuk oleh j sehingga menjadi :

2 10 8 3 15 22 Langkah 3 :

Proses yang sama seperti sebelumnya dilakukan terhadap 2 buah sublist yang baru (ditandai dengan persegi panjang dengan garis terputus-putus).

Atau dapat juga digambarkan dalam bentuk tree seperti di bawah ini dengan pivot yang ditandai dengan huruf tebal. Kemudian setelah terurut dibaca inorder. 10 3 8 2 15 22 2 3 10 8 8 10 Index = 1 2 3 4 5 6 j i 2 10 15 3 8 22 Index = 1 2 3 4 5 6 j 2 10 8 3 15 22 i 2 3 8 10 15 22 22 10 15 3 8 2

(49)

Procedure Quisort dengan nilai paling kiri sebagai pembanding (pivot). Procedure Asc_Quick(L,R : Integer);

Var i, j:integer; Begin If L<R then Begin i := L; j := R+1; repeat

repeat inc(i) until data[i] >= data[1]; repeat dec(j) until data[j] <= data[1]; if i < j then tukardata (data[i], data[j]); until i > j;

tukardata (data[1], data[j]); Asc_Quick(L,j-1);

Asc_Quick(j+1,R); End;

End;

Untuk pengurutan secara descending anda tinggal mengganti tanda aritmatik pada baris ke 8 dan 9 sehingga menjadi seperti baris berikut :

repeat inc(i) until data[i] >= data[l]; repeat dec(j) until data[j] <= data[l];

Procedure Quick Sort dengan nilai tengah sebagai pembanding (pivot).

Procedure Asc_Quick(L,R : Integer); Var mid, i, j : integer;

Begin

i:= L; j:=R;

mid := data[(L+R) div 2]; repeat

while data[i] < mid Do inc(i); while data[j] > mid do dec(j);

if i < j then begin change(data[i],data[j]); inc(i); dec(j); end; until i > j; if L < j then Asc_Quick(L , j); if i > R then Asc_Quick(i , R); end;

Untuk pengurutan secara descending, anda hanya perlu mengganti baris ke-6 & 7 sbb :

while data[j] < mid do inc(j);

(50)

Latihan Soal beserta jawaban (Listing program) dan penjelasan.

Anda diminta membuat sebuah program sorting dengan metode bublsort. Mintalah user untuk memasukkan 10 angka. Lalu tampilkan angka-angka tersebut setelah disort baik secara ascending maupun descending.

Layar 1 :

Masukkan 10 data = = = = = = = = = =

Data ke-1 = 5 Data ke-6 = 45

Data ke-2 = 2 Data ke-7 = 8

Data ke-3 = 67 Data ke-8 = 23

Data ke-4 = 43 Data ke-9 = 39

Data ke-5 = 90 Data ke-10 = 7

{ket : tampilan ketika mengiput 10 angka} Layar 2 :

5 2 67 43 90 45 8 23 39 7 Data yang telah diurutkan :

* * * * * * * * * * * * * * * * * *

Ascending : 2 5 7 8 23 39 43 45 67 90 Descending: 90 67 45 43 39 23 8 7 5 2

{ket : tampilan setelah dilakukan bubble sort} Jawaban :

contoh: sortir buble.

uses crt;

const max = 10;

Type arr = array[1..max] of byte; Var i : byte;

Data : arr; Procedure Input; begin

Clrscr;

Writeln (‘Masukkan 10 data’); Writeln (‘= = = = = = = = = =’);

For i := 1 to max do {input 10 data} begin

write(‘Data ke-‘, i ,’=’); readln(data[i]); end; Clrscr; For i := 1 to max do Write(data[i],’ ‘); Writeln; Writeln (‘ * * * * * * * * * * * * * * *);

(51)

Writeln (‘Data yang telah diurutkan :’); end;

Procedure Change (var a,b :byte); {procedure untuk menukar data}

Var c : byte; Begin

c := a; a := b; b := c; end;

Procedure Asc_Buble; {pengurutan secara ascending}

Var p,q : byte;

flaq : boolean; begin

flaq:=false; p:=2;

while (p<max) and (not flaq) do begin

flaq:=true;

for q := max downto p do if data[q] < data[q-1] then begin

change (data[q], data[q-1]);

flaq:=false; end; inc(i); end; write(‘Ascending :’); end;

Procedure Desc_Buble; {pengurutan secara descending} Var p, q : byte;

Flaq : boolean; Begin

flaq:=false; p:=2;

while (p<max) and (not flaq) do begin

flaq:=true;

for q := max downto p do if data[q] < data[q-1] then begin

change (data[q], data[q-1]);

flaq:=false; end; inc(i); end; write(‘Descending :’); end; Procedure Output; Begin For i := 1 to max do Write(data[i],’’); Writeln;

Gambar

Gambar 1.1 : Lambang-lambang flowchart.
Gambar 1.2 : Flowchart konversi bil desimal ke biner.
Gambar 1.3 : Diagram konsep prosedural.
Tabel notasi algoritmik
+5

Referensi

Garis besar

Dokumen terkait

Semua data dibandingkan terhadap data pertama, jika data pertama lebih besar dari data kedua maka kedua data ditukar. Pada iterasi pertama data paling kecil ada di urutan

Jika data yang di awal tersebut ternyata lebih kecil, maka data tersebut akan ditukar dan proses pengecekkan dilakukan, namun tidak sampai data yang

Langkah awal yang harus dilakukan adalah proses input data calon peserta tugas akhir, hal ini dilakukan oleh mahasiswa yang telah mengambil kartu rencana studi tugas

Bila pada pengecekan ulang ternyata kekuatan struktur tidak dapat menahan kekuatan struktur, maka perkuatan struktur merupakan solusi paling awal yang dapat dilakukan

Dalam kasus ini, jika ternyata setelah dilakukan pengecekan isi gudang, jumlah majalah terbanyak adalah 2(dua) edisi sebelumnya dan dengan alasan untuk mengurangi

• Operasi relasional dapat dilakukan pada dua nilai dengan tipe data yang sama: tipe data integer, riil, char, string, maupun boolean.. Macam –

Belajar memprogram tidak sama dengan belajar bahasa Pemgraman Belajar memprogram adalah belajar tentang metodologi (tatacara) meme- cahkan masalah, kemudian menuangkannya

File Help USD/IDR AUD/IDR JPY/IDR EURO/IDR Exit Tanggal Awal Tanggal Akhir Tampil Grafik Tgl Nilai Tukar Tgl Prediksi Ubah Data Ubah Tambah Data Hapus Data Program