Pada postingan ini akan saya beri contoh penggunaan stuct jika kita menghadapi sebuah kasus struktur data, sebelumnya saya akan mulai dari definisi struct itu sendiri. Struct merupakan elemen data (bisa dinamakan field/elemen struct) yang digabungkan menjadi satu kesatuan, dimana field data ini dapat memiliki tipe data yang sama ataupun berbeda, sesuatu yang merupakan salah satu perbedaan dengan Array (yg diwajibkan mempunyai tipe data yang sama ), tetapi struct ataupun array masih bersifat statis allocation memory, yang berarti elemennya tidak berubah/ sesuai dengan deklarasi awal... #include <iostream.h>
Mungkin cukup untuk sedikit teori tentang struct, berikut ini saya akan memebrikan contoh script penggunaan stuct, merupakan tugas sih, tapi baru saya postingan sesudah deadline lewat, biar tidak dislah gunakan,,hehehe
Berikut contoh penggunaan Struct dengan fitur input, baca, hapus dan keluar dari program, dengan kasus pengelolaan data VCD, di rental vcd mungkin, tapi program ini hanyalah program yang sederhana,
#include <stdlib.h>
#include <stdio.h>
#define max 30 //menentukan nilai max nya 30
struct vcd {
char nama[20];
char genre[30]; //deklarasi stuct
char tipe[20];
int jml;
char harga[30];
} vcd[max];
void init(void) {
register int i;
for(i = 0; i < max; i++)
vcd[i].nama[0] = '\0';
}
int menu(void) {
int pilih;
cout<<"\n++++[ MENU DATA VCD ]++++\n";
cout<<"1. Input \n";
cout<<"2. Hapus \n";
cout<<"3. Baca \n";
cout<<"4. Keluar\n";
do {
cout<<" Pilih : ";
cin >> pilih;
} while(pilih < 0 || pilih > 4);
cout<<"\n";
return pilih;
}
int array_kosong(void) {
register int i;
for(i = 0; vcd[i].nama[0] && i < max; ++i);
if(i == max)
return -1;
return i;
}
void input(void) {
int t;
// melakukan pencarian terhadap index array yang tidak digunakan
t= array_kosong();
//jika penuh
if(t == -1) {
cout<<"\nDaftar Penuh";
return;
}
cout<<"***** Input Data VCD *****\n";
cout<<" Nama VCD\t : ";
gets(vcd[t].nama);
cout<<" Tipe VCD\t : ";
gets(vcd[t].tipe);
cout<<" Genre VCD\t : ";
gets(vcd[t].genre);
cout<<" Jumlah VCD\t : ";
cin >> vcd[t].jml;
cout<<" Harga VCD\t :Rp ";
gets(vcd[t].harga);
}
void hapus(void) {
register int t;
cout<<"Data yang ingin dihapus data ke: ";
cin >>t;
if(t >= 0 && t < max)
vcd[t].nama[0] = '\0';
}
void list(void) {
register int i;
cout<<"***** Daftar VCD *****\n";
for(i = 0; i < max; ++i) {
if(vcd[i].nama[0]) {
cout<<"\n Data VCD ke-"<< i;
cout<<"\n Nama VCD\t: "<<vcd[i].nama;
cout<<"\n Tipe VCD\t: "<< vcd[i].tipe;
cout<<"\n Genre VCD\t: "<< vcd[i].genre;
cout<<"\n Jumlah VCD\t: "<< vcd[i].jml;
cout<<"\n Harga VCD\t: Rp "<<vcd[i].harga;
cout<<"\n--------------------------\n";
}
}
cout<<"\n";
}
int main(void) {
int pilih;
init();
for( ; ; ) { /*for dikosongkan karena perubahan indeks perulangan ada
dibadan loop, dan looping dihentikan dengan break */
pilih = menu();
switch(pilih) {
case 1:
input();
break;
case 2:
hapus();
break;
case 3:
list();
break;
case 4:
exit(0);
}
}
}
Program tersebut terdiri dari beberapa fungsi, berikut ini masing-masing penjelasan dari fungsinya
# fungsi init()
fungsi ini menyiapkan array struct dengan memberikan karakter null pada byte pertama
di field nama pada setiap struct dalam array. Program berasumsi bahwa elemen array
dianggap tidak terpakai bila field nama kosong.
# fungsi menu ()
Fungsi ini akan menampilkan pilihan menu dan mengembalikan nilai yang dipilih oleh
user.
# fungsi array_kosong()
fungsi ini akan mengembalikan nilai -1 bila semua elemen array
digunakan. Nilai -1 adalah angka aman di mana tidak mungkin terdapat index -1 untuk
elemen array.
# fungsi input ()
fungsi yang digunakan untuk melakukan input dari keyboard untuk memasukkan data yang akan dimasukan dalam array struct, pada fungsi ini juga ada pemanggilan fungsi array_kosong untuk mencari array struct yang tidak tergunakan, jika array penuh maka akan menampilkan ==> Daftar penuh
# fungsi hapus ()
fungsi ini akan meminta user untuk memasukan index array yang akan dihapus, sebenarnya metode penghapusan ini adalah dengan memberikan karakter null pada index array tersebut
# fungsi list ()
fungsi ini digunakan untuk menampilkan apa yang telah diinputkan pada saat proses pemanggilan fungsi input di fungsi main
# fungsi main ()
merupakan fungsi utama dari program ini yang memanggil beberapa fungsi diatas untuk menjalankan satu kesatuan program
semoga bermanfaat : D,,,happy coding..
Minggu, 08 Mei 2011
Implementasi Struct
Studi Kasus Subnetting
Untuk memahami subnetting mungkin perlu dengan terus berlatih dan terus mencoba-coba, misalnya dengan mengerjakan studi kasus beberapa perancangan lab atau sebuah sistem warnet dan kompleksnya ISP, berikut ini ada beberapa contoh studi kasus yang disertai dengan penyelesaian untuk memudahkan memahami konsep subnneting IP,biasanya klo buku disertai CD ato DVD,,,nah klo ini disertai penjelasannya aja,,,hehehe
****kasus 1****
Anda mempunyai subnet dengan network address 193.20.32. dengan subnet mask 255.255.255.224
Tentukan:
a. Tentukan berap jumlah subnet yang tersedia :
b. Berapa jumlah host yang tersedia untuk setiap subnet :
Jawab
# Alamat network 192.20.32 merupakan alamat nerwork kelas C, karena oktet pertama adalah 193 (dimana kelas C dimulai dari 192-223 pada oktet pertama) format keas C N.N.N.H, maka subnetmask 255.255.255.224= 11111111.11111111.11111111.11100000 ( ada 3 bit 1 yang aktif di oktet host). Subnet=2^3-2 = 6 subnet
# Jumlah host per subnet
Dari .11111111.11111111.11100000, ada 5 bit 0 yang aktif di oktet host, Host/subnet=2^5- 2 = 30 host
****kasus 2****
Anda di tugaskan untuk mendesain subnet dan IP untuk suatu WAN yang mempunyai 10 kantor dan setiap kantor mempunyai 255 workstation.network address yang tersedia adalah 164.10.0.0.di dalam tugas ini anda juga diminta untuk membuat subnet dengan jumlah subnet terbanyak
Maka tugas anda adalah menetukan :
a.subnet mask yang akan dipakai
b.subnet address dan jumlah subnet yang tersedia dari subnet yang dibuat
c.kelompok ip address yang tersedia ( IP Valid )
d.Broadcast address yang tersedia untuk setiap kelompok.
Jawab
# Sebelum menentukan subnet, ini kelas B, juga pertimbangkan banyak host yang diperlukan, yang paling mendekati 255 host , yaitu 510 host (2^9-2), karena jika 2^8-2 = 254 host (tidak memenuhi syarat),dari situ kita dapat menentukan bit 1 yang aktif dalam oktet host kelas B, yaitu 7 bit 1 di oktet host kelas B jadi subnet yang dipakai 11111111.11111111.11111110.00000000 atau 255.255.254.0
# Jumlah subnet 2^7-2 = 126 subnet, dengan blok size 256-254=2, maka subnet address yang tersedia
168.10.2.0
168.10.4.0
168.10.6.0
168.10.8.0
168.10.10.0
168.10.12.0
168.10.14.0
168.10.16.0
168.10.18.0
168.10.20.0
..................
Dst, sampai
168.10.252.0
Untuk 168.10.254.0 bukan termasuk subnet yang valid, karena semua bit subnetnya on (1), dan disebut netmask
# Kelompok IP address yang valid
Merupakan range diantara net id dengan id broadcast, secara berurutan dari subnet pertama sampai yang terakhir, berikut ini range nya:
168.10.2.1 sampai 168.10.3.254
168.10.4.1 sampai 168.10.5.254
168.10.6.1 sampai 168.10.7.254
168.10.8.1 sampai 168.10.9.254
168.10.10.1 sampai 168.10.11.254
168.10.12.1 sampai 168.10.13.254
168.10.14.1 sampai 168.10.15.254
168.10.16.1 sampai 168.10.17.254
168.10.18.1 sampai 168.10.19.254
168.10.20.1 sampai 168.10.21.254
……………………………………………….
Dst, sampai
168.10.252.1 sampai 168.10.253.254
# Broadcast address yang tersedia untuk setiap kelompok ( secara berurutan dari subnet pertama ke yang terakhir)
168.10.3.255
168.10.5.255
168.10.7.255
168.10.9.255
168.10.11.255
168.10.13.255
168.10.15.255
168.10.17.255
168.10.19.255
168.10.21.255
…………………….
Dst, sampai
168.10.253.255
****kasus 3*****
Jika anda mempunyai IP address 175.10.64.15/19
a.tentukan IP addressnya
b.tentukan subnet address dan IP address yang diberikan
c.tentukan broadcast addressnya
Jawab
# Ip address nya 175.10.64.15, merupakan IP kelas B
# /19 berarti untuk kelas B berati netmask = 255.255.224.0, blok size 256-224=32 (subnet pertama), 64(subnet kedua), 96,128,160,192, selengkapnya seperti dibawah ini:
subnet Alamat subnet Host awal Host akhir
1 175.10.32.0 175.10.32.1 175.10.63.254
2 175.10.64.0 175.10.64.1 175.10.95.254
3 175.10.96.0 175.10.96.1 175.10.127.254
4 175.10.128.0 175.10.128.1 175.10.159.254
5 175.10.160.0 175.10.160.1 175.10.191.254
6 175.10.192.0 175.10.192.1 175.10.223.254
IP 175.10.64.15 berada di subnet kedua yaitu: 175.10.64.0
# Alamat broadcast dari IP 175.10.64.15 adalah 175.10.95.255 (lihat subnet 2)
****kasus 4*****
sebuah universitas ingin merancang sebuah jaringan dengan menghubungkan 3 ruangan, kondisi :
ruangan 1 : berisi 54 komputer => IP : 202.179.13.8/?
ruangan 2 : berisi 120 komputer => IP : 196.40.30.4/?
ruangan 3 : berisi 5 komputer => IP : 200.59.174.4/?
Jawab
# Ruangan 1 berisi 54 host, dan merupakan IP kelas C, berarti jumlah host yang mendekati adalah 2^6 - 2= 62 (bit 0 yang aktif dioktet terakhir/oktet host ada 6), jadi bit 1 yang aktif (untuk subnet) ada 2, jadi netmasknya 255.255.255.192
IP : 202.179.13.8/26
# Ruangan 2 berisi 120 host, kelas C juga, jumlah host yang mendekati adalah 2^7 – 2 =126, jadi netmask 255.255.255.128
IP : 196.40.30.4/25
# Ruangan 3 berisi 5 host, kelas C juga, jumlah host yang mendekati adalah 2^3 – 2 = 6, jadi netmasknya 255.255.255.248
IP : 200.59.174.4/29
Semoga bermanfaat :D