• Tidak ada hasil yang ditemukan

Algoritma Dan Pemrograman 1

N/A
N/A
Protected

Academic year: 2017

Membagikan "Algoritma Dan Pemrograman 1"

Copied!
100
0
0

Teks penuh

(1)

DOSEN:

UTAMI DEWI W.,S.Kom

(2)

Algoritma dan Pemrograman I

Teknik Informatika

(3)
(4)

menjabarkan masalah

merinci langkah untuk menyelesaikan masalah

(5)

bentuk urutan masalah

bahasa yang dipakai

(6)

algoritma

Program

(7)

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.

(8)

Notasi I : untaian kalimat deskriptif

Notasi II : diagram alir (flow chart)

Notasi III : psudo-code

Contoh masalah : menghitung luas

(9)

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

(10)

Input

panjang,

lebar

Luas

panjang * lebar

(11)

Algoritma Luas_Segiempat

{Menghitung luas segiempat dengan

memasukkan nilai lebar dan panjang

segiempat}

Deklarasi

luas, panjang, lebar : integer

Deskripsi

input(panjang)

input(lebar)

(12)

Adalah perwujudan atau implementasi teknis

Algoritma yang ditulis dalam bahasa

(13)

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

(14)

belajar tentang strategi pemecahan

masalah, metodologi dan sistematika

pemecahan masalah kemudian

menuliskannya dalam notasi yang

disepakati bersama

bersifat pemahaman persoalan, analisis

dan sintesis

(15)

belajar memakai suatu bahasa pemrograman,

aturan sintaks, tatacara untuk memanfaatkan

instruksi yang spesifik untuk setiap bahasa

(16)

1.

benar

2.

berlaku umum untuk beragam data (valid)

3.

mudah dibaca

4.

mudah dimodifikasi dan dikembangkan

5.

efisiensi dalam penggunaan ruang dan waktu

(17)
(18)

Prosedural / Terstruktur

Paradigma Fungsional

Paradigma Deklaratif / Logika

Paradigma Object-Oriented

Paradigma Konkruen

(19)

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.

(20)

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

(21)

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,

(22)

Kerangka berpikir PBO berbeda dengan

pemrograman tradisional.

Pemrograman tradisional :

memisahkan antara data, dan

prosedur yang mengolah data

tersebut.

PBO : data dan prosedur ini

(23)
(24)

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

(25)

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”)

(26)

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

(27)

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 2

Switch (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; }

(28)

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; }

(29)

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; }

(30)
(31)

PERTEMUAN 3

KONSEP TIPE DATA, OPERATOR

DAN IDENTIFIER

DAN IDENTIFIER

Algoritma dan Pemrograman I

IDENTIFIER

(pengenal)

z

Nama tipe (di bagian deklarasi Type)

z

Tempat 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

(32)

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

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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

(38)

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 \)

(39)

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;

(40)

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;

(41)

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];

(42)

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

(43)

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)

(44)

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

(45)

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

(46)

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 ,

(47)

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

(48)

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

(49)

Contoh (Pengulangan) :

For i Å1 to 5 do

output(“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

(50)

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

(51)

QUIZ

QUIZ

(52)

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;

(53)

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;

(54)

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

(55)

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).

(56)

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

(57)

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

(58)

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”; }

}

(59)

PERTEMUAN 8

(60)

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.

(61)

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

(62)

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; }

(63)

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.

(64)

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

(65)

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)

(66)

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)

(67)

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’.

(68)

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.

(69)

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.

(70)

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.

(71)

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.

(72)

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

(73)

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

(74)

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

(75)

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.

(76)

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

(77)

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;

(78)

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

(79)

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;

(80)

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

(81)

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;

(82)

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)

(83)

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; }

(84)

PERTEMUAN 13

PERTEMUAN 13

(85)

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

(86)

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

z

Self-contained tinggi: artinya kemampuan

(87)

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

(88)

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)

(89)

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

(90)

Contoh fungsi

FunctionTambah(x:integer;y:integer):integer

Kamus Kamus

i:integer {

i:=x+y; return i; };

Dimana letak fungsi?

(91)

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

(92)

Latihan 2

z

Antrian di kasir mempunyai urutan nomor

z

Antrian 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

z

Buatlah 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

(93)

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

z

F(x)=nilai terbesar/2

(94)

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.

(95)

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

indeks

Algoritma 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

10

Contoh lain :

NamaHari

: Array [1..7] of String

Nilai

: Array [1..10] of Char

Frekuensi

: Array [‘A’..‘E’] of Real

(96)

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

}

(97)

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

(98)

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;

} }

(99)

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];

(100)

PERTEMUAN 16

Gambar

Tabel Pengelompokan Operator
TABEL PENGELOMPOKAN TIPE DATA DASAR pada ALGORITMA

Referensi

Dokumen terkait

Bayi Paus Beluga berwarna gelap seperti lautan Arktik yang biru kelam, sehingga aman dari pemangsa. Saat dewasa warnanya putih sebagai alat penyamaran di tempat tinggalnya

Hallyu mulai merebak di banyak negara Asia dan mungkin banyak lapisan masyarakat belum menyadari bahwa Indonesia pun tidak luput dalam terpaan Hallyu ini.Seperti yang dikatakan

Hasil penelitian terhadap perempuan (istri) pegawai tetap di Universitas HKBP Nommensen (Sihotang Maria, 2010), bahwa motivasi mereka bekerja untuk membantu

Karena lensa spheris dibentuk dari dua prisma yang Karena lensa spheris dibentuk dari dua prisma yang berhimpitan maka lensa spheris mempunyai kekuatan berhimpitan maka lensa

PERANCANGAN PUSAT WISATA BUDAYA PONOROGO (TEMA : COMBINED METAPHORE REYOG)..

(1) Pendapat dan pertimbangan masyarakat untuk rencana teknis bangunan gedung tertentu dan/atau kegiatan penyelenggaraan yang menimbulkan dampak penting terhadap

Untuk itu setiap perbuatan yang mencoret, menulisi, menggambari, atau membuat rusak, menodai, menghina atau merendahkan, menggunakan Lambang Negara yang rusak dan

(Afwadzi, Sehingga, kajian hadis misoginis khususnya istri bersujud kepada suami dapat dipahami dengan melalui hermeneutika Gadamer (Sunarto -