welcome to my blog :: AnGg4 wiranda STRUKTUR TEKS ALGORITMA ~ Perubahan TKJ

Rabu, 24 Desember 2014

Posted by Anggawiranda |

Pada dasarnya, algoritma disusun oleh tiga bagian (blok), yaitu :
1. Bagian judul (Header)
2. Bagian deklarasi (Declaration)
3. Bagian definisi (Definition)
1. Bagian Judul (Header)
Merupakan bagian yang terdiri dari nama algoritma dan penjelasan (spesifikasi)
tentang algoritma tersebut. Nama program sebaiknya singkat namun cukup
menggambarkan apa yang dilakukan oleh algoritma. Di bawah nama algoritma disertai
dengan penjelasan (spesifikasi) dari apa yang akan dilakukan oleh algoritma. Sebagai
contoh :
a. Algoritma Luas_Lingkaran
{Menghitung luas lingkaran berdasarkan nilai jari-jari lingkaran tertentu. Algoritma
menerima masukan jari-jari lingkaran, menghitung luas lingkaran, dan menampilkan
ke piranti keluaran}
b. Algoritma Fahreinheit_Celcius
{Menghitung nilai konversi dari derajat fahreinheit menjadi celcius. Algoritma
menerima masukan derajat fahreinheit dan menghitung nilai konversi menjadi
celcius}
2. Bagian Deklarasi (Declaration)
Merupakan bagian yang mendefinisikan segala nama yang akan digunakan oleh
algoritma serta propertinya (misalnya tipe). Nama tersebut dapat berupa nama konstanta,
nama variabel, nama function, nama procedure dan sebagainya. Sebagai contoh :
a. Pada algoritma Luas_Lingkaran, bagian deklarasinya adalah :
DEKLARASI :
r : real {jari-jari lingkaran}
L : real {luas lingkaran}
b. Pada algoritma Fahreinheit_Celcius, bagian deklarasinya adalah :
DEKLARASI :
F : real {derajat fahreinheit}
C : real {derajat celcius}
2
3. Bagian Definisi (Definition)
Merupakan bagian inti dari algoritma. Bagian ini berisi deskripsi langkah-langkah
penyelesaian masalah dalam bentuk pernyataan. Sebagai contoh :
a. Pada algoritma Luas_Lingkaran, bagian definisinya adalah :
DEFINISI :
Read (r)
L  3.14 * r * r
Write (L)
b. Pada algoritma Fahreinheit_Celcius, bagian definisinya adalah :
DEFINISI :
Read (F)
C  5 / 9 * (F - 32)
Secara keseluruhan, dua algoritma di atas, dapat ditulis seperti berikut.
Algoritma Luas_Lingkaran
{Menghitung luas lingkaran berdasarkan nilai jari-jari lingkaran tertentu. Algoritma menerima
masukan jari-jari lingkaran, menghitung luas lingkaran, dan menampilkan ke piranti
keluaran}
DEKLARASI :
r : real {jari-jari lingkaran}
L : real {luas lingkaran}
DEFINISI :
Read (r)
L  3.14 * r * r
Write (L)
End Algoritma
Algoritma Fahreinheit_Celcius
{Menghitung nilai konversi dari derajat fahreinheit menjadi celcius. Algoritma menerima
masukan derajat fahreinheit dan menghitung nilai konversi menjadi celcius}
DEKLARASI :
F : real {derajat fahreinheit}
C : real {derajat celcius}
DEFINISI :
Read (F)
C  5 / 9 * (F - 32)
End Algoritma
3
TIPE, NAMA, dan EKSPRESI
1. Tipe
Tipe sebuah objek menentukan himpunan nilai yang dapat dimilikinya dan operasi
yang dapat dilakukan pada objek tersebut. Nilai-nilai yang dicakup oleh objek tersebut
dinyatakan dengan ranah (domain). Terdapat dua jenis tipe data, yaitu :
a. Tipe dasar
Merupakan tipe data yang dapat langsung digunakan.
b. Tipe bentukan
Merupakan tipe data yang dibentuk dari tipe data dasar atau tipe bentukan lain yang
telah didefinisikan sebelumnya.
1.1 Tipe Dasar
Dalam dunia pemrograman, yang termasuk sebagai tipe dasar adalah bilangan lojik
(bilangan logika), bilangan bulat, bilangan riil, karakter dan string.
Bilangan Lojik
Nama tipe : boolean (diambil dari nama matematikawan Inggris, George
Boole)
Ranah nilai : true (benar) atau false (salah)
Konstanta : true dan false
Operasi : operasi logika (operasi boolean)
Operator : and, or, xor, not
A B A and B A or B A xor B not A not B
True True True True False False False
True False False True True False True
False True False True True True False
False False False False False True True
Bilangan Bulat
Nama tipe : integer
Ranah nilai : byte (0..255)
shortint (-128..127)
word (0..65535)
integer (- 2768..32767)
4
longint (-2147483648.. 2147483647)
Konstanta : ditulis tanpa mengandung titik desimal
Operasi : operasi aritmatika dan operasi perbandingan
Operator : operasi aritmatika  + (tambah), - (kurang), * (kali), div
(bagi), mod (sisa hasil bagi)
operasi perbandingan  <, , >, , =, 
Bilangan Riil
Nama tipe : real (floating-point)
Ranah nilai : minus tak hingga sampai plus tak hingga
Konstanta : ditulis dengan tanda titik desimal
Operasi : operasi aritmatika dan operasi perbandingan
Operator : operasi aritmatika  + (tambah), - (kurang), * (kali), / (bagi)
operasi perbandingan  <, , >, , 
Karakter
Nama tipe : char
Ranah nilai : semua huruf abjad, semua tanda baca, angka (0, .., 9),
karakter khusus seperti ‘&’, ‘%’, ‘#’, ‘@’, ‘ ’ dan sebagainya
Konstanta : diapit oleh tanda petik tunggal
Operasi : operasi perbandingan
Operator : operasi perbandingan  <, , >, , =, 
String (Untaian karakter dengan panjang tertentu)
Nama tipe : string
Ranah nilai : deretan karakter yang telah didefinisikan pada ranah
karakter
Konstanta : diapit oleh tanda petik tunggal
Operasi : operasi penyambungan (concatenation) dan operasi
perbandingan
Operator : operasi concatenation  +
operasi perbandingan  <, , >, , =, 
1.2 Tipe Bentukan
Merupakan tipe data yang didefinisikan sendiri oleh pemrogram (user-defined data
type). Yang termasuk tipe bentukan adalah tipe dasar yang diberi nama tipe baru dan tipe
terstruktur/record/ rekaman.
5
Tipe Dasar Yang Diberi Nama Tipe Baru
Pemberian nama baru untuk sebuah tipe dasar didahului dengan kata type. Ranah
nilai, konstanta, dan lain sebagainya tetap tidak berubah, sesuai dengan tipe dasar
aslinya. Sebagai contoh :
type BilanganBulat : integer
Tipe Terstruktur
Tipe yang berbentuk rekaman (record). Rekaman disusun oleh satu atau lebih field.
Setiap field menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lain yang
telah didefinisikan sebelumnya. Contoh mendefinisikan tipe terstruktur :
a. Titik dalam bidang kartesian dinyatakan sebagai (x, y). Maka, titik dapat
dinyatakan dengan sebagai tipe bentukan dengan x dan y sebagai fieldnya.
type Titik : record <x : real, y : real>
P : Titik
P adalah peubah bertipe Titik, sehingga untuk mengacu tiap field pada P
adalah : P.x atau P.y
b. Pendefinisian tanggal dalam kalendar Masehi menyebabkan hari akan
dinyatakan dalam tanggal (dd), bulan (mm), dan tahun (yy). Tipe bentukan
untuk tanggal adalah :
type Tanggal : record
< dd : integer, mm : integer, yy : integer>
D : Tanggal
D adalah peubah bertipe Tanggal. Untuk mengacu tiap field pada D adalah :
D.dd atau D.mm atau D.yy
2. Nama
Nama digunakan sebagai pengidentifikasi “sesuatu“ dan pemrogram mengacu
“sesuatu” itu melalui namanya. Adapun aturan penulisan nama dalam algoritma :
a. Nama harus dimulai dengan huruf alfabet.
b. Huruf besar atau huruf kecil tidak dibedakan.
c. Karakter penyusun nama hanya boleh huruf, angka, dan karakter ‘_’.
d. Tidak boleh mengandung operator aritmatika, operator relasional, karakter khusus,
dan tanda baca.
e. Karakter –karakter di dalam nama tidak boleh dipisah menggunakan spasi. Spasi
dapat diganti dengan karakter ‘_’.
f. Panjang nama tidak dibatasi.
Di dalam algoritma, objek yang diberi nama dapat berupa :
a. Peubah (variable)
b. Konstanta (constant)
6
c. Tipe bentukan
d. Nama fungsi atau procedure
3. Nilai
Nilai dapat berupa isi yang disimpan oleh nama peubah atau nama konstanta, nilai
dari hasil penghitungan, atau nilai yang dikirim oleh fungsi. Peubah menyimpan nilai dari tipe
tertentu. Nilai dapat dimasukkan ke dalam nama peubah melalui beberapa cara, yakni :
a. Pengisian secara langsung (assignment)
Yaitu pengisian nilai ke dalam nama peubah langsung di dalam algoritma. Syaratnya
tipe nilai yang dimasukkan harus sama dengan tipe peubahnya. Notasi pengisian
secara langsung adalah . Sebagai contoh :
S  10 {nilai berupa konstanta}
A  B {nilai dari peubah lain}
Nilai_akhir  (uts +uas ) / 2 {nilai dari ekspresi}
b. Pembacaan
Nilai peubah dapat diisi dari piranti masukan, misalnya dari keyboard. Dalam
algoritma pernyataan pembacaan menggunakan notasi read. Sebagai contoh :
read(nama_mahasiswa)
read(no_telepon)
4. Ekspresi
Cara penghitungan (komputasi) dalam algoritma yang menghasilkan sebuah nilai
disebut dengan ekspresi. Ekspresi terdiri dari operand dan operator. Operand adalah
elemen (nilai) yang dioperasikan dengan operator tertentu.
Terdapat 3 jenis ekspresi, yaitu :
a. Ekspresi numerik, ekspresi yang baik operand, operator dan hasilnya bertipe
numerik.
Contoh :
3 + 2, 12 div 4, dan sebagainya
b. Ekspresi relasional (ekspresi boolean), ekspresi yang operatornya terdiri dari
operator perbandingan dan logika. Hasil ekspresi ini merupakan bilangan logika (true
atau false).
Contoh :
not true, x < 10, dan sebagainya
c. Ekspresi string, ekspresi yang operatornya adalah “+” (operator penyambungan).
Contoh :
7
‘Teknik ’ + ‘Informatika’
5. Menuliskan Nilai Ke Piranti Keluaran
Untuk menuliskan nilai ke piranti keluaran digunakan pernyataan write. Sebagai
contoh :
write(nama_mahasiswa)
write(no_telepon)
RUNTUNAN
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 instruksi sebagaimana yang
tertulis di dalam teks algoritmanya
4. Akhir dari instruksi terakhir merupakan akhir algoritma
Urutan instruksi di dalam algoritma adalah penting. Urutan instruksi menunjukkan urutan logik
penyelesaian masalah. Bergantung pada masalahnya, urutan instruksi yang berbeda mungkin tidak ada
pengaruhnya tehadap solusi persoalan, tetapi mungkin juga menghasilkan keluaran yang berbeda pula.
Contoh kasus 1 : urutan instruksi tidak berpengaruh terhadap solusi persoalan.
Dibaca dua buah nilai integer dari piranti masukan, A dan B. hitung jumlah keduanya dan hasil kali
keduanya, lalu cetak jumlah dan hasil kali itu ke piranti keluaran.
Algoritma RUNTUNAN_1
{ contoh algorima yang menghasilkan keluaran yang sam jika
urutan instruksi diubah. }
DEKLARASI
A, B, C, D : integer
DESKRIPSI
read(A,B)
C←A+B
D←A*B
Write(C,D)
8
Hasil algoritma di atas sama saja jika urutan C←A+B dan D←A*B diubah sebagai berikut :
Contoh kasus 2 : urutan instruksi berpengaruh terhadap solusi persoalan.
Diketahui dua buah nilai integer, masing-masing disimpan di dalam dua peubah, A dan B. bagaimana
cara mempertukarkan nilai A dan B ? Misalnya, sebelum pertukaran nilai A=8, nilai B=5, maka setelah
pertukaran, nilai A=5 dan B=8.
Proses pertukaran nilai akan salah jika anda tidak benar menuliskan urutan instruksi, misalnya
runtunan
{ proses pertukaran }
temp←A { simpan nilai A di penampungan sementara, temp }
A←B { sekarang A dapat diisi dengan nilai B }
B←temp { isi B dengan nilai A semula yang tadi disimpan di temp }
Diubah urutannya sebagai berikut :
Algoritma RUNTUNAN_1
{ contoh algorima yang menghasilkan keluaran yang sam jika
urutan instruksi diubah. }
DEKLARASI
A, B, C, D : integer
DESKRIPSI
read(A,B)
D←A*B
C←A+B
Write(C,D)
Algoritma TUKAR_1
{ mempertukarkan nilai A dan B. Nilai A dan B dibaca dari piranti masukan.
Nilai A dan B dicetak ke piranti keluaran, baik sebelum pertukaran maupun
sesudah pertukaran. ALGORITMA YANG BENAR ! }
DEKLARASI
A : integer { nilai pertama }
B : integer { nilai kedua }
Temp : integer { peubah bantu }
DESKRIPSI
{ baca nilai A dan B }
Read(A,B)
{ cetak nilai A dan B sebelum pertukaran }
Write(A,B)
{ proses pertukaran }
temp←A { simpan nilai A di penampungan sementara, temp }
A←B { sekarang A dapat diisi dengan nilai B }
B←temp { isi B dengan nilai A semula yang tadi disimpan di temp }
{ cetak nilai A dan B setelah pertukaran }
Write(A,B)
9
{ proses pertukaran }
temp←A { simpan nilai A di penampungan sementara, temp }
B←temp { isi B dengan nilai A semula yang tadi disimpan di temp }
A←B { sekarang A dapat diisi dengan nilai B }
maka runtunan yang terakhir ini sama saja dengan runtunan :
B←A
A←B
Dibaca waktu tempuh seorang pelari marathon dalam jam-menit-detik (hh:mm:ss). Diminta
mengkonversi waktu tempuh tersebut ke dalam detik. Tuliskan algoritmanya.
Ingatlah
1 menit = 60 detik
1 jam = 3600 detik
Misalnya waktu tempuh seorang pelari marathon adalah 1 jam, 5 menit, 40 detik. Dalam detik, waktu
tempuh seluruhnya adalah ( 1 x 3600 ) + ( 5 x 60 ) + 40 = 3940 detik.
Jika anda mentranslasikan algoritma KONVERSI_JAM_KE_DETIK ke dalam bahasa pascal,
anda harus memperhatikan tipe bilangan bulat yang digunakan. Karena ranah nilai tipe
integer terbatas, maka ada kemungkinan hasil pengubahan jam-menit-detik ke total detik
bernilai negatif, sebab nilai (J.hh*3600) + (J.mm*60) + J.ss berada di luar rentang tipe integer.
Tipe longint yang mempunyai ranah yang lebih besar dapat dipakai untuk masalah ini.
Penyelesaian
Algoritma KONVERSI_JAM_KE_DETIK
{ dibaca jam-menit-detik (hh:mm:ss). Nilai jam-menit-detik
dikonversi ke dalam detik, lalu ditampilkan ke piranti
keluaran }
DEKLARASI
Type jam : record <hh : integer {0..23}, {jam}
mm : integer {0..59}, {menit}
ss : integer {0..59}, {detik}
>
J : jam
TotalDetik : integer
DESKRIPSI
read(J.hh,J.mm,J.ss))
TotalDetik ← (J.hh*3600) + (J.mm*60) + J.ss
write(TotalDetik)
10
Jadi, program KONVERSI_JAM_KE_DETIK dalam bahasa pascal adalah sebagai berikut :
program KONVERSI_JAM_KE_DETIK;
{ dibaca jam-menit-detik (hh:mm:ss). Nilai jam-menit-detik dikonversi
ke dalam detik, lalu ditampilkan ke piranti keluaran.}
uses wincrt;
(* DEKLARASI *)
type Jam = record
hh : longint; {jam}
mm : longint; {menit}
ss : longint; {detik}
end;
var
J : Jam;
TotalDetik : longint;
(* deskripsi *)
begin
write(‘Jam :’); readln(J.hh);
write(‘Menit:’); readln(J.mm);
write(‘Detik:’); readln(J.ss);
TotalDetik:= (J.hh*3600) + (J.mm*60) + J.ss;
writeln(‘Total detik = ‘, TotalDetik);
end.

0 komentar:

Posting Komentar