Search This Blog

Thursday 25 August 2016

Searching nilai minimum dan maksimum

Setelah sebelumnya kita membahas tentang pencarian jumlah dari karakter sesuai antara inputan dengan yang terdapat dalam variabel array serta mencari indeks dari sebuah karakter dalam array, kali ini akan dibahas mengenai cara mencari nilai maksimum dan minimum dalam variabel array dengan menggunakan metode perulangan dan selection seperti pada program sebelumnya. Dalam program kali ini kita hanya menambahkan sedikit lagi perintah untuk menyeleksi setiap nilai yang terdapat dalam elemen array. Dan untuk mencari nilai maksimum serta minimum tentunyna kita akan menggunakan tipe data integer, karena dengan tipe data integer maka angka-angka yang terdapat didalam indeks array dapat dihitung dan dibandingkan bobot dari setiap nilainya. Serta untuk variabel yang akan diisikan nilai maksimum itu sendiri sebelum diproses harus diberi nilai awal terlebih dahulu. Nilai awal dapat diisikan seperti biasa, misal kita menggunakan variabel dengan nama "max", maka max dapat diberi nilai awal max=0 atau berapapun angkanya yang pasti diusahakan angka terendah dan tidak lebih besar dari nilai yang ada dalam variabel array. Namun untuk penulisan inisialisasi yang langsung dengan angka seperti itu penulis sarankan lebih baik manggunakan max=0 atau dengan kata lain max diberi nilai awal 0, karena dikhawatirkan pada saat max diberi nilai awal (misal) 10 dan ternyata user hanya menginputkan nilai antara angka 1 sampai dengan 5, dengan demikian user tidak menemukan nilai maksimal dari inputannya, karena yang akan tercetak ke layar nilai maksimalnya ialah 10 (nilai awal yang ternyata lebih besar dari nilai yang diinputkan. Selain penggunaan nilai awal dengan angka langsung, pada program kali ini dapat pula memberi nilai awal dengan indeks. Bagaimana maksudnya? Ialah dengan memberi nilai awal seperti A[0] atau indeks lainnya, dengan demikian pembuat program tidak harus membingungkan lagi akan nilai awal yang harus ditentukan.

Setelah kita membahas algoritma dasar untuk membuat program pencari nilai minimum dan maksimum tersebut, alangkah lebih baik jika kita memahami bentuk dasar dari program tersebut. Karena dengan contoh, maka pembahasan akan lebih dirasa nyaman. Yang pasti jika hanya mengandalkan kata-kata pembahas tanpa adanya contoh, tentu hanya akan membuat pusing dan menimbulkan banyak pertanyaan, apa yang dimaksud dari bahasan tersebut?, oleh karena itu, berikut ini contoh program dasar dari untuk searching nilai minimum dan maksimum dengan pemrograman c:
Mencari nilai maksimum

#include<stdio.h>
main(){
int s, T[5]={1,24,97,100,22}, max=T[0];

for(s=0; s<5; s++){
if(T[s]>max){
max=T[s];
}
}
printf("Nilai maksimumnya adalah: %3i", max);
}
Mencari nilai minimum

#include<stdio.h>
main(){
int s, T[5]={1,24,97,100,22}, min=T[0];

for(s=0; s<5; s++){
if(T[s]<min){
min=T[s];
}
}
printf("Nilai minimumnya adalah: %3i", min);
}
Mari kita bahas untuk contoh program diatas. Dalam kedua contoh program diatas sungguh algoritmanya sama, hanya tinggal mengubah tanda lebih dari menjadi kurang dari. Karena pada dasarnya kedua program itu mengandung proses yang sama, hanya saja untuk nilai maksimum yang dicari ialah nilai yang paling tinggi, maka yang diseleksipun setiap kali angka yang lebih tinggi dari angka yang ditemukan pada perulangan sebelumnya. Dan seperti yang sudah dibahas sebelumnya bahwa yang dilakukan pertama ialah inisialisasi dan deklarasi. Dalam program diatas tidak ada inputan dari user serta nilai awal dari variabel arraynya pun sudah ditentukan, maka dari itu yang akan diseleksi nanti adalah nilai yang sudah ditentukan tersebut. Dan selain variabel array, disana terdapat inisialisasi variabel yang akan menjadi patokan atau menampung nilai maksimum/minimum dari hasil prosesnya nanti. Dan inisialisasi yang dilakukan ialah menggunakan metode nilai awal dari indeks pertama, dan sekali lagi, indeks pertama adalah nol bukan satu. Maka dalam program diatas terlihar bahwa min/max=T[0], yang artinya nilai minimum dan maksimum pertama kali diberi nilai awal yang diambil dari indeks ke 0 sebelum akhirnya diproses lebih lanjut lagi.

Setelah deklarasi dan inisialisasi dilakukan, kita melihat program langsung menuju perulangan, dimana dalam perulangan tersebut terdapat selection, yang mana statement didalamnya hanya ada statement true nya. Dan statement tersebut hanya akan diproses/dijalankan ketika angka yang ada dalam indeks pada perulangan lebih besar dari angka sebelumnya, baik itu angka yang ditemukan program dalam perulangan sebelumnya maupun angka yang sudah ditentukan dalam nilai awalnya. If(T[s]>max) dan if(T[s]<min) tersebut maksudnya ialah jika T pada indeks saat perulangan lebih dari max maka program akan menjalankan statement true yang ada didalamnya, begitupun sebaliknya untuk mencari nilai minimum. Maksud dari indeks saat perulangan sendiri ialah seperti misalnya pada perulangan pertama, maka nilai variabel s tersebut ialah indeks ke 0 dan T ke s (ditulis T[s] ) berisi nilai yang terkandung dalam indeks ke 0 tersebut. Selanjutnya akan di cek apakah pada indeks ke nol lebih besar dari nilai yang terkandung dalam variabel max. Begitupun pada perulangan berikutnya, pada perulangan kedua maka variabel s akan mengandung indeks ke 1 serta T ke s akan mengandung nilai yang ada dalam indeks ke 1 tersebut, dengan demikian akan ada pengecekan apakah nilai tersebut lebih besar dari max. Jika memang pada perulangan sebelumnya max tidak mengalami perubahan (nilai dalam index ke 0 tidak lebih besar dari max) maka nilai max tidak berubah, dan nilai yang ada pada T dalam indeks ke 1 akan dibandingkan dengan nilai awal max tersebut. Begitupun sebaliknya, andai nilai max sudah mengalami perubahan, maka dalam selection tersebut tidak akan membandingkan dua kali antara nilai awal max dengan perubahan tersebut, karena pada proses sebelumnya nilai max sudah berubah dengan sendirinya pada saat ditemukan angka yang melebihi nilai awalnya, dengan demikian T pada indeks ke 1 hanya tinggal dibandingkan dengan nilai max (nilai barunya). Dan begitupun dengan proses/alur untuk seleksi nilai minimum, proses yang dilakukan tidak jauh berbeda, hanya saja dalam pencarian nilai minimum yang akan diambil dan dimasukan pada variabel max ialah nilai-nilai yang ditemukan lebih kecil pada setiap perulangan yang dilakukan.

Pada program diatas kita hanya membahas mengenai proses seleksinya saja, tanpa ada inputan dari user karena nilai dalam variabel array sudah ditentukan sebelumnya. Tapi bukan berarti untuk menginput karakter dari user sama seperti pada program-program sebelumnya, karena pada program sebelumnya user hanya mencari nilai yang ada dalam variabel array, yang artinya pada variabel array itu sendiri sudah diberi nilai awal pada sebelumnya, dan user sudah bebas untuk menginput karakter dalam memastikan apakah ada atau tidak karakter yang diinputkannya tersebut dalam elemen array. Lalu bagaimana untuk variabel array yang hanya terdeklarasi dan isinya masih kosong? Semua itu akan dibahas disini, dimana untuk nilai yang yang ada dalam elemen array tersebut ialah hasil inputan dari user, dan tugas program ialah membantu user menentukan nilai tertinggi dan terendah dari inputannya tersebut. Untuk contoh perogramnya, mari perhatikan berikut ini:

#include<stdio.h>
main(){
int e, U[5], maksimum;
printf("Masukan 5 angka yang ingin dicari nilai maksimumnya: \n\n");

for(e=0; e<5; e++){
scanf("%i", &U[e]);
}
maksimum=U[0];

for(e=0; e<5; e++){
if(U[e]>maksimum){
maksimum=U[e];
}
}
printf("\nNilai maxnya: %3i", maksimum);
}

Untuk proses pencarian nilai minimum dan maksimum sudah dibahas diatas, namun pada kali ini yang perlu dijelaskan ialah proses untuk mencari nilai maksimum dan minimum yang diinputkan user, dimana yang paling utama untuk dibahas ialah proses inputnya, mengapa pada contoh program diatas inputannya dilakukan didalam perulangan? Karena untuk mengisi variabel array tidak hanya dilakukan dengan sekali menekan tombol enter. Dalam contoh program tersebut, ada sebuah variabel array yang berisikan 5 elemen yang masih kosong, dan user diminta untuk mengisi kelima elemen tersebut melalui input dari keyboard. Maka dengan demikian proses input dilakukan secara berulang (dengan perulangan) selama 5 kali perulangan, hingga semua elemen array dapat terisi. Dan setelah semua elemen tersebut terisi, maka program baru dapat menyeleksi nilai maksimum yang dicari.

Selain itu, ada sedikit tambahan, mengapa untuk mencetak hasil dari proses pencarian nilai maksimum dipisahkkan dari proses lainnya setelah perulangan dilakukan? Karena apabila program cetak tersebut dilakukan dalam perulangan, maka pada setiap kali dalam perulangan program menemukan angka yang lebih besar dari nilai awalnya, maka program akan mencetak semua itu hingga perulangan selesai. Serta dalam program inputan ini mengapa inisialisasi variabel max / maksimum dilakukan setelah inputan? Karena pada proses deklarasi, isi dari variabel array masih kosong / tidak jelas. Dan untuk menentukan U ke 0 pun tidak jelas jadinya, berbeda dengan setelah inputan, isi variabel array sudah ada dan U ke 0 sudah jelas. Kecuali jika nilai awalnya ditulis U=0, maka penulisan tersebut dapat dilakukan sebelum inputan (karena tidak mengandalkan isi variabel array).

No comments:

Post a Comment