MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR
S1 PTI – TE UM
MODUL 9 STRUCT (STRUKTUR) A. Tujuan Setelah mempelajari bab ini diharapkan mahasiswa akan mampu : 1. Mengenal dan memahami penggunaan struct (struktur) dalam listing program. 2. Membuat program sederhana dengan menerapkan konsep struct (struktur)
B. Petunjuk 1. Awali setiap aktivitas anda dengan doa, agar anda lancar dalam belajar 2. Pahami tujuan, dasar teori, dan latihan-latihan praktikum dengan baik 3. Kerjakan tugas-tugas praktikum dengan baik, jujur, dan sabar 4. Tanyakan kepada instruktur apabila ada hal-hal yang kurang jelas
C. Alat dan Bahan 1. PC/ laptop yang memenuhi kapasitas untuk pemrograman bahasa C++ 2. Software C++ 3. Modul/handout materi yang akan di praktekkan
D. Struct (Struktur) Definisi Struktur Struktur yaitu pengelompokan dari variabel-variabel atau sejumlah data dengan tipe yang berlainan yang bernaung dalam satu nama yang sama. Struktur biasa digunakan untuk mengelompokkan beberapa informasi yang berkaitan dengan sebuah kesatuan, atau biasanya disebut dengan record.
Deklarasi Struktur Cara mendeklarasikan struktur adalah dengan menggunakan kata kunci struct. Perhatikan contoh penulisan struktur berikut ini:
1|Page
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR
struct data_tanggal { int tahun; int bulan; int tanggal; }; data_tanggal tanggal_lahir;
S1 PTI – TE UM
Nama struktur Sejumlah data struktur dengan tipe berbeda Nama struktur digunakan sebagai tipe data suatu variabel
Pada Contoh di atas, struktur bernama data_tanggal, yang tersusun atas 3 unit penyusunnya yaitu tahun, tanggal, dan bulan. Setelah dibuat struktur tanggal, selanjutnya struktur tersebut dapat digunakan sebagai tipe data suatu variabel, dalam hal ini disebut tipe data abstrak. Berikut contoh programnya. Contoh 1 : #include
#include void main() { struct data_tanggal { int tanggal; int bulan; int tahun; }; data_tanggal tanggal_lahir; tanggal_lahir.tanggal = 1; tanggal_lahir.bulan = 9; tanggal_lahir.tahun = 1979; cout << tanggal_lahir.tanggal << „/‟ << tanggal_lahir.bulan << „/‟ << tanggal_lahir.tahun; } Misalkan terdapat 2 buah variabel tgl1 dan tgl2 sama-sama bertipe data_tanggal. Selanjutnya diinginkan mengcopy isi dari tgl1 ke tgl2, maka dapat dilakukan dengan perintah assignment biasa. Perhatikan Contoh 2 :
2|Page
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR
S1 PTI – TE UM
Contoh 2. #include #include void main() { struct data_tanggal { int tanggal; int bulan; int tahun; }; data_tanggal tgl1, tgl2; tgl1.tanggal = 1; tgl1.bulan = 9; tgl1.tahun = 1979; tgl2 = tgl1; // atau tgl2.tanggal = tgl1.tanggal; tgl2.bulan = tgl1.bulan; tgl2.tahun = tgl2.tahun; cout << tgl1.tanggal << „/‟ << tgl1.bulan << „/‟ << tgl1.tahun << endl; cout << tgl2.tanggal << „/‟ << tgl2.bulan << „/‟ << tgl2.tahun << endl; }
Ada juga penulisan struktur sperti di bawah ini :
typedef struct { char kode[5]; char nama[20]; int jml; float harga; } psd; //pendefenisian nama variabel baru psd persediaan_barang;
Dengan menggunakan “typedef”, struktur psd didefinisikan kembali dengan nama baru tanpa menggunakan kata “struct” di awal nama baru tersebut. 3|Page
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR
S1 PTI – TE UM
Struktur dalam Struktur Suatu struktur juga bisa mengandung struktur yang lain. Sebagai gambaran, ditunjukkan pada contoh di bawah ini : struct data_pegawai { int nip; char nama[30]; data_tanggal tanggal_lahir; }rec_peg; Pada contoh ini, terdapat pendeklarasian struktur bernama data_pegawai dan sekaligus pendefinisian variable struktur bernama rec_peg. Gambar di bawah ini menunjukkan anggota dari variable rec_peg.
rec_peg nip
nama
tanggal_lahir
tahun
bulan
tanggal
Mengakses Anggota Struktur Anggota struktur dapat diakses menggunakan bentuk : variable_struktur.nama_anggota Contoh : rec_peg.nip = 108533414505; rec_peg.nama = „dewi‟; rec_peg.tanggal_lahir.tahun = 2009;
Perbandingan 2 Buah Struktur Untuk membandingkan 2 buah struktur, masing-masing unit harus dibandingkan sendiri-sendiri, contoh:
4|Page
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR
S1 PTI – TE UM
if ((tgl1.tanggal == tgl2.tanggal) && (tgl1.bulan == tgl2.bulan) && (tgl1.tahun == tgl2.tahun)) cout << “Isi strukturnya sama”; else cout << “Isi struktur tak sama”;
Struktur dalam Fungsi Suatu struktur juga dapat digunakan untuk argumen/parameter suatu fungsi (function). Contoh 3. #include #include struct data { int x; int y; }; void tampilkan(data nilai) void main() { data nilaiku; nilaiku.x = 10; nilaiku.y = 16; tampilkan(nilaiku); } void tampilkan(data nilai) { cout << “Nilai x = “ << nilai.x << endl; cout << “Nilai y = “ << nilai.y << endl; }
5|Page
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR
S1 PTI – TE UM
Struktur dalam Pointer #include #include //Deklarasi struktur struct koordinat { int x, y; }; void ubah_posisi(koordinat *posisi) //prototipe void main() { koordinat posisi; //Definisi variable struktur posisi.x = 10; posisi.y = 30; cout << ”Isi semula : x = ” << posisi.x << “ y = ” << posisi.y << endl; ubah_posisi(&posisi); //parameter berupa alamat cout << ”Isi sekarang : x = ” << posisi.x << “ y = ” << posisi.y << endl; } //Definisi fungsi void ubah_posisi(koordinat *posisi) { (*posisi).x = 100; (*posisi).y = 300; } LATIHAN LATIHAN 1 : Akses elemen struktur # include <stdio.h> main() { struct { float jari; float keliling; float luas; }lingkaran; printf(“Masukkan Jari-jari Lingkaran: ” );scanf(“%f”,&lingkaran.jari-jari); lingkaran.keliling = 2*3.14259*lingkaran.jari; lingkaran.luas = 3.14259*lingkaran.jari*lingkaran.jari; printf(“Keliling Lingkaran=%g\n”,lingkaran.keliling); printf(“Luas Lingkaran =%g\n”,lingkaran.luas); }
6|Page
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR
S1 PTI – TE UM
LATIHAN 2 #include<stdio.h> main() { struct tgl { unsigned int hari; unsigned int bulan; unsigned int tahun; }; struct alamat { char jalan[30]; char kotap[20]; }; Struct { char nama[40]; struct tgl masuk; struct alamat tinggal; float gaji; }karyawan={“Yuni Chairun Nisa”, 11, 06, 2008, “Jl. Kedondong 56”, “Lumajang”, 900000}; printf(“\n\n DATA KARYAWAN \n”); printf(“\n----------------------------------------\n\n”); printf(“Nama Karyawan :%s\n”,karyawan.nama); printf(“Tanggal Masuk :%2d-%2d-%2d\n”,karyawan.masuk,hari, karyawan.masuk.bulan,karyawan.masuk.tahun); printf(“Alamat :%s\n”,karyawan.tinggal.jalan); printf(“%s\n”,karyawan.tinggal.kota); printf(“Gaji Per Bulan : Rp %.2f\n”,karyawan.gaji); } Pada program tersebut, variabel karyawan merupakan struktur yang berisi struktur lain. Yaitu struktur tgl dan struktur alamat. Jadi, elemen lahir pada karyawan memiliki 3 elemen, yaitu elemen dari struktur tgl (hari, bulan, tahun ). Sedangkan elemen tinggal memiliki 2 elemen yaitu elemen dari struktur alamat (jalan dan kota). Hasilnya dapat dilihat pada tampilan di bawah ini: DATA KARYAWAN ---------------------------------------------------------------------Nama Karyawan : Yuni Chairun Nisa Tanggal Masuk : 11-06-2008 Alamat : Jl. Kedondong 56 Lumajang Gaji Per Bulan : Rp 900000,00
7|Page
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR
S1 PTI – TE UM
TUGAS PRAKTIKUM : 1. Buatlah program struktur untuk menghitung luas dan keliling segitiga 2. Buatlah struktur untuk identifikasi KTP dan KTM masing-masing 3. Buatlah program struktur untuk database penjualan terdiri atas: Kode barang
Harga barang
Nama barang
Tanggal pembelian
Jumlah barang
Discount
TUGAS RUMAH : 1. Buatlah program menggunakan function untuk menentukan selisih antara dua waktu (jam). Misalkan selisih antara pukul 4.30 dengan 6.00 adalah 90 menit. Terdapat 2 argumen function yaitu jam pertama dan jam kedua (lebih besar dari jam pertama). Petunjuk : buat struktur jam (dengan unit jam, dan menit). 2. Bilangan kompleks memiliki format a+b i, dengan a dan b adalah bilangan real. Notasi a disebut juga bagian real, dan b disebut juga bagian imajiner. Buatlah program menggunakan struktur untuk menjumlahkan, mengurangkan, dan mengalikan 2 buah bilangan kompleks. Contoh: (2+3 i) + (-1 + 3i) = 1+6 i (2+3 i) - (-1 + 6i) = 3 – 3i (2+3 i) . (-1 + 3i) = -2 – 3i + 6i + 9 i2 = -2 – 3i + 6i – 9 = -11 + 3i
8|Page