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;
}
{
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.
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;
}
{
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
sudah diperiksa
BalasHapus