Kamis, 31 Mei 2018

Program Menggunakan Binary Tree C++

Program Menggunakan Binary Tree C++

Script Program
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;

/* A <span id="mvuhno2x61oe_1" class="mvuhno2x61oe">binary tree</span> node has data, pointer to left child
   and a pointer to right child */
struct node
{
   int data;
   struct node* left;
   struct node* right;
};

/* Prototypes for funtions needed in printPaths() */
void printPathsRecur(struct node* node, int path[], int pathLen);
void printArray(int ints[], int len);

/*Given a binary tree, print out all of its root-to-leaf
 paths, one per line. Uses a recursive helper to do the work.*/
void printPaths(struct node* node)
{
  int path[1000];
  printPathsRecur(node, path, 0);
}

/* Recursive helper function -- given a node, and an array containing
 the path from the root node up to but not including this node,
 print out all the root-leaf paths.*/
void printPathsRecur(struct node* node, int path[], int pathLen)
{
  if (node==NULL)
    return;

  /* append this node to the path array */
  path[pathLen] = node->data;
  pathLen++;

  /* it's a leaf, so print the path that led to here  */
  if (node->left==NULL && node->right==NULL)
  {
    printArray(path, pathLen);
  }
  else
  {
    /* otherwise try both subtrees */
    printPathsRecur(node->left, path, pathLen);
    printPathsRecur(node->right, path, pathLen);
  }
}


/* UTILITY FUNCTIONS */
/* Utility that prints out an array on a line. */
void printArray(int ints[], int len)
{
  int i;
  for (i=0; i<len; i++)
  {
    printf("%d ", ints[i]);
  }
  printf("\n");
}

/* utility that allocates a new node with the
   given data and NULL left and right pointers. */
struct node* newnode(int data)
{
  struct node* node = (struct node*)
                       malloc(sizeof(struct node));
  node->data = data;
  node->left = NULL;
  node->right = NULL;

  return(node);
}

/* Driver program to test above functions*/
int main()
{

 struct node *root = newnode(5);
  root->left        = newnode(4);
  root->right       = newnode(8);
  root->left->left  = newnode(11);
  root->right->left  = newnode(13);
  root->right->right  = newnode(4);
  root->left->left->left  = newnode(7);
  root->left->left->right = newnode(2);
  root->right->right->right = newnode(1);

  printPaths(root);

   double number1 = 0.0;
 double number2 = 0.0;
 double number3 = 0.0;
 double number4 = 0.0;
 double answer;
 cout <<"masukkan 4 angka dari path di atas"<<endl;
 cin>>number1;
 cin>>number2;
 cin>>number3;
 cin>>number4;

 answer = (number1 + number2 + number3 + number4) /4;
 cout<<"rata-ratanya adalah "<<answer<<endl;



  system ("pause");
  getchar();

  return 0;}

Referensi :
https://teknobloggerid.blogspot.com/2016/06/contoh-coding-binary-tree-c.html

Rabu, 30 Mei 2018

Finite State Machine (FSM) Game Survival

  • FSM Game Survival

  • FSM Pseudocode
Void RunLogic(int * state)
{
switch( *state )
{
case 0: //Wander
Wander();
if(SeeEnemy() ) { *Attack}
break;
case 1: //Attack
Attack();
if( with() ) { *Range;*Melee;}
if( NoEnemy() ) { *Wander;}
if( Hide() ) { *Flee;}
if( EnemyDeath() ) { *Loot;}
if( PlayerLowHP() ) { *FindAid;}
break;
case 2: //Range
rRange();
if( use() ) { *Gun;}
Break;
case 3: //Melee
Melee();
if( use() ) { *Knife;*Punch;}
Break;
case 4: //FindAid
FindAid();
if(HPFull() ) { *Flee;}
case 5: //Flee
Flee();
if( NoEnemy() ) { *Wander;}
if( PlayerDeath() ) { *GameOver;}
break;
case 6: //loot
loot();
if( search() ) { *gun;*knife;}
break;
case 7: //Gun
Gun();
if( Reload() ) { *Attack;}
case 8: //GameOver
GameOver();
if( respawn() ) { *Player;}
}
}




Senin, 28 Mei 2018

Program Antrian Kereta Api Menggunakan Queue C++

Program Antrian Kereta Api Menggunakan Queue C++

Script Program
#include<iostream>l
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>

using namespace std;

//struct node
struct Node{
 int data;
 Node *next;
};
Node *head, *tail;

//fungsi
void menu();
void LinkedList();
void penutup();
void inisialisasi();
void insertData();
void removeData();
void bersih();
void tampil();

//pemanggilan fungsi
//fungsi utama
int main(){
 char MENU;
 int ulangMetode = 1;

 do
 {
        printf("||= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =||\n");
        printf("||              PROGRAM ANTRIAN KEBERANGKATAN KERETA API                 ||\n");
        printf("||_______________________________________________________________________||\n");


        //menu pilihan
                        cout<<"||+++++++++++++++++++++++++++++++++++||\n";
                        cout<<"||***          MENU UTAMA         ***||\n";
                        cout<<"||-----------------------------------||\n";
                        cout<<"|| 1. Pendaftaran Kereta Api         ||\n";
                        cout<<"|| 2. Exit                           ||\n";
                        cout<<"||+++++++++++++++++++++++++++++++++++||\n";
                        cout<<endl;

  printf("Masukkan Pilihan Anda ?: ");
  MENU = getche();
  printf("\n");
  getch();
        system("cls");

  switch(MENU)
  {
  case '1' :
   LinkedList();
   break;
        case '2' :
            penutup();
   break;
  default :
   {
    puts("\nKode yang dimasukkan salah!\n");
    puts("Press any key for back to the menu");
    getch();
   }
   break;
  }
 }
 while(ulangMetode == 1);
}

//menu dari metode
void menu()
{

    cout<<"||+++++++++++++++++++++++++++++++++++++++++++||\n";
 cout<<"||         ***** PILIHAN MENU *****          ||\n";
    cout<<"||-------------------------------------------||\n";
 cout<<"|| 1. Daftar Antrian Kereta Api<KODE KERETA> ||\n";
 cout<<"|| 2. Keberangkatan                          ||\n";
 cout<<"|| 3. Memberangkatkan Semua Antrian          ||\n";
 cout<<"|| 4. Lihat Daftar Antrian Kereta            ||\n";
 cout<<"|| 5. Exit                                   ||\n";
    cout<<"||+++++++++++++++++++++++++++++++++++++++++++||\n";
 cout<<endl;
}

//metode linked list
void LinkedList()
{
 char pilihMenu;
 int ulang = 1;

 do
 {
  menu();
  printf("Input Menu  : ");
  pilihMenu = getche();
  printf("\n");
  switch(pilihMenu)
  {
  case '1' :
   insertData();
   break;
  case '2' :
   removeData();
   break;
  case '3' :
   bersih();
   break;
  case '4' :
            tampil();
   break;
  case '5' :
      penutup();
   break;
  default :
   {
    puts("Input menu salah!\n");
    puts("Press any key for back to the menu");
    getch();
   }
   break;
  }
 }
 while(ulang == 1);
}

/*fungsi insialisasi bahwa
head dan tail bernilai NULL*/
void inisialisasi()
{
 head = NULL;
 tail = NULL;
}

//fungsi untuk memasukkan data
void insertData()
{
 int angka;
 Node *nodeBaru;
 nodeBaru = new Node;

 cout<<"Masukkan Data : ";
 cin>>angka;

 nodeBaru->data = angka;
 nodeBaru->next = NULL;

 if(tail == NULL)
 {
  head = tail = nodeBaru;
  tail->next = NULL;
 }
 else
 {
  tail->next = nodeBaru;
  tail = nodeBaru;
 }

 printf("Data %i masuk!\n\n", angka);
 puts("Press any key for back to the menu");
 getch();
 system("cls");
}

/*untuk hapus elemen belakang
      untuk metode LIFO*/
void removeData()
{
 int elDel;
 Node *del, *prevTail;
 del = new Node;

 if(tail != NULL)
 {
  del = tail;
  elDel = del->data;

  if(tail == head)
  {
   inisialisasi();
  }
  else
  {
   prevTail = head;

   while(prevTail->next != tail)
    prevTail = prevTail->next;

   tail = prevTail;
   tail->next = NULL;
  }

  delete del;

  printf("Data %i Diberangkatkan!\n\n", elDel);
 }
 else
 {
  puts("Data Kosong! Tidak ada data yang dapat diberangkatkan!\n");
 }

 puts("Press any key for back to the menu");
 getch();
 system("cls");
}

//untuk hapus semua elemen
void bersih()
{
 Node *clear, *point;

 if(tail != NULL)
 {
  point = head;

  while(point != NULL)
  {
   clear = point;
   point = point->next;

   delete clear;
  }

  inisialisasi();

  puts("Semua Data Diberangkatkan!\n");
 }
 else
  puts("Data Masih Kosong!\n");

 puts("Press any key for back to the menu");
 getch();
 system("cls");
}

//untuk menampilkan list data
void tampil()
{
 Node *see;

 see = head;

 if(tail != NULL)
 {
  puts("Daftar Data Antrian Kereta Api:");
  puts("");

  while(see != NULL)
  {
   printf("%i ", see->data);
   see = see->next;
  }
  puts("\n");
 }
 else
  puts("Data masih dalam keadaan kosong!\n");

 puts("Press any key for back to the menu");
 getch();
 system("cls");
}

//fungsi penutup / keluar
void penutup()
{
    cout<<"\n\tPROGRAM EXIT"<<endl;
    exit(0);
}

Referensi:
https://www.esokharinanti.com/2014/04/program-queue-linked-list-pada-antrian.html  

Minggu, 29 April 2018

Tentang Linked List

Tentang Linked List

Pengertian

Linked list merupakan sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian struktur berupa rangkaian elemen saling berkait dimana setiap elemen dihubungkan elemen lain melalui pointer.

Jenis-jenis linked list

a. Single Linked List
Single Linked List merupakan suatu linked list yang hanya memiliki satu varuabel pointer saja. Dimana pointer tersebut menunjuk ke node selanjutnya.Biasanya field pada tail menunjuk ke NULL.
Jenis operasi yang didalamnya :
- IsEmpty
Fungsi memeriksa apakah singly yang ada masih kosong.

- Push
Fungsi memasukkan elemen baru ke dalam singly. Push di sini mirip dengan insert dalam single linked list biasa.

- Pop
Fungsi ini mengeluarkan elemen teratas dari singly.

- Clear

Fungsi ini akan menghapus singly yang ada.

Contoh Codingannya :
 struct Mahasiswa{
  char nama[25];
  int usia;
  struct Mahasiswa *next;
}*head,*tail;

b. Double Linked List
Double Linked List Merupakan suatau linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunuk ke node sebelumnya. Setiap head dan tailnya juga menunjuk ke  NULL.
Jenis operasi yang didalamnya :
- IsEmpty
Fungsi IsEmpty berguna untuk mengecek apakah queue masih kosong atau sudah berisi data. Hal ini dilakukan dengan mengecek apakah head masih menunjukkan pada Null atau tidak. Jika benar berarti queue masih kosong.

- IsFull
Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bisa menampung data dengan cara mengecek apakah Jumlah Queue sudah sama dengan MAX_QUEUE atau belum. Jika benar maka queue sudah penuh.

- EnQueue
Fungsi EnQueue berguna untuk memasukkan sebuah elemen ke dalam queue (head dan tail mula-mula meunjukkan ke NULL).

- DeQueue

Procedure DeQueue berguna untuk mengambil sebuah elemen dari queue. Hal ini dilakukan dengan cara menghapus satu simpul yang terletak paling depan (head).

Contoh Codingannya:
Struct Mahasiswa{
 char nama[25];
 int usia;
 struct Mahasiswa *next,*prev;
}*head,*tail;

c. Circular Linked List
Circular Linked List merupakan suatu linked list dimana tail (node terakhir) menunjuk ke head(node pertama).Jadi tidak ada pointer yang menunjuk NULL ada 2 jenis Circular Linked.

Circular Single Linked List


Circular Double Linked List
Referensi :
http://mayorpelangi.blogspot.co.id/2011/04/linked-list.html
http://t-edukasi.blogspot.co.id/2018/01/materi-dan-pengertian-linked-list-atau.html

Sabtu, 17 Maret 2018

Pembelajaran dan Gamification pada Game Edukasi

Pembelajaran Berbasis Game

Menurut kamus Wikipedia pembelajaran berbasis game adalah permainan yang didesain khusus untuk mengajar orang-orang dengan materi-materi tertentu, menjelaskan konsep, menguatkan pengembangan, untuk memahami suatu peristiwa sejarah atau budaya, atau memberi bantuan kepada orang-orang suatu keterampilan sebagaimana yang mereka mainkan. Sedangkan dalam web game base learning pembelajaran berbasis game didefinisikan sebagai pembelajaran yang menggunakan latihan kompetitif, baik untuk mempertandingkan peserta didik dengan peserta didik yang lain, untuk membuat mereka tertantang dan untuk memotivasi siswa agar belajar lebih baik lagi.

Pembelajaran berbasis game termasuk pembelajaran yang mengakomodasi semua teori belajar yang ada. Pembelajaran dengan permainan dapat digunakan secara umum, baik untuk teori behaviorisme, kognitivisme, maupun psikologi sosial. Karena peserta didik merasa senang untuk berpartisipasi aktif dalam sebuah pembelajaran.
Karakteristik game untuk pembelajaran : 
  •  Ada tantangan dan penyesuaian : tersedia tantangan yang semakin kompleks,  siswa dapat menyesuaikan tingkat kesulitan jika diperlukan. Dalam game terdapat level-  level, makin tinggi levelnya maka tingkat kesulitannya juga makin tinggi.
  • Menarik dan mengasyikkan : game mampu membuat siswa asyik dalam sebuah  aktifitas yang mereka pahami tujuannya serta berkaitan dengan pencapaian kompetensi  mereka.
  • Tidak menggurui dan berdasar pada pengalaman : siswa tidak harus dilatih terlebih  dahulu untuk memainkan game, biarkan siswa langsung mencoba bermain, mereka  mungkin akan kalah atau gagal, lalu mengulang dan memperbarui strategi dalam bermai
  • Interakatif : Siswa berinteraksi dengan cara menanggung akibat dari tindakan yang  mereka lakukan dan dengan melihat pengaruhnya terhadap game yang dimainkannya.
  •  Umpan balik : Siswa dapat menarik kesimpulan dari umpan balik yang diberikan  tentang bagaimana tindakan mereka dapat menimbulkan efek tertentu
  • Sosial dan kerja sama : game harus dapat meningkatkan dialog serta pertukaran  pendapat dan pengetahuan diantara para pemain
  • Keahlian : Semua siswa dalam satu kelas tidak diasumsikan memiliki kemampuan  yang sama, ada beberapa siswa yang dijadikan asisten untuk membantu siswa lainnya  menjelaskan tentang game dan bagaimana cara memainkannya.
  • Perenungan : siswa harus diberikan kesempatan untuk mengevaluasi kinerja mereka  dan apa yang mereka pelajari dari memainkan sebuah game, misalnya kenapa mereka  gagal/kalah dan bagaimana cara mengatasinya agar tak terulang lagi. 
 
Gamification pada Game Edukasi 
 
Gamifikasi adalah penerapan teknik dan strategi dari sebuah permainan ke dalam konteks nonpermainan untuk menyelesaikan suatu masalah. Metode ini bekerja dengan cara membuat materi atau teknologi menjadi lebih menarik dengan mendorong pengguna untuk ikut terlibat dalam perilaku yang diinginkan. Tujuannya yaitu untuk meningkatkan partisipasi, motivasi, dan prestasi audiens.
 
Berikut langkah-langkah penerapan gamifikasi dalam pembelajaran:  
  1. Kenali tujuan pembelajaran
  2. Tentukan ide besarnya
  3.  Buat skenario permainan
  4. Buat desain aktivitas pembelajaran
  5. Bangun kelompok-kelompok
  6. Terapkan dinamika permainan
Kelebihan dan Kekurangan Gamifikasi :
 
Kelebihan
  • Belajar jadi lebih menyenangkan
  • Mendorong siswa untuk menyelesaikan aktivitas pembelajarannya
  • Membantu siswa lebih fokus dan memahami materi yang sedang dipelajari
  • Memberi kesempatan siswa untuk berkompetisi, bereksplorasi dan berprestasi dalam kelas
Kelemahan
  • Dapat diprediksi dan membosankan
  • Menjadi tidak bermakna, jika tujuan pembelajaran tidak tergambarkan dengan baik atau tidak tercapai
  • ‘Merusak’ secara psikologis

Sumber :
http://guraru.org/info/gamification-untuk-pembelajaran/
https://achmadarifudinsite.wordpress.com/2016/01/31/game-edukasi-media-pembelajaran-berbasis-game/

Selasa, 06 Maret 2018

Penjelasan Struktur Data - Tugas 2

Penjelasan Struktur Data

1. Cara Mengetahui Program yang Baik dan Bagus
1. Tingkat Kepercayaan TInggi ( Realibility ), Hasil yang diperoleh dari proses harus berakurasi tinggi dan benar.
2. Pemrosesan yang efisien ( Cost rendah ), Pemrosesan harus diselesaikan secepat mungking dan frekuensi kalkulasi yang sependek mungkin.
3. Sifatnya General, Bukan sesuatu yang hanya menyelesaikan kasus saja, tapi juga untuk kasus yang lain yang lebih general.
4. Bisa dikembangkan ( Expandable ), Haruslah sesuatu yang dapat kita kembangkan. lebih jauh berdasarkan perubahan ( Requirement ) yang ada.
5. Mudah dimengerti, Siapapun yang melihat dia akan bisa memahami algoritma anda. susah dimengerti suatu program akan membuat dikelola.
6. Bisa dengan mudah diimplementasikan diberbagai platform komputer.
7. Efektive, Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemrosesnya. yang akan menjalankannya dan tidak boleh ada instruksi yang Ambigu / ganda.

2. Jenis-Jenis Struktur Data Secara Umum
  • Struktur Data Sederhana
Array (Larik)
Adalah struktur data statik yang menyimpan sekumpulan elemen bertipe sama.
Setiap elemen diakses secara langsung melalui indeksnya. Indeks larik harus tipe data yang menyatakan keterurutan, misalnya: integer atau karakter. Banyaknya elemen larik harus sudah diketahui sebelum program dieksekusi. Tipe elemen larik dapat berupa tipe sederhana, tipe terstruktur atau tipe larik lain. Nama lain dari Array adalah Larik, tabel, atau vektor.

Record (Catatan)
adalah kumpulan data yang terdiri dari beberapa field(isian) dengan berbagai macam tipe data.
  • Struktur Data Majemuk
Linier

Stack(tumpukan)
adalah list linier yang dikenali berupa elemen puncaknya(top), aturan penyisipan dan penghapusan elemennya tertentu (penyisipan selalu dilakukan "diatas"(top) dan penghapusan selalu dilakukan pada "top"). Karena aturan penyisipan dan penghapusan semacam itu, "top" adalah satu- satunya alamat tempat terjadinya operasi. Elemen yang paling akhir ditambahkan akan menjadi elemen yang akan dihapus. Dapat dikatakan elemen stack akan tersusun secara LIFO(last in first out).

Queue(antrian)
Adalah list linier yang dikenali berupa elemen pertama(head) dan elemen terakhir(tail), dimana aturan penyisipan dan penghapusan elemennya didefinisikan sebagai penyisipan selalu dilakukan setelah elemen terakhir, penghapusan selalu dilakukan pada elemen pertama dengan kondisi satu elemen dengan elemen lainnya dapat diakses melalui informasi "next".

List dan Multi-List(Daftar)
adalah sekumpulan list linier yang dengan elemen yang bertype sama, yang memiliki keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian.

Non-Linier

Binary-Tree(Pohon biner)
adalah himpunan terbatas yang mungkin kosong atau terdiri dari sebuah simpul yang disebut sebagai akar dan dua buah himpunan lain yang disjoint yang merupakan pohon biner yang disebut sebagai sub-pohon kiri(left) dan sub-pohon kanan(right) dari pohon biner tersebut.

Pohon biner merupakan type yang sangat penting dari struktur data dan banyak dijumpai dalam berbagai terapan. Karakteristik yang dimiliki oleh pohon biner adalah bahwa setiap simpul yang paling banyak hanya memiliki dua buah anak, dan mungkin tidak punya anak.


Graph(graf)
merupakan struktur data yang paling umum. Jika struktur linier memungkinkan pendefinisian keterhubungan sekuensial antar entitas data, struktur data tree memungkinkan pendefinisian keterhubungan hirarkis, maka struktur graph memungkinkan pendefinisian keterhubungan tak terbatas antara entitas data.

3. Aplikasi Komputer yang Menggunakan Struktur Data Sebagai Dasar Pengembangannya

Code Blocks
Code::Blocks atau Code Blocks adalah IDE (Integrated Development Environment) untuk bahasa pemrograman C, C++ dan Fortran. Dengan menggunakan Code::Blocks, kita sudah mendapati aplikasi teks editor, compiler, linker dan debugger untuk bahasa pemrograman C dalam sekali install, sehingga bisa langsung digunakan. Code::Blocks sendiri merupakan aplikasi Open Source yang bisa didapat dengan gratis. IDE ini juga tersedia untuk sistem operasi Linux, Mac, dan Windows.

Dev C++
Dev C++ adalah salah satu software yang paling banyak digunakan oleh para mahasiswa/i dalam dunia IT yang dimana mereka sering kali menggunakannya untuk membuat sebuah aplikasi atau program dengan source code tertentu yang memang sudah mereka buat atau pelajari. Software ini terbilang gratis dan juga Open Source, sehingga kalian tidak membutuhkan aktivator lainnya.


4. Algoritma dengan Menganalogikan Perangkat Elektronik

- Terdapat AC  beserta remotenya.
- Remote akan mengendalikan AC dari jarak jauh, yang terdapat pilihan untuk pengaturannya.
- Di remote ada beberapa pilihan pengaturan seperti.
  - On/Off : Menghidupkan dan mematikan AC
  - Temperatur : Menambahkan dan menurunkan suhu ruangan
  - Timer : Mengatur ac agar hidup dan mati secara otomatis sesuai waktu yang diinginkan.
  - Air swing : Mengatur arah swing agar udara dapat terarah pada bagian yang diinginkan.
- Sesuai fungsinya kita pilih temperatur untuk mendinginkan ruangan.
- Pilih tombol plus atau arah keatas untuk menurunkan suhu.
- Semakin kecil angka maka semakin dingin ruangan.

5. Pendekatan yang Digunakan Merancang Algoritma
  • Top Down
Pendekatan Secara Top-Down dimulai dengan cara membagi algoritma yang kompleks menjadi satu atau lebih dari satu modul. Modul yang terbagi ini masih bisa diuraikan lagi menjadi beberapa sub-modul dan proses ini dilakukan berulang ulang hingga kompleksitas modul yang diinginkan terpenuhi. Metode perancangan top-down merupakan bentuk perbaikan secara bertahap yang dimulai dengan modul paling atas kemudian secarabertahap menambah modul lain yang dipanggil. Oleh karena itu, pendekatan top-down dimulai dari desain abstrak, dan desain ini disempurnakan menjadi tingkat lebih konkret pada setiap langkah hingga tercapai suatu level yang tidak mermerlukan perbaikan lebih lanjut.
  • Bottom Up
Pendekatan secara Bottom-up merupakan kebalikan dari pendekatan top-down. Dimana dalam pendekatan ini dimulai dengan pembuatan modul paling dasar, kemudian dilanjutkan ke perancangan modul tingkat yang lebih tinggi. Modul yang memiliki tingkat lebih tinggi diimplementasikan menggunakan operasi yang dilakukakan oleh modul tingkat lebih rendah. Dengan demikian, sub modul pada pendekatan ini dikelompokkan secara bersama untuk membentuk tingkat modul yang lebih tinggi.

6. Rancangan Algoritma untuk Program Kalkulator
Algoritma Kalkulator

Referensi :
https://www.duniailkom.com/tutorial-belajar-c-cara-mendownload-dan-menginstall-code-blocks/
http://nirvana-net.blogspot.co.id/2011/12/syarat-algoritma-baik.html
http://rahmadadhita.blogspot.co.id/2010/11/algoritma-kalkulator.html
 




Senin, 26 Februari 2018

Pengertian dan Jenis-Jenis Struktur Data - Tugas 1

Pengertian dan Jenis-Jenis Struktur Data

  • Pengertian Struktur Data
Dalam istilah ilmu komputer, struktur data adalah cara penyimpanan , pengorganisasian , dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.

Dalam teknik pemrograman, struktur data berarti tata letak data yang berisi kolom-kolom data,baik itu kolom yang tampak oleh pengguna (user) ataupun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna. Setiap baris dari kumpulan kolom-kolom tersebut dinamakan catatan (record). Lebar kolom untuk data dapat berubah dan bervariasi. Ada kolom yang lebarnya berubah secara dinamis sesuai masukan dari pengguna dan juga ada kolom yang lebarnya tetap.

  • Jenis Struktur Data
  1. Struktur Data Sederhana
  • Array (Larik)
adalah struktur data statik yang menyimpan sekumpulan elemen bertipe sama.
Setiap elemen diakses secara langsung melalui indeksnya. Indeks larik harus tipe data yang menyatakan keterurutan, misalnya: integer atau karakter. Banyaknya elemen larik harus sudah diketahui sebelum program dieksekusi. Tipe elemen larik dapat berupa tipe sederhana, tipe terstruktur atau tipe larik lain. Nama lain dari Array adalah Larik, tabel, atau vektor. 

  • Record (Catatan)
adalah kumpulan data yang terdiri dari beberapa field(isian) dengan berbagai macam tipe data.

     2. Struktur Data Majemuk
  • Linier.
1. Stack(tumpukan)
adalah list linier yang dikenali berupa elemen puncaknya(top), aturan penyisipan dan penghapusan elemennya tertentu (penyisipan selalu dilakukan "diatas"(top) dan penghapusan selalu dilakukan pada "top"). Karena aturan penyisipan dan penghapusan semacam itu, "top" adalah satu- satunya alamat tempat terjadinya operasi. Elemen yang paling akhir ditambahkan akan menjadi elemen yang akan dihapus. Dapat dikatakan elemen stack akan tersusun secara LIFO(last in first out).

2. Queue(antrian)
adalah list linier yang dikenali berupa elemen pertama(head) dan elemen terakhir(tail), dimana aturan penyisipan dan penghapusan elemennya didefinisikan sebagai penyisipan selalu dilakukan setelah elemen terakhir, penghapusan selalu dilakukan pada elemen pertama dengan kondisi satu elemen dengan elemen lainnya dapat diakses melalui informasi "next".

3. List dan Multi-List(Daftar)
adalah sekumpulan list linier yang dengan elemen yang bertype sama, yang memiliki keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian.

  • Non-Linier.
1. Binary-Tree(Pohon biner)
adalah himpunan terbatas yang mungkin kosong atau terdiri dari sebuah simpul yang disebut sebagai akar dan dua buah himpunan lain yang disjoint yang merupakan pohon biner yang disebut sebagai sub-pohon kiri(left) dan sub-pohon kanan(right) dari pohon biner tersebut.

Pohon biner merupakan type yang sangat penting dari struktur data dan banyak dijumpai dalam berbagai terapan. Karakteristik yang dimiliki oleh pohon biner adalah bahwa setiap simpul yang paling banyak hanya memiliki dua buah anak, dan mungkin tidak punya anak.

2. Graph(graf)
merupakan struktur data yang paling umum. Jika struktur linier memungkinkan pendefinisian keterhubungan sekuensial antar entitas data, struktur data tree memungkinkan pendefinisian keterhubungan hirarkis, maka struktur graph memungkinkan pendefinisian keterhubungan tak terbatas antara entitas data.


Referensi : 
www.it-jurnal.com/pengertian-struktur-data/
http://s1tik.blogspot.co.id/2015/07/jenis-struktur-data.html