Anda di halaman 1dari 64

LAPORAN AKHIR

PRAKTIKUM STRUKTUR DATA

Disusun Oleh

NAMA : SIGIT PRASTIYO

NIM : 191011402768

KELAS : 04-TPLE-008-Reg.CS

FAKULITAS TEKNIK INFORMATIKA

UNIVERSITAS PAMULANG

Jl. Surya Kencana No.1 Pamulang Telp (021) 7412566, Fax (021) 74125666

Tangerang Selatan – Banten


PERTEMUAN II
ARRAY

1. TEORI DASAR

a) Pengertian ARRAY
Array merupakan kumpulan elemen yang bertipe sama dalam urutan tertentu yang menggunakan nama yang
sama. Letak atau posisi dari elemen array ditunjukan oleh index atau posisi. Dalam beberapa buku array sering
juga disebut dengan istilah Larik atau Tabel. Array termasuk dalam struktur data statis, artinya adalah lokasi
memoriuntuk suatu array tidak dapat ditambah atau dikurangi selama program dijalankan.

b) Array Satu Dimensi


Array satu dimensi karena banyaknya penunjuk indeks hanya satu. Sebelum variabel array digunakan maka
variabel array harus dideklarasikan terlebih dahulu.Pendeklarasian variabel array satu dimensi sebenernya
hampir sama dengan pendeklarasian variabel yang lain, hanya saja pendeklarasian variabel array diikuti dengan
maksimum banyaknya elemen yang dapat disimpan dalam variabel array yang dituliskan dalam pasangan tanda
siku penutup. Di dalam bahasa C++, harga awal indeks dimulai dari 0 [nol]. Maka jika dituliskan banyaknya
maksimum elemen adalah N, berarti indexs yang akan dugunakan adalah 0,1,2,…,N-1.
Pendeklarasian array satu dimensi:
Tipe_data nama_var_array [ukuran] ;

c) Array Dua Dimensi


Array dua dimensi sering digambarkan sebagai sebuah matrik. Merupakan perluasan dari array satu dimensi.
Jika array satu dimensi hanya terdiri dari satu baris dan beberapa kolom, maka array dua dimensi terdiri dari
beberapa baris dan beberapa kolom. Dengan demikian array dua dimensi tersusun dalam bentuk baris dan
kolom, dimana indeks pertama menyatakan baris dan indeks kedua menyatakan kolom. Pendeklarasian array
dua dimensi:
Tipe_data Nama_var_Array [banyak_baris] [banyak_kolom] ;
2. TUGAS PRAKTIKUM

a. Latihan 2_1
Program untuk menginisialisasikan 10 bilangan bulat kemudian hitung jumlah dan rata.

Output :

Script C++ :
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;

int Nilai[10] = {8, 12, 20, 15, 7, 5, 6, 4, 32, 3} ;


int i, Jumlah = 0;
float Rata_Rata;
//Menghitung jumlah
for (i=0 ; i <10 ; i++)

Jumlah += Nilai [ i ];

Rata_Rata =( float ) Jumlah / 10;

//Mencetak Elemen Array

cout<<"\n\nDeretan Bilangan = ";

for ( i=0;i<10;i++)
cout<<Nilai[i]<<" " ;
//Mencetak Harga Jumlah
cout<<"\nJumlah Bilangan ="<<Jumlah;
cout<<"\nRata-Rata Bilangan = "<<Rata_Rata;
getch ();
}

b. Latihan 2_2
Program untuk membaca 10 bilangan bulat kemudian hitung jumlah rata-rata.

Output :

Script C++ :
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
int Nilai[10] ;
int i, Jumlah = 0;
float Rata_Rata;

// membaca dan menghitung jumlah

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

cout<<"Masukan elemen ke-"<<i<<" = ";


cin>>Nilai [ i ] ;
Jumlah+=Nilai [ i ];
}
Rata_Rata= ( float ) Jumlah / 10;
//Mencetak Elemen Array
cout<<"\n\nDeretan Bilangan = ";
for ( i=0;i<10;i++)
{
cout<<Nilai[i]<<" " ;
}
//Mencetak Harga Jumlah
cout<<"\nJumlah Bilangan ="<<Jumlah;
cout<<"\nRata-Rata Bilangan = "<<Rata_Rata;
getch ();
}

c. Latihan 2_3
Program untuk membaca sederetan bilangan bulat kemudian tentukan bilangan terbesar dari sederetan bilangan.

Outpout :

Script C++ :
#include<iostream>
#include<conio.h>
using namespace std;
main()
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;

int Nilai [20];


int i, N, Terbesar;
cout<<"Masukan Banyaknya Bilangan = ";
cin>>N;
cout<<endl;
//Membaca elemen array
for(i=0; i<N; i++)
{
cout<<"Masukan elemen ke-"<<i<<"=";
cin>>Nilai [i];
}
Terbesar = Nilai [1]; //elemen pertama dibuat sebagai Terbesar
for (i=1; i<N; i++)
{
if (Nilai [i]>Terbesar)
Terbesar = Nilai [i];
}
//Mencetak Bilangan Terbesar
cout<<"\nBilangan Terbesar = "<< Terbesar;
getch();
}

d. Latihan2_4
Program untuk Array Satu dimensi dari media masukan.

Output :

Script C++ :
#include<iostream>
#include<conio.h>
using namespace std;
main()
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
int Nilai [ 20 ];
int Posisi [ 20 ];
int i, N, Bilangan, Banyak=0;
bool ketemu;
cout<<"Masukan Banyaknya Bilangan = ";
cin>>N;
cout<<endl;
//Membaca elemen Array
for (i=0; i<N ;i++)
{
cout<<"Masukan elemen ke-"<<i<<" = ";
cin>>Nilai [i];
}
//Membaca Elemen Array
cout<<"\n\nDeretan Bilangan = ";
for (i=0; i<N; i++)
cout<<Nilai [i]<<" ";
cout<<"\n\nMasukan Bilangan yang akan dicabut = ";
cin>>Bilangan ;
//melakukan pencarian
for(i=0; i<N; i++)
{
if(Nilai [i]==Bilangan)
{
ketemu = true;
Posisi [Banyak]=i;
Banyak++;
}
}
if(ketemu)
{

cout<<"Bilangan "<< Bilangan<<" ditentukan sebanyak "<< Banyak;

cout<<"\npada posisi ke = ";

for(i=0; i<Banyak ; i++)

cout<<Posisi [i]<<" ";


}
else
cout<<”Bilangan “<<Bilangan<<”tidak ditemukan”;
getch ();
}

e. Latihan 2_5
Mencetak elemen-elemen Matriks A berukuran 3x4.
Output :

Script C+
+:
#include <iostream>
using namespace std;
int main()
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl<<endl;
cout<<"\tMATRIKS 3 X 4\n\n";
int a[3][4]={{1,3,4,5},{2,4,6,8},{3,5,7,9}};
int i,j;
cout<<endl<<"Matriks: "<<endl<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
cout<<a[i][j]<<" ";
}cout<<endl<<endl;

}
}

3. PERTANYAAN DARI E-LEARNING


1. Apakah yang di maksud dengan array satu dimensi ?
jawab :
Dikatakan array satu dimensi karena banyaknya penunjuk indeks hanya satu. Sebelum variabel array digunakan
maka variabel array harus dideklarasikan terlebih dahulu.Pendeklarasian variabel array satu dimensi sebenernya
hampir sama dengan pendeklarasian variabel yang lain, hanya saja pendeklarasian variabel array diikuti dengan
maksimum banyaknya elemen yang dapat disimpan dalam variabel array yang dituliskan dalam pasangan tanda
siku penutup.

2. Apakah perbedaan Array satu dimensi dengan array dua dimensi?


jawab :
* Array Satu Dimensi : elemen array yang hanya memiliki satu buah baris atau kolom dan hanya dapat
diakses oleh program menggunakan suatu indeks tertentu.
` * Array Dua Dimensi : elemen array yang hanya memiliki satu buah baris atau kolom dan sering
digambarkan sebagai sebuah matriks atau bentuk grid.

4. KESIMPULAN PERTEMUAN II

Array merupakan bagian dari struktur data yaitu termasuk ke dalam struktur data sederhana yang dapat
didefinisikan sebagai pemesanan alokasi memori sementara pada komputer.Apabila kita membuat progam
dengan data yang yang sudah kita ketahui batasnya, maka kita menggunakan array (tipe data statis), namum
apabila datanya belum kita ketahui batasnya maka gunakan pointer (tipe data dinamis). Elemen-elemen array
tersusun secara sekuensial dalam memori komputer. Array dapat berupa satu dimensi, dua dimensi, ataupun
multidimensi.
PERTEMUAN III
STRUCTURE

1. TEORI DASAR STRUCTURE


a) Structure adalah kumpulan elemen data yang di gabungkan menjadi satu kesatuan. Structure merupakan bentuk
struktur data yang dapat menyimpan variabel dengan satu nama. Masing-masing elemen data dikenal dengan
sebutan field.
b) Deklarasi Structure Pendeklarasian structure selalu diawali kata baku struct diikuti nama structure dan deklarasi
field-field yang membangun structure di antara pasngan tanda titik koma [;] jika terdapat field dengan tipe data
yang sama.

a. Struct nama_struct
b. {
c. <tipe_data> nama_field_1;
d. <tipe_data> nama_field_2;
e. ……..
f. <tipe_data> nama_field_n;
g. };

c) Pemakaian Structure
Untuk menggunakan structure dapat dilakukan dengan menuliskan nama structure yang diikuti dengan nama
fieldnya yang dipisahkan dengan titik [.] atau tanda panah [- >].
d) Structure dalam Structure
Suatu struktur juga dapat mengandung suatu struktur yang lain Artinya field-field dalam structure merupakan
suatu structure juga. Misalkan biodata Mahasiswa yang terdiri dari NIM, Nama, Alamat dan Tanggal Lahir.
e) Array dalam Structure
Suatu structure dideklarasikan menjadi sebuah array apabila hendak menggunakan satu struct untuk beberapa
kali. Sebenarnya sama dengan struktur tunggal di atas, perbedaannya adalah hanya pada saat pendeklarasian
variabel saja
Contoh :
a. Struct Mahasiswa {
b. Char NIM [ 9 ];
c. Char Nama [ 25 ];
d. Char Alamat [ 30 ];
e. Float Ipk;
f. };
2. TUGAS PRAKTIKUM

a. Latihan 3_1
Program untuk membaca biodata yang diinput Nim, Nama, Alamat, dan Umur kemudian cetak.

Output

C++ :
#include<stdio.h>
#include<conio.h>
#include<iostream>
using namespace std;
struct Mahasiswa
{
char Nim [20] ;
char Nama [25] ;
char Alamat[40] ;
short Umur ;
};
main ()
{
cout<<"\t SIGIT PRASTIYO \t"<<endl;
cout<<"\t 191011402768\t"<<endl<<endl;
Mahasiswa Mhs;
cout<<"Nim : " ;

cin.getline (Mhs.Nim,20);

cout<<"Nama :";

cin.getline (Mhs.Nama,25);

cout<<"Alamat :";

cin.getline (Mhs.Alamat,40);
cout<<"Umur : ";

cin>>Mhs.Umur ;
cout<<"\n\n\nNim: "<< Mhs.Nim;
cout<<"\nNama : "<< Mhs.Nama;
cout<<"\nAlamat : "<< Mhs.Alamat;
cout<<"\nUmur : "<< Mhs.Umur;
getch ();
}

b. Latihan 3_2
Program menggunakan ketiga structure di dalam strucure.

Output :

Script C++ :
#include<stdio.h>
#include<iostream>
#include<conio.h>
using namespace std;
struct Tinggal {
char Jaln [40] ;
char Kota [15] ;
char Pos [5] ;
};

struct Tgl_Lahir {
int Tanggal ;
int Bulan ;
int Tahun ;
};
struct Mahasiswa {
char Nim [9];
char Nama [25];
Tinggal Alamat;
Tgl_Lahir Lahir;

};
int main ( ){
cout<<"\t SIGIT PRASTIYO \t"<<endl;
cout<<"\t 191011402768\t"<<endl<<endl;

Mahasiswa Mhs ;
cout<<"NIM : "; cin.getline (Mhs.Nim, 9 ) ;
cout<<"Nama : "; cin.getline (Mhs.Nama, 25 ) ;
cout<<"Alamat : \n" ;
cout<<"\tJalan : "; cin.getline ( Mhs.Alamat.Jaln, 40 ) ;
cout<<"\tKota : "; cin.getline ( Mhs.Alamat.Kota, 15 ) ;

cout<<"\tKode pos : "; cin.getline ( Mhs.Alamat.Pos, 5 ) ;

cout<<"Tanggal Lahir : \n";

cout<<"\tTanggal : "; cin>> Mhs.Lahir.Tanggal ;

cout<<"\tBulan : "; cin>>Mhs.Lahir.Bulan ;

cout<<"\tTahun : "; cin>>Mhs.Lahir.Tahun ;

cout<<"\n\nMencetak Kembali Nilai Anggota\n\n";

cout<<"NIM : "<<Mhs.Nim ;

cout<<"\nNama : "<<Mhs.Nama ;

cout<<"\nAlamat : \n";

cout<<"\n\tJalan : "<<Mhs.Alamat.Jaln;

cout<<"\n\tKota : "<<Mhs.Alamat.Kota;

cout<<"\n\tKode Pos : "<<Mhs.Alamat.Pos;

cout<<"\nTanggal Lahir : "<<Mhs.Lahir.Tanggal<<"-";

cout<<Mhs.Lahir.Bulan<<"-"<<Mhs.Lahir.Tahun;

getch ();

}
c. Latihan 3_3
Program array dalam struktur.
Output :

Script C++ :
#include<stdio.h>
#include<conio.h>
#include<iostream>
using namespace std;struct Mahasiswa
{
char Nim [9] ;
char Nama [25] ;
char Alamat [40] ;
int Umur ;
};
main (){

cout<<"\t SIGIT PRASTIYO \t"<<endl;


cout<<"\t 191011402768\t"<<endl<<endl;

Mahasiswa Mhs [5] ;


int i ;

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


cout<<"Nim : ";

cin>>Mhs[i].Nim ;

cout <<"Nama :";

cin>>Mhs[i].Nama ;

cout<<"Alamat : ";

cin>>Mhs[i].Alamat ;

cout<<"Umur : ";

cin>>Mhs[i].Umur ;
}

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

cout<<"\n\nNim : "<<Mhs [i].Nim;

cout<<"\n\nNama : "<<Mhs [i].Nama;

cout<<"\n\nAlamat : "<<Mhs [i].Alamat;

cout<<"\n\nUmur : "<<Mhs [i].Umur;


}
getch ();

}
d. Latihan 3_4
Program array dalam struktur.
Outout
Script C++ :
#include<stdio.h>
#include<iostream>
#include<conio.h>
using namespace std;
struct Tinggal {
char Jalan [ 40 ];
char Kota [ 15 ];
char Pos [ 5 ] ;
};
struct Tgl_Lahir {
int Tanggal;
int Bulan ;
int Tahun ;
};
struct Mahasiswa {
char Nim [ 9 ];
char Nama [ 25 ];
Tinggal Alamat ;

Tgl_Lahir Lahir ;
};
main (){
cout<<"\t SIGIT PRASTIYO \t"<<endl;
cout<<"\t 191011402768\t"<<endl<<endl;
Mahasiswa Mhs [5] ;
int i ;
for (i=0; i<3; i++)
{
cout<<"NIM : "; cin>>Mhs[i].Nim ;
cout<<"Nama : "; cin>>Mhs[i].Nama;
cout<<"Alamat :\n";
cout<<"\tJalan : "; cin>>Mhs[i].Alamat. Jalan;
cout<<"\tKota : "; cin>>Mhs[i ]. Alamat. Kota ;
cout<<"\tKode Pos : "; cin>>Mhs[i ]. Alamat. Pos;
cout<<"Tanggal Lahir : \n";
cout<<"\tTanggal : "; cin>>Mhs [i ]. Lahir. Tanggal;
cout<<"\tBulan : "; cin>>Mhs [i ]. Lahir. Bulan;
cout<<"\tTahun : "; cin>>Mhs[i ]. Lahir. Tahun ;
}
cout<<"\n\nMencetak Kembali Nilai Anggota\n\n";
for (i=0; i<3; i++)
{

cout<<"\nNIM : "<<Mhs [ i ]. Nim ;


cout<<"\nNama : "<<Mhs [ i ]. Nama ;

cout<<"\nAlamat : \n" ;

cout<<"\tJalan : "<<Mhs[i ].Alamat. Jalan;

cout<<"\tKota : "<<Mhs[i ]. Alamat. Kota ;

cout<<"\tKode Pos : "<<Mhs[i ]. Alamat. Pos;

cout<<"\nTanggal Lahir : "<<Mhs[i ]. Lahir. Tanggal<<"-";

cout<<Mhs [ i ]. Lahir.Bulan <<"-"<<Mhs[i ]. Lahir. Tahun ;

getch ();

e. Latihan 3_5
program untuk struktur NILAI yang terdiri dari NIM, Nama, Nilai_Tugas, Nilai_UTS, Nilai_UAS, Nilai_Akhir, Nilai_Huruf.
Ketentuan:
1. Nilai_Akhir : 20% x Nilai_Tugas + 35% x Nilai_UTS + 45% x Nilai_UAS
2. Nilai Huruf : 85 < Nilai_Akhir ≤ 100 → A 70 < Nilai_Akhir ≤ 85 → B 55 < Nilai_Akhir ≤ 70 → C 40 < Nilai_Akhir ≤ 55 → D
0 < Nilai_Akhir ≤ 40 → E.

Output :
Script C++ :
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <windows.h>
using namespace std;
struct nilai
{
int nim ;
char nama [20];
int nilai_tugas;
int nilai_uts;
int nilai_uas;
int nilai_akhir;
char nilai_huruf;
};
main(){

nilai nil[5];

int i, data;

system("COLOR F0");

cout<<" \t SIGIT PRASTIYO \t"<<endl;

cout<<"\t 191011402768 \t"<<endl<<endl;

cout<<"PROGRAM MENGHITUNG NILAI AKHIR DAN GRADE MAHASISWA\n"<<endl;

cout<<"Silahkan Input NIM, Nama, Nilai Tugas, UTS serta UAS"<<endl;

cout<<"Kami akan menghitung Nilai Akhir dan Grade anda\n"<<endl;

cout<<"Jumlah Mahasiswa = ";cin>>data;

for(i=0; i<data; i++)

cout<<"\n====================================================="<<endl;

cout<<"NIM \t\t: ";cin>>nil[i].nim;

cout<<"Nama \t\t: ";cin>>nil[i].nama;

cout<<"Nilai Tugas \t: ";cin>>nil[i].nilai_tugas;

cout<<"Nilai UTS \t: ";cin>>nil[i].nilai_uts;


cout<<"Nilai UAS \t: ";cin>>nil[i].nilai_uas;

nil[i].nilai_akhir=(nil[i].nilai_tugas*20/100)+(nil[i].nilai_uts*35/100)+(nil[i].nilai_uas*45/100);

if(nil[i].nilai_akhir>85&&nil[i].nilai_akhir<=100)

nil[i].nilai_huruf='A';

else if(nil[i].nilai_akhir>70&&nil[i].nilai_akhir<=85)

nil[i].nilai_huruf='B';

else if(nil[i].nilai_akhir>55&&nil[i].nilai_akhir<=70)

nil[i].nilai_huruf='C';

else if(nil[i].nilai_akhir>40&&nil[i].nilai_akhir<=55)

nil[i].nilai_huruf='D';

else

nil[i].nilai_huruf='E';

cout<<endl;

system("CLS");

cout<<"Lembar Hasil Nilai Akhir dan Grade"<<endl;

for(i=0; i<data; i++)


{

cout<<"\n====================================================="<<endl;

cout<<"NIM \t\t: "<<nil[i].nim<<endl;

cout<<"Nama \t\t: "<<nil[i].nama<<endl;

cout<<"Nilai Tugas \t: "<<nil[i].nilai_tugas<<endl;

cout<<"Nilai UTS \t: "<<nil[i].nilai_uts<<endl;

cout<<"Nilai UAS \t: "<<nil[i].nilai_uas<<endl;

cout<<"Nilai Akhir \t: "<<nil[i].nilai_akhir<<endl;

cout<<"Grade \t\t: "<<nil[i].nilai_huruf<<endl;

getch();

3. PERTANYAAN DARI E-LEARNING

Apa maksud dari bjarne ?


jawab :
Bjarne Stroustrup itu sendiri nama pembuat untuk pembuatan dan pengembangan bahasa pemrograman C
++.Bahasa C++ adalah bahasa komputer atau bahasa pemrograman yang merupakan pengembangan dari
bahasa C kemudian disempurnakan oleh Bjarne Stroustrup pada tahun 1980 menjadi 1980 menjadi “c with
classes” dan berganti nama menjadi C++ pada tahun 1983.

4. KESIMPULAN PERTEMUAN III

Struktur adalah sekumpulan elemen-elemen data yang digabung menjadi suatu kesatuan. Struktur array adalah
kumpulan elemen-elemen data yang digabungkan menjadi suatu kesatuan yang memiliki tipe homogen (sama).
Array merupakan bagian dari struktur data yaitu termasuk ke dalam struktur data sederhana yang dapat
didefinisikan sebagai pemesanan alokasi memori sementara pada komputer. Pointer adalah sebuah variabel
yang berisi alamat lain. Suatu pointer dimaksudkan untuk menunjukan ke suatu alamat memori sehingga alamat
dari suatu variabel dapat diketahui dengan mudah.
Apabila kita membuat progam dengan data yang yang sudah kita ketahui batasnya, maka kita menggunakan
array (tipe data statis), namum apabila datanya belum kita ketahui batasnya maka gunakan pointer (tipe data
dinamis). Elemen-elemen array tersusun secara sekuensial dalam memori komputer. Array dapat berupa satu
dimensi, dua dimensi, ataupun multidimensi.
PERTEMUAN IV
POINTER

1. TEORI DASAR

a) Pengertian Pointer
Pointer atau variable penunjuk adalah suatu variable yang berisi alamat memori dari suatu variable lain.Alamat
ini merupakan lokasi dari variable lain di dalam memori. Dengan kata lain, pointer berisi alamat dari variabel
yang mempunyai nilai tertentu.
b) Operator Pointer
Ada dua oprator pointer yang disediakan oleh Borland C++ yaitu :
1) Operator Deference ( & ) bentuk umum :
Nama_var_pointer = &variabel;
2) Operator Reference ( * ) bentuk umum :
int x=8,y ; int *xPtr ;
c) Deklarasi Pointer Bentuk umum:
tipe_data *nama_var_pointer;
d) Pointer dan Array
Pointer dan array mempunyai hubungan yang dekat. Secara internal array juga menyatakan alamat, dimana
pengenalan array sama dengan alamat pada elemen pertama pada array
e) Pointer Pada Pointer
Variabel pointer menunjukan suatu variabel. Di samping itu suatu variabel pointer juga dapat menunjukan ke
variabel pointer lainnya. Dalam hal ini dilakukan dengan cara menambahkan operator reference [ * ] pada
variabel yang akan di tunjuk.
Contoh: misalkan kita mempunyai deklarasi sebagai berikut ini.
int Var_x;
int *xPtr1;
int **xPtr2;
Artinya:
a. Var_x adalah variabel bertipe int
b. *xPtr1 adalah variabel pointer yang menunjukan ke data bertipe int
c. **xPtr2 adalah variabel pointer yang menunjuk ke pointer int
2. TUGAS PRAKTIKUM

a. Latihan 4_1
Program untuk menyimpan nilai pada suatu alamat menggunakan operator Deference.
Output :

Script C++ :
#include<stdio.h>
#include<conio.h>
#include<iostream>
using namespace std;
struct Mahasiswa{
char Nim[9];
char Nama[25];
char Alamat[40];
short Umur;
};
void Baca(Mahasiswa *Mhs);
void Cetak(Mahasiswa *Mhs);
main()

{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;

cout<<"==============="<<endl;

Mahasiswa Mhs;
cout<<"Membaca Nilai Anggota Struktur \n";
Baca (&Mhs);
cout<<"\nMencetak Nilai Anggota Struktur ";
Cetak(&Mhs);
` getch();

void Baca(Mahasiswa *Mhs)

cout<<"Nim : ";

cin.getline(Mhs->Nim,9);

cout<<"Nama : ";

cin.getline(Mhs->Nama,25);

cout<<"Alamat : ";

cin.getline(Mhs->Alamat,40);

cout<<"Umur : ";

cin>>Mhs->Umur;

void Cetak(Mahasiswa *Mhs)

cout<<"\nNIM : "<< Mhs->Nim;

cout<<"\nNama : "<< Mhs->Nama;

cout<<"\nAlamat : "<< Mhs->Alamat;

cout<<"\nUmur : "<< Mhs->Umur;

}
b. Latihan 4_2
Program untuk menyimpan nilai pada suatu alamat menggunakan operator reference.
Output :

Script C++ :
#include<iostream>
#include<conio.h>
using namespace std;
main ()
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
int x=8, y;
int *xPtr;
xPtr = &x;
y = *xPtr;

cout<<"Nilai x = "<< x <<endl ;

cout<<"Alamat x = "<< &x<<endl ;

cout<<"Alamat x = "<<xPtr<<endl ;
cout<<"Nilai yang disimpan pada alamat ";
cout<<xPtr<<" adalah "<<y;
getch();
}

c. Latihan 4_3
Program Pointer dan Array.
Output :

Script C++ :
#include<stdio.h>

#include<conio.h>

#include<iostream>

using namespace std;

main ()

cout<<" SIGIT PRASTIYO "<<endl;

cout<<" 191011402768 "<<endl;

cout<<"==============="<<endl;

int Nilai [ ] = {45, 23, 50, 8, 12, 10, 15} ;

int *Ptr_Nilai ;
int i;

Ptr_Nilai = Nilai ;

cout<<"\nNilai Ptr_Nilai"<<Ptr_Nilai;

cout<<"\nAlamat array Nilai"<<Ptr_Nilai;

cout<<"\nNilai yang ada pada alamat "<<Ptr_Nilai<<"adalah "<<*Ptr_Nilai;

cout<<"\nElemen Array indeks pertama : "<<Nilai [0];

cout<<"\n\nElemen Array (dgn Array ) : ";

for ( i=0;i<7;i++)

cout<<Nilai [i]<<" "; //mencetak elemen array

cout<<"\n\nElemen Array (dgn Pointer) : ";

for(i=0;i<7;i++)

cout<<*( Nilai+i )<<" "; //mencetak elemen array getch ( ) ;

d. Latihan 4_4
Program Pointer pada Pointer.
Output :

Script C++ :
#include<iostream>
#include<conio.h>
using namespace std;
main ()
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
int x= 8;
int *xPtr1;
int **xPtr2;
xPtr1 = &x;
xPtr2 = &xPtr1;
cout<<"Nilai x = "<<x<<endl;
cout<<"Nilai x = "<<*xPtr1<<endl;
cout<<"Nilai x = "<<*xPtr2<<endl;
getch ();
}

e. Latihan 4_5
Program sederhana dengan menggunakan kombinasi antara Pointer dan perintah While.
Output :

Script C++ :
#include <iostream>
using namespace std;
int main()
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl<<endl;

int num[10];
int *start, *end;
start = num;
end = &num[5];
while(start != end) {
cout << "Masukkan bilangan : ";
cin >> *start;
start++;
}
return 0;
}

3. PERTANYAAN DARI E-LEARNING

Apa perbedaan operator deference(&) dengan operator reference (*) ?


jawab :
•Operator Dereference (&)
Operator Dereference (&) yaitu operator yang berfungsi mendeklarasikan sebuah variabel didalam
penggantian memori. operator ini biasa disebut dengan "address of". Jadi seandainya sobat ingin mengetahui
dimana variabel akan disimpan (untuk mengetahui letak / alamat penyimpanan variabel di memori), sobat
dapat memberikan tanda "&" (ampersand sign) didepan variabel, yang berarti "address of". Karena dengan
menggunakan operator dereference (&) ini, sebuah variabel akan menghasilkan alamat lokasi
penyimpanannya di memori.

•Operator Reference (*)


Seandainya pada operator Dereference (&) sobat dapat mengeluarkan alamat memory dari sebuah variabel,
sedangkan pada Operator Reference (*) sobat dapat mengeluarkan (menampilkan) nilai dari alamat memori
yang di tunjuk. untuk penggunaan nya sendiri sobat dapat menambahkan identifier asterisk (*) didepan
variabel. biasanya Operator reference disebut dengan "value pointed by".
Sebagai contoh, Operator Dereference ( & )
int x = 8;
int *xPtr;
Sebagai contoh,Operator reference ( * )
int x = 8, y;
int *xPtr

4. KESIMPULAN PERTEMUAN IV

Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer dimaksudkanuntuk menunjukan kesuatu
alamat memori sehingga alamat dari suatu variable dapatdiketahui dengan mudah.
Dengan menggunakan pointer yang benar, dapat menyusun sebuah program yang berkemampuan tinggi.
Sebaliknya sedikit saja kesalahan dalam menggunakan pointerakan mengakibatkan kesalahan fatal pada
program tersebut.
Menggunakan operator deference variable akan menghasilkan alamat lokasi memori.
Menggunakan operator reference akan dihasilkan nilai yang berada pada suatu alamatmemori.
PERTEMUAN V
FUNCTION

1. TEORI DASAR
a) Pengertian FUNGSI Fungsi merupakan elemen utama dalam bahasa C karena bahasa C sendiri terbentuk dari
kumpulan fungsi. Fungsi terdiri dari dua jenis yaitu fungsi build-in dang fungsi user defined.
b) Struktur Fungsi Bentuk umum pendeklarasian fungsi adalah:
tipe_fungsi nama_fungsi ( parameter_fungsi ) ;
Contoh:
Float Jumlah ( float a, float b );
c) Sedangkan bentuk umum pendefinisian fungsi adalah :
Penemu_tipe_fungsi Nama_fungsi ( parameter_fungsi )
{
Statment ;
Statment ;
……
Statement :
}
d) Parameter fungsi Pada saat pemanggilan dan pendefinisian suatu fungsi, terdapat parameter fungsi. Terdapat 2 (
dua ) jenis parameter,yaitu Parameter Formal dan Parameter Aktual. Cara melewatkan suatu parameter dari
parameter aktual ke dalam parameter formal dapat dilakukan dengan dua cara, yaitu: pemanggilan Secara Nilai
(Call by Value) dan Pemanggilan Secara Referensi (Call by Reference)
e) Pernyatan Return ()Pernyataan return () digunakan untuk mengirimkan nilai dari suatu fungsi kepada fungsi lain
yang memanggilnya. Pernyataan return [] diikuti oleh argument yang berupa nilai yang akan dikirimkan.
f) Variabel pada Fungsi Penggolongan Variabel berdasarkan Kelas Penyimpanan (Storage Class) dibagi atas 3 yaitu:
Variabel lokal, Variabel Eksternal atau Global, dan Variabel Statis
g) Pointer sebagai Argumen Fungsi Pointer biasa digunakan sebagai argumen fungsi jika nilai argumen yang
dimaksudkan untuk diubah di dalam fungsi. Hal ini dilakukan dengan cara menambahkan operator & di depan
argumen pada parameter aktual dan operator * di depan argumen pada parameter formal
2. TUGAS PRAKTIKUM

a. Latihan 5_1
Program fungsi dengan call by value.
Output :

Script C++ :
#include<iostream>
#include<conio.h>
using namespace std;
void Tukar ( int a, int b);
main()
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
int a=8, b=-5;
cout<<"Nilai a dan b sebelumnya : "<<a<<" & "<<b;
Tukar (a, b);
cout<<"\nNilai a dan b Setelah ditukar : "<<a<<" & "<<b;
getch();

}
void Tukar (int x, int y)

{
int z ;
z=x;
x=y;
y=z;
}
b. Latihan 5_2.
Program fungsi dengan Call by Reference.
Output :

Script C++ :
#include<iostream>
#include<conio.h>
using namespace std;
void Tukar (int &a, int &b) ;
main ( )
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
int a=8, b=-5 ;
cout<<"Nilai a dan b sebelum ditukar : "<<a<<" & "<<b;
Tukar (a, b);
cout<<"\nNilai a dan b Setelah ditukar : "<<a<<" & "<<b;
getch ();

}
void Tukar ( int &x, int &y)
{
int z ;
z=x;
x=y;
y=z;
}
c. Latihan 5_3.
Program fungsi dengan pernyataan Return.
Output :

Script C++ :
#include<iostream>
#include<conio.h>
using namespace std;
int Maksimum ( int a, int b, int c );
main ()
{

cout<<" SIGIT PRASTIYO "<<endl;

cout<<" 191011402768 "<<endl;

cout<<"==============="<<endl;

int a =8, b=12, c=-5;

cout<<"Nilai a = "<<a;

cout<<"\nNilai b = "<<b;

cout<<"\nNilai c = "<<c;

cout<<"\nNilai Terbesar : "<<Maksimum ( a, b, c ) ;

getch ();

}
int Maksimum ( int x, int y, int z )
{
int Besar = x;
if ( y > Besar )
Besar = y ;
if ( z > Besar )
Besar = z;
return (Besar) ;
}

d. Latihan 5_4.
Program Fungsi dengan Pointer.
Output :

Script C++ :
#include<iostream>
#include<conio.h>
using namespace std;
void Tukar (int *a, int *b);
main ()
{

cout<<" SIGIT PRASTIYO "<<endl;

cout<<" 191011402768 "<<endl;

cout<<"==============="<<endl;

int a=8, b=-5;


cout<<"Nilai a dan b sebelum ditukar : "<<a<<" & "<<b;
Tukar (&a, &b);
cout<<"\nNilai a dan b setelah ditukar : "<<a<<" & "<<b;
getch ();
}
void Tukar (int *x, int*y)
{
int z;
z = *x;
*x = *y;
*y = z ;
}

e. Latihan 5_5
Program Array satu dimensi sebagai Argumen fungsi.
Output :

Script C++ :
#include<stdio.h>
#include<iostream>
#include<iomanip>
#include<conio.h>
using namespace std;
const int N=100 ;
void Baca (int Nilai [ ], int &M) ;
void Cetak (int Nilai [ N ], int &M);
void Jumlah (int Nilai [ N ], int &M, int &Jlh, float &Rata) ;
main ()
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
int M;
int Nilai [N];
int Jlh =12;
float Rata;
cout<<"Banyak Elemen : ";
Baca (Nilai, M); //memanggil fungsi Baca
cout<<"\nElemen Elemen :";
Cetak(Nilai,M); //memanggil fungsi cetak
Jumlah (Nilai, M, Jlh, Rata) ; //memanggil fungsi Jumlah
cout<<"\Jumlah Bilangan : "<<Jlh;
cout<<"\nRata-Rata Bilangan :"<<Rata;
getch () ;

}
void Cetak (int Nilai [ ], int &M)
{
int i;
for(i=0;i<M;i++)
{
cout<<setw (3) <<Nilai [ i ] ;
}
}
void Baca (int Nilai [ ], int & M)
{
int i ;
for (i=0;i<M;i++)
{
cout<<"Elemen ke-"<<i<<" : ";
cin>>Nilai [i];
}
}
void Jumlah (int Nilai [ ], int &M, int &Jlh, float &Rata)
{
int i;
for (i=0;i<M;i++)
Jlh+=Nilai [i] ;
Rata = (float) Jlh /M;
}
f. Latihan 5_6
Program structure sebagai Argumen Fungsi.
Output :

Script C++ :
#include<stdio.h>
#include<conio.h>
#include<iostream>
using namespace std;
struct Mahasiswa
{
char Nim [ 9 ] ;
char Nama [ 25 ] ;
char Alamat [ 40 ] ;
short Umur ;
};
void Baca (Mahasiswa &Mhs);
void Cetak (Mahasiswa &Mhs);
main ( )
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
Mahasiswa Mhs;
cout<<"Membaca Nilai Anggota Struktur \n";
Baca (Mhs);
cout<<"\nMencetak Nilai Anggota Struktur ";
Cetak (Mhs);
getch ( );

}
void Baca(Mahasiswa &Mhs)
{
cout<<"NIM : ";
cin.getline(Mhs.Nim, 9) ;
cout<<"Nama :";
cin.getline(Mhs.Nama,25) ;
cout<<"Alamat :";
cin.getline(Mhs.Alamat, 40);
cout<<"Umur :";
cin>>Mhs.Umur;
}
void Cetak (Mahasiswa &Mhs)
{
cout<<"\nNim : "<< Mhs.Nim;
cout<<"\nNama :"<< Mhs.Nama;
cout<<"\nAlamat :"<< Mhs.Alamat;
cout<<"\nUmur :"<< Mhs.Umur;
}

g. Latihan 5_7.
Menggubah program Lat5 _6.cpp, menggunakan Pointer.
Output :

Script C++ :
#include<stdio.h>
#include<conio.h>
#include<iostream>
using namespace std;
struct Mahasiswa{
char Nim[9];

char Nama[25];
char Alamat[40];
short Umur;

};
void Baca(Mahasiswa *Mhs);
void Cetak(Mahasiswa *Mhs);
main()

cout<<" SIGIT PRASTIYO "<<endl;

cout<<" 191011402768 "<<endl;

cout<<"==============="<<endl;

Mahasiswa Mhs;

cout<<"Membaca Nilai Anggota Struktur \n";

Baca (&Mhs);

cout<<"\nMencetak Nilai Anggota Struktur ";

Cetak(&Mhs);

getch();
}
void Baca(Mahasiswa *Mhs)
{
cout<<"Nim : ";
cin.getline(Mhs->Nim,9);
cout<<"Nama : ";
cin.getline(Mhs->Nama,25);
cout<<"Alamat : ";
cin.getline(Mhs->Alamat,40);
cout<<"Umur : ";
cin>>Mhs->Umur;
}

void Cetak(Mahasiswa *Mhs)


{
cout<<"\nNIM : "<< Mhs->Nim;
cout<<"\nNama : "<< Mhs->Nama;
cout<<"\nAlamat : "<< Mhs->Alamat;
cout<<"\nUmur : "<< Mhs->Umur;
}
3. PERTANYAAN DARI E-LEARNING

Apa yang dimaksud dengan Variabel lokal,external dan global?


jawab:
Variabel global merupakan variabel yang dapat digunakan atau dipanggil oleh semua fungsi.
Variabel lokal adalah variabel yang dapat digunakan atau dapat dipanggil oleh satu prosedur saja.
Variabel eksternal mempunyai lifetime selama program dieksekusi.Variabel eksternal sebaiknya digunakan
sesedikit mungkin atau bahkan tidak digunakan sama sekali
Contoh variabel Lokal :

Variabel lokal
#include using namespace std;
int penjumlahan(int a, int b)
{
int c = a + b;
return c;
}
int main()
{
cout< return 0;
}

4. KESIMPULAN PERTEMUAN V

Fungsi atau function (Sub Program) di gunakan untuk mempermudah penulisan dan program agar lebih efektive karena
dapat di panggil berulang-ulang ( sewaktu – waktu pada saat di butuhkan ) sehingga program tidak terlalu panjang…
Fungsi dibagi menjad idua yaitu:

FungsiBertipeVoid
Fungsi Bertipe Data

Fungsi bertipe void, tidak mempunyai nilai kembalian, jadi fungsi bertipe ini hanya merupakan sekumpulan kode
program yang bekerja sesuai dengan parameter yang diberikan. Void Kotak merupakan sebuah fungsi yang akan
membuat suatu kotak di layar sesuai dengan koordinat yang diberikan di bagian parameter. Koordinat tersebut adalah
koordinat kiri atas (X1,Y1), dan koordinat titik kanan bawah (X2,Y2). Selain itu fungsi ini membutuhkan parameter
Bingkai yang berguna untuk menentukan warna bingkai kotak, dan juga parameter Latar yang berguna untuk
menentukan warna latar belakang kotak yang dibuat.
PERTEMUAN VI
SEARCHING

1. TEORI DASAR

a) Pengertian SEARCHING Pencarian merupakan proses yang mendasar di dalam pemrograman. Pencarian
(Searching) merupakan tindakan untuk mendapatkan suatu data dalam kumpulan data berdasarkan suatu kunci
(key) atau acuan data.
b) Sequensial Search Sequensial Search (pencarian beruntun) adalah metode pencarian yang paling mudah.
Pencarian berurutan adalah proses membandingkan setiap elemen array satu per satu secara berurutan yang
dimulai dari elemen pertama hingga elemen yang dicari ditemukan atau hingga elemen terakhir dari array.
c) Binary Search Binary search adalah metode pencarian suatu data atau elemen di dalam suatu array dengan
kondisi data dalam keadaan terurut. Proses pencarian binary search hanya dapat dilakukan pada kumpulan data
yang sudah diurutkan terlebih dahulu (menaik atau menurun). Prinsip dari binary search terhadap N elemen
dapat dijelaskan seperti berikut :
1) Tentukan posisi awal = 0 dan posisi akhir = N-1.
2) Hitung posisi tengah = [ posisi awal + posisi akhir ] /2
3) Bandingkan data yang dicari dengan elemen posisi tengah.
- Jika sama maka catat posisi dan cetak kemudian berhenti.
- Jika lebih besar maka akan dilakukan pencarian kembali ke bagian kanan dengan posisi awal = posisi tengah + 1
dan posisi akhir tetap kemudian ulangi mulai poin 2.
- Jika lebih kecil maka akan dilakukan pencarian kembali ke bagian kiri dengan nilai posisi awal tetap dan nilai
posisi akhir = posisi tengah -1 kemudian ulangi mulai poin 2.

2. TUGAS PRAKTIKUM

a. Latihan 6_1
Program Sequential Search.
Output :

Script C++ :
#include<iostream>
#include<conio.h>
using namespace std;
main ()

{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
int Nilai [ 20 ] ;
int i, N, angka, Bilangan ;
cout<<"Masukan Banyaknya Bilangan =";
cin>>N;
//Membaca elemen array
for(i=0; i<N; i++)
{
cout<<"Masukan elemen ke-"<<i<<" = ";
cin>>Nilai [ i ] ;
}
//Mencetak elemen array
cout<<"\n\nDeretan Bilangan =";
for(i=0; i<N; i++)
cout<<Nilai [ i ]<<" ";
cout<<"\n\nMasukan Bilangan yang akan dicari = ";
cin>>Bilangan ;
//melakukan pencarian
i=0;
do
{

if(Nilai [ i ]==Bilangan)
angka = Nilai [i];
i++;
}
while (i<N);
if (angka==Bilangan)
cout<<"Bilangan "<<Bilangan <<" ditemukan ";
else
cout<<"Bilangan "<<Bilangan<<" tidak ditemukan ";
getch ();
}

b. Latihan 6_2
Program Sequential Search.
Output :

Script C++ :
#include<iostream>
#include<conio.h>
using namespace std;
main()
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
int Nilai [20];
int Posisi [ 20 ];
int i, N, Bilangan, Banyak= 0;
bool Ketemu;
cout<<"Masukan Banyaknya Bilangan = ";
cin>>N;
//Membaca elemen Array
for(i=0; i<N; i ++)
{
cout<<"Masukan elemen ke-"<<i<<" = ";

cin>>Nilai [ i ];
}
//Mencetak Elemen Array
cout<<"\n\nDeretan Bilangan =";
for (i=0; i<N; i++)
cout<<Nilai [ i ] <<" ";
cout<<"\n\nMasukan Bilangan yang akan dicari = ";
cin>> Bilangan;
//Melakukan Pencarian
for (i=0; i<N; i++)
{
if (Nilai [ i ] ==Bilangan)
{
Ketemu = true;
Posisi [Banyak] = i;
Banyak++;
}
}
if (Ketemu)
{
cout<<"Bilangan "<<Bilangan<<" ditemukan Sebanyak "<<Banyak;
cout<<"\npada posisi ke =";
for(i=0; i<Banyak; i ++)
cout<<Posisi [ i ]<<" ";
}
else
{
cout<<"Bilangan "<<Bilangan<<" tidak ditemukan";
}
getch ();

}
c. Latihan 6_3
Program untuk pencarian dengan metode binary search.
Output :

Script C++
:
#include<stdio.h>
#include<iostream>
#include<conio.h>
#include<iomanip>
using namespace std;
main ( )
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
//deklarasi variabel
int Nilai [ 20 ];
int i, j, N;
int temp, awal, akhir, tengah, Bilangan ;
//proses penginputan data
cout<<"Banyak bilangan : ";
cin>>N;
for (i=0; i<N; i++)
{
cout<<"Elemen ke-"<<i<<"= ";
cin>>Nilai [ i ] ;
}
cout<<"\nElemen Sebelumnya diurut = ";
for (i=0; i<N; i++ )

cout<<setw ( 3 )<<Nilai[i] ;
//proses pengurutan data
for (i=0; i<N; i++ )
{
for (j=i+1; j<N; j++ )
{
if (Nilai [ i ] > Nilai [ j ] )
{
temp = Nilai [ i ];
Nilai [ i ] = Nilai [ j ];
Nilai [ j ] = temp;
}
}}
cout<<"\nElemen Setelah diurut = " ;
for ( i=0; i<N; i++ )
cout<<setw ( 3 )<< Nilai [ i ];
cout<<"\nindeks Elemen = " ;
for ( i=0; i<N; i++ ) cout<<setw ( 3 )<<i;
cout<<"\nMasukan data yang akan anda cari : " ;
cin>>Bilangan;
//proses pencarian data
awal = 0 ;
akhir = N-1;
do
{
tengah =( akhir + awal ) / 2;
if ( Bilangan < Nilai [ tengah ] )
akhir = tengah - 1;
else
awal = tengah + 1 ;
}
while (( akhir >= awal) && ( Nilai [ tengah ] != Bilangan )) ;
if ( Nilai [ tengah ] == Bilangan )
{
cout<<"\nData "<<Bilangan<<" ada dalam array ";
cout<<" pada posisi "<<tengah;
}
else
cout<<"\nData "<<Bilangan<<" tidak ada dalam array\n";
getch () ;
}

d. Latihan 6_4
Program dengan Array of Struct seperti pada Materi II : program biodata pegawai yang terdiri dari field-field seperti NIP,
Nama, Alamat, Agama dan Jabatan. Kemudian tambahkan program menggunakan metode sequential search untuk
mencari seorang pegawai lalu tampilkan biodatanya..
Output :

Script C++ :
#include <iostream>
#include <conio.h>
using namespace std;
struct biodata{
int nip;
char nama[20];
char jabatan[20];
char agama[10];
char alamat[50];
}pegawai[0];
int main()
{
int i, n;
cout <<endl;
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl<<endl;
cout << " ---\t Biodata Pegawai \t--- " <<endl;
cout<< "\t PT. ANCUR LEBUR \t"<<endl;
cout << "===================================" <<endl;
//untuk input data karyawan
cout << "Jumlah Pegawai : "; cin >> n;
for (i=0; i<n; i++){
cout <<endl;

cout << " Pegawai ke - " << i <<endl;

cout << "NIP : "; cin >> pegawai[i].nip;

cin.ignore();

cout << "Nama : "; cin.getline(pegawai[i].nama,20);

cout << "Jabatan : "; cin.getline(pegawai[i].jabatan,20);

cout << "Agama : "; cin >> pegawai[i].agama;

cin.ignore();

cout << "Alamat : "; cin.getline(pegawai[i].alamat,50);

cout <<endl;

//untuk menampilkan data karyawan

cout <<endl <<endl;

cout << "======================================" <<endl;

cout << " Biodata Pegawai " <<endl;

cout << " PT. ANCUR LEBUR " <<endl;

cout << "======================================" <<endl;

int carinip;

bool found;

//carinip -> untuk cari nip pegawai

cout << "Cari Pegawai (NIP) : "; cin >> carinip;

found = false;

i=0;
while ((i<n)&(!found))

if (pegawai[i].nip == carinip)

found = true;

else

i = i+1;

//kondisi nip ketemu

if (found)

cout << "Hasi pencarian NIP [ " << carinip; cout << " ]" <<endl;

cout << "NIP : " << pegawai[i].nip <<endl;

cout << "Nama : " << pegawai[i].nama <<endl;

cout << "Agama : " << pegawai[i].agama <<endl;

cout << "Jabatan : " << pegawai[i].jabatan <<endl;

cout << "Alamat : " << pegawai[i].alamat <<endl;

cout << "-----------------------------------------------" <<endl;

cout <<endl;

else

cout <<"NIP [ ";

cout << carinip; cout << " ] Tidak Terdaftar!! ";

getch();

}
3. PERTANYAAN E-LEARNING

-Apa yang dimaksud tentang Interpolation Search?


jawab :
Metode interpolation search adalah suatu algoritma pencarian yang lebih efisien daripada metode lainnya
karena algoritma ini tidak perlu menjelajah setiap elemen dari data yang ada. Teknik ini menemukan item
dengan memperkirakan seberapa jauh kemungkinan item berada pada posisi saat itu dan pencarian berikutnya.

-Apa yang dimaksud dengan best case dan worst case?


jawab :
Best Case : kompleksitas dengan jumlah paling kecil (Tmin)

Worst Case : kompleksitas dngan jumlah paling besar (Tmax)

4. KESIMPULAN PERTEMUAN VI

Pencarian adalah proses menemukan data tertentu di dalam sekumpulan data yang bertipe sama (tipe dasar atau tipe
bentukan).
Salah satu metode yang dapat kita gunakan adalah metode Pencarian Beruntun (sequential search).
Sequential search lebih efektif jika digunakan pada sekumpulan data yang sedikit, sedangkan binary search efektif jika
digunakan pada sekumpulan data yang berjumlah banyak.
Sequential search dapat digunakan pada sekumpulan data yang urut ataupun tidak urut, sedangkan binary search harus
pada data yang sudah urut. Sedangkan proses pencarian interpolation search hampir mirip dengan proses pencarian
kata dikamus, yaitu kita mencari data yang dimaksud dengan cara memperkirakan letak data.
PERTEMUAN VII
SORTING

1. TEORI DASAR

a) Pengertian SORTING
Sorting atau sering disebut juga sebagai pengurutan data. Salah satu bagian terpenting dari struktur data adalah
proses pengurutan data. Data terkadang akan berada dalam bentuk yang tidak berpola ataupun dengan pola
tertentu yang tidak kita inginkan.

b) Definisi Sorting
Pengurutan (sorting) adalah proses mengatur sekumpulan objek menurut urutan atau susunan tertentu. Urutan
objek tersebut dapat menaik (ascending), yaitu urutan objek yang disusun mulai dari Nilai terkecil hingga
terbesar atau menurun (descending), yaitu urutan objek yang disusun mulai dari Nilai terbesar hingga terkecil.
Jika N buah objek atau data disimpan di dalam array Nilai, maka pengurutan menaik berarti menyusun elemen
array sedemikian sehingga:
NILAI[0]≤NILAI[1]≤NILAI[2]<…

c) Bubble Sort Bubble


Sort adalah metode pengurutan yang membandingkan elemen yang sekarang dengan elemen-elemen
berikutnya. Pembanding elemen dapat dimulai dari awal atau mulai dari paling akhir Contoh : Misalkan kita
mempunyai array sebanyak 8 elemen diurutkan secara menaik dengan
metode bubble Sort: 25,72,30,45,20,15,6,50.
Urutan langkah pengurutannya yang dimulai dari belakang.

d) Quick Sort
Quick Sort merupakan metode terdapat dalam peruses pengurutan data dengan menggunakan perinsip rekursif.
Metode ini menggunakan strategi “pecah belah” dengan mekanisme berikut ini.
Misalkan kita mempunyai array Naik [k..1]. Array dipartisi menjadi 2 bagian array kiri niali[k..m] dan array kanan
Nilai [m+1..l] Dasar mempartisi menjadi dua adalah dengan mengambil elemen yang pertama sebagai elemen
pivot.
2. TUGAS PRAKTIKUM

a. Latihan 7_1
Program Pengurutan dengan Metode Bubble Sort “Pengurutan secara menaik”.
Output :

Script C++ :
#include<iostream>
#include<conio.h>
#include<iomanip>
using namespace std;
main ( )
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
int Nilai [ 20 ];
int i, j, k ,N ;
int temp ;
bool tukar ;
cout<<"Masukan Banyak Bilangan : ";
cin>>N;
for (i=0; i<N; i++)
{
cout<<"Elemen ke-"<<i<<" : ";
cin>>Nilai [ i ];
}
//Proses Cetak Sebelum diurutkan

cout<<"\nData sebelumnya diurut :";


for (i=0; i<N ; i++)
cout<<setw ( 3 )<<Nilai [ i ];
//Proses Pengurutan
i=0;
tukar = true;
while ((i<=N-2) && (tukar))
{
tukar=false;
for (j=N-1; j>=i+1; j--)
{
if( Nilai [ j ] < Nilai [ j-1 ] )
{
temp = Nilai [ j ];
Nilai [ j ] = Nilai [ j-1];
Nilai [ j-1 ] = temp;
tukar = true;
cout<<"\nUntuk j = "<<j<<" : ";
for (k=0; k<N; k++)
cout<<setw(3)<<Nilai [ k ] ;
}
}
i++ ;
}
//Proses Cetak setelah diurutkan
cout<<"\nData setelah di urut : ";
for (i=0; i<N; i++ )
cout<<setw ( 3 )<<Nilai [ i ] ;
getch () ;
}
b. Latihan 7_2
Program Pengurutan dengan Metode Bubble Sort “Pengurutan secara menurun”.
Output :

Script C++ :
#include<iostream>
#include<conio.h>
#include<iomanip>
using namespace std;
main ( )
{
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
int Nilai [ 20 ];
int i, j, k ,N ;
int temp ;
bool tukar ;
cout<<"Masukan Banyak Bilangan : ";
cin>>N;
for (i=0; i<N; i++)
{
cout<<"Elemen ke-"<<i<<" : ";
cin>>Nilai [ i ];
}
//Proses Cetak Sebelum diurutkan
cout<<"\nData sebelumnya diurut :";
for (i=0; i<N ; i++)
cout<<setw ( 3 )<<Nilai [ i ];
//Proses Pengurutan
i=0;
tukar = true;
while ((i<=N-2) && (tukar))
{
tukar=false;
for (j=N-1; j>=i+1; j--)
{
if( Nilai [ j ] < Nilai [ j-1 ] )
{
temp = Nilai [ j ];
Nilai [ j ] = Nilai [ j-1];
Nilai [ j-1 ] = temp;
tukar = true;
cout<<endl;
for(k=0; k<N; k++ )
cout<<setw (3)<<Nilai [ k ] ; }
}
i++ ;
}
//Proses Cetak setelah diurutkan
cout<<"\nData setelah di urut : ";
for (i=0; i<N; i++ )
cout<<setw ( 3 )<<Nilai [ i ] ;
getch () ;
}

c. Latihan 7_3
Program untuk Pengurutan dengan Metode Quick Sort “Pengurutan Secara menaik”.
Output :

Script C++ :
#include<iostream>
#include<conio.h>
#include<iomanip>
using namespace std;
void Cetak (int data [], int n)
{
int i ;
for ( i=0 ; i<n ; i++)
cout<<setw ( 3 )<<data [ i ] ;
cout<<"\n" ;
}
int Partisi ( int data [], int p, int r )
{
int x, i, j, temp;
x = data [ p ];
i=p;
j=r;
while (1)
{
while( data[j]>x)
j--;
while( data[i]<x)
i++;
if(i<j)
{

temp = data [ i ];
data [ i ] = data [ j ];
data [ j ] = temp;
}
else
return j;
}
}
void Quick_Sort (int data [], int p, int r )
{
int q ;
if (p<r)
{
q=Partisi (data, p,r+1) ;
Quick_Sort (data, p, q ) ;
Quick_Sort (data, q+1, r) ;
}
}

main ()
{
cout<<" SIGIT PRASTIYO "<<endl;

cout<<" 191011402768 "<<endl;


cout<<"==============="<<endl;
int Nilai [ 20 ];
int i, N ;
cout<<"Masukan Banyak Bilangan : ";
cin>>N;
for(i=0; i<N; i++ )
{
cout<<"Elemen ke-"<<i<<" : ";
cin>>Nilai [ i ] ;
}
cout<<"\nData Sebelum di urut : ";
Cetak ( Nilai, N ) ;
cout<<endl;
Quick_Sort (Nilai, 0, N-1 );
cout<<"\nData Setelah di urut : ";
Cetak (Nilai, N ) ;
getch ( ) ;}

d. Latihan 7_4
Program menu untuk menampilkan 3 program di atas, menggunakan perintah switch.
Output :
Script C++ :
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iomanip>
using namespace std;
main(){
menu:
system("cls");
int data[15]={10,12,88,2,95,36,47,77,51,13,75,85,95,23};
int i,u,maks,j,t,min;
int pilihan;
cout<<" SIGIT PRASTIYO "<<endl;
cout<<" 191011402768 "<<endl;
cout<<"==============="<<endl;
cout<<"--------Menu----------\n";
cout<<" 1.Metode Bubble Sort (Pengurutan secara menaik)\n";
cout<<" 2.Metode Bubble Sort (Pengurutan secara menurun)\n";
cout<<" 3.Metode Quick Sort (Pengurutan Secara menaik)\n";
cout<<" 4.Exit\n";
cout<<"----------------------\n";
cout<<"Masukan Pilihan anda : ";cin>>pilihan;
cout<<endl;
switch (pilihan)
{
case 1 :
cout<<"Data sebelum di urut\n\n";
for (i=0;i<15;i++){
cout<<setw(3)<<data[i]<<" ";
}

cout<<endl;

//Proses Pengurutan

u=15-1;

for(i=0;i<=15-2;i++){

maks=0;

for(j=1;j<=u;j++)

if(data[j]>data[maks])

maks=j;

t=data[u];

data[u]=data[maks];

data[maks]=t;

u--;

cout<<endl;

for(int a=0;a<15;a++)

cout<<setw(3)<<data[a];

cout<<"\n\nData setelah di urut : \n\n";

for(i=0;i<15;i++)

cout<<setw(3)<<data[i];

cout<<endl<<endl;

lanjut:

cout<<"Tekan ENTER untuk kembali ke menu";

getch();

goto menu;

case 2 :

cout<<"Data sebelum di urut\n\n";


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

cout<<setw(3)<<data[i]<<" ";

cout<<endl;

//Proses Pengurutan

u=15-1;

for(i=0;i<=15-2;i++){

maks=i;

for(j=i+1;j<=u;j++){

if(data[j]>data[maks])

maks=j;

t=data[i];

data[i]=data[maks];

data[maks]=t;

cout<<endl;

for(int a=0;a<15;a++)

cout<<setw(3)<<data[a];

cout<<"\n\nData setelah di urut : \n\n";

for(i=0;i<15;i++)

cout<<setw(3)<<data[i];

cout<<endl<<endl;

goto lanjut;

getch();

goto menu;

case 3:

cout<<"Data sebelum di urut\n\n";

for (i=0;i<15;i++){
cout<<setw(3)<<data[i]<<" ";

cout<<endl;

//Proses Pengurutan

for(i=0;i<=15-2;i++){

min=i;

for(j=i+1;j<15;j++){

if(data[j]<data[min])

min=j;

t=data[i];

data[i]=data[min];

data[min]=t;

cout<<endl;

for(int a=0;a<15;a++)
cout<<setw(3)<<data[a];
}
cout<<"\n\nData setelah di urut : \n\n";
for(i=0;i<15;i++)
cout<<setw(3)<<data[i];
cout<<endl<<endl;
goto lanjut;
getch();
goto menu;
case 4:
exit(0);
}
}

3. PERTANYAAN DARI E-LEARNING

Maksud dari ascending dan descending itu apa


jawab :
Ascending adalah pengurutan dari yang terkecil ke yang terbesar. Descending adalah pengurutan yang terbesar ke yang
terkecil.

Dalam metode buble sort elemen terkecil dilambungkan memiliki maksud ?


jawab :
Ide dari Bubble sort adalah gelembung air yang akan “mengapung” untuk table yang terurut menaik (ascending). Elemen
bernilai kecil akan “diapungkan” (ke indeks terkecil), artinya diangkat ke “atas” (indeks terkecil) melalui pertukaran.
Karena algoritma ini melakukan pengurutan dengan cara membandingkan elemen-elemen data satu sama lain, maka
bubble sort termasuk ke dalam jenis algoritma comparison-based sorting.

4. KESIMPULAN PERTEMUAN VII

Kesimpulan dari pelajaran sorting kita menjadi mengerti betapa pentingnya pengurutan data agar data dapat tertata
rapi dan memudahkan pencarian. Sorting bukan hanya untuk pelajaran namun didalam kehidupan sehari hari pun kita
perlu melakukan Sorting terutama terhadap barang yang kita miliki karena dengan adanya penyortingan terhadap
barang yang kita miliki suatu saat kita ingin mencari barang tersebut akan sangat mudah karena barang sudah di urutkan
secara benar.
Sorting dibagi menjadi beberapa bagian, diantaranya : insertion sort, selection sort, marge sort dan quick sort. Yang
memiliki kelebihan dan kekurangan tersendiri. Dari beberapa shorting tersebut memiliki tujuan yang sama, yaitu
mengurutkan data untuk mempermudah pencarian dan data akan menjadi sistematis

PERTEMUAN VIII
SORTING LANJUT

1. TEORI DASAR

Pada pertemuan kali ini kita membahas kelanjutan sorting dari pertemuan VII . Yang akan menjelaskan tentang metode-
metode pada sorting

a. Metode Maximum / Minimum Sort


(Metode Maximum / Minimum Sort )dilakukan berdasarkan pemilihan elemen maksimum / minimum, maka
metode ini disebut juga dengan metode pemilih/seleksi (Selection Sort).
b. Metode Maximum
Sort Metode ini disebut juga dengan metode Maksimum karena didasarkan pada pemilihan elemen
maksimum sebagai dasar pengurutan. Konsepnya adalah memilih elemen maksimum kemudian
mempertukarkan elemen maksimum tersebut dengan elemen paling akhir untuk urut menaik dan elemen
pertama untuk urut menurun. Demikian seterusnya hingga semua elemen terurut.
c. Metode Minimum
Sort Metode ini disebut juga dengan metode minimum karena didasarkan pada pemilihan elemen minimum
sebagai dasar pengurutan. Konsepnya adalah memilih elemen minimum kemudian mempertukarkan elemen
minimum tersebut dengan elemen paling akhir untuk urut menaik dan elemen pertama untuk urut
menurun. Demikian seterusnya hingga semua elemen terurut.
2. TUGAS PRAKTIKUM
a. Latihan 8_1 Program untuk Pengurutan dengan Metode Maximum Sort “Pengurutan Secara Menaik”
Output :

Script C++ :

Anda mungkin juga menyukai