Modul 4 Praktikum Struktur Data

TUGAS PENYERAHAN LAPORAN PRAKTIKUM STRUKTUR DATA              















FAKULTAS ILMU KOMPUTER
PRODI SISTEM INFORMASI
UNIVERSITAS KUNINGAN
 



Disusun Oleh:
Riqi Tricahyo(20160910064)
SI 2016 B














Tujuan Praktikum :
1.     Mahasiswa memehami array dalam function dalam bahasa C/C++
2.   Mahasiswa mengerti kegunaan array function dalam. Menyelesaikan kasus dalam pemograman C/C++
3. Mahasiswa dapat menciptakan program dalam variabel Array yang di kombinasikan menggunakan  Fungsi 
Dasar Teori :
                                      
Dalam function dengan array adalah penggunaan variabel array pada saat pendeklarasian fungsi, hal ini dinilai lebih effisien dalam menyelesaikan kasus-kasus matriks yang berukuran cukup besar. Dengan menggunakan suatu fungsi maka pengulangan syntax tidak perlu dilakukan cukup hanya menjalankan fungsi bervariabel array. Contoh:
void isi_larik (int a[10] [10])
Pendeklarasian sebuah array dalam sebuah sub program atau fungsi
Fungsi Nama Fungsi (Parameter Tipe Data Array)
Keunggulan Array :
  • Array sangat cocok pengaksesan acak, sembarang elemen pada array dapat diakses secara langsung tanpa melalui elemen-elemen lain.
  • Jika berada disuatu lokasi elemen, maka sangat mudah untuk menelusuri ke elemen sekitarnya baik elemen sebelumnya maupun setelahnya.
  • Jika elemen-elemen array adalah nilai independen dan seluruhnya harus terjaga dengan penyimpanan dengan array akan sangat efisien.
Kelemahan Array :
         Array harus bertipe homogen, kita tidak dapat memiliki elemen array yang berlainan.
         Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah ukurannya diwaktu eksekusi. Bila penambahan dan pengurangan terjadi terus menerus, maka representasi statis menjadi tidak mungkin hal ini berakibat pada :
  Penggunaan memori menjadi tidak efisien
  Membuang banyak waktu dalam komputasi
  Pada suatu aplikasi, representasi statis tidak mungkin.
PRAKTIKUM 1
Studi Kasus :
Dalam sebuah deret bilangan yang dikumpulkan dalam variabel array yang terdiri dari 10 elemen, dari setiap bilangan tersebut memiliki alamat indeksnya, dengan memasukan sebuah bilangan yang terdapat di variabel array kita dapat mengetahui alamat indeks dari bilangan tersebut pada nomor indeks beberapa bilangan itu tersimpan.
Script Program :
#include<iostream>
#include<stdio.h>
#include<conio.h>
int main()
{
            int A[10] = {12,24,13,25,10,11,21,20,15,18};
            int bil, c;
            for(int i=0; i<=9; i++)
            {
                        cout<<"Indeks-["<<i<<"]"<<" "<<A[i]<<endl;
            }
            cout<<endl;
            cout<<"Masukan Bilangan Yang Akan Dicari: ";
            cin>>bil;
            for(c=0; c<=9; c++)
            {
                        if(A[c]==bil)
                        {
                                    cout<<"Bilangan yang anda cari berada di indeks ke- "<<c;
                                    break;
                        }}
                        if(A[c]!=bil)
                        {
                                    cout<<"\nBilangan yang anda cari tidak terdaftar";
                        }
           
            getch();
            return 0;
}
Hasil Running :


Analisis Program :
program ini menggunakan 3 file header yaitu stdio.h, iostream.h, dan juga conio.h .
 
int A[10] = {12,24,13,25,10,11,21,20,15,18};
int bil, c;
char lagi;
 
Penggalan script diatas merupakan tipe data integer dengan nama array adalah A, elemen-elemen array yang terdapat meliputi 10 elemen, yaitu : {12,24,13,25,10,11,21,20,15,18}.
Kemudian tipe data yang digunakan adalah tipe data integer dimana untuk variabel bil dan c, dan juga tipe data character untuk variabel lain.
Untuk penggunaan instruksi yang terakhir adalah penggunaan struktur IF, dimana struktur IF ini digunakan untuk menguji dua kondisi yaitu kondisi terpenuhi dan kondisi tidak terpenuhi. Seperti pada penggalan script dibawah ini :
 
if(A[c]==bil)
{      
cout<<"Bilangan yang anda cari berada di indeks ke- "<<c;
cout<<endl<<endl;
break;
}}
if(A[c]!=bil)
{
cout<<"\nBilangan yang anda cari tidak terdaftar";
cout<<endl<<endl;
}
 
Penjelasan :  jika kondisi pertama yaitu jika A dengan elemen array nya yaitu c sama dengan bil (if(A[c]==bil)) bernilai benar maka program yang akan dijalankan yaitu cout<<"Bilangan yang anda cari berada di indeks ke- "<<c; dimana jika kita memasukan bilangan {12,24,13,25,10,11,21,20,15,18}. Tetapi apabila kondisi bernilai salah atau bilangan yang kita masukkan selain bilangan {12,24,13,25,10,11,21,20,15,18} maka kondisi yang akan dijalankan adalah jika A dengan elemen array c tidak sama dengan bil (if(A[c]!=bil)) maka program yang akan dijalankan adalah cout<<"\nBilangan yang anda cari tidak terdaftar";
PRAKTIKUM 2
Studi Kasus :
Mobil 13 adalah perusahaan yang menjual mobil bekas, berdagang mobil bekas selama bertahun-tahun ternyata hanya ada tiga merek mobil yang selalu dicari oleh konsumen yaitu Toyota, Honda, dan Suzuki. Mobil 13 saat ini sudah memiliki banyak cabang di tiga kota besar yaitu Jakarta, Surabaya, dan Medan dengan semakin banyaknya konsumen yang percaya dengan kualitas mobil bekas yang dijual oleh Mobil 13 perusahaan membutuhkan program yang dapat mencatat semua penjualan mobil bekas perbulan disetiap cabangnya, selama ini masih bersifat manual dalam bentuk bagan diatas kertas.
  
Script Program :

#include <stdio.h>
#include <conio.h>
void judul (char kota [11])
{
            char merek [3] [7] = {"Toyota", "Honda", "Suzuki"};
            char bulan [13] [4] = {"Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nop", "Des", "Jml"};
            int i;
            clrscr ();
            printf ("PENJUALAN MOBIL BEKAS\n\n");
            printf ("Kota : %s\n\n\t", kota);
            for (i = 0; i < 13; i++)
            printf ("%s ", bulan[i]);
            for (i = 0; i < 3; i++)
            printf ("\n%s", merek[i]);
}
            void isi_data(int jual [4] [13] [4])
            {
                        char kota [4] [11] = {"Jakarta", "Surabaya" ,"Medan", "semua kota"};
                        int i_k, i_m, i_b;
                        for (i_k = 0; i_k < 3; i_k++)
                        {
                                    judul (kota[i_k]);
                                    for (i_m = 0; i_m < 3; i_m++)
                                    {
                                    for (i_b = 0; i_b < 12; i_b++)
                                    {
                                                gotoxy(11 + i_b * 4, i_m + 6);
                                                scanf ("%d", &jual[i_m] [i_b] [i_k]);
                                                jual [i_m] [12] [i_k] += jual [i_m] [i_b] [i_k];
                                                jual [3] [i_b] [i_k] += jual [i_m] [i_b] [i_k];
                                                jual [3] [12] [i_k] += jual [i_m] [i_b] [i_k];
                                                jual [i_m] [i_b] [3] += jual [i_m] [i_b] [i_k];
                                                }
                                                gotoxy (59, i_m + 6);
                                                printf ("%d", jual [i_m] [12] [i_k]);
                                    }
                                    gotoxy (11, 10);
                                                for (i_b = 0; i_b < 13; i_b++)
                                                printf ("%-4d", jual [3] [i_b] [i_k]);
                                                fflush(stdin);
                                                getch ();
                                    }
                        }
            void total_jual(int jual [4] [13] [4])
            {
                        int i_m, i_b;
                        for (i_m = 0; i_m < 3; i_m++)
                        for (i_b = 0; i_b < 12; i_b++)
                        {
                                    jual [i_m] [12] [3] += jual [i_m] [i_b] [3];
                                    jual [3] [i_b] [3] += jual [i_m] [i_b] [3];
                                    jual [3] [12] [3] += jual [i_m] [i_b] [3];
  }
  judul ("Semua");
  for (i_m = 0; i_m < 4; i_m++)
  {
                        i_m == 3 ? gotoxy (11, i_m + 7): gotoxy(11, i_m + 6);
                        for (i_b = 0; i_b < 13; i_b++)
                        printf ("%-4d", jual[i_m] [i_b] [3]);
  }
  }
  int main()
{
  int jual[4] [13] [4] = {0};
  isi_data(jual);
  total_jual(jual);
  return 0;
}
Hasil Running :

Analisis Program
 Program pada praktikum 2 ini adalah sebuah program untuk menampilkan perhitungan penjualan mobil bekas setiap bulannya dengan menggunakan array dalam function. Dengan menggunakan file header stdio.h dan conio.h.
Pada penggalan script : void judul(char kota[11]), yaitu ahwa dimana dalam function judul dengan tipe data character untuk variabel kota dengan jumlah elemennya yaitu 11.
char merek[3][7] = {"Toyota", "Honda", "Suzuki"};
char bulan[13][4] = {"Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nop", "Des", "JML"};
Kemudian masukan tipe data character untuk variabel merek dengan elemen array-nya yaitu [3][7] yang meliputi {"Toyota", "Honda", "Suzuki"}; dan tipe data character untuk variabel bulan dengan elemen array [13][4] yang meliputi {"Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nop", "Des", "JML"};. Yang berarti char merek[3][7]  dan char bulan[13][4] termasuk array dimensi dua.
 
                    int i;
"clrscr()";
printf("PENJUALAN MOBIL BEKAS\n");
printf("\n");
printf("Kota : %s\n\n\t ",kota);
 
Yang berarti bahwa penggalan diatas adalah untuk penginputan statement yang akan menjalankan program. Untuk int i adalah variabel tipe data integer. Masukan printf("Kota : %s\n\n\t ",kota); untuk menampilkan kota apa saja yang menjadi tempat penjualan mobil bekas.
for(i=0; i<13; i++) , Menggunakan intruksi perulangan FOR, dimana FOR digunakan apabila kita mengetahui secara pasti banyaknya perulangan yang akan dilakukan. for(i=0; i<13; i++), yang berarti bahwa i sebagai nilai awal adalah 0, i<13 merupakan pembatas nilai akhir, sedangkan i++ itu adalah dimana nilai i akan ditambah sampai nilai i itu terpenuhi sampai batas akhir nilai i.       
 
                          printf("%s",bulan[i]);
for(i=0; i<3; i++)
printf("\n%s",merek[i]);
 
Dan juga masukan printf("%s",bulan[i]); untuk menampilkan bulan dari mulai januari-desember. Kemudian akan digunakan instruksi for lagi, dimana for(i=0; i<3; i++) yang berarti bahwa i sebagai nilai awal adalah 0, i<3 merupakan pembatas nilai akhir, sedangkan i++ itu adalah dimana nilai i akan ditambah sampai nilai i itu terpenuhi sampai batas akhir nilai i. Selanjutnya juga masukan printf("\n%s",merek[i]); untuk menampilkan merek mobil apa saja yang dijual yaitu Toyota, Honda, dan Suzuki. Dan untuk %s merupakan format penulisan dari tipe data charcter (char).
Selanjutnya inisiasi variabel yang digunakan adalah : int main()      
Penggalan : int jual[4][13][4] = {0}; //Merek, Bulan, Kota
isi_data(jual);
total_jual(jual);
return 0; 
}  
Yang berarti bahwa untuk pemasukan tipe data integer untuk variabel jual dengan jumlah elemennya yaitu [4][13][4] yang meliputi {0} dan ini termasuk array berdimensi tiga. Kemudian masukan isi_data(jual); dimana proses tersebut akan menjalankan function void isi_data(int jual[4][13][4]). Lalu masukan total_jual(jual); dimana proses ini akan menjalankan function void total_jual(int jual[4][13][4]), serta return 0; ini gunanya untuk mengembalikan nilai 0. Terakhir ditambah kurung kurawal tutup untuk mengakhiri statement dalam program ini.
PRAKTIKUM 3
                                                                 
Studi Kasus :
Dalam suatu kumpulan angka yang tidak beraturan kita diminta untuk mengurutkan dari mulai angka yang terkecil hingga yang terbesar, tipe data yang dapat menangani kasus ini yang efisien adalah tipe data array.
Script Program :
#include <stdio.h>
#include <conio.h>
void bubbleSort (int data[], int n)
{
            int i,temp, flag = 1;
            while (flag)
            {
                        flag = 0;
                        for (i = 0; i < n; i++)
                        {
                                    if (data [i] > data [i+1])
                                    {
                                                temp = data [i];
                                                data [i] = data [i + 1];
                                                data [i + 1] = temp;
                                                flag++;
                                                }
                                    }
                        }
            }
            main ()
{
            int data [1000];
            int n, i;
            printf ("______.::BUBBLE SORT ::._______\n");
            printf ("masukan angka (mask 1000)");
            scanf ("%d", &n);
            printf ("Data angka dengan spasi : ");
            for (i = 0; i<n; i++)
            scanf ("%d", &data[i]);
            bubbleSort(data, n);
            printf ("\nOutput after sort : \n");
            for (i = 0; i < n; i++)
            printf ("%d", data[i]);
            getch ();
            return 0;
}  
Hasil Running :

Analisis Program :
Program pada praktikum 3 ini setelah berhasil dieksekusi merupakan sebuah program untuk menampilkan pengurutan angka yang terkecil sampai terbesar, dan tipe data yang digunakan adalah tipe data array. Menggunakan function yang merupakan sejumlah instruksi yang dikelompokan menjadi satu, dan berdiri sendiri untuk menyelasikan suatu pekerjaan tertentu. Menggunakan file header stdio.h dan conio.h.
Maksud dari void bubbleSort(int data[], int n)
Adalah fungsi bubble sort untuk tipe data integer data dengan array, dan tipe data integer n. Dimana Bubble Sort ini biasa digunakan untuk mengurutkan nilai dari terkecil ke nilai terbesar, atau sebaliknya.   
 
                    int i, j=0, temp, flag = 1;
while(flag)
{  
flag = 0;
 
Setelah itu masukan tipe data integer untuk variabel i, j=0, temp, dan flag=1. Kemudian menggunakan struktur perulangan while. Masukan while(flag) merupakan kondisi pertama, jika flag=0,
Maka akan dilanjutkan dengan proses perulangan FOR dimana :  for(i=0; i<n; i++)
yang berarti bahwa variabel i sebagai nilai awal adalah 0, i<n merupakan pembatas nilai akhir, sedangkan i++ itu adalah dimana nilai i akan ditambah sampai nilai i itu terpenuhi sampai batas akhir nilai i.
Penggalan : if(data[i]>data[i+1])
{
 temp = data[i];
data[i] = data[i+1];
data[i+1] = temp;
flag++;
Apabila data dengan array i lebih besar dari data dengan array i+1 (if(data[i]>data[i+1])) maka akan dilanjutkan dengan proses dalam rumus yaitu temp = data[i]; data[i] = data[i+1]; data[i+1] = temp; flag++; setelah itu akan di cek kondisi pada while, apakah flag sudah terpenuhi, apabila kondisi bernilai salah maka perulangan dihentikan, namun apabila kondisi bernilai benar maka perulangan terus dilakukan.
Selanjutnya inisiasi variabel yang digunakan adalah main()
 
 
                   int data[1000];
int n, i;
printf("_________.:: BUBBLE SORT ::._________\n\n");
printf("Masukan Angka (maks 1000): ");
scanf("%d",&n);
printf("Data (Pisahkan angka dengan spasi): ");
 
 
Adalah tipe data integer untuk variabel data dengan elemen array-nya yaitu 100, kemudian masukan tipe data integer untuk variabel n, dan i. Printf() dan scanf() merupakan fungsi keluaran dan fungsi masukan dari file header <stdio.h>. Kemudian printf("Masukan Angka (maks 1000): "); yang akan diproses oleh scanf("%d",&n); dimana %d ini merupakan format penulisan dari tipe data integer. Kemudian masukan printf("Data (Pisahkan angka dengan  
Kemudian menggunakan instruksi perulangan FOR yaitu :  for(i=0; i<n; i++) dengan dimana bahwa i sebagai nilai awal adalah 0, i<n merupakan pembatas nilai akhir, sedangkan i++ itu adalah dimana nilai i akan ditambah sampai nilai i itu terpenuhi sampai batas akhir nilai i.
 
                    scanf("%d",&data[i]);
bubbleSort(data, n);
printf("\nOutput After Sort:\n");
for(i=0; i<n; i++)
printf("%d",data[i]);
getch();
return 0;
}
 
Lalu, setelah itu maka akan diproses oleh fungsi masukan yaitu scanf("%d",&data[i]); Tahapan terakhir yaitu program yang dimaksud untuk megurutkan angka terkecil ke angka terbesar dari angka yang akan dimasukkan kita masukan bubbleSort(data, n); lalu hasilnya akan disimpan dan di proses oleh for(i=0; i<n; i++) , printf("%d",data[i]);
Ditambahkan fungsi getch(); untuk menahan tampilan pada saat dirunning agar kelihatan rapi. Dan juga ditambah fungsi return 0; untuk mengembalikan nilai 0, dan kurung kurawal tutup untuk mengakhirinya statement dalam program.
LATIHAN 1
Studi Kasus :
Terdapat beberapa nilai masukan yang akan diolah, semua nilai berupa integer dari semua nilai yang dimasukan terdapat nilai terbesar dan nilai terkecil, setiap data yang diinput disimpan dalam variabel array, perbaikilah program dibawah ini agar dapat menyelesaikan kasus diatas.
Setelah script berhasil diperbaiki :
Script Program
#include<iostream>
#include<conio.h>
int main()
{
            int max, n, i, min;
            float A[100];
            cout<<"\tPROGRAM NILAI TERBESAR DAN NILAI TERKECIL"<<endl;
            cout<<"\t========================================="<<endl;
            cout<<"Masukan Jumlah Data : ";
            cin>>n;
            for(i=1; i<=n; i++)
            {
                        cout<<"Masukan Bilangan Ke ["<<i<<"] : ";
                        cin>>A[i];
                        }
            for(i=1; i<=n; i++)
            {
                        if(i==1)
                        {
                                    min = A[i];
                                    max = A[i];
                                    }
                        else if(min>A[i])
                        {
                                    min = A[i];
                                    }
                        else if(max<A[i])
                        {
                                    max = A[i];
                                    }
            }
            cout<<endl;
            cout<<"Nilai Terbesar Adalah : "<<max<<endl;
            cout<<"Nilai Terkecil Adalah : "<<min<<endl;
            getch();
   return 0;
}
 
Hasil Running :

Analisis Program :   
File header yang digunakan yaitu iostream dan conio.h .
Penggalan script program :  int max, n, i, min;
                                 float A[100];
Dalam studi kasus bahwa semua nilai yang di inputkan berupa integer maka dengan penggalan script di atas bertipe data integer yang digunakan untuk variabel max, n, i, dan min dan juga menggunakan tipe data float yang digunakan untuk variabel A dengan array 100.
                   
                   cout<<"\tPROGRAM NILAI TERBESAR DAN NILAI TERKECIL"<<endl;
cout<<"\t========================================="<<endl;
cout<<"Masukan Jumlah Data : ";
cin>>n;
 
 
Kemudian untuk program nilai terbesar dan nilai terkecil ini kita menginput proses masukan cout<<"Masukan Jumlah Data : "; yang akan diproses oleh cin>>n;
                     for(i=1; i<=n; i++)
{
cout<<"Masukan Bilangan Ke ["<<i<<"] : ";
cin>>A[i];
}  
                                                                
Penggunaan instruksi perulangan FOR, dimana : for(i=1; i<=n; i++) yang berarti bahwa i sebagai nilai awal adalah 1, i<=n merupakan pembatas nilai akhir, sedangkan i++ itu adalah dimana nilai i akan ditambah sampai nilai i itu terpenuhi sampai batas akhir nilai i.
Lalu masukan cout<<"Masukan Bilangan Ke ["<<i<<"] : "; yang akan diproses oleh cin>>A[i];
Kemudian instruksi FOR lagi, dimana : for(i=1; i<=n; i++) yang berarti bahwa i sebagai nilai awal adalah 1, i<=n merupakan pembatas nilai akhir, sedangkan i++ itu adalah dimana nilai i akan ditambah sampai nilai i itu terpenuhi sampai batas akhir nilai i.
 
                                 if(i==1)
{   
            min = A[i];
            max = A[i];
            }
            else if(min>A[i])
            {                    
                        min = A[i];
                        }
            else if(max<A[i])
            {     
                        max = A[i];
                        }
            }
            cout<<endl;
            cout<<"Nilai Terbesar Adalah : "<<max<<endl;
            cout<<"Nilai Terkecil Adalah : "<<min<<endl;
            return 0;
}
 
Penggalan terakhir ini menggunakan struktur IF-ELSE, yaitu untuk menguji kondisi terpenuhi dan kondisi yang tidak terpenuhi. Terdapat tiga kondisi dari penggalan diatas, yaitu :
a.       Kondisi_1
Akan dijalankan bahwa jika i sama dengan 1 (if(i==1)) bernilai benar maka proses akan dihitung dengan rumus  min = A[i]; max = A[i]; tetapi jika kondisi bernilai salah maka else yang akan melaksanakan kondisi_2.
b.      Kondisi_2
Kondisi 2 akan dilaksanakan jika min lebih besar dari A dengan elemen array i (if(min>A[i])) bernilai benar maka akan dihitung dengan rumus min = A[i]; namun apabila kondisi bernilai salah, maka else yang akan menjalankan kondisi_3.
c.       Kondisi_3
Kondisi 3 berlaku dan akan dijalankan apabila max kurang dari A dengan elemen array i (if(max<A[i])) bernilai benar akan dijalankan deng

Komentar

Posting Komentar

Postingan populer dari blog ini

Modul 1 Praktikum Struktur Data

Modul 3 Praktikum Struktur Data

Modul 5 Praktikum Struktur Data