tugas diskusi (ghusaebi-ken satrio-mujhid satrio-m yusri- sadewa)

15
Nama Anggota Kelompok : - Ghusaebi - Ken satrio Utomo - Muhammad Yusri Setiawan - Mujahid Satrio - Sadewa Putra Nussan Pertanyaan Diskusi Algoritma dan Pemrograman “Pointer dan Struktur Data” Pointer 1. Apa yang dimaksud dengan Pointer dan berikan contoh cara menggunakan pointer di dalam bahasa pemrograman C. Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer dimaksudkan untuk menunjukkan ke suatu alamat memory sehingga alamat dari suatu variabel dapat diketahui dengan mudah. Pointer merupakan tipe data yang dapat menunjuk ke lokasi tertentu di memori. Untuk mendefinisikan sebuah variabel pointer, kita bisa menggunakan ^ atau bisa menggunakan Pointer. Contoh : var p1: ^Integer; // Pointer to integer p2: ^Real; // Pointer to real number px: Pointer // Untyped pointer Variabel p1 adalah variabel dengan tipe pointer to integer, artinya nilai yang ditunjuk oleh p1 adalah nilai bertipe integer. Variabel p2 adalah pointer to real, artinya nilai yang ditunjuk oleh variabel ini adalah bilangan real. Semetera variabel px adalah untyped pointer, artinya tipe yang ditunjuk oleh variabel pointer ini tidak ditentukan. Variabel bertipe untyped pointer akan kompatibel dengan variabel pointer

Upload: ebie-ghusaebi

Post on 25-Nov-2015

23 views

Category:

Documents


4 download

TRANSCRIPT

Nama Anggota Kelompok : Ghusaebi Ken satrio Utomo Muhammad Yusri Setiawan Mujahid Satrio Sadewa Putra Nussan

Pertanyaan DiskusiAlgoritma dan PemrogramanPointer dan Struktur Data

Pointer1. Apa yang dimaksud dengan Pointer dan berikan contoh cara menggunakan pointer di dalambahasa pemrograman C.

Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer dimaksudkan untuk menunjukkan ke suatu alamat memory sehingga alamat dari suatu variabel dapat diketahui dengan mudah.Pointer merupakan tipe data yang dapat menunjuk ke lokasi tertentu di memori. Untuk mendefinisikan sebuah variabel pointer, kita bisa menggunakan ^ atau bisa menggunakan Pointer. Contoh :

var p1: ^Integer; // Pointer to integer

p2: ^Real; // Pointer to real number

px: Pointer // Untyped pointer

Variabel p1 adalah variabel dengan tipe pointer to integer, artinya nilai yang ditunjuk oleh p1 adalah nilai bertipe integer. Variabel p2 adalah pointer to real, artinya nilai yang ditunjuk oleh variabel ini adalah bilangan real. Semetera variabel px adalah untyped pointer, artinya tipe yang ditunjuk oleh variabel pointer ini tidak ditentukan. Variabel bertipe untyped pointer akan kompatibel dengan variabel pointer bertipe apapun. Menggunakan utyped pointer pada umumnya lebih fleksibel tetapi kurang aman.

Mengambil nilai yang ditunjuk oleh sebuah variabel pointer biasanya disebut sebagai dereferencing pointer. Untuk melakukan dereferencing pointer, kita harus menggunakan simbol ^. Bila p adalah pointer, maka p^ adalah nilai yang ditunjuk oleh p. Kita bisa mengisi sebuah pointer dengan alamat variabel lain, atau kita bisa mengalokasikannya dari heap memory. Untuk mengambil alamat dari suatu variabel tertentu, kita dapat menggunakan simbol @. Dengan demikian @a berarti alamat dari variabel a. Ada sebuah nilai konstanta khusus yang disebut dengan nil, yang berarti pointer tidak menunjuk ke manapun.

Pointer ini sangat ribet dan sangat komplek, salah sedikit saja bisa menyebabkan error yang sangat susah di trace.

Berikut adalah contoh code penggunaan dari sebuah pointer :

#include #include int main() {int *p;

//alokasikan 4 bytes ke pointer p. (sizeof(int) = 4)

p = malloc(sizeof(int));

*p = 15;

printf(Nilai dari p : %d, *p);

free(p);

return 0;

}

Dari contoh di atas dapat kita lihat bahwasanya kita harus melalui beberapa step hanya untuk membuat dan mengisi 1 buah variable pointer. Berikut step yang harus kita lakukan :bea. Kita buat dulu inisialisasi variabel pointer p.

b. Kita alokasikan pointer p.

c. Kita isi varibel p dengan sebuah value.

d. Kita bebaskan pointer p agar alamat memory yang di gunakan oleh p dapat di gunakan oleh yang lain.

2. Apa kelebihan dan kekurangan dari Pointer?Kelebihan penggunaan pointer Flexibilitas Tipe data bersifat dinamis Alokasi variable dapat diatur sesuai kebutuhanKode ringkas Efisiensi memory

Kekurangan Algoritma kompleks Jika terjadi kesalahan dapat menyebabkan kersuakan sistem

3. Bagaimana cara mengirim atau menggunakan pointer di dalam sebuah fungsi?

Pengiriman data dari sebuah fungsi kefungsi lain dapat juga dilakukan dengan bantuan pointer, bila pointer digunakan, maka data yang dikirim harus berupa alamat variabel, bukan lagi nama variabel.Contoh

#include#includevoid main(){float a,b,c;float *p_c=&c;clrscr();printf("input bilangan pertama :");scanf("%f",&a);printf("input bilangan kedua :");scanf("%f",&b);jumlah(&a,&b,p_c) ;printf("hasilkali kedua bilangan = %.3f",*p_c);getch();}jumlah(alm_a,alm_b,alm_c)float *alm_a,*alm_b,*alm_c;{*alm_c=*alm_a**alm_b;

jika kita mendeklarasikan pointer, maka isi dari pointer tersebut nantinya adalah alamat memori. Sehingga jika kita ingin mengisi pointer tersebut dengan data, maka kita harus mendefinisikan alamat memorinya terlebih dahulu.

Struktur Data1. Apa yang dimaksud dengan struktur data pada bahasa pemrograman C?berikan contoh cara mendeklarasi sebuah struktur dan menggunakannya di dalam pemrograman bahasa C.

Struktur adalah sekumpulan variabel yang masing-masing dapat berbeda tipe, dan terorganisasi ke dalam suatu unit (nama). (menurut Pascal, struktur juga dikenal sebagai record). Struktur membantu mengatur data-data yang rumit, khususnya dalam program yang besar, karena struktur membuat sekelompok variabel diorganisir sebagai satu unit daripada sebagai satuan yang terpisah.

struct sis{char *nisn;char *nama;int tts, tas;float akhir;char aksara;}

Kata kunci struct menunjukkan definisi struktur, dan identitas sis menunjukkan structure tag. Dengan demikian terdapat tipe data baru bernama struct sis, yang terdiri dari nisn, nama siswa, nilai tes tengah semester, tes akhir semester, nilai akhir, dan huruf aksara, yang masing-masing disebut dengan field.

2. Apa kelebihan dan kekurangan dari Struktur Data?Kelebihan :1. Memori yang digunakan lebih sedikit1. Bentuk lebih singkat

Kekurangan :1. Statis (tidak dinamis)1. Rumit dalam penyusunan

Linked List1. Apa yang dimaksud dengan Linked List?

Linked List ( LL )adalah koleksi data item yang tersusun dalam sebuah barisan secara linear, dengan penyisipan dan pemindahan dapat dilakukan dalam semua tempat di LL tersebut.Linked list merupakan metode untuk menyimpan data dengan struktur sehingga dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data yang diperlukan. Program akan berisi suatu struct atau definisi kelas yang berisi variabel yang memegang informasi yang ada didalamnya, dan mempunyai suatu pointer yang menunjuk ke suatu struct sesuai dengan tipe datanya sehingga pemakaiannya lebih dinamis.

2. Bagaimana cara mendeklarasikan dan menggunakan Linked List di dalam bahasapemrograman bahasa C?

Kita dapat mendeklarasikan dan menggunakan linked list dalam bahasa pemrograman C dengan menggunakan struct untuk menyatakan bahwa itu adalah suatu data/node kemudian kita menentukan elemen datanya (apa saja yang terdapat dalam node tersebut) serta pointer pada data/node tersebut untuk menentukan link atau hubungan antarnode dalam struktur data tersebut.Deklarasi node dibuat dari struc seperti ini :Typedef struct Tnode {Int data;Tnode *next;};

3. Bagaimana cara menambah, menghapus dan atau mengubah data pada Linked List di dalampemrograman bahasa C?

Untuk menambah, menghapus dan atau mengubah data pada Linked List di dalam pemrograman bahasa C kita dapat menggunakan perintah-perintah seperti insert dan delete. insert untuk memasukkan data dalam Linked list, kita dapat memasukkan data dan menentukan pointernya, apakah data tersebut berada di awal, akhir atau diantara node-node yang sudah ada. Delete digunakan untuk menghapus node yang sudah ada kemudian menghapuskan/membebaskan node tersebut dari link antarnode yang sebelumnya terhubung, jika node yang dihapus berada diantara node lain, maka selanjutnya kita harus menghubungkan kembali node-node sebelum dan sesudah node yang dihapus tersebut, sehingga struktur data tetap memiliki sequence yang jelas

Contoh

================================# include # include struct TNode{char nim[15];char nama[30];int usia;TNode *next;};TNode *head;int opsi = 0;void init(){head = NULL;}bool isEmpty(){if (head ==NULL) return true;else return false;}void add_at_front(){TNode *baru;baru = new TNode;cout > baru-> nim;cout > baru-> nama;cout > baru-> usia;baru->next = NULL;clrscr();if(isEmpty()==true){head=baru;head->next = NULL;}else {baru->next = head;head = baru;}}void add_at_end(){TNode *baru,*bantu;baru = new TNode;cout > baru-> nim;cout > baru-> nama;cout > baru-> usia;baru->next = NULL;clrscr();if(isEmpty()== true){head=baru;head->next = NULL;} else {bantu=head;while(bantu->next!=NULL){bantu=bantu->next;}bantu->next = baru;}}void add_at_midle(){TNode *baru, *bantu;int posisiSisip;if(isEmpty()== false){coutposisiSisip;bantu=head;baru=new TNode;for(int i=1;inext!=NULL)bantu=bantu->next;else break;}cout > baru-> nim;cout > baru-> nama;cout > baru-> usia;baru->next=bantu->next;bantu->next=baru;clrscr();}else coutnext;delete hapus;clrscr();} else {head = NULL;}}else {coutnext->next!=NULL){bantu = bantu->next;}hapus = bantu->next;bantu->next = NULL;delete hapus;clrscr();} else {head = NULL;}} else {coutnext;banyakdata++;}if((posisiSisipbanyakdata)){coutnext=hapus->next;delete hapus;clrscr();}}else cout