diktat alpro 1
TRANSCRIPT
BAB I
Pendahuluan
1. Tujuan Instruksional Umum :
Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan
gambaran tentang Algoritma dan pemrograman, dan dapat memahami
pemrograman berdasarkan konsep algoritma.
2. Tujuan Instruksional Khusus :
Mahasiswa memahami dan mengerti definisi Algoritma, Memahami dan
mengerti definisi pemrograman dan perbedaan antara algoritma dan
pemrograman.
Materi :
a. Pengenalan Komputer
Komputer adalah alat bantu yang berfungsi untuk membantu manusia dalam
menyelesaikan suatu masalah. Namun dalam pemecahan permasalahannya, komputer
memiliki permasalahan-permasalahan sebagai berikut :
1. Ada Jarak antara persoalan dengan komputer (problematika manusia tidak
dapat begitu saja disodorkan kepada komputer dan di jawab)
2. Problematika manusia harus disodorkan ke komputer dalam bentuk program
3. Terdapat berbagai paradigma untuk menghasilkan program
4. Komputer adalah mesin digital dan hanya mengenal bahasa mesin (kode
biner)
5. Diperlukan suatu bahasa (bahasa pemrograman) yang menjembatani antara
manusia dan komputer
“Ilmu” Pemrograman di Era Modern telah berkembang dan menggeser “seni”
memprogram “trial end error”. Program harus dihasilkan dari proses pemahaman
masalah, analisis, sintesis dan baru dituangkan kedalam bahasa pemrograman. Beberapa
Paradigma dalam Pemrograman antara lain :
1. Prosedural / Terstruktur / Imperatif (mesin Von Newmann-Stored Program
Concept)
2. Fungsional
3. Deklaratif / Prediktif / Lojik
4. Obyek Oriented
Dibawah ini adalah beberapa bahasa pemrograman yang sesuai dengan paradigma
pemrograman masing-masing :
1. Prosedural: Algol, Pascal, Fortran, Basic, Cobol, C
2. Fungsional: LOGO, APL, LISP
3. Deklaratif: Prolog
4. Obyek Oriented:
- murni: Smalltalk, Eifel, Java
- hybrid: C++, Object Pascal
Belajar memprogram tidak sama dengan belajar bahasa pemrograman. Belajar
Memprogram adalah belajar tentang strategi pemecahan masalah, metodologi dan
sistematika pemecahan masalah kemudian menuangkan kedalam bentuk notasi yang
disepakati bersama yang tidak tergantung pada bahasa apapun (walaupun untuk
mebuktikan kebenarannya harus dicoba pada bahasa tertentu). Sedangkan Belajar
Bahasa Pemrograman adalah belajar menggunakan bahasa pemrograman tertentu yang
berkaitan dengan sintak (tatabahasa), instruksi, tatacara pengoperasian kompilator
pada mesin (komputer) tertentu.
Pemecahan persoalan lebih penting dari pada pemilihan bahasa pemrograman,
walapun pada akhirnya harus dipilih bahasa yang akan dipakai, dan mahasiswa harus
belajar keduanya. Setiap bahasa pemrograman memiliki aturan dan tabiat yang
berbeda-beda. Transisi dari satu bahasa ke bahasa lainnya memerlukan waktu untuk
adaptasi, tetapi jika strategi pemecahan masalah sudah dikuasai maka waktu adaptasi
bisa singkat.
Mekanisme Komputer (Mesin Von Neumann)
b. Tahapan program komputer
Program harus ditulis dalam suatu bahasa yang dimengerti oleh komputer yaitu
dalam Bahasa pemrogram dibedakan menjadi :
– Bahasa tingkat rendah (low level language) : bahasa yang berorientasi ke
mesin.
– Bahasa tingkat tinggi (high level language) : bahasa yang berorientasi ke
manusia (seperti bahasa inggris)
contoh bahasa Pascal, bahasa C dll.
Program yang ditulis dalam bahasa pemrograman akan diterjemahkan ke dalam
bahasa mesin (dikenal dengan biner digit) dengan menggunakan penterjemah.
Penterjemah :
– Interpreter : menterjemahkan baris per baris instruksi.
Contohnya adalah penerjemah yang digunakan oleh bahasa Basic.
– Compiler : menterjamahkan setelah seluruh instruksi ditulis. Contoh
Contohnya adalah penerjemah yang digunakan oleh bahasa Pascal, C, Ada
,C++, dll.
Input Device
Output Device
CPU Processor
Control Unit ALU
Memory
ROM RAM
Logika Program
Input Output Proses
Merekam Program dan Data
Berisi Daftar Instruksi
Program dalam Bahasa Tingkat
Tinggi
Program dalam Bahasa Mesin
Translasi/Coding
(Kompilasi+Linking)/Interpretasi
Eksekusi oleh CPU
Compiler: - Turbo C++ - Borland C++ Builder - Turbo Pascal - Turbo Basic
Algoritma
- C/C++ - Java
- Pascal - Basic
PERSOALAN
Strategi Pemecahan Persoalan
LOADA 10 LOADB 21 MUL LOADA 11 ADD
#include <stdio.h> void main() { printf("Hello World"); }
PROGRAM DALAM BAHASA TINGKAT
BHS RAKITAN
kompilator
Eksekusi oleh CPU
1 2 3 4 5 7 8 9 6
11 12 13 14 15 17 18 19 16
21 22 23 24 25 27 28 29 26
data
progr
M U L L A 3
1 2 3 4 5 7 8 9 6
11 12 13 14 15 17 18 19 16
21 22 23 24 25 27 28 29 26
L A 2 L B 5
A D D
4 5 3
BAHASA
PPrroosseessoorr
ME
MO
RI
CPU
ALU
A B
EDITOR MENGETIK PROGRAM/CODING
C. Definisi Algoritma
Definisi algoritma adalah urutan logis langkah-langkah penyelesaian masalah.
Menurut Kamus Besar Bahasa Indonesia: Algoritma adalah urutan logis pengambilan
putusan untuk pemecahan masalah. Kegunaan Algoritma adalah untuk memerintah
komputer mengambil langkah-langkah tertentu dalam menyelesaikan masalah
Asal-usul kata Algoritma Kata algorism pertama kali muncul dalam kamus
Webster 1957. Algorism berasal dari nama Abu Ja’far Muhammad ibnu Musa al-
Khuwarizmi (alKhuwarizmi dibaca oleh orang Barat menjadi algorism). Ia menulis buku
“Kitab al jabar wal-muqabala, artinya “Buku pemugaran dan pengurangan” (The book
of restoration and reduction).
Sebagai contoh adalah algoritma mempertukarkan isi dua buah gelas berisi sirup
merah dan hijau. Jika tidak hati-hati maka algoritma yang disusun akan memberikan
hasil jauh dari harapan, seperti algoritma dibawah ini :
Algoritma:
1. Tuangkan isi gelas merah ke dalam gelas hijau
2. Tuangkan isi gelas hijau ke dalam gelas merah
Algoritma TUKAR ISI GELAS di atas tidak menghasilkan pertukaran yang benar.
Langkah di atas tidak logis, hasil pertukaran yang terjadi adalah percampuran kedua
larutan tersebut.
Untuk mempertukarkan isi dua gelas, diperlukan sebuah gelas tambahan sebagai
tempat penampungan sementara, misalnya gelas K. Maka algoritma untuk menghasilkan
pertukaran yang benar adalah sebagai berikut :
M H K
1.
2.
Sebut gelas yang saat ini berisi sirup merah sebagai gelas M, yang berisi sirup hijau H
dan sebuah gelas kosong sebagai K
Algoritma:
1. Sediakan/persiapkan gelas K
2. Tuangkan isi gelas M ke dalam gelas K
3. Tuangkan isi gelas H ke dalam gelas M
4. Tuangkan isi gelas K ke dalam gelas H
H
M H K
H M K
M H K
M H K
1.
2.
3.
4.
Contoh diatas memberikan gambaran ciri-ciri algoritma yang merupakan aspek
penting dari sebuah algoritma. Menurut Donal E Knuth sebua algoritma harus memenuhi
persyaratan :
a. Finiteness
Algoritma harus berhenti (terminate) setelah mengrjakan sejumlah langkah
proses (after a finite number of steps);
b. Definiteness
Setiap langkah algoritma harus didefinisikan secara tepat dan tidak memberikan
makna ganda (ambiguous). Oleh karena itu, cara yang paling tepat untuk menulis
algoritma adalah dengan menggunakan formal language (bahasa pemrograman
komputer);
c. Input
Sebuah algoritma memerlukan nol atau lebih input yang diberikan kepada
algoritma untuk diolah. Algoritma yang tidak memerlukan masukan apa-apa
sebetulnya tidak begitu bermanfaat karena jumlah kasus yang dapat diselesaikan
juga terbatas.
d. Output
Sebuah algoritma memiliki satu atau lebih output, yang biasanya bergantung
kepada input;
e. Effectiveness
Setiap algoritma diharapkan miliki sifat efektif yaitu memiliki langkah-langkah
algoritma dikerjakan dalam waktu yang wajar;
D. Teknik Penulisan Algoritma
Algoritma bersifat programming language independent. Artinya penulisan
algortima tidak tergantung bahasa pemrograman tertentu. Ada beberapa teknik dalam
penulisan sebuah algoritma antara lain :
a. bahasa natural (Bahasa Indonesia, Bahasa Inggris, dan bahasa manusia lainnya)
seperti pada kasus pertukaran isi dua gelas.
Namun bahasa natural sering membingungkan (ambiguous)
b. Menggunakan flow chart (diagram alir)
Bagus secara visual akan tetapi repot kalau algoritmanya panjang
c. Menggunakan pseudo-code (Kode semu)
Sudah lebih dekat ke bahasa pemrograman, namun sulit dimengerti oleh orang
yang tidak mengerti pemrograman
Berikut ini contoh algoritma yang akan disajikan dalam bentuk bahasa natural,
flowchart dan pseudo-code : algoritma untuk menentukan suatu bilangan yang
diinputkan dari keyboard apakah termasuk bilangan ganjil atau genap dengan
menampilkan pesan ke layar pesan genap/ganjil
1. Algoritma dalam Bahasan Natural :
1. Definisikan/deklarasikan variabel dengan tipe bilangan bulat(integer).
Misalnya: x
2. Baca nilai x dari keyboard
3. Jika x dibagi 2 sisanya nol (tanpa sisa) maka cetak pesan ke layar “genap”
Selain itu (sisanya bukan nol / satu) maka maka cetak pesan ke layar “ganjil”
2. Algoritma dengan Flow Chart :
3. Algoritma dengan Pseudo Code
Program Genap_Ganjil
{Menentukan suatu bilangan bulat apakah bilangan genap atau bilangan ganjil
dengan input data dari keyboard dan hasil ditampilkan ke layar berupa pesan
“genap” / “ganjil”}
Deklarasi
x : integer {bilangan bulat yang akan uji genap/ganjil}
Algoritma:
read(x)
if x mod 2 = 0 then
write(‘Genap’)
else
write(‘Ganjil’)
endif
Untuk seterusnya di dalam materi kuliah ini yang digunakan adalah notasi pseudo-code.
Kerangka Algoritma :
oJudul (Header) :
tempat mendefinisikan apakah teks tersebut berupa program, fungsi,
prosedur atau modul
oDeklarasi:
tempat mendefinisikan type, konstanta, variabel, fungsi, prosedur
oDeskripsi:
tempat menuliskan instruksi atau pemanggilan aksi yang telah
didefinisikan.
Kerangka Algoritma
Judul . . . . . . . . .
{ . . . . . . . . . . . . . . . . . . }
Deklarasi :
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
Deskripsi :
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
E. Pengenalan bahasa C
Lahirnya bahasa pemrograman diawali oleh terbentuknya bahasa assembly yang
dikembangkan oleh IBM dalam tahun 1956 – 1963. Bahasa ini termasuk dalam bahasa
tingkat rendah (low level language). Pada tahun 1957, sebuah tim yang dipimpin oleh
John W Backus berhasil mengembangkan sebuah bahasa pemrograman baru yang lebih
diarahkan untuk proses analisa numerik. Bahasa pemrograman tersebut dinamakan
FORTRAN (Formula Translation). Setahun kemudian yaitu pada tahun 1958 para ilmuwan
komputer dari Eropa dan Amerika yang tergabung dalam sebuah komite menciptakan
bahasa pemrograman baru yang lebih bersifat struktural dan dinamakan dengan bahasa
ALGOL (Algoritma Language). Kemudian pada tahun 1964, IBM kembali menciptakan
bahasa pemrograman baru dengan nama PL/I(Programming Language 1) yang lebih
ditujukan untuk kepentingan bisnis dan penelitian.
Tahun 1969 laboratorium Bell AT&T di Murray, New Jersey menggunakan bahasa
Assembly untuk mengembangkan sistem operasi UNIX yang bertujuan untuk membuat
program antarmuka yang bersifat programmer friendly. Setelah Unix berjalan, lahirlah
bahasa pemrograman baru yang ditulis oleh Martin Richards dengan nama bahasa BCPL
(Basic Combine programming language). Kemudian pada tahun 1970, seorang
pengembang sistem dari laboratorium tersebut yang bernama Ken Thompson, membuat
bahasa B yang digunakan untuk menulis ulang sistem operasi Unix. Nama “B” ini konon
diambil dari huruf pertama dalam kata BCPL. Karena alasan bahwa bahasa B masih
terkesan lambat, maka pada tahun 1971 seorang pengembang sistem bernama Dennis
Ritchie, yang juga bekerja dilaboratorium yang sama, menciptakan bahasa baru dengan
nama “C” yang bertujuan untuk menulis ulang dan menutupi kelemahan-kelemahan
yang ada pada sistem operasi UNIX sebelumnya. Menurut sumber yang ada, nama “C” ini
juga konon diambil dari huruf kedua dalam kata BCPL.
F. Kerangka Program dalam Bahasa C :
Setiap program yang ditulis dalam bahasa C harus mempunyai fungsi utama, yang
bernama main ( ). Fungsi inilah yang pertama kali akan dipanggil pada saat proses
eksekusi program. Artinya apabila ada fungsi lain selain fungsi utama maka fungsi lain
tersebut baru akan dipanggil pada saat akan digunakan. Fungsi main( ) ini dapat
mengembalikan nilai 0 ke sistem operasi yang berarti bahwa program tersebut berjalan
dengan baik tanpa ada kesalahan.
Berikut ini dua bentuk kerangka fungsi main( ) didalam bahasa C yang sama-sama
dapat digunakan.
a. bentuk pertama (tanpa pengembalian nilai ke sistem operasi)
void main(void)
{
statemen_yang_akan_dieksekusi;
............
}
Kata kunci void diatas bersifat opsional artinya bisa ditulis atau bisa juga tidak.
b. bentuk kedua (dengan mengembalikan nilai 0 ke sistem operasi)
Int main (void)
{
statemen_yang_akan_dieksekusi;
............
return 0;
}
Kerangka lengkap dari program yang ditulis dalam bahasa C adalah
seperti yang ditulis dibawah ini :
Include <nama_header_file> /*prototipe fungsi*/ Tipe_data nama_fungsi1 (parameter1, parameter2, ....); Tipe_data nama_fungsi2 (parameter1, parameter2, ....); /*fungsi utama*/ Int main(void) { statemen_yang_akan_dieksekusi; ............ return 0; } /*implementasi fungsi*/ Tipe_data nama_fungsi1 (parameter1, parameter2, ....) { statemen_yang_akan_dieksekusi; ............ }
Tipe_data nama_fungsi2 (parameter1, parameter2, ....) { statemen_yang_akan_dieksekusi; ............ }
Oleh karena itu bahasa C merupakan bahasa prosedural yang menerapkan konsep
runtunan (program dieksekusi perbaris dari atas ke bawah secara berurutan), maka
apabila ditulis fungsi-fungsi lain dibawa fungsi utama, maka harus dituliskan bagian
prototipe fungsinya, hal ini dimaksudkan untuk mengenalkan terlebih dahulu kepada
kompilator daftar fungsi yang ada dalam program. Namun apabila fungsi-fungsi ditulis
sebelum fungsi utama, maka tidak perlu lagi menuliskan bagian prototipe diatas.
Perhatikan contoh berikut :
Include <nama_header_file> /*implementasi fungsi*/ Tipe_data nama_fungsi1 (parameter1, parameter2, ....) { statemen_yang_akan_dieksekusi; ............ } Tipe_data nama_fungsi2 (parameter1, parameter2, ....) { statemen_yang_akan_dieksekusi; ............ } /*fungsi utama*/ Int main(void) { statemen_yang_akan_dieksekusi; ............ return 0; }
G. File Header (*.h)
File header adalah file dengan ekstensi h (*.h), yaitu file bantuan yang digunakan
untuk menyimpan daftar fungsi yang akan digunakan didalam program. Perlu sekali
diperhatikan bahwa apabila menggunakan file header yang telah disediakan oleh
kompilator, maka harus dituliskan dalam tanda “<” dan “>” (misalnya <stdio.h>).
Namun apabila menggunakan file header yang dibuat sendiri, maka file tersebut ditulis
diantara tanda “ “ (misalnya “cobaheader.h”)
Perbedaan antara keduanya terletak pada saaat pencarian file tersebut. Apabila
menggunakan tanda <>, maka file header tersebut akan dianggap berada pada direktori
default yang telah ditentukan oleh kompilator. Sedangkan apabila menggunakan tanda “
” maka file header dapat ditentukan sendiri lokasinya.
File header yang akan digunakan harus didaftarkan dengan menggunakan
direktive #include. Berikut adalah contoh header yang menggunakan directive #include:
#include <stdio.h>
#include <stdlib.h>
#include “myheader.h”
H. Mengenal Fungsi printf( )dan Scanf( )
Sebuah program memerlukan proses masukan (input) dan keluaran (output) data.
Dalam bahasa C telah tersedia fungsi pustaka, yaitu fungsi printf ( ) yang berguna untuk
menampilkan keluaran data dan fungsi scanf ( ) yang berguna untuk membaca masukan
data. Adapun prototipe dari kedua fungsi tersebut dapat dilihat dibawah ini :
printf (const char *format, .....);
scanf (const char *format, .....);
Contoh Program:
#include <stdio.h>
void main( )
{
/* Mencetak tulisan kelayar monitor*/
Printf (“saya belajar bahasa C”);
}
I. Karakter pembentuk Program
Program C ditulis dengan menggunakan sebagian dari karakter ASCII, yaitu
sebagai barikut :
1. Huruf Besar : A, B, C sampai Z
2. Huruf Kecil : a, b, c sampai z
3. Angka : 0,1,2 sampai 9
4. karakter Khusus : !, *,+,|,”,<,#,(,=,|,{,>,%,),~,;,}/,^,-,[,:,,,?,&,_,],’,.,spasi
J. Komentar
Pemberian komentar merupakan salah satu cara untuk memberikan dokumentasi
pada program yang akan berguna untuk membantu memperjelas alur logika penyusunan
program
Komentar diawali dengan simbol 2 karakter yang terdiri dari garis miring dan
asterik (/*) dan diakhiri dengan asterik dan garis miring (*/). Karakter-karakter
penunjuk komentar dapat diletakkan dimana saja didalam program dengan syarat setiap
/* harus ditutup dengan */
Komentar yang hanya terdiri dari 1 baris dapat menggunakan tanda //. Semua
karakter disebelah kanan tanda // diberlakukan sebagai komentar.
Contoh Program:
1. Menampilkan tulisan “Hello World” ke monitor
a. #include <stdio.h>
void main()
{
printf("Hello World");
}
b. #include <stdio.h>
void main()
{
int x=5;
printf(“Nilai x=%i“,x);
}
2. Menampilkan tulisan “Hello World” ke monitor dan menampilkan umur dengan
“meminjam” perintah cout dari C++ (harus dengan kompiler untuk bahasa C++)
a. #include <iostream.h>
void main()
{
cout<<"Hello World“<<endl;
}
b. #include <iostream.h>
void main()
{
int umur=18;
cout<<“Hallo“<<endl;
cout<<“Umur Saya=”<<umur;
cout<<“Tahun”<<endl;
}
BAB II
Tipe, Nama dan Nilai
1. Tujuan Instruksional Umum :
Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan
gambaran tentang tipe, nama dan nilai suatu variabel dan konstanta didalam
algoritma
2. Tujuan Instruksional Khusus :
Mahasiswa memahami dan mengerti penggunaan tipe, nama dan nilai pada
suatu variabel dan konstanta
1. Pengertian Dasar
Pada umumnya program komputer akan memanipulasi data (variabel, konstanta)
di dalam memori. Variabel adalah sebuah pengenal didalam program yang berguna
untuk menyimpan nilai dari tipe data tertentu. Adapun nilai yang disimpan dalam
variabel bersifat dinamis, artinya nilai tersebut dapat diubah selama program
dijalankan. Sedangkan konstanta adalah sebuah tetapan yang tidak dapat diubah
nilainya ketika program berjalan.
Setiap nilai data akan memiliki sebuah tipe. Type data adalah pola representasi
data di dalam memori komputer atau dengan kata lain sesuatu yang digunakan untuk
merepresentasikan jenis dari suatu nilai tertentu.
Suatu pemrograman sering digunakan untuk melakukan operasi-operasi tertentu
seperti perhitungan matematika, manipulasi string, manipulasi bit ataupun operasi
lainnya. Untuk melakukan hal tersebut harus diketahui operator yang sesuai dengan
bahasa pemrograman tertentu. Operator sendiri adalah tanda yang digunakan untuk
menyelesaikan suatu operasi tertentu.
Ekspresi merupakan kombinasi antara variabel, konstanta dan operator untuk
memproses (transformasi) suatu nilai menghasilkan keluaran yang diinginkan melalui
suatu perhitungan (komputasi).
2. Tipe data
Sebuah program yang akan diolah harus memiliki tipe data yang jelas. Berikut
adalah bagan yang menggambarkan jenis-jenis tipe data.
A. Tipe data dasar
Tipe data dasar adalah...., tipe data dasar memiliki 5 jenis data yaitu :
a. Tipe Logika/lojik
a. Nama Tipe adalah boolean (diambil dari nama matematikawan Inggris George
Boole).
b. Ranah Nilai : true (benar) dan false (salah).
c. Konstanta : true dan false.
d. Operasi : operasi logika atau operasi boolean, dengan hasilnya nilai dalam
ranah nilai boolean (true atau false). Operasi yang umum digunakan adalah :
not, and, or dan xor.
A B Not A A and B A or B A xor B
true true false true True false
true false false false True true
false true true false true true
false false true false false false
Type
dasar
bentukan
logika
bil. bulat
bil. riil
karakter
string
Nama baru tipe dasar
Terstruktur
e. Dalam bahasa C:
false = 0 dan true = 1
not = ! ; and = &&; or = ||
Contoh :
Algoritma Tipe_Logika
{demo penggunaan tipe data logika dan operatornya}
Deklarasi
Algoritma:
write(5=5)
write(5=2)
write(not true)
write(not false)
write(true and false)
write(true or false)
#include <iostream.h>
void main() {
cout<<"nilai 5==5 -> "<<(5==5)<<endl;
cout<<"nilai 5==2 -> "<<(5==2)<<endl;
cout<<"nilai !1 -> "<<(! 1)<<endl;
cout<<"nilai !0 -> "<<(! 0)<<endl;
cout<<"nilai 1&&0 -> "<<(1 && 0)<<endl;
cout<<"nilai 1||0 -> "<<(1 || 0)<<endl;
}
b. Tipe bil bulat
Bilangan yang tidak mengandung pecahan desimal.
a. Nama Tipe adalah integer.
b. Ranah Nilai : secara teoritis tipe bilangan bulat mempunyai ranah nilai yang
tidak terbatas asalkan nilainya tidak mengandung titik desimal.
Dalam compilator Turbo Pascal, tipe integer direpresentasikan:
Tipe Rentang nilai Format
byte 0 .. 255 Unsigned 8 bit shortint -128 .. 127 signed 8 bit word 0 .. 65535 Unsigned 16 bit integer -32768 .. 32767 signed 16 bit longint -2147483648 .. 2147483647 signed 32 bit
i. Konstanta : harus ditulis tanpa mengandung titik desimal.
Contoh : 75 -13 0 8869
ii. Operasi :
Operasi Matematika
Hasil operasi matematika berupa nilai bertipe bilangan bulat juga.
Operator yang berlaku : +, -, *, div dan mod
Operasi Perbandingan
Hasil operasi berupa nilai boolean, operator yang berlaku : < , <= , > , >=
, = , <>
c. Secara teoritis range untuk integer tidak terbatas, tergantung prakteknya.
Biasanya tergantung kompilator. Dalam bahasa C range untuk integer dalam
kompilator Turbo C++ 4,5 tipe data 16 bit adalah sbb:
c. Bilangan Real (floating-point)
a. Nama Tipe adalah real.
b. Ranah Nilai : secara teoritis tipe bilangan bulat mempunyai ranah nilai yang
tidak terbatas. Rentang nilai adalah dari minus tak hingga sampai plus tak
hingga. Tipe real direpresentasikan :
Tipe Rentang nilai Format Real 2.9 x 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
1. Konstanta : harus ditulis dengan tanda desimal.
Contoh : 0.78 -14.233476300+E8 0.0 99.0
2. Operasi :
i. Operasi Matematika
Hasil operasi
matematika berupa nilai bertipe bilangan riil juga. Operator yang
berlaku : +, -, *, dan /.
ii. Operasi Perbandingan
Hasil operasi berupa nilai boolean, operator yang berlaku : < , <= , > , >=
, ?.
c. Secara teoritis range untuk bilangan rill pada suatu program tidak terbatas,
pada prakteknya biasanya tergantung dari kompilatornya. Range real dalam
kompilator Turbo C++ 4,5 tipe data 16 bit adalah sbb:
d. Karakter
Nama tipe: char
Range: seluruh simbol dalam tabel ASCII yaitu huruf (‘a’..’z’,’A’..’Z’), angka
(‘0’..’9’), tanda baca (‘,’,’.’,’!’… dll), karakter khusus (‘$’,’#’,’%’…dll).Dalam
bahasa C representasi tipe data bilangan bulat dan karakter adalah sama, integer 65
sama dengan ‘A’ di dalam ASCII. Sehingga tipe data karakter dapat dideklarasikan
sebagai tipe data integer.
Tipe karakter dalam kompilator Turbo C++ 4,5 adalah char
e. String
a. Nama Tipe adalah string.
b. Ranah Nilai : deretan karakter yang telah didefinisikan pada ranah karakter.
c. Konstanta : harus diapit oleh tanda petik tunggal.
Contoh : ‘Palembang’, ‘ ABC1234’, ‘m’, ‘1234’.
String kosong (null) adalah string yang panjangnya nol, dan dilambangkan
dengan ‘’.
d. Operasi :
a. Operasi Penyambungan
Operasi ‘+’ merupakan operasi penyambungan
Contoh :
‘Teknik ’ + ‘Informatika’ = ‘Teknik Informatika’
b. Operasi Perbandingan
Hasil operasi berupa nilai boolean, operator yang berlaku : < , <= , > , >=
, =, ?.
e. Tipe string dalam kompilator Turbo C++ 4,5 adalah char[n], dimana n adalah
jumlah karakter dari string tersebut.
B. Tipe Bentukan
1. Tipe dasar yang diberi Nama Tipe Baru
Pemberian nama baru terhadap tipe dasar yang sudah dikenal. Kata kunci type.
Ranah nilai, cara menulis tetapan, dan operasi–operasi terhadap tipe baru tidak
berubah, tetap sama dengan tipe dasar aslinya.
Notasi :
type nama_tipe_baru : tipe_dasar
Contoh : type BilanganBulat : integer
2. Rekaman 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 oleh pemrogram. Rekaman disebut juga tipe
terstruktur.
Notasi :
type nama_rekaman record < data1 : tipedata1, data2 : tipedata2, data3 : tipedata3, ..... >
Contoh : type Titik : record < x : real,
y : real > P : Titik
jika P dideklarasikan sebagai Titik maka mengacu field pada P adalah P.x
dan P.y.
C. Nama
Setiap sesuatu (objek) memiliki nama, untuk mudah membedakan, mengacu,
mengidentifikasi-nya. Dalam algoritma nama dipakai sebagai pendefinisian
“sesuatu” dan pemrogram mengacu “sesuatu” itu melalui namanya. Sehingga nama
haruslah unik, tidak boleh ada dua nama yang sama.
Aturan pemberian Nama (pengenal/identifier):
1. Nama harus dimulai dari alfabet, tidak boleh dimulai dari angka, spasi atau
karakter khusus;
2. Karakter penyusun nama hanya boleh huruf alfabet, angka dan “_”;
3. Nama tidak boleh mengandung operator aritmetika, operator relasi, tanda baca,
dan karakter khusus lainnya;
4. Karakter-karakter di dalam nama tidak boleh dipisahkan dengan spasi.
Contoh penamaan yang salah:
Nama Mhs
2lima
A 1
Apa?
Rata-rata
Contoh penamaan yang benar:
Nama_Mhs atau NamaMhs
Lima2
A1
Apa
Ratarata atau Rata_rata
‘Sesuatu’ dalam pemrograman dapat berupa :
1. Peubah (variable)
Tempat penyimpan data/informasi di memori yang isinya dapat diubah.
Contoh :
Deklarasi :
X, nilai, jumlah : real
K : integer
C : char
2. Konstanta (constant)
Tempat penyimpan di memori yang isinya tetap selama pelaksanaan program
dan tidak dapat diubah. Notasinya adalah const
Contoh :
Deklarasi : const phi = 3.14 const Nmaks = 100
3. Tipe bentukan
Nama tipe bentukan diberikan oleh pemrogram.
Contoh :
Deklarasi : type Titik : record < x : real, y : real> type jam : record < hh : integer, mm : integer, dd : integer > P : Titik J1, j2 : jam
4. Nama Fungsi
Contoh :
Deklarasi : function Maksimum(a,b : integer) ? integer {mengembalikan nilai terbesar antara a dan b}
5. Nama Prosedur
Contoh :
Deklarasi : procedure Tukar(input/output a,b : integer) {menukarkan nilai a dan b}
D. Operator
Operator adalah tanda yang digunakan untuk menyelesaikan suatu operasi tertentu.
Operator yang akan dibahas akan dikelompokkan menjadi 4 bagian besar yaitu :
a. Operator assigment
Operator assigment adalah suatu operator penugasan yang digunakan
untuk memasukan nilai kedalam suatu variabel. Dalam bahasa C operator
assigment dilambangkan dengan tanda dengan (=)
Contoh : x = 2;
Artinya sintak tersebut memasukan nilai 2 kedalam variabel x.
Berbeda dengan kebanyakan bahasa pemrograman lainnya, bahasa C juga
menawarkan cara penulisan sintak untuk mempersingkat proses assigment.
Sebagai contoh : statement j= j+4 bisa ditulis j+=4. Berikut bentuk
penyingkatan yang terdapat dalam bahasa C:
Contoh Statement Bentuk Penyingkatan J =J + 4 J += 4 J =J - 4 J -= 4 J =J * 4 J *= 4 J =J / 4 J /= 4 J =J % 4 J %= 4 J =J << 4 J <<= 4 J =J >> 4 J >>= 4 J =J & 4 J &= 4 J =J ^ 4 J ^= 4 J =J | 4 J |= 4
b. Operator unary
Operator unary adalah operator yang digunakan untuk melakukan operasi-
operasi matematika yang hanya melibat satu buah operand. Dalam bahasa C,
yang termasuk kedalam operand unary adalah seperti tampak pada tabel
dibawah ini :
Operator Jenis Operator Contoh - Membuat nilai negatif - 10 + Membuat nilai positif + 10 ++ Increment ( menambahkan
nilai 1) x ++
-- Decrement ( mengurangi nilai 1 )
x --
c. Operator binary
Operator binary adalah operator yang digunakan untuk melakukan operasi yang
melibatkan 2 buah operand. Operator binary dibagi menjadi 4 jenis yaitu :
1. Operator Aritmetika
Operator yang berfungsi untuk melakukan operasi-operasi aritmatika.
Berikut adalah operator-operator aritmetika
Opr C Arti Hasil
* * Kali Integer
+ + Tambah integer
- - Kurang integer
/ / Bagi real
div div(..,..) Bagi bulat integer
mod % Sisa pembagian bulat integer
abs abs() Nilai mutlak Integer>0
^ pow(..,2) Pangkat integer
Catatan : : Bahasa C tidak punya operator tersebut maka gantinya
berupa fungsi
2. Operator Logika
Adalah operator yang digunakan didalam operator yang hanya dapat
menghasilkan nilai benar (true) dan salah (false). Nilai ini disebut boolean.
Bahasa C menyediakan tipe data khusus yaitu menggunakan nilai selain 0
untuk benar dan nilai 0 untuk salah.
(catatan : sudah dibahas di data dasar logika)
3. Operator relasional
Operator relasional adalah operator yang digunakan untuk menentukan
relasi atau hubungan dari 2 buah nilai atau operand.
Berikut ini operator yang termasuk kedalam operator relational didalam
bahasa C
Opr C Arti Hasil
< < Lebih kecil Boolean
≤ <= Lebih kecil atau sama dengan boolean
> > Lebih besar boolean
≥ >= Lebih besar atau sama dengan boolean
= == Sama dengan boolean
≠ != Tidak sama dengan boolean
4. operator bitwise
Operator bitwise digunakan untuk menyelesaikan operasi-operasi bilangan
dalam bentuk biner yang dilakukan bit demi bit. Operasi ini vital digunakan
apabila yang dibuat adalah program yang berinteraksi dengan perangkat
keras.
d. Operator ternary
Operator yang melibatkan 3 buah operand. Adapun bentuk umum dari
penggunaan operator ternary adalah :
Ekspresi 1 ? ekspresi 2; ekspresi 3;
Apabila ekspresi1 bernilai benar maka program akan mengerjakan ekspreasi 2
sedangkan jika salah program akan mengerjakan ekspresi3
E. Nilai
Nilai adalah besaran dari tipe data yang sudah didefinisikan. Nilai dapat berupa isi
yang disimpan oleh nama peubah atau nama konstanta, nilai dari hasil perhitungan
atau nilai yang dikirim oleh fungsi.
1. Pengisian Nilai ke dalam Nama Peubah
a. Pengisian Nilai secara langsung (menggunakan operator assignment)
memasukan sebuah nilai ke dalam nama peubah langsung di dalam teks
algoritma dengan syarat bertipe sama.
Notasi algoritmanya
Nilai yang diberikan ke dalam peubah dapat berupa :
peubah konstanta
peubah1 peubah2
peubah ekspresi
b. Pembacaan Nilai dari Piranti Masukan
Nilai untuk nama peubah dapat diisi dari piranti masukan, misal dari papan
kunci, operasi ini dinamakan pembacaan data, notasinya read
read (nama1, nama2,..., namaN)
2. Ekspresi
a. Ekspresi Aritmatik
ekspresi yang baik operand-nya bertipe numerik dan hasilnya juga bertipe
numerik.
Contoh :
c a + b
dimana a, b dan c bertipe numerik (integer atau real)
b. Ekspresi Relasional
ekspresi dengan operator <, =, >, =, =, dan ?, not, and, or dan xor. Hasilnya
bertipe boolean (true atau false).
Misalkan : Ketemu bernilai false, ada bernilai true, x bernilai 8
Contoh ekspresi :
not ada { hasil : false }
ada or ketemu { hasil : true }
X < 5 { hasil : false}
c. Ekspresi String
ekspresi dengan operator ‘+’ (operator penyambungan).
3. Menuliskan Nilai ke Piranti Keluaran
Nilai yang disimpan dalam memori dapat ditampilkan ke piranti keluaran,
notasinya write
write (nama1, nama2,..., namaN)
write (tetapan)
write (ekspresi, nama, tetapan)
Translasi Notasi Algoritma ke Dalam Notasi Bahasa C
Kelompok Algoritmik C
1.penugasan
2.pembacaan
3.penulisan
read
write
=
scanf printf
Konversi Tipe Data
Dalam bahasa C, setiap tipe data memiliki konversi yang akan dipakai pada saat operasi
masukan dan keluaran. Karakter konversi tipe data dapat dilihat pada tabel berikut :
karakter Jenis Masukan / keluaran
d
i
o
u
x
X
f
e
E
c
s
Signed decimal integer
Signed decimal integer
Unsigned octal integer
Unsigned decimal integer
Unsigned hexadecimal integer dengan a,b,c,d,e,f
Unsigned hexadecimal integer dengan A,B,C,D,E,F
Signed floating-point number dalam bentuk [-]dddd.dddd
Signed floating-point number dalam bentuk [-]d.dddd atau
e[+|-] ddd
Seperti e tetapi dengan huruf E
Karakter
Sejumlah karakter
Catatan :
Signed dan Unsigned adalah modifier untuk menggabung tipe data
Contoh :
Algoritma_konversi_tipe_data_numerik {Melihat hasil keluaran dari konversi tipe numerik} Deklarasi : i1, i2,l1 : integer f1 : real Deskripsi :
i1=123 i2=-4567 l1=1234567890 f1=123.456
write(" 1 2 ") write("12345678901234567890 ") write (i1,i2) write (i1,i2) write (i1) write ("i2) writeln; write (" 1 2") write ("12345678901234567890") write (i1,i2); write (l1); write (l1); write (f1); write (f1); write (f1); write (f1,f1); write (i1,i1,i1);
Algoritma_tipe_data_karakter {Melihat hasil keluaran dari konversi tipe numerik} Deklarasi : Const kim1 = “algoritma dan pemrograman” Const kim2 = “algo” Const kim3 = “pemrograman” Const huruf =”c”
Deskripsi : write(" 1 2 3 ") write ("123456789012345678901234567890") write (kim1) write (kim1) write (kim1) write (huruf) write (huruf) writeln write (" 1 2 3 ") write ("123456789012345678901234567890") write (kim2,kim3) write ("web","internet"); write (kim2,kim3); printf("web","internet"); }
BAB III
Algoritma Beruntun
1. Tujuan Instruksional Umum
Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan
gambaran tentang algoritma beruntun
2. Tujuan Instruksional Khusus
Mahasiswa memahami dan mengerti penggunaan tipe bentukan dan
algoritma beruntun dan mampu menyelesaikan masalah yang berkaitan dengan
algoritma beruntun
Materi :
1. Pendahuluan
Algoritma merupakan runtunan satu atau lebih instruksi yang berarti bahwa :
a. Tiap instruksi dikerjakan satu per satu.
b. Tiap instruksi dilaksanakan tepat sekali, tidak ada instruksi yang diulang.
c. Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi
sebagai tertulis di dalam teks algoritma.
d. Akhir dari instruksi terakhir merupakan akhir algoritma.
2. Pengaruh Urutan Instruksi
Urutan instruksi dalam algoritma adalah penting. Urutan instruksi menunjukan
urutan logik penyelesaian masalah.
Urutan instruksi yang berbeda mungkin tidak ada pengaruh terhadap solusi
persoalan, tetapi mungkin juga menghasilkan keluaran yang berbeda, tergantung
pada masalahnya.
Contoh kasus 1 : urutan instruksi tidak berpengaruh terhadap solusi persoalan.
Dibaca dua buah nilai integer dari keyboard, A dan B. Hitung jumlah keduanya dan
hasil kali keduanya, lalu cetak hasil jumlah dan kali ke piranti keluaran.
Algoritma Runtunan_1
{di baca dua buah bilangan integer kemudian hitung
penjumlahan dan perkalian dua buah bilangan tersebut, dan
tampilkan hasilnya ke layar}
Deklarasi :
A, B, C, D : integer
Deskripsi :
read (A, B) {1}
C A + B {2}
D A * B {3}
write (C, D) {4}
Konversi ke bahasa program C
#include <stdio.h>
Hasil agoritma di atas sama jika urutan no. 2 dan 3 diubah (ditukarkan) sebagai
berikut :
Algoritma Runtunan_2
{di baca dua buah bilangan integer kemudian hitung
penjumlahan dan perkalian dua buah bilangan tersebut, dan
tampilkan hasilnya ke layar}
Deklarasi :
A, B, C, D : integer
Deskripsi :
read (A, B)
D A * B
C A + B
write (C, D)
Tetapi jika algoritma di atas urutan no. 1, 2 dan 3 diubah (ditukarkan ) maka
menghasil keluaran yang berbeda (tidak sama) seperti sebagai berikut :
Algoritma Runtunan_3 {di baca dua buah bilangan integer kemudian hitung penjumlahan dan perkalian dua buah bilangan tersebut, dan tampilkan hasilnya ke layar} Deklarasi :
A, B, C, D : integer
Deskripsi :
read (A, B)
C A+B
D C * B write (C, D)
3. Contoh-contoh runtunan
Contoh 1 :
Tulis algoritma untuk menghitung komisi yang diterima salesman berdasarkan nilai
penjualan yang dicapainya. Salesman akan mendapat komisi sebesar 5 % dari hasil
penjualannya. Masukannya nama salesman dan hasil penjualan kemudian tampilkan
nama salesman dan besarnya komisi yang diterimanya.
Algoritma Komisi_Salesmen
{di baca nama dan hasil penjualan salesman, kemudian hitung
besarnya komisi sebesar 5 % dari hasil penjualan dan tampilkan
nama dan komisinya ke layar}
Deklarasi :
nama : string
NilaiPenjualan : real
Komisi : real
Deskripsi :
read (nama, NilaiPenjualan)
Komisi 0.05 * NilaiPenjualan
write (nama, Komisi)
Contoh 2 :
Tulis algoritma untuk membaca dua buah titik P1 dan P2, tentukan titik tengah dari
kedua titik tersebut.
Algoritma Titik_tengah
{di baca titik P1, P2, tentukan titik tengahnya dan tampilkan
titik tengahnya ke layar}
Deklarasi :
Type titik = record
< x : real,
y : real >
P1, P2, P3 : titik
Deskripsi :
read (P1.x, P1.y)
read (P2.x, P2.y)
P3.x (P1.x + P2.x)/2
P3.y (P1.y + P2.y)/2
write (P3.x, P3.y)
Contoh 3 :
Tulis algoritma untuk membaca waktu tempuh seorang pelari dalam jam-menit-
detik, kemudian konversikan waktu tersebut dalam detik.
Algoritma Konversi_jam_ke_detik
{di baca jam-menit-detik (jj:mm:dd), konversikan ke dalam
detik dan tampilkan ke layar}
Deklarasi :
Type jam = record
< jj, mm, dd : integer >
j : jam
tot_detik : integer
Deskripsi :
read (j.jj, j.mm, j.dd)
Tot_detik j.jj*3600 + j.mm * 60 + j.dd
write (Tot_detik)
Contoh 4:
Tulis algoritma untuk membaca waktu dalam detik, kemudian konversikan waktu
tersebut dalam jam-menit-detik.
Algoritma Konversi_det_ke_jam
{di baca total detik kemudian konversikan kedalam jam-menit-
detik (jj:mm:dd), dan tampilkan ke layar}
Deklarasi :
Type jam = record
< jj, mm, dd : integer >
j : jam
tot_detik, sisa : integer
Deskripsi :
read (Tot_detik)
j.jj tot_detik div 3600
sisa tot_detik mod 3600
j.mm sisa div 60
j.dd sisa mod 60
write (j.jj, j.mm, j.dd)
Contoh :
Algoritma_Luas_PP
Deklarasi :
x,y,z : integer
Deskripsi :
write (“masukan panjang dan lebar”) read (x) read (y) z x * y write (“tampilkan luas”) write (z)
Program : output :
Contoh :
Algoritma_Segitiga_Siku2
Deklarasi :
a,b,c : integer
Deskripsi :
write (“masukan panjang siku a”) read (a) write (“masukan panjang siku b”) read (b) c sqrt (sqr(a) + sqr(b)) write (“tampilkan nilai c”) write (c)
Soal Latihan :
1. Tentukan total uang yang harus dibayar, jika seorang pembeli akan membeli x kg
telur ayam yang berharga Rp 14.000/kg, y kotak keju yang berharga Rp
15.000/kotak dan z kaleng susu yang berharga Rp 35.000/kaleng.
(Gunakan konstanta untuk harga telur, keju dan susu)
2. Tentukan jumlah lembaran hasil pertukaran uang senilai x rupiah. ( a lembar 50rb, b
lembar 20rb, c lembar 10rb, d lembar 5rb, e lembar 1rb, f keping 500, g keping 200,
h keping 100, dan i keping 50 rupiah).
(Niai uang harus merupakan kelipatan 50 rupiah)
3. Sebuah proyek dikerjakan selama x hari. Tentukan berapa tahun, berapa bulan dan
berapa hari proyek tersebut dikerjakan bila 1 tahun = 365 hari, 1 bulan = 30 hari
4. dibaca 2 buah tanggal (dd;mm;yy) tuliskan algoritma dan program untuk menghitung
selisih waktu kedua tanggal tersebut
5. Buatlah algoritma dan program wartel jika diketahui lama pulsa = 5 detik dan biaya
perpulsa adalah 150.
6. Tentukan besar tahanan dengan ketentukan : masukannya adalah dua buah harga
tahanan dari keyboard (R1, R2 : real), menghitung besar tahanan total jika kedua
tahanan tersebut dihubungkan secara
seri = (R1+R2) dan
menampilkan hasil perhitungan R_total_seri dan R_total_paralel ke layar monitor.
7. Definisikan sebuah tipe TITIK yang terdiri atas komponen koordinat X(integer) dan
Y(integer). Tulislah sebuah program yang :
• mendefinisikan suatu “Konstanta” titik pusat O(0,0)
• menerima masukan koordinat titik Q
• menghitung jarak OQ
• menentukan Q1, yaitu pencerminan Q terhadap sumbu X
• menentukan Q2, yaitu pencerminan Q terhadap titik O (0,0)
• menampilkan hasil perhitungan ke layar monitor dengan format tampilan :
Program Jarak Titik Q
Koordinat titik Q : 3 4 Q(3,4)
Jarak OQ : xxx.xx satuan
Pencerminan terhadap sumbu x :Q1(x,x)
Pencerminan terhadap O(0,0) :Q2(x,x)
Rumus jarak : d =
2/11/11
RRparalel
+=
BAB IV
Algoritma Kondisi
1. Tujuan Instruksional Umum :
Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan
gambaran tentang algoritma kondisi
2. Tujuan Instruksional Khusus :
Mahasiswa memahami dan mengerti penggunaan algoritma kondisi dan mampu
menyelesaikan masalah yang berkaitan dengan algoritma kondisi
1. Pendahuluan
Struktur runtunan hanya terdapat pada program sederhana. Pada umumnya,
masalah yang akan diselesaikan memiliki beberapa alternatif pelaksanaan aksi.
Suatu aksi hanya dilakukan bila persyaratan atau kondisi tertentu dipenuhi
2. Satu Kasus
Notasi algoritmik :
if kondisi then
Aksi
endif
Aksi (dapat berupa satu atau lebih aksi) hanya akan dilaksanakan bila kondisi
bernilai benar (true), jika kondisi bernilai salah, tidak ada aksi apapun yang
dikerjakan.
3. Contoh-contoh analisis dengan satu kasus
Contoh 1:
Dibaca sebuah bilangan bulat dari piranti masukan. Diminta mencetak pesan
‘bilangan genap’ jika bilangan tersebut adalah genap.
Algoritma Bilangan_Genap
{mencetak pesan ‘bilangan genap’ jika sebuah bilangan bulat yang
dibaca merupakan bilangan genap}
Deklarasi :
Bil : integer
Deskripsi :
read (bil)
if bil mod 2 = 0 then
write (‘bilangan genap’)
endif
Contoh 2:
Dibaca sebuah karakter dari piranti masukan. Diminta mencetak pesan ‘huruf
hidup’ jika karakter tersebut merupakan huruf vokal.
Algoritma Huruf_vokal
{mencetak pesan ‘Huruf hidup’ jika sebuah karakter yang dibaca
merupakan huruf vokal}
Deklarasi :
c : character
Deskripsi :
read (c)
if (c=’a’)or(c=’i’)or(c=’u’)or(c=’e’)or(c=’o’)then
write (‘Huruf hidup’)
endif
4. Dua Kasus
Notasi algoritmik :
if kondisi then
Aksi1
else
Aksi2
endif
Aksi1 (dapat berupa satu atau lebih aksi) akan dilaksanakan bila kondisi bernilai
benar (true), jika kondisi bernilai salah maka aksi2 yang akan dilaksanakan.
5. Contoh-contoh analisis dengan dua kasus
Contoh 1:
Dibaca sebuah bilangan bulat dari piranti masukan. Diminta mencetak pesan
‘bilangan genap’ jika bilangan tersebut adalah genap atau bilangan ganjil jika
bilangan tersebut adalah ganjil.
Algoritma Genap_Ganjil
{mencetak pesan ‘bilangan genap’ jika sebuah bilangan bulat yang
dibaca merupakan bilangan genap atau ‘bilangan ganjil’ jika bilangan
tsb ganjil}
Deklarasi :
Bil : integer
Deskripsi :
read (bil)
if bil mod 2 = 0 then
write (‘bilangan genap’)
else
write (‘bilangan ganjil’)
endif
Contoh 2:
Tulis algoritma yang membaca dua buah bilangan bulat dari piranti masukan, lalu
tentukan bilangan terbesar dari kedua bilangan tersebut.
Algoritma Maksimum
{menentukan bilangan terbesar dari dua buah bilangan bulat}
Deklarasi :
a,b : integer
Deskripsi :
read (a,b)
if a > b then
write (‘Bilangan terbesar : ’,a)
else
write (‘Bilangan terbesar : ’,b)
endif
6. Tiga Kasus atau Lebih
Notasi algoritmik :
if kondisi1 then
Aksi1
else if kondisi2 then
Aksi2
else If kondisi3 then
Aksi3
endif
endif
endif
7. Contoh-contoh analisis dengan dua kasus
Contoh 1:
Tulis algoritma yang membaca sebuah bilangan bulat, lalu menentukan apakah
bilangan tersebut positif, negatif atau nol.
Algoritma Jenis_bilangan
{mencetak pesan ‘bilangan positif’ jika bilangan bulat yang dibaca > 0,
atau ‘bilangan negatif’ jika < 0 atau ‘nol’ jika = 0}
Deklarasi :
Bil : integer
Deskripsi :
read (bil)
if bil > 0 then
write (‘bilangan positif’)
else
if bil < 0 then
write (‘bilangan negatif’)
else
if bil = 0 then
write (‘nol’)
endif
endif
endif
8. Struktur Case
Notasi algoritmik :
Case (nama) of
Kondisi1 : Aksi1
kondisi2 : Aksi2
kondisi3 : Aksi3
. .
kondisiN : AksiN
[otherwise aksix]
endcase
9. Contoh-contoh analisis dengan dua kasus
Contoh 1:
Tulis algoritma yang membaca sebuah titik, lalu menentukan kuadran titik
tersebut pada bidang kartesian.
Algoritma Kuadran_titik
{menentukan kuadran sebuah titik di bidang kartesian}
Deklarasi :
Type titik : record <x: real, y : real>
P : titik
Deskripsi :
read (p.x,p.y)
case (p.x, p.y)
(p.x > 0)and (p.y > 0) : write (‘kuadran 1’)
(p.x < 0)and (p.y > 0) : write (‘kuadran 2’)
(p.x < 0)and (p.y < 0) : write (‘kuadran 3’)
(p.x > 0)and (p.y < 0) : write (‘kuadran 4’)
otherwise write (‘tidak terletak di kuadran manapun’)
endcase
10. Translasi Notasi Algoritma ke Dalam Notasi Bahasa C
Kelompok Algoritmik C
1.IF-THEN
If konsisi then
Aksi
endif
If (kondisi)
Aksi;
Bila aksi lebih dari satu buah :
If (kondisi)
{
Aksi1;
Aksi2;
...
aksiN;
}
2.IF-THEN-
ELSE
If konsisi then
Aksi1
Else
Aksi2
endif
If (kondisi)
Aksi1;
Else
Aksi2;
3.CASE
Case (nama) of
<kondisi1> : aksi1
<kondisi2> : aksi2
...
<kondisiN> : aksiN
[otherwise aksix]
endcase
Cara 1 : utk nilai-nilai bertipe
integer, char atau boolean
Switch (ekspresion)
{
Case constant1 : statement1;
Case constant2 : statement2;
....
Case constant_n : statement_n;
default: statement_x;
}
Cara 2 : utk kondisi berupa
ekspresi yang operatornya bukan
‘=’ atau bila konstanta ruas
kanan tidak bertipe integer, char
atau boolean
If (kondisi1)
Aksi1
Else
If (kondisi2)
Aksi2
else
...
11. Contoh Algoritma dan Program : 1. Algoritma_Penentuan_nama_ibukota Deklarasi : ibk : string Deskripsi : write (“ketik nama ibukota di jawa :”) read (ibk) write (“ibukota dari ”) if ibk = “serang” then write (“banten”) else if ibk = “jakarta” then write (“DKI Jakarta”) else if ibk = “bandung” then write (“Jawa Barat”) else if ibk = “semarang” then write (“jawa Tengah”) else if ibk = “Yokyakarta” then write (“DI Yogyakarta”) else if ibk = “Surabaya” then write (“Jawa Timur”) else write (“salah memasukan nama kota”) endif endif endif endif endif endif
Output :
2. Algoritma_Penentuan_nama_ibukota Deklarasi : bulan : integer Deskripsi : read (bulan) write (“nama bulan adalah”) case (bulan) of 1 : write (“januari”) 2 : write (“pebruari”) 3 : write (“maret”) 4 : write (“april”) 5 : write (“mei”) 6 : write (“juni”) 7 : write (“juli”) 8 : write (“agustus”) 9 : write (“september”) 10 : write (“oktober”) 11 : write (“nopember”) otherwise : write (“desember”)
Output :
3. Algoritma_Kelulusan
\
Output :
Soal Latihan :
1. Buatlah algoritma dan program untuk menentukan luas suatu bangunan dengan pilihan :
a. bangun segitiga b. bangun bola c. bangun trapesium d. bangun tabung
2. Buatlah algoritma dan program untuk menghitung akar kuadrat dengan
menggunakan rumus abc : a
DbX22,1±−
= , D = b2 – 4ac
Jika D > 0, maka a
DbX21+−
= , a
DbX22−−
=
Jika D = 0 maka abXX
221−
==
Jika D < 0 maka “akar imajiner”
3. Buatlah algoritma dan program untuk menentukan grade nilai dengan ketentuan A : nilai > 85 B : 70 < nilai <= 85 C : 60 < nilai <= 70 D : 45 < nilai <= 60 E : nilai < 45
4. Buatlah algoritma dan program untuk menentukan gaji karyawan dengan ketentuan :
Gaji = gaji pokok + tunjangan + transport – pajak Tunjangan = tunjangan istri + tunjangan anak Pajak = 5% * (gaji pokok + tunjangan + transport) Ctt : jumlah hari kerja maksimal 26 hari
gol Gajipokok Tunjangan istri Tunjangan anak Transport/hari 1 1500000 15000 2 1250000 12500 3 1000000
10%*gaji pokok
5%*gaji pokok (per-anak. Maks jumlah anak 3) 10000
Tentukan juga keluaran dibawah ini, berdasarkan data diatas Karyawan Gol Status Jumlah anak Hari kerja gaji
A 1 duda 3 24 B 1 beristri 0 26 C 2 beristri 2 20 D 3 Belum
nikah - 26
5. Tentukan total yang harus dibayar oleh seseorang jika harus membeli x kaleng susu dengan ketentuan :
Merk\Ukuran Besar Sedang Kecil
Bendera 80000 50000 30000 Dancow 75000 46000 29000 Indomilk 81000 54000 35000
BAB V
Algoritma Pengulangan
1. Tujuan Instruksional Umum :
Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan
gambaran tentang algoritma pengulangan
2. Tujuan Instruksional Khusus
Mahasiswa memahami dan mengerti penggunaan algoritma pengulangan dan
mampu menyelesaikan masalah yang berkaitan dengan algoritma pengulangan
1. Pendahuluan
Salah satu kelebihan komputer dibandingkan dengan manusia adalah
kemampuannya untuk melaksananakan suatu instruksi berulang kali tanpa mengenal
lelah dan bosan. Di dalam algoritma pengulangan atau kalang (repetition atau loop)
dapat dilakukan sejumlah kali atau sampai kondisi berhenti pengulangan tercapai.
2. Struktur Pengulangan
Secara umum terdiri atas dua bagian :
a. kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk
melaksanakan pengulangan yang dinyatakan secara eksplisit oleh pemrogram
atau implisit oleh komputer.
b. badan pengulangan, yaitu bagian algoritma yang diulang.
Struktur pengulangan biasanya (opsional) disertai bagian :
a. inisialisasi, yaitu aksi yang dilakukan sebelum pengulangan dilakukan pertama
kali.
b. Terminasi, yaitu aksi yang dilakukan setelah pengulangan selesai dilaksanakan.
Struktur umum :
<inisialisasi>
awal pengulangan
badan pengulangan
akhir pengulangan
<terminasi>
Tiga macam notasi struktur pengulangan :
a. struktur FOR
b. struktur WHILE
c. struktur REPEAT
3. Struktur FOR
Digunakan untuk menghasilkan pengulangan sejumlah kali yang dispesifikasikan.
Jumlah pengulangan diketahui atau dapat ditentukan sebelum eksekusi.
Notasi algoritmik :
a. FOR menaik
For pencacah nilai_awal to nilai_akhir do
Aksi
endfor
Keterangan :
1. pencacah harus bertipe data integer atau karakter.
2. aksi adalah satu atau lebih instruksi yang diulang.
3. nilai-awal harus <= nilai-akhir, jika tidak maka badan pengulangan tidak
dimasuki.
4. nilai pencacah diinisialisasi dengan nilai_awal kemudian secara otomatis
bertambah satu sampai nilai_akhir tercapai.
5. banyak pengulangan yaitu (nilai_akhir – nilai_awal +1).
Contoh 1:
Diinginkan mencetak angka 1, 2, 3, .., 8 di layar dengan satu angka setiap baris.
Algoritma Cetak_Angka
{mencetak 1, 2, .., 8 ke piranti keluaran}
Deklarasi :
K: integer
Deskripsi :
for k 1 to 8 do
write (k)
endfor
Program : output :
Contoh 2
Menghitung rata-rata N buah bilangan yang dibaca dari piranti masukan.
Algoritma Hitung_rata
{mengitung rata-rata N buah bilangan bulat yang dibaca dari piranti masukan}
Deklarasi :
N: integer {jumlah data, > 0}
x: integer {bilangan bulat yg dibaca dari papan kunci}
k: integer {pencacah banyaknya pengulangan}
total : integer {pencacat jumlah nilai}
rerata: real {rata-rata nilai}
Deskripsi :
read (N)
total 0
for k 1 to N do
read (x)
total total + x
endfor
rerata total/N
write (rerata)
Program : output :
a. FOR menurun
For pencacah nilai_awal downto nilai_akhir do
Aksi
endfor
Keterangan :
1. pencacah harus bertipe data integer atau karakter.
2. aksi adalah satu atau lebih instruksi yang diulang.
3. nilai-awal harus >= nilai-akhir, jika tidak maka badan pengulangan tidak
dimasuki.
4. nilai pencacah diinisialisasi dengan nilai_awal kemudian secara otomatis
berkurang satu sampai nilai_akhir tercapai.
5. banyak pengulangan yaitu (nilai_ awal – nilai_ akhir +1).
Contoh 1:
Algoritma peluncuran roket dengan hitung mundur mulai 100, 99, .., 0.
Algoritma Peluncuran_Roket
{hitung mundur peluncuran roket}
Deklarasi :
K: integer
Deskripsi :
for k 100 downto 0 do
write (k)
endfor
write (‘GO’) {roket meluncur}
Program Output :
4. Struktur WHILE
Notasi algoritmik :
while kondisi do
Aksi
Endwhile
Keterangan :
Aksi ( atau runtunan aksi) akan dilaksanakan berulang kali selama kondisi
bernilai true, jika false maka badan pengulangan tidak akan dilaksanakan yang
berarti pengulangan selesai.
Contoh 1:
Diinginkan mencetak angka 1, 2, 3, .., 8 di layar dengan satu angka setiap baris.
Algoritma Cetak_Angka
{mencetak 1, 2, .., 8 ke piranti keluaran}
Deklarasi :
K: integer
Deskripsi :
K 1 {inisialisasi}
while k <= 8 do
write (k)
k k + 1
endwhile
Program : output :
Contoh 2
Menghitung rata-rata N buah bilangan yang dibaca dari piranti masukan.
Algoritma Hitung_rata
{mengitung rata-rata N buah bilangan bulat yang dibaca dari piranti
masukan}
Deklarasi :
N: integer {jumlah data, > 0}
x: integer {bilangan bulat yg dibaca dari papan kunci}
k: integer {pencacah banyaknya pengulangan}
jumlah: integer {pencacat jumlah nilai}
rerata: integer {rata-rata nilai}
Deskripsi :
read (N)
Jumlah 0
k 1
while k <= N do
read (x)
jumlah jumlah + x
k k + 1
endwhile
rerata jumlah/N
write (rerata)
Program output
5. Struktur REPEAT
Notasi algoritmik :
repeat
Aksi
Until kondisi
Keterangan :
Aksi ( atau runtunan aksi) akan dilaksanakan berulang kali sampai kondisi
bernilai true, jika kondisi bernilai false maka pengulangan masih terus
dilakukan.
Contoh 1:
Diinginkan mencetak angka 1, 2, 3, .., 8 di layar dengan satu angka setiap baris.
Algoritma Cetak_Angka
{mencetak 1, 2, .., 8 ke piranti keluaran}
Deklarasi :
K: integer
Deskripsi :
K 1 {inisialisasi}
repeat
write (k)
k k + 1
until k > 8
Contoh 2
Menghitung rata-rata N buah bilangan yang dibaca dari piranti masukan.
Algoritma Hitung_rata
{mengitung rata-rata N buah bilangan bulat yang dibaca dari piranti masukan}
Deklarasi :
N: integer {jumlah data, > 0}
x: integer {bilangan bulat yg dibaca dari papan kunci}
k: integer {pencacah banyaknya pengulangan}
jumlah: integer {pencacat jumlah nilai}
rerata: integer {rata-rata nilai}
Deskripsi :
read (N)
Jumlah 0
repeat
read (x)
jumlah jumlah + x
k k + 1
until k > N
rerata jumlah/N
write (rerata)
6. Struktur WHILE atau REPEAT
Untuk menyelesaikan persoalan-persoalan tertentu dapat digunakan struktur while
ataupun repeat, tetapi pada kebanyakan kasus, pemilihan struktur while atau
repeat bergantung pada natural dari persoalan. Ini artinya ada persoalan yang
hanya benar bila menggunakan struktur while tetapi bisa salah bila menggunakan
repeat atau sebaliknya.
Perbedaan mendasar dari struktur while dengan repeat yaitu :
Pada REPEAT, kondisi pengulangan diperiksa pada akhir pengulangan. Jadi, instruksi
di dalam badan pengulangan dilaksanakan dulu, barulah kondisi diperiksa, yang
berarti pengulangan dilaksanakan minimal satu kali.
Pada WHILE, kondisi pengulangan diperiksa di awal pengulangan. Jadi instruksi di
dlam badan pengulangan hanya dapat dilaksanakan bilai kondisi bernilai true,
yang berarti badan pengulangan mungkin tidak akan pernah dilaksanakan.
7. Translasi Notasi Algoritma ke Dalam Notasi Bahasa C
Kelompok Algoritmik C
1.FOR
FOR menaik
for pencacah a to b do
Aksi
endfor
FOR menurun
for pencacah a downto
b do
Aksi
endfor
FOR menaik
For (cacah = a; cacah <= b; cacah ++)
Aksi;
Bila aksi lebih dari satu buah :
For (cacah = a; cacah <= b; cacah ++)
{
Aksi1;
Aksi2;
Aksi3;
Aksi4;
}
FOR menurun
For (cacah = a; cacah >= b; cacah--)
Aksi;
Bila aksi lebih dari satu buah :
For (cacah = a; cacah >= b; cacah--)
{
Aksi1;
Aksi2;
Aksi3;
Aksi4;
}
2.WHILE
while konsisi do
Aksi1
Endwhile
while (kondisi)
Aksi;
bila aksi lebih dari satu maka runtunan
aksi diawali { dan diakhiri };
while (kondisi)
{
Aksi1;
Aksi2;
Aksi3;
}
3.REPEAT
repeat
aksi
until kondisi
/*sampai kondisi tidak
terpenuhi */
do
aksi;
while (kondisi)
bila aksi lebih dari satu maka runtunan
aksi diawali { dan diakhiri };
do
{
Aksi1;
Aksi2;
Aksi3;
}
while (kondisi)
/*selama kondisi terpenuhi */
Soal – soal :
1. Buatlah algoritma dan program untuk menampilkan output seperti dibawah ini :
2. Buatlah algoritma dan program untuk menampilkan output seperti dibawah ini
3. Buatlah algoritma dan program untuk menampilkan output seperti dibawah ini.
Gunakan perintah while untuk menghitung ulang luas persegi panjang
4. Buatlah algoritma dan program tidak menampilkan * jika angka adalah kelipatan 3
dengan tampilan output seperti dibawah ini
5. Buatlah algoritma dan program deret bilangan ganjil dengan tampilan output seperti
dibawah ini.
6. Buatlah algoritma dan program untuk menampilkan output seperti dibawah ini :
7. Buatlah algoritma dan program untuk menampilkan output seperti dibawah ini
8. Buatlah algoritma dan program untuk menampilkan output seperti dibawah ini :
9. Beberapa mahasiswa memiliki data nim, nama, ipk dan predikat. Predikat ditentukan dari ipk dengan ketentuan Ipk < 2.00 : kurang 2.00 <= ipk < 2.50 : cukup 2.50 <= ipk < 3.00 : baik 3.00 <= ipk < 3.50 : memuaskan Ipk >= 3.50 : cum laude
BAB VI
Prosedur
1. Tujuan Instruksional Umum :
Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan
gambaran tentang procedure
2. Tujuan Instruksional Khusus
Mahasiswa memahami dan mengerti penggunaan procedure dalam sebuah
algoritma dan program
Materi :
1. Pendahuluan
Dalam memprogram yang besar perlu memecah program menjadi beberapa
subprogram yang lebih kecil. Tiap subprogram kadangkala cukup independen dari
program utama sehingga programnya dapat dirancang tanpa mempertimbangkan
konteks tempat ia digunakan. Tiap subprogram disebut modul. Dalam bahasa
pemrograman modul disebut rutin, prosedur atau fungsi.
2. Pendefinisian Prosedur
Prosedur adalah modul program yang mengerjakan tugas/aktifitas yang spesifik dan
menghasilkan suatu efek besar. Efek besar tersebut diketahui dengan
membandingkan keadaan awal dengan keadaan akhir pada pelaksanaaan sebuah
prosedur.
Struktur prosedur sama dengan struktur algoritma yang sudah dikenal, yaitu ada
bagian judul (header) yang terdiri dari nama prosedur, deklarasi dan badan
prosedur.
Notasi algoritma :
Procedure Namaprosedur
{spesifikasi prosedur berisi penjelasan tentang apa
yang dilakukan oleh prosedur ini}
{IS : keadaan awal sebelum prosedur dilaksanakan }
{FS : keadaan akhir sesudah prosedur dilaksanakan}
Deklarasi :
{semua nama yang dipakai dalam prosedur dan hanya
berlaku lokal di dalam prosedur}
Deskripsi :
{badan prosedur, berisi kumpulan instruksi}
Contoh :
Menghitung rata-rata N buah bilangan yang dibaca dari piranti masukan.
procedure Hitung_rata
{mengitung rata-rata N buah bilangan bulat yang dibaca dari
piranti masukan}
{IS: sembarang}
{FS: nilai rata-rata seluruh bilangan bulat dicetak di piranti
keluaran}
Deklarasi :
N: integer {jumlah data, > 0}
x: integer {bilangan bulat yg dibaca dari papan kunci}
k: integer {pencacah banyaknya pengulangan}
jumlah : integer {pencacat jumlah nilai}
rerata : real
{rata-rata nilai}
Deskripsi :
read (N)
Jumlah 0
for k 1 to N do
read (x)
jumlah jumlah + x
endfor
rerata jumlah/N
write (rerata)
3. Pemanggilan Prosedur
Prosedur bukan program yang berdiri sendiri, jadi tidak dapat dieksekusi secara
langsung. Ini berarti instruksi-instruksi di dalam prosedur baru dapat dilaksanakan
bila prosedur tersebut diakses dengan cara memanggil namanya dari program
pemanggil (program utama atau modul lain).
Contoh program utama untuk memanggil prosedur Hitung_Rata
Algoritma Rata_Rata
{program utama untuk menghitungrata-rata N buah bilangan bulat}
Deklarasi :
Procedure Hitung_Rata
{mengitung rata-rata N buah bilangan bulat yang dibaca dari
piranti masukan}
Deskripsi :
write (‘menghitung rata-rata N buah bilangan bulat’)
Hitung_Rata
write (‘sukses’)
4. Nama Global atau Lokal
Nama-nama yang dideklarasikan di dalam prosedur hanya dikenal di dalam badan
prosedur ang bersangkutan dan ini dikatakan bersifat ‘lokal’.
Nama-nama yang dideklarasikan di dalam program utama dikatakan bersifat
‘global’, yang dapat digunakan dibagian manapun di dalam program baik di
program utama maupun di dalam prosedur.
Pengunaan nama akan dideklarasikan global atau lokal bergantung kepada
penggunaan nama tersebut. Bila suatu nama digunakan diseluruh bagian program,
maka nama tersebut harus dideklarasikan global.
Bila nama tersebut hanya digunakan di dalam prosedur saja maka sebaiknya di
deklarasikan sebagai peubah lokal (walaupun global masih tetap benar).
Usahakan menggunakan nama-nama global sesedikit mungkin.
Penggunaan nama lokal akan memberikan keuntungan sebab nama lokal membuat
program lebih elegan, dan dapat meminimumkan usaha pencarian kesalahan yang
disebabkan oleh nama tersebut.
5. Parameter
Penggunaan parameter merupakan mekanisme pertukaran informasi antara
prosedur (atau fungsi) dan titik di mana ia dipanggil.
Tiap item data ditransfer antara parameter aktual dan parameter formal yang
bersesuaian.
Parameter aktual adalah parameter yang disertakan pada waktu pemanggilan.
Parameter formal adalah parameter yang dideklarasikan di dalam header
prosedur itu sendiri.
Tiga jenis parameter formal yang disertakan di dalam prosedur :
a. Parameter masukan (input parameter)
Parameter yang nilainya berlaku sebagai masukan untuk prosedur yang
disebut parameter nilai (value parameter/parameter by value).
Nilai parameter aktual diisikan (assign) ke dalam parameter formal yang
bersesuaian.
Nilai yang dinyatakan oleh parameter masukan tidak dapat dikirim dalam
arah sebaliknya.
Perubahan nilai parameter di dalam badan prosedur tidak mengubah nilai
parameter aktual.
Nama parameter aktual boleh berbeda dengan nama parameter formal
yang bersesuaian.
Contoh :
Prosedure satu dengan parameter masukan :
Procedure Satu (input x,y : integer)
{contoh prosedur dengan parameter formal berjenis parameter masukan}
{IS : nilai x dan y sudah terdefinisi}
{FS : nilai x dan y masing-masing dinaikan satu lalu dicetak}
Deklarasi :
{ tidak ada }
Deskripsi :
x x + 1
y y + 1
write (x,y)
Program Utama
Algoritma PQR
{program utama untuk memanggil prosedur satu}
Deklarasi :
a,b : integer
Procedure Satu (input x,y : integer)
{contoh prosedur dengan parameter formal berjenis parameter
masukan}
Deskripsi :
Satu (4, 10) {pemanggilan Satu yang pertama kali}
read (a,b)
Satu (a,b) {pemanggilan Satu yang kedua kali}
Satu (a+5,17) {pemanggilan Satu yang ketiga kali}
Pada pemanggilan pertama, menghasilkan x = 4 dan y = 11
Pada pemanggilan kedua, nilai x dan y tergantung pada pemasukan data nilai a
dan b, misalkan a =10 dan b =21, maka x =11 dan y=22. dst
b. Parameter keluaran (output parameter)
Parameter yang menampung keluaran yang dihasilkan oleh prosedur, yang
disebut dengan parameter acuan (reference parameter/parameter by
reference).
Bila prosedur yang mengandung parameter keluaran dipanggil, nama
parameter aktual di dalam program pemanggil menggantikan nama
parameter formal yang bersesuaidi dalam prosedur.
Bila di dalam prosedur parameter aktual diisi suatu nilai, nilai ini akan
tetap berada di dalam parameter aktual meskipun prosedur selesai
dilaksanakan.
Contoh :
Prosedure dua dengan parameter keluaran :
Procedure Dua (input x : integer, output y : real)
{contoh prosedur dengan parameter formal berjenis parameter keluaran}
{IS : nilai x sudah terdefinisi}
{FS : y berisi nilai x ditambah satu dan dikalikan tiga}
Deklarasi :
{ tidak ada }
Deskripsi :
x x + 1
y x + 1
Program Utama
Algoritma XYZ
{program utama untuk memanggil prosedur dua}
Deklarasi :
A,b : integer
Procedure Dua (input x : integer, output y : real)
{contoh prosedur dengan parameter formal berjenis parameter
keluaran}
Deskripsi :
dua(4, b) {pemanggilan dua yang pertama kali}
write (b)
read (a)
dua(a, b) {pemanggilan dua yang pertama kali}
write (b)
dua(a+5,b) {pemanggilan dua yang ketiga kali}
write (b)
c. Parameter masukan/keluaran (input/output parameter)
Parameter yang berfungsi sebagai masukan sekaligus keluaran bagi
prosedur tersebut, yang disebut dengan parameter acuan (reference
parameter/parameter by reference).
Digunakan pada aplikasi yang informasinya dikirim dalam kedua arah.
Bila parameter aktual diubah nilainya di dalam badan prosedur,
makasesudah pemanggilan prosedur nilai parameter dititik pemanggilan
juga berubah.
Contoh :
Prosedure tiga dengan parameter masukan/keluaran :
Procedure tiga (input/output x,y : integer)
{contoh prosedur dengan parameter formal berjenis parameter
masukan/keluaran}
{IS : nilai x dan y sudah terdefinisi}
{FS : nilai x dan y bertambah masing-masing empat dan dicetak}
Deklarasi :
{ tidak ada }
Deskripsi :
x x + 4
y y + 4
write (‘nilai x dan y diakhir prosedur adalah ‘)
write (‘x = ‘,x)
write (‘y = ‘,y)
Program Utama
Algoritma ABC
{program utama untuk memanggil prosedur tiga}
Deklarasi :
a,b : integer
Procedure tiga (input/output x,y : integer)
{contoh prosedur dengan parameter formal berjenis parameter
masukan/keluaran}
Deskripsi :
A 15
B 10
write (‘nilai a dan b sebelum pemanggilan prosedur ‘)
write (‘a = ‘,a)
write (‘b = ‘,b)
tiga (a, b) {pemanggilan tiga pertama kali }
write (‘nilai a dan b sesudah pemanggilan prosedur ‘)
write (‘a = ‘,a)
write (‘b = ‘,b)
Jika program di atas dieksekusi maka menghasilkan :
nilai a dan b sebelum pemanggilan prosedur
a = 15
B = 10
nilai x dan y di akhir prosedur adalah
x = 19
y = 14
nilai a dan b sesudah pemanggilan prosedur
a = 19
B = 14
Contoh :
6. Translasi Notasi Algoritma ke Dalam Notasi Bahasa C
Kelompok Algoritmik C
Procedure
Procedure Namaprosedur
(jenis parameter nama
parameter : tipe data )
{spesifikasi prosedur berisi
penjelasan tentang apa
yang dilakukan oleh
prosedur ini}
{IS : keadaan awal sebelum
prosedur dilaksanakan }
{FS : keadaan akhir
sesudah prosedur
dilaksanakan}
Deklarasi :
{semua nama yang dipakai
dalam prosedur dan hanya
berlaku lokal di dalam
prosedur}
Deskripsi :
{badan prosedur, berisi
kumpulan instruksi}
void namaprocedure ( tipe_data
nama_ parameter )
{
Deklarasi parameter lokal;
Instruksi 1;
Instruksi 2;
......;
}
Contoh1 : }
#include <stdio.h> void segitiga(float *l); void bujursangkar(float *l); void main () { float l; segitiga (&l); printf("luas segitiga = %.3f ", l); printf("\n\n"); bujursangkar(&l); printf("luas bujursangkar = %.3f ", l); } void segitiga (float *l) { float a,t; printf("a = " ); scanf ("%f",&a); printf("t = " ); scanf ("%f",&t); *l=0.5*a*t; } void bujursangkar (float *l) { float p,lb; printf("p = " ); scanf ("%f",&p); printf("lb = " ); scanf ("%f",&lb); *l=p*lb; }
#include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> void mhs (int n); void nilai(); typedef struct { char nama[15]; char nim[10]; float ipk; } mahasiswa; void main() { int n; printf("jumlah mahasiswa: "); scanf ("%d",&n); printf("\n\n"); mhs (n); } void mhs (int n) { int i; mahasiswa m; for (i=1; i<=n; i++) { printf ("Mahasiswa ke %d \n",i); printf ("Nama :"); scanf("%s", &m.nama); printf ("NIM :"); scanf("%s", &m.nim); nilai (); } } void nilai() { int j,y; int sks, nilai; char x[3]; float sum, jsks; mahasiswa m; printf("Jumlah MataKuliah :"); scanf ("%d",&y); sum = 0; jsks = 0; for (j=1; j<=y; j++) { printf(" sks : "); scanf("%d", &sks); printf(" grade : "); scanf("%s", &x); if (strcmp(x,"a")== 0) { nilai= 4; } else if (strcmp(x,"b")== 0) { nilai= 3; } else if (strcmp(x,"c")== 0) { nilai= 2; } else if (strcmp(x,"d")== 0) { nilai= 1; } else { nilai = 0; } sum = sum + nilai*sks; jsks = jsks + sks; } m.ipk = sum/jsks; printf (" ipk = %.2f", m.ipk); printf("\n\n"); }
BAB VII
Fungsi
1. Tujuan Instruksional Umum :
Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan
gambaran tentang fungsi
2. Tujuan Instruksional Khusus :
Mahasiswa memahami dan mengerti penggunaan fungsi dalam sebuah algoritma
dan program
Uraian Materi :
1. Pendahuluan
Fungsi juga merupakan modul program yang mempunyai tujuan spesifik. Fungsi
hampir sama dengan prosedur, tetapi pada beberapa kasus kita lebih tepat
menggunakan fungsi ketimbang prosedur demikian juga sebaliknya.
2. Pendefinisian Fungsi
Fungsi adalah modul program yang memberikan / mengembalikan (return) sebuah
nilai dari tipe data tertentu.
Fungsi diakses dengan memanggil namanya sama seperti prosedur.
Parameter pada fungsi selalu merupakan parameter masukan.
Struktur fungsi sama dengan struktur algoritma yang sudah kita kenal, yaitu ada
bagian judul (header) yang terdiri dari nama fungsi, deklarasi dan badan fungsi.
Notasi algoritma :
function Namafungsi (input daftar parameter formal) -> tipe hasil
{spesifikasi fungsi berisi penjelasan tentang apa yang dilakukan dan yang
dikembalikan oleh fungsi}
Deklarasi :
{semua nama yang dipakai dalam fungsi dan hanya
berlaku lokal di dalam fungsi}
Deskripsi :
{badan fungsi, berisi kumpulan instruksi untuk menghasilkan nilai
yang akan dikembalikan oleh fungsi}
return hasil {mengembalikan nilai yang dihasilkan fungsi}
Contoh :
Buat fungsi untuk menghasilkan nilai
F (x) = 2 x2 + 5x - 8
function F(input x : real)-> real
{mengembalikan nilai F(x)=2x2 + 5x – 8}
Deklarasi :
{tidak ada }
Deskripsi :
return (2*x*x + 5*x - 8)
3. Pemanggilan Prosedur
Fungsi diakses dengan cara memanggil namanya dari program pemanggil, diiluti
dengan daftar parameter aktual (bila ada). Fungsi menghasilkan nilai oleh karena
itu nilai tersebut dapat ditampung dalam sebuah peubah yang bertipe sama
dengan tipe fungsi.
Contoh program utama untuk memanggil fungsi F untuk nilai x dimulai dengan 10
sampai 15 dengan selang 0.2.
Algoritma Panggil_Fungsi
{program utama untuk memanggil funsi F dan menampilkan nilaix dan F(x) di
dalam selang (10,15) dengan ?=0.2}
Deklarasi :
X : real
function F(input x : real)-> real
{mengembalikan nilai F(x)=2x2 + 5x – 8}
Deskripsi :
write (‘-------------’)
write (‘ x f(x) ’)
write (‘-------------’)
x 10.0
while x = 15.0 do
write (‘ x,’ ’,f(x))
x x + 0.2
endwhile
write (‘-------------’)
4. Prosedur atau Fungsi
Fungsi digunakan apabila modul program mengembalikan sebuah nilai.
Prosedur digunakan bila modul menghasilkan efek netto dari (satu atau lebih)
sekumpulan aksi.
Fungsi dapat dikonversi sebagai prosedur dengan cara menyatakan nilai yang
dikembalikan (return value) oleh fungsi tersebut sebagai parameter keluaran pada
prosedur. Demikian juga, jika prosedur yang mempunyai satu buah parameter
keluaran dapat ditulis sebagai fungsi dengan cara menyatakan parameter keluaran
sebagai nilai yang dikembalikan oleh fungsi.
Contoh mengubah fungsi menjadi prosedur :
Buat fungsi untuk menentukan bilangan terbesar dari dua buah bilangan.
function Maks (input a,b : integer)-> integer
{mengembalikan harga terbesar dari a dan b }
Deklarasi :
{ tidak ada }
Deskripsi :
if a > b then
return a
else
return b
endif
Program pemanggil fungsi
Algoritma Maksimum
{program utama untuk memanggil fungsi Maks}
Deklarasi :
a,b : integer
function Maks (input a,b : integer)-> integer
{mengembalikan harga terbesar dari a dan b }
Deskripsi :
read (a,b)
write (Maks(a,b)
Penulisan fungsi diatas dapat ditulis sebagai prosedur seperti di bawah ini :
Procedure Max (input a,b:integer, output maks:integer)
{menentukan nilai terbesar dari a dan b dan disimpan dalam maks}
{IS : a dan b sudah terdefinisi}
{FS : maks berisi nilai terbesar dari a atau b}
Deklarasi :
{ tidak ada }
Deskripsi :
if a > b then
maks a
else
maks b
endif
Program pemanggil fungsi
Algoritma Maksimum
{program utama untuk memanggil fungsi Maks}
Deklarasi :
a,b : integer
Procedure Max (input a,b:integer, output maks:integer)
{menentukan nilai terbesar dari a dan b dan disimpan dalam maks}
Deskripsi :
read (a,b)
Max(a, b, m)
write (m)
5. Translasi Notasi Algoritma ke Dalam Notasi Bahasa C
Kelompok Algoritmik C
Fungsi
function Namafungsi (input
daftar_parameter_formal :
tipe_data) -> tipe hasil
{spesifikasi fungsi berisi
penjelasan tentang apa
yang dilakukan dan yang
dikembalikan oleh fungsi}
Deklarasi :
{semua nama yang dipakai
dalam fungsi dan hanya
berlaku lokal di dalam
fungsi}
Deskripsi :
{badan fungsi, berisi
kumpulan instruksi untuk
menghasilkan nilai yang
akan dikembalikan oleh
fungsi}
return hasil
{mengembalikan nilai yang
dihasilkan fungsi}
Tipe_data_hasil nama_fungsi
(tipe_data nama_parameter_formal)
{
Deklarasi parameter lokal;
Instruksi 1;
Instruksi 2;
......;
}
Contoh
1. Buatlah algoritma dan program untuk menghitung nilai S= n
xn
ii∑
=
Χ−1
)(,
Gunakan prosedur dan fungsi 2.
BAB VIII Pointer
1. Tujuan Instruksional Umum :
Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan
gambaran pointer didalam algoritma
2. Tujuan Instruksional Khusus :
Mahasiswa memahami dan mengerti penggunaan pointer dalam sebuah algoritma
dan program
Uraian Materi :
1. Definisi
Menurut definisinya pointer adalah sebuah variabel yang berisikan alamat
memori (bukan nilai) atau dengan kata lain dapat dikatakan bahwa pointer adalah
suatu variabel penunjuk ke alamat memori tertentu.
Secara umum, pointer dapat digambarkan sebagai berikut :
Dari gambar diatas dapat dilihat bahwa pointer P sedang menunjuk ke
alamat ke-1, ini berarti bahwa nilai dari pointer P adalah alamat ke -1. hal ini
berbeda dengan variabel yang biasa hanya dapat menyimpan nilai dengan tipe
data tertentu.
Alamat ke-1
Alamat ke-2
Alamat ke-3
Alamat ke-4
.......
.......
Alamat ke-N
P
Memori komputer dapat dikatakan sebagai kumpulan atau larik dari alamat
memori yang masing-masing bersifat unik. Hal yang perlu sekali untuk
diperhatikan adalah bahwa pointer juga merupakan isi memori. Pointer merupakan
“alamat khusus” yang telah dipesan oleh kompilator dan linker untuk mencatat
atau menunjuk alamat memori dari variabel lain. Oleh sebab itu, pointer juga
sering dinamakan dengan alamat memori, walaupun sebenarnya lebih tepat bila
disebut dengan pencatat atau penunjuk alamat memori.
2. Deklarasi
Apabila pointer menunjuk ke alamat dari variabel a yang bertipe char (berukuran
1 byte), maka situasi ini dapat direfresentasikan melalui gambar berikut :
p a
……
| | | | | | | | |
| | | | | |
| | | …..
Adapun cara mendeklarasikan pointer didalam bahasa C adalah dengan
menambah tanda asterik (*) didepan nama pointer yang akan dibuat. Berikut ini
bentuk umumnya :
tipe_data *nama_pointer;
tipe_data disini menunjukan bahwa pointer tersebut akan menunjuk ke suatu
alamat dimana alamat tersebut ditempati oleh nilai yang memiliki tipe data
tertentu.
Content of *
Address of &
Contoh :
# include <stdio.h>
void main( )
{
int a,b;
int *p; /* 1 */
a = 10; b = 20; /* 2 */
p = &a; /* 3 */
printf ("%x ", p); // yang ditampilkan alamat dari a
printf ("%i \n", *p); // yang ditampilkan isi dari a
*p = b + 15; /* 4 */
printf (" %d \n",a );
}
Catatan :
a. p adalah deklarasi awal bahwa p adalah variabel pointer. Isi dari p=0 b. a = 10, b = 20 dan p = 0 c. a = 10, b = 20 dan p = alamat dari a (tergantung a diletakan dimana) d. a = 35, b = 20 dan p = alamat dari a (tergantung a diletakan dimana)
Contoh 2 :
3. Mendeklarasi pointer tanpa tipe data
4. Pointer dan Array
5. Pointer dan Fungsi
BAB IX
Larik
1. Tujuan Instruksional Umum :
Setelah menyelesaikan matakuliah ini diharapkan mahasiswa mendapatkan
gambaran tentang tipe, nama dan nilai suatu variabel dan konstanta didalam
algoritma
2. Tujuan Instruksional Khusus :
Mahasiswa memahami dan mengerti penggunaan tipe, nama dan nilai pada
suatu variabel dan konstanta