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 :
  1. Mengaetahui konsep dasar struktur data.
  2. Memahami konsep array, ponter, dan struktur.
  1. 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.
  1. 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 
  1. 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 :
  1. 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();
}
Output :


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 :
  1. Menjelaskan definisi dan representasi list.
  2. Mengetahui jenis-jenis list.
  3. 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();
}
Output :


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 :
  1. Mengetahui dan memahami definisi stack.
  2. Memahami operasi-operasi dasar stack.
  3. 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 :
  1. Mengetahui dan memahami definisi antrian.
  2. Memahami operasi-operasi dasar pada antrian.
  3. 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 :
  1. Mengetahui dan memahami definisi rekursif.
  2. Memahami sifat-sifat rekursif.
  3. 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 :
  1. Menunjukkan beberapa algoritma dalam pengurutan.
  2. Menunjukkan bahwa pengurutan merupakan suatu persoalan yang bisa diselesaikan dengan sejumlah algoritma yang berbeda satu sama lain.
  3. 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 :

Di atas adalah penjelasan atau rangkuman dari tiap - tiap pokok pembahasan praktikum Algoritma dan Struktur Data, sekian dari saya terima kasih semoga bermanfaat :)

Wassalamualaikum Wr. Wb.

umsida.ac.id
fst.umsida.ac.id

Komentar