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
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.
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
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.
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
Pascal C C++
Typename=string[30]; typedefcharname[31]; typedefstd::stringname;
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++
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
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*/
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++
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++
2.3.2.Input
12
Pascal C C++
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++
} }
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;
2.6.2LoopWhile
Pascal C C++
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
3.1 Array
struktur:
type name [elements];
contoh:
int billy [5];
atau:
int billy [5] = { 16, 2, 77, 40, 12071 };
name[index]
int main ()
{
for ( n=0 ; n<5 ; n++ )
{
result += billy[n];
}
cout << result;
return 0;
}
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' };
cara II:
strcpy (string1, string2);
contoh :
strcpy (mystring, "Hello");
23
int main ()
{
char szMyName [20];
strcpy (szMyName,"A. Gracie");
cout << szMyName;
return 0;
}
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;
}
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 akses data dan fungsi pada class menggunakan operator titik (.):
26
rect.set_value (3,4);
myarea = rect.area();
class CRectangle {
int x, y;
public:
void set_values (int,int);
int area (void) {return (x*y);}
};
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;
}
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>
abc(a, b, c);
system("pause");
return 0;
}
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);
else
t=t+1;
}
if(t==c)
printf("Data yang anda cari tidak ada.\n");
printf("\nTerima Kasih telah menggunakan program ini.");
return 0;
}
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("\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");}
#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;
}