53
MAKALAH STRUKTUR DATA DAN ALGORITMA DENGAN MENGGUNAKAN BAHASA C++ DAN PASCAL LEONARDO DAVINSI NAINGGOLAN 102406188 D-III TEKNIK INFORMATIKA

Makalah Struktur Data Dan Algoritma

Embed Size (px)

Citation preview

Page 1: Makalah Struktur Data Dan Algoritma

MAKALAH STRUKTUR DATA DAN ALGORITMA

DENGAN MENGGUNAKAN BAHASA C++ DAN PASCAL

LEONARDO DAVINSI NAINGGOLAN

102406188

D-III TEKNIK INFORMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

2012

Page 2: Makalah Struktur Data Dan Algoritma

i

DAFTAR ISI

Daftar Isi................................................................................................................ i

Bab 1 Pendahuluan……………………………………………………………… 1

1.1 Pengertian Struktur Data.............................................................................. 2

1.2 Pengertian Algoritma................................................................................... 2

Bab 2 Pembahasan

2.1 Gambaran umun C++ dan Pascal……………………………………… 4

2.1.1 Gambaran Umum C++………………………………………………… 4

2.1.2 Gambaran Umum Pascal………………………………………………… 5

2.2 Tipe Tipe Data , Konstanta, Variabel, & Operator…………………………. 7

2.2.1 Tipe Data………………………….………………………………………. 7

2.2.2 Variabel………………………….………………………………………… 10

2.2.3 Konstanta………………………….……………………………………… 10

2.3 Input dan Output………………………….………………………………… 11

2.3.1 Output………………………….…………………………………………. 11

2.3.2. Input………………………….………………………………………….. 12

2.4 Operator………………………….………………………………………… 13

2.4.1 Operasi Bilangan Bulat………………………….……………………….. 13

2.4.2 Operasi Pecahan………………………….………………………………. 13

2.4.3 Operasi Boolean………………………….……………………………… 14

2.4.4 Operasi Perbandingan………………………….……………………….. 14

2.5 Kondisional………………………….……………………………………. 15

2.5.1 If-then dan if-then-else………………………….……………………… 15

2.5.2 Case of………………………….………………………………………. 15

2.5.3 Operator Ternary………………………….…………………………….. 16

2.6 Pengulangan………………………….…………………………………… 17

2.6.1 Loop For………………………….……………………………………… 17

2.6.2 Loop While………………………….…………………………………… 17

2.6.3. Loop Repeat………………………….…………………………………. 17

BAB 3 PEMBAHASAN MATERI STRUKTUR DATA DAN ALGORITMA 19

3.1 Array………………………………………………………………………. 19

3.1.1 Inisialisasi Array………………………….………………………………. 19

Page 3: Makalah Struktur Data Dan Algoritma

ii

3.1.2 Akses ke dalam Array………………………….……………………… 20

3.1.3 Array Multidimensi………………………….………………………… 20

3.2 String dan Karakter………………………….…………………………… 22

3.3 Fungsi (Lanjutan)………………………….…………………………….. 23

3.4 Class ………………………….………………………….………………… 25

LAMPIRAN

Page 4: Makalah Struktur Data Dan Algoritma

BAB 1

PENDAHULUAN

Komputer pada dasarnya merupakan mesin yang tidak bisa apa-apa. Kita harus

memberikan serangkaian instruksi kepada komputer agar mesin ‘pintar’ ini dapat

memecahkan suatu masalah. Langkah-langkah yang perlu dilakukan dalam

memberikan instruksi kepada komputer untuk memecahkan masalah inilah yang

dinamakan pemrogaman komputer. Adapun langkah-langkah pemrogaman komputer

adalah sebagi berikut: mendefinisikan masalah, menentukan solusi, memilih

algoritma, menulis program, menguji program, menulis dokumentasi, serta merawat

program.

Sebelum membuat program, hendaknya kita membuat Flow Chart atau

Pseudocode, sehingga memudahkan kita untuk memahami algoritma serta

memudahkan kita dalam membuat program. Program yang ditulis juga harus jelas,

nyata,dankomplit.

Pada bahasa pemrograman tingkat tinggi, seperti Pascal dan C++, telah

tersedia jenisdata standar integer, yang merupakan jenis data untuk menyimpan

bilangan bulat. Secara algoritmik, jenis data integer tidak mempunyai batas nilai

maksimum maupun batas nilai minimum, namun tidak demikian halnya dalam

implementasi pada bahasa pemrograman. Sebagai contoh pada bahasa Turbo Pascal

dan Turbo C, jenis data integer terbesar diimplementasikan dalam 4 byte data, yang

berarti membatasi nilainya dari 2147483648 sampai dengan 2147483647. Pembatasan

nilai ini akan meningkatkan efisiensi kompilator, tetapi di sisi yang lain akan

membatasi perhitungan yang bisa dilakukan. Secara praktis hal ini diatasi dengan

menggunakan jenis data real (atau float pada bahasa C) untuk melakukan perhitungan

Page 5: Makalah Struktur Data Dan Algoritma

2

dengan bilangan bulat yang cukup besar, akan tetapi solusinya tidak selalu

memuaskan. Jenis data real seringkali tidak bisa dipergunakan pada perhitungan yang

menuntut kecermatan tinggi.

1.1 Pengertian Struktur Data

Struktur data adalah cara menyimpan atau merepresentasikan data didalam komputer

agar bisa dipakai secara efisien. Sedangkan data adalah representasi dari fakta dunia

nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau

direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol.

Struktur Data, meliputi:

a) Struktur data sederhana, misalnya array dan record.

b) Struktur data majemuk, yang terdiri dari:

Linier :Stack,Queue,sertaListdan Multilist.

Non Linier : Pohon Biner dan Graph.

Pemakaian struktur data yang tepat didalam proses pemrograman akan menghasilkan

algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan

lebih efisien dan sederhana.

1.2 Pengertian Algoritma

Algoritma merupakan tahapan-tahapan untuk mencapai hasil. Jadi Algoritma tidak

selalu berhubungan dengan Ilmu Komputer. Misalkan cara membuat cake. Pertama

kita harus mempersiapkan adonan cake. Kemudian apabila adonan tersebut telah jadi,

panaskan oven. Kemudian taruh adonan cake tersebut kedalam Loyang yang telah

dioleskan mentega dan ditaburi sedikit tepung. Apabila adonan tersebut telah

dimasukkan kedalam Loyang,masukkan Loyang yang berisi adonan cake tersebut

kedalam oven yang telah di tentukan suhunya tadi. Tunggulah kira-kira setengah jam.

Maka adonan cake tersebut akan menjadi kue cake.

Page 6: Makalah Struktur Data Dan Algoritma

3

Di sini saya bukan membahas tentang kue cake, tapi saya hanya memberi

gambaran logis tentang pengertianAlgoritma yang sebenarnya. Yang dapat kita ambil

dari contoh di atas adalah untuk menghasilkan sesuatu,maka diperlukan proses. Proses

tersebut terdiri dari tahapan-tahapan yang logis. Jadi menurut pemikiran saya,secara

umum Inti dari algoritma adalah tahapan-tahapan logis yang harus dipenuhi untuk

mencapai suatu hasil.

Sekarang saya akan membahas Algoritma menurut pengertian ilmu Komputer.

Algoritma dalam ilmu Komputer adalah urut-urutan yang logis dan tepat untuk

memecahkan permasalahan yang menggunakan Komputer dengan bahasa

pemrograman yang telah ditentukan seperti bahasa pascal, Visual Basic, C, atau yang

lainnya. Untuk membuat sebuah program, seseorang harus memiliki daya pikir yang

bagus. Dan untuk menghasilkan sebuah program yang berbeda dengan yang lainnya,

maka orang tersebut harus memiliki kreativitas.

Kata Algoritma berasal dari bahasa arab yaitu Algorism yang berarti proses

menghitung dengan angka arab. Sedangkan Algorist adalah orang yang menghitung

dengan menggunakan angka arab. Sebenarnya, Algoritma itu sendiri berasal dari nama

seorang ahli matematika dari Uzbekistan yaitu Abu Abdullah Muhammad Ibn Musa

al-Khwarizmi yang dibaca oleh orang barat menjadi Algorism.

Page 7: Makalah Struktur Data Dan Algoritma

BAB 2

PEMBAHASAN

2.1 GAMBARAN UMUM C++ DAN PASCAL

2.1.1 Gambaran Umum C++

Beberapa hal yang perlu diingat mengenai bahasa C++:

a) Komentar dalam C++ menggunakan /* … */ untuk memuat beberapa baris

sekaligus ataumenggunakan // untuk mengabaikan semua karakter di sebelah

kanannya sebanyak 1 baris.

Page 8: Makalah Struktur Data Dan Algoritma

b) Sebuah program dalam C++ harus memiliki fungsi bernama main(), fungsi ini

adalahfungsi spesial karena di situlah main program kita.

c) Dalam C++ sebenarnya juga tidak ada procedure, procedure didefinisikan

sebagai functionyang mengembalikan nilai void.

d) Setiap baris perintah harus diakhiri dengan titik koma ‘;’ kecuali yang diawali

dengan kres‘#’.

e) Blok program diawali kurung-kurawal-buka ‘{’ dan diakhiri kurung-kurawal-

tutup ‘}’.

f) Bahasa C++ juga bahasa yang case-sensitive, jadi perhatikan dalam penamaan

variabel,type, maupun pemanggilan fungsi-fungsi yang sudah ada.

g) Perintah terakhir di dalam main() yaitu return 0 digunakan untuk

mengindikasikan bahwa

h) program tersebut sukses berjalan.

2.1.2 Gambaran Umum PASCAL

Page 9: Makalah Struktur Data Dan Algoritma

6

Beberapa hal yang perlu diingat mengenai bahasa C:

a) Komentar dalam C menggunakan /* … */ dan bisa memuat beberapa baris

sekaligus.

b) Sebuah program dalam C harus memiliki fungsi bernama main(), fungsi ini

adalah fungsispesial karena di situlah main program kita.

c) Dalam C sebenarnya tidak ada procedure, procedure didefinisikan sebagai

function yang

d) mengembalikan nilai void (void = sesuatu yang tidak ada).

e) Setiap baris perintah harus diakhiri dengan titik koma ‘;’ kecuali yang diawali

dengankres ‘#’.

f) Blok program diawali kurung-kurawal-buka ‘{’ dan diakhiri kurung-kurawal-

tutup ‘}’.

g) Bahasa C adalah bahasa yang case-sensitive, jadi perhatikan dalam penamaan

variabel,type, maupun pemanggilan fungsi-fungsi yang sudah ada.

h) Perintah terakhir di dalam main() yaitu return 0 digunakan untuk

mengindikasikan bahwaprogram tersebut sukses berjalan. Pada beberapa

kontes pemrograman, hal ini merupakansalah satu syarat diterimanya program.

(Program yang tidak me-return exit code 0dianggap mengalami runtime error.)

Deskripsi Pascal C C++

Assignment varx:integer; intx=a+b; intx=a+b;

Increment inc(i)ataui:=i+1 i++atau++i i++atau++i

Output writeln(‘i=’,i); printf(“i=%d\

n”,i);

std::cout<<”i=”<<i<<”\

n”;Input read(i); scanf(“%d”,&i); std::cin>>i

operasinumerik vari:integer;

idiv10

imod10 i/10

inti;

i%10

i/10

inti; i

%10

i/10

Kondisional if(a<>b)then

begin

sama:=false;

end else

begin

sama:=true;

if(a!=b)

{

sama=0;

}

else

{

if(a!=b)

{

sama=false;

}

else

{Pengulangan fori:=1to10do

begin

fak:=fak*i;

for(i=

1;i<=10;i++)

{

fak*=i;

for(i=1;i<=10;i++)

{

fak*=i;

Fungsi functionplus(x:integer):boolean;

begin

plus:=(x>=0);

intplus(intx)

{

return(x>=0);

boolplus(intx)

{

return(x>=0);

Page 10: Makalah Struktur Data Dan Algoritma

7

Prosedur proceduretambah(varx:integer);

begin

x:=x+1;

voidtambah(int*x)

{

*x++;

voidtambah(int&x)

{

x++;

2.2 Tipe Data , Konstanta, Variabel, & Operator

2.2.1 Tipe Data

a) Tipe Data Integer

NilaiMin NilaiMax Pascal C C++

-128 127 shortint Char char

-32,768 32,767 integer Int int

-2,147,483,648 2,147,483,647 longint Long long

0 255 byte unsignedchar unsignedchar

0 65,535 word unsignedint unsignedint

0 4,294,967,295 longword unsignedlong unsignedlong

b) Tipe Data Desimal

Nilainegatif Nilai positif Pascal C C++

+38 -38

-3.4x10 s/d-3.4x10

-38 +38

3.4x10 s/d3.4x10real float float

+308 -308

-1.7x10s/d-1.7x10

-308 +308

1.7x10s/d1.7x10double double double

c) Tipe Data Karakter & String

Pascal C C++

Typename=string[30]; typedefcharname[31]; typedefstd::stringname;

Page 11: Makalah Struktur Data Dan Algoritma

8

1. UntukC,tidakada typedata

khususstring,sehinggastringdidefinisikansebagaiarray ofchar.

2. PadaPascal,name:string[30]artinyakarakterdiisidari

name[1]..name[30]sedangkandalamCcharname[31]artinya

karakterdiisidariname[0]..name[30].

3. UntukC++,untukmenggunakantypestringharusada#include<string>diawal.

4. Programharusmenggunakanstd::string.

d) Tipe Data Boolean

Pascal C C++

Type

tabel=array[0..10]of

integer;

typedefinttabel[11]; typedefinttabel[11];

Type

matrix=array[0..20,0..30]

ofreal;

typedef

floatmatrix[21][31];

typedef

floatmatrix[21][31];

1. Formatdeklarasinya:typedef<type-elemen><nama-

type>[<banyaknyaelemen+1>];

2. PadaCdanC++ indeksarrayselaludimulaidari0.

3. Jadijikaditulisinttabel[11]artinya adatabel[0]…tabel[10].

4. Contohcara pengaksesan: tabel[2],matrix[5][29]

e) Typedataenumerasi

Pascal C C++

Page 12: Makalah Struktur Data Dan Algoritma

9

typehari=(senin,

selasa,rabu,kamis,

jumat,sabtu);

typedefenum

{senin,selasa,

rabu,kamis,jumat,

sabtu;

}hari;

typedefenum

{senin,selasa,rabu,

kamis,jumat,sabtu;

}hari;

1. Jadiformat: typedefenum{<elemen-elemen>}<nama-type>;

2. Untuk contoh di atas, pada C dan C++ senin akan bernilai 0, selasa=1,

rabu=2 dst…jika ditulis

typedef enum

maka senin bernilai 3, selasa=7, rabu=8, kamis=9, jumat=10,

sabtu=20.

3. Jadi jika nilai pada elemen tersebut tidak didefinisikan, akan dianggap

+1 dari elemensebelumnya.

f) Typedatapointer

Pascal C C++

typeaddress:^integer; typedefint*address; typedefint*address;

typeaddr:^siswa;

{typesiswaadadiatas}

typedefsiswa*addr;

/*typesiswaadadi

atas*/

typedefsiswa*addr;

//typesiswaadadiatas

Ketikakita

menggunakanPascal,kitahampirtidakperluberurusandenganpointer,tapi diC

mautidakmaukitaharusberurusandengantipedatasatuini.

Pointertidak menyimpannilai,pointerhanyamenyimpanalamat memorydarinilai

yangdisimpan,jadibukannilaiitusendiri.MisaladdressP;maka*P=10akan

Page 13: Makalah Struktur Data Dan Algoritma

10

membuatnilaiyangditunjukolehP berubahmenjadi10,

tapiPitusendiritidakberubah,Ptetap menunjukalamatyang sama.

2.2.2Variabel

SyntaxuntukdeklarasidanassigmentvariabeldalamC&C++berbedadenganPascal.

Pascal C C++

angka:integer;

hasil:real;

tabel:array[0..10]ofchar;

intangka;

floathasil;

chartabel[11];

charnama[31];

intangka;

floathasil;

chartabel[11];

angka:=10;

hasil:=23.98;

tabel[7]:=‘S’;

angka=10;

hasil=23.98;

tabel[7]=‘S’;

angka=10;

hasil=23.98;

tabel[7]=‘S’;

Jikapada Pascalbagianuntukdeklarasivariabelharusdiawalidenganvardanberada

sebelummainprogram,halinitidakadadalamC& C++,kitabisamendeklarasikan

variabeldi manapun.

a) Aturanpenamaanvariabel:

a. case-sensitive

b. diawalidenganhuruf

c. bolehterdiridarihuruf,angka,atauunderscore‘_’

d. tidakbolehadavariabelganda,maupunkonflikdenganreservedword

b) Opera

toruntukassignmentadalah‘=’jadijangansampaitertukardenganoperatorkompara

si‘==’.

c) PadaC&C++kitabisa

m

enyingkatdeklarasidanassignmentsekaligus,contoh:intangka=10;floathasil=23.

98;Formatdeklarasivariabelsangatmiripdenganformatdeklarasitype.Bedanyaha

nyatidakadanyakatakuncitypedef.

Page 14: Makalah Struktur Data Dan Algoritma

11

2.2.3Konstanta

Pascal C C++

constpi=

3.1415926;

Ada2cara:

constfloatpi=3.1415926;

atau:

#definepi3.1415926

Ada2cara:

constfloatpi=3.1415926;

atau:

#definepi3.1415926

PadaC&C++konstantabiasaharustetap dideklarasikantype-nya.

a. #defineadalah makro,dimana

fungsinyamiripfind&replacepadatexteditor.

b. Formatnya:#define<nama><nilai>,carakerjanyaadalah

mencari<nama>di seluruhcodedanmengubahnyamenjadi<nilai>.

2.3InputdanOutput

2.3.1Output

Pascal C C++

write(‘Apakabar?’); printf(“Apakabar?”); std::cout<<“Apakabar?”;

writeln(‘Baik-

baik saja’);

printf(“Baik-baik saja\n”); std::cout<<“Baik-baik

saja\n”

vari:integer;

...

inti;

...

inti;

...

writeln(‘nilai i adalah

’,i);

printf(“nilai i adalah

%d\n”,i);

std::cout << “nilai i adalah

” << i << “\n”;

var c:char; f: real;

...

writeln(‘c = ’,c,’ f =

’,f);

char c; float f;

...

printf(“c = %c f =

%f\n”,c,f);

char c; float f;

...

std::cout << “c = ” << c <<

“f = ” << f << “\n”;

UntukC,perlu#include<stdio.h>diawal program.

UntukC,outputmenggunakanfungsiprintf(printformatted)

Page 15: Makalah Struktur Data Dan Algoritma

12

F

ormatnya:printf(“<stringbesertaformatvariabel>”,<variabel>[,<variabel>,...]);

J

adi,bentukdarikeluarandituliskanduluformatnyasebagaiparameterpertamaprintfdalamb

entukstring(diapitolehpetik).

Yangmembedakantextbiasa denganformatvariabeladalahtanda%. Daftar

formatyangada:

%iatau%d Int

%liatau%ld Long

%u unsignedint

%ul unsignedlong

%c Char

%f Float

%lf longfloat

%s String

Selain format,adakarakter-karakterkhusus,contoh:‘\n’untukakhir baris

a. UntukC++,perlu#include<iostream>di awalprogram.

b. UntukC++,outputmenggunakanstd::cout

c. Karakter-karakterkhususpadaCjuga berlakupadaC++.

2.3.2.Input

Pascal C C++

var i:integer;

f:real;

cc:char;

inti; floatf;

charcc;

inti; floatf;

charcc;

read(i); scanf(“%d”,&i); std::cin>>i;

read(f); scanf(“%f”,&f); std::cin>>f;

read(cc); scanf(“%c”,&cc); std::cin>>cc;

UntukC,perlu#include<stdio.h>diawal program.

Page 16: Makalah Struktur Data Dan Algoritma

13

a. UntukC,inputmenggunakanscanf(scanformatted).

Formatyangdigunakanhampirsamadenganprintf,namunsetelahstring

format,yangdiisibukannamavariabel,

melainkanpointerdariarraytersebut.Makanyauntuk

memasukkannilaidesimal(%f)kedalamvariabelfdigunakanpointerf(&f).

b. UntukC++,perlu#include<iostream>di awalprogram.

c. UntukC++,inputmenggunakanstd::cin.

2.4Operator

2.4.1OperasiBilanganBulat

Operatoryangdigunakanpadabilanganbulatdanmenghasilkanbilanganbulatjuga:

De

finisi

Pascal C C++

P

enjumlah

+ + +

P

engurang

- - -

Perkalian * * *

Hasilbagi div / /

Sisa bagi mod % %

Incr

ement

inc(x); x++;atau+

+x;

x++;atau+

+x;x x+a inc(x,a); x+=a; x+=a;

Decr

ement

dec(x); x--;atau–-x; x--;atau--x;

x x- a dec(x,a); x-=a; x-=a;

a) Adaperbedaanantarax++dengan++xdanantara x--dengan--xmeskipunhasiL

akhirnya sama.

b) Jikadijalankan:intx=1;printf(“%d”,x+

+);makayangkeluaradalahangka1.Nilaixsetelahituadalah 2.Tapijika

dijalankan:intx=1;printf(“%d”,++x);makayangkeluaradalah2.

Nilaixsetelahituadalah 2.

c) Begitujuga denganx-- dan--x.

Page 17: Makalah Struktur Data Dan Algoritma

14

2.4.2OperasiPecahan

Operatoryangdigunakanpadabilanganpecahandanmenghasilkanpecahanjuga:

Definisi Pascal C C++

P

enjumla

+ + +

P

enguran

- - -

P

erkalian

* * *

P

embagia

/ / /

PadaC&C++,operatorpembagi‘/’

menggunakanlambangyangsama.Jika/dioperasikan

pada2buahbilanganbulat,maka

otomatismenjadioperasidiv,sedangkanjikasalahsatu operand-

nyapecahanmakaotomatismenjadioperasipembagianbiasa.

2.4.3OperasiBoolean

Operatoryangdigunakanuntukmemanipulasitrue danfalse:

Definisi Pascal C C++

Negasi Not ! !

Konjungsi And && &&

Dis

jungsiinklusif

Or || ||

Dis

jungsiekslusif

Xor ^ ^

2.4.4OperasiPerbandingan

Operatoryangdigunakanuntukmembandingkannilaibilangandenganbilanganlain:

Jangansampaitertukarantara operatorassignment‘=’denganoperatorpembanding‘==’.

Page 18: Makalah Struktur Data Dan Algoritma

15

Definisi Pascal C C++

Samadengan = == ==

Tidaksamadengan <> != !=

Kurangdari < < <

Kurangdarisama dengan <= <= <=

Lebihdari > > >

Lebihdarisamadengan >= >= >=

HaliniseringterjadipadaorangyangterbiasadenganPascaldanberalihkeC.

2.5Kondisional

2.5.1If-thendanif-then-else

Pascal C C++if(a>b)then begin

a:=b;

end;

if(a>b)

{

a=b;

}

if(a>b)

{

a=b;

}

if((ymodx)=0)

thenbegin

write(‘Divisible’); end

else

begin write(‘Not

divisible’);

end;

if((y%x)==0)

{

printf(“Divisible”);

}

else

{

printf(“Not

divisible”);

if((y%x)==0)

{

std::cout<<“Divisible”;

}

else

{

std::cout<<“Not

divisible”;

a) Syntaxif..then..elsedalamC&C++sama persis.

b) Beda

nyadenganPascaladalahtidakadanyakeywordthenjadiinstruksisetelahif()akan

dilaksanakanjikatrue.

2.5.2Caseof

Pascal C C++

Page 19: Makalah Struktur Data Dan Algoritma

16

casebulanof

1:begin...end;

2:begin..end;

...

end;

switch(bulan)

{

case1:...

break;

case2:...

break;

...

}

switch(bulan)

{

case1:...

break;

case2:...

break;

...

}casebulanof

1,3,5,7,8,10,12:

begin

days:=31;

end;

4,6,9,11:

begin

days:=30;

end;

2:

begin

...

end;

end;

switch(bulan)

{

case1:

case3:

...

case12:

days=31;

break;

case4:

...

case11:

days=30;

break;

case2:

...

}

switch(bulan)

{

case1:

case3:

...

case12:

days=31;

break;

case4:

...

case11:

days=30;

break;

case2:

...

}

Syntax case..of pada C & C++ sama persis.

a) Pada C & C++, harus menggunakan keyword switch dan case.

b) Pada C & C++ harus digunakan perintah break karena jika tidak ada

break,switch akanmembaca sisa perintah yang ada di bawahnya.

2.5.3OperatorTernary

Page 20: Makalah Struktur Data Dan Algoritma

17

Adacaralainuntuk menuliskanif..then..elseyaitudenganoperatorternary‘?’.

Formatnya:<kondisi>?<if-true>:<if-false>

Contoh:x=(a<b)?a:b;

jikaa =5danb=7 maka barisiniakanmenjadix= a;

tapijikaa= 10danb=5 maka barisiniakanmenjadix=b;

Barisdiatassetaradenganif(a<b){x=a;}else{x=b;};

Ke

unggulandariternaryadalahsingkat,tetapikelemahannyaadalahtidakbisauntukkondisi

yangagakkompleks.

2.6Pengulangan

2.6.1LoopFor

Pascal C C++vari:integer;

...

fori:=1to10do

inti;

...

for(i=1;i<=10;i++)

inti;

...

for(i=1;i<=10;

SyntaxfordalamC& C++sama persis.

Format:for(<initialvalue>;<stopcondition>;<incremental>){}

2.6.2LoopWhile

Pascal C C++

varfound:boolean;

...

while(notfound)do

begin

...

end;

unsignedcharfound;

...

while(!found)

{

...

}

boolfound;

...

while(!found)

{

...

}

a) Syntax while dalam C & C++ sama persis.

b) Format: while (<kondisi-lanjut>) {}

Page 21: Makalah Struktur Data Dan Algoritma

18

c) Tidak ada keyword do pada while, deretan perintah setelah while() itulah yang

akandieksekusi.

2.6.3. Loop Repeat

Pascal C C++

Repeat

...

until(i>j);

do

{

...

}

while(i<=j);

do

{

...

}

while(i<=j);

RepeatuntildalamC&C++adalahdo..whiledansyntaxnyasamauntukC maupunC+

+.

a) Format:do{}while(<kondisi-lanjut>);

b) Ke

yworddo..whiletidakbertindaksebagaibegin..endsehinggadiperlukan{da

n}jikainginmengeksekusibeberapabarisperintah.

Page 22: Makalah Struktur Data Dan Algoritma

BAB 3

PEMBAHASAN MATERI STRUKTUR DATA DAN ALGORITMA

3.1 Array

Array adalah kumpulan dari elemen-elemen/variable-variabel dengan tipe yang sama.

Grafik:

struktur:

type name [elements];

contoh:

int billy [5];

3.1.1 Inisialisasi Array

int billy [5];

atau:

int billy [5] = { 16, 2, 77, 40, 12071 };

Page 23: Makalah Struktur Data Dan Algoritma

20

3.1.2 Akses ke dalam Array

name[index]

billy[2] = 75; // isi array billy ke 2 dengan 75

a = billy[2]; // isi variable a dg isi array billy ke 2

int billy[5]; // deklarasi array baru

billy[2] = 75; // Akses ke dalam elemen Array.

// contoh penggunaan array

#include <iostream.h>

int billy [] = {16, 2, 77, 40, 12071};

int n, result=0;

int main ()

{

for ( n=0 ; n<5 ; n++ )

{

result += billy[n];

}

cout << result;

return 0;

}

12206

3.1.3 Array Multidimensi

Page 24: Makalah Struktur Data Dan Algoritma

21

int jimmy [3][5];

jimmy[1][3]

int jimmy [3][5];   is equivalent to

int jimmy [15];   (3 * 5 = 15)

// array multidimensi

#include <iostream.h>

#define WIDTH 5

#define HEIGHT 3

int jimmy [HEIGHT][WIDTH];

int n,m;

int main ()

{

for (n=0;n<HEIGHT;n++)

for (m=0;m<WIDTH;m++)

{

jimmy[n][m]=(n+1)*(m+1);

}

return 0;

}

// pseudo-array multidimensi

#include <iostream.h>

#define WIDTH 5

#define HEIGHT 3

int jimmy [HEIGHT * WIDTH];

int n,m;

int main ()

{

for (n=0;n<HEIGHT;n++)

for (m=0;m<WIDTH;m++)

{

jimmy[n * WIDTH +

m]=(n+1)*(m+1);

}

return 0;

}

Page 25: Makalah Struktur Data Dan Algoritma

22

3.2 String dan Karakter

Karakter : huruf. Contoh : ‘a..z’, ‘A..Z’, ‘0..9’ dll.

String : kumpulan karakter. Contoh: ‘ STMIK Indonesia Mandiri Bandung’.

char jenny [20];

null character ('\0'): digunakan untuk mengakhiri string.

String.h : Pustaka berisi kumpulan fungsi-fungsi untuk memanipulasi operasi string

dan karakter.

Inisialisasi String

char mystring[] = { 'H', 'e', 'l', 'l', 'o', '\0' };

char mystring [] = { 'H', 'e', 'l', 'l', 'o', '\0' };

char mystring [] = "Hello";

mystring = "Hello";

mystring[] = "Hello";

mystring = { 'H', 'e', 'l', 'l', 'o', '\0' };

memberikan nilai ke dalam string:

cara I:

mystring[0] = 'H';

mystring[1] = 'e';

mystring[2] = 'l';

mystring[3] = 'l';

Page 26: Makalah Struktur Data Dan Algoritma

23

mystring[4] = 'o';

mystring[5] = '\0';

cara II:

strcpy (string1, string2);

contoh :

strcpy (mystring, "Hello");

// mengisi nilai ke dalam string I

#include <iostream.h>

#include <string.h>

int main ()

{

char szMyName [20];

strcpy (szMyName,"A. Gracie");

cout << szMyName;

return 0;

}

A. Gracie

3.3 Fungsi (Lanjutan)

Arguments passed by value :

Struktur:

void duplicate (int a, int b, int c)

contoh:

int x=5, y=3, z;

z = addition ( x , y );

Bagan akses nilai ke parameter fungsi:

Page 27: Makalah Struktur Data Dan Algoritma

24

Arguments passed by Reference:

void duplicate (int& a, int& b, int& c)

// contoh fungsi by reference

#include <iostream.h>

void duplicate (int& a, int& b, int& c)

{

a*=2;

b*=2;

c*=2;

}

int main ()

{

int x=1, y=3, z=7;

duplicate (x, y, z);

cout << "x=" << x << ", y=" << y << ", z=" << z;

return 0;

}

x=2, y=6, z=14

Akses nilai ke parameter fungsi by reference:

// contoh lebih dari satu nilai

#include <iostream.h>

void prevnext (int x, int& prev, int& next)

{

prev = x-1;

Previous=99, Next=101

Page 28: Makalah Struktur Data Dan Algoritma

25

next = x+1;

}

int main ()

{

int x=100, y, z;

prevnext (x, y, z);

cout << "Previous=" << y << ", Next=" << z;

return 0;

}

3.4 Class

Class adalah metode abstrak yang terdiri dari data dan fungsi anggota/member

function untuk mendeskripsikan suatu objek/object.

Struktur Class:

classclass_name{

permission_label_1:

member1;

permission_label_2:

member2;

...

}object_name;

permission labels:

private : data dan fungsi private dari class yang hanya dapat diakses dari

fungsi dan metode dari class yang sama atau dari class “friend”.

protected : data dan fungsi protected dapat diakses dari class yang sama,

class “friend, dan class turunan dari class tersebut.

public : data dan fungsi public dapat diakses oleh semua class yang lain.

Contoh deklarasi Class:

Page 29: Makalah Struktur Data Dan Algoritma

26

class CRectangle {

int x, y;

public:

void set_values (int,int);

int area (void);

} rect;

Contoh akses data dan fungsi pada class menggunakan operator titik (.):

rect.set_value (3,4);

myarea = rect.area();

// Class CRectangle

#include <iostream.h>

class CRectangle {

int x, y;

public:

void set_values (int,int);

int area (void) {return (x*y);}

};

void CRectangle::set_values (int a, int b) {

x = a;

y = b;

}

int main () {

CRectangle rect;

rect.set_values (3,4);

cout << "area: " << rect.area();

}

area: 12

Page 30: Makalah Struktur Data Dan Algoritma

LAMPIRAN

//Tugas Praktek Struktur Data dan Algoritma 1 //

//Nama :Leonardo Davinsi Nainggolan //

//NIM :102406188 //

//KOM C 2010 //

//Mencari bilangan prima dari input awal & akhir //

#include<stdio.h>

int main()

{

int m,n,a,d,p=0;

/* m = untuk nilai awal

n = untik nilai akhir

a = nilai periksa

d = nilai ulang

p = nilai tinjau

*/

ulang:

printf("Masukkan bilangan awal (>=2):\n");

scanf("%d", &m);

if(m==1)

{

printf("Bilangan prima terendah adalah 2.\n\n");

goto ulang;

}

printf("Masukkan bilangan akhir:\n");

scanf("%d", &n);

p=1;

for(a=m; a<=n; a++)

{

Page 31: Makalah Struktur Data Dan Algoritma

p=0;

for(d=2; d<a; d++)

{

if((a%d)==0)

{

p=1;

break;

}

}

if(!p)

printf("%d ", a);

}

printf("\n");

system("pause");

return 0;

}

Run Program:

Page 32: Makalah Struktur Data Dan Algoritma

/******************************************

Tugas 2 Praktek Struktur Data dan Algoritma

Nama : Leonardo Davinsi Nainggolan

NIM : 102406188

KOM C2 2010

*******************************************/

//Mencari bilangan genap/ganjil dengan fungsi buatan

#include <stdio.h>

int main ()

{

int a;

printf("Masukkan sebuah bilangan bulat.\nSaya akan memberitahu bahwa bilangan itu

genap atau ganjil.\n\n");

scanf("%d", &a);

gega(a);

system("pause");

return 0;

}

int gega(int a)

{

if (a%2==0)

{

if (a==0)

printf("Bilangan yang anda input adalah bilangan 0\n");

else

printf("%d adalah bilangan GENAP.\n",a);

}

else

printf("%d adalah bilangan GANJIL.\n",a);

Page 33: Makalah Struktur Data Dan Algoritma

}

/******************************************

Tugas 2 Praktek Struktur Data dan Algoritma

Nama : Leonardo Davinsi Nainggolan

NIM : 102406188

KOM C2 2010

*******************************************/

//Mencari x pada persemaan kuadrat dengan rumus abc

#include <stdio.h>

int abc(float a, float b, float c);

int main ()

{

float a, b, c;

printf("Program : menghitung persamaan kuadrat dengan rumus ABC.\n");

printf("Jika ax^2+bx+c=0.\n");

printf("berikan koefisien nilai persamaan (a b c):\n");

scanf("%f %f %f", &a, &b, &c);

abc(a, b, c);

system("pause");

Page 34: Makalah Struktur Data Dan Algoritma

return 0;

}

int abc(float a, float b, float c)

{

float det, x;

if(a==0.0)

{

x=-c/b;

printf("Akar persamaan x = %6.2f\n", x);

}

else if (b==0.0)

{

if(((c>0) && (a>0)) || ((c<0)&&(a<0)))

printf("Persamaan mempunyai akar imajiner\n");

else

{

x=sqrt(-c/a);

printf("Akar persamaan x1 = %6.2f\n", x);

x=-sqrt(-c/a);

printf("Akar persamaan x2 = %6.2f\n", x);

}

}

else if (c==0.0)

{

x=-b/a;

printf("Akar persamaan x1=0 dan x2 = %6.2f\n", x);

}

else

{

det=(b*b)-(4*a*c);

if(det>0)

{

Page 35: Makalah Struktur Data Dan Algoritma

x=(-b+sqrt(det))/(2*a);

printf("Akar persamaan x1 = %6.2f\n", x);

x=(-b-sqrt(det))/(2*a);

printf("Akar persamaan x2 = %6.2f\n", x);

}

else if (det==0)

{

x=-b/(2*a);

printf("Akar persamaan x1 = x2 = %6.2f\n", x);

}

else

printf("Persamaan mempunyai akar imajiner\n", x);

}

}

Page 36: Makalah Struktur Data Dan Algoritma

/******************************************

Tugas 3 Praktek Struktur Data dan Algoritma

Nama : Leonardo Davinsi Nainggolan

NIM : 102406188

KOM C 2010

*******************************************/

//Program : Program mencari letak nilai di Array

#include<stdio.h>

int main()

{

int l, n, a[35], u, c, t=1;

// l = nilai array

// u = untuk pengulangan

// c = nilai yang akan dicari

printf("Masukkan berapa nilai yang akan dimasukkan : ");

scanf("%d", &n);

for(u=0; u<n; u++){

printf("\nA[%d] = ", u);

scanf("%d", &a[u]);}

printf("\n\nMasukkan nilai yang akan ditunjukkan letaknya pada array : ");

scanf("%d", &c);

for(u=0; u<n; u++){

if (a[u]==c)

printf("Nilai %d berada pada a[%d].\n",c,u);

else

t=t+1;

}

if(t==c)

Page 37: Makalah Struktur Data Dan Algoritma

printf("Data yang anda cari tidak ada.\n");

printf("\nTerima Kasih telah menggunakan program ini.");

return 0;

}

//Program : Penjumlahan matriks

#include<stdio.h>

int main()

{

int bar,i,k,j,a[10][10],b[10][10],c[10][10];

//b,i = indeks baris

//k,j = indeks kolom

//a[][], b[][], c[][] = matriks

printf("masukkan ordo perkalian : baris ");

scanf("%d", &bar);

printf(" x kolom ");

scanf("%d", &k);

Page 38: Makalah Struktur Data Dan Algoritma

printf("\n Matriks A =\n");

for(i=1;i<=bar;i++)

for(j=1;j<=k;j++){

scanf("%d ", &a[i][j]);}

printf("\nDITAMBAHKAN DENGAN.\nMatriks B =\n");

for(i=1;i<=bar;i++)

for(j=1;j<=k;j++){

scanf("%d ", &b[i][j]);}

printf("\n-------------------+\n");

for(i=1;i<=bar;i++){

for(j=1;j<=k;j++){

c[i][j]= a[i][j]+b[i][j];

printf("%d ",c[i][j]);}

printf("\n");}

printf("\nTERIMA KASIH TELAH MENGGUNAKAN PROGRAM INI.\n");

system("pause");

return 0;

}

Page 39: Makalah Struktur Data Dan Algoritma

/******************************************

Tugas 4 Praktek Struktur Data dan Algoritma

Nama : Leonardo Davinsi Nainggolan

NIM : 102406188

KOM C2 2010

*******************************************/

//PROGRAM PERKALIAN MATRIKS

#include <iostream>

using namespace std;

int main()

{

int A[3][3],B[3][3],C[3][3],i,j,k;

//masukkan matrix A

cout<<"Silahkan input matrik A : \n";

cout<<"------------------------- \n";

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

cout<<"Elemen ke "<<(i+1)<<","<<(j+1)<<" : ";

cin>>A[i][j];

}

}

//cetak matrix A

cout<<"\nMatrik A : \n";;

for(i=0;i<3;i++)

{

cout<<"|";

for(j=0;j<3;j++)

{

cout<<" "<<A[i][j];

Page 40: Makalah Struktur Data Dan Algoritma

}

cout<<"|\n"<<endl;

}

cout<<endl;

//masukkan matriks B

cout<<"Silahkan input matrik B : \n";

cout<<"------------------------- \n";

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

cout<<"Elemen ke "<<(i+1)<<","<<(j+1)<<" : ";

cin>>B[i][j];

}

}

//cetak matrix B

cout<<"\nMatrik B : \n";

for(i=0;i<3;i++)

{

cout<<"|";

for(j=0;j<3;j++)

{

cout<<" "<<B[i][j];

}

cout<<"|\n"<<endl;

}

//Operasi Perkalian

for (i=0;i<3;i++)

{

for (j=0;j<3;j++)

{

Page 41: Makalah Struktur Data Dan Algoritma

C[i][j]=0;

for (k=0;k< 3;k++)

{

C[i][j]+= A[i][k]*B[k][j];

}

}

}

//Menampilkan hasil

cout<<"\nMatrik C, Hasil : \n";

for(i=0;i<3;i++)

{

cout<<"| ";

for(j=0;j<3;j++)

{

cout<<" "<<C[i][j];

}

cout<<" |\n"<<endl;

}

cout<<endl;

return 0;

}