DOSEN:
UTAMI DEWI W.,S.Kom
Algoritma dan Pemrograman I
Teknik Informatika
menjabarkan masalah
merinci langkah untuk menyelesaikan masalah
bentuk urutan masalah
bahasa yang dipakai
algoritma
Program
nama penulis buku Arab yaitu Abu Ja’far Muhammad ibnu Musa
Al-Khuwarizmi
Algoritma
adalah:
penyusunaan aspek proses logika dari suatu
pemecahan masalah tanpa melihat karakteristik
bahasa pemrograman yang akan digunakan
urutan notasi logika yang merupakan hasil analisis
dan rancangan sistematik dari strategi pemecahan
masalah, untuk menggambarkan urutan langkah kerja
yang jika dikerjakan akan membawa ke tujuannya.
Notasi I : untaian kalimat deskriptif
Notasi II : diagram alir (flow chart)
Notasi III : psudo-code
Contoh masalah : menghitung luas
Algoritma Luas_Segiempat
Menghitung luas segiempat dengan
memasukkan nilai lebar dan panjang
segiempat
Deklarasi
luas,panjang,lebar : bil. bulat
Deskripsi
1.
Masukkan nilai lebar dan panjang
Input
panjang,
lebar
Luas
panjang * lebar
Algoritma Luas_Segiempat
{Menghitung luas segiempat dengan
memasukkan nilai lebar dan panjang
segiempat}
Deklarasi
luas, panjang, lebar : integer
Deskripsi
input(panjang)
input(lebar)
Adalah perwujudan atau implementasi teknis
Algoritma yang ditulis dalam bahasa
Belajar memprogram
adalah belajar tentang
metodologi pemecahan masalah, kemudian
menuangkannya dalam suatu notasi tertentu yang
mudah dibaca dan dipahami.
Belajar bahasa pemrograman
berarti belajar
memakai suatu bahasa, aturan-aturan tata
bahasanya, instruksi-instruksinya, tata cara
belajar tentang strategi pemecahan
masalah, metodologi dan sistematika
pemecahan masalah kemudian
menuliskannya dalam notasi yang
disepakati bersama
bersifat pemahaman persoalan, analisis
dan sintesis
belajar memakai suatu bahasa pemrograman,
aturan sintaks, tatacara untuk memanfaatkan
instruksi yang spesifik untuk setiap bahasa
1.
benar
2.
berlaku umum untuk beragam data (valid)
3.
mudah dibaca
4.
mudah dimodifikasi dan dikembangkan
5.
efisiensi dalam penggunaan ruang dan waktu
Prosedural / Terstruktur
Paradigma Fungsional
Paradigma Deklaratif / Logika
Paradigma Object-Oriented
Paradigma Konkruen
Algoritma berisi urutan langkah-langkah
penyelesaian masalah
proses yang
procedural.
Definisi Prosedural menurut Kamus Besar
Bahasa Indonesia:
1. Tahap-tahap kegiatan untuk menyelesaikan
suatu aktivitas.
Bagian instruksi terdiri atas runtutan
(
sequence
) instruksi yang dilaksanakan
satu per satu secara berurutan oleh
pemroses. Alur pelaksanaan instruksi
dapat berubah karena adanya
pencabangan kondisional.
Data yang disimpan di dalam memori
mengkonstruksi program dari objek-objek
dalam ruang lingkup masalahnya.
sekumpulan objek yang mempunyai sifat
yang sama. Dapat menjadi sebuah kelas.
Sebuah kelas mempunyai
attribute
(sekumpulan sifat/ciri).
menawarkan konsep modularitas,
Kerangka berpikir PBO berbeda dengan
pemrograman tradisional.
Pemrograman tradisional :
memisahkan antara data, dan
prosedur yang mengolah data
tersebut.
PBO : data dan prosedur ini
PERTEMUAN 2
Algoritma dan Pemrograman I
NOTASI ALGORITMIK dan BAHASA
C++
Algoritma disusun berdasarkan 3 bagian,
antara lain :
J d l Al
it
1.
Judul Algoritma
2.
Kamus / Deklarasi
3.
Algoritma / Deskripsi
Format Syntax Algoritma
JUDUL ALGORITMA DEKLARASI/ KAMUS {Lokal / Umum} ALGORITMA
Nama Algoritma
Type namatipe : tipe [subrange]
Type namatipe : array [min..maks] of tipe Namavar : tipe
ALGORITMA
TUBUH ALGORITMA/ DESKRIPSI
p
Namavar : array [ min..maks] of tipe Const nama = nilai
Procedure namaproc
(Input/Output[daftar_nama_parameter:tipe])
Notasi Assigment
Notasi Kondisional/Pemilihan N i P l
URAIAN ALGORITMA
Notasi Pengulangan Notasi Pemanggilan
Kumpulan algoritma masing-masing
Procedure ataupun Function yang dipanggil dari Tubuh Algoritma
Algoritma untuk menulis Hello world:
AlgoritmaHello_world
{ k k “H ll ld }
{ program untuk mencetak “Hello world”}
DEKLARASI
{tidak ada}
DESKRIPSI
Write(“Hello world”)
Algoritma untuk menghitung luas segiempat:
LuasSegi4
{algoritma untuk menghitung luas segiempat dengan
{ g
g
g
g
p
g
diketahui panjang dan lebarnya}
KAMUS
Luas,panjang,lebar :integer
ALGORITMA
panjang
Å
10
lebar
Å
5
Luas
Å
panjang * lebar
write(Luas)
Algoritma dan Pemrograman I
Translasi Teks Algoritma ke dalam Teks Program Bahasa C++
Transla
si
Algoritma
C++
1 #include <nama_unit>
2 CONST namaconst = nilai
#define namaconst nilai
si
Notasi
Kamus
nilai
3 TYPE namatipe :
tipedata
Typedef tipedata namatipe;
4 namavar: tipedata namavar : namatipe
tipedata namavar;
namatipe namavar;
1 #include <iostream h>
Contoh :
Algoritma dan Pemrograman I
1 #include <iostream.h>
2 CONST phi = 3.14 #define phi 3.14 3 TYPE jumlah : integer Typedef int jumlah;
4 n:integer n : jumlah
int n;
jumlah n; Contoh
Lanjutan Translasi Notasi Pengendalian
Algoritma C++
5 IF <kondisi> THEN aksi1 ELSE If (kondisi) aksi1; else ELSE aksi2 ENDIF else aksi2; atau If (kondisi) { aksi1; } else { aksi2;
} Algoritma dan Pemrograman I
Lanjutan Translasi Notasi Pengendalian
Algoritma C++
6
DEPEND ON <ekspresi> <ekspresi 1> : aksi_1 <ekspresi 2> : aksi 2Switch (ekspresi) {
case nilai1: <ekspresi 2> : aksi_2
:
<ekspresi n> : aksi_n atau
CASE namavarcase OF expkonstan 1 : aksi_1 expkonstan 2 : aksi 2
case nilai1: aksi_1; break; case nilai2: aksi_2; break; : expkonstan 2 aksi_2
:
expkonstan n : aksi_n ELSE aksi_lain ENDCASE case nilain: aksi_n; break; default: aksi_lain; }
Lanjutan Translasi Notasi Pengendalian
Algoritma C++
7
[inisialisasi]WHILE <kondisi_ulang> DO daftar aksi
[inisialisasi]
while (kondisi_ulang) {
daftar_aksi
{ada aksi thd var kondisi} ENDWHILE
{
daftar_aksi;
/*ada aksi thd var kondisi*/ }
8
[inisialisasi] REPEAT daftar aksi [inisialisasi] do { daftar_aksi{ada aksi thd var kondisi} UNTIL <kondisi_stop>
{
daftar_aksi;
/*ada aksi thd var kondisi*/ }
while (kondisi_ulang);
Algoritma dan Pemrograman I
Lanjutan Translasi Notasi Pengendalian
Algoritma
9 namavar TRAVERSAL [awal..akhir] daftar_aksi;
atau
FOR var Åawal TO/DOWNTO akhir STEP counter DO daftar_aksi ENDFOR C++ C++ for(awal;kondisiulang;step) { daftar_aksi; }
Contoh Algoritma
Algoritma Luas_Lingkaran
{menghitung luas lingkaran diketahui jari-jarinya}
DEKLARASI
CONST phi = 3.14 r : integer
Luas : real
DESKRIPSI r Å5
Luas Åphi * r * r output(”Jari –jari = ”,r);
output(”Luas lingkaran = ”,Luas);
Algoritma dan Pemrograman I
Contoh program C++
#include <iostream.h> #define phi 3.14
main () main () {
int r; float Luas; r = 5;
Luas = phi * r * r;
cout << ”Jari-jari : ” << r;
cout << ”\nLuas lingkaran : ” << Luas; }
PERTEMUAN 3
KONSEP TIPE DATA, OPERATOR
DAN IDENTIFIER
DAN IDENTIFIER
Algoritma dan Pemrograman I
IDENTIFIER
(pengenal)
z
Nama tipe (di bagian deklarasi Type)
zTempat penyimpanan suatu data :
z
variable
jika isinya dapat berubah dalam kisaran
tertentu
z
konstanta
jika isinya selalu tetap.
z
file
,
penyimpanan data di
storage
, dan sifatnya
menetap.
z
Fungsi dan Prosedur
z
Modul program
z
Algoritma
Penamaan pengenal :
1. Berupa satu atau beberapa karakter
•
Huruf (A s/d Z, a s/d z)
•Digit (0 1 2 3 4 5 6 7 8 9 )
•Garisbawah (_)
diawali huruf atau garisbawah
2. Menggunakan kata yg berarti dan mudah dibaca 3. Panjang max pengenal
•
Borland C++ : 32 karakter
•Turbo C++ : 31 karakter
4. Huruf kecil dan kapital berbeda
5. Tidak menggunakan kata kunci (keyword)yg terdapat pada C++
Algoritma dan Pemrograman I
Daftar
keyword
C++
asm
double long
static
auto
else
new
struct
break
enum
operator switch
case
exter
n
private
template
char
float
protecte
d
this
class
for
public
typedef
const
friend register
union
continu
e
goto
return
unsigned
OPERATOR
z
Operator adalah notasi yang dipakai untuk
melaksanakan suatu operasi terhadap data dan
p
p
identifier (
operand
)
[image:33.612.124.489.104.412.2]Algoritma dan Pemrograman I
Tabel Pengelompokan Operator
JENIS OPERATOR
NOTASI KEGUNAAN Algoritma Bahasa
C++
Negasi - - Mengubah data angka menjadi -/+ Aritmatika + -* / div mod Å + -* / / % = Penjumlahan Pengurangan Perkalian Pembagian Pembagian dibulatkan Sisa Pembagian Pemberi nilai Relasional < < Kurang dari
L bih d i > = <= >= <> > == <= >= != Lebih dari Sama dengan
Kurang dari atau sama dengan Lebih dari atau sama dengan Tidak sama dengan
Lanjutan Tabel Pengelompokan Operator JENIS OPERATOR NOTASI KEGUNAAN Algoritma Bahasa C++
Logika not ! Negasi terhadap nilai Boolean Logika not and or xor ! && || tdk ada
Negasi terhadap nilai Boolean Operasi And thd dua nilai Boolean Operasi Or thd dua nilai Boolean Operasi Xor thd dua nilai Boolean
Bit shl shr sot and or << >> ~ & |
Geser satu bit ke kiri Geser satu bit ke kanan Komplemen suatu bit
Operasi And terhadap dua bit Operasi Or terhadap dua bit xor
| ^
p p
Operasi Xor terhadap dua bit Address @ & Menunjukkan alamat memori suatu
variable yang menyatakan nilai yang ditunjuk oleh pointer
Algoritma dan Pemrograman I
Operator Not
Not
True :
False
Not
False : True
Arg 1 Arg 2 Arg 1ANDArg 2
Operator AND
Arg 1 Arg 2 Arg 1 ANDArg 2 True True False False True False True False True False False False
Operator penaikan da penurunan
pada C++
x++
Î
x = x + 1
++x
Î
x = x + 1
x--
Î
x = x - 1
--x
Î
x = x - 1
Algoritma dan Pemrograman I
Operator majemuk pada C++
x+=2
Î
x = x + 2
x-=2
Î
x = x - 2
x+=10
Î
x = x + 10
x*=2
Î
x = x * 2
TIPE
1. Tipe Dasar 2 Tipe Terstruktur 2. Tipe Terstruktur
misal : Array (larik), Record, Set (himpunan) dan File (Arsip)
3. Tipe Bentukan
misal : tipe data non standar (Subrange,
terilang/Enumerasi) dan tipe data abstrak (Link list, Stack, Queue dan Tree) (dipelajari pada mata kuliah stuktur data)
[image:36.612.125.489.97.361.2]Algoritma dan Pemrograman I
TABEL PENGELOMPOKAN TIPE DATA DASAR pada ALGORITMA
Tipe
Karakteristik
Nama Domain Konstanta Operator yang
digunakan Hasil
Boolean Boolean True dan false
True False .T. .F.
Operasi logic (And, Or, Not,
Boolean
f . . .F.
y n
( , , N , Xor, Eq, NEq)
Numerik Integer (bulat) Semua data yang berisi bilangan bulat 0,-25,100 Aritmatika (+,-,*,/,Mod, Div, Abs) Relasional (=,<>, >=, >=, <, <=)
Integer Boolean Numerik Riil (pecahan) Semua data yang berisi bilangan pecahan
1, 5.2, 100, 0.1 Aritmatika (+,-,*,/,^) Relasional (<>,>,>=,<,<=) Riil Boolean
LANJUTAN TABEL PENGELOMPOKAN TIPE DATA DASAR pada ALGORITMA
Karakteristik
O t Tipe
Nama Domain Konstanta
Operator yang digunakan Hasil AlphaNumerik Karakter / char Semua data berupa karakter
“d”, “g”, “%”, “!”,”4”
Relasional Boolean
AlphaNumerik String Kumpulan char yang
d d
“saya” “2005” Relasional Boolean ada pada domain char Pointer Pointer
Algoritma dan Pemrograman I
Tipe data dasar pada C++
tipe data ukuran memori
jangkauan nilai jumlah digit presisi
char 1 byte -128 s/d +127
short int 2 byte
int 2 byte -32768 s/d +32767
long 4 byte -2.147.438.648 s/d 2.147.438.647
float 4 byte 3.4x10-38s/d 3.4x10+38 6-7
double 8 byte 1.7x10-308s/d 1.7x10+308 15-16
long double 10 byte 3.4x10-4932s/d 1.1x10+4932 19
Tipe data dasar pada C++
Type Length Range
unsigned char 8 bits 0 to 255 unsigned char 8 bits 0 to 255 char 8 bits -128 to 127 enum 16 bits -32,768 to 32,767 unsigned int 16 bits 0 to 65,535
short int 16 bits -32,768 to 32,767 int 16 bits -32,768 to 32,767
unsigned long 32 bits 0 to 4,294,967,295 long 32 bits -2,147,483,648 to 2,147,483,647 float 32 bits 3 4 x 10 38 to 3 4 x 10+38 float 32 bits 3.4 x 10-38 to 3.4 x 10+38 double 64 bits 1.7 x 10-308 to 1.7 x 10+308 long double 80 bits 3.4 x 10-4932 to 1.1 x 10+4932
Algoritma dan Pemrograman I
Karakter (char)
z deklarasi variabel bertipe char pada C++: char var;;
z contoh :
konstanta karakter
keterangan
’A’ Karakter berupa huruf A
’1’ Karakter berupa huruf A
’*’ Karakter simbol *
’\\’ Karakter \ (harus ditulis dengan awal \)
Karakter-karakter khusus pada C++
karakter keterangan\0 karakter ber-ASCII nol (Karakter null)
\a karakter bel
\b karakter backspace
\f karakter formfeed (ganti halaman)
\f karakter formfeed (ganti halaman)
\n karakter newline (pindah baris)
\r karakter carriage return (ke awal baris) tanpa linefeed
\t karakter tab horisontal
\v karakter tab vertikal
\\ karakter \
\’ karakter ‘
\” karakter “
\? karakter ?
\ooo karakter yg nilai oktalnya adalah ooo (3 digit oktal)
\xhh karakter yg nilai heksadesimalnya adalah hh (dua digit heksadesimal)
short, int, long int
z
bilangan bulat
z
tidak mengandung titik desimal
z
deklarasi variabel bertipe int pada C++:
int var;
float,double,long double
z
deklarasi variabel pada C++:
float var;;
double var;
long double var;
z
contoh bentuk penulisan ;
1.23e2
1 23E2
1.23E2
123.0
Algoritma dan Pemrograman I
boolean
z
tidak ada di C++
z
untuk type boolean dibuat dengan tipe
z
untuk type boolean, dibuat dengan tipe
bentukan :
typedef enum {false=0,true=1} boolean;
boolean var;
string
z
tidak ada tipe string di C++
z
menggunakan tipe terstruktur array dengan tipe
z
menggunakan tipe terstruktur array dengan tipe
char :
char var[banyaknyakarakter];
PERTEMUAN 4 DAN 5
DASAR DASAR ALGORITMA
DASAR-DASAR ALGORITMA
Algoritma dan Pemrograman I
Pernyataan dan Aksi
langkah penyelesaian langkah penyelesaian
pernyataan (Statement)
aksi (action) dieksekusi
operasi dikerjakan oleh pemroses operasi dikerjakan oleh pemroses
Contoh Pernyataan dan Aksi
:
z
Pernyataan pada algoritma :
z
Pernyataan pada algoritma :
Tulis “Hello, world”
z
menggambarkan aksi menuliskan “Hello, world” ke
piranti keluaran (layar).
z
efek dari aksi ini, dilayar akan tertera tulisan
Hello, world
Algoritma dan Pemrograman I
Struktur Dasar Algoritma
(S
)
1.
Runtunan (Sequence)
2.
Pemilihan (
Selection
)
3.
Pengulangan (
Repetition)
Runtunan (
Sequence
)
z
Algoritma merupakan runtunan (sequence) satu
atau lebih instruksi/pernyataan
atau lebih instruksi/pernyataan,
z
setiap pernyataan dikerjakan secara berurutan
sesuai dengan urutan penulisannya. Sebuah
instruksi dilaksanakan setelah instruksi
sebelumnya selesai dilaksanakan.
z
Urutan instruksi menentukan keadaan akhir
algoritma
Algoritma dan Pemrograman I
Contoh 1 (Runtunan) :
Diberikan 2 buah gelas, A dan B;
gelas A berisi air berwarna merah, gelas B
b i i i b
bi
P t k k
i i k d
berisi air berwarna biru. Pertukarkan isi kedua
gelas itu sedemikian sehingga
gelas A berisi air berwarna biru dan gelas B
berisi air berwarna merah.
A B A B
ALGORITMA:
Tuangkan air dari gelas A kedalam gelas B
Tuangkan air dari gelas B kedalam gelas A
Caranya :
Kita siapkan satu buah gelas C untuk
menampung sementara air dari gelas A
b l
di i d h k
l
B
sebelum dipindah ke gelas B
Algoritma dan Pemrograman I
ilustrasi
A C
A B
B A
C A
ilustrasi
C
B
B A
C
Algoritma dan Pemrograman I
Program Tukar_isi
Diberikan 2 buah gelas, A dan B; gelas A berisi air berwarna merah, gelas B berisi air berwarna biru. Isi kedua gelas A dan B ditukar sedemikian sehingga gelas A berisi air berwarna biru dan gelas B berisi air berwarna merah.
KAMUS :
gelas A,gelas B, gelas C : air gelas A,gelas B, gelas C : air
ALGORITMA:
Tuangkan air dari gelas A kedalam gelas C Tuangkan air dari gelas B kedalam gelas A Tuangkan air dari gelas C kedalam gelas B
Hasil akhir algoritma adalah: gelas A berisi air dari gelas B, dan
g g ,
Contoh 2 (runtunan):
Misal nilai A=8, B=5. Tukarkan nilai A dan B, sehingga menjadi A=5, B=8.
Algoritma :
Algoritma :
B
Å
A
A
Å
B
Algoritma :
C
Å
A
C
Å
A
A
Å
B
B
Å
C
Algoritma dan Pemrograman I
Pemilihan (
Selection
)
Ifk di ith Ifkondisithen
aksi
endIf
Ifkondisithen
aksi1
else else
aksi2
endIf
Contoh (Pemilihan) :
If A>B then Max
Å
A endIf
If B>A then Max
Å
B endIf
If A>B then Max
Å
A
Else Max
Å
B
endIf
Algoritma dan Pemrograman I
Pengulangan (
Repetition)
for var Åawaltoakhirdo aksi
Endfor Endfor
repeat aksi untilkondisi_stop
whilekondisi_ulangdo aksi
endwhile
Contoh (Pengulangan) :
For i Å1 to 5 dooutput(“UNIKOM)
EndFor
iÅ1 Repeat
output(“UNIKOM”) iÅi+1
Until (i>5)
iÅ1
While (i<=5) do While (i< 5) do
output(“UNIKOM”) iÅi+1
endwhile
Algoritma dan Pemrograman I
TopDown Design
z
Cara pendekatan ini sangat bermanfaat
dalam membuat algoritma untuk masalah
dalam membuat algoritma untuk masalah
yang cukup rumit dan komplek.
z
Strategi perancangan puncak turun dimulai
dengan membuat algoritma secara global
(garis besar) lebih dahulu, selanjutnya setiap
langkah diuraikan lagi menjadi beberapa
langkah diuraikan lagi menjadi beberapa
langkah yang lebih sederhana
TopDown Design
A
A.2 A.1
A.1.1 A.1.2 A.1.3 A.2.1 A.2.2
A.1.1 A.1.2 A.1.3 A.2.1 A.2.2
QUIZ
QUIZ
PERTEMUAN 7
STATEMENT PEMILIHAN
STATEMENT PEMILIHAN
Algoritma dan Pemrograman I
Satu Kasus
z
Menggunakan konstruksi IF-THEN (jika-maka) dalam
bentuk pernyataan :
if
k
di i
th
if
kondisi
then
pernyataan
endif
z
Format bahasa C++ :
z
Format bahasa C++ :
If
(
kondisi
)
pernyataan;
Contoh Masalah satu kasus :
z
Buatlah algoritma yang membaca sebuah bilangan
bulat dari suatu papan ketik, lalu mencetak pesan
“
” jik bil
t
b t d l h
“genap” jika bilangan tersebut adalah genap.
z
Penyelesaian :
Bilangan genap adalah bilangan yang habis dibagi
dengan 2 (sisa pembagian = 0). Oleh karena itu, kita
perlu membagi data masukan dengan 2. Jika data
k
h bi dib
i 2
k d
t dit li b h
masukan habis dibagi 2, maka dapat ditulis bahwa
bilangan tersebut bilangan genap.
Algoritma dan Pemrograman I
Dua kasus :
z Menggunakan konstruksi IF-THEN-ELSE (jika-maka-kalau tidak) dalam bentuk pernyataan :
ifkondisi then pernyataan1 pernyataan1 else
pernyataan2 endif
z Format bahasa C++ :
If(kondisi)
If(kondisi)
pernyataan1;
else
pernyataan2;
Contoh masalah dua kasus :
Tulislah algoritma yang membaca sebuah bilangan bulat, lalu menuliskan pesan “genap” jika bilangan tersebut adalah genap atau “ganjil” jika bilangan tersebut adalah bilangan ganjil.g j j g g g j
z Penyelesaian :
Misalkan bilangan yang dibaca adalah x. Hanya ada dua kemungkinan jenis untuk x, yaitu bilangan genap atau bilangan ganjil. Bilangan genap adalah bilangan yang habis dibagi dengan 2 (sisa pembagian = 0), sedangkan bilangan ganjil bersisa 1 bila dibagi dengan 2. Contohnya, 4 adalah bil k 4 d 2 0 t i 3 d l h bil bilangan genap karena 4 mod 2 = 0, tapi 3 adalah bilangan ganjil karena 3 mod 2 =1.
Algoritma dan Pemrograman I
Tiga Kasus atau Lebih :
Tiga Kasus :
if kondisi1 then pernyataan1
Empat Kasus : if kondisi1 then
pernyataan1 else
else
if kondisi2 then pernyataan2 else
if kondisi3 then pernyataan3 endif
dif
if kondisi2 then pernyataan2 else
if kondisi3 then pernyataan3 else
endif
endif if kondisi4 thenpernyataan4
Tiga Kasus :
Tiga kasus dalam format bahasa C++ :
if
(
kondisi
1)
pernyataan
1;
else
if
(
kondisi
2)
pernyataan
2;
else
if
(
kondisi
3)
pernyataan
3;
Algoritma dan Pemrograman I
Struktur Case
Konstruksi CASE adalah sebagai berikut :
case
ekspresi
nilai
1 :
pernyataan
1
nilai
1 :
pernyataan
1
nilai
2 :
pernyataan
2
nilai
3 :
pernyataan
3
. . .
nilai
n :
pernyataan
n
else :
pernyataan
x
endcase
Ekspresi adalah sembarang ekspresi (aritmatika atau
boolean) atau variabel yang menghasilkan suatu
nilai (konstanta).
Struktur Case
Format bahasa C++ :
Switch
(
ekspresi
)
{
case
nilai
1 :
pernyataan
1;
break;
case
nilai
2 :
pernyataan
2;
break;
:
:
case
nilai
n :
pernyataan
n;
case
nilai
n :
pernyataan
n;
break;
default :
pernyataan
x;
}
Algoritma dan Pemrograman I
Konstruksi CASE yang ekivalen dengan konstruksi IF-THEN-ELSE : ifekspresi= nilai1 then
pernyataan1 else
ifekspresi= nilai2 then pernyataan2
p y
else
ifekspresi= nilai3 then pernyataan3 . . .
ifekspresi= nilain then pernyataann else {otherwise} else { otherwise}
pernyataanx endif
endif endif
endif
Contoh Masalah :
z
Buatlah algoritma yang membaca sebuah bilangan
bulat yang nilainya terletak antara 1 sampai 4, lalu
bulat yang nilainya terletak antara 1 sampai 4, lalu
mencetak teks angka tersebut. Misalkan bila dibaca
angka 1, maka tercetak tulisan “satu”, bila dibaca 2,
maka tercetak di layar tulisan “dua”, demikian
seterusnya. Jika angka yang dimasukkan selain 1
sampai 4, tuliskan pesan bahwa angka yang
dimasukkan salah.
Algoritma dan Pemrograman I
Penyelesaian :
ALGORITMA KonversiAngkaTeks
{ Mencetak kata untuk angka 1 sampai 4 } DEKLARASI
angka : integer { angka yang dibaca } DESKRIPSI :
input(angka) if angka = 1 theng
output(“satu”) else
if angka = 2 then output(“dua”) else
if angka = 3 then output(‘tiga’) else
if angka = 4 then if angka 4 then
output(‘empat’) else
output(‘angka yang dimasukkan salah’) endif
endif endif endif
Dengan konstruksi CASE, algoritma untuk masalah di atas dapat dibuat menjadi lebih singkat sebagai berikut :
ALGORITMA KonversiAngkaTeks
{ Mencetak kata untuk angka 1 sampai 4 } DEKLARASI
DEKLARASI
angka : integer { angka yang dibaca } DESKRIPSI :
input(angka) case angka
1 : output(“satu”) 2 : output(“dua”) 3 : output(“tiga”)
4 t t(“ t”)
4 : output(“empat”)
else : output(“angka yang dimasukkan salah”) endcase
Algoritma dan Pemrograman I
Contoh Program Bahasa C++
:
#include <iostream.h> main()
{ int x;
cout << ”Masukkan bilangan : ”; cin >> x; it h ( )
switch (x) {
case 1 : cout << ”satu”; break; case 2 : cout << ”dua”;
break; case 3 : cout << ”tiga”;
break;
case 4 : cout << ”empat”; break;
default : cout << ”angka yang dimasukkan salah”; }
}
PERTEMUAN 8
PERTEMUAN 9-11
STATEMENT
PENGULANGAN
PENGULANGAN
Algoritma dan Pemrograman I
Teknik Informatika
UNIKOM
UNIKOM
Secara umum struktur pengulangan dibagi
dua bagian :
z
Kondisi pengulangan
z
Kondisi pengulangan
Yaitu expresi
Boolean
yang harus dipenuhi untuk
melaksanakan pengulangan. Kondisi ini
dinyatakan secara
Explisit ( oleh pemrogram )
dan
Implisit ( dikelola oleh computer ).
z
Badan ( body ) pengulangan
Yaitu bagian algoritma yang diulang
Yaitu bagian algoritma yang diulang.
Format Syntax Algoritma
Stuktur pengulangan biasanya disertai dengan :
z Inisialisasi
Aksi yang dilakukan sebelum pengulangan dilakukan pertama kali.
z Terminasi
z Terminasi
Aksi yang dilakukan setelah pengulangan selesai dilaksanakan.
Struktur pengulangan secara umum :
<inisialisasi>
awal dan akhir pengulangan
<terminasi>
p g g
dinyatakan sebagai kata kunci yang bergantung pada struktur pengulangan yang dipakai. Inisialisasi dan terminasi adalah bagian yang opsional.
Algoritma dan Pemrograman I
Tiga macam notasi struktur pengulangan :
z Struktur FOR atau TRAVERSAL( Pengulangan tanpa kondisi / Unconditional Looping ).
z Struktur WHILE..DO ( Pengulangan dengan kondisi
/ Conditional Looping ). z Struktur REPEAT..UNTIL
Tiga macam notasi struktur pengulangan dalambahasa C++: z FOR
WHILE
z WHILE
z DO..WHILE
FOR
z Statement for digunakan untuk mengulang eksekusi suatu ungkapan dengan jumlah pengulangan yang sudah tertentu.
z Bentuk sintaksnya dalam algoritma :
FOR Å lt /d t khi t t DO
FOR varÅawalto/downto akhirstep counter DO
pernyataan
ENDFOR
atau
FOR varÅawalto/downto akhir DO
pernyataan
ENDFOR ENDFOR
atau
namavarTRAVERSAL [awal..akhir]
pernyataan
Algoritma dan Pemrograman I
FOR
Bentuk sintaksnya dalam bahasa C++ sebagai berikut : For(ungkapan1;ungkapan2;ungkapan3)
{{
pernyataan; }
Contoh penggunaan for pada C++
/* program:for*/ #include<iostream.h> main() main() { int n; for(n=1;n<=10;n++) {
cout << n << endl; }
WHILE.. DO
z Bentuk umum struktur WHILE..DO dalam algoritma adalah : [inisialisasi]
while ((kondisi) do)
pernyataan
{ada aksi thd var kondisi}
endwhile
z Bentuk umum struktur WHILE dalam bahasa C++ adalah :
[inisialisasi]
while (kondisi) {{
pernyataan;
/*ada aksi thd var kondisi*/ }
Algoritma dan Pemrograman I
Cara kerja loop dengan while..do
z
melakukan inisialisasi, yaitu memberikan nilai
awal yang ada kaitannya dengan nilai condition
y
g
y
g
(kondisi)
z
memeriksa nilai kondisi.
1. Bila nilainya
true
, maka laksanakan loop yaitu
mengerjakan instruksi yang ada dalam loop.
2. Bila kondisi nilainya
false
, maka langsung
keluar, melaksanakan instruksi selanjutnya.
Loop selesai.
Perbedaan FOR dengan WHILE..DO
z
FOR digunakan untuk proses
pengulangan yang
jumlah
pengulangan yang
jumlah
pengulangannya dapat diketahui di
awal
.
z
WHILE..DO selain dapat berfungsi seperti
FOR juga dapat digunakan untuk proses
yang
jumlah pengulangannya tidak
yang
jumlah pengulangannya tidak
dapat diketahui.
Algoritma dan Pemrograman I
Struktur WHILE..DO
REPEAT…UNTIL
Bentuk umum struktur REPEAT…UNTIL
d l
l
it
dalam algoritma :
[inisialisasi] Repeat
pernyataan
{ada aksi thd var kondisi} Until(keadaan)
Algoritma dan Pemrograman I
DO…WHILE
Bentuk umum struktur DO…WHILE dalam
bahasa C++ :
[inisialisasi] do
{
pernyataan;
/*ada aksi thd var kondisi*/ }
while(keadaan)
Perbedaan Repeat…until pada algoritma
dengan do…while pada bahasa C++
repeat
until
: loop akan dikerjakan kembali jika kondisi
repeat…until
: loop akan dikerjakan kembali jika kondisi
masih salah dan berhenti jika kondisi
benar.
do…while
: Setiap loop atau pengulangan
dikerjakan,
maka kondisi akan di-cek.
Jika masih
benar, proses loop
dilakukan lagi, dan jika salah
g ,
j
maka
proses loop berhenti
dan
berlanjut pada perintah selanjutnya.
Algoritma dan Pemrograman I
Contoh dalam algoritma :
Algoritma Tulisan_10kali
{---Menampilkan tulisan Turbo C++ sepuluh kali ---}}
DEKLARASI
pencacah : integer DESKRIPSI
pencacah Å0 repeat
output(’Turbo C++’); output( Turbo C++ ); pencacah Åpencacah + 1 until (pencacah >= 10)
Contoh dalam bahasa C++ :
/*
Dowhile.cpp- Menampilkan tulisan Turbo C++ sepuluh kali */ #include <iostream.h>
main () {{
int pencacah ; pencacah = 0; do
{
cout << ”Turbo C++” << endl; pencacah ++;
}
while (pencacah <10); }
Pada contoh tersebut kata “Turbo C++” akan dicetak sampai pencacah mencapai nilai = 10 atau lebih. Pencacah akan bertambah 1 setiap kali body loop
dijalankan karena perintah pencacah++.
Algoritma dan Pemrograman I
Contoh lain :
/* program:do while*/ #include<iostream.h> #include<string.h> int main()
{
char checkword[80] = ”saya”; char checkword[80] saya ; char password[80] = ””; do
{
cout << ”Enter password: ”; cin >> password;
}
while(strcmp(password, checkword)); cout << "password benar ";
}}
z Penjelasan :
Pada contoh diatas kata “Enter Password :” akan diulangi terus sampai kita memasukkan password yang benar yaitu kata ‘saya’.
PERTEMUAN 12
Algoritma dan Pemrograman I
Teknik Informatika
UNIKOM
PERTEMUAN 12
PROSEDUR
UNIKOM
Prosedur dan struktur prosedur
PROSEDUR : Modul program yang mengerjakan tugas / aktivitas yang spesifik dan menghasilkan suatu efek netto. Suatu efek netto diketahui dengan e e etto Suatu e e etto d eta u de ga membandingkan keadaan awal dan keadaan akhir pada pelaksanaan sebuah prosedur. Mendefinisikan prosedur :
z Menuliskan nama prosedur
z Mendeklarasikan nama-nama konstanta, peubah dan tipe ( jika ada ).
z Menjabarkan rangkaian yang dilakukan.
Prosedur dan struktur prosedur
Struktur Prosedur :
◦
Bagian Judul ( header ).
Terdiri atas Nama prosedur dan deklarasip parameter ( jika ada ).
◦
Bagian deklarasi.
Untuk mengumumkan nama-nama.
◦
Bagian deskripsi.
Disebut juga badan prosedur.
Nama prosedur sebaiknya diawali dengan kata kerja karena prosedur berisi suatu aktivitas, misalnya HitungLuas, Tukar, CariMaks, Inisialisasi, AktifkanMenu, dan lain sebagainya.
Algoritma dan Pemrograman I
Prosedur dan struktur prosedur
Prosedur yang baik adalah
z
Prosedur yang
independent
dari program
pemanggilannya. Prosedur yang tidak
menggunakan peubah- peubah global didalam
badan prosedurnya.
z
Jika program utama perlu mengkomunikasikan
nilai peubah global ke dalam prosedur, maka
ada satu cara untuk melakukannya yaitu dengan
y y
g
menggunakan parameter.
Parameter
Parameter
adalah :Nama- nama peubah yang
dideklarasikan pada bagian
header
prosedur
1.
Parameter actual ( argument ) adalah :
Parameter yang disertakan pada waktu
pemanggilan prosedur.
2.
Parameter formal adalah :
Parameter yang
dideklarasikan di dalam bagian
header
prosedur
itu sendiri.
Algoritma dan Pemrograman I
Parameter actual dan Parameter formal
Aturannya :
z
Jumlah parameter actual pada pemanggilan
prosedur harus sama dengan jumlah parameter
prosedur harus sama dengan jumlah parameter
formal pada deklarasi prosedurnya.
z
Tiap parameter actual harus bertipe sama
dengan tipe parameter formal yang bersesuaian.
z
Tiap parameter actual harus diekspresikan
dalam cara yang taat-asas dengan parameter
formal yang bersesuaian bergantung pada jenis
formal yang bersesuaian, bergantung pada jenis
parameter formal.
3 Jenis Parameter formal
1.
Parameter masukan ( Input parameter ).
Parameter yang nilainya berlaku sebagai
masukan untuk prosedur.
masukan untuk prosedur.
Dalam bahasa pemrograman, istilah parameter
masukan ini sering dinamakan
parameter nilai
(
value parameter atau parameter by value
).
2. Parameter keluaran ( Output parameter).
Parameter yang menampung keluaran yang
dihasilkan oleh prosedur.
3
P
t
k
/ k l
( I
t/O t
t
3.
Parameter masukan / keluaran ( Input/Output
parameter ).
Parameter yang berfungsi sebagai masukan
sekaligus keluaran bagi prosedur tersebut.
Algoritma dan Pemrograman I
Program dengan Prosedur atau Tanpa Prosedur?
Sangat dianjurkan menulis program yang modular. Program yang dipecah menjadi beberapa prosedur ( fungsi ) menunjukan teknik pemrograman yang baik dan terstruktur.
Prosedur dengan Parameter atau Tanpa Parameter?
Sangat dianjurkan menulsikan prosedur dengan parameter. Parameter berfungsi sebagai media komunikasi antara modul dengan program pemanggil. Selain itu, parameter dapat mengurangi
kebutuhan penggunaan peubah global.
Parameter Masukan atau Parameter Keluaran?
Tergantung pada kasus yang ada.
Procedure pada Algoritma
1.
Prosedur Tanpa Parameter
2.
Prosedur Dengan Parameter Masukan
g
3.
Prosedur Dengan Parameter Keluaran
4.
Prosedur Dengan Parameter
Masukan/Keluaran
Algoritma dan Pemrograman I
Prosedur Tanpa Parameter
1. Cara memanggil (dari algoritma/program utama) DEKLARASI
Procedure namaprosedur Procedure namaprosedur DESKRIPSI
namaprosedur 2. Cara mendifinisikan:
Procedure namaprosedur { kondisi awal : … } { k di i khi } { kondisi akhir : … } deklarasi lokal
deskripsi
Prosedur Dengan Parameter Masukan Pada
Algoritma
1. Cara memanggil (dari algoritma/program utama) DEKLARASI
Procedure namaprosedur(input namaparameter : type) DESKRIPSI
namaprosedur(namaparameter) 2. Cara mendifinisikan:
Procedure namaprosedur(input namaparameter : type) { kondisi awal : … }
{ kondisi akhir : … } deklarasi lokal
deskripsi
Algoritma dan Pemrograman I
Prosedur Dengan Parameter Keluaran
Pada Algoritma
1. Cara memanggil (dari algoritma/program utama) DEKLARASI
Procedure namaprosedur(output namaparameter : type)
DESKRIPSI
namaprosedur(namaparameter) 2. Cara mendifinisikan:
Procedure namaprosedur(output namaparameter : type)
{ k di i l }
{ kondisi awal : … } { kondisi akhir : … } deklarasi lokal
deskripsi
Prosedur Dengan Parameter Masukan/Keluaran Pada Algoritma
1. Cara memanggil (dari algoritma/program utama) DEKLARASI
Procedure namaprosedur(input/output namaparameter p ( p p p : type)
DESKRIPSI
namaprosedur(namaparameter) 2. Cara mendifinisikan:
Procedure namaprosedur(input/output namaparameter : type)
{ kondisi awal : … } { kondisi akhir : … } deklarasi lokal
deskripsi
Algoritma dan Pemrograman I
Aturan Translasi Notasi algoritma prosedur ke dalam Notasi bahasa C++
1. Pendefinisian prosedur ditulis di luar blok program
utama utama (main).
2. Dalam bahasa C, tidak dikenal istilah prosedur. 3. Dalam bahasa C, bila prosedur tidak mempunyai
parameter, maka tanda kurung ‘(‘ dan ‘)’ tetap ditulis setelah setelahnamaprosedur tersebut
4 Semua parameter dalam bahasa C adalah parameter 4. Semua parameter dalam bahasa C adalah parameter
masukan
ALGORITMA
procedureNamaProsedur(deklarasi parameter,jika ada)
{spesifikasi prosedur,berisi penjelasan tentang apa yang dilakukan oleh prosedur ini.
K.Awal : keadaan sebelum prosedur dilaksanakan.
z Cara memanggil prosedur :
p
K.Akhir : kedaan setelah prosedur dilaksanakan. }
DEKLARASI
{ semua nama yang dipakai didalam prosedur dan hanya berlaku local didalam prosedur didefinisikan disini }
DESKRIPSI :
{ badan prosedur, barisi urutan instruksi}
NamaProsedur
Jika prosedur tidak mempunyai parameter, z atau
NamaProsedur(parameter actual) Jika prosedur mengandung parameter.
Algoritma dan Pemrograman I
BAHASA C++
void NamaProsedur(deklarasi parameter,jika ada)
/* Spesifikasi prosedur, berisi penjelasan tentang apa yang dila kukan oleh prosedur ini. */
/* K.Awal : keadaan sebelum prosedur dilaksanakan. */ /* K Akhir : keadaan setelah prosedur dilaksanakan */
z Cara memanggil prosedur :
/ K.Akhir : keadaan setelah prosedur dilaksanakan. / {
/* DEKLARASI */
/* semua nama yang dipakai dalam prosedur dan hanya berlaku lok al di dalam prosedur didefinisikan di sini */
/* DESKRIPSI */
/* badan prosedur, berisi kumpulan instruksi */ }
z Cara memanggil prosedur : NamaProsedur
Jika prosedur tidak mempunyai parameter, z atau
NamaProsedur(parameter actual) Jika prosedur mengandung parameter.
1.Contoh translasi prosedur tanpa parameter
procedure HitungLuasSegitiga
Algoritma :
prosedur
p g g g
{ Menghitung luas segitiga dengan rumus L = (alas x tinggi)/2 } { K.Awal : sembarang }
{ K.Akhir : luas segitiga tercetak. } DEKLARASI
alas : real { panjang alas segitiga, dalam cm } tinggi : real { tinggi segitiga, dalam cm } luas : real { luas segitiga, dalam cm2 } DESKRIPSI
d( l ti i) read(alas,tinggi) luas Å(alas * tinggi)/2 write(luas)
Algoritma dan Pemrograman I
1.Contoh translasi prosedur tanpa parameter
AlgoritmaSegitiga
Algoritma :
Program utama
AlgoritmaSegitiga
{ Menghitung luas N buah segitiga. }
DEKLARASI i, N : integer
procedure HitungLuasSegitiga
{ Menghitung luas segitiga dengan rumus L =(alas x tinggi)/2 }
DESKRIPSI:
read(N) { tentukan banyaknya segitiga }
for i Å1 to N do for i Å1 to N do
HitungLuasSegitiga endfor
1.Contoh translasi prosedur tanpa parameter
#include <stdio.h>
void HitungLuasSegitiga(); main()
{
Bahasa C / C++ dengan include <stdio.h> :
{
int i, N;
printf(“banyaknya segitiga? ”); scanf(”%d”,&N); for(i=1;i<=N;i++) HitungLuasSegitiga(); } void HitungLuasSegitiga() { float alas; float tinggi; float tinggi; float luas;
printf(“\nPanjang alas segitiga? ”); scanf(”%f”,&alas); printf(“Tinggi segitiga? ”); scanf(”%f”,&tinggi); luas = ( alas * tinggi )/2.0;
printf(“Luas segitiga = %5.2f\n”,luas); }
Algoritma dan Pemrograman I
1.Contoh translasi prosedur tanpa parameter
#include <iostream.h> void HitungLuasSegitiga(); void main()
{ i t i
Bahasa C / C++ dengan include <iostream.h> :
int i, N;
cout << “banyaknya segitiga? ”; cin >> N;
for(i=1;i<=N;i++) HitungLuasSegitiga(); } void HitungLuasSegitiga() { float alas; float tinggi; float tinggi; float luas;
cout << “\nPanjang alas segitiga? "; cin >> alas ;
cout << "Tinggi segitiga? "; cin >> tinggi;
luas = (alas * tinggi)/2.0; cout << "Luas = " << luas << endl;
2.Contoh translasi prosedur dengan parameter
masukan
procedure HitungLuasSegitiga(input alas tinggi : real)
ALGORITMA : Prosedur
procedure HitungLuasSegitiga(input alas, tinggi : real)
{ Menghitung luas segitiga dengan rumus L = (alas x tinggi)/2 } { K.Awal : alas dan tinggi sudah terdefinisi nilainya }
{ K.Akhir : luas segitiga tercetak. }
DEKLARASI
luas : real { luas segitiga, dalam cm2 }
DESKRIPSI
luas Å(alas * tinggi)/2 write(luas)
wr te(luas)
Algoritma dan Pemrograman I
2.Contoh translasi prosedur dengan parameter
masukan
AlgoritmaSegitiga
{ Menghitung luas N buah segitiga }
ALGORITMA : Program utama
{ Menghitung luas N buah segitiga. } DEKLARASI
i, N : integer a, t : real
procedure HitungLuasSegitiga(input alas, tinggi : real) { Menghitung luas segitiga dengan rumus L =(alas x tinggi)/2 } DESKRIPSI:
read(N) { tentukan banyaknya segitiga } for i Å1 to N do
read(a,t)
HitungLuasSegitiga(a,t) endfor
2.Contoh translasi prosedur dengan parameter
masukan
#include <stdio.h>
void HitungLuasSegitiga(float a, float t); main()
{
Bahasa C / C++ dengan menggunakan #include <stdio.h>
{
int i, N; float a, t;
printf(“banyaknya segitiga? ”); scanf(”%f”,&N); for(i=1;i<=N;i++)
{
printf(“\nPanjang alas segitiga? ”); scanf(”%f”,&a); printf(“Tinggi segitiga? ”); scanf(”%f”,&t);
HitungLuasSegitiga(a,t); }
} }
void HitungLuasSegitiga(float alas, float tinggi) {
float luas;
luas = ( alas * tinggi )/2.0;
printf(“Luas segitiga = %f\n”,luas); }
Algoritma dan Pemrograman I
2.Contoh translasi prosedur dengan parameter
masukan
#include <iostream.h>
void HitungLuasSegitiga(float a, float t); void main()
{
Bahasa C / C++ dengan menggunakan #include <iostream.h>
int i, N; float a, t;
cout << “banyaknya segitiga? ”; cin >> N;
for(i=1;i<=N;i++) {
cout << “\nPanjang alas segitiga? ”; cin >> a;
cout << “Tinggi segitiga? ”; cin >> t;
HitungLuasSegitiga(a,t); }
}
void HitungLuasSegitiga(float alas, float tinggi) {
float luas;
luas = ( alas * tinggi )/2.0; cout << “Luas=” << luas << endl;
3. Contoh translasi prosedur dengan parameter
keluaran
ALGORITMA : Prosedur
procedure HitungLuasSegitiga(input alas, tinggi : real, output luas : real)
{ Menghitung luas segitiga dengan rumus L = (alas x tinggi)/2 } { K.Awal : alas dan tinggi sudah terdefinisi nilainya }
{ K.Akhir : luas berisi luas segitiga. }
DEKLARASI
{ tidak ada }
DESKRIPSI
/ luas Å(alas * tinggi)/2
Algoritma dan Pemrograman I
3. Contoh translasi prosedur dengan parameter
keluaran
AlgoritmaSegitiga
ALGORITMA : Program utama
{ Menghitung luas N buah segitiga. }
DEKLARASI i, N : integer a, t : real
L : real { luas segitiga }
procedure HitungLuasSegitiga(input alas, tinggi : real)
{ Menghitung luas segitiga dengan rumus L = (alas x tinggi)/2 }
DESKRIPSI:
read(N) { tentukan banyaknya segitiga }
read(N) { tentukan banyaknya segitiga }
for i Å1 to N do read(a,t)
HitungLuasSegitiga(a,t,L) Write(L)
endfor
3. Contoh translasi prosedur dengan parameter
keluaran
#include <stdio.h>
void HitungLuasSegitiga(float a, float t, float *L); main()
Bahasa C / C++ dengan menggunakan #include <stdio.h>
main() {
int i, N; float a, t; float L;
printf(“banyaknya segitiga? ”); scanf(”%d”,&N); for(i=1;i<=N;i++)
{
printf(“\nPanjang alas segitiga? ”); scanf(”%f”,&a); printf(“Tinggi segitiga? ”); scanf(”%f”,&t);
HitungLuasSegitiga(a,t,&L);
printf(“Luas segitiga = %5.2f\”,L); }
}
void HitungLuasSegitiga(float alas, float tinggi, float *luas) {
*luas = ( alas * tinggi )/2.0; }
Algoritma dan Pemrograman I
3. Contoh translasi prosedur dengan parameter keluaran
#include <iostream.h>
void HitungLuasSegitiga(float a, float t, float *L); void main()
{
Bahasa C / C++ dengan menggunakan #include <iostream.h>
{
int i, N; float a, t; float L;
cout << “banyaknya segitiga? ”; cin >> N;
for(i=1;i<=N;i++) {
cout << “\nPanjang alas segitiga? ”; cin >> a;
cout << “Tinggi segitiga? ”; cout << Tinggi segitiga? ; cin >> t;
HitungLuasSegitiga(a,t, &L);
cout << "Luas segitiga = " << L <<endl; }
}
void HitungLuasSegitiga(float alas, float tinggi, float *luas) {
*luas = ( alas * tinggi )/2.0;
4. Contoh translasi prosedur dengan parameter
masukan / keluaran
procedure Tukar(input/output A B : integer)
Algoritma : prosedur
procedure Tukar(input/output A,B : integer)
{ Mempertukarkan nilai A dan B. }
{ K.Awal : nilai A dan B sudah terdefinisi. } { K.Akhir : A berisi nilai B, B berisi nilai A semula. }
DEKLARASI
temp : integer { peubah Bantu }
DESKRIPSI
temp ÅA { simpan nilai A ke dalam temp }
A ÅB { isikan nilai B ke dalam A }{ }
B Åtemp { isikan nilai temp ke dalam B }
Algoritma dan Pemrograman I
4. Contoh translasi prosedur dengan parameter
masukan / keluaran
AlgoritmaSelisihXY Algoritma : Program utama
AlgoritmaSelisihXY
{Prog. untuk menghitung selisih nilai X dan Y,dengan syarat X ≥ Y jika X < Y,ma ka X dan Y dipertukarkan dengan memanggil prosedur Tukar. }
DEKLARASI X, Y, Z : integer
procedure Tukar(input/output A,B : integer) { mempertukarkan nilai A dan B }
DESKRIPSI:
read(X,Y) { baca nilai X dan Y terlebih dahulu }
{Jika X < Y, pertukaran nilai X dan Y dengan memanggil prosedur Tukar } If X < Y then
Tukar(X,Y) endif
Z ÅX – Y { hitung selisih x dan Y } write(Z)
4. Contoh translasi prosedur dengan parameter
masukan / keluaran
#include <stdio.h>
void Tukar(int *X, int *Y)
Bahasa C / C++ dengan menggunakan #include <stdio.h>
( , ) main()
{
int X, Y, Z;
printf(“X = ?”); scanf(“%d”,&X); printf(“Y = ?”); scanf(“%d”,&Y); if(X < Y)
Tukar(&X,&Y); Z = X – Y;
printf(“Z = %d \n”,Z); }
}
void Tukar(int *A, int *B) {
int temp; temp = *A; *A = *B; *B = temp; }
Algoritma dan Pemrograman I
4. Contoh translasi prosedur dengan parameter
masukan / keluaran
#include <iostream.h> void Tukar(int *X, int *Y);
id i ()
Bahasa C / C++ dengan menggunakan #include <iostream.h>
void main() {
int X, Y, Z;
cout << ”X = ?”; cin >> X; cout << ”Y = ?”; cin >> Y; if(X < Y)
Tukar(&X,&Y); Z = X – Y;
cout << ”Z = ” << Z; }
}
void Tukar(int *A, int *B) {
int temp; temp = *A; *A = *B; *B = temp; }
PERTEMUAN 13
PERTEMUAN 13
PERTEMUAN 14
FUNCTION
Algoritma dan Pemrograman I
Teknik Informatika
UNIKOM
Definisi Fungsi
z
Fungsi/function adalah bagian dari program
yang memiliki nama tertentu, digunakan
untuk mengerjakan suatu pekerjaan tertentu,
serta letaknya dipisahkan dari bagian
Keuntungan menggunakan fungsi
z program besar dapat dipisah menjadi program-program kecil.
z Dapat dikerjakan oleh beberapa orang sehingga koordinasi p j p g gg mudah.
z Kemudahan dalam mencari kesalahan-kesalahan karena alur logika jelas dan kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.
z Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu program keseluruhan.
z Mempermudah dokumentasi.
z Reusability: Suatu fungsi dapat digunakan kembali oleh programReusability: Suatu fungsi dapat digunakan kembali oleh program atau fungsi lain
Sifat-sifat modul/fungsi yang baik
z
Nilai fan-in tinggi, artinya semakin sering
t
d l di
il l h
suatu modul dipanggil oleh pengguna
semakin tinggi nilai fan-in
z
Fan-out rendah, artinya semakin spesifik
fungsi suatu modul akan semakin rendah
nilai fan-out
z
Self contained tinggi: artinya kemampuan
zSelf-contained tinggi: artinya kemampuan
Kategori Function
z Standard Library Function
Yaitu fungsi-fungsi yang telah disediakan oleh Compiler dalam Yaitu fungsi-fungsi yang telah disediakan oleh Compiler dalam
file-file header atau librarynya.
Misalnya: clrscr(), printf(), getch(),writeln(),readln()
z Programmer-Defined Function
Adalah function yang dibuat oleh programmer sendiri. Function ini memiliki nama tertentu yang unik dalam program, letaknya terpisah dari program utama, dan bisa dijadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga y p g y g j g di-includekan untuk penggunaanya.
Jenis Fungsi
1. Fungsi yang Non-Void
z
Disebut non-void karena mengembalikan nilai
kembalian yang berasal dari keluaran
z
hasil proses function tersebut
z
Ciri: ada keyword return
2 Function yang Void
2. Function yang Void
z
Disebut void karena fungsi tersebut tidak
mengembalikan suatu nilai keluaran yang
didapat dari hasil proses fungsi tersebut.
z
Ciri: tidak adanya keyword return.
z
Ciri: tidak adanya tipe data di dalam deklarasi
y
p
fungsi.
z
Tidak dapat langsung ditampilkan hasilnya
//kamus int Nilai;
/*--- Fungsi untuk memutlakan nilai negatif ---*/ int Absolut(int X) /* definisi fungsi */
{
if(X<0) {( ) {
X= -1 * X; }
return(X); }
//algoritma utama void main() {{
Nilai= Absolut(-123,45)
Mendeklarasikan NA fungsi
Function TAMBAH(X:Integer;y:integer):integer
Parameter fungsi
Tipe balikan fungsi
Nama fungsi
g
Mendeklarasikan fungsi C
int TAMBAH(int x;int y)
Parameter fungsi Tipe balikan
Contoh fungsi
FunctionTambah(x:integer;y:integer):integer
Kamus Kamus
i:integer {
i:=x+y; return i; };
Dimana letak fungsi?
Program Menghitung penjumlahan
Kamus
i: integer;
FunctionTambah(x:integer;y:integer):integer
Kamus lokal
i:integer {
i:= x+ y; } ;
Algoritma utama
Badan Program utama Sub Program
Algoritma utama
{
i= Tambah(2,3) output(i); } ;
Latihan 1
z
Sebuah fungsi rumus matematika
didefinisikan sebagai berikut:
F(x)=3*x1+x2
Dimana nilai x1 dan x2 adalah bilangan bulat,
buatlah algoritma fungsi dari rumus
matematika tersebut
matematika tersebut
Latihan 2
z
Antrian di kasir mempunyai urutan nomor
zAntrian di kasir mempunyai urutan nomor
dari 1..10 urutan 10 adalah seorang ibu
hamil yang akan melahirkan, Seorang
Satpam ingin merubah urutan antrian
tersebut menjadi 10..1
B
tl h l
it
f
i
t k
t
zBuatlah algoritma fungsi untuk satpam
tersebut agar dapat merubah urutan posisi
antrian
Latihan 3
z
Sebuah bioskop terdapat antrian penonton
b j
l h 10
di k
dib ik
d ti
Tugas
z
Sebuah fungsi matamatika akan
mengembalikan hasil perhitungan dari 5 buah
bilangan dengan deret urutan sebagai berikut
3,6,7,8,0 rumus dari fungsi tersebut adalah
zF(x)=nilai terbesar/2
ARRAY (LARIK)
Algoritma dan Pemrograman I
ARRAY (LARIK)
Dosen : Utami Dewi Widianti
ARRAY
z
Array
atau
larik
adalah
koleksi data
dimana
setiap elemen memakai
nama yang sama
dan
bertipe sama
dan setiap elemen
dan
bertipe sama
dan setiap elemen
diakses dengan membedakan
indeks
arraynya.
z
Array adalah
variabel berindeks
. Indeks harus
bertipe yang memiliki
keturutan
(ada succesor
dan predesor), misal integer, byte, character
d
b
l
dan boolean.
Deklarasi Array Dimensi Satu
Bentuknya :
DEKLARASI
N
A
A
[
i d k ] f ti
NamaArray : Array[range_indeks] of tipe
Atau
TipeArray : TYPE Array[range_indeks] of tipe
NamaArray : TipeArray
Cara mengakses suatu elemen :
NamaArray
indeksAlgoritma dan Pemrograman I
Deklarasi Array Dimensi Satu
Contoh :
X : Array [1..10] of integer
y [
]
g
Artinya : mendefinisikan 10 variabel bertipe integer
Yaitu
: X
1, X
2, X
3, … X
10Contoh lain :
NamaHari
: Array [1..7] of String
Nilai
: Array [1..10] of Char
Frekuensi
: Array [‘A’..‘E’] of Real
Deklarasi Array Dimensi Satu
Cara Memberikan Nilai/Harga pada Array
NilaiMka : Array[1..10] of Char
Nil iMk
Å
’A’
NilaiMka
1Å
’A’
NilaiMka
2Å
’C’
NilaiMka
3Å
’ ’
Bahasa C++ :
B
t k
Bentuknya :
tipe nama_var[ukuran];
Algoritma dan Pemrograman I
Deklarasi Array Dimensi Satu
Contoh Algoritma :
Algoritma Array1D DEKLARASI
Contoh dalam C++
#include<iostream.h> main()
DEKLARASI
N : array[1..5] of integer i : integer
DESKRIPSI N1Å25 N2Å12 N3Å17 N4Å10
main() {
int N[5]={25,12,17,10,15}; int i;
for(i=0; i<=4; i++) cout << N[i]; }
4 N5Å15
For i Å1 to 5 do Output (Ni) endfor
}
Deklarasi Array Dimensi dua
Algoritma :
Array dua dimensi hampir sama dengan array berdimensi satu namun biasanya array berdimensi dua banyak satu, namun biasanya array berdimensi dua banyak digunakan untuk penyajian data berbentuk tabel atau juga berbentuk matriks.
Bentuknya :
DEKLARASI
NamaArray : Array[r_indeks1, r_indeks2] of type Cara mengakses suatu elemen :
NamaArrayindeks1,indeks2
Algoritma dan Pemrograman I
Deklarasi Array Dimensi dua
1
2
3
4
Contoh:
1
2
3
4
1
10 2
11
12
2 20 4
22 23
3 30 3
33 34
4 40 5
44 45
Harga : Array [1..4,1..4] of integer Harga1,1Å10
Harga2,3Å22
Harga3,1Å30
Deklarasi Array Dimensi dua
Bahasa C++ :
Bentuknya :
Bentuknya :
tipe nama_var[ukuran1][ukuran2];
ukuran1 = jumlah baris
ukuran 2 = jumlah kolom
Contoh :
int data_huruf[2][4];
Algoritma dan Pemrograman I
Deklarasi Array Dimensi dua
Contoh Program dalam bahasa C++: /* Program : array.cpp */ #include<iostream.h> void printArray(int a[2][3]); main()
{ k1 2 { {1 1 1} {2 2 2}} { int matrik1[2][3] = { {1, 1, 1}, {2, 2, 2}};
int matrik2[2][3] = { {3, 3, 3}, {4, 4, 4}}; printArray(matrik1);
printArray(matrik2); }
void printArray(int a[2][3])
{ int i, j; Output
for(i=0; i<=1; i++) { for(j=0; j<=2; j++)
cout << a[i][j]<< " "; cout << endl;
} }
Deklarasi Array Dimensi banyak
Algoritma :
Bentuknya :
DEKLARASI
NamaArray : TipeElemen Array[r_indeks1, r_indeks2,… , r_indeksn]
Cara mengakses suatu elemen :
NamaArrayindeks1, indeks2, indeks3
Algoritma dan Pemrograman I
Deklarasi Array Dimensi banyak
Bahasa C++ :
Bentuknya :
tipe nama_var[ukuran1][ukuran2]. . .[ukuranN];
Contoh :
int data_huruf[2][4][6];
PERTEMUAN 16