75% menganggap dokumen ini bermanfaat (4 suara)
7K tayangan42 halaman

Makalah Struktur Data Dan Algoritma

Makalah ini membahas struktur data dan algoritma dengan menggunakan bahasa pemrograman C++ dan Pascal. Topik utama yang dibahas adalah tipe data, variabel, operator, kondisional, pengulangan dan fungsi pada kedua bahasa pemrograman tersebut."
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
75% menganggap dokumen ini bermanfaat (4 suara)
7K tayangan42 halaman

Makalah Struktur Data Dan Algoritma

Makalah ini membahas struktur data dan algoritma dengan menggunakan bahasa pemrograman C++ dan Pascal. Topik utama yang dibahas adalah tipe data, variabel, operator, kondisional, pengulangan dan fungsi pada kedua bahasa pemrograman tersebut."
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 42

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

DAFTAR ISI

Daftar Isi ............................................................................................................... Bab 1 Pendahuluan 1.1 1.2 Pengertian Struktur Data ............................................................................. Pengertian Algoritma...................................................................................

i 1 2 2

Bab 2 Pembahasan 2.1 Gambaran umun C++ dan Pascal 2.1.1 2.1.2 Gambaran Umum C++ Gambaran Umum Pascal 4 4 5 7 7 10 10 11 11 12 13 13 13 14 14 15 15 15 16 17 17 17 17 19 19 19

2.2 Tipe Tipe Data , Konstanta, Variabel, & Operator. 2.2.1 Tipe Data.. 2.2.2 Variabel. 2.2.3 Konstanta. 2.3 Input dan Output. 2.3.1 Output.. 2.3.2. Input... 2.4 Operator. 2.4.1 Operasi Bilangan Bulat... 2.4.2 Operasi Pecahan.. 2.4.3 Operasi Boolean. 2.4.4 Operasi Perbandingan... 2.5 Kondisional.. 2.5.1 If-then dan if-then-else. 2.5.2 Case of.. 2.5.3 Operator Ternary... 2.6 Pengulangan. 2.6.1 Loop For. 2.6.2 Loop While. 2.6.3. Loop Repeat.. BAB 3 PEMBAHASAN MATERI STRUKTUR DATA DAN ALGORITMA 3.1 Array. 3.1.1 Inisialisasi Array..

ii

3.1.2 Akses ke dalam Array. 3.1.3 Array Multidimensi. 3.2 String dan Karakter. 3.3 Fungsi (Lanjutan)... 3.4 Class .. LAMPIRAN

20 20 22 23 25

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

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

Struktur data sederhana, misalnya array dan record. 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.

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.

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.

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-kurawaltutup }. 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

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-kurawaltutup }. 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 Assignment Increment Output Input operasinumerik

Pascal varx:integer; x:=a+b; inc(i)ataui:=i+1 writeln(i=,i); read(i); vari:integer; idiv10 imod10 i/10 if(a<>b)then begin sama:=false; end else begin sama:=true; end; fori:=1to10do begin fak:=fak*i; end; functionplus(x:integer):boolean; begin plus:=(x>=0); end;

C intx=a+b; i++atau++i printf(i=%d\n,i) scanf(%d,&i); ; inti; i%10 i/10 if(a!=b) (float)i/10.0 { sama=0; } else { for(i= sama=1; 1;i<=10;i++) } { fak*=i; intplus(intx) } { return(x>=0); }

C++ intx=a+b; i++atau++i std::cout<<i=<<i<<\n; std::cin>>i inti; i%10 i/10 if(a!=b) (float)i/10.0 { sama=false; } else { for(i=1;i<=10;i++) sama=true; { } fak*=i; } boolplus(intx) { return(x>=0); }

Kondisional

Pengulangan

Fungsi

Prosedur

proceduretambah(varx:integer); begin x:=x+1; end;

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 -128 -32,768 -2,147,483,648 0 0 0

NilaiMax 127 32,767 2,147,483,647 255 65,535 4,294,967,295

Pascal shortint integer longint byte word longword Char Int Long

C char int long

C++

unsignedchar unsignedint unsignedlong

unsignedchar unsignedint unsignedlong

b) Tipe Data Desimal

Nilainegatif
+38 -38

Nilai positif
-38 +38

Pascal
real double

C
float double

C++
float double

-3.4x10
+308

s/d-3.4x10
-308

3.4x10 s/d3.4x10
-308 +308

-1.7x10s/d-1.7x10

1.7x10s/d1.7x10

c) Tipe Data Karakter & String

Pascal Typename=string[30];

C typedefcharname[31];

C++ typedefstd::stringname;

1. UntukC,tidakada khususstring,sehinggastringdidefinisikansebagaiarray ofchar. 2. PadaPascal,name:string[30]artinyakarakterdiisidari name[1]..name[30]sedangkandalamCcharname[31]artinya karakterdiisidariname[0]..name[30].

typedata

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

d) Tipe Data Boolean

Pascal Type tabel=array[0..10]of integer; Type matrix=array[0..20,0..30] ofreal; typedef

C typedefinttabel[11];

C++ typedefinttabel[11];

typedef floatmatrix[21][31];

floatmatrix[21][31];

1. Formatdeklarasinya:typedef<type-elemen><namatype>[<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++

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 dstjika 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 typeaddress:^integer; typeaddr:^siswa; {typesiswaadadiatas}

C typedefint*address; typedefsiswa*addr; /*typesiswaadadi atas*/

C++ typedefint*address; typedefsiswa*addr; //typesiswaadadiatas

Ketikakita menggunakanPascal,kitahampirtidakperluberurusandenganpointer,tapi mautidakmaukitaharusberurusandengantipedatasatuini. diC

Pointertidak menyimpannilai,pointerhanyamenyimpanalamat memorydarinilai yangdisimpan,jadibukannilaiitusendiri.MisaladdressP;maka*P=10akan

10

membuatnilaiyangditunjukolehP tapiPitusendiritidakberubah,Ptetap menunjukalamatyang sama. 2.2.2Variabel

berubahmenjadi10,

SyntaxuntukdeklarasidanassigmentvariabeldalamC&C++berbedadenganPascal. Pascal angka:integer; hasil:real; tabel:array[0..10]ofchar; nama:string[30]; angka:=10; hasil:=23.98; tabel[7]:=S; nama:=alexander; intangka; floathasil; chartabel[11]; charnama[31]; angka=10; hasil=23.98; tabel[7]=S; strcpy(nama,alexander); C C++ intangka; floathasil; chartabel[11]; std::stringnama; angka=10; hasil=23.98; tabel[7]=S; nama=alexander;

Jikapada Pascalbagianuntukdeklarasivariabelharusdiawalidenganvardanberada sebelummainprogram,halinitidakadadalamC& C++,kitabisamendeklarasikan variabeldi manapun. a) Aturanpenamaanvariabel: a. case-sensitive b. diawalidenganhuruf c. bolehterdiridarihuruf,angka,atauunderscore_ d. tidakbolehadavariabelganda,maupunkonflikdenganreservedword b) Operatoruntukassignmentadalah=jadijangansampaitertukardenganoperatorko mparasi==. c) PadaC&C++kitabisa menyingkatdeklarasidanassignmentsekaligus,contoh:intangka=10;floathasil=2 3.98;Formatdeklarasivariabelsangatmiripdenganformatdeklarasitype.Bedanyah anyatidakadanyakatakuncitypedef.

2.2.3Konstanta

11

Pascal constpi= 3.1415926;

C Ada2cara: constfloatpi=3.1415926; atau: #definepi3.1415926

C++ Ada2cara: constfloatpi=3.1415926; atau: #definepi3.1415926

PadaC&C++konstantabiasaharustetap dideklarasikantype-nya. a. #defineadalah fungsinyamiripfind&replacepadatexteditor. b. Formatnya:#define<nama><nilai>,carakerjanyaadalah mencari<nama>di seluruhcodedanmengubahnyamenjadi<nilai>. makro,dimana

2.3InputdanOutput 2.3.1Output

Pascal write(Apakabar?); writeln(Baikbaik saja); vari:integer; ... writeln(nilai i adalah ,i); var c:char; f: real; ... writeln(c = ,c, f = ,f);

C printf(Apakabar?); printf(Baik-baik saja\n); inti; ... printf(nilai i adalah %d\n,i); char c; float f; ... printf(c = %c f = %f\n,c,f);

C++ std::cout<<Apakabar?; std::cout<<Baik-baik saja\n inti; ... std::cout << nilai i adalah << i << \n; char c; float f; ... std::cout << c = << c << f = << f << \n;

UntukC,perlu#include<stdio.h>diawal program. UntukC,outputmenggunakanfungsiprintf(printformatted) Formatnya:printf(<stringbesertaformatvariabel>,<variabel>[,<variabel>,...]) ;

12

Jadi,bentukdarikeluarandituliskanduluformatnyasebagaiparameterpertamaprintfdalamb entukstring(diapitolehpetik). Yangmembedakantextbiasa formatyangada: %iatau%d %liatau%ld %u %ul %c %f %lf %s Int Long unsignedint unsignedlong Char Float longfloat String denganformatvariabeladalahtanda%. Daftar

Selain format,adakarakter-karakterkhusus,contoh:\nuntukakhir baris a. UntukC++,perlu#include<iostream>di awalprogram. b. UntukC++,outputmenggunakanstd::cout c. Karakter-karakterkhususpadaCjuga berlakupadaC++.

2.3.2.Input

Pascal var i:integer; f:real; cc:char; read(i); read(f); read(cc); inti;

C floatf; inti;

C++ floatf;

charcc; scanf(%d,&i); scanf(%f,&f); scanf(%c,&cc);

charcc; std::cin>>i; std::cin>>f; std::cin>>cc;

UntukC,perlu#include<stdio.h>diawal program. a. UntukC,inputmenggunakanscanf(scanformatted). Formatyangdigunakanhampirsamadenganprintf,namunsetelahstring format,yangdiisibukannamavariabel,

13

melainkanpointerdariarraytersebut.Makanyauntuk memasukkannilaidesimal(%f)kedalamvariabelfdigunakanpointerf(&f). b. UntukC++,perlu#include<iostream>di awalprogram. c. UntukC++,inputmenggunakanstd::cin.

2.4Operator 2.4.1OperasiBilanganBulat

Operatoryangdigunakanpadabilanganbulatdanmenghasilkanbilanganbulatjuga: Definis Penjumla i Penguran han Perkalian gan Hasilbagi Sisa bagi Incremen x t x+a Decreme x nt x- a + * div mod inc(x); inc(x,a); dec(x); dec(x,a); Pascal + * / % x++;atau++x x+=a; ; x--;atau-x; x-=a; C + * / % x++;atau++x x+=a; ; x--;atau--x; x-=a; x--dengan--xmeskipunhasiL C++

a) Adaperbedaanantarax++dengan++xdanantara akhirnya sama.

b) Jikadijalankan:intx=1;printf(%d,x++);makayangkeluaradalahangka1.Nila ixsetelahituadalah dijalankan:intx=1;printf(%d,++x);makayangkeluaradalah2. Nilaixsetelahituadalah 2. c) Begitujuga denganx-- dan--x. 2.Tapijika

2.4.2OperasiPecahan

Operatoryangdigunakanpadabilanganpecahandanmenghasilkanpecahanjuga:

14

Definisi Penjuml Pengura ahan Perkalia ngan Pembag n ian

Pascal + * / + * /

C + * /

C++

PadaC&C++,operatorpembagi/ menggunakanlambangyangsama.Jika/dioperasikan pada2buahbilanganbulat,maka otomatismenjadioperasidiv,sedangkanjikasalahsatu nyapecahanmakaotomatismenjadioperasipembagianbiasa. operand-

2.4.3OperasiBoolean

Operatoryangdigunakanuntukmemanipulasitrue danfalse: Definisi Negasi Konjungsi Disjungsiinklu Disjungsiekslu sif sif Pascal Not And Or Xor ! && || ^ C ! && || ^ C++

2.4.4OperasiPerbandingan

Operatoryangdigunakanuntukmembandingkannilaibilangandenganbilanganlain: Jangansampaitertukarantara operatorassignment=denganoperatorpembanding==.

15

Definisi Samadengan Tidaksamadengan Kurangdari Kurangdarisama dengan Lebihdari Lebihdarisamadengan =

Pascal <> < <= > >=

C == != < <= > >=

C++ == != < <= > >=

HaliniseringterjadipadaorangyangterbiasadenganPascaldanberalihkeC. 2.5Kondisional 2.5.1If-thendanif-then-else

Pascal
if(a>b)then begin a:=b; end; if((ymodx)=0) thenbegin write(Divisible); end else begin write(Not divisible); end; } else { if(a>b) { a=b;

C
if(a>b) { a=b;

C++

} if((y%x)==0) { printf(Divisible);

} if((y%x)==0) { std::cout<<Divisible; } else {

printf(Not divisible); }

std::cout<<Not divisible; }

a) Syntaxif..then..elsedalamC&C++sama persis. b) BedanyadenganPascaladalahtidakadanyakeywordthenjadiinstruksisetelahif()ak an dilaksanakanjikatrue.

2.5.2Caseof Pascal C C++

16

casebulanof 1:begin...end; 2:begin..end; ... end;

switch(bulan) { case1:... break; case2:... break; ... }

switch(bulan) { case1:... break; case2:... break; ... } switch(bulan) {

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

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

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;}; Keunggulandariternaryadalahsingkat,tetapikelemahannyaadalahtidakbisauntukkondi si yangagakkompleks. 2.6Pengulangan 2.6.1LoopFor Pascal vari:integer; ... fori:=1to10do begin C inti; ... for(i=1;i<=10;i++) { inti; ... for(i=1;i<=10; i++) { C++

SyntaxfordalamC& C++sama persis. ... ...

Format:for(<initialvalue>;<stopcondition>;<incremental>){} ... end; } } 2.6.2LoopWhile

Pascal varfound:boolean; ... while(notfound)do begin ... end; }

C unsignedcharfound; ... while(!found) { ... } boolfound; ...

C++

while(!found) { ...

a) Syntax while dalam C & C++ sama persis. b) Format: while (<kondisi-lanjut>) {}

18

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

2.6.3. Loop Repeat

Pascal Repeat ... until(i>j); } do {

C do { ... }

C++

...

while(i<=j);

while(i<=j);

RepeatuntildalamC&C++adalahdo..whiledansyntaxnyasamauntukC maupunC++. a) Format:do{}while(<kondisi-lanjut>); b) Keyworddo..whiletidakbertindaksebagaibegin..endsehinggadiperlukan{ dan}jikainginmengeksekusibeberapabarisperintah.

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

20

3.1.2 Akses ke dalam Array

name[index]

billy[2] = 75; // isi array billy ke 2 dengan 75 a = billy[2]; int billy[5]; // isi variable a dg isi array billy ke 2 // deklarasi array baru

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

// contoh penggunaan array #include <iostream.h>

12206

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

3.1.3 Array Multidimensi

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> // pseudo-array multidimensi #include <iostream.h>

#define WIDTH 5 #define HEIGHT 3

#define WIDTH 5 #define HEIGHT 3

int jimmy [HEIGHT][WIDTH]; int n,m;

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

int main () { for (n=0;n<HEIGHT;n++) for (m=0;m<WIDTH;m++) { jimmy[n m]=(n+1)*(m+1); } return 0; } * WIDTH +

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 mystring[] = "Hello"; mystring = { 'H', 'e', 'l', 'l', 'o', '\0' };

"Hello";

memberikan nilai ke dalam string: cara I:

23

mystring[0] mystring[1] mystring[2] mystring[3] mystring[4] mystring[5] = '\0';

= = = = =

'H'; 'e'; 'l'; 'l'; 'o';

cara II: strcpy (string1, string2); contoh : strcpy (mystring, "Hello");

// mengisi nilai ke dalam string I #include <iostream.h> #include <string.h>

A. Gracie

int main () { char szMyName [20]; strcpy (szMyName,"A. Gracie"); cout << szMyName; return 0; }

3.3 Fungsi (Lanjutan)

Arguments passed by value : Struktur: void duplicate (int a, int b, int c) contoh:

24

int z = addition ( x , y );

x=5,

y=3,

z;

Bagan akses nilai ke parameter fungsi:

Arguments passed by Reference: void duplicate (int& a, int& b, int& c) // contoh fungsi by reference #include <iostream.h> x=2, y=6, z=14

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

Akses nilai ke parameter fungsi by reference:

25

// contoh lebih dari satu nilai #include <iostream.h>

Previous=99, Next=101

void prevnext (int x, int& prev, int& next) { prev = x-1; 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:

26

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: 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 myarea = rect.area(); (3,4);

// Class CRectangle #include <iostream.h>

area: 12

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

27

int main () { CRectangle rect; rect.set_values (3,4); cout << "area: " << rect.area(); }

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

{ 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:

/****************************************** 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);

/****************************************** 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"); 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) { 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); }

/****************************************** 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)

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

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

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

} 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++) {

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

Anda mungkin juga menyukai