TUGAS TEORI ALGO LANJUT 201181117 1. Jelaskan perbedaan pemrograman tanpa pointer dan pemrograman dengan pointer? pemrograman dengan pointer programmer dapat mengatur pengalokasian memori yang digunakan dan dapat melepas pengalokasian memori tersebut saat sudah tidak dibutuhkan sebelum program berakhir/stop dengan menggunakan pointer kita bisa menghindari terjadinya penggunaan memori double saat memindahkan suatu data ,karna pointer akan mengirim address memorinya bukan isi memorinya sehingga fungsi lain dapat merujuk ke address memori tersebut untuk mendapatkan datanya/isinya pemrograman tanpa pointer Programmer tidak dapat mengatur pengalokasian memori yang digunakan ,maka akan sulit membuat program dengan penggunaan memori yg diinginkan karna jika kita menggunakan variable dll, penggunaan memori yang dipakai tidak akan bisa dilepas kecuali jika programnya dihentikan/berakhir Pada saat memindahkan data akan terjadi penggunaan memori double ,hal ini tidak akan efisien jika memori yang dipakai data tersebut sangat besar
2. Bagaimana penggunaan pointer dalam program c++? Ada 2 operator pointer yang dikenal secara luas, yaitu operator & dan operator *. Operator & Operator & merupakan operator alamat. Pada saat pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya pada memory, hal ini akan dilakukan secara otomatis oleh kompiler dan operating sysem pada saat run-time. Jika ingin mengetahui dimana suatu variable akan disimpan, dapat dilakukan dengan memberikan tanda ampersand(&) didepan variable , yang berarti "address of". Contoh : ted = &andy; Penulisan tersebut berarti akan memberikan variable ted alamat dari variable andy. Karena variabel andy diberi awalan karakter ampersand (&), maka yang menjadi pokok disini adalah alamat dalam memory, bukan isi variable. Misalkanandy diletakkan pada alamat 1776 kemudian dituliskan
1
TUGAS TEORI ALGO LANJUT 201181117 instruksi sbb : andy = 25; fred = andy; ted = &andy; Maka hasilnya :
Operator *
Operator * merupakan operator reference. Dengan menggunakan pointer, kita dapat mengakses nilai yang tersimpan secara langsung dengan memberikan awalan operator asterisk (*) pada identifier pointer, yang berarti "value pointed by". Contoh : beth = *ted; (dapat dikatakan:"beth sama dengan nilai yang ditunjuk oleh ted") beth = 25, karena ted dialamat 1776, dan nilai yang berada pada alamat 1776 adalah 25. Ekspresi dibawah ini semuanya benar, perhatikan : andy = 25; &andy = 1776; ted = 1776; *ted = 25; Ekspresi pertama merupakan assignation bahwa andy = 25;. Kedua, menggunakan operator alamat (address/derefence operator (&)), sehingga akan mengembalikan alamat dari variabel andy. Ketiga bernilai benar karena assignation untukted adalah ted = &andy;. Keempat menggunakan reference operator (*) yang berarti nilai yang ada pada alamat yang ditunjuk oleh ted, yaitu 25. Maka ekspresi dibawah ini pun akan bernilai benar : *ted = andy; 3. Tuliskan deklarasi pointer dalam c++ dan jelaskan arti pernyataan tersebut dan kaitannya dengan alokasi memori ? Adapun alas an penggunaan pointer pada C++ adalah sebagai berikut : Mengirimkan “Parameter yang berupa variabel” ke dalam fungsi, artinya nilai variabel bisa diubah di dalam fungsi.
2
TUGAS TEORI ALGO LANJUT 201181117 int nama fungsi (int *b) { *b = *b + 1; } main () { int x=1; nama_fungsi (&x); printf (”%d”, x); // output :2, karena x diubah di dalam fungsi menjadi x=x+1; } Penggunaan pointer dapat meningkatkan kinerja untuk operasi yang dilakukan secara berulang. Contoh program yang menggunakan pointer ada di bawah (contohnya menggunakan pointer terhadap parameter yang di-pass ke aplikasi ie. argv) Code: /** * pointer.c - contoh penggunaan pointer * coded by void ;) */ #include #include int main(int argc, char **argv) { if (argc < style=""> /* prks prmtr yg dbrkn */ printf("aturan pakai: %s \n", argv[0]); /*jk prmtr tra pngl help */ exit(1); /* keluar */ } printf("hello %s :)\n", argv[1]); /* tmpl psn & prmetr */ return 0; /* keluar */
3
TUGAS TEORI ALGO LANJUT 201181117 }
Contoh penggunaannya Code: bash-4.0$ # compile source codenya bash-4.0$ gcc -s -o pointer pointer.c bash-4.0$ # jalankan aplikasinya tanpa parameter bash-4.0$ ./pointer aturan pakai: ./pointer bash-4.0$ # jalankan aplikasinya dengan parameter bash-4.0$ ./pointer "sandra dewi" hello sandra dewi :) bash-4.0$ Penjelasannya adalah kira-kira sebagai berikut : argc adalah jumlah argumen / parameter pada command line. jumlah minimalnya adalah 1, yaitu aplikasi yang sedang dieksekusi, dan nama aplikasi yang dieksekusi tersebut disimpan pada variabel argv, tepatnya argv[0] Seperti yang saya jelaskan di atas, variabel argv menampung parameter yang berada pada command line. kira2 seperti ini Code: bash-4.0$ killall enemy argc = 2 argv[0] = killall argv[1] = enemy Kalau masih bingung soal argc dan argv, mungkin bisa membuka lagi buku2 pemrograman C/C++ soalnya saya juga masih newbie soal pemrograman. kalau
4
TUGAS TEORI ALGO LANJUT 201181117 bisa, cari buku yang judulnya "C For Scientist and Engineers", sampai sekarang saya masih belajar dari buku itu. Nah, berikut ini sample kode serta penggunaannya untuk mengetahui nilai argc dan argv Code: #include int main(int argc, char **argv) { static int i; printf("nilai argc: %lu\n", argc); for (i = 0; i <> printf("argv[%lu] -> %s\n", i, argv[i]); } return 0; } Jika dieksekusi, maka contohnya seperti ini Code: bash-4.0$ ./test nilai argc: 1 argv[0] -> ./test bash-4.0$ ./test satu dua tiga empat capedeh nilai argc: 6 argv[0] -> ./test argv[1] -> satu
5
TUGAS TEORI ALGO LANJUT 201181117 argv[2] -> dua argv[3] -> tiga argv[4] -> empat argv[5] -> capedeh
6