0% menganggap dokumen ini bermanfaat (0 suara)
6 tayangan

Modul 5

Diunggah oleh

rzakii795
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
6 tayangan

Modul 5

Diunggah oleh

rzakii795
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 18

LAPORAN PRAKTIKUM

MODUL 5
ALGORITMA DAN DEV C++
MATA KULIAH
FUNDAMENTAL PROGRAMMING
DOSEN PENGAMPU
Dr. Syafrijon, S.Pd M.Kom

Oleh

Ahmad Zaki / 24343080

Teknik Informatika
Departemen Teknik Elektronika
Universitas Negeri Padang

2024
PRAKTIKU 5
Record/Structure

Tujuan Praktikum :
Mempraktekkan konsep record/structure pada bahasa pemrograman C++
Record/Structure adalah suatu tipe data yang merupakan kumpulan dari atribut-atribut
(field) suatu objek. Pada record tipe elemen bisa berbeda-beda tidak seperti array yang
mengharuskan mempunyai tipe elemen yang sama.

Struktur (Structure) C++ adalah koleksi variabel dibawah sebuah nama, variabel – variabel
ini dapat
berbentuk berbagai type, yaitu sebagai berikut :
- Int
- Float
- Char
- Dan lain-lain

Perbedaan utama antara struktur dan array adalah bahwa dalam array memiliki tipe data
yang sama, sedangkan struktur adalah sebuah koleksi dari variabel – variabel dibawah
nama yang sama, dimana setiap elemen dapat saja memiliki tipe yang berbeda.

Percobaan 5.1: Deklarasi Record/Structure 1


Struktur dalam C++ dideklarasikan menggunakan keyword struct diikuti dengan nama
struktur atau sering disebut dengan tag. Variabel – variabel struktur dideklarasikan dalam
kurung kurawal { }, setiap elemennya dipisahkan dengan tanda titik koma atau semi colom.
struct namaRecord
{ tipe_atribut1 atribut1
tipe_atribut2 atribut2
tipe_atribut3 atribut3
…..
}

Contoh:
struct mahasiswa { //deklarasi struktur
string nama; //atribut/member
int nim; //atribut/member
double nilai; //atribut/member
} mhs; //variabel struktur

Cara mengakses variabel di dalam record/struct adalah dengan operator dot (.). Misalkan
terdapat nama record/struct mhs, dan variabel yang akan diakses di dalamnya adalah nim,
maka cara mengaksesnya adalah “ mhs.nim “yang artinya kita mengakses nim yang
merupakan satu atribut dari data mhs.
#include <iostream>
#include <string>
using namespace std;

main() {
struct car {
string brand;
string model;
int year;
} myCar1, myCar2;

myCar1.brand = "BMW";
myCar1.model = "X5";
myCar1.year = 1999;

myCar2.brand = "Ford";
myCar2.model = "Mustang";
myCar2.year = 1969;

cout <<"Car 1 : "<<endl;


cout <<"\tBrand : "<<myCar1.brand<<endl;
cout <<"\tModel : "<<myCar1.model<<endl;
cout <<"\tYear : "<<myCar1.year<<endl;
cout <<"Car 2 : "<<endl;
cout <<"\tBrand : "<<myCar2.brand<<endl;
cout <<"\tModel : "<<myCar2.model<<endl;
cout <<"\tYear : "<<myCar2.year<<endl;
}

Ouput:
Percobaan 5.2: Deklarasi Record/Structure 2

#include<iostream>
using namespace std;

main(){
struct
data_tanggal{ int
tanggal;
int bulan;
int tahun;
};

data_tanggal tgl1, tgl2;

cout<<"Input Data Tanggal 1: "<<endl; cout<<"\


tTanggal : "; cin>>tgl1.tanggal; cout<<endl;
cout<<"\tBulan : ";cin>>tgl1.bulan;cout<<endl;
cout<<"\tTahun : ";cin>>tgl1.tahun;cout<<endl;

tgl2.tanggal = tgl1.tanggal;
tgl2.bulan = tgl1.bulan;
tgl2.tahun = tgl1.tahun;

cout<<"Tanggal 1: "<<tgl1.tanggal<<"/"<<tgl1.bulan<<"/"<<tgl1.tahun<<endl;
cout<<"Tanggal 2: "<<tgl2.tanggal<<"/"<<tgl2.bulan<<"/"<<tgl2.tahun<<endl;
}

Output:
#include <iostream>
#include <cstring>
using namespace std;

struct books
{ char
title[50];
char author[50];
char subject[100];
int book_id;

main() {
cout<<"Program Daftar Nilai Mahasiswa"<<endl;
cout<<" "<<endl;

struct books book[5]; //dapat juga menggunakan tipe array

strcpy( book[1].title, "Learn C++ Programming");


strcpy( book[1].author, "Chand Miyan");
strcpy( book[1].subject, "C++ Programming");
book[1].book_id = 6495407;

book[2] = book[1];

cout<<"Buku ke-1 :"<<endl;


cout << "\tTitle : " << book[1].title <<endl;
cout << "\tAuthor : " << book[1].author <<endl;
cout << "\tSubject : " << book[1].subject <<endl;
cout << "\tID : " << book[1].book_id <<endl;

cout<<"Buku ke-2 :"<<endl;


cout << "\tTitle : " << book[2].title <<endl;
cout << "\tAuthor : " << book[2].author <<endl;
cout << "\tSubject : " << book[2].subject <<endl;
cout << "\tID : " << book[2].book_id <<endl;
}

Percobaan 5.3: Deklarasi Record/Structure 3


Output:
Percobaan 5.4: Nested Record/Structure

#include<iostream>
using namespace std;

main() {
struct Tgl_Lahir
{
int Tanggal;
int Bulan;
int Tahun;
};

struct Mahasiswa
{
char Nim[9];
char Nama[25];
Tgl_Lahir Lahir;
};

Mahasiswa Mhs;
cout<<"NIM : "; cin.getline(Mhs.Nim,9);
cout<<"Nama : "; cin.getline(Mhs.Nama,25);
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<<"\nTanggal Lahir : "<<Mhs.Lahir.Tanggal<<"-";
cout<<Mhs.Lahir.Bulan<<"-"<<Mhs.Lahir.Tahun;
}
Output:
TUGAS

1. Di bawah adalah contoh gambar Koordinat Kartesian.

A, B, C, D, T adalah titik-titik yang ada dalam koordinat kartesian


T merupakan titik tengah dari 2 titik A dan B,
C merupakan titik hasil dari pencerminan titik A terhadap sumbu X
D merupakan titik hasil dari pencerminan titik A terhadap sumbu Y

Buatlah Fungsi (tampilkan hasilnya) untuk:


a. Mencari titik tengah (T) dari 2 buah koordinat A dan B. Diketahui rumus
untuk titik tengah adalah:
T.absis = (A.absis + B.ordinat) / 2
T.ordinat = (A.ordinat + B.ordinat) /
2
b. Mencari koordinat hasil pencerminan titik tengah (T) terhadap sumbu X dan
terhadap sumbu Y

Jawab:

Implementasi C:
/*
Nama File: Latihan soal Modul 5
Programmmer: Ahmad Zaki
Nim: 24343080
Tgl Pembuatan: 09 - 11 - 2024
Deskripsi: matematika yaitu tentang koordinat lah
*/

#include <iostream>
using namespace std;

// Struct untuk menyimpan koordinat titik


struct Titik {
float absis;
float ordinat;
};

// Fungsi untuk menghitung titik tengah dari dua titik


Titik hitungTitikTengah(Titik A, Titik B) {
Titik T;
T.absis = (A.absis + B.absis) / 2;
T.ordinat = (A.ordinat + B.ordinat) / 2;
return T;
}

// Fungsi untuk mencerminkan titik terhadap sumbu X


Titik cerminTerhadapSumbuX(Titik T) {
Titik hasil;
hasil.absis = T.absis;
hasil.ordinat = -T.ordinat; // ordinat berubah tanda
return hasil;
}

// Fungsi untuk mencerminkan titik terhadap sumbu Y


Titik cerminTerhadapSumbuY(Titik T) {
Titik hasil;
hasil.absis = -T.absis; // absis berubah tanda
hasil.ordinat = T.ordinat;
return hasil;
}

int main() {
Titik A, B, T, C, D;

// Input koordinat titik A dan B


cout << "Masukkan koordinat titik A (absis ordinat): ";
cin >> A.absis >> A.ordinat;
cout << "Masukkan koordinat titik B (absis ordinat): ";
cin >> B.absis >> B.ordinat;

// Menghitung titik tengah


T = hitungTitikTengah(A, B);
cout << "\nTitik Tengah (T) dari A dan B: (" << T.absis << ", " << T.ordinat << ")\n";

// Mencari hasil pencerminan titik T terhadap sumbu X


C = cerminTerhadapSumbuX(T);
cout << "Hasil pencerminan titik T terhadap sumbu X: (" << C.absis << ", " << C.ordinat << ")\n";

// Mencari hasil pencerminan titik T terhadap sumbu Y


D = cerminTerhadapSumbuY(T);
cout << "Hasil pencerminan titik T terhadap sumbu Y: (" << D.absis << ", " << D.ordinat << ")\n";

return 0;
}
Output
2. Buatlah program untuk mencari jumlah biaya parkir dari selisih 2 waktu (datang
dan pulang) dengan aturan 1 jam pertama = Rp. 3000 dan per jam berikutnya =
Rp. 3000.
Contoh tampilan yang diinginkan:

Jam Datang = 10 :10 : 10


Jam Pulang = 11 :13 : 25
Lama Parkir = 1 : 3 : 15
Bayar = Rp. 6000

Jawab:

Implemantasi C:
#include <iostream>

using namespace std;

struct Waktu {

int jam;

int menit;

int detik;

};

// Fungsi untuk menghitung selisih waktu dalam detik

int selisihDetik(Waktu datang, Waktu pulang) {

int totalDatang = datang.jam * 3600 + datang.menit * 60 + datang.detik;

int totalPulang = pulang.jam * 3600 + pulang.menit * 60 + pulang.detik;

return totalPulang - totalDatang;

// Fungsi untuk mengonversi detik menjadi format jam, menit, dan detik

Waktu konversiWaktu(int totalDetik) {

Waktu durasi;

durasi.jam = totalDetik / 3600;

totalDetik %= 3600;

durasi.menit = totalDetik / 60;

durasi.detik = totalDetik % 60;


return durasi;

int main() {

Waktu datang, pulang;

cout << "Masukkan Jam Datang (hh mm ss): ";

cin >> datang.jam >> datang.menit >> datang.detik;

cout << "Masukkan Jam Pulang (hh mm ss): ";

cin >> pulang.jam >> pulang.menit >> pulang.detik;

int selisih = selisihDetik(datang, pulang);

Waktu lamaParkir = konversiWaktu(selisih);

// Hitung biaya parkir

int biaya;

if (lamaParkir.jam >= 1 || (lamaParkir.jam == 0 && (lamaParkir.menit > 0 || lamaParkir.detik > 0)))


{

biaya = 3000; // Biaya untuk 1 jam pertama

if (lamaParkir.jam > 1 || (lamaParkir.jam == 1 && (lamaParkir.menit > 0 || lamaParkir.detik >


0))) {

biaya += (lamaParkir.jam - 1) * 3000;

} else {

biaya = 3000; // Minimum biaya untuk kurang dari 1 jam

// Output hasil

cout << "\nJam Datang: " << datang.jam << ":" << datang.menit << ":" << datang.detik;

cout << "\nJam Pulang: " << pulang.jam << ":" << pulang.menit << ":" << pulang.detik;

cout << "\nLama Parkir: " << lamaParkir.jam << " jam " << lamaParkir.menit << " menit " <<
lamaParkir.detik << " detik";

cout << "\nBiaya Parkir: Rp. " << biaya << endl;
return 0;

OUTPUT
Sesuai yang diiinginkan dan terlampir pada contoh

Versi saya sendiri:


3. Buatlah program untuk menginputkan dan menampilkan data KTP untuk 3 orang, dengan
nested record/structure untuk tanggal lahir dan detail alamat.

Jawab:
Implementasi C:
#include <iostream>
using namespace std;

struct Tanggal {
int tanggal;
int bulan;
int tahun;
};

struct Alamat {
char jalan[50];
char kota[30];
char provinsi[30];
int kodePos;
};

struct KTP {
char nama[50];
char nik[17];
Tanggal lahir;
Alamat alamat;
};

int main() {
KTP orang[3];

// Input data KTP untuk 3 orang


for (int i = 0; i < 3; i++) {
cout << "Masukkan data untuk orang ke-" << i + 1 << ":\n";
cout << "Nama: ";
cin.ignore();
cin.getline(orang[i].nama, 50);
cout << "NIK: ";
cin.getline(orang[i].nik, 17);

cout << "Tanggal Lahir:\n";


cout << "\tTanggal: ";
cin >> orang[i].lahir.tanggal;
cout << "\tBulan: ";
cin >> orang[i].lahir.bulan;
cout << "\tTahun: ";
cin >> orang[i].lahir.tahun;

cin.ignore(); // Membersihkan buffer input sebelum membaca dengan getline lagi

cout << "Alamat:\n";


cout << "\tJalan: ";
cin.getline(orang[i].alamat.jalan, 50);
cout << "\tKota: ";
cin.getline(orang[i].alamat.kota, 30);
cout << "\tProvinsi: ";
cin.getline(orang[i].alamat.provinsi, 30);
cout << "\tKode Pos: ";
cin >> orang[i].alamat.kodePos;
cin.ignore(); // Membersihkan buffer untuk input berikutnya
cout << endl;
}

// Menampilkan data KTP untuk 3 orang


cout << "\nData KTP yang telah dimasukkan:\n";
for (int i = 0; i < 3; i++) {
cout << "Data orang ke-" << i + 1 << ":\n";
cout << "Nama: " << orang[i].nama << endl;
cout << "NIK: " << orang[i].nik << endl;
cout << "Tanggal Lahir: " << orang[i].lahir.tanggal << "-" << orang[i].lahir.bulan << "-" <<
orang[i].lahir.tahun << endl;
cout << "Alamat:\n";
cout << "\tJalan: " << orang[i].alamat.jalan << endl;
cout << "\tKota: " << orang[i].alamat.kota << endl;
cout << "\tProvinsi: " << orang[i].alamat.provinsi << endl;
cout << "\tKode Pos: " << orang[i].alamat.kodePos << endl;
cout << endl;
}

return 0;
}

Input dan Output


\
Output

Anda mungkin juga menyukai