Algoritma dan Struktur Data
Assalamualaikum Wr. Wb.
Haiii.... Nama saya Aldy Trisza Zahputra, Mahasiswa Universitas Muhammadiyah Sidoarjo. Saya disini akan menjelaskan tentang pembahasan Praktikum Algoritma Dan Struktur Data , Berikut penjelasannya....
Rangkuman Praktikum Algoritma dan Struktur Data
POKOK
BAHASAN 1
STRUKTUR DATA, ARRAY, POINTER, DAN STRUKTUR
PENDAHULUAN
Pada
pokok bahasan ini berisi penjelasan disertai contoh mengenai konsep struktur
data, array, pointer, dan struktur yang menjadi pemahaman dasar bagi mahasiswa
sebelum mempelajari struktur data, dimana konsep array, pointer, dan struktur
digunakan untuk mempresentasikan sebuah struktur data, diharapkan mahasiswa
dapat :
- Mengaetahui
konsep dasar struktur data.
- Memahami konsep array, ponter, dan struktur.
- Konsep
Dasar Struktur Data
Struktur data adalah sebuah bagian dari ilmu
pemrograman dasar yang mempunyai karakteristik yang terkait dengan sifat dan
cara penyimpanan sekaligus penggunaan atau pengaksesan data.
Struktur data bertujuan agar cara mempresentasikan
datadalam membuat program dapat dilakukan secara efisien dalam pengolahan di
memori dan pengolahan penyimpanan dari program ke storage juga lebih mudah
dilakukan.
- Konsep
Dasar Array
Array adalah kumpulan elemen-elemen data. Kumpulaan
elemen tersebut mempunyai suusnan tertentu yang teratur. Jumlah elemen
terbatas, dan semua elemen mempunyai tipe data yang
- Konsep Dasar Pointer
Pointer
adalah sebuah variabel yang berisi lamat variabel yang lain. Suatu ponter
dimaksudkan untuk meunjuk koperatore suatu alamat memori sehingga alamat dari
suatu variabel dapat diketahui dengan mudah. Deklarasi pointer :
- Konsep
Dasar Struktur
Struktur adalah koleksi dari variabel yang dinyatakan
dengan sebuah nama, dengan sifat setiap variabel dapat memiliki tipe yang
berlainan.
Struktur biasa dipakai untuk mengelompokkan beberapa
informasi yang berkaitanmenjadi sebuah satu kesatuan. Contoh sebuah struktur
adalah informasi data tanggal, yang berisi tanggal, bulan, dan tahun.
Contoh Program Pointer :
Program
pointer
Script :
#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;
//cetak p dan*p
int main(void)
{
int v=7, *p;//untuk
mengakses nilai
p = &v; //untuk
mendapatkan alamat memori
cout<<"Nilai
v=" <<v;
cout<<endl;
cout<<endl;
cout<<"Nilai
*p = " <<*p;
cout<<endl;
cout<<endl;
cout<<"Alamatnya
= " <<p;
_getch();
}
POKOK
BAHASAN 2
LINKED
LIST (SENARAI)
PENDAHULUAN
Pada
pokok bahasan ini akan dibahas mengenai sruktur data senarai (list) yang
pembahasannya meliputi definisi dan representasi list, jenis-jenis list serta
oerasi-operasi dasar pada list. Sehingga setelah mempelajari bab ini diharapkan
maahasiswa mampu :
- Menjelaskan
definisi dan representasi list.
- Mengetahui
jenis-jenis list.
- Memahami
operasi-operasi pada list.
PENYAJIAN
Linked list
adalah sejumlah objek atau elemen yang dihubungkan satu dengan lainnya sehingga
membentuk suatu list. Sdangkan objek atau elemen itu sendiri adalah merupakan
gabungan beberapa data (variabel) yang dijadikan satu kelompok atau structure
atau record yang dibentuk dengan
perintah struct. Untuk menggabungkan
objek satu dengan lainnya, diperlukan paling tidak sebuah variabel yang bertipe
pointer. Syarat linked list adalah
harus adapat diketahui alamat simpul pertama atau biasa dipakai variabel First/Start/Header.
Jenis – jenis linked list :
-List
kosong
List kosong hanya terdiri dari
sebuah petujuk elemen yang berisi NULL (kosong), tidak memiliki satu buah
elemen pun sehigga hanya berupa penunjuk awal elemn berisi NULL.
-List
Tunggal
List
tuggal adalah list yang elemenya hanya menyimpan informasi elemen setelahnya (next), sehingga jalanya pengaksessan
list hanya dapat dilakukan secara maju. List tuggal terbagi menjadi tiga jenis
yaitu list tunggal dengan kepala (first),
list tunggal kepala (first) dan ekor (tail), serta list tunggal yang
berputar.
-List
Ganda
List
ganda adalah sebuah list yang elemenya menyimpan informasi elemen sebelumnya
dan informasi elemen setelahnya, sehingga proses penelusuan list dapat
dilakukan secara maju dan mundur. List ganda terbagi menjadi tiga jenis yaitu
list ganda engan kepala (first), list
ganda dengan kepala (first) dan ekor (tail), serta list ganda yag berputar.
Operasi Dasar pada Linked List :
IsEmpty
: Fungsi ini menentukan apakan linked list kosong atau tidak.
Size
: operasi untuk mengirim jumlah elemen di linked list.
Create
: operasi untuk penciptaan list baru yang kosong.
Insertfirst
: operasi penyisipan simpul sebagai simpul pertama.
Insertafter
: operasi untu penyisispan simpul setelah simpul tertentu.
Insertlast
: operasi untuk penyisipan simpul sebagai simpul terakhir.
Insertbefore
: operasi untuk penyisipan simpul sebelum simpul tertentu.
Deletefirst
: operasi penghapusan simpul pertama.
Deleteafter
: operasi penghapusan setelah simpul tertentu.
Deletelast
: operasi penghapusan simpul terakhir.
Contoh
program sisip senarai (linked list) :
Program sisip senarai
Script :
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
using namespace std;
typedef struct nod
{
int data;
struct nod *next;
}NOD, *NODPTR;
void CiptaSenarai
(NODPTR *s)
{
*s=NULL;
}
NODPTR NodBaru(int m)
{
NODPTR n;
n= (NODPTR) malloc
(sizeof(NOD));if (n !=NULL)
{
n->data=m;
n->next
=
NULL;
}
return n;
}
void SisipSenarai(NODPTR *s, NODPTR t, NODPTR p)
{
if(p==NULL)
{
t->next=*s;
*s=t;
}
else
{
t->next=p->next;
p->next=t;
}
}
void CetakSenarai (NODPTR s)
{
NODPTR ps;
for (ps=s; ps!=NULL;
ps=ps->next)
printf("%d
-->", ps->data);
printf("NULL\n");
}
int main()
{
NODPTR pel;
NODPTR n ;
CiptaSenarai(&pel);
n=NodBaru(55);
SisipSenarai(&pel,n,NULL);
n=NodBaru(75);
SisipSenarai(&pel,n,NULL);
CetakSenarai(pel);
_getch();
}
POKOK
BAHASAN 3
STACK
(TUMPUKAN)
PENDAHULUAN
Pada
pokok bahasan ini akan dibahs mengenai struktur datatumpukan atau stack, dimana
stack merupakan suatu kumpulan data yang seolah-olah ada data yang diletakkan
di ats data yang lain. Setelah mempelajari materi ini diharapkan mahasiswa
mampu untuk :
- Mengetahui
dan memahami definisi stack.
- Memahami
operasi-operasi dasar stack.
- Memahami
representasi statis dan dinamis stack.
PENYAJIAN
Stack
adalah kumpula elemen-elemen yang tersimpan dalam suatu tumpukan. Aturan
penyisispan dan penghapusan elemennya tertentu :
-
Penyisispan selalu
dilakukan “di atas “ TOP
-
Penghapusan selalu
dilakukan pada TOP
Karena
aturan penyisipan dan penghapusan semacam itu, TOP adalah satu-satunya alamat
tempat terjadi operasi, elemen yang ditambahkan paling akhir akan menjadi
elemen yang akan dihapus. Dikatakan bahwa elemen Stack tersususn secara LIFO (Last In First Out).
Seperti
halnya jika kita mempunyai sebuah tumpukan buku, agar tumpukan buku itu tidak
ambruk ketika kita mengambil sebuah buku di dalam tumpukan itu amaka harus
diambil satu per satu dari tumpukan yang paling atas dari tumpukan.
POKOK BAHASAN 4
QUEUE (ANTRIAN)
PENDAHULUAN
Pada
pokok bahasan ini akan dibahas mengenai antrian atau queue, dimana struktur
data hampir
sama dengan tumpukan atau stack yang merupakan struktur data yang linier. Perbedaanya adalah operasi penambahan dan pengurangan
pada ujung yang berbeda. Setelah mempelajari
materi ini diharapkan mahasiswa mampu :
- Mengetahui dan memahami definisi antrian.
- Memahami operasi-operasi dasar pada antrian.
- Memahami representasi statis dan dinamis pada
antrian.
PENYAJIAN
Antrian adalah suatu kumpulan data yang penambahan
elemenya hanya bisa dilakukan pada suatu ujung (disebut sisi belakang atau
REAR), dan penghapusan atau pengambilan elemen dilakukan lewat ujung yang lain
(disebut sisi depan atau FRONT). Prinsip yang digunakan
dalam antrian ini adalah FIFO (First In
First Out) yaitu elemen yang pertama kali masuk akan keluar pertama
kalinya.
Penggunaan
antrian antara lain simulasi antrian di dunia nyata (antrian pembelian tiket),
sistem jaringan computer (pemrosesan banyak paket yang datang dari banyak koneksi
pada host, bridge, gateway), dan
lain-lain.
Contoh Program
Queue.
Program Queue :
Script :
#include <iostream>
using namespace std;
#define MAX 5 //Maximum
Isi
class queue
{
private:
int
t[MAX];
int
al;
int dl;
public:
queue()
{
dl=-1;
al=-1;
}
void
del()
{
int
tmp;
if(dl==-1)
{
cout<<"Queue
kosong";
}
else
{
for(int
j=0;j<=al;j++)
{
if((j+1)<=al)
{
tmp=t[j+1];
t[j]=tmp;
}
else
{
al--;
if(al==-1)
dl=-1;
else
dl=0;
}
}
}
}
void add(int item)
{
if(dl==-1
&& al==-1)
{
dl++;
al++;
}
else
{
al++;
if(al==MAX)
{
cout<<"Queue
penuh\n";
al--;
return;
}
}
t[al]=item;
}
void display ()
{
if(dl!=-1)
{
for(int
iter=0;iter<=al;iter++)
cout<<t[iter]<<"
";
}
else
cout<<"kosong";
}
};
int main()
{
queue
a;
int
data[5]={32,23,45,99,24};
cout<<"Queue
sebelum penambahan elemen : ";
a.display();
cout<<endl<<endl;
for(int
iter=0;iter<5;iter++)
{
a.add(data[iter]);
cout<<"Penambahan
Angka : "<<(iter+1)<<" : ";
a.display();
cout<<endl;
}
cout <<endl;
cout<<"Queue setelah penambahan
elemen:";
a.display();
cout<<endl<<endl;
for(int iter=0 ; iter <5 ; iter++)
{
a.del();
cout<<"Penghapusan
Angka:"<<(iter+1)<<":";
a.display();
cout<<endl;
}
system("pause");
return 0;
}
Output :
POKOK BAHASAN 5
REKURSIF
PENDAHULUAN
Pada pokok bahasan ini akan dibahas mengenai rekursif.
Setelah mempelajari bab ini diharapkan mahasiswa mampu :
- Mengetahui dan memahami definisi rekursif.
- Memahami
sifat-sifat rekursif.
- Mengaplikasikan
rekursif.
PENYAJIAN
Fungsi
rekursif adalah suatu fungsi yang memanggil dirinya sendiri, artinya fungsi
tersebut dipanggil di dalam tubuh fungsi itu sendiri. Contoh menghitung nilai
factorial. Rekursif sangat memudahkan untuk memecahkan permasalahan yang
kompleks. Sifat- sifat rekursif :
-
Dapat digunakan ketika
inti dari masalah terjadi berulang kali.
-
Sedikit
lebih efisian dari iterasi tapi lebih elegan.
-
Method-methodnya
dimungkinkan untuk memanggil dirinya sendiri.
Data
yang berada dalam method tersebut seperti argument disimpan sementara ke dalam
stack sampai method pemanggil diselesaikan
Contoh Program
Bilangan Genap dan Bilangan Ganjil.
Program Bilangan Genap dan Bilangan Ganjil :
Script :
#include
<iostream>
#include
<conio.h>
using
namespace std;
void
odd(int a);
void
even(int a);
int
main(void)
{
int i;
do
{
cout<<"Masukkan
Bilangan 1 - 9(0 Untuk Keluar) : \n";
cin>>i;
odd(i);
cout<<endl;
} while
(i!=0);
_getch();
}
void
odd(int a)
{
if((a%2)!=0)
cout<<"Bilangan
GANJIL\n";
else
even(a);
}
void
even(int a)
{
if((a%2)==0)
cout<<"Bilangan
GENAP\n";
else
odd(a);
}
Output
:
POKOK BAHASAN 6
SORTING (PENGURUTAN)
PENDAHULUAN
Setelah
mempelajari bab ini diharapkan mahasiswa mampu :
- Menunjukkan beberapa algoritma dalam pengurutan.
- Menunjukkan bahwa pengurutan merupakan suatu
persoalan yang bisa diselesaikan dengan sejumlah algoritma yang berbeda
satu sama lain.
- Dapat
memilih algoritma yang paling sesuai untuk menyelesaikan suatu
permasalahan pemrograman.
PENYAJIAN
Pengurutan
data (sorting) didefinisikan sebagai suatu proses untuk
menyusun kembali himpunan obyek menggunkan aturan tertentu. Ada dua macam urutan yang bisa digunakan dalam proses
pengurutan yaitu :
-Urutan
naik (ascending) yaitu dari data
yang mempunyai nilai paling kecil sampai paling besar.
-Urutan
turun (descending) yaitu dari
data yang mempunyai nilai paling besar sampai paling kecil.
Contoh Program ascending
dengan menggunakan bubble sort.
Program ascending dengan menggunakan bubble sort :
Script :
#include
<iostream>
#include
<conio.h>
#include
<iomanip>
using
namespace std;
int
main(void)
{
int dataku[]={5,34,32,25,75,42,2};
int adaPertukaran;
int n;
cout<<"Data BELUM
diurutkan : \n";
for(int ctr=0;ctr<7;ctr++)
{
cout<<setw(3)<<dataku[ctr];
}
cout<<endl<<endl;
do{
adaPertukaran=0;
for(int
i=0;i<7-1;i++){
if(dataku[i+1]<dataku[i]){
n=dataku[i];
dataku[i]=dataku[i+1];
dataku[i+1]=n;
adaPertukaran=1;
}
}
} while(adaPertukaran==1);
cout<<"Data SETELAH
diurutkan : \n";
for(int
i=0;i<7;i++){
cout<<dataku[i];
cout<<"
";
}
_getch();
}
Output
:
Wassalamualaikum Wr. Wb.
umsida.ac.id
Komentar
Posting Komentar