Rabu, 30 Mei 2018

Struktur Data Queue (Antrian)

Queue (Antrian)



 




pilihan 1 yaitu Equeue disini merupakan untuk memasukkan data. data yang dimasukkan adalah 4,5,6.

jika kita pilih angka 2 yaitu Dequeue untuk mengambil dan menampilkan data yang terdepan. Maka akan muncul angka 4. Karena angka 4 adalah data yang pertama dimasukkan.

Jika kita pilih angka 3 yaitu print, maka akan menampilkan seluruh data yang telah dimasukkan. kenapa angka 4 tidak muncul, karena angka 4 telah dipanggil terlebih dahulu dengan cara pilih 2 yaitu Dequeue.

terakhir dengan memilih angka 5 yaitu Clear maka semua data telah dikosongkan atau dihapus.







sumber : https://youtu.be/feyggOhqoig

FSM game


FSM 



FSM Pseudocode :

Baca Konfigurasi 
If Konfigurasi = Default then
                 Set Lawan = Komputer
                 Set Level = Level
                 Set Timer = Timer
Else
                 Set Pemain berdasarkan Konfigurasi
End If
                 Inisialisasi Papan
                 Hapus History


Proses Konfigurasi 
Tampilkan Form Konfigurasi
Input Pemain
If Pemain Black = Komputer
             Input Level
             Input Timer
Else
             Set Pemain = Manusia
                Else If Pemain White = Komputer 
                      Input Level
                      Input Timer
                  Else
                       Set Pemain = Manusia
                           Else If Pilih = Ok
                               Set Konfigurasi Permainan
                            Else
                                Tutup Form Konfigurasi
                            End If
                   End If
End If

Selasa, 01 Mei 2018

Struktur Data Linked List

Senarai Berantai (Linked List)

1. Pengertian Linked List :
Linked list adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian Linked list juga merupakan suatu cara untuk menyimpan data dengan struktur sehingga dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data yang diperlukan. 

2. Jenis-jenis Linked List :
    

Single Linked List

Single Linked List merupakan suatu linked list yang hanya memiliki satu variabel pointer saja. Dimana pointer tersebut menunjuk ke node selanjutnya. Biasanya field pada tail menunjuk ke NULL.
Contoh codingnya :
struct Mahasiswa{
      char nama[25];
      int usia;
      struct Mahasiswa *next;
}*head,*tail;

Double Linked List

Double Linked List merupakan suatu linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunjuk ke node sebelumnya. Setiap head dan tailnya juga menunjuk ke NULL.
Contoh Codingnya :
struct Mahasiwa{
     char nama[25];
     int usia;
     struct Mahasiswa *next,*prev;
}*head,*tail;

Circular Double Linked List
Merupakan double linked list yang simpul terakhirnya menunjuk ke simpul terakhirnya menunjuk ke simpul awalnya menunjuk ke simpul akhir sehingga membentuk suatu lingkaran.
Operasi-Operasi yang ada pada Linked List :
–        Insert
Istilah Insert berarti menambahkan sebuah simpul baru ke dalam suatu linked list.
–        IsEmpty
Fungsi ini menentukan apakah linked list kosong atau tidak.
–        Find First
Fungsi ini mencari elemen pertama dari linked list
–        Find Next
Fungsi ini mencari elemen sesudah elemen yang ditunjuk now
–        Retrieve
Fungsi ini mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu dikembalikan oleh fungsi.
–        Update
Fungsi ini mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu.
–        Delete Now
Fungsi ini menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalahelemen pertama dari linked list (head), head akan berpindah ke elemen berikut.
–        Delete Head
Fungsi ini menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.
–        Clear
Fungsi ini menghapus linked list yang sudah ada. Fungsi ini wajib dilakukan bila anda ingin mengakhiri program yang menggunakan linked list. Jika anda melakukannya, data-data yang dialokasikan ke memori pada program sebelumnya akan tetap tertinggal di dalam memori.

3. Beberapa Jenis yang operasi yang terdapat didalamnya 
a. Insert
Istilah insert berarti menambahkan sebuah simpul baru kedalam suatu Linked List.
b. Isempty
Fungsi ini menentukan apakah Linked List kosong atau tidak.
c. Find First
Fungsi ini mencari elemen pertama pada Linked List.
d. Find Next
Fungsi ini mencari elemen sesudah elemen yang ditunjuk now.
e. Retrieve
Fungsi ini mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu dikembalikan oleh fungsi.
f. Update
Fungsi ini mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu.
g. Delete Now
Fungsi ini menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalah elemen pertama dari Linked List (head), head akan berpindah pada elemen berikut.
h. Delete Head 
Fungsi ini menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.

4. Algoritma dan Contoh program untuk operasi didalamnya.

CONTOH PROGRAM :
#include <stdio.h>
#include <stdlib.h>

struct NODE {
 int number;
 struct NODE *next;
};

void append_node(struct NODE *llist, int num);
int  search_value(struct NODE *llist, int num);
void display_list(struct NODE *llist);


int main(void) {
 int num = 0;
 int input = 5;
 int retval = 0;
 struct NODE *llist;

 llist = (struct NODE *)malloc(sizeof(struct NODE));
 llist->number = 0;
 llist->next = NULL;

while(input != 0) {
  printf("\n===== Pilih Menu =====\n");
  printf("0: Keluar\n");
  printf("1: Insert\n");
  printf("2: Search\n");
  printf("3: Tampilkan\n");
  printf("\nPilihan: ");scanf("%d", &input);

if(input==0){
    printf("...Terimakasih...\n");
}
else if(input==1){
    printf("Anda Memilih: 'Insert'\n");
    printf("Masukkan Nilai Yang Akan di Insert: ");
    scanf("%d", &num);
    append_node(llist, num);
}
else if(input==2){
    printf("Anda Memilih: 'Search'\n");
    printf("Masukkan Nilai Yang Akan di Cari (Search): ");
    scanf("%d", &num);
    if((retval = search_value(llist, num)) == -1)
        printf("Value `%d' not found\n", num);
    else
        printf("Value `%d' located at position `%d'\n", num, retval);
}
else if(input==3){
    printf("Anda Memilih: 'Tampilkan'\n");
    display_list(llist);
}}

 free(llist);
 return(0);
}

void append_node(struct NODE *llist, int num) {
 while(llist->next != NULL)
  llist = llist->next;

 llist->next = (struct NODE *)malloc(sizeof(struct NODE));
 llist->next->number = num;
 llist->next->next = NULL;
}

int search_value(struct NODE *llist, int num) {
 int retval = -1;
 int i = 1;

 while(llist->next != NULL) {
  if(llist->next->number == num)
   return i;
  else
   i++;

  llist = llist->next;
 }

 return retval;
}

void display_list(struct NODE *llist) {
 while(llist->next != NULL) {
  printf("%d ", llist->number);
  llist = llist->next;
 }

 printf("%d", llist->number);
}

SUMBER :

Sabtu, 17 Maret 2018

Game Edukasi


Pengertian Game Based Learning

Games sebagai sarana nyata dari Game Based Learning menjadi alat yang penting dalam proses peningkatan edukasi. Beberapa pihak masih membandingkan game dengan animasi. Tapi berdasarkan informasi diatas, anda bisa melihat bahwa animasi hanya sampai ke tingkat 50% saja dimana siswa dapat melihat orang lain atau proses tertentu diperagakan melalui animasi. Sementara dengan game proses pemilihan tindakan, belajar dari kesalahan dan menganalisa proses menjadi satu kesatuan yang tidak terpisahkan dalam proses simulasi. Dan semuanya bisa dilakukan dengan suasana yang menantang dan menarik! Itulah kekuatan game sebenarnya.


Pendidikan yang diberikan oleh game bahkan bisa melampaui umur anak-anak dan remaja. Game Based Learning tidak melulu untuk siswa sekolah. Jangan terkecoh dengan istilah learning. Pembelajaran meluas ke berbagai bidang seperti militer, medis, kesehatan, manajemen, dsb.Perpaduan game yang bersifat interaktif dan menantang bila dipadukan dengan edukasi yang terstruktur dan terukur malah menghasilkan kombinasi yang positif. 


KENAPA GAME BASED LEARNING PENTING?


Sederhana saja sebenarnya. Kalau anda seorang pendidik, tentu anda tahu informasi ini:
  1.  Kebanyakan siswa hanya mengingat 5-10% apa yang mereka baca.
  2.  Kemudian hanya mengingat 20% apa yang mereka dengar.
  3.  Dan meningkat menjadi 30% apa yang mereka lihat secara visual dari apa yang      mereka dengarkan.
  4. Menjadi 50% jika mereka melihat seseorang mempraktiknya secara langsung sembari menerangkan.
  5. Secara drastis bisa mencapai 80% jika mereka melakukannya sendiri, walaupun hanya sekedar simulasi.
Dampak buruk Game Based Learning :
  1. Adanya anggapan bahwa ini hanya sekedar permainan/game.
  2. Jika anda kalah dalam game ini tinggal mencoba lagi dengan memulainya dari awal.
  3. Memainkan game tanpa menikmati alur yang sudah disiapkan oleh game tersebut.


Gamifikasi 
    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.
   Meski awalnya banyak digunakan untuk marketing, gamifikasi kini banyak diterapkan dalam dunia pendidikan. Metode pembelajaran gamifikasi berarti menerapkan prinsip kerja sebuah permainan ke dalam proses pembelajaran, dengan tujuan untuk menumbuhkan motivasi belajar dan mengubah perilaku siswa.

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 Gamifikasi :
a. Belajar jadi lebih menyenangkan.
b. Mendorong siswa untuk menyelesaikan aktivitas pembelajarannya.
c. Membantu siswa lebih fokus dan memahami materi yang sedang dipelajari.
d. Memberi kesempatan siswa untuk berkompetisi, bereksplorasi dan berprestasi dalam kelas.

Kekurangan Gamifikasi :
a. Dapat diprediksi dan membosankan.
b. Menjadi tidak bermakna, jika tujuan pembelajaran tidak tergambarkan dengan baik atau tidak tercapai.

Selasa, 06 Maret 2018

Struktur Data

TUGAS 2

1. Program yang bagus : 
    a. Program berjalan dengan benar
    b. Program mudah dibaca dan dimengerti
    c. Program mudah di debug
    d. program mudah dilakukan modifikasi

2. Jenis-jenis struktur data secara umum :
    Struktur Data sederhana
    a. Array (Larik)
adalah struktur data statik yang menyimpan sekumpulan elemen yang yang bertipe sama. Setiap elemen di akses langsung melalui indeksnya. Indeks larik harus tipe data yang menyatakan seterurutan misalnya integer atau karakter. Banyak elemen larik yang harus diketahui sebelum program di eksekusi. Tipe elemen larik dapat berupa tipe sederhana , tipr terstruktur , atau tipe larik lain.
    b. Record (catatan)
adalah kumpulan data yang terdiri dari beberapa field(isian) dengan berbagai macam tipe data.

    Struktur Data Majemuk
    a.  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.

    b. 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.
Istilah- istilah yang digunakan sama dengan istilah pada pohon secara umum.

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. Banyak entitas- entitas data dalam masalah- masalah nyata secara alamiah memiliki keterhubungan langsung(adjacency) secara tak terbatas.

3. Aplikasi perangkat lunak komputer yang menggunakan struktur data :
    - Antrian pada kasir pada sebuah bank.
Ketika seorang pelanggan datang, akan menuju ke belakang dari antrian. Setiap pelanggan dilayani, antrian yang berada didepan akan maju. Jika kita ada di antrian kedua, maka kita akan menunggu antrian pertama melakukan prosesnya. Ketika selesai proses dari antrian pertama dia akan pergi, dan giliran kita untuk maju untuk melakukan proses. Begitu juga arti dari antrian dalam bahasan kali ini, jika pengantri pertama datang maka dia juga yang akan keluar pertama kali atau FIFO(First In First Out) dan FCFS (First Come First Serve).
  

- Pembelian tiket kereta api, tiket pesa1at, tiket kapal laut, pembayaran tiket tol, pembayaran listrik, pembayaran air, dan lain sebagainya. 
Saat mengantri di loket untuk membeli tiket. Istilah yang cukup sering dipakaiseseorang masuk dalam sebuah antrian adalah DeQueue. Dalam suatu antrian, yang datang terlebih dahulu akan dilayani lebih dahulu. Istilah yang sering dipakai bila seseorang keluar dari antrian adalah deQueue.

4. Algoritmayang menganalogikan abstraksi perangkat elektronik :
    Program Tiket_Di_Bioskop
    Algoritma:
          type tiketBioskop: < nama_film : string,
                                                         kode_film : string,
                                                         jadwal_film : string,
                                                         harga_tiket : string,
                                                         quota : integer >
          T : array [1..4] of tiketBioskop
          type datapembeli: < nama_pembeli : string,
                                                         kode_pembelian : string >
          D : array [1..9999] datapembeli
          jumlah_pembeli : integer
          pilihan : integer;
          procedure lihatBioskop()
          procedure beliTiket()
          function  buatKodePembelian( T : tiketBioskop) -> string

5. Pendekatan Algoritma
    Top-Down
pendekatan perancangan 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-modal, 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 secara bertahap menambah modul lain yang dipanggil.
   Bottom-up
pendekatan perancangan 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 tinggkat lebih tinggi diimplementasikan menggunakan operasi yang dilakukan ikeh modul tingkat lebih rendah. Dengan demikian sub-modul pada pendekatan ini dikelompokkan secara bersama untuk membentuk tingkat modul yang lebih tinggi. Semua modul tingkat yang lebih tinggi  dikumpulkan bersama-sama untuk membentuk modul tingkat yang lebih tinggi. Proses ini diulang hingga desain algoritma yang lengkap terpenuhi.

6. Algoritma untuk program kalkulator yang dapat melakukan operasi penjumlahan dan penguranagan :
 x,y       : integer
hasil     : real
operator : char
begin
Input(x)
Input(operator)
Input(y)
if operator = ‘+’ {jika operator adalah +}
then
hasil ← x+y
else
if operator = ‘-‘ {jika operator adalah -}
then
hasil ← x-y
endif
endif
{menampilkan penginputan oleh user}
Output(x,operator,y)
{menampilkan hasil penghitungan}
Output(hasil)


Sumber :

buku paket algoritma dan struktur data
s1tik.blogspot.com/2015/07/jenis-struktur-data.html

https://shae45.blogspot.com › Tugas kuliah