atau--------------

Download Report

Transcript atau--------------

STRUKTUR
Struktur merupakan kumpulan elemen data
yang digabungkan menjadi satu kesatuan data.
Masing-masing elemen data tersebut dinamakan
field atau elemen struktur. Field tersebut bisa
memiliki tipe data yang ataupun berbeda,
meskipun field tersebut dalam satu kesatuan
tetapi tetap bisa siakses secara individu.
STRUCT
• Struct adalah termasuk tipe data komposit. Berbeda
dengan array, tipe data struct mampu menampung
banyak data dengan tipe data berbeda-beda
(heterogen).
• Sebagai ilustrasi array mampu menampung banyak
data namun dengan satu tipe data yang sama,
misalnya integer saja.
• Sedangkan dalam struct, kita bisa menggunakan
untuk menampung banyak data dengan tipe data yang
berbeda, satu bagian integer, satu bagian lagi
character, dan bagian lainnya Boolean
Stuct
• Struct adalah tipe data bentukan yang berisi kumpulan
variabel-variabel yang bernaung dalam satu nama yang sama
dan memiliki kaitan satu sama lain.
• Berbeda dengan array hanya berupa kumpulan variabel yang
bertipe data sama, struct bisa memiliki variabel-variabel yang
bertipe data sama atau berbeda, bahkan bisa menyimpan
variabel yang bertipe data array atau struct itu sendiri.
• Variabel-variabel yang menjadi anggota struct disebut dengan
elemen struct.
• Struktur (struct) adalah
– Sekumpulan data
– Tipe datanya BOLEH berbeda
– Menggunakan nama yang sama
– Dibedakan melalui nama field-nya
• Struktur biasa dipakai untuk mengelompokkan beberapa informasi yang
berkaitan menjadi sebuah kesatuan (dalam bahasa PASCAL, struktur
disebut dengan record)
• Variabel-variabel yang membentuk suatu struktur, selanjutnya disebut
sebagai elemen dari struktur atau field.
• Dengan demikian dimungkinkan suatu struktur berisi elemen-elemen data
berbeda tipe seperti char, int, float, double, dan lain-lain.
• Contoh sebuah struktur adalah informasi data tanggal (date) yang berisi :
– month
– day
– year
Mendefinisikan Struktur
• Suatu struktur didefinisikan dengan menggunakan kata kunci struct.
• Dua Contoh pendefinisian sebuah tipe data struktur :
struct date {
int
int
int
month;
day;
year;
struct date {
int month, day, year;
};
};
yang mendefinisikan sebuah tipe data struktur bernama struct
date yang memiliki tiga buah elemen (field) berupa :
- month
- day
- year
•
Mendeklarasikan Struktur
• Untuk mendeklarasikan sebuah variabel
today yang bertipe struct date
pernyataannya sbb:
• Pernyataan di atas menyatakan bahwa
variabel today bertipe struct date.
Mendefinisikan & Mendeklarasikan
Struktur
•
•
Dalam mendefinisikan sebuah struktur, elemen yang terkandung di dalamnya bisa
juga berupa sebuah struktur
Contoh :
struct date {
int month, day, year;
};
struct student {
char name[30];
struct date birthday;
};
struct student mhs;
•
Diagram struktur data dari variabel mhs
dapat digambarkan sbb :
//deklarasi var mhs
Mengakses Elemen Struktur
• Elemen dari suatu variabel struktur dapat diakses dengan
menyebutkan nama variabel struktur diikuti dengan operator
titik (‘.’) dan nama dari elemen strukturnya.
• Cara penulisannya sebagai berikut :
variabel_struktur.nama_field
• Misalnya, memberikan data nama ke field name dari variabel
student di atas, maka pernyataan yang diperlukan misalnya
adalah :
strcpy(mhs.name, “Budi");
• Pada pernyataan di atas, mhs.name dapat dibaca sebagai "field
name dari mhs".
• Contoh berikut merupakan instruksi untuk mengisikan data
pada field birthday :
mhs.birthday.day = 10;
Mengakses Elemen Struktur
• Sedangkan untuk mendapatkan isi suatu field
dari variabel struktur, contohnya :
tgl = mhs.birthday.day;
merupakan instruksi untuk memberikan isi
dari field day ke variabel tgl
puts(mhs.name);
merupakan instruksi untuk menampilkan di
layar isi dari field name.
Menginisialisasi Struktur
• Sebuah struktur juga bisa diinisialisasi pada saat
dideklarasikan.
• Hal ini serupa dengan inisialisasi array, yaitu elemenelemennya dituliskan di dalam sepasang kurung
kurawal (‘{ }‘) dengan masing-masing dipisahkan
dengan koma.
• Contoh untuk variabel mhs di atas :
struct student mhs =
{“Muhammad”, 2, 28, 1970};
Array dan Struktur (array of struct)
• Elemen-elemen dari suatu array juga dapat berbentuk sebuah struktur
(array of struct), misalnya array yang dipakai untuk menyimpan sejumlah
data siswa (struct student).
• Array struktur berdimensi satu ini membentuk suatu tabel, dengan barisnya
menunjukkan elemen dari array-nya dan kolomnya menunjukkan
elemen/field dari struktur.
#define MAKS 20
struct date {
//definisi dari tipe struct date
int month, day, year;
};
struct student {
//definisi dari tipe struct student
char name[30];
struct date birthday;
};
struct student data_mhs[MAKS];
//deklarasi variabel array mhs
yang artinya, mendeklarasikan array data_mhs yang memiliki elemen yang
bertipe struct student sebanyak MAKS.
Array dan Struktur (array of struct)
• Setelah array data_mhs dideklarasikan, maka ruang
yang disediakan ditunjukkan dalam gambar di bawah
ini.
Array dan Struktur
#include <stdio.h>
#define MAKS 20
struct date {
int month, day, year;
};
struct student {
char name[30];
struct date birthday;
};
//definisi global dr tipe date
//definisi global dr tipe student
main() {
struct student data_mhs[MAKS];
int i=0, jml;
char lagi;
do
{
//memasukkan data
printf("Name : ");
gets(data_mhs[i].name);
printf("Birthday (mm-dd-yyyy): ");
scanf("%d-%d-%d", &data_mhs[i].birthday.month,
&data_mhs[i].birthday.day, &data_mhs[i].birthday.year);
i++;
Array dan Struktur
fflush(stdin);
//hapus sisa data dlm buffer
keyboard
printf(“\nMau memasukkan data lagi [Y/T] ? ");
lagi = getchar( );
//baca tombol
fflush(stdin);
//hapus sisa data dlm buffer
keyboard
} while(lagi == 'Y' || lagi == 'y');
jml = i;
printf("\nDATA MAHASISWA\n");
for (i=0; i<jml; i++)
//menampilkan data
{
printf("%d. Name
: %s", i+1,
data_mhs[i].name);
printf("\n
Birthday : %d-%d-%d\n\n",
data_mhs[i].birthday.month,
data_mhs[i].birthday.day,
data_mhs[i].birthday.year);
}
}
Hasilnya….
Variasi Pendeklarasian Struktur
•
Selain cara yang sudah dibahas sebelumnya, struktur juga dapat dideklarasikan dalam
berbagai bentuk yang lain sbb:
struct date {
int month, day, year;
} today, tomorrow;
struct student {
char name[30];
struct date birthday;
} data_mhs[MAKS];
•
yaitu mendefinisikan struct date, sekaligus mendeklarasikan variabel
today dan tomorrow dengan tipe struct date.
Demikian juga mendefinisikan struct student, sekaligus
mendeklarasikan variabel array data_mhs sebanyak MAKS elemen dengan
tipe struct student.
Cara lainnya : mendefinisikan, mendeklarasikan sekaligus menginisialisasi
struktur sbb:
struct date {
int month, day, year;
} today = {12, 25, 2006};
Bentuk Umum
• Bentuk umum:
•
•
•
•
•
typedef struct <nama_struct> {
tipe_data <nama_var>;
tipe_data <nama_var>;
....
}
Pendeklarasian dan penggunaan Struct (1)
(menggunakan typedef)
• typedef struct Mahasiswa {
•
char NIM[8];
•
char nama[50];
•
float ipk;
• };
• untuk menggunakan struct Mahasiswa dengan membuat
variabel mhs dan mhs2
• Mahasiswa mhs,mhs2;
• untuk menggunakan struct Mahasiswa dengan membuat
variabel array m;
• Mahasiswa m[100];
Pendeklarasian dan penggunaan Struct (2)
(tanpa menggunakan typedef)
•
•
•
•
•
struct {
char NIM[8];
char nama[50];
float ipk;
} mhs;
• Berarti kita sudah mempunyai variabel mhs
yang bertipe data struct seperti diatas.
Cara penggunaan struct dan pengaksesan
elemen-elemennya
• Penggunaan/pemakaian tipe data struct dilakukan
dengan membuat suatu variabel yang bertipe data
struct tersebut
• Pengaksesan elemen struct dilakukan secara
individual dengan menyebutkan nama variabel struct
diikuti dengan operator titik (.)
• Misalnya dengan struct mahasiswa seperti contoh di
atas, kita akan akses elemen-elemennya seperti
contoh berikut:
Program
•
Contoh 1
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#include <stdio.h>
#include <conio.h>
//Pendeklarasian tipe data baru struct Mahasiswa
typedef struct Mahasiswa{
char NIM[9];
char nama[30];
float ipk;
};
void main(){
//Buat variabel mhs bertipe data Mahasiswa
Mahasiswa mhs;
clrscr();
printf("NIM = ");scanf("%s",mhs.NIM);
printf("Nama = ");scanf("%s",mhs.nama);
printf("IPK = ");scanf("%f",&mhs.ipk);
printf("Data Anda : \n");
printf("NIM : %s\n",mhs.NIM);
printf("Nama : %s\n",mhs.nama);
printf("IPK : %f\n",mhs.ipk);
getch();
}
Hasil
Program
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#include <stdio.h>
#include <conio.h>
#define phi 3.14
//langsung dianggap variabel 'lingkaran'
struct {
float jari2;
float keliling;
float luas;
} lingkaran;
//fungsi void untuk menghitung luas ingkaran
void luasLingkaran(){
//langsung menggunakan luas lingkaran asli
lingkaran.luas = lingkaran.jari2 * lingkaran.jari2 * phi;
printf("\nLuas lingkaran = %f",lingkaran.luas);
}
//fungsi yang mengembalikan nilai float untuk menghitung keliling lingkaran
float kelLingkaran(float j){
return 2*phi*lingkaran.jari2;
}
int main(){
clrscr();
printf("Jari-jari = ");scanf("%f",&lingkaran.jari2);
//panggil fungsi luasLingkaran
luasLingkaran();
//panggil fungsi keliling, nilai kembaliannya dikirim ke keliling lingkaran asli
lingkaran.keliling = kelLingkaran(lingkaran.jari2);
//tampilkan keliling lingkaran asli
printf("\nKeliling lingkaran = %f",lingkaran.keliling);
getch();
}
Hasil
Struct yang berisi struct lain
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#include <stdio.h>
#include <conio.h>
typedef struct Date{
int dd;
int mm;
int yyyy;
};
typedef struct Time{
int h;
int m;
int s;
};
typedef struct Login{
int ID;
Date tglLogin;
Time waktuLogin;
};
int main(){
Login user1;
printf("USER 1\n");
printf("ID : ");scanf("%d",&user1.ID);
printf("Tanggal Login\n");
printf("Hari : ");scanf("%d",&user1.tglLogin.dd);
printf("Bulan : ");scanf("%d",&user1.tglLogin.mm);
printf("Tahun : ");scanf("%d",&user1.tglLogin.yyyy);
printf("Waktu Login\n");
printf("Jam : ");scanf("%d",&user1.waktuLogin.h);
printf("Menit : ");scanf("%d",&user1.waktuLogin.m);
printf("Detik : ");scanf("%d",&user1.waktuLogin.s);
printf("Terimakasih\n");
printf("Data
printf("ID :
printf("Date
printf("ID :
getch();
}
Anda :\n");
%d\n",user1.ID);
: %d - %d - %d\n",user1.tglLogin.dd,user1.tglLogin.mm,user1.tglLogin.yyyy);
%d:%d:%d\n",user1.waktuLogin.h,user1.waktuLogin.m,user1.waktuLogin.s);
Hasil
Array of Struct
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#include <stdio.h>
#include <conio.h>
typedef struct Date{
int dd;
int mm;
int yyyy;
};
typedef struct Time{
int h;
int m;
int s;
};
typedef struct Login{
int ID;
Date tglLogin;
Time waktuLogin;
};
int main(){
Login user[3];
//3 user
for(int i=0;i<3;i++){
printf("\nUSER ke-%d\n",i+1);
printf("ID : ");scanf("%d",&user[i].ID);
printf("Tanggal Login\n");
printf("Hari : ");scanf("%d",&user[i].tglLogin.dd);
printf("Bulan : ");scanf("%d",&user[i].tglLogin.mm);
printf("Tahun : ");scanf("%d",&user[i].tglLogin.yyyy);
printf("Waktu Login\n");
printf("Jam : ");scanf("%d",&user[i].waktuLogin.h);
printf("Menit : ");scanf("%d",&user[i].waktuLogin.m);
printf("Detik : ");scanf("%d",&user[i].waktuLogin.s);
printf("Terimakasih Atas Pengisiannya\n");
printf("\nData User ke-%d:\n",i+1);
printf("Login ID : %d\n",user[i].ID);
printf("Login Date : %d - %d - %d\n",user[i].tglLogin.dd,user[i].tglLogin.mm,user[i].tglLogin.yyyy);
printf("Login Time : %d:%d:%d\n",user[i].waktuLogin.h,user[i].waktuLogin.m,user[i].waktuLogin.s);
}
Hasil
IMAGE
• Image atau gambar atau citra merupakan
tipe data grafik.
• Misalnya : grafik perkembangan jumlah
siswa SMK, foto keluarga kita, video
perjalanan dan lain-lain.
• Pada
bahasa-bahasa
pemrograman
modern terutama yang berbasis visual tipe
data ini telah didukung dengan sangat baik.
DATE TIME
• Nilai data untuk tanggal (Date) dan waktu
(Time) secara internal disimpan dalam
format yang spesifik.
• Variabel
atau
konstanta
yang
dideklarasikan dengan tipe data Date dapat
digunakan untuk menyimpan baik tanggal
maupun jam.
• Tipe data ini masuk dalam kelompok tipe
data composite karena merupakan
bentukan dari beberapa tipe data.
• Berikut ini contoh tipe data dalam Visual
Basic.
Deklarasi struktur
struct nama_struktur
{
type1 element1;
type2 element2;
anggota / elemen dari struktur
type3 element3;
.
.
} nama_object;
//identifier yang digunakan untuk pemanggilan
struktur
------------atau--------------struct nama_struktur
{
type1 element1;
type2 element2;
type3 element3;
.
.} ;
struct nama_struktur nama_object;
Contoh struktur dengan tipe data berbeda :
struct mahasiswa
{
char nim[10];
char nama[25];
char jurusan[2];
float ipk;
}mhs;
Contoh struktur dengan tipe data sama :
struct tanggal
{
int tanggal;
int bulan;
int tahun;
}tgl;
---atau bisa ditulis --struct tanggal
{
int tanggal, bulan, tahun;
}tgl;
Contoh program 1 :
//program data stok
#include <iostream.h>
#include <conio.h>
struct stok {
char nama [50];
int jml;
}stoks ;
main ()
{
cout<<"Masukkan nama barang
= ";cin>>stoks.nama;
cout<<"Masukkan jumlah barang = ";cin>>stoks.jml;
cout<<"";
cout<<"-------------------------\n";
cout<<"";
cout<<"Output "<<stoks.nama<<" = ";
cout<<stoks.jml;
getch();}
Bisa juga di tulis :
//program data stok
#include <iostream.h>
#include <conio.h>
struct stok {
char nama [50];
int jml;
};
struct stok stoks;
main ()
{
cout<<"Masukkan nama barang
= ";cin>>stoks.nama;
cout<<"Masukkan jumlah barang = ";cin>>stoks.jml;
cout<<"";
cout<<"-------------------------\n";
cout<<"";
cout<<"Output "<<stoks.nama<<" = ";
cout<<stoks.jml;
getch();
}
Contoh program 2 :
//program mengakses elemen struktur
#include <iostream.h>
#include <conio.h>
struct data_tgl
{ int tgl,bln,thn; };
struct teman
{ char nama[20];
char j_kel[1];
struct data_tgl tgl; };
struct teman info;
main ()
{
//input data
cout<<"Masukkan nama anda = ";cin>>info.nama;
cout<<"Jenis kelamin anda = ";cin>>info.j_kel;
cout<<"Tanggal lahir anda = ";cin>>info.tgl.tgl;
cout<<"Bulan lahir anda
= ";cin>>info.tgl.bln;
cout<<"Tahun lahir anda
= ";cin>>info.tgl.thn;
cout<<"";
cout<<"-------------------------\n";
cout<<"";
//output data
cout<<"Nama
: "<<info.nama;
cout<<"\nKelamin
: "<<info.j_kel;
cout<<"\nTanggal lahir : "<<info.tgl.tgl<<""<<info.tgl.bln
<<"-"<<info.tgl.thn;
getch();}
Enumerasi
Enumerasi adalah tipe data yang mempunyai
elemen-elemen bertipe konstanta dengan
urutan yang sudah dtentukan. Nilai-nilai dari
konstanta ini berupa nilai-nilai integer yang
diwakili oleh pengenal yang ditulis di antara
tanda kurung kurawal “{ “ dan “}”. Tipe ini
dideklarasikan dengan kata kunci enum.
Deklarasi Enumerasi :
Enum nama_enumerasi{nilai1,nilai2,…}
Contoh program 3 :
//program mengakses elemen struktur
#include <iostream.h>
#include <conio.h>
enum j_kel{pria,wanita} ;
int main() {
struct siswa
{ int nis;
char nama[20];
j_kel kelamin;
}A;
//input data
A.nis=123;
A.nama=="Yuli";
A.kelamin=wanita;
//output data
cout<<"\nNis
: "<<A.nis<<endl;
cout<<"Nama
: "<<A.nama;
cout<<"\nKelamin
: "<<A.kelamin;
Struktur yang berisi struktur yang lain
Suatu struktur dapat berisi dengan elemen berupa struktur
yang lain.
Contoh :
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
main()
{
struct tanggal{ int hari;
int bulan;
int tahun; };
struct alamat { char jalan[30];
char kota[20]; };
struct { char nama[40];
struct tanggal masuk;
struct alamat tinggal;
float gaji; }
karyawan={"Arief Kurniawan", 17,11,87,"Jalan Raya 5","Yogyakarta",
750000.00};
/*menampilkan data karyawan*/
cout<<"Nama Karyawan : "<< karyawan.nama;
cout<<"\nTangggal Masuk : "<< karyawan.masuk.hari
<< karyawan.masuk.bulan
<<karyawan.masuk.tahun ;
cout<<"\nalamat
:
"<< karyawan.tinggal.jalan;
cout<<"\n
"<< karyawan.tinggal.kota;
cout<<"\nGaji Karyawan Rp "<< karyawan.gaji;
getch();
}
Output :