Headlines News :
Home » » MAKALAH PEMROGRAMAN KOMPUTER 1

MAKALAH PEMROGRAMAN KOMPUTER 1

Written By ganessa on Minggu, 14 Oktober 2012 | 03.32


MAKALAH
PEMROGRAMAN KOMPUTER 1
“VARIABEL POINTER”
 

Dosen:
MAKSUR, S.Kom

Di susun oleh:
NAMA        : TARNO
NIM             : 11.11.2397

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER
STIMIK AMIKOM
PURWOKETO
2012


Kata pengantar

Segala puja dan puji syukur saya limpahkan hanya kepada allah SWT, Tuhan yang menguasai timur dan barat, tiada sekutu baginya. Sholawat serta salam sejahtera semoga selalu dilimpahkan atas Nabi Mohammad dan keluarganya, begitu pula atas para sahabat-sahabat beliau yang senantiasa terhadap ajaran-ajaran islam yang mulia.
Sebuah makalah ini di susun berdasarkan untuk memenuhi tugas dari mata kuliah Pemrograman Komputer 1,  dengan dosen MAKSUR,S.Kom. Tugas ini yaitu sebagai syarat untuk bisa mengikuti responsi. Isi atau pembahasan dalam makalah ini adalah tentang variabel pointer beserta contoh programnya.
Saya berharap dengan pembuatan makalah ini dapat memberikan manfaat bagi saya dan juga bagi pembacanya. Dan juga dapat membantu saya untuk memperdalam ilmu pemrograman terutama.

Purwokerto, Desember 2012
Penulis







BAB I
LATAR BELAKANG

SEKILAS MENGENAI BAHASA PEMROGRAMAN C DAN C++
 pemrograman C++ merupakan superset dari bahasa pendahulunya yaitu bahasa pemrograman C. Bahasa pemrograman C dikembangkan oleh Dennis Ritchie pada tahun 1972 di Laboratorium Bell. Bahasa pemrograman C adalah bahasa pemrograman yang dapat dikatakan berada antara bahasa tingkat rendah (berorientase mesin) dan bahasa tingkat tinggi (bahasa berorientase pada manusia). Bahasa pemrograman C berada satu tingkat di atas bahasa yang berorientasi pada mesin, namun tetap satu tingkat dibawah sebagian besar bahasa yang berorientasi persoalan. Bahasa pemrograman C cukup dekat dengan komputer untuk memberikan kendali yang besar terhadap detil implementasi pemakaian, namun cukup jauh untuk mengabaikan detil hardware. Karena itulah bahasa pemrograman C suatu ketika dipandang sebagai bahasa high-level dan pada saat yang lain dilihat sebagai bahasa low-level.
 pemrograman C merupakan bahasa pemrograman terstruktur, yang membagi program kedalam bentuk sebuah blok. Tujuannya adalah untuk memudahkan dalam pembuatan dan pengembangan program. Program yang ditulis dengan bahasa pemrograman C mudah sekali untuk dipindahkan dari satu jenis mesin ke jenis mesin lainnya. Hal ini berkat adanya standarisasi bahasa pemrograman C yaitu berupa standar ANSI (American National Standards Institute) yang dijadikan acuan oleh para pembuat kompiler C.
Bahasa Pemrograman C++ Membawa Bahasa Pemrograman C ke Lingkungan Pemrograman Berorientasi Obyek
 bahasa pemrograman C, menyusul apa yang kita kenal dengan bahasa pemrograman C++. Bahasa pemrograman C++ tetap mempertahankan kehebatan C, termasuk kemampuan dan keluwesannya dalam menangani interface hardware dan software, pemrograman low-levelnya, serta efisiensinya. bahasa pemrograman C++ diciptakan satu dekade setelah C. Diciptakan oleh Bjarne Stoustrup, Laboratorium Bell, AT&T, pada tahun 1983.
Bahasa pemrograman C diambil sebagai landasan dari C++, mengingat keportabilitasan C yang memungkinkannya diterapkan pada berbagai mesin, dari PC hingga mainframe, serta pada pelbagai sistem operasi (DOS, UNIX, VMS dan sebagainya). Namun bahasa pemrograman C++ membawa C ke dunia pemrograman berorientasi obyek, dan tetap mempertahankan keterpaduan dan efisiensi eksekusi C.
Keistimewaan yang sangat berarti pada bahasa pemrograman C++ adalah karena bahasa ini mendukung pemrograman berorientasi obyek. Tetapi bahasa pemrograman C++ hanyalah bahasa yang bersifat hibrid, bukan bahasa murni yang berorientasi obyek. Karena itu, bahasa pemrogram C pada tahap awal dapat berpindah jalur ke C++ setahap demi setahap. Pustaka-pustaka yang dibangun dengan C tetap dapat dipakai pada C++, dibaurkan dengan pemrograman yang berorientasi obyek.
Tujuan utama pembuatan bahasa pemrograman C++ adalah untuk meningkatkan produktivitas pemrograman dalam bahasa aplikasi. Kebanyakan pakar setuju bahwa pemrograman berorientasi obyek dan C++ dapat mengurangi kekompleksitasan, terutama pada program yang besar yang terdiri dari 10.000 baris atau lebih.












BAB II
PEMBAHASAN

              dalam struktur data ada beberapa macam. Salah satunya adalah pemograman C++. Dan yang akn di bahas dalam makalah ini adalah tentang variabel pointer.

POINTER
1.    PENGERTIAN POINTER
Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di dalam memori. Contoh, jika sebuah variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk ke variabel kedua.
Operator Pointer ada dua, yaitu :
Ø  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. Misalkan andy diletakkan pada alamat 1776 kemudian dituliskan instruksi sbb :
andy = 25;
fred = andy;
ted = &andy;
·         Operator & bersifat unary (hanya memerlukan satu operand saja).
·         Operator & menghasilkan alamat dari operandnya.
Ø  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 untuk ted 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;
·         Operator * bersifat unary (hanya memerlukan satu operand saja).
·         Operator * menghasilkan nilai yang berada pada sebuah alamat.

2.    DEKLARASI POINTER

Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum digunakan.
Bentuk Umum :
Contoh:
                                 int *a;    atau     int* a;
                                 char *ket;          atau     char* ket;
//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();
}

3.    OPERASI POINTER
a.      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();
}

b.      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();  
}

c.       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();}

4.      POINTER DAN STRING
//Contoh9_5
#include <iostream.h>
#include <conio.h>
void misteri1(char *);
void main() {
char string[] = "amikom";
cout<< "String sebelum proses adalah " << string <<"\n" ;
misteri1(string);
cout<<"String setelah proses adalah "<<string;
getch();
}
void misteri1(char *s) {
while ( *s != '\0' ) {
if ( *s >= 'a' && *s <= 'z' )
*s -= 32;
++s;
}
}

5.      POINTER MENUNJUK  SUATU ARRAY
Pointer pada array sangat digunakan untuk pengembangan program yang besar, karena secara internal array juga menyatakan alamat,yaitu pengenal array sama dengan alamat pada elemen pertama pada array. sebagai contoh sederhana dapat anda lihat pada contoh program berikut :
//Contoh9_6
#include "iostream.h"
#include "conio.h"
void main()
{ static int tgl_lahir[] = { 13,9,1982 };
int *ptgl;
ptgl = tgl_lahir; /* ptgl berisi alamat array */
cout<<"Diakses dengan pointer\n";
cout<<"Tanggal = "<< *ptgl<<"\n";
cout<<"Bulan = "<< *(ptgl + 1) <<"\n";
cout<<"Tahun = "<<*(ptgl + 2) <<"\n";
cout<<"\nDiakses dengan array biasa\n";
cout<<"Tanggal = "<< tgl_lahir[0] <<"\n";
cout<<"Bulan = "<< tgl_lahir[1] <<"\n";
cout<<"Tahun = "<< tgl_lahir[2] <<"\n";
getch();
}

6.      MEMBERI NILAI ARRAY DENGAN POINTER
//contoh9_7
#include "iostream.h"
#include "conio.h"
void main()
{ int x[5], *p, k;
clrscr();
p = x;
x[0] = 5;
x[1] = x[0];
x[2] = *p + 2;
x[3] = *(p+1) - 3;
x[4] = *(x + 2);
for(k=0; k<5; k++)
cout<<"x["<<k<<"] = "<< x[k]<<"\n";
getch();
}

7.      MEMORI DINAMIS

Pada contoh program di samping kiri sejumlah memori secara ekplisit disisihkan untuk menampung array titik yang mempunyai 10 elemen. Sebenamya alokasi memori ini, hanya yang dibutuhkan saja, dapat dilakukan secara dinamis yaitu dilakukan pada saat run-time, Untuk melakukan hal ini kita perlu array yang elemen elemennya adalah pointer ke suatu struktur seperti dijelaskan pada program di samping kanan.
             Alokasi memori secara dinamis dilakukan dengan operator new dan dealokasi dilakukan dengan operator delete. Keduanya merupakan operator baru pada C++.


#include <iostream.h>

struct ttk
{
int x;
int y;
};
main()
{
int i;
struct ttk titik[10];

for (i=0; i < 10; ++i)
{
titik[i].x = i ;
titik[i].y=i;}
for(i=0;i< 10;++i)
{cout << titik[i].x << ", " << titik[i].y << "\n";
}
return 0;}

#include <iostream.h>

  struct ttk
  {
  int x;
  int y;
  };
  main()
  {
  int i;
  struct ttk *titik[10];
 
  for(i=0;i<10;++i)
  {
  titik[i] = new ttk;
  titik[i]->x=i;
  titik[i]->y = i;
  }
  for (i=0;i< 10;++i)
  {
cout << titik[i]->x  <<  ", "  <<  titik[i]->y << "\n";
                }
  for(i=0;i< 10;++i)
  {
  // free(titik[i]);
  delete titik[i];
  }
  return 0;
  }


                                                                                     
Share this article :

3 komentar:

Posting Komentar

 
Support : Creating Website | Johny Template | Maskolis | Johny Portal | Johny Magazine | Johny News | Johny Demosite
Copyright © 2011. BERBAGI ILMU - All Rights Reserved
Template Modify by Creating Website Inspired Wordpress Hack
Proudly powered by Blogger