ali majid konversi

16
PEMOGRAMAN DASAR KONVERSI Ali Majid Wardana

Upload: ali-must-can

Post on 08-Jul-2015

148 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ali majid konversi

PEMOGRAMAN DASARKONVERSI

Ali Majid Wardana

Page 2: Ali majid konversi

Materi

Jenis konversi data pada C++

Konversi tipe data

Page 3: Ali majid konversi

Apa Itu Konversi Data?

Konversi suatu ekspresi dari jenis tertentu ke jenis lain yang dikenal sebagai tipe-casting.

Page 4: Ali majid konversi

Casting TipeMengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

Konversi implisit

implisit konversi tidak memerlukan operator manapun. Mereka secara otomatis dilakukan ketika nilai akan disalin ke sebuah tipe yang kompatibel. Sebagai contoh:

pendek 2000 =,

int b,

b = a;

Di sini, nilai telah dipromosikan dari pendek int dan kita tidak harus menentukan segala-casting tipe operator. Ini dikenal sebagai konversi standar. Standar konversi mempengaruhi data jenis fundamental, dan memungkinkan konversi seperti konversi antara tipe numerik (singkat ke int, int ke float, double ke int …), ke atau dari bool, dan beberapa konversi pointer. Beberapa dari konversi ini dapat diartikan hilangnya presisi, yang compiler dapat sinyal dengan peringatan. Hal ini dapat dihindari dengan konversi eksplisit.

Page 5: Ali majid konversi

Casting TipeMengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

Explicit konversi

C + + adalah bahasa yang kuat-diketik. Banyak konversi, khususnya mereka yang menyiratkan interpretasi yang berbeda dari nilai, memerlukan konversi eksplisit. Kita telah melihat dua notasi untuk konversi tipe eksplisit: fungsional dan c-seperti casting:

pendek = 2000;

int b,

b = (int) a; / / seperti notasi cast

c-b= int (a); / / notasi fungsional

Menjamin fungsionalitas dari operator konversi eksplisit adalah cukup untuk kebutuhan yang paling mendasar dengan tipe data.

Page 6: Ali majid konversi

Casting TipeMengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

dynamic_cast

dynamic_cast dapat digunakan hanya dengan pointer dan referensi ke obyek. Tujuannya adalah untuk memastikan bahwa hasil konversi tipe obyek yang lengkap yang valid dari kelas diminta.

Oleh karena itu, dynamic_cast selalu berhasil ketika kita melemparkan kelas ke salah satu kelas dasar nya:

kelas CBase {};

CDerived kelas: CBase public {};

CBase b; CBase pb *;

CDerived d; CDerived * pd;

pb = dynamic_cast <CBase*> (& d); / / ok:-untuk-baseberasal

pd= dynamic_cast <CDerived*> (& b); / / salah: base-ke-turunan

Konversi kedua potongan kode ini akan menghasilkan kesalahan kompilasi sejak-ke-turunan konversi dasar tidak diperbolehkan dengan dynamic_cast kecuali kelas dasar adalah polimorfik.

Page 7: Ali majid konversi

Casting TipeMengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

static_cast

static_castdapat melakukan konversi antara pointer ke kelas yang terkait, tidak hanya dari kelas turunan ke basis, tetapi juga dari kelas dasar untuk menjadi produk turunan. Hal ini memastikan bahwa setidaknya kelas kompatibel jika objek yang tepat akan diubah, namun tidak ada pemeriksaan keamanan yang dilakukan selama runtime untuk memeriksa apakah obyek yang dikonversi pada kenyataannya merupakan objek penuh dari jenis tujuan. Oleh karena itu, terserah kepada programmer untuk memastikan bahwa konversi tersebut aman. Di sisi lain, overhead dari keselamatan-cek jenis dynamic_cast dihindari.

kelas CBase {};

CDerived kelas: CBase public {};

CBase * a CBase baru =;

CDerived * b <CDerived*> static_cast = (a);

Ini akan berlaku, meskipun b akan menunjuk ke suatu objek lengkap kelas dan dapat menyebabkan error runtime jika dereferenced.

Page 8: Ali majid konversi

Casting TipeMengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

reinterpret_cast

reinterpret_castmengkonversi semua jenis penunjuk untuk semua jenis pointer lain, bahkan dari kelas yang tidak terkait. Hasil operasi salinan biner sederhana nilai dari satu pointer ke yang lain. Semua konversi pointer diperbolehkan: baik isi maupun menunjuk tipe pointer itu sendiri diperiksa.

Hal ini juga dapat cast pointer ke atau dari tipe integer. Format di mana nilai ini merupakan pointer integer adalah platform-khusus. Jaminan satu-satunya adalah bahwa seorang tokoh pointer ke tipe integer cukup besar untuk sepenuhnya berisi itu, diberikan untuk dapat dibuang kembali ke pointer yang valid.

Konversi yang dapat dilakukan oleh reinterpret_cast tetapi tidak oleh static_cast tidak menggunakan spesifik di C + + yang rendah tingkat operasi, yang hasil interpretasi dalam kode yang umumnya sistem-spesifik, dan dengan demikian non-portabel. Sebagai contoh:

kelas A {};

kelas B {};

A * A baru =;

B * b <B*> reinterpret_cast = (a);

Page 9: Ali majid konversi

Casting TipeMengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

const_cast

Jenis casting memanipulasi constness suatu objek, baik untuk mengatur atau untuk dihapus. Sebagai contoh, untuk melewati sebuah argumen const ke fungsi yang mengharapkan-konstanta parameter non:

/ / const_cast

# include <iostream.h>

using namespace std;

void cetak (char * str)

{cout

<<str

<<endl;}

int main ()

{constchar * c = “contoh teks”;

cetak (*> <char const_cast (c));

return

0;}

Page 10: Ali majid konversi

Casting TipeMengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

typeid

typeidmemungkinkan untuk memeriksa jenis ekspresi:

typeid (ekspresi)

Operator ini mengembalikan referensi ke obyek konstan type_info tipe yang didefinisikan dalam file header <typeinfo> standar.

Nilai ini kembali dapat dibandingkan dengan satu lagi operator yang menggunakan == dan! = Atau dapat berfungsi untuk memperoleh diakhiri karakter urutan-null mewakili tipe data atau nama kelas dengan menggunakan namanya () anggota.

/ / typeid

# include <iostream.h>

# include <typeinfo>

using namespace std;

int main ()

{int* a, b,

a = 0 b = 0;

if (typeid (a))! = typeid (b)

{cout

<<”a dan b adalah jenis yang berbeda: \ n”;

pengadilan <<”adalah:” <<typeid (a) nama () n <<’\’;

“.cout <<” b adalah: <typeid (b). <name () <’<’ \

n;}

return

0;}

Page 11: Ali majid konversi

Jenis Konversi DataAda beberapa aturan yang digunakan oleh C++ dalam mengkonversi tipe data,

yaitu:

1) Jika salah satu operand bertipe long double, maka yang lain dikonversimenjadi long double.

2) Jika salah satu operand bertipe double, maka yang lain dikonversi menjadidouble.

3) Jika salah satu operand bertipe float, maka yang lain dikonversi menjadi tipedata float.

4) Jika salah satu operand bertipe char, signed char, unsigned char, unsigned short, maka yang lain dikonversi ke int.

Jika diperlukan langkah untuk mengubah suatu tipe data menjadi tipe data lain maka digunakan suatu pengarah tipe data, proses pengubahan tipe data inidisebut dengan istilah type casting.

Page 12: Ali majid konversi
Page 13: Ali majid konversi

Konversi Tipe Data

Terdapat banyak cara dalam melakukan perubahan tipe data(type casting).

Bisa menggunakan tiga cara berikut ini:

•(tipe_baru) data

•tipe_baru (data)

•type_cast<tipe_baru>(data)

Page 14: Ali majid konversi

Contoh Program

Page 15: Ali majid konversi

Contoh Program

int a,b;

short c,d;

char e,f;

CString g,h;

a= 66; b=67;

// konversi int ke char

e = (char)a; // out put karakter B

f = char(b); // out put karakter C

//konversi char ke int

a = int(e); // out put bilangan 66

b = (int)f; // output bilangan 67

//konversi int ke string

g = CString(a); // output string B

h = (CString)b; // output string C

// penggunaan static_cast

a = static_cast<int>(e);