AD (728x90)

Diberdayakan oleh Blogger.
  • 2793 Pine St

    Pendidikan merupakan bekal terbaik untuk masa depan (Rian Budiman)

  • 1100 Broderick St

    Adalah seribu kali lebih baik untuk memiliki akal sehat tanpa pendidikan dari pada memiliki pendidikan tanpa akal sehat(Robert G)

  • 868 Turk St

    Pendidikan adalah pembelajaran dari apa yang bahkan anda tidak tahu bahwa anda tidak tahu (Daniel J. Boorstin)

  • 420 Fell St

Minggu, 18 Mei 2014

LOGIKA

Logika Informatika

Logika berasal dari bahasa Yunani, yaitu logos yang artinya kata, ucapan atau alasan. Jadi, logika adalah ilmu untuk berfikir dan menalar dengan benar
Istilah-istilah logika
Ada beberapa istilah yang akan digunakan dalam logika informatika yaitu :

Premis : yaitu sebuah pernyataan
Argumen : usaha untuk mencari kebenaran dari premis berupa kesimpulan
Konklusi : Kesimpulan


2.    PERNYATAAN (PROPOSISI)

Kata merupakan rangkaian huruf yang mengandung arti, sedangkan kalimat adalah kumpulan kata yang disusun menurut aturan tata bahasa dan mengandung arti. Di dalam matematika tidak semua pernyataan yang bernilai benar atau salah saja yang digunakan dalam penalaran. Pernyataan disebut juga kalimat deklaratif yaitu kalimat yang bersifat menerangkan. Disebut juga proposisi.

Pernyataan/ Kalimat Deklaratif/ Proposisi adalah kalimat yang bernilai benar atau salah tetapi tidak keduanya.
Contoh :
Yogyakarta adalah kota pelajar (Benar).
2+2=4                                     (Benar).
Tidak semua kalimat berupa proposisi
Contoh :
Dimanakah letak pulau bali?.
Pandaikah dia?.

#penalaran deduktif
penalaran yang didasarkan premis-premis yang diandaikan benar untuk menarik kesimpulan.
contoh:
1. semua mahasiswa baru mengikuti ospek.
2. wulandari adalah mahasiswa baru.
kesimpulannya : wulandari mengikut ospek.

#penalaran induktif
penalaran yang didasarkan pada premis-premis yang bersifat faktual untuk menarik kesimpulan yang bersifat umum.
contoh:
premis 1          : ayam  1   berkembang biak dengan telur
premis 2          : ayam  2   berkembang biak dengan telur
premis 3          : ayam  3   berkembang biak dengan telur
...
...
...
premis 50        : ayam 50  berkembang biak dengan telur
kesimpulannya : semua ayam berkembang biak dengan telur

Pernyataan:
Pernyataan adalah kalimat yang mempunyai nilai kebenaran (salah/benar)
Pernyataan yang tidak mengandung kata hubung kalimat,disebut pernyataan primer/tunggal/atom. Sedangkan pernyataan yang mengandung satu atau lebih kata hubung kalimat,disebut pernyataan majemuk.

preposisi dilambangkan dengan huruf kecil p,q,r,s,...
contoh:
p : 13 adalah bilangan ganjil
q : soekarno adalah alumni UGM
r :  ayam adalah binatang unggas
s : 2+2=4


3. PENGHUBUNG KALIMAT DAN TABEL KEBENARAN


KATA HUBUNG KALIMAT

Simbol
Arti
Bentuk
   ¬/~
Tidak/Not/Negasi
Tidak………….
   ^
Dan/And/Konjungsi
……..dan……..
      v
Atau/Or/Disjungsi
………atau…….
     =>
Implikasi
Jika…….maka…….
   < =>
Bi-Implikasi
……..bila dan hanya bila……..








TABEL KEBENARAN

p
q
~p
~q
p^q
pvq
p=>q
p <=>q
B
B
S
S
B
B
S
B
B
S
S
B
S
B
B
S
S
B
B
S
S
B
B
B
S
S
B
B
S
S
S
B


4.  INGKARAN (NEGASI) SUATU PERNYATAAN,KONJUNGSI,DISJUNGSI DAN IMPLIKASI

A. NEGASI (INGKARAN)

Jika p adalah “ Semarang ibukota Jawa Tengah”, maka ingkaran atau negasi dari pernyataan p tersebut adalah ~p yaitu “ Semarang bukan ibukota Jawa Tengah” atau “Tidak benar bahwa Semarang ibukota Jawa Tengah”. Jika p diatas bernilai benar (true), maka ingkaran p (~p) adalah bernilai salah (false) dan begitu juga sebaliknya.

Contoh:
a. p: semua siswa punya almamater
   ~ p : beberapa siswa tidak punya almamater
b.  q  : uki anak yang pandai
   ~ q : uki bukan anak yang pandai

B. KONJUNGSI

Konjungsi adalah suatu pernyataan majemuk yang menggunakan penghubung “DAN/AND” dengan notasi “^”

Contoh:
a.   p: Fahmi makan nasi
      q:Fahmi minum kopi
      Maka p^q : Fahmi makan nasi dan minum kopi
b.   p: Aan anak yang pemalas
      q: Aan anak yang ngantukan
        Maka p^q   : Aan anak yang pemalas dan ngantukan
Pada konjungsi p^q akan bernilai benar jika baik p maupun q bernilai benar. Jika salah satunya (atau keduanya) bernilai salah maka pÙq bernilai salah.

C. DISJUNGSI

Disjungsi adalah pernyataan majemuk yang menggunakan penghubung “ATAU/OR” dengan notasi “v”.
Kalimat disjungsi dapat mempunyai 2 arti yaitu :

a.    INKLUSIF OR
Yaitu jika “p benar atau q benar atau keduanya true”
Contoh  :
p : 7 adalah bilangan prima
q : 7 adalah bilangan ganjil
p v q : 7 adalah bilangan prima atau ganjil
Benar bahwa 7 bisa dikatakan bilangan prima sekaligus bilangan ganjil.

b.    EKSLUSIF OR
Yaitu jika “p benar atau q benar tetapi tidak keduanya”.
Contoh :
     p : Saya akan melihat pertandingan bola di TV.
     q : Saya akan melihat pertandingan bola di lapangan.
     p v q : Saya akan melihat pertandingan bola di TV atau lapangan.
Hanya salah satu dari 2 kalimat penyusunnya yang boleh bernilai benar yaitu jika “Saya akan melihat pertandingan sepak bola di TV saja atau di lapangan saja tetapi tidak keduanya.

D. IMPLIKASI

Misalkan ada 2 pernyataan p dan q, untuk menunjukkan atau membuktikan bahwa jika p bernilai benar akan menjadikan q bernilai benar juga, diletakkan kata “JIKA” sebelum pernyataan pertama lalu diletakkan kata “MAKA” sebelum pernyataan kedua sehingga didapatkan suatu pernyataan majemuk yang disebut dengan “IMPLIKASI/PERNYATAAN BERSYARAT/KONDISIONAL/ HYPOTHETICAL dengan notasi “ =>”.

Notasi pÞq dapat dibaca :
Jika p maka q
q jika p
p adalah syarat cukup untuk q
q adalah syarat perlu untuk p
     
contoh
         1.
                  p : Pak Ali adalah seorang haji.
        q : Pak Ali adalah seorang muslim.
  p => q : Jika Pak Ali adalah seorang haji maka pastilah dia seorang  muslim.
2.                    p : Hari hujan. 
                       q : Adi membawa payung.
                      
Benar atau salahkah pernyataan berikut?
a. Hari benar-benar hujan dan Adi benar-benar membawa payung.
b. Hari benar-benar hujan tetapi Adi tidak membawa payung.
c. Hari tidak hujan tetapi Adi membawa payung.
d. Hari tidak hujan dan Adi tidak membawa payung.






1.1       KONVERS, INVERS, DAN KONTRAPOSISI

Perhatikan pernytaan di bawah ini! ~  ^  v  => <=>
            
“Jika suatu bender adalah bendera RI maka ada warna merah pada bendera tersebut”

Bentuk umum implikasi di atas adalah “p => q” dengan
p : Bendera RI
q : Bendera yang ada warna merahnya.

Dari implikasi diatas dapat dibentuk tiga implikasi lainnya yaitu :
1.   KONVERS, yaitu q => p
Sehingga implikasi diatas menjadi :
“ Jika suatu bendera ada warna merahnya, maka bendera tersebut adalah bendera RI”.

2.   INVERS, yaitu ~p => ~q
Sehingga implikasi diatas menjadi :
“ Jika suatu bendera bukan bendera RI, maka pada bendera tersebut tidak ada warna merahnya”.

3.   KONTRAPOSISI, yaitu ~q => ~p
Sehingga implikasi di atas menjadi :
“ Jika suatu bendera tidak ada warna merahnya, maka bendera tersebut bukan bendera RI”.

Suatu hal yang penting dalam logika adalah kenyataan bahwa suatu implikasi selalu ekuivalen dengan kontraposisinya, akan tetapi tidak demikian halnya dengan  invers dan konversnya.

contoh lainnya:
p: lumba-lumba adalah binatang mamalia
q: lumba-lumba adalah binatang menyusui

Implikasi:
jika lumba-lumba adalah binatang mamalia maka lumba-lumba adalah
binatang yang menyusui.

konvers:
jika lumba-lumba adalah binatang menyusui maka lumba-lumba adalah
binatang mamalia.

invers  :
jika lumba-lumba bukan binatang mamalia maka lumba-lumba
bukan binatang menyusui

kontraposisi:
jika lumba-lumba bukan binatang menusui maka lumba-lumba
bukan binatang mamalia.


Hal ini dapat dilihat dari tabel kebenaran berikut
                                                                                                                  
p
q
~p
~q
implikasi
   p=>q
konvers
 q => p
   invers
~=> ~q
kontraposisi
~=> ~p
B
B
S
S
B
B
B
B
B
S
S
B
S
B
B
S
S
B
B
S
B
S
S
B
S
S
B
B
B
B
B
B

 Perangkai logika
Berikut adalah peringkai logika informatika
Konjungsi (And) dengan symbol “ ^ ”
Tabel Kebenaran :

Konklusi/Kesimpulan akan bernilai benar/ true  (T) jika kedua kondisi (A dan B) bernilai benar (T) .
——————————————————————————–
Disjungsi (Or) dengan symbol “ v “
Tabel Kebenaran :
Konklusi/Kesimpulan akan bernilai salah/ false  (F) jika kedua kondisi (A dan B) bernilai salah (F) .
————————————————————————————–
Negasi (Not)
Tabel Kebenaran :
not A adalah kebalikan dari premis A, dan
not not A adalah kebalikan dari premis not A
(Maaf kawan, simbol not gak kebaca di blog, liat di gambar aja ya simbolnya ;;))
——————————————————————————-
Implikasi (If ..then) dengan symbol (->)
Tabel Kebenaran :

Kondisi akan bernilai salah (F) jika pernyataan pertama (A) bernilai (T) dan pernyataan kedua (B) bernilai salah (F)
———————————————————————————————
Biimplikasi/ Ekuivalensi (If..then..if) dengan symbol “ <-> “
Tabel Kebenaran :
Jika premis pertama dan kedua ( A dan B ) bernilai sama maka A <->B akan bernilai benar (T)
——————————————————————————————-
NAND/ Not And dengan symbol “ | “
Tabel Kebenaran :

Fungsi NAND adalah kebalikan dari fungsi AND “ ^ “
————————————————————————————————-
NOR/ Not Or
Tabel Kebenaran :

Fungsi NOR adalah kebalikan dari fungsi OR “ v ”
———————————————————————————————-
XOR/ Exclusive Or
Tabel Kebenaran :
Fungsi XOR adalah kebalikan dari fungsi If..then..if atau biimplikasi “ <-> “

STRUKTUR DATA

Pengertian Pointer

Dalam ilmu komputer, pointer adalah tipe data bahasa pemrograman yang nilainya mengacu untuk menunjuk langsung nilai lain yang tersimpan di tempat lain dalam suatu memori komputer menggunakan alamat yang ada. Untuk bahasa pemrograman tingkat tinggi, pointer secara efektif dapat mengambil tempat pada general purpose registers di bahasa tingkat rendah seperti bahasa assembly atau kode mesin, tetapi bila memori tersedia.

Pointer adalah implementasi sederhana, lebih konkret tentang tipe data referensi yang lebih abstrak. Beberapa bahasa mendukung beberapa jenis pointer, walaupun ada yang memiliki lebih banyak pembatasan penggunaannya dari pada yang lain. Sebagai analogi, sebuah nomor halaman dalam buku dapat dianggap sebagai pointer ke halaman yang sesuai; dereferencing seperti pointer akan dilakukan dengan membalik ke halaman dengan nomor halaman yang diberikan.

Pointer dapat meningkatkan kinerja data secara signifikan agar operasi berulang seperti traversing string, tabel lookup, tabel kontrol dan struktur pohon. Secara khusus, sering jauh lebih efisien dalam waktu dan space untuk pointer dari pada menggunakan variable tipe data biasa.

Pointer juga digunakan untuk menyimpan alamat dari titik masuk untuk memanggil subrutin dalam pemrograman prosedural dan untuk run-time penghubung ke dynamic link libraries (DLL). Dalam pemrograman berorientasi objek, pointer ke fungsi yang digunakan untuk mengikat/menjilid method, ini sering disebut tabel method virtual.

Sementara "pointer" telah digunakan untuk merujuk pada referensi yang ada pada umumnya, hal ini berlaku lebih baik bagi struktur data yang secara eksplisit memungkinkan antarmuka (interface) pointer untuk dimanipulasi (secara aritmetik melalui aritmetik pointer) sebagai alamat memori. Karena pointer memungkinkan akses yang baik dilindungi maupun tidak dilindungi ke memori yang dituju.

Pointer primitif adalah pointer sering disimpan dalam format yang sama dengan integer. Namun, mencoba untuk dereference atau "mencari" pointer yang nilainya tidak pernah menjadi alamat memori yang valid akan menyebabkan program menjadi crash.

Deskripsi Formal:
Dalam ilmu komputer, pointer adalah macam referensi. Sebuah data primitive (primitive) adalah setiap datum yang dapat dibaca dari atau ditulis ke memori komputer menggunakan satu akses memori (misalnya, kedua byte dan kata (word) yang primitif).


Sebuah data agregat (aggregate) adalah sekelompok data primitif yang logis berdekatan di memori dan yang dipandang secara kolektif sebagai satu datum (misalnya, agregat bisa saja 3 byte logis berdekatan, maka nilai-nilai itu lah yang mewakili 3 koordinat titik di dalam ruang memori), ketika seluruh agregat yang terdiri dari jenis primitive yang sama, agregat dapat disebut sabagai sebuah array, dalam arti, multi-byte primitif adalah array dari byte.

Dalam konteks definisi ini, byte adalah primitif terkecil, masing-masing menentukan alamat memori byte yang berbeda. Alamat memori dari byte pertama pada sebuah datum dianggap sebagai alamat memori (atau base alamat memori) dari seluruh datum.

Sebuah pointer memori adalah primitive, nilai yang dimaksudkan untuk digunakan sebagai alamat memori itu disebut sebagai pointer petunjuk ke alamat memori. Hal ini juga disebut bahwa pointer menunjuk ke datum [dalam memori] ketika nilai pointer berupa alamat memori datum itu.

Secara lebih umumnya, pointer adalah jenis data referensi, dan agar memperoleh  pointer dereference maka datum pointer disimpan di lokasi yang berbeda di dalam memori. Fitur yang membedakan pointer dengan jenis referensi lain adalah nilai pointer yang dimaksud  agar ditafsirkan sebagai alamat memori, yang merupakan konsep 'tingkat rendah'.

Saat membuat struktur data seperti daftar, deret dan percabangan, perlu memiliki pointer untuk membantu mengelola bagaimana struktur dapat diimplementasikan dan dikendalikan. Contoh umum dari pointer adalah start pointer, end pointer, dan stack pointer. Pointer ini dapat menjadi absolute (alamat fisik yang sebenarnya atau alamat virtual di memori virtual) atau relative (sebuah offset dari alamat awal absolute ("dasar") yang biasanya menggunakan bit yang lebih sedikit dari pada alamat lengkap, tetapi biasanya juga akan membutuhkan satu tambahan operasi aritmatika untuk menyelesaikannya).

Dua byte offset, berisi 16-bit unsigned integer, dapat digunakan untuk menyediakan pengalamatan relative sampai dengan 64 kilobyte struktur data. Secara umum, meskipun, skema seperti itu banyak masalah, dan untuk kemudahan bagi programmer maka ruang alamat datar biasanya lebih disukai.

Sebuah byte offset, seperti nilai ASCII karakter heksadesimal dapat digunakan untuk menunjuk nilai integer alternatif dalam array. Dengan cara ini, karakter dapat sangat efisien diterjemahkan dari 'data mentah' ke indeks sekuensial dapat digunakan dan kemudian ke alamat absolut tanpa menggunakan tabel lookup.

Digunakan dalam mengontrol tabel
Kontrol tabel digunakan untuk mengontrol aliran program (program flow), biasanya membuat ekstensif menggunakan pointer. Pointer biasanya tertanam dalam sebuah entry tabel. Misalnya, digunakan untuk menyimpan entry point bagi subrutin yang akan dijalankan, dan berdasarkan kondisi tertentu yang didefinisikan dalam entri tabel yang sama.

Namun pointer  hanya dapat berupa indeks untuk memisahkan data yang lain tetapi terikat, tabel terdiri dari suatu array dari alamat yang aktual atau alamat sendiri (tergantung pada konstruksi bahasa pemrograman yang tersedia).

Pointer juga dapat digunakan untuk titik (kembali) ke entri tabel sebelumnya (seperti dalam pengolahan loop) atau maju melewatibeberapa entri tabel (seperti pada switch atau "awal" keluar dari loop).

Abstraksi pointer yang sangat tipis di atas merupakan kemampuan pengalamatan yang dikembangkan dengan arsitektur paling modern. Dalam skema sederhana, alamat atau indeks numerik, ditugaskan bagi setiap unit memori dalam sistem, di mana unit ini biasanya baik byte atau kata (word), secara efektif dapat mengubah semua memori ke array yang sangat besar. Kemudian, jika kita memiliki suatu alamat, sistem itu menyediakan operasi untuk mengambil nilai yang tersimpan dalam unit memori pada alamat (biasanya menggunakan register tujuan umum didalam mesin yang digunakan).

Dalam kasus biasa, pointer itu cukup besar untuk menampung alamat lebih dari beberapa unit memori yang berada di dalam sistem. Ini memperkenalkan kemungkinan bahwa program mungkin berusaha untuk mengakses alamat bila tidak ada unit memori, baik karena memori tidak cukup dipasang (yaitu di luar jangkauan memori yang tersedia) atau arsitektur tidak mendukung alamat tersebut. Kasus pertama mungkin, dalam platform tertentu seperti arsitektur Intel x86, disebut kesalahan segmentasi (segfault). Kasus kedua adalah mungkin dalam implementasi pada AMD64, di mana pointer yang memiliki panjang 64 bit dan alamat hanya memperpanjang sampai 48 bit. Disini pointer harus sesuai dengan aturan-aturan tertentu (alamat kanonik), jadi jika pointer nonkanonik adalah dereferenced, akan berakibat prosesor melakukan kesalahan perlindungan umum (general protection fault).

Di sisi lain, beberapa sistem memiliki lebih banyak unit memori dari pada alamat. Dalam hal ini, skema yang lebih kompleks seperti segmentasi memori atau paging dikelola untuk menggunakan bagian yang berbeda dari memori pada waktu yang berbeda pula. Inkarnasi terakhir dari arsitektur x86 mendukung hingga 36 bit dari alamat memori fisik, yang dipetakan ke ruang alamat 32-bit linear melalui mekanisme paging PAE. Jadi, hanya 1 / 16 dari total memori yang mungkin dapat diakses pada suatu waktu. Contoh lain dalam kelompok komputer yang sama adalah 16-bit dalam keadaan terlindungi dari prosesor 80286 yang meskipun mempunyai 16 MiB memori fisik, dapat mengakses hingga 1 GB dari memori virtual, namun kombinasi dari 16-bit alamat dan segmen register dapat mengakses lebih dari 64 KiB dalam satu struktur data rumit. Beberapa pembatasan aritmetik pointer ANSI mungkin memiliki model memori tersegmentasi dari kelompok prosesor ini.

Dalam rangka untuk mengembangkan interface yang konsisten, beberapa arsitektur menyediakan I / O yang dipetakan ke dalam memori, yang memungkinkan beberapa alamat untuk menuju ke unit memori sementara yang lain mengacu pada register perangkat perangkat lain di komputer. Ada konsep analog seperti file offset, indeks array, dan referensi object remote yang melayani beberapa tujuan yang sama sebagai alamat untuk jenis object lainnya.

Pointer secara langsung didukung tanpa pembatasan dalam bahasa seperti PL / I, C, C++, Pascal, dan kebanyakan bahasa perakitan. Ketika berhadapan dengan array, operasi pencarian kritis biasanya perhitungan alamat  disebut tahap perhitungan alamat yang melibatkan pembentukan sebuah array.

Dalam struktur data lain, seperti daftar terhubung (linked list), pointer digunakan sebagai referensi secara eksplisit yang mengikat salah satu bagian dari struktur yang lain. Pointer digunakan untuk menumpangi parameter bagi referensi. Hal ini berguna jika programmer mengingin modifikasi fungsi untuk parameter, untuk dapat dilihat ke pemanggilan fungsi itu. Ini juga berguna untuk menampikan nilai hasil perkalian dari dalam fungsi yang telah dibuat.

Pointer juga dapat digunakan untuk mengalokasikan atau DEALLOCATE variabel dinamis dan array dalam memori. Karena variable akan sering menjadikan memori penuh setelah selasai ngerjakan perintah, itu bisa menjadi pemborosan memori bila kita menyimpannya, dan oleh karena itu praktik yang baik untuk DEALLOCATE itu (menggunakan referensi pointer asli) ketika tidak lagi diperlukan. Kegagalan untuk melakukannya dapat mengakibatkan kehabisan memori (di mana memori bebas yang tersedia akan secara bertahap berkurang atau dalam kasus yang parah dengan secara cepat akan penuh).

Menurut Frieyadie. 2007. Edisi Revisi Buku Pemrograman C++ dengan Borland C++ 5.02.
Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer dimaksudkan untuk menunjukan ke suatu alamat memori sehingga alamat dari suatu variabel dapat diketahui dengan mudah.
Contoh Program:
#include <stdio.h>         //Mengakses file pada library stdio.h
#include <stdlib.h>        //Mengakses file pada library stdlib.h
int main (void){             //Fungsi main yang harus ada dalam sebuah program C
   int A = 5, H;
   int *ptrA, *ptrH;         //Deklarasi pointer sebagai integer
   ptrA = &A;                //Alamat lokasi memori dari variabel A disimpan pada ptrA
   H = *ptrA;                 //Nilai data yang alamat lokasi memorinya disimpan pada ptrA,
                                        disimpan di variabel H
   ptrH = &H;                //Alamat lokasi memori dari variabel H disimpan pada ptrH
                                     // %x menampilkan nilai hexa
  printf("A=%d\n &A=%x \n ptrA=%x \n *ptrA=%d", A, &A, ptrA, *ptrA);  
  printf("\n\nH=%d\n &H=%X\n ptrH=%X\n *ptrH=%d\n\n", H, &H, ptrH,*ptrH);
system ("pause");           //File yang terdapat pada stdlib.h
return (0);                     //Nilai balikan fungsi main() adalah 0
}
Arti pointer dalam bahasa sehari-hari adalah putunjuk atau dapat dikatakan sebagai penentu atau dapat diartikan sebagai tipe data yang nilainya mengarah pada nilai yang terdapat pada sebuah area memori (alamat memori).Namun dalam bahasa C, Pointer bisa berfungsi sebagai variabel array berarti pointer sebagai penunjuk elemen array ke-0 dalam variabel C.

Kegunaan Pointer Di C++ :
Kegunaan pointer yang utama adalah untuk menyimpan alamat memori dari sebuah variabel (data type atau object dari class), menyimpan alamat dari sebuah fungsi (function pointer) dan dapat berfungsi untuk  mengirimkan “Parameter yang berupa variabel” ke dalam fungsi, artinya nilai variabel bisa diubah di dalam fungsi serta dapat membuat variabel dinamis.

Tipe Data Pointer :
Tipe_data merupakan tipe dari data yang ditunjuk, bukan tipe dari pointer- nya. Contoh :
1. Mensubstitusikan address sebuah variabel ke pointer dengan memakai address operator &
    int x;
    int *ptr;
    ptr = &x;

2. Mensubstitusikan address awal sebuah array ke pointer
    char t[5]; char *ptr; ptr = t;

3. Mensubstitusikan address salah satu elemen array dengan address operator
    char t[5] ; char *ptr; ptr = &t[3];

4. Mensubstitusikan address awal character string ke pointer char
    char *ptr;
    ptr = "jakarta"

5. Mensubstitusikan NULL pada pointer.
NULL ada pointer kosong, menunjukkan suatu status dimana pointer itu belum diinisialisasikan dengan sebuah address tertentu.

Operator Pointer :
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 = &input;

Penulisan tersebut berarti akan memberikan variable ted alamat dari variable input. Karena variabel input diberi awalan karakter ampersand (&), maka yang menjadi pokok disini adalah alamat dalam memory, bukan isi variable.

Misalkan input diletakkan pada alamat 1776 kemudian dituliskan instruksi sbb :
input = 25;  fred = input; ted = &input;

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.

Macam – macam Pointer
Pointer Bertipe Void
Pada C++ terdapat pointer yang dapat menunjuk ke tipe data apapun, pointer semacam ini dideklarasikan dengan tipe void sehingga sering dikenal dengan istilah Void Pointer. Berikut ini contoh listing program yang menggunakan void pointer.
Pointer Aritmetika
Elemen-elemen array biasanya diakses melalui indeksnya, sebenarnya ada cara lain yang lebih efisien, yaitu dengan menggunakan pointer. Pointer semacam ini disebut dengan istilah pointer aritmetika. Konsep dasar dari pointer aritmetika ini adalah melakukan operasi aritmetika terhadap variabel yang bertipe pointer.
Pointer NULL
Pada saat program dijalankan, pointer akan menunjuk ke alamat acak pada memori, sehingga diperlukan inisialisasi agar hal tersebut tidak terjadi. Dalam C++ terdapat sebuah cara untuk membuat pointer tidak menunjuk ke alamat manapun, yaitu dengan mengisikan pointer tersebut dengan nilai NULL. Karena hal inilah maka pointer tersebut sering dinamakan pointer NULL (NULL Pointer).Se¬bagai contoh kita mempunyai pointer p, dan kita ingin melakukan inisialisasi pada pointer tersebut dengan nilai NULL, maka sintaknya adalah  P=NULL;

DEKLARASI POINTER
Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum digunakan.
Bentuk Umum :
                              Tipe_data *nama_pointer;

//Contoh9_1
int *px;
char *sh;
Contoh Program :
#include “IOSTREAM.h”
#include “conio.h”
void main()
{ int x, y; /* x dan y bertipe int */
int *px; /* px pointer yang menunjuk objek */
clrscr();
x = 87;
px = &x; /* px berisi alamat dari x */
y = *px; /* y berisi nilai yang ditunjuk px */
cout<<“Alamat x =”<<&x <<\n”;
cout<<“Isi px = \n”, px);
cout<<“Isi x = \n”, x);
cout<<“Nilai yang ditunjuk oleh px = \n”, *px);
cout<<“Nilai y = \n”, y);
getch();
}

Operasi-operasi Pointer
Operasi Penugasan
Suatu variabel pointer seperti halnya variabel yang lain, juga bisa mengalami operasi penugasan. Nilai sari suatu variabel pointer dapat disalin ke variabel pointer yang lain.
Operasi Aritmatika
Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan.
Operasi Logika
Operasi logika juga dapat dilakukan pada sebuah variabel pointer.

OPERASI POINTER
*  Operasi Penugasan
Suatu variable pointer seperti halnya variable yang lain, juga bisa mengalami operasi
penugasan. Nilai dari suatu variable pointer dapat disalin ke variable pointer yang lain.

//Contoh9_2
#include "iostream.h"
#include "conio.h"
void main()
{ float *x1,y, *x2;
clrscr();
y = 13.45;
x1 = &y;            /* Alamat dari y disalin ke variabel x1 */
x2 = x1;            /* Isi variabel x1 disalin ke variabel x2 */
cout<<"Nilai variabel y =  "<<y<< " ada di alamat "<< x1<<"\n";
cout<<"Nilai variabel y =  "<<y<< " ada di alamat "<< x2<<"\n";
 getch();
}

*  Operasi Aritmatika
Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer
saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan.
Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index
selanjutnya) dalam memori. Begitu juga operasi pengurangan.

//Contoh9_3
#include <iostream.h>
#include <conio.h>
void main()
{ int nilai[3], *penunjuk;
clrscr();
nilai[0] = 125;
nilai[1] = 345;
nilai[2] = 750;
penunjuk = &nilai[0];
cout<<"Nilai "<<*penunjuk <<" ada di alamat memori " <<penunjuk<<"\n";
cout<<"Nilai "<<*(penunjuk+1) <<" ada di alamat memori " <<penunjuk+1<<"\n";
cout<<"Nilai "<<*(penunjuk+2) <<" ada di alamat memori " <<penunjuk+2<<"\n";
getch();
}

*  Operasi Logika
Suatu pointer juga dapat dikenai operasi logika.

//Contoh9_4
#include<iostream.h>
#include "conio.h"
void main()
{ int a = 100, b = 200, *pa, *pb;
clrscr();
pa = &a;
pb = &b;
cout<<"nilai pa= "<<pa<< " nilai pb= "<<pb<<"\n";
if(pa < pb)
cout<<"pa menunjuk ke memori lebih rendah dari pb\n";
if(pa == pb)
cout<<"pa menunjuk ke memori yang sama dengan pb\n";
if(pa > pb)
cout<<"pa menunjuk ke memori lebih tinggi dari pb\n";
getch();}


Sumber : http://christ-13.blogspot.com/2012/07/pointer.html

Feature (Side)

© 2013 Kumpulan Materiku. All rights resevered. Designed by Templateism