• Tidak ada hasil yang ditemukan

LAPORAN PRAKTIKUM III SEARCHING INDONESIA

N/A
N/A
Protected

Academic year: 2018

Membagikan "LAPORAN PRAKTIKUM III SEARCHING INDONESIA"

Copied!
26
0
0

Teks penuh

(1)

LAPORAN PRAKTIKUM III

SEARCHING

Disusun untuk Memenuhi Matakuliah Praktikum Algoritma dan Struktur Data Dibimbing oleh Ibu Triyanna Widiyaningtyas

Oleh:

Nama : Musfiratus Solehah

Nim : 150533602144

S1 PTI OFF-C 2015

UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK

JURUSAN TEKNIK ELEKTRO

(2)

SEARCHING

Tujuan :

1. Mahasiswa dapat melakukan perancangan aplikasi menggunakan struktur Searching (Pencarian).

2. Mahasiswa mampu melakukan analisis pada algoritma Searching yang dibuat. 3. Mahasiswa mampu mengimplementasikan algoritma Searching pada sebuah

aplikasi secara tepat dan efisien.

4. Mahasiswa mampu menjelaskan mengenai algoritma Searching.

5. Mahasiswa mampu membuat dan mendeklarasikan struktur algoritma Searching. 6. Mahasiswa mampu menerapkan dan mengimplementasikan algoritma Searching.

Latihan Praktikum I

Permasalahan : Percobaan Program Sequential Search: mencoba, membuat, menampilkan sebuah program Searching.

Compiler : MinGW Developer Studio

Script program : #include <stdio.h>

int cari (int data[], int n, int k) {

int posisi, i, ketemu; if (n <= 0)

while ((i <= n-1) && (!ketemu)) if (data[i] == k)

printf ("\tMetode Sequentian Search\n\n"); printf ( "Data : 12, 13, 19, 27, 28\n\n");

(3)

return 0; }

Output Program :

Algoritma : 1. Start.

2. Membaca file header. 3. Membaca fungsi cari. 4. Membaca Data.

5. Mencari posisi “19” berada di index ke berapa. 6. Tampilkan hasil.

7. Finish.

Penjelasan Program :

Program diatas dibuat untuk mencari posisi dari “19” dari elemen-elemen Data : 12, 13, 19, 27, 28. Mencari index angka 19 dimulai dari data yang paling awal yaitu dimulai pada index ke-0 hingga index dari angka 19 ditemukan, kemudian program akan menampilkan hasil dan program selesai.

Latihan Praktikum II

Permasalahan : Percobaan Program Binary Search: mencoba, membuat, menampilkan sebuah program Binary Searching.

Compiler : MinGW Developer Studio

Script program : #include <stdio.h> #include <string.h>

(4)

int i, posisi, panjang; i=0;

posisi = -1;

panjang = strlen (st);

while ((i < panjang-1) && posisi == -1) {

if (st[i] == m) posisi = i; i++;

}

return posisi; }

int main () {

printf ("\t Metode Binary Search\n\n"); char kalimat[] = "Teknik Informatika"; char dicari = 'm';

printf ("\nPosisi %c dalam string %s berada pada index ke- [%d]", dicari,kalimat, poskar (kalimat, dicari));

dicari ='n';

printf ("\nPosisi %c dalam string %s berada pada index ke- [%d]",dicari,kalimat, poskar (kalimat, dicari));

return 0; }

Output Program :

Algoritma : 1. Start.

2. Mendeklarasikan fungsi-fungsi. 3. Membaca data.

(5)

6. Finish.

Penjelasan Program :

Program tersebut dibuat untuk menemukan index dari huruf m dan huruf n. pencarian ini berbeda dengan latihan 1 karena pada program ini kita tidak mencari dari awal melainkan menentukan nilai tengah dulu kemudia data akan dibagi menjadi 2 yaitu posisi kanan dan posisi kiri. Setelah itu dicari posisi m pada posisi kiri terlebih dahulu setelah itu akan dilanjutkan pada posisi kanan. Begitu juga dengan pencarian n, program ini lebih cepat dibandingkan dengan program sebelumnya karena pencarian dilakukan dengan 2 bagian. Apabila index dari m dan n ditemukan program akan menampilkan hasil dan program selesai.

Latihan Praktikum III

Permasalahan : Percobaan Program Fibonacci Search: mencoba, membuat, menampilkan sebuah program Fibonacci Searching.

Bahasa Pemrogramam : C++

Compiler : MinGW Developer Studio

Script program : #include <stdio.h> #include <conio.h> #include <iostream> using namespace std;

int main(){

int i,j,F0,F1, Fibo, n, m, N, Flag, x; int FK, FK1, FK2, FK3, s,p,q,t;

int A[10]={8,15,21,28,31,37,39,46,48,50}; int FIBO[8];

cout<<"\tMetode Fibonacci Search\n\n"; cout<<"Data : ";

for(x=0;x<10;x++) {

cout<<A[x]<<" "; n=9;

F0=1; F1=1; Fibo=1; j=1;

}

while(Fibo<=n+1) {

(6)

Fibo = F0+F1; F0=F1; F1=Fibo;

printf("\n\nMasukkan data yang ingin dicari : "); scanf("%d",&N);

if(N>A[i])i=i+m; Flag=0;

while(i!=0 && Flag==0){ if(N==A[i])

(7)

Output Program :

Algoritma : 1. Start.

2. Membaca fungsi-fungsi.

3. Menampilkan data : 8 15 21 28 31 37 39 46 48 50. 4. Inputkan data yang ingin dicari.

5. Memproses data yang diinputkan kedalam data-data yang telah dideklarasikan sebelumnya.

(8)

Penjelasan Program :

Pada program diatas dibuat untuk mencari data dari data-data yang telah dideklarasikan, data yang diinputkan termasuk didalam data-data yang telah dideklarasikan atau tidak. Pertama user diminta untuk menginputkan data yang ingin dicari, setelah itu program akan memproses inputan tersebut dan mencarinya didalam data-data yang telah dideklarasikan sebelumnya. Jika ditemukan maka program akan menampilkan data ditemukan, apabila data yang diinputkan tidak ada dalam data-data deklarasi maka program akan menampilkan data tidak ditemukan. Program selesai.

Latihan Praktikum IV

Permasalahan : Percobaan Program Interpolation Search: mencoba, membuat, menampilkan sebuah program Interpolation Searching.

Bahasa Pemrogramam : C++

Compiler : MinGW Developer Studio

Script program : #include <iostream> #include <math.h> using namespace std;

int main() {

int data[10]={9,17,24,25,36,49,52,54,59,60}; int low, high, cari, posisi;

float posisi1; int N=10,tanda=0; low=0; high=N-1;

cout<<"\tMetode Interpolation Search\n\n";

cout<<"Data : 9, 17, 24, 25, 36, 49, 52, 54, 59, 60\n"; cout<<"\nMasukkan data yang dicari : ";

cin>>cari; do

{

posisi = (cari-data[low])/(data[high]-data[low])*(high-low)+low; //posisi=floor(posisi1); //pembulatan kebawah

(9)

while(cari>=data[low] && cari<=data[high]); {

if(tanda==1)

cout<<"\n\nData ditemukan\n"; else

cout<<"\n\nData tidak ada\n"; }

}

Output Program :

Algoritma : 1. Start.

2. Membaca fungsi. 3. Mendeklarasikan data. 4. Input data yang dicari.

5. Memproses data dengan do while.

6. Menampilkan data. Data ditemukan / data tidak ditemukan. 7. Finish.

(10)

Program diatas sama dengan program sebelumnya hanya saja cari pencarian datanya berbeda yaitu dengan menggunakan metode Interpolation search. Metode Interpolation search yaitu pencarian sebuah elemen dalam array satu dimensi perkiraan secara interpolasi, dimana data harus diurutkan terlebih dahulu. Data-data yang dideklarasikan telah urut sehingga proses pencarian dapat langsung dilakukan. Setelah program menemukan hasilnya maka akan ditampilkan data yang diinputkan merupakan data dari kumpulan data-data yang telah dideklarasikan atau tidak. Jika ya akan ditampilkan data ditemukan, apabila tidak menampilkan data tidak ditemukan, program selesai.

Tugas Praktikum I

Permasalahan : Buatlah sebuah program untuk melakukan pencarian data berupa posisi terkanan dari suatu bilangan yang dicari dalam array satu dimensi.

Bahasa Pemrogramam : C++

Compiler : MinGW Developer Studio

Script program : #include <iostream.h> #include <stdio.h>

int poskar (int st[], int m) {

int i, posisi, panjang,n=1;

i=9;

panjang = 10; while((i>0))

int kalimat[10] ={6,7,3,5,1,7,9,6,5,8}; int dicari;

cout<<"\nMencari Posisi Terkanan Bilangan dalam Array\n"; cout<<"\nData : 6 7 3 5 1 7 9 6 5 8\n";

(11)

cin>>dicari;

printf("\nPosisi terkanan bilangan %d berada pada index ke- %d ", dicari,poskar(kalimat, dicari));

return 0; }

Output Program :

Algoritma : 1. Start.

2. Deklarasi array dan variable.

3. Deklarasi kumpulan data : 6 7 3 5 1 7 9 6 5 8. 4. Inputan data yang dicari.

5. Memproses pencarian data menggunakan perulangan while int i, posisi, panjang,n=1;

i=9;

panjang = 10; while((i>0)) {

if(st[i] == m) {

posisi =n; i=0; }

n++; i--; }

return posisi;

6. Tampilkan hasil.data ditemukan / data tidak ditemukan. 7. Finish.

Penjelasan Program :

(12)

proses membandingkan data yang diinputkan dengan kumpulan data-data yang telah dideklarasikan. Jika data yang dibandingkan sama maka program akan menampilkan hasil data ditemukan, sedangkan jika data yang dibandingkan tidak ada yang seusai dengan kumpulan data maka program akan menampilkan data tidak ditemukan. Program selesai.

Tugas Praktikum II

Permasalahan : Buatlah sebuah program untuk menghitung jumlah suatu bilangan dalam sebuah array satu dimensi yang berisi n buah elemen.

Bahasa Pemrogramam : C++

Compiler : MinGW Developer Studio

Script program : #include <stdio.h> #include <iostream.h>

int main() {

int data[10]={4,5,3,5,1,7,9,6,5,8}; int i, cari, counter=0;

printf ("Menghitung Jumlah Bilangan dalam Array\n\n"); printf ("Data : 4 5 3 5 1 7 9 6 5 8\n\n");

cout<<"\nMasukan data yang dicari:"; cin >>cari;

for (i=0; i<=10; i++) {

if(data[i]==cari) {

counter++; }

}

printf ("\nJumlah bilangan %i dalam array adalah : %i", cari, counter); }

(13)

Algoritma : 1. Start.

2. Membaca fungsi.

3. Deklarasi kumpulan data. 4. Menginputkan data yang dicari.

5. Memproses inputan yang dicari kedalam kumpulan data : for (i=0; i<=10; i++)

{

if(data[i]==cari) {

counter++; }

}

6. Tampilkan hasil. 7. Finish.

Penjelasan Program :

Progam diatas dibuat digunakan untuk mencari banyaknya data yang diingnkan didalam kumpulan data-data. Pertama user diminta untuk menginputkan data yang ingin dicari, setelah itu program akan memproses data inputan ke dalam kumpulan data-data yang telah dideklarasikan, dari index awal sampai index terakhir. Setelah itu program akan menghitung banyaknya data yang diinputkan didalam kumpulan data. Hasil ditampilkan dan program selesai.

Tugas Praktikum III

Permasalahan : Buatlah sebuah program yang dapat melakukan pencarian karakter dalam kalimat string, kemudian hasil pencarian karakter tersebut diubah menjadi karakter lain dan ditampilkan.

Bahasa Pemrogramam : C++

(14)

Script program : #include <stdio.h> #include <iostream.h> #include <conio.h> int main()

{

char i[20],b;

printf("\nMengganti Karakter huruf menjadi huruf besar"); printf("\n\n Masukkan sebuah kalimat : ");

gets(i);

printf("\n\n Masukkan karakter yang akan diubah : "); scanf("%c",&b);

printf("\n\n Kalimat : %s",i); for(int a=0;a<strlen(i);a++)

if(i[a]==b)

i[a]=toupper(i[a]); printf("\n\n Menjadi : %s",i); }

Output Program :

Algoritma : 1. Start.

2. Membaca fungsi. 3. Menginputkan kalimat.

4. Menginputkan karakter yang akan diubah.

5. Memproses data dengan perulangan, sequential search. for(int a=0;a<strlen(i);a++)

if(i[a]==b)

(15)

7. Finish.

Penjelasan Program :

Progam diatas dibuat menggunakan mengganti karakter pada kalimat yang diinputkan. Pertama user diminta untuk menginputkan kalimat, setelah itu menginputkan karakter yang akan diganti. Kemudian program akan memproses inputan menggunakan perulangan dan sequential search. Terakhir program akan menampilkan hasil dan program selesai.

Tugas Praktikum IV

Permasalahan : Buatlah sebuah program untuk melakukan pencarian nama dari beberapa daftar namadalam array yang disediakan, kemudian tampilkan nama-nama yang didalamnya mengandung nama yang dicari

Bahasa Pemrogramam : C++

Compiler : MinGW Developer Studio

Script program : #include <stdio.h>

#include <iostream> #include <string> using namespace std; int main()

{

int a,jml;

char nama[5][15]={"ayuningtyas","ayung","rahayu", "bayu","diah"}; char d[15];

printf("\n\tProgram Pencarian Nama"); printf("\n\n Daftar nama : ");

for(a=0;a<5;a++)

cout<<nama[a]<<", ";

printf("\n\n Nama yang mengandung : "); scanf("%s",&d);

for(int b=0;b<=strlen(nama[a])-jml; b++) {

for(int c=0;c<jml;c++) {

(16)

{

if(c==jml-1) {

cout<<"\n\n "<<nama[a]; b=0; a++;

if(a<4)

goto found; else

return 0; }

} else

break; }

} }

}

Output Program :

Algoritma : 1. Start.

2. Membaca fungsi dan tipe data. 3. Membaca dan menampilkan array.

4. Inputkan Nama yang dicari (kandungan kata saja). 5. Deklarasi jml=strlen(kw).

6. Kondisi Perulangan for.

(17)

9. Menampilkan hasil. 10.Finish.

Penjelasan Program :

Program tersebut digunakan untuk mencari kata yang telah kita inputkan sebelumnya, dengan mencari indeks yang telah ada pada array, setiap kata yang mengandung unsure yang sama dengan kata yang diinputkan oleh user maka kata yang telah diinputkan sebelumnya akan ditampilkan. Program selesai.

Tugas Rumah Permasalah :

Bahasa Pemrogramam : C++

Compiler : MinGW Developer Studio

Script program : #include <stdio.h>

#include <conio.h> #include <windows.h> struct dt

{

char nm[50], kd[8]; int hg,st; }; dt barang[10];

int te(int *t); int ratabeli(int t); int main(){

int pil,lop,a=0,b=0; do

{

system("cls");

(18)

printf("\n\n 2. Tampilkan Semua data barang "); printf("\n\n 3. Tambahkan Stok Barang "); printf("\n\n 4. Kurangi Stok Barang "); printf("\n\n 5. Ubah harga ");

printf("\n\n 6. Hapus Data "); printf("\n\n 7. Keluar ");

printf("\n\nMasukkan Pilihan Anda : "); scanf("%d",&pil);

system("cls"); switch(pil) {

case 1:

printf("\n\n\t\t\tTAMBAH DATA BARANG"); do

{

printf("\n\n I> Masukkan kode barang : "); scanf("%s",&barang[a].kd); lop=0; if(strlen(barang[a].kd)>4)

{

printf("\n\n\t\tMaaf, Kode Barang tidak boleh lebih dari 4 angka");

lop=1; Barang yang anda masukkan sudah terdaftar");

lop=1; }

} }

while(lop>0);

printf("\n I> Masukkan Nama Barang : "); scanf("%s",&barang[a].nm);

printf("\n I> Masukkan Harga Barang : Rp. "); scanf("%d",&barang[a].hg);

printf("\n I> Masukkan Jumlah Barang (Stok) : "); scanf("%d",&barang[a].st);

a++; break; case 2:

printf("\n\n\t\t\tList Data Barang");

printf("\n\n No || Kode Barang || Nama Barang\t|| Harga Barang\t|| Stok\t ||\n\n");

for(b=0;b<a;b++)

(19)

system("pause");

printf("\n\n Masukkan Kode Barang : "); scanf("%s",&kdA);

for(b=0;b<a;b++) {

if(strcmp(kdA,barang[b].kd)==0) break;

else if(b==(a-1) && strcmp(kdA,barang[b].kd)!=0)

{

printf("\n\n\t\tMaaf, Kode Barang yang anda masukkan tidak terdaftar");

goto tambah; }

}

printf("\n\n Stok barang %s : %d",kdA,barang[b].st);

printf("\n\n Masukkan Jumlah Stok yang ditambahkan : ");

scanf("%d",&ubah); barang[b].st+=ubah; printf("\n\n Stok Berhasil ditambahkan...\n\n");

printf("\n\n Masukkan Kode Barang : ");

if(strcmp(kdA,barang[b].kd)!=0 && b==a-1)

{

printf("\n\n\t\ tMaaf, Kode Barang yang anda masukkan tidak terdaftar");

goto kurang; }

(20)

printf("\n\n Stok barang %s : %d",kdA,barang[b].st);

printf("\n\n Masukkan Jumlah Pengurangan Stok : ");

scanf("%d",&ubah); barang[b].st-=ubah; printf("\n\n Stok telah dikurangi...\n\n");

printf("\n\n Masukkan Kode Barang : ");

scanf("%s",&kdA);

if(strcmp(kdA,barang[b].kd)!=0 && b==a-1)

{

printf("\n\ n\t\tMaaf, Kode Barang yang anda masukkan tidak terdaftar");

goto ubah; }

}

printf("\n\n Harga Lama %s : Rp. %d ",kdA,barang[b].hg);

printf("\n\n Masukkan Harga Baru : Rp. ");

scanf("%d",&ubah); barang[b].hg=ubah; printf("\n\n Harga Barang Berhasil diubah...\n\n"); Masukkan Kode Barang : ");

scanf("%s",&kdA);

(21)

if(strcmp(kdA,barang[b].kd)==0)

break;

else if(strcmp(kdA,barang[b].kd)!=0 && b==a-1)

{

printf("\n\n\t\tMaaf, Kode Barang yang anda masukkan tidak terdaftar");

goto hapus;

} }

a--;

for(;b<a;b++){

strcpy(barang[b].kd,barang[b+1].kd);

strcpy(barang[b].nm,barang[b+1].nm);

barang[b].hg=barang[b+1].hg;

barang[b].st=barang[b+1].st;

}

printf("\n\n Data Barang Berhasil dihapus...\n\n");

system("pause"); break;

case 7:

printf("\n\ n\t\t\tTerimakasih");

return 0; }

}

while(pil!=7); }

(22)
(23)
(24)

Algoritma : 1. Start.

2. Deklarasi struct. 3. Deklarasi array. 4. Membaca fungsi.

5. Menampilkan menu utama. 6. Inputkan pilihan 1/2/3/4/5/6/7. 7. Kondisi switch case.

8. Case 1 : tambah data barang inputkan kode barang (max. 4 digit), nama barang, harga barang, dan jumlah barang (stok).

9. Case 2 : menampilkan data barang for(b=0;b<a;b++)

10. Case 3 : tambahkan stok inputkan kode barang, menampilkan stok barang awal, inputkan jumlah stok yang ditambah, menampilkan stok berhasil ditambahkan. 11. Case 4 : kurangi stok inputkan kode barang, stok barang terbaru, inputkan jumlah

pengurangan stok, menampilkan stok telah dikurang.

12. Case 5 : ubah harga inputkan kode barang, menampilkan harga lama, inputkan harga baru, menampilkan harga barang berhasil diubah.

13. Case 6 : hapus data inputkan kode barang. Menampilkan data barang berhasil dihapus.

(25)

Penjelasan Program :

Program diatas digunakan untuk mendata barang-barang yang ada disupermarket. Program tersebut menggunakan sequential search. Pada menu utama terdapat beberapa pilihan user diminta untuk memilih, yang pertama adalah menu tambah data barang, user harus menginputkan data barang terlebih dahulu kemudian menggunakan menu pilihan yang lain karena pada awal program berjalan belum ada data appapun didalam program. Untuk langkah-langkahnya sudah tertera didalam algoritmma, dapat juga dilihat dari printscreen program.

KESIMPULAN

1. Search dapat diartikan mencari data dengan cara menelusuri tempat penyimpanan data tersebut.

2. Tempat penyimpanan data dalam memory dapat berupa array atau dapat juga dalam bentuk Linked List.

3. Teknik pencarian data dari array yang paling mudah adalah dengan cara sequential search, dimana data dalam array dibaca 1 demi satu, diurutkan dari index terkecil ke index terbesar, maupun sebaliknya.

4. Binary search, metode pencarian ini, data harus diurutkan terlebih dahulu. Pada metode pencarian ini, data dibagi menjadi dua bagian (secara logika), untuk setiap tahap pencarian.

5. Fibonacci Search adalah pencarian sebuah elemen dalam array satu dimensi dengan menggunakan angka fibonacci sebagai titik-titik (indeks) elemen array yang isinya dibandingkan dengan nilai yang dicari.

6. Interpolation Search adalah pencarian sebuah elemen dalam array satu dimensi dengan metode interpolasi atau perkiraan secara interpolasi, dimana data harus diurutkan terlebih dahulu.

(26)

1. Tim Asisten Dosen. 2016. Modul 1 array, pointer, dan struct. Algoritma dan struktur komputer. Malang: Universitas Negeri Malang.

2. Tim Asisten Dosen. 2016. Modul 2 sorting. Algoritma dan struktur komputer. Malang: Universitas Negeri Malang.

Referensi

Dokumen terkait

User akan membuka menu laporan pelayanan selanjutnya user diminta memasukkan id yang ingin dilihat kemudian sistem akan menampilkan informasi atau data yang

13 Gambar 4.2 Tampilan Daftar Web Sumber : Software Figma, 2022 4.2.3 Tampilan Daftar Data Diri Setelah itu maka customer diminta untuk mengisi data diri pada bagian user dan

Atau Definisi Basis data juga dapat diartikan sebagai kumpulan data yang terdiri dari satu atau lebih tabel yang terintegrasi satu sama lain, dimana setiap user diberi wewenang untuk