Anda di halaman 1dari 41

MAKALAH STRUKTUR DATA DAN ALGORITMA

DENGAN MENGGUNAKAN BAHASA C++ DAN PASCAL

ARI AZWAR HAFIDZ


1923075

D-III MANAJEMEN INFORMATIKA


UNIVERSITAS MAHAKARYA ASIA
2023

1
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
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
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.
2

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

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

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

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;
x:=a+b;
Increment inc(i)ataui:=i+1 i++atau++i i++atau++i
Output writeln(‘i=’,i); printf(“i=%d\ std::cout<<”i=”<<i<<”\
Input read(i); scanf(“%d”,&i);
n”,i); std::cin>>i
n”;
operasinumerik vari:integer; inti; inti; i
idiv10 i%10 %10
imod10 i/10 i/10 i/10
Kondisional if(a<>b)then if(a!=b) if(a!=b)
begin { {
sama:=false; sama=0; sama=false;
end else } }
begin else else
sama:=true; { {
Pengulangan fori:=1to10do for(i= for(i=1;i<=10;i++)
begin 1;i<=10;i++) {
fak:=fak*i; { fak*=i;
end; fak*=i; }
Fungsi functionplus(x:integer):boolean; intplus(intx) boolplus(intx)
begin { {
plus:=(x>=0); return(x>=0); return(x>=0);
Prosedur proceduretambah(varx:integer); voidtambah(int*x) voidtambah(int&x)
begin { {
x:=x+1; *x++; x++;

2.2 Tipe Data , Konstanta, Variabel, & Operator


2.2.1 Tipe Data
7

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 -38 +38 real float float


-3.4x10 s/d-3.4x10 3.4x10 s/d3.4x10
+308 -308 -308 +308 double double double
-1.7x10s/d-1.7x10 1.7x10s/d1.7x10

c) Tipe Data Karakter & String

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

1. UntukC,tidak ada type data khusus string, sehingga string didefinisikan


sebagai array ofchar.
2. Pada Pascal, name:string[30] artinya karakter diisi dari name[1]..name[30]
sedangkan dalam Ccharname[31] artinya karakter diisi dari
name[0]..name[30].
3. UntukC++, untuk menggunakan type string harus ada
#include<string>diawal.
4. Program harus menggunakan std::string.
d) Tipe Data Boolean
8

Pascal C C++
Type typedefinttabel[11]; typedefinttabel[11];
tabel=array[0..10]of
integer;
Type typedef typedef
matrix=array[0..20,0..30] floatmatrix[21][31]; floatmatrix[21][31];
ofreal;

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

typehari=(senin, typedefenum typedefenum


selasa,rabu,kamis, {senin,selasa, {senin,selasa,rabu,
jumat,sabtu); rabu,kamis,jumat, kamis,jumat,sabtu;
sabtu; }hari;
}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.
9

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; typedefsiswa*addr; typedefsiswa*addr;
{typesiswaadadiatas} /*typesiswaadadi //typesiswaadadiatas
atas*/

Ketika kita menggunakan Pascal, kita hampir tidak perlu berurusan


denganpointer, tapi diC mau tidak mau kita harus berurusan dengan tipe data satu ini.
Pointer tidak menyimpan nilai, pointer hanya menyimpan alamat memory dari
nilai yang disimpan, jadi bukan nilai itu sendiri. Misal addressP;maka*P=10 akan
membuat nilai yang ditunjuk oleh P berubah menjadi 10, tapi P itu sendiri tidak
berubah, P tetap menunjuk alamat yang sama.
2.2.2Variabel

SyntaxuntukdeklarasidanassigmentvariabeldalamC&C++berbedadenganPascal.
Pascal C C++
angka:integer; intangka; intangka;
hasil:real; floathasil; floathasil;
tabel:array[0..10]ofchar; chartabel[11]; chartabel[11];
angka:=10; charnama[31];
angka=10; angka=10;
hasil:=23.98; hasil=23.98; hasil=23.98;
tabel[7]:=‘S’; tabel[7]=‘S’; tabel[7]=‘S’;

Jikapada Pascalbagianuntukdeklarasivariabelharusdiawalidenganvardanberada
sebelummainprogram,halinitidakadadalamC& C++,kitabisamendeklarasikan
variabeldi manapun.
a) Aturanpenamaanvariabel:
a. case-sensitive
10

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

Pascal C C++

constpi= Ada2cara: Ada2cara:


3.1415926; constfloatpi=3.1415926; constfloatpi=3.1415926;
atau: atau:
#definepi3.1415926 #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- printf(“Baik-baik saja\n”); std::cout<<“Baik-baik
baik saja’); saja\n”
11

vari:integer; inti; inti;


... ... ...

writeln(‘nilai i adalah printf(“nilai i adalah std::cout << “nilai i adalah


’,i); %d\n”,i); ” << i << “\n”;
var c:char; f: real; char c; float f; char c; float f;
... ... ...
writeln(‘c = ’,c,’ f = printf(“c = %c f = std::cout << “c = ” << c <<
’,f); %f\n”,c,f); “f = ” << f << “\n”;
UntukC,perlu#include<stdio.h>diawal program.
UntukC,outputmenggunakanfungsiprintf(printformatted)
Formatnya:printf(“<stringbesertaformatvariabel>”,<variabel>[,<variabel>,...])
;
Jadi,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
12

Pascal C C++

var i:integer; inti; floatf; inti; floatf;


f:real; charcc; charcc;
cc:char;
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.
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:
Definis Pascal C C++
Penjumla
i + + +
Penguran
han - - -
Perkalian
gan * * *
Hasilbagi div / /
Sisa bagi mod % %
Incremen inc(x); x++;atau+ x++;atau+
xt x+a inc(x,a); x+=a;
+x; x+=a;
+x;
Decreme dec(x); x--;atau–-x; x--;atau--x;
xnt x- a dec(x,a); x-=a; x-=a;
13

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.

2.4.2OperasiPecahan

Operatoryangdigunakanpadabilanganpecahandanmenghasilkanpecahanjuga:
Definisi Pascal C C++
Penjuml + + +
Pengura
ahan - - -
Perkalia
ngan * * *
Pembag
n / / /
ian
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 && &&
Disjungsiinklu Or || ||
Disjungsiekslu
sif Xor ^ ^
sif
2.4.4OperasiPerbandingan
14

Operatoryangdigunakanuntukmembandingkannilaibilangandenganbilanganlain:
Jangansampaitertukarantara operatorassignment‘=’denganoperatorpembanding‘==’.
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 if(a>b) if(a>b)
a:=b; { {
end; a=b; a=b;
} }
if((ymodx)=0) if((y%x)==0) if((y%x)==0)
thenbegin { {
write(‘Divisible’); end printf(“Divisible”); std::cout<<“Divisible”;
else } }
begin write(‘Not else else
divisible’); { {
end; printf(“Not std::cout<<“Not
divisible”); divisible”;

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

2.5.2Caseof
15

Pascal C C++

casebulanof switch(bulan) switch(bulan)


1:begin...end; { {
2:begin..end; case1:... case1:...
... break; break;
end; case2:... case2:...
break; break;
... ...
} }
casebulanof switch(bulan) switch(bulan)
1,3,5,7,8,10,12: { {
begin case1: case1:
days:=31; case3: case3:
end; ... ...
4,6,9,11: case12: case12:
begin days=31; days=31;
days:=30; break; break;
end; case4: case4:
2: ... ...
begin case11: case11:
... days=30; days=30;
end; break; break;
end; case2: 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
16

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 C C++
vari:integer; inti; inti;
... ... ...
fori:=1to10do for(i=1;i<=10;i++) for(i=1;i<=10;

SyntaxfordalamC& C++sama persis.


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

2.6.2LoopWhile

Pascal C C++

varfound:boolean; unsignedcharfound; boolfound;


... ... ...
while(notfound)do while(!found) while(!found)
begin { {
... ... ...
end; } }

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


b) Format: while (<kondisi-lanjut>) {}
c) Tidak ada keyword do pada while, deretan perintah setelah while() itulah yang
akandieksekusi.
17

2.6.3. Loop Repeat

Pascal C C++

Repeat do do
... { {
until(i>j); ... ...
} }
while(i<=j); while(i<=j);

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

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
20

int billy[5]; // deklarasi array baru


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

// contoh penggunaan array 12206


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

3.1.3 Array Multidimensi

int jimmy [3][5];


jimmy[1][3]

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


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

// array multidimensi // pseudo-array multidimensi


#include <iostream.h> #include <iostream.h>

#define WIDTH 5 #define WIDTH 5


#define HEIGHT 3 #define HEIGHT 3

int jimmy [HEIGHT][WIDTH]; int jimmy [HEIGHT * WIDTH];


int n,m; int n,m;

int main () int main ()


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

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

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';
mystring[4] = 'o';
mystring[5] = '\0';

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

// mengisi nilai ke dalam string I A. Gracie


#include <iostream.h>
#include <string.h>

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:
int x=5, y=3, z;
z = addition ( x , y );
Bagan akses nilai ke parameter fungsi:

Arguments passed by Reference:


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

// contoh fungsi by reference x=2, y=6, z=14


#include <iostream.h>

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


{
24

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:

// contoh lebih dari satu nilai Previous=99, Next=101


#include <iostream.h>

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

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:


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 (.):
26

rect.set_value (3,4);
myarea = rect.area();

// Class CRectangle area: 12


#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();
}
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