Bab 1 pengantar logika algoritma
·
1. Pengertian DasarLogika danAlgoritma
·
2.
Pengertian DasarLOGIKAPertama kali diperkenalkan oleh Aristoteles (384 –322
SM)Logika berasal dari kata Yunani kuno λόγος (logos)yang berarti hasil
pertimbangan akal pikiran yang diutarakan lewat kata dan dinyatakan dalam
bahasa.Sebagai ilmu, logika disebut dengan logike episteme(Latin: logica
scientia) atau ilmu logika (ilmupengetahuan) yang mempelajari kecakapan
untukberpikir secara lurus, tepat, dan teratur
·
3.
Pengertian Dasar ALGORITMAAlgoritma pertama kali diperkenalkan OlehAhli
Matematika : Abu Ja’far MuhammadIbnu Musa Al Khawarizmi.Seorang Ilmuwan Persia
yang menulis kitabAl jabr Muqabala (Rules of restoration andReduction) sekitar
tahun 825 M
·
4.
DefenisiDEFENISI LOGIKA : Penalaran atau bentuk pemikiran Ilmu yang
memberikan prinsip-prinsip yang harus diikuti agar dapat berpikir valid menurut
aturan yang berlaku.DEFENISI ALGORITMA : Langkah-langkah yang dilakukan agar
solusi masalah dapat diperoleh. Suatu prosedur yang merupakan urutan langkah-langkah
yang berintegrasi Suatu metode khusus yang digunakan untuk menyelesaikan
sebuah masalah (Webster Dictionary)
·
5. Tahap Penyelesaian Masalah
·
6. KRITERIA PEMILIHAN ALGORITMA1. Ada output:
mengacu pada definisi algoritma, suatu algoritma haruslah mempunyai output yang
harus merupakan solusi dari masalah yang sedang diselesaikan.2. Efektifitas dan
Efisiensi ikatakan efektif jika algoritma tersebut menghasilkan suatu solusi
yang sesuai dengan masalah yang diselesaikan dalam arti algoritma harus tepat guna.Dikatakan
efisiensi jika waktu proses suatu algoritma relatif lebih singkat dan
penggunaan memori komputernya lebih sedikit.3. Jumlah langkahnya berhingga :
maksudnya adalah barisan instruksi yang dibuat harus dalam suatu urutan
tertentu atau harus berhingga agar masalah yang dihadapi dapat diselesaikan
dengan tidak memerlukan waktu relatif lama.
·
7. KRITERIA Berakhir
à (Semi Algoritma) : proses didalam mencari penyelesaian suatu masalah harus
berhenti dan berakhir dengan hasil akhir yang merupakan solusinya atau berupa
informasi yang tidak diketemukan solusinya. Artinya baik dalam kondisi solusi
ada atau tidak ada, proses akan tetap harus berakhir dan berhenti. Istilah lain
dalam algoritma dikenal sebagai SEMI ALGORITMA, yaitu suatu prosedur yang hanya
akan berhenti jika mempunyai atau menghasilkan solusi, sedangkan jika tidak
menghasilkan solusi, maka prosedur tersebut akan berjalan tanpa henti.5.
Terstruktur : yaitu urutan barisan langkah-langkah yang digunakan harus disusun
sedemikian rupa agar proses penyelesaian tidak berbelit-belit sedemikian
sehingga bagian-bagian proses dapat dibedakan dengan jelas mana bagian input,
proses dan output sehingga memudahkan user melakukan pemeriksaan ulang.
·
8. KESIMPULAN KRITERIASuatu Algoritma yang
terbaik(The Best) : “Suatualgoritma harus menghasilkan output yan
tepatguna(efektif) dalam waktu yang relatif singkat &penggunaan memori yang
relatif sedikit(efisien)dengan langkah yang berhingga & prosedurnyaberakhir
baik dalam keadan diperoleh suatu solusiataupun tidak ada solusinya”
·
·
9. Dalam bidang komputer, algoritma sangat
diperlukan dalam menyelesaikan berbagai masalah pemrograman, terutama dalam
komputasi numeris. Tanpa algoritma yang dirancang baik maka proses pemrograman
akan menjadi salah, rusak, atau lambat dan tidak efisien. Algoritma Di
butuhkan untuk memerintah computer mengambil langkah-langkah tertentu untuk
menyelesaikan masalah Algoritma Pemrograman Program Agar algoritma dapat
memerintah (diproses) komputer, maka dirubah menjadi bentuk program (melalui
proses pemrograman).
·
10. Contoh:A. Algoritma untuk mengirimkan surat1.
Tulis surat pada secarik kertas surat2. Ambil sampul surat atau amplop3.
Masukkan surat ke dalam amplop4. Tutup amplop surat dengan lem perekat5. Tulis
alamat surat yang dituju, jika tidak diingat, lebih dahulu ambil buku alamat
& cari alamat yang dituju, lalu tulis alamat tersebut pada amplop surat6.
Tempelkan perangko pada amplop surat7. Bawa surat ke kantor pos untuk
diserahkan pada pegawai pos atau menuju ke bis surat untuk memasukkan surat ke
dalam kotak/bis surat .
·
11. B. Algoritma untuk menentukan bilangan akar
kuadrat dari suatu bilangan bulat positif yang diinput.1. Baca bilangan bulat
positif yang diinput, sebut saja sebagai A.2. Dinyatakan Nilai B adalah 03.
Jika Nilai C sama dengan Nilai A, maka Nilai B adalah Akar dari Nilai A, lalu
stop4. Jika tidak, maka nilai B akan bertambah 15. Kembali ke langkah pada No.3
·
12. Tahapan Analisa Algoritma1.Bagaimana
merencanakan suatu algoritma Dengan mendefinisikan masalah. Contoh : Permasalahan
menghitung luas lingkaran, dengan data yang diketahui adalah diameter
lingkaran. Rumus : ∏ . r2 dengan Phi = 3.14 atau 22/7.
·
13. Tahapan(2)2.Bagaimana menyatakan sebuah
algoritma1. Dengan bahasa semu (pseudocode) suatu cara penulisan algoritma agar
ide dan logika dari algoritma dapat disampaikan/diekspresikan menggunakan gaya
bahasa pemrograman pemrograman tertentu. Contoh : Untuk mengitung Luas
Segitiga: 1. Masukan Nilai Alas 2. Masukan Nilai Tinggi 3. Hitung Luas = (Alas
* Tinggi)/2 4. Cetak Luas
·
14. 2. Dengan diagram alur atau flowchart
·
15. 3. Dengan Statement Program/Penggalan Program
Contoh: Read Alas Read Tinggi Luas=(Alas*Tinggi)/2 Write(luas)
·
16. 3. Bagaimana validitas suatu algoritma Yakni
jika penyelesaian memenuhi solusi yang sebenarnya, artinya solusi yang didapat
merupakan penyelesaian suatu masalah dan bukannya membuat masalah baru.4.
Bagaimana menganalisa suatu algoritma Caranya melihat running time atau waktu
tempuh yang digunakan dalam menyelesaikan masalah serta jumlah memori yang digunakan
dalam penyelesaian masalah tersebut.5. Bagaimana menguji program dari suatu
algoritma
·
17. Tahap Proses Uji Algoritmaa. Fase Debugging
yaitu fase dari suatu proses program eksekusi yang akan melakukan koreksi
terhadap kesalahan program. Yang dimaksud disni adalah error atau salah dalam
penulisan program baik logika maupun sintaksnya.b. Fase Profilling yaitu fase
yang akan bekerja jika program tersebut sudah benar atau telah melalui proses
pada fase debugging. Fase ini bekerja untuk melihat dan mengukur waktu tempuh
atau running time yang diperlukan serta jumlah memori/storage yang digunakan
dalam menyelesaikan suatu algoritma.
·
18. Analisis Suatu Algoritma(Untuk melihat faktor
efisiensi & efektifitas darialgoritma tersebut), dapat dilakukan terhadapsuatu
algoritma dengan melihat pada:- Waktu tempuh (Running Time) dari suatu
algoritma: adalah satuan waktu yang ditempuh atau diperlukan oleh suatu
algoritma dalam menyelesaikan suatu masalah. Hal-hal yang dapat mempengaruhi
daripada waktu tempuh adalah: banyaknya langkah, besar dan jenis input data,
jenis operasi, komputer dan kompilator.
·
19. Jumlah Memori Yang digunakan banyaknya langkah
yang digunakan dan jenis variabel data yang dipakai dalam suatu algoritma akan
sangat mempengaruhi penggunaan memori. Dalm hal ini, diharapkan dapat
memperkirakan seberapa banyak kebutuhan memori yang diperlukan selama proses
berlangsung hingga proses selesai dikerjakan. Dengan demikian, dapat disiapkan
storage yang memadai agar proses suatu algoritma berjalan tanpa ada hambatan
atau kekurangan memori.
·
20. Sifat-sifat Algoritma1. Banyak langkah instruksi
harus berhingga (finite)2. Langkah atau instruksi harus jelas.(definite)3.
Proses harus jelas dan mempunyai batasan.4. Input dan output harus mempunyai
batasan.5. Efektifitas6. Adanya ruang lingkup
·
21. LatihanGunakan bahasa sehari-hari/pseudocode :1.
Buat algoritma untuk mengirim email kepada teman dengan asumsi sudah mempunyai
alamat email.2. Buat algoritma untuk meminjam buku di perpustakaan3. Buat
algoritma untuk membeli buku di sebuah toko buku
BAB 2
PENGERTIAN DASAR LOGIKA DAN ALGORITMA
PENGERTIAN DASAR LOGIKA DAN ALGORITMA
PENGERTIAN DASAR
LOGIKA
Diperkenalkan pertama kali oleh Aristoteles (384-322 SM)
ALGORITMA
Diperkenalkan Oleh Ahli Matematika : Abu Ja’far Muhammad Ibnu Musa Al
Khawarizmi. Seorang ilmuan Persia yang menulis kitab al jabr w’al muqabala
(rules of restoration and reduction) sekitar tahun 825 M
Definisi Logika
1. penalaran atau bentuk pemikiran.
2. ilmu yang memberikan prinsip-prinsip yang harus diikuti agar dapat berfikir
valid menurut aturan yang berlaku.
Definisi Algoritma
1. Langkah – langkah yang dilakukan agar solusi masalah dapat diperoleh.
2. Suatu prosedur yang merupakan urutan langkah-langkah yg berintegrasi.
3. Suatu m etode khusus yang digunakan untuk menyelesaikan suatu masalah yang
nyata.(Webster Dictionary)
TAHAP PENYELESAIAN MASALAH
Kriteria Pemilihan Algoritma.
1. Ada Output,
2. Efektifitas dan Efesiensi,
3. Jumlah Langkahnya Berhingga,
4. Berakhir, ( SEMI ALGORITMA )
5. Terstruktur,
Suatu Algoritma yg terbaik (The Best)
: “ Suatu algoritma harus menghasilkan output yg tepat guna (efektif) dlm waktu
yg relatif singkat & penggunaan memori yg relatif sedikit (efesien) dgn
langkah yg berhingga & prosedurnya berakhir baik dlm keadaan dip’oleh suatu
solusi ataupun tdk ada solusinya. “
Contoh :
Sebuah prosedur ketika akan mengirim kan surat kepada teman:
1. Tulis surat pada secarik kertas surat
2. Ambil sampul surat atau amplop
3. Masukkan surat ke dalam amplop
4. Tutup amplop surat dengan lem perekat
5. Tulis alamat surat yg dituju, jika tdk ingat, lebih dahulu ambil buku alamat
& cari alamat yg dituju, lalu tulis alamat tsb pd amplop surat.
6. Tempelkan perangko pada am plop surat
7. Bawa surat ke kantor pos utk diserahkan pd pegawai pos atau menuju ke bis
surat untuk memasukkan surat ke dlm kotak/bis surat.
Sebuah prosedur untuk masalah
menentukan akar kuadrat dari suatu bilangan Bulat Positif yg di Input :
Baca bilangan Bulat Positif yg diinput, sebut saja sebagai A
1. Dinyatakan Nilai B adalah 0
2. Hitung Nilai C yg berisikan Nilai B dikalikan Nilai B
3. Jika Nilai C sama dengan Nilai A, maka Nilai B adalah Akar dari Nilai A,
lalu stop.
4. Jika tidak, maka Nilai B akan bertambah 1
5. Kembali ke langkah pada No. 3
TAHAPAN ANALISA ALGORITMA
1. Bagaimana merencanakan suatu algoritma.
2. Bagaimana menyatakan suatu algoritma
a. Dengan bahasa semu (pseudocode).
Contoh :
Untuk menghitung Luas Segi tiga :
1. Masukan Nilai Alas
2. Masukan Nilai Tinggi
3. Hitung Luas =( Alas * Tinggi ) / 2
4. Cetak Luas
b. Dengan diagram alur atau
flowchart,
Contoh :
c. Dengan Statement program /
penggalan
Program
Contoh (menggunakan C++):
cin >> Alas ; //untuk input data
cin >> Tinggi;
Luas = (Alas * Tinggi)/2 ; // proses
cout << Luas; //untuk output data
3. Bagaimana validitas suatu
algoritma.
4. Bagaimana Menganalisa suatu Algoritma.
5. Bagaimana Menguji Program dari suatu Algoritma.
Tahap Proses uji Algoritma :
a. Fase Debugging
yaitu fase dari proses program eksekusi yang akan melakukan koreksi terhadap
kesalahan.
b. Fase Profilling
yaitu fase yang akan bekerja jika program tersebut sudah benar (telah melewati
fase debugging).
Analisis Suatu Algoritma
(Untuk melihat faktor efesiensi & efektifitas dari algoritma tersebut),
Dapat dilakukan terhadap suatu algoritma dengan melihat pada :
a. Waktu Tempuh (Running Time) dr
suatu Algortima.
Hal-hal yg dpt m empengaruhi drpd waktu tempuh adalah :
1. Banyaknya langkah.
2. Besar dan jenis input data.
3. Jenis Operasi.
4. Komputer dan kompilator
b. Jumlah Memori Yang Digunakan.
Sifat – Sifat Algoritma
• Banyaknya Langkah Instruksi Harus
Berhingga,
• Langkah atau Instruksi harus Jelas,
• Proses harus Jelas dan mempunyai batasan,
• Input dan Output harus mempunyai Batasan,
• Efektifitas,
• Adanya Batasan Ruang Lingkup,
BAB 4
Pada umumnya, program
komputer memanipulasi objek (data) didalam memori. Peubah (variabel) dan
konstanta (constant) adalah objek data dasar yang dimanipulasi didalam program.
Deklarasi daftar peubah digunakan untuk menyatakan tipe peubah . Operator mengspesifikasikan
operasi apa yang dapat dilakukan terhadap peubah dan konstanta. Ekspresi
mengkombinasikan peubah-peubah dan konstanta untuk menghasilkan nilai baru. Tipe data dapat dikelompokkan menjadi dua
macam :
1. Tipe Dasar
Tipe dasar adalah tipe
yang dapat langsung dipakai. Yang termasuk tipe dasar adalah bilangan lojik,
bilangan bulat, karakter, bilangan riil, dan string. Untuk bilangan lojik dan
bilangan bulat disebut juga tipe ordinal karena setiap konstanta nilainya dapat
ditransformasikan ke suatu nilai integer.
Bilangan Lojik
• Nama tipe bilangan ini adalah boolean
• Ranah nilai boolean adalah true dan false
• Operator yang digunakan not, and, or, dan xor
Contoh :
A B A not B A and B A or
B A xor B
True True False True True False
True False True False True True
False True True False True True
False False True True False False
Bilangan Bulat
• Nama tipe Integer
• Ranah Nilai. Secara teoritis bilangan bulat tidak mempunyai batasan untuk
nilai. Tetapi pada dunia pemograman, ranah nilai bilangan bulat mempunyai
batasan. Hal tersebut dimaksudkan untuk penghematan alokasi memori. Berikut
rentang nilai pada Pascal dan C
Pascal Rentang Nilai C
Byte 0 … 255 Unsigned Char
Shortint -128 … 127 Signed Char
Word 0 … 65535 Unsigned int
Integer -32768 … 32767 Int, shortint
Longint -2147483648 … 2147483647 Longint
Setiap bilangan bulat mempunyai keturunan, atau dengan kata lain sebuah
bilangan bulat mempunyai nilai sembarangan (predecessor) dan nilai sesudahnya
(succesor). Misalnya : Nilai 8 memiliki predecessor 7 dan successor 9.
• Konstanta untuk bilangan bulat tidak boleh mengandung titik desimal
• Operasi :
1. Operasi Aritmatika, yaitu
+ (tambah)
- (kurang)
* (kali)
div (bagi) (dengan hasil bilangan bulat tanpa titik desimal)
mod (sisa hasil bagi)
ket : Objek yang di operasikan disebut operand. Misalnya : a + b artinya a dan
b merupakan operand sedangkan + adalah operator
2. Operasi perbandingan. Hasil operasi perbandingan akan menghasilkan nilai
boolean (true dan false)
< (lebih kecil)
≤ (lebih kecil atau sama dengan)
> (lebih besar)
≥ (lebih besar atau sama dengan)
= (Sama dengan)
≠ (Tidak sama dengan)
Bilangan Riil
Bilangan riil adalah bilangan yang mengandung pecahan desimal, misalnya 3.65,
0.0003, 29.0, 2.60240000E-6, .24 , dll. Semua konstanta bilangan riil harus
mengandung titik (desimal). Misalnya “18” dianggap sebagai bilangan bulat,
tetapi “18.0” dianggap sebagai bilangan riil. Untuk bilangan riil yang ditulis
dengan notasi E berarti perpangkatan sepuluh. Contoh : 2.60240000E-6 artinya
2.60240000×10-6.
• Nama tipe bilangan riil adalah real.
• Ranah nilai bilangan riil sama dengan bilangan bulat, tetapi penerapan pada
bahasa pemograman berbeda. Untuk bahasa PASCAL, penerapannya :
Tipe Rentang Nilai Format
real 2.9×10-39 … 1.7 x 1038 6 Byte
Single 1.5 x 10-45 …. 3.4 x 1038 4 Byte
Double 5.0 x 10-324 … 1.7 x 10308 8 Byte
Extended 3.4 x 10-4932 … 1.1 x 104932 10 Byte
Sementara, dalam bahasa C, hanya ada 2 tipe untuk bilanganriil yaitu float dan
double. Float adalah bilangan riil berpresisi tunggal (single-precision),
Double adalah bilangan riil berpresisi ganda (double-precision). Sementara
untuk long double mengspesifikasikan tipe bilangan riil yang
berpresisi-extended
• Operasi pada bilangan riil ada 2 macam, yaitu :
1. Operasi Aritmetika
+ (tambah)
- (kurang)
* (kali)
/ (bagi)
Ket : Jika dilakukan operasi campuran dengan salah satunya operandnya bertipe
bilangan riil sedangkan operandnya yang lain bilangan bulat, maka otomatis
operand yang bilangan bulat akan otomatis di konversi ke bilangan riil.
2. Operasi Perbandingan
< (lebih kecil)
≤ (lebih kecil atau sama dengan)
> (lebih besar)
≥ (lebih besar atau sama dengan)
≠ (Tidak sama dengan)
Ket : Pada bilangan riil tidak dikenal operasi sama dengan “=”. Karena bilangan
riil tidak dapat disajikan secara tepat oleh komputer. Misalnya 1/3 tidak sama
dengan 0.33333, sebab 1/3 = 0.3333333…. (dengan angka 3 yang tidak pernah
berhenti)
Karakter
Yang termasuk karakter adalah semua huruf-huruf abjad, semua tanda baca, angka
‘0’, ‘1’, … , ‘9’. Dan karakter-karakter khusus seperti ‘&’, ‘^’, ‘%’, ‘#’,
‘@’, dll. Karakter kosong (null) adalah karakter yang panjangnya nol dan
dilambangkan ‘ ‘.
• Nama tipe untuk karakter adalah char
• Ranah nilai untuk karakter adalah semua huruf di dalam alfabet (‘a’, … ‘z’,
‘A’ … ‘Z’) angka desimal (0 … 9), tanda baca (‘.’, ‘:’, ‘!’, ‘?’, ‘,’, dll),
operator aritmetik (‘+’, ‘-‘, ‘*’, ‘/’), dan karakter-karakter khusus seperti
(‘$’, ‘#’, ‘@’, ‘^’, ‘~’, dll). Daftar karakter baku yang lengkap dapat dilihat
di dalam buku-buku yang memuat tabel ASCII.
• Konstanta karakter harus diapit oleh tanda petik tunggal. Ket: ingatlah bahwa
‘9’ adalah karakter, tetapi 9 adalah integer.
• Untuk operasi yang dilakukan hanya operasi perbandingan yaitu :
= (sama dengan)
≠ (tidak sama dengan)
> (lebih besar)
≥ (lebih besar atau sama dengan)
< (lebih kecil)
≤ (lebih kecil atau sama dengan)
Ket. Tipe karakter juga mempunyai keterurutan (successor dan predecessor) yang
ditentukan oleh cara pengkodeannya didalam komputer, misalnya pengkodean ASCII.
Operasi perbandingan menghasilkan nilai boolean.
String
String adalah untaian karakter dengan panjang tertentu.
• Nama tipe string adalah string
• Ranah nilai tipe string adalah deretan karakter yang telah didefenisikan pada
ranah karakter.
• Konstanta pada tipe string harus diapit oleh dua buah tanda petik tunggal.
Contoh :
‘Makassar’
‘boby’
‘Abc1234’
‘*…*…#008*’
‘B’
Untuk string kosong (null) dilambangkan dengan ‘ ’.
• Operasi pada tipe string didefinisikan 2 macam :
a. Operasi Penyambungan (concatenation)
Operasi “+”. Operator ini bukanlah operator penjumlahan seperti pada tipe
real/integer tetapi operator penyambungan. Contoh :
‘Boby’ + ‘Hermez’ = ‘Boby Hermez’
b. Operator perbandingan
Sama halnya tipe karakter akan menghasilkan nilai boolean.
=, ≠, <, ≤, >, ≥
2. Tipe Bentukan
Tipe bentukan adalah tipe
yang didefenisikan sendiri oleh pemogram (user defined type data). Tipe
bentukan di susun oleh satu atau lebih tipe dasar. Ada 2 macam tipe bentukan :
1. Tipe dasar yang diberi dengan nama tipe baru
2. Tipe terstruktur
Tipe dasar yang diberi
nama tipe baru (user defined type data). Penamaan tipe baru disebabkan oleh
kemungkinan untuk memudahkan interpretasi dan pembacaan program oleh pemogram.
Kita dapat memberi nama baru untuk tipe dasar tersebut dengan kata kunci type.
Untuk Nilai, Ranah nilai, konstanta, dan operasi-operasi tipe tersebut tidak
berubah dan sesuai dengan tipe dasar aslinya, misalnya : type bilangan bulat /
integer.
Ket. Bilangan sama saya dengan tipe integer. Jadi, misalkan variabel i bertipe
bilangan bulat, sama saja jika i bertipe integer.
Contoh :
DEKLARASI
i = integer
Sama Saja
DEKLARASI
Type bilangan_bulat : integer
i = bilangan_bulat
Tipe Terstruktur.
Tipe terstruktur adalah
tipe yang berbentuk rekaman (record). Rekaman (record) disusun oleh satu atau
lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau dari tipe
bentukan lain yang sudah didefinisikan sebelumnya. Nama rekaman ditentukan
sendiri oleh pemogram.
Contoh :
a. Mendefenisikan titik (type)
Titik dalam koordinat kartesian dinyatakan sebagai (x,y).
Penulisannya :
type titik : record < x:real, y:real>; atau
type titik : record < x,y : real>
Jika pendeklarasian P adalah variabel yang bertipe titik makan pendeklarasian
tiap field pada P adalah :
P.x
P.y
b. Mendefinisikan tipe tanggal
dd.mm.yy
Penulisannya:
tipe tanggal : record
< dd : integer, mm : integer, yy : integer >
Jika D adalah variabel bertipe tanggal, maka cara pendeklarasiannya adalah :
D.dd
D.mm
D.yy
c. Mendefinisikan tipe jadwal kereta api
Penulisan tipe Jadwal kereta Api:
type Jadwal_KA : record < NoKA : string, KotaAsal : string, JamBerangkat :
Jam, KotaTujuan : string, JamTiba : Jam >
Jika JKA adalah peubah bertipe Jadwal_KA, maka cara mendeklarasikan tiap-tiap
field adalah :
JKA.NoKA
JKA.KotaAsal
JKA.JamBerangkat
JKA.JamBerangkat.hh
JKA.JamBerangkat.mm
JKA.JamBerangkat.ss
JKA.KotaTujuan
JKA.JamTiba.hh
JKA.JamTiba.mm
JKA.JamTiba.ss
Nama
Nama dalam algoritma dipakai sebagai pengidentifikasi “sesuatu” dan pemrogram
mengacu “sesuatu” itu melalui namanya. Untuk menjaga ketaatasasan, maka
algoritma didalam buku ini memiliki aturan penulisan nama sebagai berikut :
1. Nama harus dimulai dengan huruf alfabet, tidak boleh dengan angka, spasi
atau karakter khusus lainnya
2. Huruf besar atau huruf kecil tidak dibedakan (kecuali bahasa C)
3. Karakter penyusunan nama hanya boleh huruf alfabet, angka, dan “_”.
Underscore (“_”) dihitung sebagai sebuah huruf
4. Nama tidak boleh mengandung operator aritmetika, operator relasional, tanda
baca, dan karakter khusus lainnya.
5. Karakter dalam nama tidak boleh dipisahkan dengan spasi.
6. Panjang nama tidak dibatasi
Nama sebaiknya interpretatif, yaitu mencerminkan
nilai intrisik atau fungsi yang dikandungnya.
Contoh penamaan : titik6 atau titik_6, Nilai_Ujian atau NilaiUjian, PT1 atau
PT_1, Hari, A1. Didalam algoritma, objek yang diberi nama dapat berupa :
1. Peubah (variabel) adalah tempat penyimpanan data/informasi di memory yang
isinya dapat diubah.
2. Konstanta (Constant) : adalah tempat penyimpanan didalam memory yang isinya
tetap selama pelaksanaan program dan tidak dapat diubah nilainya
3. Tipe bentukan, seperti yang telah dijelaskan, berupa tipe yang dibentuk oleh
pemogram.
4. Nama Fungsi
5. Nama Prosedur
Contoh Pengidentifikasian
lewat nama :
ALGORITMA
{Nama konstanta}
const phi = 3.14
const Nmaks = 100
const sandi = ‘xyz’
{Nama tipe}
type MHS : record
< NIM :integer,
Nama: string,
Usia : string,
>
type Titik : record
type Kompleks : record
type Jam : record < hh : integer,
mm : integer,
ss : integer
>
type JadwalKA : record < NoKA : string,
KotaAsal : string,
JamBerangkat : Jam,
KotaTujuan : string,
JamTiba : Jam
>
{Nama peubah}
LuasL : real {Luas Lingkaran}
PSW : string {Password}
Indeks : char {Indeks nilai kuliah}
Ketemu : boolean {hasil pencarian, true jika ditemukan, false jika tidak}
P : Titik {Koordinat titik pusat lingkaran}
F : Kompleks {Frekuensi, hasil transformasi Fourier}
JKA : JadwalKA {Jadwal Kereta Api}
{Nama fungsi dan
prosedur}
PROCEDURE
HitungTitikTengah (Input P1: Titik, Input P2:Titik, Output Pt:Titik)
{ Menghitung titik tengah garis dengan titik ujung P1 dan P2 }
Function Faktorial (Input
n : integer) –> integer
{Mengembalikan nilai faktorial dari n > 0}
Function Cari (Input
x:integer) –> boolean
{true bila x ditemukan, false bila sebaliknya}
PROCEDURE CetakJadwalKA
(Input kota : string)
{Mencetak jadwal semua kereta api yang berangkat dari kota tertentu}
Translasi ke Notasi
Bahasa Pemograman
PASCAL :
(*DEKLARASI*)
{Nama Konstanta}
Const phi = 3.14;
Nmaks = 100;
Sandi = ‘xyz’;
{Nama Tipe}
type
MHS = record
NIM : integer;
nama : string;
usia : integer;
end;
Titik = record
x : real;
y : real;
end;
Kompleks = record
a : real;
b : real;
end;
Jam = record
hh : integer;
mm : integer;
ss : integer;
end;
JadwalKA = record
NoKA : string[5];
KotaAsal : string[15];
JamBerangkat : Jam;
KotaTujuan : string;
JamTiba : Jam;
end;
{Nama peubah / Variabel}
var
LuasL : real; {Luas Lingkaran}
PSW :string; {Password}
indeks : char; {Indeks nilai ujian}
ketemu : boolean; {Hasil pencarian, true jika ditemukan, false jika tidak}
P : Titik; {Koordinat titik pusat lingkaran}
F : Kompleks; {Frekuensi, hasil transformasi Fourier}
JKA : JadwalKA; {Jadwal kereta Api Ekspress}
{Nama Fungsi dan
Procedure}
Procedure
HitungTitikTengah (P1 : Titik, P2 : Titik, Var Pt : Titik);
{Menghitung titik tengah garis dengan titik ujung P1 dan P2}
Function Faktorial (n :
integer) : integer;
{ Mengembalikan nilai faktorial dari n > 0}
Function Cari (x :
integer) : boolean;
{ true bila X ditemukan, false jika tidak}
Procedure CetakJadwalKA
(kota : string[15]);
{Mencetak jadwal semua kereta api yang berangkat dari kota tertentu}
Bahasa C :
/* DEKLARASI */
/* Nama Konstanta */
const float phi = 3.14;
const int N = 100;
const char sandi[] = “xyz”;
/* Nama Tipe */
typedef struct { int NIM;
char nama[25];
int usia;
} MHS;
typedef struct {float X;
float y;} Titik;
typedef struct {float a; float b;} Kompleks;
typedef struct {int hh; int mm; int ss;} Jam;
typedef struct { char NoKA[5];
char KotaAsal[15];
Jam JamBerangkat;
Char KotaTujuan[15];
Jam JamTiba; } JadwalKA;
typedef enum {false = 0, true = 1} boolean; /*Tipe bentukan untuk boolean
dikhususkan untuk C*/
/* Nama Peubah */
float LuasL;
char psw[255];
char indeks;
boolean ketemu;
Titik P;
Kompleks F;
JadwalKA JKA;
/* Nama Fungsi dan
Prosedur*/
void HitungTitikTengah
(Titik P1, Titik P2, Titik *P);
int Faktorial (int n);
boolean Cari (int x);
void CetakJadwalKA(char
kota[15]);
Nilai
Nilai adalah besaran dari
tipe data yang sudah didefinisikan (tipe dasar dan tipe bentukan). Nilai dapat
berupa isi yang disimpan oleh nama peubah atau nama konstanta, nilai dari hasil
perhitungan, atau nilai yang dikirim oleh fungsi. Nilai dapat dimanipulasi
dengan cara mengisikannya ke peubah lain yang bertipe sama, dipakai untuk
perhitungan atau dituliskan kepiranti keluaran.
Pengisian nilai kedalam peubah dilakukan dengan 2 cara, yaitu :
1. Pengisian nilai secara langsung
Pengisian nilai secara langsung adalah memasukkan sebuah nilai ke dalam nama
peubah langsung di dalam teks algoritma dengan syarat nilai yang diisikan harus
bertipe sama dengan dengan tipe peubah.
Akibat dari pengisian ini, nilai peubah akan hilang dan tergantikan dengan
nilai yang baru dimasukkan.
Contoh 1 (Pengisian Nilai secara langsung) :
DEKLARASI
k : integer
jarak : real
ketemu : boolean
NamaKota : string
type Jam : record
< hh : integer
mm : integer
ss : integer
>
J : Jam
{Contoh pengisian dengan
nilai-nilai konstanta }
ALGORITMA
k <– 5
jarak <– 0.03
ketemu <– false
NamaKota <– ‘SOLO’
{ Mengisi J dengan Jam 6 : 12 : 29 }
J <– <6, 12, 39>
{Atau dengan cara yang lebih rinci :
J.hh <– 6
J.mm <– 12
J.ss <– 39
}
Contoh 2 (Pengisian nilai
dari peubah yang lain)
DEKLARASI
B, awal, suhu1, suhu2, ulang : integer
ALGORITMA
B <– awal
suhu1 <– suhu2
ulang <– mulai
Contoh 3 (Pengisian dari
nilai ekspresi). Ket. Hasil ekspresi harus bertipe sama dengan tipe peubah di
ruas kiri.
DEKLARASI
P, Q, R, nisbah, Jumlah, banyak, i, j, k : integer
a, b, c, determinan : real
h : boolean
ALGORITMA
c <– a + b
nisbah <– jumlah/banyak * 5
determinan <– 6 * 6 – 4 * a * c
k <– (i + j) div 2
h <– (i > 1) and (i < 100)
Contoh 4 (Menaikkan Nilai
sebesar 1)
DEKLARASI
A : integer
ALGORITMA
A = A+1
Contoh 5 {Hasil M = 132,
P = 164}
DEKLARASI
M, P : integer
ALGORITMA
M <– 16
P <– M * 2
M <– P + 100
P <– P + M
2. Pengisian Nilai Lewat
Pembacaan
Pengisian nilai lewat pembacaan adalah pengisian nilai dari piranti masukkan.
Dalam algoritma, pernyataan pembacaan adalah dengan menggunakan notasi “read”.
Contoh 1 (Membaca nilai untuk peubah)
DEKLARASI
M, a1, a2, a3 : real
nama_kota : string
NRP : integer
type titik : record
P : titik
ALGORITMA
read(M)
read(a1, a2, a3)
read(nama_kota)
read(nama_mhs, NRP, nilai)
read(P.x, P.y)
Ekspresi
Ekspresi adalah
transformasi nilai menjadi keluaran yang dilakukan melalui suatu perhitungan
(komputasi). Ekspresi terdiri atas operand dan operator, contoh ekspresi: “a +
b”. Untuk pebuah a dan b dinamakan operand, sedangkan “+” merupakan operator.
Dalam algoritma pemograman terdapat 3 macam ekspresi :
1. Ekspresi Aritmetik
Ekspresi Aritmetik adalah ekspresi yang baik operandnya bertipe numerik dan
hasilnya juga bertipe numerik.
Contoh 1.
DEKLARASI
a, b, c : real
i, j, k : integer
ALGORITMA
a * b = c
i + j = k
Keterangan. Operator yang mempunyai tingkatan lebih tinggi lebih dahulu
dikerjakan daripada operator yang tingkatannya lebih rendah. Contoh : a/c + b.
Yang pertama dikerjakan adalah a/c, kemudian hasilnya ditambahkan dengan b.
Tingkatan operator
aritmetika (dari tertinggi ke terendah) :
(i). /, div, mod
(ii) *
(iii) +, -
Pada ekspresi aritmetik
terdapat 2 buah operator yaitu :
- Operator biner, yaitu ekspresi yang operatornya membutuhkan 2 buah operand.
Contoh a + b
- Operator Uner, yaitu “-” atau operator yang punya 1 operand contoh “-2”
Contoh 2. (Penulisan
ekspresi dengan notasi algoritma)
T = 5/9 * (c + 32)
Z = (2*x + y) / (5 * w)
Y = 5((a+b) / (c*d) + m (p + q))
2. Ekspresi Relasional
Ekspresi relasional adalah ekspresi dengan operator <, ≤, >, ≥, =, dan ≠,
not, and, or dan xor dengan menghasilkan nilai bertipe boolean (true atau false).
Biasanya ekspresi Relasional disebut ekspresi boolean.
Contoh
DEKLARASI
const ketemu = false
const ada = true
const X = 8
const Y = 12
ALGORITMA
not ada = false
ada or ketemu = true
ada and true = true
X < 5 = false
ada or (X = Y) = true
3. Ekspresi String
Ekspresi String adalah ekspresi dengan operator “+” (operator penyambungan /
concatenation).
Contoh
DEKLARASI
Kar : char
S : string
{ Contoh-contoh ekspresi untuk tipe string}
(S + Kar) + ‘ C ’
‘Jl.Ganesha’ + ‘No.10’
Menuliskan Nilai ke
Piranti Keluaran
Nilai yang disimpan
dimemori dapat ditampilkan ke piranti keluaran (output) dengan instruksi
penulisan menggunakan notasi “write”.
write (var1, var2, var3, …, varN)
write (konstanta)
write (ekspresi)
write (nama, konstanta, ekspresi)
Contoh:
DEKLARASI
A,B : integer
NRP : integer
nama_mhs : string
nilai : real
type Jam : record < hh : integer, mm : intege, ss : integer >
J : Jam
ALGORITMA
A <– 8
B <– 6
nama_mhs <– “Andi Baco”
NRP <– 10290056
nilai <– 90.8
J.hh <– 6
J.mm <– 12
J.ss <– 45write (100)
write (A)
write (‘A’)
write (‘Jurusan Teknik Informatika ITB’)
write (‘Nilai A = ’, A)
write (nama_mhs, NRP, nilai)
write (A+B)
write (‘Nilai seluruhnya adalah’, A + B / 2 * 10)
write (J.hh, ‘:’, J.mm, ‘:’, J.ss)
Hasil dari Algoritma
diatas :
100
8
A
Jurusan Teknik Informatika ITB
Nilai A = 8
Andi Baco, 10290056, 90.8
14
Nilai seluruhnya adalah 70
6 : 12 : 45
Berikut adalah
contoh-contoh Algoritma dengan menggunakan teknik pseude-code kemudian
ditranslasi ke bahasa pemograman Pascal dan C.
ALGORITMIK:
DEKLARASI
type Titik : record
P : Titik
a,b : integer
nama_arsip, h : string
nilai : real
c : char
ALGORITMA
nilai <– 1200.0
read (P.x, P.y)
read (nama_arsip)
h <– nama_arsip
read (a, b)
read (c)
write (‘Nama Arsip : ’, nama_arsip)
write (‘Koordinat titik adalah :’, P.x, ‘,’, P.y)
write (b, nilai)
write (‘Karakter yang dibaca adalah ’, C )
PASCAL
(*DEKLARASI*)
type Titik = record
x : real;
y : real;
var
P : Titik;
a, b : integer;
nama_arsip, h : string[12];
nilai : real;
c : char;
(*ALGORITMA*)
begin
nilai := 1200.0;
readln(P.x, P.y);
readln(nama_arsip);
h := nama_arsip;
readln(a, b);
readln(c);
writeln(‘Nama Arsip : ‘, nama_arsip);
writeln(‘Koordinat titik adalah :’, P.x, ‘,’, P.y);
writeln(b, nilai);
writeln(‘Karakter yang dibaca adalah ’, C);
end.
C:
/*DEKLARASI*/
typedef struct { float x;
float y; } Titik;
Titik P;
int a, b;
char nama_arsip[12], h[12];
float nilai;
char c;
/*ALGORITMA*/
main()
{
nilai = 1200.0;
scanf(“%d %d”, &P.x, &P.y);
scanf(“%s”, nama_arsip);
strcpy(h, nama_arsip);
scanf(“%d %d”, &a, &b);
scanf(“%c”, &c);
scanf(“Nama Arsip : %s \n”, nama_arsip);
printf(“Koordinat titik adalah %d, %c, %d \n”, P.x, P.y);
printf(“%d %f \n”, b, nilai);
printf(“Karakter yang dibaca adalah %c \n, C”);
}
Aturan Penulisan
Algoritma
Aturan Penulisan Algoritma
Teks algoritma berisi deskripsi langkah-langkah penyelesaian
masalah. Deskripsi tersebut dapat ditulis dalam notasi apa pun, asalkan mudah
dibaca dan mengerti. Tidak ada notasi yang baku dalam penulisan teks algoritma
sebagaimana pada notasi bahasa pemrograman.
Tiap orang dapat membuat aturan penulisan dan notasi algoritma
sendiri. Hal ini dapat dimengerti karena teks algoritma tidak sama dengan teks
program. Program adalah implementasi algoritma dalam notasi bahasa pemrograman
tertentu. Namun, agar notasi algoritma mudah ditranslasi ke dalam notasi bahasa
pemrograman, maka sebaiknya notasi algoritma tersebut berkoresponden dengan
notasi bahasa pemrograman secara umum. Sebagai contoh, perintah:
tulis nilai X dan Y
dalam notasi algoritma menjadi:
write(X, Y)
Notasi write ini berarti nilai X dicetak ke peranti keluaran.
Tidak penting apakah X dan Y ditulis ke layar atau ke printer atau ke piranti
keluaran yang lain.
Selain itu, di dalam algoritma tidak mempersoalkan format tampilan
keluaran, misalnya apakah hasil penulisan antara X dan Y dipisah dengan spasi
atau dengan koma, juga apakah X dan Y dicetak di dalam baris yang sama atau
tidak, dan lain-lain.
Selain itu, di dalam algoritma tidak mempersoalkan format tampilan
keluaran, misalnya apakah hasil penulisan antara X dan Y dipisah dengan spasi
atau dengan koma, juga apakah X dan Y dicetak di dalam baris yang sama atau
tidak, dan lain-lain.
Hal-hal teknis baru dipikirkan pada saat translasi algoritma menjadi
program. Dengan demikian, notasi algoritma benar-benar abstraksi dari notasi
bahasa pemrograman.
Notasi “write” di dalam algoritma berkoresponden dengan write atau
writeln dalam bahasa Pascal, printf dalam bahasa C, WRITE dalam bahasa Basic,
atau write dalam bahasa Fortran. Selain itu, pada beberapa bahasa pemrograman
seperti Pascal dan C, antara setiap instruksi dipisahkan dengan tanda “;”
(semicolon). Jadi, translasi write(X) ke
dalam masing-masing bahasa tersebut adalah dengan anggapan piranti keluarannya
adalah layar.
write(X, Y); {
dalam bahasa PASCAL }
printf(“%d %d”, X,Y); /* dalam bahasa C */
WRITE X, Y ‘ dalam bahasa BASIC
Perhatikanlah bahwa setiap bahasa mempunyai aturan sendiri dalam
menggunakan perintah penulisan. Bahasa C misalnya mengharuskan penulisan
penentu format seperti “%d” yang berarti nilai X dan Y yang akan dicetak
bertipe bilangan bulat. Selain itu, setiap instruksi pada bahasa Pascal dan C
ditutup dengan tanda titik koma (;).
Contoh lainnya, perintah
Isikan nilai X ke dalam min
ditulis dalam notasi algoritma menjadi
min ß X
Notasi “ß” berarti mengisi (assign)
peubah (variabel) min dengan nilai
peubah X. Translasi notasi “ß” ke dalam bahasa Pascal adalah “:=“, dalam bahasa
C adalah “=“, dalam bahasa Basic adalah “=“.
Jadi, translasi minßX ke dalam masing-masing bahasa tersebut adalah:
min:=X; { dalam
bahasa PASCAL }
min=X; /* dalam bahasa C */
min=X ‘ dalam bahasa BASIC
Pada dasarnya teks algoritma selalu disusun oleh tiga bagian (blok):
bagian judul (header) algoritma,
bagian deklarasi, dan bagian deskripsi algoritma. Setiap bagian disertai dengan
komentar untuk memperjelas maksud teks yang dituliskan. Komentar adalah kalimat
yang diapit oleh pasangan tanda kurung kurawal (‘{’ dan ‘}’).
Judul Algoritma
Merupakan bagian yang terdiri atas nama algoritma dan penjelasan
(spesifikasi) tentang algoritma tersebut. Nama algoritma sebaiknya singkat
namun cukup menggambarkan apa yang dilakukan oleh algoritma tersebut. Di bawah
nama algoritma disertai dengan penjelasan singkat (intisari) tentang apa yang
dilakukan oleh algoritma. Penjelasan dibawah nama algoritma sering dinamakan
juga spesifikasi algoritma. Algoritma harus ditulis sesuai dengan spesifikasi
yang didefinisikan.
Contoh judul algoritma misalnya
Algoritma menghitung luas
Lingkaran
{Menghitung luas lingkaran
untuk ukuran jari-jari tertentu. Algoritma menerima masukan jari-jari
lingkaran, menghitung luasnya, lalu mencetak luas lingkaran ke piranti lunak}
Catatan:
Dalam menuliskan nama
algoritma dalam huruf besar dan menggunakan tanda “_” (underscore) untuk
memisahkan antar kata. Huruf besar dan tanda “_” bukan keharusan. Sebaiknya
tidak menggunakan spasi (“ “) untuk memisahkan antar kata di dalam nama
algoritma. Ini ada manfaatnya, terutama untuk judul program dalam bahasa
Pascal.
Merupakan bagian untuk mendefinisikan semua nama yang dipakai di
dalam algoritma. Nama tersebut dapat berupa nama tetapan, nama peubah, nama
tipe, nama prosedur, dan nama fungsi.
Contoh pendefinisian nama variabel di dalam bagian deklarasi :
DEKLARASI :
Alas, Tinggi, Luas
: real
DESKRIPSI :
Read (Alas, Tinggi, Luas)
Luas ß (Alas * Tinggi)
Write (Luas)
Merupakan bagian inti dari suatu algoritma. Bagian ini berisi urutan
langkah-langkah penyelesaian masalah. Setiap langkah algoritma dibaca dari
“atas” ke “bawah”. Urutan penulisan menentukan urutan pelaksanaan perintah.
Contoh deskripsi algoritma :
DESKRIPSI :
Read (c,d)
If c < d then
e ß a*b
else
e ß a-b
endif
write (e)
Translasi Teks Algoritma
ke dalam Teks Program
Teks algoritma adalah hasil pemikiran konseptual. Agar dapat
dilaksanakan oleh komputer, algoritma harus ditranslasi ke dalam notasi bahasa
pemrograman.
Beberapa hal penting yang perlu diketahui dalam menterjemahkan ke
dalam bahasa pemrograman:
·
Beberapa bahasa pemrograman case sensitive
·
Aturan penulisan variabel yang
berbeda
·
Penulisan komentar yang berbeda
·
dan sebagainya…..
BAB
5
RUNTUNAN (SEQUENCE)
Sebuah runtunan terdiri dari satu atau lebih instruksi. Tiap instruksi
dikerjakan secara berurutan sesuai dengan urutan penulisannya, yakni sebuah
instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan.
Urutan instruksi menentukan keadaan akhir algoritma. Bila urutannya diubah,
maka hasil akhir mungkin juga berubah.
menjelaskan Struktur Runtunan. Seperti apa sih struktur runtunan dalam
algoritma itu ?
Pengertian Struktur Runtunan
1. Struktur algoritma yang paling sederhana dan
mendasar.
2. Instruksi diproses secara sekuensial
(berkelanjutan).
Ciri - ciri Runtunan
1. Tiap baris instruksi dikerjakan satu persatu.
2. Tidak ada pengulangan untuk setiap baris
instruksi.
3. Urutan instruksi yang dijalankan sama dengan
urutan instruksi di algoritma.
4. Akhir instruksi merupakan akhir algoritma.
Contoh 1 : Buatlah flowchart untuk mengonversi dari suhu Fahrenheit ke
Celcius.
Contoh 2 : buatlah algoritma untuk menukarkan isi dua buah variabel.
Untuk menukarkan isi dua buah variabel,diperlukan sebuah variabel yang
digunakan untuk membantu penukaran data. Algoritma yang diperlukan:
·
Masukkan (a,b)
·
c a
·
a b
·
b c
·
Tampilkan (a,b)
Menggambarkan proses penukaran berdasarkan algoritma di atas.
Setelah proses b c dijalankan, isi a dan b sudah tertukar.
Contoh 3:
Kasus Gaji Karyawan
Suatu perusahaan mempunyai n orang karyawan dengan asumsi
penggajian sebagai berikut:
1. Gaji setiap karyawan akan sama jumlahnya.
2. Gaji karyawan dihitung dengan cara gaji pokok ditambah
tunjangan
dikurangi pajak.
3. Pajak yang berlaku di perusahaan tersebut adalah 10% dari
gaji
pokok sebelum ditambah tunjangan.
4. Tunjangan yang didapat dari perusahaan adalah 20%.
5. Gaji pokok bisa berubah tergantung kebijakan perusahaan.
Hitung gaji yang gaji yang harus dikeluarkan untuk seluruh
karyawan,
detail pajak perorang, dan detail tunjangan perorang.
Penyelesaiannya :
Algoritma Kasus Gaji Karyawan
Algoritma Gaji_Karyawan
{I.S: Jumlah karyawan dan Gaji pokok
diinput oleh user}
{F.S: Menampilkan gaji, pajak, dan tunjangan karyawan}
Deklarasi:
gaji_pokok,gaji,jml_gaji:real
pajak:real
tunjangan:real
jml_karyawan:integer
Algoritma:
input(jml_karyawan,gaji_pokok)
pajak <- 0.1*gaji_pokok
tunjangan <- 0.2*gaji_pokok
gaji <- gaji_pokok+tunjangan-pajak
jml_gaji <- gaji*jml_karyawan
output(‘Pajak perorang= Rp. ‘,pajak)
output(‘Tunjangan perorang= Rp. ‘,tunjangan)
output(‘Gaji‘,jml_karyawan,’ orang karyawan= Rp. ‘,jml_gaji)
Program Kasus Gaji Karyawan
program Gaji_Karyawan;
uses crt;
var
gaji_pokok,gaji,jml_gaji:real;
pajak:real;
tunjangan:real;
jml_karyawan:integer;
begin
write('Masukan jumlah karyawan: ');
readln(jml_karyawan);
write('Masukan gaji pokok : ');readln(gaji_pokok);
pajak:=0.1*gaji_pokok;
tunjangan:=0.2*gaji_pokok;
gaji:=gaji_pokok+tunjangan-pajak;
jml_gaji:=gaji*jml_karyawan;
clrscr();{bisa diganti writeln()}
writeln('Pajak perorang = Rp. ',pajak:0:2);
writeln('Tunjangan perorang = Rp. ',tunjangan:0:2);
writeln('Gaji ',jml_karyawan,' orang = Rp. '
,jml_gaji:0:2);
writeln();
write('Tekan sembarang tombol untuk menutup...');
readkey();
end.