Praktikum Struktur Data
Praktikum Struktur Data
( Array )
TUGAS PRAKTIKUM
Membuat program untuk menginisialisasikan 10 bilangan bulat kemudian hitung jumlah dan
rata
#include <iostream.h>
#include <conio.h>
using namespace std;
int main()
{
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 ();
}
KESIMPULAN
Kesimpulan dari pembelajaran tentang array dapat disusun sebagai berikut:
2. **Manfaat Keberlanjutan:**
- Array memungkinkan pengelolaan sejumlah besar data dengan mudah, karena elemen-
elemen array dapat diakses dengan menggunakan indeks.
- Ini membuatnya efisien untuk melakukan operasi terhadap setiap elemen dalam array,
seperti iterasi atau pemrosesan data secara masal.
4. **Pentingnya Indeks:**
- Penanganan indeks dalam array sangat penting dan dapat berpengaruh pada keamanan dan
kebenaran program.
- Kesalahan dalam mengelola indeks dapat menyebabkan akses ke memori yang tidak valid
atau masalah lainnya.
- Pemahaman yang kuat tentang array dapat membantu dalam memahami dan
mengimplementasikan struktur data yang lebih kompleks.
9. **Pemecahan Masalah:**
- Kemampuan untuk menggunakan array secara efektif adalah keterampilan yang sangat
penting dalam pemrograman dan pemecahan masalah komputasional.
- Mengetahui kapan harus menggunakan array dan kapan menggunakan struktur data lain
merupakan bagian integral dari keahlian pengembangan perangkat lunak.
Dengan memahami konsep dan penerapan array, seorang pengembang dapat membuat
program yang lebih efisien, mudah dimengerti, dan dapat diandalkan dalam mengelola dan
memanipulasi data.
PERTEMUAN III
( STRUCTURE )
TUGAS PRAKTIKUM
Membuat program untuk membaca biodata yang diinput Nim, Nama, Alamat, dan Umur
kemudian cetak.
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
struct Mahasiswa
{
char Nim[9];
char Nama[25];
char Alamat[40];
short Umur;
};
main()
{
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;
cout << "\n\n\nNim : " << Mhs.Nim;
cout << "\nNama : " << Mhs.Nama;
cout << "\nAlamat : " << Mhs.Alamat;
cout << "\nUmur : " << Mhs.Umur;
getch();
}
KESIMPULAN
Berikut adalah beberapa kesimpulan dari pembelajaran tentang struktur data, khususnya
struktur data bertipe "structure":
4. **Penghematan Memori:**
- Dengan menggunakan struktur, Anda dapat menghindari membuat banyak variabel terpisah
dan sebaliknya menggunakan satu struktur yang menyatukan data terkait.
- Hal ini dapat menghemat memori dan memudahkan manajemen data.
PERTEMUAN IV
( POINTER )
TUGAS PRAKTIKUM
Membuat program untuk menyimpan nilai pada suatu Alamat menggunakan operator
Deference.
#include<iostream.h>
#include<conio.h>
main ()
{
int x=8, y;
int *xPtr;
xPtr = &x;
cout<<"Nilai x = "<< x <<endl ;
cout<<"Alamat x = "<<&x<<endl ;
cout<<"Alamat x = "<<xPtr<<endl ;
cout<<"Nilai yang disimpan pada alamat " ;
cout<<xPtr<<" adalah "<< *xPtr;
getch ();
}
KESIMPULAN
Berikut adalah beberapa kesimpulan yang dapat diambil dari pembelajaran tentang pointer:
- Pointer memainkan peran krusial dalam alokasi memori dinamis menggunakan fungsi seperti
`malloc()` dan `free()`.
- Dynamic memory allocation memungkinkan penggunaan memori yang fleksibel dan dapat
disesuaikan selama runtime.
5. **Referensi ke Fungsi:**
- Pointer dapat digunakan untuk membuat referensi ke fungsi, memungkinkan penggunaan
fungsi sebagai argumen untuk fungsi lain atau penyimpanan dalam struktur data.
- Pointers digunakan dalam pengembangan struktur data yang kompleks seperti linked lists,
trees, dan graph.
- Mereka memungkinkan hubungan dan pengelolaan data yang dinamis dan fleksibel.
7. **Pass by Reference:**
- Penggunaan pointer memungkinkan fungsi untuk menerima parameter dengan "pass by
reference," di mana perubahan pada parameter akan terlihat di luar fungsi tersebut.
8. **Pentingnya Inisialisasi:**
- Inisialisasi pointer adalah langkah yang penting untuk menghindari penggunaan pointer yang
tidak valid.
- Pointer yang tidak diinisialisasi atau yang menunjuk ke alamat yang tidak valid dapat
menyebabkan perilaku program yang tidak terduga.
- Kemampuan untuk melacak alamat memori dan mengerti bagaimana pointer bekerja
membantu dalam mencegah dan menyelesaikan masalah dalam kode.
TUGAS PRAKTIKUM
Buatlah program fungsi dengan call by value.
#include<iostream.h>
#include<conio.h>
void Tukar ( int a, int b);
main()
{
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;
}
KESIMPULAN
Berikut adalah beberapa kesimpulan yang dapat diambil dari pembelajaran tentang fungsi
(function):
1. **Struktur Modular:**
- Fungsi memungkinkan struktur modular dalam kode, memecah program menjadi bagian-
bagian yang lebih kecil dan lebih terkelola.
- Ini meningkatkan keterbacaan dan pemeliharaan kode.
2. **Reusabilitas Kode:**
- Fungsi memungkinkan reusabilitas kode. Satu fungsi dapat dipanggil dari berbagai bagian
program atau bahkan dari program-program lain.
3. **Pengurangan Redundansi:**
- Penggunaan fungsi dapat mengurangi redundansi dalam kode, karena logika atau tugas
tertentu dapat dikapsulasi dalam sebuah fungsi dan dipanggil ulang jika diperlukan.
4. **Pembagian Tugas:**
- Fungsi memungkinkan pembagian tugas dalam pengembangan perangkat lunak. Tim dapat
bekerja secara terpisah pada fungsi-fungsi tertentu tanpa harus memahami keseluruhan
program.
- Fungsi dapat menerima parameter sebagai input dan mengembalikan nilai sebagai output.
- Ini memungkinkan fungsi beradaptasi dengan data yang berbeda dan memberikan hasil yang
dapat digunakan di tempat lain dalam program.
9. **Handling Errors:**
- Fungsi memungkinkan penanganan kesalahan yang lebih efisien. Kesalahan dalam fungsi
tertentu dapat ditangani di tingkat fungsi itu sendiri atau di tingkat pemanggil.
- Fungsi dapat digunakan sebagai argumen untuk fungsi lain atau dapat dikembalikan sebagai
nilai (callback dan high order functions).
- Ini memungkinkan pengembangan paradigma pemrograman berorientasi fungsional.
Pemahaman yang kuat tentang konsep fungsi sangat penting dalam pengembangan perangkat
lunak karena fungsi memainkan peran kunci dalam menyusun program secara modular dan
dapat diandalkan. Kemampuan untuk merancang dan mengimplementasikan fungsi dengan
baik meningkatkan efisiensi dan pemeliharaan program secara keseluruhan.
PERTEMUAN VI
( SEARCHING )
TUGAS PRAKTIKUM
4. **Pentingnya Pengurutan:**
- Beberapa algoritma pencarian, seperti binary search, memerlukan data yang terurut.
Pemahaman yang baik tentang pencarian dalam pemrograman C++ adalah keterampilan yang
krusial, karena pencarian adalah operasi umum yang digunakan dalam berbagai konteks dan
aplikasi. Pemilihan algoritma pencarian yang sesuai dapat signifikan memengaruhi kinerja dan
efisiensi program.
PERTEMUAN VII
( SORTING )
TUGAS PRAKTIKUM
Membuat program Pengurutan dengan Metode Bubble Sort “Pengurutan secara menaik”
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
main ( )
{
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 () ;
}
KESIMPULAN
Berikut adalah beberapa kesimpulan yang dapat diambil dari pembelajaran tentang pengurutan
(sorting) dalam pemrograman:
8. **Pentingnya Pengujian:**
- Pengujian algoritma pengurutan sangat penting untuk memastikan kebenaran dan
kinerja algoritma dalam berbagai situasi.
Pemahaman yang mendalam tentang algoritma pengurutan dan pemilihan algoritma yang
tepat sangat penting dalam pengembangan perangkat lunak. Pengurutan efisien dapat
meningkatkan kinerja program secara keseluruhan dan memberikan pengalaman pengguna
yang lebih baik.
LAPORAN AWAL
STRUKTUR DATA
LAPORAN KE- 1
Disusun Oleh :
Nama : Bagus Sadewa
NIM 181011450198
Kelas : 04TPLE004