Sabtu, 10 April 2010

Materi hari keempat MK Pemrograman

Input dan output program
Kadang kala kita ingin memberi input untuk
program yang kita buat tanpa melalui keyboard
tetapi dengan menggunakan file. Ini bisa
dilakukan dengan menggunakan tanda <. Ini bisa
dilakukan di linux dan cygwin.
$./coba.exe < inputfile
Tentunya inputfile berisi semua data yang
dibutuhkan oleh program, seperti kita mengetik
satu per satu.
Input <
Kadang kala juga kita ingin output dari program
bukan ke layar melainkan ke sebuah file. Ini bisa
dilakukan dengan menggunakan tanda >.
$./coba.exe > outputfile
$./coba.exe >> outputfile
Cara pertama: file baru dibuat setelah itu baru diisi
dengan output program
Cara dua: jika nama file sudah ada, output
program ditambahkan dalam file tersebut.
Output >, >>
Jika input dari sebuah file dan output ke sebuah
file juga bisa dilakukan sekaligus dengan
$./coba.exe <> outputfile
Input <>, >>
Pointer
Jika kita deklarasikan sebuah variabel, contohnya,
float g;
maka
&g adalah merupakan “alamat dari” variabel g.
cout << g; // luaran adalah nilai variabel g
cout << &g; // luaran adalah alamat variabel g
Operator &
Sebuah pointer adalah sebuah variabel yang
isinya alamat sebuah variabel lain.
Cara deklarasi pointer: dengan menambahkan
tanda * sebelum nama variabelnya seperti ini:
Tipe *nama;
int *a; // sebuah pointer tipe int
float *b[2]; // sebuah array pointer
Apa itu pointer?
Jika kita deklarasikan sebuah pointer, contohnya,
float *p;
maka
*p adalah merupakan nilai pada alamat sebuah
variabel. “nilai yang ditunjukkan oleh” p.
p = &a;
cout << p; // luaran adalah alamat variabel a
cout << *p; // luaran adalah nilai variabel a
Operator *
int main()
{
float a; // variabel tipe float
float *p; // sebuah pointer tipe float
a = 2.3;
p = &a; //variabel p berisi alamat variabel a
cout << a << endl;
*p = 4.2; // kita ubah nilai variabel a
cout << a << endl;
}
Contoh
Sebuah pointer juga bisa berisi alamat sebuah
array.
int *p, b[10];
p = b; // ingat tanpa & karena sebuah array
// atau bisa juga dengan
p = &b[0];
Pointer p menunjukkan alamat element pertama
array b.
Pointer dan Array
Operasi yang bisa dilakukan selain menggunakan
* adalah + penambahan dan – pengurangan.
contoh:
int *p, b[10];
p = b; // p menunjuk ke alamat b[0]
p = p + 1; // p menunjuk ke alamat b[1]
p--; // kembali ke alamat b[0]
p = p + 5; // p menunjuk ke alamat b[5]
Operasi Pada Pointer
int main()
{
float a[4]={2,4,6,8}; // array variabel tipe float
float *p; // sebuah pointer tipe float
p = a;
cout << *p; // nilai a[0] yaitu 2
cout << *(p+3); // nilai a[3] yaitu 8
*p = 5; // kita ubah nilai variabel a[0] = 5
*(p+2) = 3; // a[2] = 3
}
Contoh
*p++; // ini membingungkan mana yang lebih
dulu ++ atau *
Sebaiknya ditulis
*(p++); // atau
(*p)++; // bedanya apa?
Operasi Pada Pointer
Sebuah pointer bisa juga menunjukkan alamat ke
sebuah pointer. Untuk deklarasi pointer ini dengan
menambahkan lagi tanda * sebelum nama
variabel.
float x;
float *y = &x; // pointer
float **z = &y; // pointer ke pointer
z menunjukkan ke y dan y menunjuk ke x;
Pointer menunjuk pointer
Sebuah null pointer adalah sebuah pointer biasa
yang tidak menunjuk ke variabel manapun.
float *x = 0;
x tidak menunjuk manapun.
Null Pointer
Selain itu pointer juga bisa menunjuk ke sebuah
fungsi. Ini karena definisi fungsi memiliki
alamat/alokasi memory tersendiri di memory
komputer. Caranya dengan memberi kurung pada
nama fungsi dan diberi tanda * sebelum nama
seperti ini:
float (*akar)(float x);
Pointer untuk fungsi
float hitung(float x, float (*operasi)(float))
{
return (*operasi)(x);
}f
loat akar2(float x)
{
return sqrt(x);
}
int main()
{ float y = 2, z;
float (*a2)(float) = akar2;
z = hitung(y,a2);
....
Contoh
Deretan huruf
Array huruf atau karakter
Sebuah kata atau kalimat bisa dibuat dengan
menggunakan deretan huruf atau array char.
char nama[30];
char nama[30]={'N','E','W','T','O','N'};
char nama[30]=”NEWTON”;
Setelah akhir kata diisi dengan null character “\0”.
[N|E|W|T|O|N|\0| | | |...]
char
Cara lain:
char [] nama={'N','E','W','T','O','N'};
char [] nama=”NEWTON”;
Disini besar array ditentukan secara automatis
sesuai dengan jumlah huruf dan null character.
char
Memori Dinamik
Dalam membuat array, kita mendeklarasi dengan
float s[100];
Dengan deklarasi ini, komputer mengalokasikan
memori untuk menampung 100 varibel yang
bertipe float. Besarnya array s tidak bisa diubah
atau statik.
Jadi jika kita menggunakan cara ini kita harus
menyiapkan jumlah array yang cukup. Jika kurang
akan terjadi error.
Memori statik
Jika kita memiliki array yang besarnya/ukurannya
bisa berubah kita perlu mengunakan array
dinamik. Caranya dengan menggunakan operator
new dan new [].
Memori Dinamik
Untuk menggunakan operator new, kita perlu
menambahkan
#include
Caranya:
Pointer = new tipe[jumlahnya];
float *a; // pointer untuk alokasi memory
a = new float[30];
Operator new dan new []
Jika kita tidak memerlukan lagi alokasi memori,
kita perlu mendelete array itu agar bisa digunakan
untuk hal yang lain.
Caranya:
delete pointer; // untuk satu elemen
delete [] pointer; // untuk array
Operator delete dan delete []

Tidak ada komentar:

Posting Komentar