Lapak
-
Upload
asih-siti-sundari -
Category
Documents
-
view
222 -
download
3
description
Transcript of Lapak
IV. Tugas Praktikum
Program II.1 Mencari nilai Maksimum dan minimum
Listing
/*Program II.1 Mencari Nilai Maksimum dan Minimum*/
#include<stdio.h>
#include<conio.h>
main()
{
int i, N, A[15], max=0, min=1;
printf("Masukkan banyak bilangan (Maksimum 15) : ");scanf("%d", &N);
if(N<=15)
for(i=0; i<N; i++)
{
printf("Bilangan ke %d : ", i+1);scanf("%d", &A[i]);
if(A[i]<min) min = A[i];
else if(A[i]>max) max = A[i];
}
printf("Nilai maksimum adalah : %d\n", max);
printf("Nilai minimum adalah : %d", min);
getch();
}
Tampilan
Analisis
Program ini menentukan nilai maksimum dan minimum dari beberapa bilangan yang
diinput dari keyboard oleh pengguna menggunakan array 1 dimensi dengan jumlah
maksimal 15. Setelah dijalankan maka akan muncul tampilan untuk memasukkan
banyak bilangan yang akan diinput dari keyboard, setelah di enter maka akan muncul
nilai maksimum dan minimum dari bilangan yang diinput oleh pengguna.
II.2 Mengurutkan data secara naik (ascending) dan turun (descending)
menggunakan metode bubble short
Listing
/*Program II.2 Mengurutkan data secara naik (ascending) dan turun(descending)*/
#include <stdio.h>
#include <conio.h>
main()
{
int i, j, n, temp, A[15], x;
printf("Masukkan banyaknya data (Maksimum 15) : ");scanf("%d", &n);
if(n<=15)
//Ascending
for(i=1; i<=n; i++)
{
printf("Data ke %d : ", i);scanf("%d", &A[i]);
}
else
return main();
for(i=1; i<=n; i++)
{
for(j=n; j>=(i+1); j--)
{
if (A[j-1] > A[j])
{
temp=A[j-1];
A[j-1]=A[j];
A[j]=temp;
}
}
}
printf("\n");
printf("Data setelah diurutkan secara Ascending: ");
//Descending
for (i=1; i<=n; i++)
{
printf("%.d, ", A[i]);
}
for(i=1; i<=n; i++)
{
for(j=n; j>=(i+1); j--)
{
if (A[j-1] < A[j])
{
temp=A[j-1];
A[j-1]=A[j];
A[j]=temp;
}
}
}
printf("\n");
printf("Data setelah diurutkan secara Descending: ");
for (i=1; i<=n; i++)
{
printf("%.d, ", A[i]);
}
getch();
}
Tampilan
Analisa
Program ini akan menampilkan deretan nilai acak yang diinput oleh pengguna yang
kemudian akan diurutkan deretan bilangan tersebut secara naik (ascending) dan turun
(descending) dengan menggunakan salah satu metode mengurutkan data pada array
yakni bubble short. Dan jumlah maksimal elemen array pada program ini adalah 15.
IV. Tugas Praktikum
II.3 Menentukan nilai tengah (median) dari suatu kumpulan data
Listing
/*Program II.3 Menncari Nilai Median*/
#include <stdio.h>
#include <conio.h>
main()
{
int i, j, n, temp, A[15];
printf("Masukkan banyaknya data (Maksimum 15) : ");scanf("%d", &n);
if(n<=15)
//Ascending
for(i=1; i<=n; i++)
{
printf("Data ke %d : ", i);scanf("%d", &A[i]);
}
else
return main();
for(i=1; i<=n; i++)
{
for(j=n; j>=(i+1); j--)
{
if (A[j-1] > A[j])
{
temp=A[j-1];
A[j-1]=A[j];
A[j]=temp;
}
}
}
printf("\n");
printf("Data setelah diurutkan secara Ascending: ");
for (i=1; i<=n; i++)
{
printf("%.d, ", A[i]);
}
float a, b;
if (n%2 == 1)
{
b=A[(n)/2]+1;
printf("\n");
printf("Nilai Mediannya adalah :%.2f",b);}
if (n%2 == 0)
{ b=A[(n-1)/2]+A[n-1]/2.0;
printf("\n");
printf("Nilai Mediannya adalah : %.2f",b);}
getch();
}
Tampilan
Analisis
Pada Program ini kita akan menentukan nilai tengah (median) dari suatu data dengan
array 1 dimensi yang banyaknya elemen dari array tersebut beserta nilai setiap
elemennya diinput oleh pengguna. Data akan diurutkan terlebih dulu dengan
ascending setelah itu akan diambil nilai median dari urutan data tersebut.
II.3 Modifikasi Menentukan nilai tengah (median) dari suatu kumpulan data
Listing
/*Program II.3 Menncari Nilai Median*/
#include <stdio.h>
#include <conio.h>
main()
{
int i, j, n, temp, A[15];
printf("Masukkan banyaknya data (Maksimum 15) : ");scanf("%d", &n);
if(n<=15)
//Ascending
for(i=1; i<=n; i++)
{
printf("Data ke %d : ", i);scanf("%d", &A[i]);
}
else
return main();
for(i=1; i<=n; i++)
{
for(j=n; j>=(i+1); j--)
{
if (A[j-1] > A[j])
{
temp=A[j-1];
A[j-1]=A[j];
A[j]=temp;
}
}
}
printf("\n");
printf("Data setelah diurutkan secara Ascending: ");
for (i=1; i<=n; i++)
{
printf("%.d, ", A[i]);
}
float b;
if (n%2 == 1)
{
b=A[(n)/2]+1;
printf("\n");
printf("Nilai Mediannya adalah :%.2f",b);}
if (n%2 == 0)
{ b=A[(n-1)/2]+A[n-1]/2.0;
printf("\n");
printf("Nilai Mediannya adalah : %.2f",b);}
//Descending
for (i=1; i<=n; i++)
{
printf("%d, ", A[i]);
}
for(i=1; i<=n; i++)
{
for(j=n; j>=(i+1); j--)
{
if (A[j-1] < A[j])
{
temp=A[j-1];
A[j-1]=A[j];
A[j]=temp;
}
}
}
printf("\n");
printf("Data setelah diurutkan secara Descending: ");
for (i=1; i<=n; i++)
{
printf("%.d, ", A[i]);
}
float a;
if (n%2 == 1)
{
a=A[(n)/2]+1;
printf("\n");
printf("Nilai Mediannya adalah :%.2f",b);}
if (n%2 == 0)
{ a=A[(n-1)/2]+A[n-1]/2.0;
printf("\n");
printf("Nilai Mediannya adalah : %.2f",b);}
getch();
}
Tampilan
Analisa
Pada program ini adalah modifikasi dari program II.3 untuk mencari nilai tengah
(median) dengan menggunakan array 1 dimensi jika sebelum modifikasi pengurutan
data hanya dengan secara naik (ascending) maka dengan program modifikasi ini
pengurutan data ditambah dengan secara descending jadi nanti ada dua pengurutan
data, dengan banyaknya data atau elemen array beserta nilai dari setiap elemen array
diinput oleh pengguna. Setelah data diurutkan maka akan muncul nilai median setiap
urutan data.
V. Tugas Akhir
1. Buatlah program C untuk menghitung deret Fibonacci menggunakan array 1
dimensi
2. Buatlah program C untuk menampilkan deret Pascal menggunakan array 1
dimensi.
Jawab :
1. Program Deret Fibonacci
Listing
/*Program Tugas Akhir 1 - deret fibonacci dengan array*/#include<stdio.h>#include<conio.h>main(){ int i, n, A[15]; printf("Masukkan banyaknya data (Maksimum 15) : ");scanf("%d", &n); if(n<=15) for(i=1; i<=2; i++) { printf("Bilangan ke %d : ", i);scanf("%d", &A[i]); } else return main(); printf("Hasil Deret Fibbonaci : %d, %d, ", A[1], A[2]); for(i=3; i<=n; i++) { A[i]=A[i-2]+A[i-1]; printf("%d, ", A[i]); } getch(); }
Tampilan
Analisa
Pada Program ini kita akan menentukan deret Fibonacci dengan menggunakan
array 1 dimensi dimana banyaknya jumlah elemen array atau jumlah dari deret
Fibonacci beserta 2 nilai elemen awal di input oleh pengguna setelah diinput
maka akan muncul deret fibonaccinya.
2. Program Deret Pascal
Listing
/* Program Tugas akhir 2 - menentukan deret pascal*/#include<stdio.h>#include<conio.h>
int f(int N, int&l){ int k; l=1; for(k=1; k<=N; k++) l=k*l;}int kombinasi(int n, int r, int& komb){ int a, b, c; f(n,a);
f(r,b); f(n-r,c); komb=a/(b*c);}
main(){ int m,f,i,j,k,komb; printf("Jumlah Tingkat Segitiga Pascal : ");scanf("%d",&m); printf("\n"); for (i=1;i<=m;i++) { for(j=m;j>=i;j--) { printf(" "); } for(k=0;k<i;k++) { kombinasi(i-1,k,komb); printf("%2d ",komb); } printf("\n\n");} printf(" "); getch();}
Tampilan
Analisa
Pada Program ini akan menampilkan deret pascal dengan array 1 dimensi
dimana jumlah tingkat segitiga pascal akan ditentukan oleh pengguna itu
sendiri, setelah pengguna menginput jumlah tingkat segitiga pascal maka akan
muncul deret pascal. Program ini juga menggabungkan antara array 1 dimensi
dengan fungsi, dimana ada 2 fungsi yang didefinisikan yang letaknya di atas
program utama.
VI. Tugas Tambahan
Metode Pengurutan data dalam Array 1 dimensi, diantaranya adalah :
1. Quick sort
Pengurutan ini berprinsip pada devide dan conquer. Devide adalah suatu
langkah memilah masalah menjadi sub-masalah dalam proses rekursi, sedangkan
conquer proses menyelesaikan sub masalah tersebut, kemudian dilakukan pendekatan
terhadap masalah utama.
Metode quick sort adalah metode pengurutan yang menggunakan partisi. Pada
metode ini, data dibagi menjadi dua bagian, yaitu data disebelah kiri partisi selalu
lebih kecil dari data disebelah kanan. Namun data pada kedua partisi belum terurut,
sehingga untuk mengurutkannya, proses pengurutan dilakukan pada kedua partisi
secara terpisah. Selanjutnya, data di sebelah kiri dan kanan dipartisi lagi. Secara
singkat, prosedur partisi dapat dijabarkan sebagai berikut:
1. Pilih satu data sebarang sebagai data partisi, misalkan x.
2. Baca data dari ujung kanan ke kiri sampai ditemukan data a[i] sehingga a[i] < x.
(partisi kiri).
3. Baca data dari ujung kiri ke kanan sampai ditemukan data a[j] sehingga a[j] >= x.
(partisi kanan).
4. Tukar kedua data a[i] dan a[j].
5. Ulangi proses di atas sampai seluruh data terbagi dua bagian kiri yang lebih kecil
dari x dan kanan yang lebih besar dari x.
Prinsip dasar dari quicksort adalah melakukan partisi dari data, dalam dua
bagian. Kemudian secara rekursif melakukan sorting pada kedua bagian data tersebut.
Algoritma quicksort adalah sebagai berikut:
1. Tentukan unsur partisi yang diperlukan (gunakan data tengah sebagai unsur
partisi).
2. Partisi data dalam dua bagian yang dipisahkan oleh unsur partisi.
3. Secara rekursif sort terhadap kedua bagian data diatas dengan dengan metode
partisi (ulangi langkah 1 dan 2 untuk data sebelah kiri dan kanan).
2. Insertion sort
Insertion adalah pengurutan data yang dilakukan dengan cara membandingkan
data ke I (dimana I itu dimulai dari data kedua sampai dengan data terakhir) dengan
data berikutnya. Jika ditemukan data yang lebih kecil maka data tersebut disisipkan
ke depan sesuai dengan posisi yang seharusnya.
Algoritma pengurutan ini memilah data yang diurutkan menjadi dua bagian.
Yang belum terurut (meja pertama) dan yang telah diurut (meja kedua). Elemen yang
pertama diambil dari bagian array yang belum diurutkan, kemudian diletakkan pada
posisi sesuai dengan bagian lain dari array yang telah diurutkan. Langkah tersebut
diulang hingga tidak ada lagi elemen yang tersisa pada meja pertama yang belum
terurut.
3. Selection sort
Merupakan Kombinasi antara sorting dan searching. Metode selection sort
merupakan perbaikan dari metode bubble sort dengan mengurangi jumlah
perbandingan. Selection sort merupakan metode pengurutan dengan mencari nilai
data terkecil dimulai dari data diposisi 0 hingga diposisi N-1. Jika terdapat N data dan
data terkoleksi dari urutan 0 sampai dengan N-1. Selama proses, perbandingan dan
pengubahan, hanya dilakukan pada indeks permbandingnya saja, pertukaran data
secara fisik terjadi pada akhir proses.sesuai dengan itu maka algoritma pengurutan
data secara Selection adalah sebagai berikut :
1. Cari data terkecil dalam interval j = 0 sampai dengan j = N-1
2. Jika pada posisi pos ditemukan data yang terkecil, maka tukarkan data
diposisi pos dengan data di posisi i jika k.
3. Ulangi langkah 1
4. Merge sort
Merge sort merupakan salah satu teknik sorting yang mengurutkan suatu data dengan
cara penggabungan. Merge sort juga menggunakan proses divide dan conquer pada
rekursi. Algoritma ini tediri dari dua bagian utama, yaitu bagian pembagian list
menjadi sublist-sublist yang lebih kecil dan bagian sort (pengurutan) dan merge
(penggabungan) pada sublist-sublist tersebut.
1) Divide: membagi masalah menjadi beberapa submasalah yang memiliki
kemiripan dengan masalah semula namun berukuran lebih kecil (idealnya berukuran
hampir sama),
2) Conquer: memecahkan (menyelesaikan) masing-masing submasalah (secara
rekursif), dan
3) Combine: mengabungkan solusi masing-masing submasalah sehingga
membentuk solusi masalah semula.
Kesimpulan
Dari praktikum ini dapat disimpulkan bahwa Array adalah suatu variabel yang
merepresentasikan kumpulan data yang memiliki tipe data yang sama, dimana setiap
data menempati alamat memori yang berbeda yang disebut elemen array, sementara
untuk mengakses nilai dari suatu elemen array disebut indeks array dan selalu diawali
angka 0 pada bahasa C. Terdapat beberapa tipe array, seperti array konstan dimana
nilai sudah ditetapkan atau sudah diinisialisasi, array sebagai parameter dimana
berguna untuk membuat fungsi pencarian data dalam array, pencarian data dalam
elemen array, pengurutan pada elemen array. Sementara metode pengurutan data
tersebut diantaranya ada metode bubble sort dimana setiap elemen array dari yang
paling ujung dibandingkan dengan nilai elemen yang sebelumnya, dalam metode ini
ada 2 jenis pengurutan, yaitu ascending dan descending, dan ada juga metode
maksimum-minimum dimana nilai maksimum atau minimum disimpan ke bagian
ujung array (elemen pertama atau terakhir) lalu elemen diikat dan tidak diikutkan lagi
dalam proses selanjutnya.
Jadi array 1 dimensi dalam berbagai macam pengolahan data seperti mengurutkan
data, mencari nilai maksimum-minimum dapat digunakan dan penggabungan fungsi
dalam pengolahan data menggunakan array juga dapat dilakukan.