Suatu sistem komputer dapat bekerja sebab ketiga komponen
ini bekerjasama sehingga hardware bisa di akses dengan
brainware memakai software terutama dengan memakai
sistem operasi.
Dengan memakai beberapa aplikasi software, maka
brainware pun dapat meningkatkan produktivitasnya.
Komputer
Sistem operasi
Bhs. pemrograman
Program aplikasi
pemakai
Contoh :
•BASIC
•PASCAL
•FORTRAN
•COBOL
•C/C++/C#
•PROLOG
•ASSEMBLER
•DSB
Catatan :
1. Hardware
2. Software
3. brainware
sebab algoritma berfokus pada software, maka akan dibahas
Lebih detail mengenai software (program).
Program yaitu kumpulan instruksi atau perintah yang disusun
Sedemikian rupa, sehingga memiliki urutan nalar yang tepat
Untuk menyelesaikan suatu persoalan.
Instruksi (statement) yaitu syntax atau cara penulisan yang
sesuai dengan bahasa pemrograman yang digunakan dimana
memiliki komponen input, proses, output.
PENGERTIAN ALGORITMA
Algoritma yaitu urutan langkah yang logis untuk
menyelesaikan masalah tertentu.
Penekanan dalam algoritma yaitu urutan langkah yang logis,
yang berarti algoritma harus mengikuti suatu urutan tertentu,
tidak boleh melompat-lompat.
Secara definisi, algoritma yaitu alur pemikiran logis yang
dapat dituangkan kedalam banyak tulisan.
Yang ditekankan pertama yaitu alur pikiran, sehingga algoritma
seseorang dapat berbeda dengan algoritma orang lain.
Sedangkan penekanan kedua yaitu tertulis, yang berarti dapat
berupa kalimat, gambar, atau tabel tertentu.
Algoritma berasal dari nama Abu Ja’far Mohammed Ibn Musa al-
Khwarizmi, ilmuan persia yang menulis kitab Al Jabr W’al-
muqabala, sekitar tahun 825 M, yang berasal dari Iran.
PROSES PEMBUATAN SOFTWARE APLIKASI
REQUIRMENT DESIGN
IMPLEMENTATION TESTING
SIKLUS HIDUP SOFTWARE
1. Requirment, yaitu tahap mencari tahu kebutuhan
klien/user, bisa dilakukan dengan wawancara, bertemu
secara langsung atau dengan melihat program yang sudah
ada.
2. Design, yaitu tahap membuat prototype/bentuk program
interface (tampilan program) yang bakal dibuat namun
belum fungsional.
3. Implementasi, yaitu tahap dimana programmer melakukan
pengkode-an program secara nyata hingga semua
fungsionalitasnya terpenuhi dan benar.
4. Testing, yaitu tahap program sudah jadi. Program dites
apakah semua fungsionalitasnya benar-benar sesuai dengan
reqiurment yang sudah ditetapkan sebelumnya.
Sebenarnya masih ada satu tahapan lagi, yaitu tahap maintenance.
Tahap maintenance yaitu, tahap dimana setelah program valid maka
harus dipelihara, dapat di update, di back-up, atau mungkin
ditingkatkan versinya, dan lain-lain sampai jangka waktu tertentu.
KRITERIA ALGORITMA
Algoritma yang baik memiliki kriteria sebagai berikut :
1. Input
dari sisi input, minimal program harus memiliki nol input atau
lebih dari pengguna. Program pasti memiliki input. Yang
dimaksud dengan memiliki nol input yaitu program tidak
mendapatkan masukan data dari pengguna secara langsung,
namun semua data yang akan digunakan oleh program sudah
dideklarasikan didalam kode program yang akan dieksekusi. Jadi
tidak perlu di input dari luar.
2. Output
dari sisi output, minimal program harus memiliki 1 output.
Program pasti menghasilkan output sebab program dibuat
untuk tujuan tertentu. Tujuan itulah outputnya. Output program
bisa ditampilkan ke layar (screen), ditulis ke file, atau disimpan di
clipboard untuk kemudian dipakai program lain atau disimpan
dalam basis data.
3. Finite (terbatas)
Program harus pasti dan berhenti, bukan tak terhingga. Suatu
program yang dieksekusi haruslah berhenti dan selesai, bukan
berjalan terus-menerus hingga hang up atau not responding, dan
akhirnya harus di kill (dimatikan) secara paksa.
4. Definite (pasti)
Program harus jelas arah dan tujuannya. Suatu program harus
jelas kapan mulai dan kapan harus berakhir, apa tujuannya, dan
memiliki logika yang jelas agar dapat menghasilkan output yang
sesuai dengan yang diharapkan.
5. Efesien
Artinya program harus efesien, tidak memakan banyak
memori, tidak melakukan hal-hal yang tidak perlu. Suatu
operasi/kegiatan yang tidak perlu, misalnya yaitu
mengapa operasi ini tidak efesien, sebab setiap
operasi pasti membutuhkan waktu eksekusi, padahal operasi
ini jelas tidak berguna, sebab berapapun bilangan
yang ditambah dengan nol pasti bilangan itu sendiri dan
bialngan apapun jika dikalikan nol, hasilnya yaitu nol. Oleh
sebab itu program ini tidak efesien.
x= 5+0 atau y= 100*0.
BENTUK – BENTUK DASAR ALGORITMA
Algoritma secara umum memiliki beberapa bentuk dasar, yaitu:
1. Algoritma sequensial
Algoritma sequensial banyak dijumpai pada kehidupan sehari-
hari, misalnya pada kasus “mengirim surat”. Pada kasus
ini terdapat langkah-langkah yang harus dilakukan, yaitu:
a. Membeli amplop
b. Membeli perangko
c. Memasang perangko ke amplop
d. Menuliskan alamat pengirim dan alamat tujuan
e. Pergi ke kantor pos atau memasukkan ke dalam bis surat
f. Surat terkirim
Pada contoh diatas dapat dilihat bahwa langkah harus
dilakukan secara runut dan ada yang tidak boleh dibolak-balik
urutannya.
Pada prinsipnya algoritma sekuensial yaitu alur pemikiran yang
terstruktur, terurut, pasti, dan jelas untuk menyelesaikan masalah.
Dalam algoritma ini kadang ada langkah-langkah yang tidak boleh
ditukar urutannya.
2. Algoritma Percabangan
Algoritma untuk memilih salah satu dari beberapa pilihan
yang ada disebut algoritma percabangan/pemilihan.
Yang perlu diperhatikan dalam algoritma ini yaitu solusi
pilihan akan dilakukan jika kondisinya terpenuhi, dalam arti
kondisinya menghasilkan nilai benar (TRUE).
Jika kondisi benar maka solusi akan dijalankan, dan jika
salah maka tidak akan dijalankan (tidak menutup
kemungkinan akan menjalankan solusi lain atau tidak sama
sekali).
3. Algoritma Perulangan
Algoritma perulangan berarti terdapat satu atau lebih
kejadian/tindakan yang harus diulang terus-menerus sampai
kondisinya terpenuhi.
Dari ketiga algoritma ini , bisa terjadi kombinasi antara
algoritma sequential, algoritma percabangan dan algoritma
perulangan.
FLOWCHART DAN PSEUDOCODE
Pengertian Flowchart
Algoritma merupakan suatu alur pemikiran seseorang yang
harus dituangkan secara tertulis. Salah satu nya yaitu dengan
memakai simbol-simbol/gambar-gambar yang memang
sudah standar pada dunia komputer. Gambar/simbol ini
disebut dengan flowchart.
Dengan memakai flowchart/diagram alir maka progammer
dapat memberikan idenya secara tertulis sehingga dapat
dipahami oleh programmer lain, oleh klien atau oleh tim
kerjanya.
MENGAPA FLOWCHART ITU PENTING ?
1. Pada kerja tim, banyak programmer terlibat.
Akibatnya, jika tim ini merupakan tim yang mengerjakan
beberapa bagian dari suatu proyek besar, maka flowchart
sangat penting digunakan untuk mengungkapkan algoritma
salah satu tim, untuk dapat dipahami dan dikerjakan oleh tim
lain.
2. Pada saat seorang programmer selesai mengerjakan suatu
program, langkah selanjutnya yaitu memberikan program
ini kepada kliennya. Untuk menjelaskan alur pemikiran
dan cara kerja program, programmer dapat memakai
flowchart.
Flowchart berguna untuk dua keperluan :
1. Sebelum program selesai dibuat
2. Setelah program selesai dibuat
1. Sebelum program selesai dibuat
pada tahap ini flowchart digunakan untuk menuangkan
ide/pemikiran programmer kedalam bentuk gambar yang
sudah standar secara internasional.
keuntungan dari penggunaan flowchart sebelum program
selesai dibuat yaitu :
a. Programmer tidak lupa akan idenya dalam perencanaan
program
b. Desain algoritma yang dibuat dapat di sampaikan kepada
klien, sehingga jika ada penambahan atau pengurangan dari
pihak klien, programmer tidak akan merasa kesulitan.
2. Setelah program selesai dibuat
flowchart yang dibuat setelah program selesai dibuat, akan
membantu programmer untuk menjelaskan alur kepada klien.
Dan flowchart merupakan dokumentasi alur program secara
tidak langsung.
PENGGUNAAN FLOWCHART
Flowchart merupakan alur pemikiran yang dituangkan kedalam
bentuk gambar/simbol. Oleh sebab itu kita perlu mempelajari
terlebih dahulu bentuk-bentuk gambar/simbol standar beserta
kegunaannya.
Start mulai
selesai
Aliran data
Proses/kejadian
Finish
x = y + z
sekuensial
P1
P2
percabangan X < 2
perulangan
syarat
Bagian yang di ulang
pencacah
Masukkan data input
output Tampilkan data
Pemberian nilai
awal/inisialisasi
X = 1
Memanggil suatu
fungsi / prosedur
Nyalakan
mesin
Konektor di halaman
yang sama
A
Konektor di halaman
yang berbeda
B
Start
Masukkan p
Masukkan l
Luas = p*l
Tulis L
finish
Contoh flowchart
Flowchart pada contoh, digunakan untuk menghitung luas
persegi panjang, dimana input dari pengguna berjumlah 2
buah, yaitu panjang yang dilambangkan dengan p dan lebar
yang dilambangkan dengan l, dan kemudian dihitung luasnya
dengan memakai rumus Luas = p*l, dan yang terakhir, hasil
luasnya ditampilkan dilayar.
PEDOMAN PEMBUATAN FLOWCHART :
1. Flowchart sebaiknya digambar dari atas ke
bawah dan dimulai dari bagian kiri suatu
halaman.
2. Kegiatan didalam flowchart harus ditunjukkan
dengan jelas.
3. Harus ditunjukkan dari mana kegiatan dimulai
dan dimana akan berakhir.
4. Masing-masing kegiatan didalam flowchart
sebaiknya memakai suatu kata yang
mewakili suatu pekerjaan.
5. Masing-masing kegiatan didalam flowchart
harus didalam urutan yang tepat.
6. Kegiatan yang terpotong dan akan
disambungkan ke tempat lain harus
ditunjukkan dengan jelas memakai
simbol penghubung yang benar.
7. Gunakan simbol-simbol alir yang benar.
Contoh flowchart
Start
Jam pulang kantor
Cuaca cerah?
Jam < 5 sore ?
Jalan utama
macet?
Jalur alternatif B Jalur utama Jalur alternatif A
Sampai di rumah finish
yes
no
no
yes
yes
no
PENGERTIAN PSEUDOCODE
Pseudocode berasal dari kata pseudo dan code, yang artinya yaitu
kode semu, atau menyerupai kode program yang sebenarnya. Jadi
pseudocede bukanlah program sebenarnya.
Psedocode berbeda dengan flowchart. Jika flowchart memakai
simbol-simbol berbentuk gambar untuk menjelaskan alur logika berfikir,
maka pseudocode memakai bahasa (biasanya bahasa inggris,
seperti “print” untuk mencetak).
Tabel perbedaan antara algoritma, flowchart, pseudocode
Algoritma Flowchart Pseudocode
memakai bahasa tingkat
tinggi (biasanya bahasa inggris)
memakai simbol berbentuk
gambar
memakai bahasa tingkat
tinggi yang menyerupai kode
program
tidak standar standar belum standar
mudah dibaca mudah di mengerti mudah dibaca
tidak dapat langsung dibuat
programnya
tidak dapat langsung dibuat
programnya
bisa dibuat langsung
programnya
masih berupa ide berupa rancangan sudah hampir berupa
implementasi
Perbedaan notasi algoritma dengan pseudocode
algoritma pseudocode
nilai A ditambah dengan 5 A <--- A+5
cetak nilai A bila lebih besar dari 10 IF > 10 THEN PRINT A
dari dua bilangan A dan B, cari bilangan yang
terbesar
IF A > THEN PRINT A ELSE PRINT B
Penggunaan dan Notasi Pseudocode
langkah algoritma pseudocode
1 masukkan bilangan pertama input a
2 masukkan bilangan kedua input b
3 jika bilangan pertama > bilangan kedua maka
kerjakan langkah 4. jika tidak, kerjakan
langkah 5
IF a > b THEN DO step 4, ELSE step 5
4 tampilkan bilangan pertama print a
5 tampilkan bilangan kedua print b
pseudocode juga memakai notasi tertentu yang bersifat
umum. Namun tidak semua notasi dalam pseudocode bersifat
universal sebab belum terstandarisasi. Ada beberapa contoh yang
bisa di ikuti :
simbol Bahasa Inggris Penjelasan Soal Bahasa Pemrograman
a <-- b gets pemberian nilai dari a ke b =
a ˅ b and operator logika antara a and b &&
a ˄ b or operator logika antara a or b II
⌐a not negasi dari a !
a = b is equal to apakah a equal dengan b ==
a ≠ b is not equal to apakah a tidak equal dengan b ! =
a < b is less than apakah kurang dari b <
a ≤ b is less than or equal
to
apakah a kurang dari sama dengan b <=
a > b is greater than apakah a lebih besar dari b >
a ≥ b is greater than or
equal to
apakah a lebih besar dari sama dengan b >=
a ≈ b approximately a hampir sama dengan b N/A
┌a┐ ceiling mengambil nilai integer terbesar dari
pembulatan ke atas
ceil()
└a┘ floor mengambil nilai integer terkecil dari
pembulatan ke bawah
floor()
a ϵ A element of a yaitu anggota himpunan A tidak ada
Beberapa kata yang sering digunakan pada pseudocode untuk
berbagai algoritma yaitu sebagai berikut :
1. Perintah sekuensial
Perintah sekuensial dilakukan tahap demi tahap, tidak boleh
melompat-lompat. Beberapa kata kunci pada perintah
sekuensial yaitu :
a. Input : READ, OBTAIN, GET
b. Output : PRINT, DISPLAY, SHOW
c. Perhitungan : COMPUTE, CALCULATE, DETERMINE
d. Inisialisasi : SET, INIT
e. Penambahan dengan 1 : INCREMENT, BUMP
2. Perintah percabangan
Perintah percabangan memakai keyword IF dan perintah
dijalankan jika dan hanya jika kondisi terpenuhi alias bernilai
TRUE. Jika tidak TRUE maka bagian perintah ELSE yang
dikerjakan. Jadi pasti dipilih salah satu, tidak mungkin kedua-
duanya. Bentuk umumnya yaitu sebagai berikut :
IF condition THEN
<sequence 1>
ELSE
<sequence 2>
ENDIF
Contoh :
IF jam kerja > jam normal maximal THEN
DISPLAY overtime message
ELSE
DISPLAY regular time message
ENDIF
3. Perintah perulangan WHILE
Perintah perulangan akan mengulang satu atau beberapa
perintah sekaligus selama masih dalam kondisi benar (TRUE).
Jika kondisi sudah FALSE maka perintah tidak lagi diulang dan
dilanjutkan ke perintah di bawah perulangan. Perulangan
dapat memakai WHILE atau FOR. Bentuk umumnya
yaitu sebagai berikut :
WHILE condition
<sequence>
ENDWHILE
Contoh :
WHILE population < limit
compute population as Population + Births – Deaths
ENDWHILE
4. Perintah perulangan FOR
Perintah perulangan FOR sama dengan perulangan WHILE.
Selama kondisi terpenuhi, perintah akan dijalankan. Perintah
FOR memiliki karakteristik khusus, yaitu programmer dapat
mengetahui batas perulangan yang akan dilakukan. Berikut
yaitu bentuk umum perintah FOR :
FOR iteration bounds
<sequence>
ENDFOR
Contoh :
FOR each month of the year
FOR each employee in the list
5. Perintah percabangan CASE
Perintah CASE mirip dengan IF, namun perintah CASE tidak
bisa menangani lebih dari satu kondisi, seperti misalnya jika
X>1 dan X !=0. Jadi CASE yaitu percabangan yang
dipermudah. Bagian OTHERS merupakan bagian default, jika
semua kondisi tidak ada yang terpenuhi. Jika didalam IF , maka
OTHERS sama dengan ELSE yang terakhir, bukan ELSE IF
<condition> THEN. Berikut yaitu bentuk umum CASE :
CASE expression OF
condition 1 : <sequence 1>
condition 2 : <sequence 2>
...
condition n : <sequence n>
OTHERS :
Default <sequence>
ENDCASE
Contoh :
CASE Title OF
Mr : PRINT “Mister”
Miss : PRINT “Miss”
Ms : PRINT “Mizz”
Dr : PRINT “Doctor”
ENDCASE
Contoh lain :
CASE grade OF
A : points = 4
B : points = 3
C : points = 2
D : points = 1
E : points = 0
ENDCASE
6. Perintah REPEAT-UNTIL
Perintah REPEAT-UNTIL merupakan perintah perulangan yang
memiliki ciri khas. Perintah ini minimal dilakukan satu kali
perulangan, baru kemudian diperiksa kondisinya apakah mash
TRUE atau tidak. Jika kondisinya TRUE maka perintah
perulangan akan dilanjutkan sampai FALSE. Berikut yaitu
bentuk umumnya :
REPEAT
<sequence>
UNTIL condition
Contoh :
REPEAT
x = x + 1
PRINT x
UNTIL x > 10
7. Perintah NESTED CONSTRUCT
Perintah ini merupakan perulangan bertingkat, dimana
didalam perulangan terdapat perulangan lagi. Berikut ini
contohnya :
SET total to zero
REPEAT
READ Temperature
IF Temperature > Freezing THEN
INCREMENT total
END IF
UNTIL Temperature < zero
PRINT total
PEMOGRAMAN memakai DEV C++
Contoh program sederhana :
1. Pada baris pertama terdapat #include <stdio.h>. Bagian ini
disebut dengan Preprocessor Directive, yang artinya bagian
yang digunakan untuk mengikut-sertakan berkas-berkas file
header/library yang berisi fungsi-fungsi yang ada pada
program yang akan dibuat pada baris-baris bawahnya. File
yang diikutsertakan bernama stdio.h yang terletak di suatu
direktori pada instalasi DecC++.
2. Pada baris selanjutnya terdapat int main(). Ini merupakan
judul fungsi utama program yang bernama fungsi main() yang
mengembalikan nilai berupa integer (bilangan bulat negatif
ataupun positif). Fungsi main() yaitu fungsi yang wajib ada
disetiap kode program yang ditulis memakai bahasa C.
Tanda { merupakan tanda awal program.
3. Pada baris berikutnya terdapat printf("Mari Kita Belajar
Pemograman Bahasa C"). Hal ini merupakan perintah untuk
menampilkan output dilayar monitor berupa tulisan “Mari
Kita Belajar Pemograman Bahasa C” (tanpa tanda kutip).
Perintah untuk menampilkan tulisan kelayar disebut dengan
fungsi printf() yang menerima masukan berupa kalimat yang
ingin ditampilkan. Tanda titik koma harus selalu dituliskan
untuk memberi tanda akhir dari suatu barisn perintah.
4. Pada baris berikutnya terdapat getch();, digunakan untuk
menghentikan layar tampilan sejenak sampai pengguna
menekan tombol yang ada pada keyboard. Jadi fungsinya
yaitu menunggu penekanan tombol tertentu dan kemudian
program akan mati (terminated).
5. Baris terakhir berisi } yang berarti akhir dari program
Tampilan dari program
Contoh program C yang lain :
#include <stdio.h>
#include <conio.h>
int main ()
{
int a,b,c;
printf ("masukkan nilai pertama :"); scanf ("%d", &a);
printf ("masukkan nilai kedua :"); scanf ("%d", &b);
c = a+b;
printf ("%d+%d=%d\n", a,b,c);
return 0;
}
Pada program di atas, algoritma yang digunakan yaitu algoritma
sekuensial. Kode program ini hanya meminta pengguna untuk
memasukkan dua buah bilangan, yang kemudian ditampung
didalam suatu tempat penyimpanan bernama a dan b yang
bertipe bilangan bulat integer. Kedua bilangan kemudian
dijumlahkan dan hasilnya ditampilkan kelayar monitor. Beberapa
fungsi yang muncul pada kode program diatas yaitu :
1. Printf(), digunakan untuk menampilkan tulisan kelayar.
2. Scanf(), digunakan untuk menerima input ke suatu tempat
penyimpanan di memori komputer.
3. Return, digunakan untuk mengembalikan status program ke
sistem operasi.
Disaat membuat program kita pasti berhubungan dengan
statement (ungkapan). Program sebenarnya yaitu kumpulan
statement yang dijalankan secara sekuensial. Berikut yaitu
beberapa contoh statement :
Instruksi/Statement Tindakan
A=b*c menghitung
printf("Nama Dosen"); menampilkan literal string
scanf ("%f", &Celcius); menerima input data
if(N<0) printf("negatif"); mengendalikan proses
Statement memiliki jenis yang berbeda-beda, yaitu :
1. Statement kosong
statement kosong sering disebut dengan empty statement
atau null statement. Statement jenis ini hanya terdiri atas
pengakhiran titik koma (;) saja dan tanpa perintah apapun
didalamnya. Contoh: memberi jarak waktu/delay pada
program sehingga antara perintah yang satu dengan yang lain
terdapat jeda beberapa milidetik. Contoh program :
For (J=0; J<50000; J++);
2. Statement ungkapan
statement jenis ini sering disebut expression statement.
Statement ini dibentuk dari suatu ungkapan dan diakhiri
dengaan titik koma (;). Contoh programnya :
Scanf (“%f”, &Panjang);
Scanf (“%f”, & Lebar);
Luas = Panjang * Lebar;
X=Y;
Y++;
3. Statement kendali
Statement jenis ini sering disebut dengan control statement.
Statement ini digunakan untuk mengendalikan proses dari
program. Misalnya :
a. Untuk menyeleksi kondisi (percabangan) : if, case, dan
switch.
b. Lompatan (perulangan) : for, while, do-while, goto, break
dan continue.
Contoh Program :
If (N<0) printf (“Nilai N negatif”);
4. Statement jamak
Statement jenis ini sering disebut compound statement atau
block statement. Statement ini terdiri atas beberapa
statement tunggal yang ditulis pada posisi diantara tanda
kurung kurawal ( “{“ dan “}” ). Contoh programnya :
{
scanf (“%f”, & Panjang);
scanf (“%f”, & Lebar);
Luas = Panjang * Lebar;
printf (“%f”, Luas);
IDENTIFIER, KEYWORDS DAN TIPE DATA
Didalam bahasa C, tempat penyimpanan nilai-nilai
didalammemori komputer disebut identifier. Identifier sendiri
dibagi menjadi 2, yaitu :
1. Konstanta
Identifier ini nilainya tetap selama program berjalan
(dieksekusi). Konstanta sangat berguna untuk menyimpan
nilai-nilai yang bersifat tetap, seperti konstanta fisika dan
matematika, misalnya π (3,14). Bentuk umumnya seperti
berikut :
Bentuk umum : #define <nama_konstanta> <nilai>
Contoh :
#define π 3.14
#define nama “Sofiar Agusta”
Penulisan konstanta diawali dengan tanda # dan tidak ada titik
koma pada akhir perintah. Konstanta juga dapat ditulis dengan
cara lain, yaitu :
Bentuk umum : const <tipe_data><nama_konstanta> = <nilai>;
contoh :
Const float π = 3.14;
Const char nama [] = “Sofiar Agusta”;
2. Variabel
Identifier ini nilainya dapat berubah atau diubah selama
program berjalan (dieksekusi). Yang boleh mengubah yaitu
pengguna ataupun statement pada proses. Cara
pendeklarasian variabel pada C yaitu :
Bentuk umum : <tipe_data> <nama_variabel>;
Contoh :
Int umur;
Float berat_badan;
Identifier tidak harus selalu dibuat oleh programmer, sebab
bahasa C sudah memiliki berbagai identifier yang dikenali
secara default. Identifier semacam itu sering disebut dengan
standar identifier.
Standar identifier yaitu identifier yang biasanya berupa fungsi
tertentu yang telah diberi makna tertentu oleh compiler bahasa
C, tetapi tidak bersifat reserved (dipesan) sehingga dapat dipakai
lagi oleh pemrograman. Contoh standar identifier yaitu
printf(), scanf(), system(“cls”), dan lain-lain.
Penulisan dan pembuatan identifier, baik konstanta ataupun
variabel, memiliki beberapa aturan, yaitu :
1. Tidak boleh sama dengan nama keyword reserved, function
yang dimiliki C, dan harus unik.
2. Maksimum 32 karakter. Bila lebih, maka karakter selebihnya
tidak akan diperhatikan oleh komputer.
3. Case sensitive : membedakan huruf besar dan kecil.
4. Karakter pertama harus huruf atau underscore (_), dan yang
selebihnya boleh angka.
5. Tidak boleh mengandung spasi/blank.
Penulisan identifier harus unik dan tidak boleh sama dengan
reserved word yang digunakan pada bahasa C. Reserved word
sering disebut keyword. Keyword yaitu identifier yang telah
didefinisikan oleh bahasa C. Sifat keyword yaitu :
1. Memiliki arti dan pemakaian tertentu.
2. Bersifat reserved sehingga tidak boleh digunakan lagi oleh
programmer.
3. Semua ditulis dalam huruf kecil.
4. Menurut standar ANSI terdapat 32 keywords.
Berikut yaitu daftar 32 keywords pada C :
auto double int switch
break else long typedef
case enum register union
char extern return unsigned
const float short void
continue for signed volatile
default goto sizeof while
do if static struct
Semua identifier digunakan untuk menyimpan data pada
memori komputer untuk keperluan komputasi. Penyimpanan
data tentu tidak bisa dilakukan tanpa mengetahui secara pasti
seberapa kemampuan suatu identifier untuk menyimpan data.
Jenis dan ukurannya disebut dengan tipe data. Tipe data diatur
dan dikelompokkan menjadi dua, yaitu tipe data numerik dan
non-numerik.
1. Tipe data numerik
tipe data ini mampu menampung semua nilai numerik mulai
dari bilangan bulat dan pecahan. Tipe data numerik dibagi
menjadi beberapa jenis. Namun tipe data numerik yang
dikenal didalam bahasa C, yaitu :
Tiper data bilangan bulat :
Type Length Range
short int 16 bit -32,768 to 32,767
unsigned int 32 bit 0 to 4,294,967,295
int 32 bit -2,147,483,648 to 2,147,483,648
unsigned long 32 bit 0 to 4,294,967,295
enum 16 bit -2,147,483,648 to 2,147,483,648
long 32 bit -2,147,483,648 to 2,147,483,648
Tipe data pecahan :
Type Length Range
float 32 bit 3,4 x 10-38 to 3,4 x 10+38
double 64 bit 1,7 x 10-308 to 1,7 x 10+308
long double 80 bit 3,4 x 10-4932 to 3,4 x 10+4932
Nilai numerik pecahan yang disimpan dalam integer dibulatkan
kebawah. Jadi nilai pecahan dibuang. Contoh : 2.38 akan
dibulatkan menjadi 2 dan 4.9928 akan dibulatkan menjadi 4. nilai
variabel yang melebihi jangkauannya akan dipotong sepanjang
jumlah bit yang tersedia. Contoh : jika di deklarasikan variabel
integer (16 bit = 2 byte) berarti hanya menyimpan sampai
dengan 32,767.
Jika variabel di isi nilai 70,000 ( 1 0001 0001 0111 0000 ), padahal
70,000 menempati 17 bit maka bit paling kiri akan dipotong
menjadi ( 0001 0001 0111 0000 ). Namun hal ini sangat
bergantung ukuran tipe datanya.
ELEMEN – ELEMEN BAHASA DALAM PASCAL
a. Reserved Word
Reserved word yaitu kata – kata yang tidak dapat dijadikan menjadi identifier (pengenal),
karena kata – kat tersebut sudah mempunyai arti tersendiri dalam Turbo Pascal. Adapun kata – kata yang
termasuk ke dalam identifier yaitu :
And, asm, array, begin, case, const, constructor, destructor, div, do, downto, else, end, exports,
file, for, function, goto, if, implementation, in, inherited, inline, interface, label, library, mod, nil, not,
object, of, or,packed, procedure, program, record, repeat, set, shl, shr, string, then, to, type, unit, until,
uses, var, while, with, xor.
b. Statement : Statement yaitu salah satu dari berikut ini:
- Assignment (:=)
- Begin..end
- Case..of..else..end
- For..to/downto..do
- Goto
- If..then..else
- Inline(..)
- Procedure call
- Repeat..until
- While..do
- With..do
c. Type
Bentuk umum:
Type
Pengenal = tipe data;
……….
Pengenal = tipe data;
d. Const (Constant)
Constant yang disingkat dengan const yaitu nilai konstanta ( nilai tetap) yang dipasang dalam
program.
Bentuk umum:
Const
Pengenal = ekspresi
………
Pengenal = ekspresi
Const
Pengenal: type = nilai;
………..
Pengenal: type = nilai;
e. Var ( Variabel)
Jika constant yaitu nilai tetap, maka Variabel yaitu nilai yang isinya dapat berubah – ubah.
Dalam program, Variabel disingkat menjadi Var.
Bentuk umum:
Var
Pengenal, … pengenal : Tipe data;
……
Pengenal,… pengenal: Tipe data;
STRUKTUR PROGRAM PASCAL
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 yaitu 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.
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 }
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 :
{ 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
Contoh runtunan :
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 yaitu 1 jam, 5 menit, 40 detik. Dalam detik, waktu
tempuh seluruhnya yaitu ( 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.
Jadi, program KONVERSI_JAM_KE_DETIK dalam bahasa pascal yaitu sebagai berikut :
PEMILIHAN
Struktur runtunan hanya terdapat pada program sederhana. Pada umumnya, masalah yang akan
diselesaikan memiliki beberapa alternative pelaksanaan aksi. Suatu aksi hanya dilakukan bila
persyaratan atau kondisi tertentu dipenuhi. Kita katakan bahwa masalah tersebut memiliki beberapa
kasus. Jadi, dalam memecahkan masalah, kita harus menganalisis kasus-kasus apa saja yang mungkin
ada, lalu aksi apa yang dilakukan bila suatu kasus dimasuki. Adanya pemilahan kasus-kasus
menyebabkan terjadinya pemilihan instruksi di dalam algoritma, bergantung pada kasus yang
memenuhi.
Menganalisis kasus dari suatu masalah yaitu menentukan kondisi boolean (bernilai true atau
false) untuk setiap kasus dan menentukan aksi yang dilakukan jika kondisi tersebut berlaku (memenuhi).
Kondisi boolean yaitu ekspresi boolean yang bernilai true atau false bergantung pada nilai
masing-masing operand yang terlibat di dalamnya. Ekspresi boolean dibentuk dengan
mengkombinasikan operand yang bertipe sama dengan salah satu dari operator relasional : =, ≠, <, >, ≤,
≥, dan operator uner not.
Contoh-contoh ekspresi boolean :
x > y
a ≠ 10
m = n
p ≤ q
a + b > 1
str = ‘itb’
k mod 4 = 0
ketemu = true
not berhenti
(x > 0) and (y < 0)
Aksi yang dikerjakan bila kondisi boolean dipenuhi dapat berupa pengisian nilai (assignment),
kalkulasi, baca, tulis, dan sebagainya, bergantung pada masalahnya.
Penentuan kondisi boolean dan aksi yang dilakukan bergantung pada jumlah kasus yang terdapat pada
masalah tersebut : satu kasus, dua kasus, atau lebih dari dua kasus.
Satu Kasus
Notasi algoritmik untuk analisis dengan satu kasus yaitu dengan menggunakan struktur IF-THEN (jika-
maka)
Aksi sesudah kata then (dapat berupa satu atau lebih aksi) hanya akan dilaksanakan bila kondisi
bernilai benar (true). Bila kondisi bernilai salah (false), tidak ada aksi apapun yang dikerjakan. Kata
endif sengaja ditambahkan untuk mempertegas awal dan akhir struktur if-then.
Contoh-contoh :
a. if x > 100 then
x←x+1
endif
b. if ada=false then
read (cc)
write (cc)
endif
catatan:
contoh (b) di atas dapat juga ditulis sebagai berikut :
if not ada then
read(cc)
write(cc)
endif
Ingatlah bahwa aksi sesudah kata then akan dikerjakan hanya jika kondisi bernilai true ( dalam
hal ini, not ada bernilai true bila ada = false ).
Contoh analisis :
Dibaca sebuah karakter. Diminta menuliskan pesan ‘huruf hidup’ jika karakter tersebut merupakan huruf
vokal.
Jadi, program HURUF_VOKAL dalam bahasa pascal yaitu sebagai berikut
Dua Kasus
Notasi algoritma untuk analisis dengan dua buah kasus yaitu dengan menggunakan struktur IF-
THEN-ELSE (jika-maka-kalau tidak)
Aksi1 akan dilaksanakan jika kondisi bernilai benar, tetapi jika kondisi bernilai salah, maka aksi2
yang akan dilaksanakan. Perhatikanlah bahwa “else” menyatakan ingkaran (negation) dari kondisi.
Contoh analisis :
Buatlah algoritma dan program yang membaca angka tahun masehi dari papan kunci,lalu menentukan
apakah tahun tersebut merupakan tahun kabisat. Secara sederhana, tahun kabisat yaitu tahun yang habis
dibagi dengan 4. Pada tahun kabisat, bulan februari berjumlah 29 hari. Contoh tahun kabisat yaitu 1996
dan 2000. Tahun 2002 bukan tahun kabisat karena tidak habis dibagi 4.
Penyelesaian :
Misalkan tahun masehi tersebut yaitu Tahun.
Analisis kasus :
Kasus 1 : Tahun mod 4 = 0, maka tulis Tahun yaitu tahun kabisat
Kasus 2 : Tahun mod 4 ≠ 0, maka tulis Tahun bukan tahun kabisat
Jadi, program TAHUN_KABISAT dalam bahasa pascal yaitu sebagai berikut
Tiga Kasus atau Lebih
Masalah yang mempunyai tiga buah kasus atau lebih tetap dapat dianalisis dengan struktur IF-THEN-
ELSE sebagaimana halnya pada masalah dengan dua kasus.
dan seterusnya.
Contoh analisis :
Buatlah algoritma dan program yang membaca temperatur air, T, (dalam suatu derajat celcius) pada
tekanan normal, lalu menentukan apakah wujud air tersebut dalam keadaan padat (T ≤ 0°C), cair (0 < T <
100), atau gas (T > 100).
Penyelesaian :
Misalkan suhu air yaitu T.
Analisis kasus :
Kasus 1 : T ≤ 0, maka tulis “padat”
Kasus 2 : 0 < T < 100, maka tulis “cair”
Kasus 3 : T ≥ 100, maka tulis “uap”
Jadi, program WUJUD_AIR dalam penulisan IF-THEN-ELSE yang bertingkat-tingkat
Struktur CASE
Tidak semua bahasa pemrograman menyediakan struktur CASE (misalnya Bahasa Fortran). Bahasa
pascal menyediakan struktur ini. Jika bahasa pemrograman tidak yang ekivalen.
Contoh analisis :
Buatlah algoritma dan program yang membaca angka bulan dan tahun, lalu menuliskan jumlah hari dalam
bulan tersebut. Misalnya jika dibaca bulan 8 (agustus), maka jumlah harinya yaitu 31.
Penyelesaian
Kita harus mengidentifikasi bulan-bulan dan jumlah harinya sebagai berikut
Jadi, program JUMLAH_HARI dalam bahasa pascal yaitu sebagai berikut
PENGULANGAN
Struktur pengulangan secara umum terdiri atas dua bagian :
1. kondisi pengulangan, yaitu ekspresi Boolean yang harus dipenuhi untuk melaksanakan
pengulangan. Kondisi ini ada yang dinyatakan secara eksplisit oleh pemrogram atau dikelola
sendiri oleh komputer (implisit);
2. badan (body) pengulangan, yaitu bagian algoritma yang diulang.
Disamping itu, struktur pengulangan biasanya disertai dengan bagian :
1. inisialisasi, yaitu aksi yang dilakukan sebelum pengulangan dilakukan pertama kali
2. terminasi, yaitu aksi yang dilakukan setelah pengulangan selesai dilaksanakan
Inisialisasi dan terminasi tidak selalu harus ada, namun pada berbagai kasus inisialisasi
umumnya diperlukan.
Struktur pengulangan secara umum :
yang dalam hal ini awal dan akhir pengulangan dinyatakan sebagai kata kunci yang bergantung pada
struktur pengulangan yang digunakan. Selain itu, <inisialisasi> dan <terminasi> yaitu bagian yang
opsional.
Di dalam algoritma terdapat beberapa macam struktur pengulangan yang berbeda. Beberapa
struktur dapat dipakai untuk masalah yang sama, namun ada notasi pengulangan yang hanya cocok
dipakai untuk masalah tertentu. Pemilihan struktur pengulangan untuk masalah tertentu dapat
mempengaruhi kebenaran algoritma. Pemilihan struktur pengulangan yang tepat bergantung pada masalah
yang akan deprogram. Tiga (3) macam notasi struktur pengulangan, yaitu :
1) struktur FOR
2) struktur WHILE
3) struktur REPEAT
Struktur FOR
Struktur pengulangan FOR digunakan untuk menghasilkan pengulangan sejumlah kali yang
dispesifikasikan. Jumlah pengulangan diketahui atau dapat ditentukan sebelum eksekusi. Untuk mencacah
sudah berapa kali pengulangan dilakukan, kita memerlukan sebuah peubah (variable) pencacah (counter).
Peubah ini nilainya selalu bertambah satu setiap kali pengulangan dilakukan. Jika cacah pengulangan
sudah mencapai jumlah yang dispesifikasikan, maka proses pengulangan berhenti
Bentuk umum struktur FOR ada dua macam : menaik (ascending) atau menurun (descending).
FOR menaik:
Keterangan :
i. pencacah haruslah dari tipe data yang memiliki predecessor dan successor, yaitu integer atau karakter.
Tipe riil tidak dapat digunakan sebagai pencacah.
ii. Aksi yaitu satu atau lebih instruksi yang diulang.
iii. nilai_awal harus lebih kecil atau sama dengan nilai_akhir. Jika nilai_awal lebih besar dari
nilai_akhir, maka badan pengulangan tidak dimasuki.
iv. Pada awalnya,pencacah diinisialisasi dengan nilai_awal.Nilai pencacah secara otomatis bertambah
satu setiap kali pengulangan dimasuki, sampai akhirnya nilai pencacah sama dengan nilai_akhir.
v. Jumlah pengulangan yang tejadi yaitu nilai_akhir - nilai_awal + 1.
Contoh analisis :
Buatlah algoritma dan program mencetak angka 1, 2, .., N, yang dalam hal ini nilai N dibaca terlebih
dahulu dari piranti masukan
Jadi, program CETAK_N_ANGKA dalam bahasa pascal yaitu sebagai berikut
Pertanyaan :
Apa yang terjadi bila N=0? N=-1? N=1?
Jawab :
Jika N = 0 atau N = -1, proses pengulangan tidak terjadi, karena nilai akhir pencacah pengulangan lebih
besar dari nilai awalnya (1).
Jika N = 1, pengulangan yang terjadi yaitu 1 kali, karena 1 – 1 + 1 = 1
Keterangan :
i. Pencacah haruslah dari tipe data yang memiliki predecessor dan successor, yaitu integer atau karakter.
Tipe riil tidak dapat digunakan sebagai pencacah.
ii. Aksi yaitu satu atau lebih instruksi yang diulang.
iii. nilai_akhir harus lebih besar atau sama dengan nilai_awal. Jika nilai_akhir lebih kecil dari
nilai_awal, maka badan pengulangan tidak dimasuki.
iv. Pada awalnya, pencacah diinisialisasi dengan nilai_akhir. Nilai pencacah secara otomatis berkurang
satu setiap kali aksi diulang, sampai akhirnya nilai pencacah sama dengan nilai_awal.
v. Jumlah pengulangan yang terjadi yaitu nilai_awal-nilai_akhir+1.
Contoh analisis :
Algorima dan program peluncuran roket dengan hitung mundur, mulai dari 10, 9, 8, …, 0
Struktur WHILE
Bentuk umum :
Aksi (atau runtunan aksi) akan dilaksanakan berulangkali selama kondisi benilai true. Jika kondisi
bernilai false, badan pengulangan tidak akan dilaksanakan, yang berarti pengulangan selesai.
Yang harus diperhatikan yaitu pengulangan harus berhenti. Pengulangan yang tidak pernah
berhenti menandakan bahwa logika algoritma tersebut salah. Pengulangan berhenti apabila kondisi
bernilai false. Agar kondisi suatu saat bernilai false, maka di dalam badan pengulangan harus ada
instruksi yang mengubah nilai peubah kondisi.
Contoh analisa :
Dibuat sejumlah data bilangan bulat positif dari piranti masukan. Banyaknya data tidak diketahui
sebelumnya, tetapi akhir pemasukan data yaitu bila data yang dimasukkan bernilai -99. Bilangan -99
akan diinterpretasikan sebagai tanda berhenti proses pengisian data. Kita diminta menghitung jumlah
seluruh nilai yang dimaskkan (-99 tidak termasuk data yang dijumlahkan).
Sebagai ilustrasi :
i. misalkan dibaca berturut-turut data: 10, 4, 5, 8, -99.
maka jumlah seluruh nilai yaitu 10 + 4 + 5 + 8 = 27
ii. misalkan dibaca berturut-turut data : 9, -99
maka jumlah seluruh nilai yaitu 9
iii. misalkan dibaca berturut-turut data : -99
maka jumlah seluruh nilai yaitu 0
Struktur REPEAT
Bentuk umum :
Notasi ini mendasarkan pengulangan pada kondisi boolean. Aksi di dalam badan kalang diulang samopai
kondisi boolean bernilai true. Dengan kata lain, jika kondisi boolean masih false, pengulangan masih
terus dilakukan. Karena proses pengulangan suatu saat harus berhenti, maka di dalam badan pengulangan
harus ada aksi yang mengubah nilai peubah kondisi.
Struktur REPEAT memiliki makna yang sama dengan WHILE, dan dalam beberapa masalah
kedua struktur tersebut komplemen satu sama lain.
Contoh analisa :
Algoritma dan program untuk menghitung jumlah angka dari 1 sampai N. Nilai N dibaca dari papan
kunci. Misalnya N = 5, maka 1 + 2 + 3 + 4 + 5 = 15.
PROSEDUR DAN FUNGSI
Sebuah program yang baik yaitu program yang membagi permasalahan utama
menjadi bagian-bagian kecil dimana setiap bagian kecil ditangani oleh sebuah
subprogram, cara ini disebut dengan modular programming (pemrograman
terbagi/terpecah). Cara ini termasuk pemrograman terstruktur dan sangat didukung
oleh bahasa Pascal. Untuk itu, Pascal telah menyediakan dua jenis subprogram, yaitu
procedure dan function (prosedur dan fungsi).
Dengan modular programming, program lebih mudah dibaca dan dimengerti.
Selain itu, pembenahan program dan penelusuran jalannya program (debugging)
menjadi lebih mudah sebab dapat langsung diketahui subprogram mana yang berjalan
tidak sesuai dengan yang diharapkan.
1. P r o s e d u r
Prosedur yaitu subprogram yang menerima masukan tetapi tidak mempunyai
keluaran secara langsung.
Pada dasarnya, struktur prosedur sama dengan struktur algoritma yang sudah anda kenal. Setiap
prosedur mempunyai nama yang unik. Nama prosedur sebaiknya diawali dengan kata kerja karena
prosedur berisi suatu aktivitas.
Notasi algoritma yang digunakan untuk mendefinisikan struktur prosedur (tanpa parameter) yaitu :
Pendeklarasian prosedur di atas yaitu untuk prosedur yang tidak memerlukan
parameter. Parameter yaitu data masukan untuk subprogram yang nantinya akan
diproses lebih lanjut dalam subprogram tersebut. Dalam Pascal, dikenal dua macam
parameter yaitu :
1. parameter nilai (value parameter), dan
2. parameter referensi (reference parameter).
Cara mendeklarasikan parameter tersebut yaitu sebagai berikut :
Pada deklarasi prosedur di atas, parameter X yaitu parameter nilai sedang parameter
Y yaitu parameter referensi. Jadi, pendeklarasian parameter referensi didahului oleh
reserved word var. Parameter referensi ini nantinya dapat dijadikan sebagai variabel
keluaran dari prosedur.
Untuk lebih memahami penggunaan prosedur dalam Pascal, perhatikan contoh
program di bawah ini :
program Prosedur;
uses wincrt;
var
Bil_1, Bil_2, Hasil : integer;
procedure Awal;
begin
Writeln('Latihan Pascal 2 : Prosedur dan Fungsi');
Writeln('--------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure Baca_Data;
begin
Write('Masukkan bilangan pertama : ');
Readln(Bil_1);
Write('Masukkan bilangan kedua : ');
Readln(Bil_2);
Writeln;
end;
procedure Kali(A,B : integer);
var
I : integer;
begin
Hasil := 0;
for I := 1 to B do Hasil := Hasil + A;
end;
procedure Kalikan(A,B : integer; var C : integer);
var
I : integer;
begin
C := 0;
for I := 1 to B do C := C + A;
end;
begin
ClrScr;
Awal;
Baca_Data;
Kali(Bil_1, Bil_2);
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Hasil:5);
Kalikan(Bil_1, Bil_2, Hasil);
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Hasil:5);
Writeln;
Write('Tekan Enter...');
Readln;
end.
Perhatikan program di atas. Dua prosedur terakhir memiliki kemiripan, bedanya hanya
pada jumlah parameter dan variabel hasil perkaliannya. Untuk lebih jelas, jalankan program dan
perhatikan apa yang dilakukan oleh dua prosedur tersebut maka akan nampak perbedaan keduanya.
2. F u n g s i
Fungsi yaitu subprogram yang menerima masukan dan mempunyai keluaran secara langsung. Cara
mendeklarasikan sebuah fungsi yaitu sebagai berikut
Perbedaan utama antara prosedur dan fungsi yaitu dalam menghasilkan keluaran.
Walaupun prosedur bisa menghasilkan nilai keluaran, tetapi nilai tersebut tidak dapat
diambil secara langsung, melainkan harus diambil melalui parameter referensi.
Sedangkan keluaran dari fungsi dapat diambil langsung dari fungsi tersebut.
Untuk lebih memahami perbedaan prosedur dan fungsi, perhatikan contoh berikut ini :
program Fungsi;
uses wincrt;
var
Bil_1, Bil_2, Hasil : integer;
procedure Awal;
begin
Writeln('Latihan Pascal 2 : Prosedur dan Fungsi');
Writeln('--------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure Baca_Data;
begin
Write('Masukkan bilangan pertama : ');
Readln(Bil_1);
Write('Masukkan bilangan kedua : ');
Readln(Bil_2);
Writeln;
end;
function Kali(A,B : integer) : integer;
var
I,J : integer;
begin
J := 0;
for I := 1 to B do J := J + A;
Kali := J;
end;
procedure Kalikan(A,B : integer; var C : integer);
var
I : integer;
begin
C := 0;
for I := 1 to B do C := C + A;
end;
begin
ClrScr;
Awal;
Baca_Data;
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Kali(Bil_1,Bil_2):5);
Kalikan(Bil_1, Bil_2, Hasil);
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Hasil:5);
Writeln;
Write('Tekan Enter...');
Readln;
end.
Perhatikan program di atas. Prosedur Kalikan dan fungsi Kali mempunyai keluaran yang sama, tetapi cara
mengambil keluarannya berbeda. Perhatikan dan jelaskan apa yang terjadi jika baris keempat dalam
program utama yang semula perintah :
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Kali(Bil_1,Bil_2):5);
diubah menjadi :
Writeln(Bil_1:3,' x ',Bil_2:3,' = ',Kalikan(Bil_1,Bil_2,Hasil):5);
3. Rekursi
Dalam Pascal, ada satu kelebihan dalam cara pemanggilan subprogram. Pascal mengijinkan pemanggilan
suatu subprogram dari dalam subprogram itu sendiri. Tidak semua bahasa pemrograman mengijinkan cara
pemanggilan subprogram seperti itu karena akan banyak memakan memori. Untuk lebih jelasnya
perhatikan potongan program di bawah ini :
Pada baris terakhir prosedur Z di atas, terdapat pemanggilan kembali terhadap prosedur Z, sehingga
prosedur di atas tidak akan pernah selesai dijalankan sebab begitu sampai pada baris terakhir dari
prosedur, program akan kembali lagi ke awal prosedur. Yang terjadi yaitu semacam perulangan tanpa
perintah perulangan Pascal, dan perulangan dengan cara ini disebut dengan rekursi. Rekursi berlaku
terhadap semua subprogram dalam Pascal, yaitu prosedur dan fungsi.
Dengan adanya rekursi ini, banyak algoritma komputer menjadi lebih mudah dibuat programnya. Berikut
ini yaitu program menghitung suku banyak Legendre, salah satu contoh perhitungan yang dapat
diselesaikan dengan menggunakan rekursi :
program Rekursi;
uses wincrt;
var
Jum_Suku, I : integer;
Bil_X : real;
function Legendre(X : real; N : integer) : real;
var
Suku_1, Suku_2 : real;
begin
if N = 0 then
Legendre := 1
else if N = 1 then
Legendre := X
else
begin
Suku_1 := ((2*N - 1) * (X * Legendre(X, N-1))) / N;
Suku_2 := ((N-1) * Legendre(X, N-2)) / N;
Legendre := Suku_1 + Suku_2;
end;
end;
procedure Awal;
begin
Writeln('Latihan Pascal 2 : Prosedur dan Fungsi');
Writeln('--------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure Baca_Data;
begin
Writeln('Menghitung Suku Banyak Legendre');
Writeln;
Write('Sampai suku ke : ');
Readln(Jum_Suku);
Write('Masukkan nilai X : ');
Readln(Bil_X);
Writeln;
end;
begin
ClrScr;
Awal;
Baca_Data;
for I := 0 to Jum_Suku do
begin
Writeln('Suku ke-',I:2,', Nilainya = ',Legendre(Bil_X, I):8:3);
end;
Writeln;
Write('Tekan Enter...');
Readln;
end.
Untuk lebih jelas memahami program, jalankan program dengan F7. Perhatikan pula
apa yang dilakukan oleh fungsi Legendre. Amati perubahan variabel-variabel yang
terlibat dalam fungsi.
Pada potongan program di atas, maksudnya yaitu sebagai berikut : variabel A berupa array dari integer
dengan jumlah elemen sebanyak 10, nomer indeks terkecil yaitu 1 dan nomer indeks terbesar yaitu
10. Untuk mengakses elemen dari variabel A dapat dilakukan dengan menunjukkan nomer indeks
elemen A seperti ini :
7. ARRAY DAN RECORD
Dalam bahasa Pascal, secara garis besar dikenal dua macam tipe data yaitu tipe data sederhana
(primitive type) dan tipe data kompleks (complex type). Contoh tipe data sederhana yaitu tipe numerik
(integer dan real), tipe data karakter, tipe data boolean dan tipe data enumerasi. Contoh tipe data
kompleks yaitu string, array (larik), record dan object. Tipe data sederhana yaitu tipe data yang
hanya mampu menyimpan satu nilai tiap satu variabelnya. Sebaliknya tipe data kompleks yaitu tipe
data yang mampu menyimpan lebih dari satu nilai dalam tiap satu variabelnya. Dalam latihan ini hanya
akan dibahas dua tipe data kompleks yaitu array dan record.
1. A r r a y
Array yaitu tipe data kompleks yang elemen-elemennya mempunyai tipe data yang sama.
Jumlah elemen array bersifat tetap dan tidak bisa ditambah atau dikurangi setelah
pendeklarasiannya. Tiap elemen mempunyai nomer indeks sendiri dan pengaksesan terhadap
elemen array dilakukan dengan menunjukkan nomer indeks dari elemen yang akan diakses.
Cara pendeklarasian suatu variabel bertipe array yaitu sebagai berikut :
Pada potongan program di atas, maksudnya yaitu sebagai berikut : variabel A berupa array dari integer
dengan jumlah elemen sebanyak 10, nomer indeks terkecil yaitu 1 dan nomer indeks terbesar yaitu
10. Untuk mengakses elemen dari variabel A dapat dilakukan dengan menunjukkan nomer indeks
elemen A seperti ini :
contoh : A[1] := 10;
Untuk lebih memahami penggunaan array dalam program, perhatikan contoh
program di bawah ini :
program Fibonacci;
uses wincrt;
var
I : integer;
Data : array[1..10] of integer;
procedure Awal;
begin
Writeln('Praktikum DKP III : Array dan Record');
Writeln('------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure Fibo;
begin
for I := 1 to 10 do
begin
if I < 3 then
Data[I] := I - 1
else
Data[I] := Data[I-1] + Data[I-2];
end;
Writeln('Deret Fibonacci suku ke-1 hingga suku ke-10 :');
for I := 1 to 10 do Write(Data[I]:3);
Writeln;
end;
begin
ClrScr;
Awal;
Fibo;
Writeln;
Write('Tekan Enter...');
Readln;
end.
Perhatikan program di atas, terutama cara mengakses variabel array pada prosedur
Fibo. Untuk lebih memahami jalannya program, jalankan program dengan F7 dan perhatikan perubahan
elemen-elemen variabel Data yang berupa array. Jika program di atas telah dimengerti, buatlah program
menghitung deret Fibonacci tetapi tidak menggunakan variabel array. Kemudian bandingkan dan
perhatikan perbedaan kedua program tersebut. Array yang digunakan pada program di atas yaitu
array berdimensi tunggal atau array berdimensi satu. Dengan demikian, dapat pula dideklarasikan
variabel array dengan dimensi lebih dari satu atau array berdimensi banyak. Berikut yaitu cara
mendeklarasikan array berdimensi dua :
Antara dimensi satu dengan dimensi lainnya dipisahkan oleh tanda koma (,), demikian juga untuk
mendeklarasikan array berdimensi lebih dari dua. Cara mengakses elemen array juga tidak jauh berbeda
dengan cara mengakses elemen array berdimensi satu, yaitu menggunakan nomer indeksnya.
Contohnya sebagai berikut : A[2,3] := 10; artinya elemen yang terletak pada nomer 2 dimensi pertama
dan nomer 3 dimensi kedua diisi dengan nilai 10. Array berdimensi dua ini banyak digunakan dalam
perhitungan matrik, oleh sebab itu array berdimensi dua disebut juga dengan array matrik. Perhatikan
contoh program berikut ini :
program Jumlah_Matrik;
uses wincrt;
const
Orde = 3;
type
Matrik = array[1..orde,1..orde] of integer;
var
M1, M2, H : matrik;
I, J : integer;
procedure Awal;
begin
Writeln('Latihan Pascal 3 : Array dan Record');
Writeln('------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure JumlahMatrik(var Mat1, Mat2, MatHasil : matrik);
begin
for I := 1 to orde do
for J := 1 to orde do
MatHasil[I,J] := Mat1[I,J] + Mat2[I,J];
end;
procedure BacaData(var Mat : matrik);
begin
for I := 1 to orde do
for J := 1 to orde do
begin
Write('Nilai[',I,',',J,'] = ');
Readln(Mat[I,J]);
end;
end;
procedure TulisMatrik(var Mat : matrik);
begin
for I := 1 to orde do
begin
for J := 1 to orde do
begin
Write(Mat[I,J]:5);
end;
Writeln;
end;
end;
begin
ClrScr;
Awal;
Writeln('Isi matrik pertama :');
BacaData(M1);
Writeln;
Writeln('Isi matrik kedua :');
BacaData(M2);
Writeln;
JumlahMatrik(M1, M2, H);
Writeln('Penjumlahan matrik pertama dan kedua :');
TulisMatrik(H);
Writeln;
Write('Tekan Enter...');
Readln;
end.
R e c o r d
Record yaitu tipe data kompleks yang elemen-elemennya boleh mempunyai tipe data yang berbeda.
Record lebih kompleks daripada array karena record merupakan kumpulan beberapa variabel dengan
tipe data yang berbeda. Berbeda dengan array yang tiap elemennya ditandai dengan nomer indeks
maka record ditandai dengan nama variabel anggotanya. Cara mengakses elemen dari record dilakukan
dengan menyebutkan nama variabel anggota setelah menyebutkan nama record yang akan diakses. Di
antara nama record dan nama variabel anggota dipisahkan tanda titik (.).
Untuk lebih memahami penggunaan record dalam program, perhatikan contoh
berikut ini.
program Jumlah_Kompleks;
uses wincrt;
Type
Kompleks = record
bil_real : integer;
bil_imaj : integer;
end;
var
K1, K2, H : kompleks;
procedure Awal;
begin
Writeln(' Latihan Pascal 3 : Array dan Record');
Writeln('------------------------------------');
Writeln;
Writeln('Nama : ____________________');
Writeln('NIM : __________');
Writeln;
end;
procedure JumlahKompleks(var Komp1, Komp2, KompHasil : kompleks);
begin
KompHasil.bil_real := Komp1.bil_real + Komp2.bil_real;
KompHasil.bil_imaj := Komp1.bil_imaj + Komp2.bil_imaj;
end;
procedure BacaData(var Komp : kompleks);
begin
Write('Bilangan real : ');
Readln(Komp.bil_real);
Write('Bilangan imajiner : ');
Readln(Komp.bil_imaj);
end;
procedure TulisKompleks(var Komp : kompleks);
begin
Write('(',Komp.bil_real:3,' + ',Komp.bil_imaj:3,'i)');
end;
begin
ClrScr;
Awal;
Writeln('Isi bilangan kompleks pertama :');
BacaData(K1);
Writeln;
Writeln('Isi bilangan kompleks kedua :');
BacaData(K2);
Writeln;
JumlahKompleks(K1, K2, H);
Writeln('Penjumlahan bilangan kompleks pertama dan kedua :');
TulisKompleks(K1);
Write(' + ');
TulisKompleks(K2);
Write(' = ');
TulisKompleks(H);
Writeln;
Writeln;
Write('Tekan Enter...');
Readln;
end.
Perhatikan program di atas. Untuk lebih jelasnya, jalankan program dengan F7
sehingga akan terlihat urutan jalannya program. Perhatikan pula bagaimana cara
mengakses elemen record seperti pada prosedur JumlahKompleks.
