Disusun Oleh
NIM : 191011402768
KELAS : 04-TPLE-008-Reg.CS
UNIVERSITAS PAMULANG
Jl. Surya Kencana No.1 Pamulang Telp (021) 7412566, Fax (021) 74125666
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.
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;
Jumlah += Nilai [ i ];
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;
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;
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)
{
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;
}
}
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
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<<"NIM : "<<Mhs.Nim ;
cout<<"\nNama : "<<Mhs.Nama ;
cout<<"\nAlamat : \n";
cout<<"\n\tJalan : "<<Mhs.Alamat.Jaln;
cout<<"\n\tKota : "<<Mhs.Alamat.Kota;
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 (){
cin>>Mhs[i].Nim ;
cin>>Mhs[i].Nama ;
cout<<"Alamat : ";
cin>>Mhs[i].Alamat ;
cout<<"Umur : ";
cin>>Mhs[i].Umur ;
}
}
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<<"\nAlamat : \n" ;
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<<"\n====================================================="<<endl;
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<<"\n====================================================="<<endl;
getch();
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();
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;
}
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<<"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>
main ()
cout<<"==============="<<endl;
int *Ptr_Nilai ;
int i;
Ptr_Nilai = Nilai ;
cout<<"\nNilai Ptr_Nilai"<<Ptr_Nilai;
for ( i=0;i<7;i++)
for(i=0;i<7;i++)
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;
}
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<<"==============="<<endl;
cout<<"Nilai a = "<<a;
cout<<"\nNilai b = "<<b;
cout<<"\nNilai c = "<<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<<"==============="<<endl;
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<<"==============="<<endl;
Mahasiswa Mhs;
Baca (&Mhs);
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;
}
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;
cin.ignore();
cin.ignore();
cout <<endl;
int carinip;
bool found;
found = false;
i=0;
while ((i<n)&(!found))
if (pegawai[i].nip == carinip)
found = true;
else
i = i+1;
if (found)
cout << "Hasi pencarian NIP [ " << carinip; cout << " ]" <<endl;
cout <<endl;
else
getch();
}
3. PERTANYAAN E-LEARNING
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]<…
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
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;
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];
for(i=0;i<15;i++)
cout<<setw(3)<<data[i];
cout<<endl<<endl;
lanjut:
getch();
goto menu;
case 2 :
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];
for(i=0;i<15;i++)
cout<<setw(3)<<data[i];
cout<<endl<<endl;
goto lanjut;
getch();
goto menu;
case 3:
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);
}
}
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
Script C++ :