Struktur.

Slides:



Advertisements
Presentasi serupa
STRUKTUR DATA Struct Atau Record.
Advertisements

POINTER.
PEMROGRAMAN SISTEM PERNYATAAN DASAR PERULANGAN Pertemuan V
PERTEMUAN VIII POINTER
Teknik Pemrograman Terstruktur 2
10 KELAS class nama_class struct nama_struct
STRUKTUR Konsep Pemrograman.
Pointer.
PEMROGRAMAN SISTEM POINTER Pertemuan X. ALAMAT & POINTER Pointer sesungguhnya berisi alamat memory yang menyimpan data. Pointer sesungguhnya berisi alamat.
ALGORITMA DAN STRUKTUR DATA
Praktikum Database Pengenalan Query
Abstract data type (Structure, Union, Enumeration)
Struktur Sugeng Supriyadi, M.Kom.
PERTEMUAN VIII STRUKTUR LANJUT JURUSAN TELEKOMUNIKASI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA Oleh : Muh. Zen S. Hadi, ST.
STRUKTUR DATA.
Pemrograman Terstruktur
Pemrograman Terstruktur
Struktur.
PERTEMUAN VI STRUKTUR Definisi struktur
Person 10Person Variabel Lokal dan Global Suatu variabel lokal dideklarasikan di dalam fungsi ‘a’, dan tidak dapat diakses di luar fungsi (a)
Struktur data selain array : Structure, Union, Enumeration
Pemrograman Dasar Fungsi.
ARRAY OF STRUCT Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include typedef struct Mahasiswa { char.
Class.
Struktur Dalam C++, tipe data struktur yang dideklarasikan dengan kata kunci struct, dapat mempunyai komponen dengan sembarang tipe data, baik tipe data.
Pemrograman Dasar Pointers.
POINTER (VAR.PENUNJUK)
STRUKTUR DATA (1).
Algoritma & Struktur Data Abstract Data Type Evangs Mailoa.
Algoritma dan Struktur Data
STRUCTURE / STRUKTUR WEEK-8. STRUKTUR Sainstek 2000 mhs Dr. H. M. Subandi, Drs. Ir., MP DOSENBAGIAN TU.
STRUCT OF ARRAY Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include typedef struct Mahasiswa { char.
Friend. Adalah fungsi bukan anggota kelas yg dapat mengakses anggota kelas. Secara umum friend berguna jika terdapat suatu operasi yg hendak mengakses.
Pemrograman Berorientasi Obyek1 Sub Pokok Bahasan Pointer. Reference. Function Passing Parameter by Value, by Reference, by Pointer.
Pointer.
Algoritma dan Pemrograman 2C
STRUKTUR Struktur merupakan kumpulan elemen data yang digabungkan menjadi satu kesatuan data. Masing-masing elemen data tersebut dinamakan field atau elemen.
Bab 05 Tipe Data dan Mengisi Variabel
POINTER.
STRUKTUR Struktur merupakan kumpulan elemen data yang digabungkan menjadi satu kesatuan data. Masing-masing elemen data tersebut dinamakan field atau elemen.
Teknik Pemrog. Terstruktur 2
Pointer (Part 1).
Pertemuan ke 3 Algoritma dan struktur data
Pemrograman Terstruktur C++ :: Person 10 :: Stefani. P. Tangkuman Yan Makarunggala Supardi Jamali Dosen : Ir. Hasanuddin Sirait, MT STMIK / AMIK PARNA.
Algoritma dan Struktur Data Pointer Pada Struct. Definition — Structure Beberapa variabel (dapat berbeda tipe) yang dikelompokkan menjadi satu dengan.
Pemrograman Berorientasi Objek C++ Object Oriented Programming Rachmansyah, S.Kom
Umi Sa’adah Konsep Pemrograman PENS-ITS Bab 14. Struktur 1 Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006.
ALGORITMA PEMROGRAMAN 2A
STRUKTUR.
STRUKTUR, ENUM, UNION, BIT-FIELD DAN TYPEDEF
Tipe Data By Serdiwansyah N. A..
KUG1C3 Dasar Algoritma & Pemrograman
9. Struktur S. Indriani L., M.T 9. Struktur.
Matakuliah : T0616 / Algoritma dan Pemrograman
Pertemuan 4 Abstract Data Type
Pemrograman Terstruktur
S T R U K T U R.
KELOMPOK 9 ROBBY SETIAWAN AKBAR BAI ALIM WASSAHUA
Struktur.
ALGORITMA DAN PEMROGRAMAN II
Struct.
Algoritma dan Pemrograman RECORD (REKAMAN)
Pemrograman Terstruktur
Pemograman Terstruktur
Abstract Data Type Deklarasi Struct Access Struct Member Nested Struct
As’ad Djamalilleil Structure (Record) As’ad Djamalilleil
Algoritma dan Dasar Pemograman
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
STRUCT/RECORD.
STRUCT Imam Fahrur Rozi.
Transcript presentasi:

Struktur

Struktur Digunakan untuk mengelompokkan data dengan type yg berbeda dalam beberapa bahasa pemrograman biasa nya disebut sebagai record contoh : struct data_tanggal { int tahun ; int bulan ; int tanggal ; } ; data_tanggal adalah nama dari struktur yg di buat dan tahun bulan tanggal disebut sebagai anggota dari struktur data_tanggal

Struktur Untuk mendefinisikan struct variable-name di gunakan cara seperti mendefinisikan typa data data_tanggal tgl_lahir data_tanggal adalah nama struktur nya tgl_lahir adalah variabel-name dari data_tanggal jadi tgl_lahir mempunyai 3 anggota yaitu : tahun,bulan,tanggal untuk mengakses nya di gunakan dot operator seperti tgl_lahir.tahun tgl_lahir.bulan tgl_lahir.tanggal

Struktur dapat pula suatu struktur berada dalam struktur misal struct data_pegawai { int nip ; char nama[25]; data_tanggal tgl_lahir; } rec_peg ; jadi untuk mengakses nya rec_peg.nip rec_peg.nama rec_peg.tgl_lahir.tahun rec_peg.tgl_lahir.bulan rec_peg.tgl_lahir.tanggal

Struktur dan Fungsi by value struct koordinat { int x ; int y ; }; void tampilkan_posisi(koordinat posisi) { cout << "posisi x = " << posisi.x << endl; cout << "posisi y = " << posisi.y << endl; } int main() koordinat posisi; posisi.x = 27; posisi.y = 55; tampilkan_posisi(posisi); return 0;

Struktur dan Fungsi by reff struct koordinat { int x ; int y ; }; void ubah_posisi(koordinat &posisi) { posisi.x = 51; posisi.y = 85; } int main() { koordinat posisi; // koordinat adalah type datanya posisi.x = 12; posisi.y = 34; cout << "awal "<<posisi.x<<" "<<posisi.y<<endl; ubah_posisi(posisi); cout << "akhir "<<posisi.x<<" "<<posisi.y<<endl; return 0; }

Tugas Baca Union digunakan untuk membagi memory untuk digunakan bersama Baca enum untuk memberi nilai pada suatu data yg jumlahnya terbatas

Managemen memori dinamis Pengalokasian memori dalam suatu program dapat dilakukan secara dinamis, Pada saat program dijalankan, suatu memori dapat dipesan utk digunakan, dan jika sudah selesai dapat dilepaskan kembali. Hal ini sangat bermanfaat jika kita ingin menggunakan struktur data link list dan tree Statement yg di gunakan adalah new dan delete

Tata letak memori Pada saat program dijalankan, program akan menempati sejumlah memori yg bebas di bagian heap. Memori di bagian inilah yg nantinya akan di gunakan untuk pengalokasian memori dinamis. Ukuran memori ini sangat bervariasi, tergantung pada model memori yg digunakan compiler small, tiny atau huge, juga sistem operasi yg digunakan MEMORY stack heap data kode

Managemen memori dinamis Misal didefinisikan int *ptr_i; //pointer bertype integer setelah pendefinisian pointer belum menunjuk suatu lokasi tertentu, agar supaya dapat menunjuk pada suatu lokasi di heap, harus dialokasikan lebih dahulu suatu tempat di heap dengan cara ptr_i = new int

penulisan int *ptr_i ; ptr_i = new int; Atau int *ptr_i = new int Penggunaan *ptr_i = 50 ; //mengisi var dinamis cout << “isi *ptr_i = “ << *ptr_i << endl;

Contoh array double *acak = new double [5] ; // definisikan array randomize(); // mengisi data secara random for (int i=0 ; i < 5 ; i ++) *(acak+i) = random (500); // menampilkan elemen array cout << *(acak + i) << endl;

Contoh string char *kalimat ; kalimat = new char [25]; cout << “masukkan kalimat “; cin.getline(kalimat,25); cout <<“kalimat yg ditulis : “ << kalimat ;

Memori heap penuh Pada suatu keadaan dimana kita tidak lagi dapat menjalankan program disebabkan penuhnya memori heap, apa yg harus dilakukan? Gunakan fungsi set_new_handler() ada di library <new.h> Tujuannya utk menggunakan memory bersama

Membuat memori penuh char *banjir; do { banjir = new char [15000]; if (banjir != NULL) cout << “memori sebesar 15000 berhasil dialokasikan” << endl; } while (banjir != NULL); Program akan berjalan sampai memori heap penuh dengan pesan “ Abnormal Program termination”

pencegahan Tambahkan suatu fungsi untuk menampung jika terjadi error void kesalahan_mem() { cerr << “memori habis “ << endl; exit (1); } Dan tambahkan pada main program set_new_handler(kesalahan_mem);

void kesalahan_mem() { cerr << "memori habis !! " << endl; exit(1); } int main() char *banjir; long ukuran; set_new_handler(kesalahan_mem) ; cout << "memori yg akan dialokasikan " ; cin >> ukuran; cout << endl; banjir = new char [ukuran]; cout << "pengalokasian memory berhasil " << endl; return 0;

Membebaskan memori Setelahsuatu var dinamis tidak di perlukan lagi, var dinamis dapat dihapus, sehingga memori dapat di gunakan var lain dengan statement delete var-ptr

contoh int main() { double *ptrd = new double (123.45); float *ptrf = new float (3.14); int *ptri = new int (6) cout << ptrd << endl; cout << ptrf << endl; cout << ptri << endl; // menghapus alokasi delete ptrd; delete ptrf; delete ptri;

Struktur dinamis struct data_pegawai { int nip; char nama[25]; long int gaji; }; Mendefinisikan struktur dimanis data_pegawai *rec_peg; rec_peg = new data+pegawai;

Class Kelas merupakan struktur data dari objek yg mirip dengan struktur struct buku { char judul[20]; char pengarang[20]; int jumlah; } ; class Buku public :

#include <iostream.h> #include <string.h> struct buku { char judul[20]; char pengarang[20]; int jumlah; } ; int main() { buku novel ; // pendefinisian var struktur strcpy(novel.judul, "Ramayana"); strcpy(novel.pengarang, "Narayan"); novel.jumlah = 12; cout << novel.judul << endl; cout << novel.pengarang << endl; cout << novel.jumlah << endl; return 0; }

#include <iostream.h> #include <string.h> class Buku { public : char judul[20]; char pengarang[20]; int jumlah; } ; int main() { Buku novel ; // pendefinisian var struktur strcpy(novel.judul, "Ramayana"); strcpy(novel.pengarang, "Narayan"); novel.jumlah = 12; cout << novel.judul << endl; cout << novel.pengarang << endl; cout << novel.jumlah << endl; return 0; }

#include <iostream.h> #include <string.h> class Buku { private : char judul[20]; char pengarang[20]; int jumlah; public : void inisialisasi(char *Judul, char *Pengarang, int Jumlah) { strcpy(judul, Judul); strcpy(pengarang, Pengarang); jumlah = Jumlah; } void info() cout << "Judul : " << judul << endl; cout << "Pengarang : " << pengarang << endl; cout << "Jumlah : " << jumlah << endl; } ; // end class int main() { Buku novel ; // pendefinisian var struktur novel.inisialisasi("Ramayana", "Narayan", 12); novel.info(); return 0;

Class Penggunaan private digunakan pada kelas untuk memproteksi anggota-anggota tertentu pada kelas, agar tidak dapat diakses di luar kelas secara langsung

Contoh perhitungan luas segi empat class area { private: float a, b, c; public: float x, y ; area (float x, float y) //konstruktor {a = x; b = y; cout << "harga a : " << a << endl; cout << "harga b : " << b << endl << endl; } ; // fungsi utk cetak hrg parameter ~area() //destruktor { cout << "Stop " << endl; }; void hasil () { c = a * b; cout << "Hasil : " << c << endl; } int main() { area luas(2, 4.5); luas.hasil(); return 0; }

Membuat header // penulisan class sebagai header // harus didahului dengan statement #ifndef // dan diakhiri dengan #endif // disini digunakan konstruktor // nama konstruktor harus sama dengan nama class // konstruktor tidak mempunyai nilai balik termasuk tanpa void // dan harus diletakkan pada area public #ifndef __luas #define __luas .. #endif

#ifndef __luas #define __luas class area { private: float a, b, c; public: float x, y ; area (float x, float y) //konstruktor { a = x; b = y; cout << "harga a : " << a << endl; cout << "harga b : " << b << endl << endl; } ; // fungsi utk cetak hrg parameter ~area() //destruktor cout << "Stop " << endl; }; void hasil () { c = a * b; cout << "Hasil : " << c << endl; } #endif

// Program untuk menghitung luas segi empat // dengan menggunakan class #include <iostream.h> #include <math.h> #include "luas.h" int main() { area luas(2, 4.5); luas.hasil(); return 0; }

Konstruktor dan Destruktor

Konstruktor adalah suatu fungsi anggota yg mempunyai nama yg sama dengan nama class. kegunaan nya : - mengalokasikan ruang bagi sebuah object - memberi nilai awal thd anggota data sebuah object - membentuk tugas tugas umum lainnya contoh: class kompleks { private: double re; double im public: Kompleks(); void info(); };

Konstruktor Nama konstruktor sama dengan nama class Konstruktor tidak mempunyai nilai balik (bahkan tanpa void) Konstruktor harus diletakkan di bagian public

konstruktor dijalankan .... harga x : 5.2 harga y : 7.9 class Kompleks { private: double x, y ; public: Kompleks(); // konstruktor (tanpa type data) void info(); }; int main() { Kompleks p ; //mendefinisikan object p p.info(); return 0; } //definisi fungsi anggota class Kompleks Kompleks::Kompleks() { cout << "konstruktor dijalankan ...." << endl; x = 5.2; y = 7.9; void Kompleks::info() { cout << "harga x : " << x << endl; cout << "harga y : " << y << endl; konstruktor dijalankan .... harga x : 5.2 harga y : 7.9

konstruktor dijalankan .... harga x : 5.2 harga y : 7.9 class Kompleks { private: double x, y ; public: Kompleks(); // konstruktor (tanpa type data) ~Kompleks(); // dekonstruktor void info(); }; int main() { Kompleks p ; //mendef object p p.info(); return 0; } //definisi fungsi anggota class Kompleks Kompleks::Kompleks() { cout << "konstruktor dijalankan ...." << endl; x = 5.2; y = 7.9; Kompleks::~Kompleks() { cout << "Destruktor jalan.... proses selesai";} void Kompleks::info() { cout << "harga x : " << x << endl; cout << "harga y : " << y << endl; konstruktor dijalankan .... harga x : 5.2 harga y : 7.9 Destruktor jalan.... proses selesai

class Buku { private : char judul[20]; char pengarang[20]; int jumlah; public : Buku(char *Judul * char *Pengarang, int Jumlah) ; ~Buku(); void info() ; } ; int main() { Buku novel("Ramayana", "Narayan", 12); novel.info(); return 0; } Buku::Buku(char *Judul, char *Pengarang, int Jumlah) { strcpy(judul, Judul); strcpy(pengarang, Pengarang); jumlah = Jumlah; Buku::~Buku() { cout << "Selesai... " << endl; } void Buku::info() { cout << "Judul : " << judul << endl; cout << "Pengarang : " << pengarang << endl; cout << "Jumlah : " << jumlah << endl;

Membuat header sendiri Jika suatu class ingin digunakan pada sejumlah program, akan lebih baik jika class didefinisikan sebagai file atau header yg terpisah seperti :

// membuat file class sebagai header (buku.h) #ifndef __buku #define __buku class Buku { private : char judul[20]; char pengarang[20]; int jumlah; public : Buku(char *Judul, char *Pengarang, int Jumlah) { strcpy(judul, Judul); strcpy(pengarang, Pengarang); jumlah = Jumlah; } void info() { cout << "Judul : " << judul << endl; cout << "Pengarang : " << pengarang << endl; cout << "Jumlah : " << jumlah << endl; } ; #endif

#include <iostream.h> #include <string.h> #include "buku.h"> int main() { Buku novel("Ramayana", "Narayan", 12); // novel didefinisikan sebagai class Buku // langsung di beri harga Buku fiksi("Jurassic Parc", "Michael Crichton", 3); novel.info(); fiksi.info(); return 0; }

Jika class buku dibuat sebagai prototype // membuat file class sebagai header #ifndef __buku1 #define __buku1 class Buku { private : char judul[20]; char pengarang[20]; int jumlah; public : Buku(char *Judul, char *Pengarang, int Jumlah) ; void info(); } ; #endif

#include <iostream.h> #include <string.h> #include "buku1.h"> Buku::Buku(char *Judul, char *Pengarang, int Jumlah) { strcpy(judul, Judul); strcpy(pengarang, Pengarang); jumlah = Jumlah; } void Buku::info() { cout << "Judul : " << judul << endl; cout << "Pengarang : " << pengarang << endl; cout << "Jumlah : " << jumlah << endl; int main() { Buku novel("Ramayana", "Narayan", 12); // novel didefinisikan sebagai class Buku // langsung di beri harga Buku fiksi("Jurassic Parc", "Michael Crichton", 3); novel.info(); fiksi.info(); return 0;

Class object local dan global Sebuah object dapat didefinisikan seperti variabel local dan global Sebuah object disebut sebagai object global jika didefinisikan di luar fungsi

konstruktor object p awal fungsi .... konstruktor object x class Kata { private: char nama[20]; public: Kata (char *nama); // konstruktor ~Kata() ; // destruktor } ; Kata p("p"); // object global int main() { cout << " awal fungsi .... "<< endl; Kata x("x"); // definisikan var anggota x berisi xxxx Kata y("y"); // definisikan var anggota y berisi yyyy cout << " akhir fungsi ...." <<endl; return 0; } // definisi fungsi anggota Kata::Kata(char *nama) { strcpy(Kata::nama, nama); cout << "konstruktor object " << Kata::nama << endl; Kata::~Kata() { cout << "destruktor object " << endl; konstruktor object p awal fungsi .... konstruktor object x konstruktor object y akhir fungsi .... destruktor object

Class object local dan global Jika suatu object didefinisikan secara global, maka konstruktor tersebut akan dilaksanakan sebelum fungsi main() di proses Jika suatu object didefinisikan secara local, maka konstruktor akan dilaksanakan saat object bersangkutan di ciptakan Destruktor object local akan dilaksanakan saat fungsi yg mendefinisikan berakhir Destruktor object global akan dilaksanakan saat fungsi main() berakhir

Pointer ke obj dan obj dynamic Jika kita bermaksud mendefinisikan sebuah pointer untuk menunjuk ke suatu object, maka pernyataan nya Buku *nonfiksi Jika pointer nonfiksi diinginkan untuk menunjuk suatu object berkelas Buku, pernyataan nya nonfiksi = new Buku(“Turbo C++”, “Borland”, 5) Untuk mengakses digunakan operator -> untuk mengganti . (dot) nonfiksi->info() ; atau (*nonfiksi). Info();

#include <iostream.h> #include <string.h> #include "buku1.h"> Buku::Buku(char *Judul, char *Pengarang, int Jumlah) { strcpy(judul, Judul); strcpy(pengarang, Pengarang); jumlah = Jumlah; } void Buku::info() { cout << "Judul : " << judul << endl; cout << "Pengarang : " << pengarang << endl; cout << "Jumlah : " << jumlah << endl; int main() { Buku *nonfiksi; nonfiksi = new Buku("Programming C", "Borland", 3); nonfiksi->info(); // atau (*nonfiksi).info(); return 0;

Inheritance (pewarisan) Dalam C++ dimungkinkan untuk mewariskan class atau fungsi ke kelas atau fungsi lain Sifat ini disebut pewarisan (Inheritance) Class yg mewarisi sifat kelas lain disebut turunan (derived clas) Class yg mewariskan sifat ke kelas lain disebut class dasar (base class)

Sifat A Sifat A Sifat yg di wariskan Sifat B Sifat B Sifat C Sifat spesifik Class dasar Class turunan

info turunan di jalankan..... Judul : C++ Pengarang : Borland class Buku { private : char judul[20]; char pengarang[20]; int jumlah; public : void inisialisasi(char *Judul, char *Pengarang, int Jumlah) { strcpy(judul, Judul); strcpy(pengarang, Pengarang); jumlah = Jumlah; } void info() { cout << "Judul : " << judul << endl; cout << "Pengarang : " << pengarang << endl; cout << "Jumlah : " << jumlah << endl; } ; class Turunan : public Buku { public: void info_turunan() { cout<<"info turunan di jalankan....." << endl; }; int main() { Buku novel ; // pendefinisian var novel sbg class Buku novel.inisialisasi("Ramayana", "Narayan", 12); novel.info(); Turunan anak; anak.info_turunan(); anak.inisialisasi("C++", "Borland", 5); anak.info(); return 0; Judul : Ramayana Pengarang : Narayan Jumlah : 12 info turunan di jalankan..... Judul : C++ Pengarang : Borland Jumlah : 5

class Kendaraan { private: char nama[15]; public: Kendaraan(char *nama_kendaraan = "XXX") { strcpy(nama, nama_kendaraan); cout << "Hidupkan kendaraan anda..." << endl; } ~Kendaraan() { cout << "Matikan mesin kendaraan anda..." << endl; void info_kendaraan() { cout << nama << " sedang berjalan .." << endl; }; class Truk : public Kendaraan { public: Truk(char *nama_truk) : Kendaraan(nama_truk) { cout << "Hidupkan mesin truk ... " << endl; ~Truk() { cout << "Matikan mesin truk..." << endl; int main() { Truk fuso("Truk Fuso"); fuso.info_kendaraan(); cout << "Akhir program... " <<endl; return 0; Hidupkan kendaraan anda... Hidupkan mesin truk ... Truk Fuso sedang berjalan .. Akhir program... Matikan mesin truk... Matikan mesin kendaraan anda...

Polymorphism Suatu fungsi anggota dari suatu class dapat dijadikan sebagai fungsi virtual Jika fungsi ini dideklarasikan kembali pada class turunan dan suatu pointer yg menunjuk kelas dasar diciptakan, pointer dapat memilih object yg tepat, sekiranya fungsi anggota tersebut dipanggil via pointer

Pointer didefinisikan Menunjuk kelas dasar class dasar pointer class Turunan 1 Pointer Dapat Menunjuk Ke object Ber kelas turunan class Turunan 2

keterangan pada mamalia.... ===================== class Mahluk { public: void informasi() { cout << "informasi pd mahluk..."<<endl;} virtual void keterangan() {cout<< "keterangan pada mahluk...." <<endl;} }; class Mamalia : public Mahluk { public: {cout << "informasi pada mamalia..." << endl;} void keterangan() {cout << "keterangan pada mamalia.... " << endl;} class Sapi : public Mamalia {cout << "informasi pd sapi..." << endl;} {cout << "keterangan pada Sapi ... " << endl;} int main() { Mamalia mamalia; // definisikan obj mamalia Sapi sapi_sumba; // def sapi_sumba Mahluk *binatang; // def pointer ke obj berkelas mahluk binatang = &mamalia ; binatang->informasi(); binatang->keterangan(); cout <<"=====================" << endl; binatang = &sapi_sumba; return 0; } informasi pd mahluk... keterangan pada mamalia.... ===================== keterangan pada Sapi ...

Template fungsi dan class Template sering disebut sebagai blue print, yang berfungsi untuk mendupilkasikan sesuatu Template fungsi sangat bermanfaat untuk fungsi yg menangani tugas yg sama hanya berbeda pada type datanya

//awal template template <class T> void tukar (T &x, T &y) { T temp; temp = x; x = y ; y = temp ; } // akhir template // prototype fungsi void tukar (int &x, int &y); void tukar (double &x, double &y); int main() { double p = 12.345; double q = 98.765; cout << "p = "<< p << " q = " << q << endl; tukar (p, q); int a = 55; int b = 88; cout << "a = "<< a << " b = " << b << endl; tukar (a, b); return 0; } p = 12.345 q = 98.765 p = 98.765 q = 12.345 a = 55 b = 88 a = 88 b = 55