belajar pemrograman
TRANSCRIPT
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 1/19
S EbenARNYA blogger gaptek di kampUs dapat tugas "memasukan data ke variabel dinamis (for to do)" tapi malas n
gerjakan. wkwkwkwnah ini aku ada dapat bahan materinya untuk pascal, mungkin bermanfaat untuk
sobat gaptek yang pengen belajar pascal ato bagi sobat GAPTEK yang ambil jurusan ti..
so..
SILAHKAN DINIKMATI
ALGORITMA DAN PEMROGRAMAN 2Oleh: Anis Cherid, MTI
VARIABEL STATIS DAN VARIABEL DINAMIS
Dalam berbagai contoh pada modul sebelumnya, penggunaan variabel pointer adalah penggunaan yang sia-sia. Mengapa demikian? Karena nilai suatu variabel dapat diambil atau
diubah secara langsung dengan menggunakan nama variabel yang bersangkutan, tanpa perlu
menggunakan variabel pointer. Dalam berbagai contoh pada modul sebelumnya, variabel yangdipergunakan adalah variabel statis, yaitu variabel yang memiliki 3 ciri penting, yang dapat
diuraikan sebagai berikut:
1. Variabel statis memiliki nama. Pemberian nama dilakukan dalam bagian deklarasi
variabel (misalnya: var a, b:integer).
2. Variabel statis menempati bagian memori yang disebut data segment, sehingga tidak bisadihapus dari memori begitu program dieksekusi atau tidak bisa diubah ukuran elemennya
jika variabel tersebut bertipe array.
3. Variabel statis menempati bagian memori yang disebut data segment yang dibatasi
ukurannya oleh compiler (maksimum 64 Kbyte).
Dengan demikian, ukuran maksimal dari sebuah variabel terstruktur (array dan record ) yang
bisa dideklarasikan dalam data segment (Turbo Pascal versi 5.5 dan 7.0) adalah 65.535 byte (64
Kilobyte). Sebuah array bertipe integer, maksimum hanya bisa terdiri dari 32.767 elemen(65.535/2 byte), sementara sebuah array bertipe real, maksimum hanya bisa terdiri dari 10.922
elemen (65.535/6 byte) . Jumlah elemen array yang bisa dibuat akan semakin sedikit jika tipedata yang disimpan dalam masing-masing elemen adalah tipe record . Misalnya jika kita
mendeklarasikan variabel di bawah ini:type
TMahasiswa = record
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 2/19
NIM : array [1..10] of '0'..'9'; Nama : string [40]; IPK : real; end;
var arsipMahasiswa : array [1..maxNum] of TMahasiswa;
maka nilai maksimum konstanta maxNum adalah 1137. Dengan kata lain, hanya 1137 elemendari array dengan tipe data record di atas yang bisa dibuat. Jika kita membuat sebuah variabelterstruktur di atas sebanyak 1137 elemen, maka tidak tersedia lagi tempat untuk mendeklarasikan
variabel lainnya.
Berbagai keterbatasan ini bisa diatasi jika variabel terstruktur yang kita butuhkan tidak kitatempatkan secara statis di dalam data segment , tetapi kita letakkan secara dinamis di dalam
bagian memori yang disebut dengan heap. Memori heap adalah memori yang masih tersedia
setelah program kita dimuat ke dalam memori dan alokasi memori untuk pendeklarasian variabelsudah dilakukan. Penempatan secara dinamis mengandung arti:
1. Kita bisa membuat dan menghapus variabel yang kita inginkan kapan saja, meskipun
program sudah dieksekusi.2. Ruang yang tersedia untuk pembuatan variabel menjadi jauh lebih banyak, karena yang
menjadi batas bukanlah data segment , melainkan besarnya memori heap.
Kedua butir di atas mengimplikasikan bahwa lebih beragam variabel yang bisa kita masukkan
dalam program yang kita buat, baik dari segi jenis dan struktur maupun dari segi ukurannya.
Dengan demikian, jika kita diharuskan membuat program yang memiliki tugas-tugas yang lebihkompleks, yaitu program yang kemungkinan besar akan membutuhkan jenis, struktur dan ukuran
data yang lebih beragam, tentu kita harus menggunakan variabel dinamis. Penggunaan variabeldinamis misalnya mutlak diperlukan jika kita harus membuat program yang menggunakanstruktur data dinamis (misalnya linked-list ). Contoh lain program yang membutuhkan variabel
dinamis adalah program yang secara intensif membaca, mengolah dan menulis data ke dalammedia penyimpanan sekunder (misalnya program pengolah kata dan basis data) atau program
yang secara intensif berkomunikasi dengan komputer lain melalui sebuah saluran komunikasi[SHT00].CONTOH 1
Di bawah ini adalah contoh mengalokasikan variabel dinamis di dalam memori heap: program Contoh_1_Alokasi_Variabel_Dinamis;type
string4=string[4]; var
alamatString:^string4; begin
new(alamatString);
{Mengalokasikan sebuah variabel dinamis bertipe string...}
{...dalam memori heap. Variabel ini tidak memiliki nama...}
{...dan posisinya dalam memori ditunjuk oleh variabel...}
{...pointer alamatString.}
{Setelah statement di atas dilaksanakan, ruang kosong...}
{...dalam memori heap berkurang.}
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 3/19
alamatString^:='Budi';
{Mengisi lokasi memori yang sudah dialokasikan dengan...}
{...'Budi', atau dengan kata lain, mengisi variabel dinamis...}
{...yang ditunjuk pointer alamatString dengan 'Budi'.}
writeln(alamatString^);
{Menampilkan nilai variabel dinamis yang ditunjuk oleh...} {...variabel pointer alamatString}
dispose(alamatString);
{Menghapus alamat yang dialokasikan, sehingga kondisi...}
{...memori heap kembali seperti sebelum dibuatnya...}
{...variabel dinamis}
end.
Untuk membebaskan memori yang sudah dialokasikan sehingga bisa digunakan untuk
menyimpan variabel dinamis lainnya, kita menggunakan instruksi,dispose (alamatString);Seteleh statement dispose di atas dilaksanakan, blok memori heap yang sebelumnya
dialokasikan untuk variabel dinamis yang ditunjuk oleh variabel pointer alamatString akandikembalikan kepada sistem operasi, sehingga ukuran memori heap yang tersedia kembali
seperti semula (yaitu seperti sebelum ada variabel dinamis yang dialokasikan). Namun
demikian, alamat memori yang ditunjuk oleh variabel pointer alamatString, masih tetap
alamat memori yang telah dialokasikan sebelumnya. Untuk memperjelas, perhatikan ilustrasi di bawah ini:
1. Kondisi memori heap sebelum alokasi variabel dinamis:
x+3
xkosong
alamatString
HEAPDATA SEGMENT
2. Kondisi memori heap sesudah pelaksanaan statement new(alamatString);x+3x
kosong
alamatStringHEAPDATA SEGMENT
3. Kondisi memori sesudah pelaksanaan statement alamatString^:='Budi';u
x+3x
i
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 4/19
d
B
kosongalamatString
HEAP
DATA SEGMENT
4. Kondisi memori sesudah pelaksanaan statement dispose(alamatString);u
x+3x
i
dB
kosong
alamatString
HEAPDATA SEGMENT
Variabel pointer alamatString masih menunjuk alamat memori yang sebelumnya
dialokasikan, meskipun alamat tersebut sudah dianggap kosong oleh sistem operasi. Kekacauan
bisa muncul jika kita tidak mengosongkan nilai variabel pointer alamatString, seperti
terlihat dalam contoh di bawah ini.CONTOH 2 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 5/19
22
23
24
25
26
27
28
29
30
31
32
33
program Contoh_2_Nilai_Pointer_Tetap_Menunjuk_Alamat_Lama;type
TName = string[20]; var
My_Name : ^TName;
My_Age : ^integer;
Her_Name : ^TName;
begin My_Name := nil;
Her_Name := nil;
New (My_Name);
New (My_Age);
My_Name^ := 'Budi Raja';
My_Age^ := 15;
writeln ('My_Name^ = ',My_Name^);
{output: My_Name^ = Budi Raja}
writeln ('My_Age^ = ', My_Age^);
{output: My_Age^ = 15}
dispose(My_Name);
dispose(My_Age);
New (Her_Name);
Her_Name^ := 'Wati Ratu';
writeln('Her_Name^ = ', Her_Name^);
{output: Her_Name^ = Wati Ratu}
writeln('My_Name^ = ', My_Name^);
{output: My_Name^ = Wati Ratu}
My_Name^ := 'Budi SalahAlamat';
writeln ('Her_Name^ = ', Her_Name^);
{output: Her_Name^ = Budi SalahAlamat}
dispose (Her_Name);end.
Dalam program di atas, meskipun memori yang dialokasikan untuk pointer My_Name sudah
dibebaskan (dispose) pada baris ke 20, pointer My_Name masih menunjuk ke alamat memori
yang telah dibebaskan tersebut. Jika kita mengalokasikan memori untuk pointer Her_Name danmengisinya dengan sebuah nilai (baris 23 – 24), maka memori yang dialokasikan untuk pointer
Her_Name adalah memori yang sebelumnya dialokasikan untuk My_name. Jika kita berusaha
menampilkan nilai dalam memori yang ditunjuk oleh pointer My_Name (baris 27), maka nilai
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 6/19
yang ditampilkan adalah nilai dari Her_Name^. Dalam contoh di atas, Turbo Pascal tetap
mengijinkan kita mengisi nilai ke dalam memori yang ditunjuk oleh pointer My_Name (baris 28)
dan bisa menimbulkan kekacauan dalam program maupun dalam memori (dikenal dengan istilahmemory corruption). Karena itu, jadikanlah kebiasaan untuk mereset nilai pointer menjadi NIL,
jika memori yang dialokasikan untuk sebuah pointer sudah dibebaskan. Dengan demikian,
sebaiknya kita menyisipkan sebuah baris tambahan sehingga baris 20 dan 21 menjadi sebagai berikut:dispose(My_Name);
My_Name:= NIL;dispose(My_Age);
My_Age:= NIL;
Variabel pointer yang memiliki nilai NIL, tidak menunjuk alamat memori yang mana pun,sehingga jika kita berusaha mengisi atau menampilkan isi memori yang ditunjuk oleh variabel
pointer tersebut (misalnya dengan instruksi My_Name:='Budi'), maka komputer akan
menampilkan pesan kesalahan. Dengan demikian, mengisi variabel pointer yang memorinya
sudah dibebaskan (dispose) dengan NIL, akan mencegah terjadinya memory corruption.
Variabel dinamis tidak memiliki nama dan dirujuk oleh variabel pointer yang digunakan
sebagai parameter dari prosedur new. Jika karena satu dan lain hal kita ingin menggunakanvariabel pointer tersebut untuk kebutuhan yang lain, kita harus menyimpan nilainya dalam
variabel pointer lainnya agar jangan sampai kita kehilangan jejak terhadap alamat dalam memoriheap yang menyimpan variabel dinamis tersebut. Selain itu, jangan lupa untuk melakukandispose terhadap variabel dinamis yang sudah tidak dibutuhkan lagi, agar memori yang sudah
dialokasikan bisa dipergunakan untuk kepentingan yang lain. Contoh berikut akan memperjelaskonsep ini.
CONTOH 3 program Heap_Overflow;type
TName = array [1..65535] of char; var
My_Name : ^TName;
i : word; begin
i:=0;
while (true) do
begin
inc(i);
writeln(i);
new(My_Name);
end;end.
Dalam program di atas, kita melakukan loop yang tidak ada akhirnya dan pada setiap loop kitamengalokasikan memori sebanyak 65.535 byte di dalam memori heap untuk menyimpan
karakter string. Setiap kali alokasi dibuat dengan statement new, pointer My_Name akan
menunjuk ke lokasi memori yang baru dialokasikan. Kita akan kehilangan jejak atas posisi
memori yang sebelumnya, meskipun lokasi memori tersebut tetap dialokasikan oleh sistemoperasi dan tidak bisa digunakan untuk kepentingan lainnya. Peristiwa hilangnya bagian memori
heap dari kendali program dikenal dengan istilah memory leak.
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 7/19
POINTER DAN ARRAY DINAMIS
Pointer bisa dipergunakan untuk mengalokasikan array secara dinamis di dalam memoriheap. Keuntungan dari menggunakan array yang bersifat dinamis adalah jumlah elemennya bisadiubah-ubah sesuai kebutuhan. Di bawah ini adalah program Pascal yang dipergunakan untuk
meminta operator memasukkan jumlah elemen array yang diinginkan. Kemudian program akan
mengalokasikan array dengan jumlah elemen sebanyak yang diminta operator dan mengisimasing-masing elemen dengan nilai acak. Selama program berjalan, ukuran array yang
dialokasikan dalam memori heap berubah-ubah sesuai yang diminta operator.Program_Pascal_Mengalokasikan_Array_Dinamis;uses wincrt;
var
num,index:integer;
p, ptemp:^integer; label keluar_loop;
beginrepeat
write('Berapakah jumlah data yang akan dimasukkan? ');
readln(num); if num=0 then goto keluar_loop;
{*****
Mengalokasikan array secara dinamis
sebanyak #num# elemen
*****}
getmem(p, sizeof(integer) * num);
for index:= 0 to num-1 do begin {*****
Menjadikan ptemp menunjuk alamat memori dari
masing-masing index
*****} ptemp := ptr(seg(p^), ofs(p^) + index*sizeof(integer));
{*****
Mengisi alamat memori yang ditunjuk ptemp
dengan bilangan acak
*****}
ptemp^:= random(1000)+1;
end;
for index:=0 to num-1 do begin
{*****
Menjadikan ptemp menunjuk alamat memori dari masing-
masing index dan menampilkan isi dalam memori
*****}
ptemp := ptr(seg(p^), ofs(p^) + index*sizeof(integer));
writeln('Nilai ke-',index+1,': ',ptemp^);
end;
writeln('Sisa memori heap sesudah alokasi array: ', memavail);writeln('Sisa memori heap maksimal yang bisa ',
'dialokasikan: ', maxavail);
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 8/19
{***** Membebaskan kembali memori yang sudah dialokasikan *****}
freemem(p, sizeof(integer) * num);
writeln;until num<=0;keluar_loop:
end.
Jika program di atas diimplementasikan menggunakan Bahasa C, hasilnya adalah demikian:/* Program_C_Mengalokasikan_Array_Dinamis */#include#include#include
#include /* dibutuhkan untuk fungsi alokasi memori */ void main(){
int num, index, *p;
randomize();
do {
printf("Berapakah jumlah data yang akan dimasukkan? ");
scanf("%d",&num); if (num==0) break;
/*****
Mengalokasikan array secara dinamis
sebanyak #num# elemen
*****/
p = (int *) malloc (sizeof(int) * num);
for (index=0; index /*****
Mengisi alamat memori yang ditunjuk ptemp
dengan bilangan acak
*****/ p[index] = random(1000)+1;
}
for (index=0; index
printf("Nilai ke-%d: %d\n", index+1, p[index]);
}
printf("Sisa memori heap sesudah alokasi array: %u",
coreleft()); /*****
Membebaskan kembali memori yang
sudah dialokasikan
*****/ free(p);
printf("\n");
} while (num>0);}
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 9/19
Dalam contoh program berikut ini proses pengalokasian array secara dinamis juga diikuti
dengan proses penyalinan isi elemen array dari array yang lama ke array yang baru
dialokasikan. Berikut program dan penjelasannya [SHT00]:123
45678910111213141516
1718192021222324252627282930
31323334353637383940414243
44#include#include#define NUM 3int main(){
double nilai, total=0, *data=NULL, *temp=NULL;int jumlah=0, ukuran=NUM, i;data = (double *) malloc (sizeof(double)*ukuran);do {
printf("Masukkan sebuah nilai (atau 0 untuk keluar): ");
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 10/19
scanf("%lf",&nilai);if (nilai==0) break;if (jumlah==ukuran){
ukuran = ukuran * 2;temp = (double *) malloc(sizeof(double)*ukuran);if (temp==NULL){
printf("Tidak tersedia ruang dalam memori heap: ""nilai masukan dibatalkan\n");
break;} else {
printf("Memori tambahan berhasil dialokasikan. "
"ukuran = %d\n",ukuran);for (i=0;i
temp[i]=data[i];}free(data);data=temp;
}}total+=nilai;
data[jumlah++]=nilai;} while (1);if (nilai!=0){
printf("Tidak tersedia ruang dalam memori:"
"nilai masukan dibatalkan\n");printf("Nilai %f tidak disimpan\n",nilai);
}printf("Jumlah %d masukan adalah %f\n",jumlah,total);if (jumlah==0) return 0;printf("No. Transaksi Nilai\n\n");for (i=0;i
printf( "%3d. %5.2f\n",i,data[i]);}
return 0;}
PENJELASAN CARA KERJA PROGRAM
Ketika baris 7 selesai dilaksanakan:data = (double *) malloc (sizeof(double)*ukuran);
dalam memori heap akan dialokasikan array untuk menampung nilai bertipe double sebanyak 3
elemen. Mengapa 3 elemen? Karena nilai ukuran=3.Alamat elemen ke-0 dalam memori heap ditunjuk oleh variabel pointer data, sehingga gambar
logis dari kondisi memori dapat dilihat dalam gambar di bawah ini:
data[2]
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 11/19
data[0]datadata[1]
Ketika loop do/while dilaksanakan:
Putaran 1:Baris 10 dilaksanakan: scanf("%lf",&nilai)Diasumsikan bahwa operator memasukkan nilai 20, sehingga nilai=20Dengan demikian kondisi pada baris 11: if (nilai==0)tidak terpenuhi, sehingga instruksi
break tidak dilaksanakan.
Demikian pula kondisi pada baris 12: if (jumlah==ukuran) tidak terpenuhi karena
jumlah=0 dan ukuran=3.
Pelaksanaan program berlanjut ke baris 29: total+=nilai
Dengan demikian, total=20.
Baris 30: data[jumlah++]=nilai artinya data[0]=20 dan jumlah=1Selanjutnya loop do/while akan memasuki putaran 2.
Putaran 2:Baris 10 dilaksanakan: scanf("%lf",&nilai)Diasumsikan bahwa operator memasukkan nilai 10, sehingga nilai=10Dengan demikian kondisi pada baris 11: if (nilai==0)tidak terpenuhi, sehingga instruksi
break tidak dilaksanakan.
Demikian pula kondisi pada baris 12: if (jumlah==ukuran) tidak terpenuhi karena
jumlah=1 dan ukuran=3.
Pelaksanaan program berlanjut ke baris 29: total+=nilai
Dengan demikian, total=30.
Baris 30: data[jumlah++]=nilai artinya data[1]=10 dan jumlah=2
Selanjutnya loop do/while akan memasuki putaran 3.Putaran 3:
Diasumsikan operator memasukkan nilai 30, sehingga:
nilai=30 total=60 data[2]=30 jumlah=3
Sesudah putaran 3 selesai dilaksanakan, kondisi memori menjadi seperti gambar di bawah ini:
20data[2]data[1]data[0]
data 30 10
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 12/19
Perhatikan bahwa sesudah putaran 3 ini, array yang ada dalam memori heap sudah terisi semua
elemennya. Bagaimana cara program menyelesaikan masalah jika operator memasukkan sebuahnilai lagi? Jawabannya terdapat dalam putaran 4.
Putaran 4:
Diasumsikan operator memasukkan nilai 40, sehingga: nilai=40Pada putaran 4 ini, kondisi pada baris 12 if (jumlah==ukuran)terpenuhi, sehingga
pelaksanaan program akan berlanjut ke baris 13:ukuran=ukuran*2 sehingga ukuran=6
Baris 14:temp = (double *) malloc(sizeof(double)*ukuran)
Jika diasumsikan bahwa program berhasil mengalokasikan tempat dalam memori heap untuk array bertipe double sebanyak 6 elemen, maka kondisi dalam baris 15 if (temp==NULL)
tidak akan terpenuhi dan kondisi memori akan berubah menjadi:
20
data[2]data[1]data[0]data 30 10
temp
temp[1]temp[0]
temp[2]temp[4]temp[5]temp[3]
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 13/19
Selanjutnya program akan berlanjut ke baris 20 dan pada layar komputer ditampilkan
tulisan:
Memori tambahan berhasil dialokasikan. ukuran = 6Selanjutnya, pada baris 22 s/d 24 dilaksanakan for loop yang bertujuan menyalin semuaisi elemen array data ke dalam array temp, sehingga setelah loop ini selesai
dilaksanakan, kondisi memori menjadi:
20data[2]data[1]data[0]data 30 10
temp
temp[1]temp[0]
30 10 20temp[2]temp[4]temp[5]temp[3]Selanjutnya, pada baris 25 free(data) akan menyebabkan memori yang dialokasikan untuk
array data dihapus dan pada baris 26 data=temp akan menyebabkan pointer data menunjuk alamat yang juga ditunjuk oleh pointer temp. Hal ini dapat digambarkan sebagai berikut:
20data[2]data[1]data[0]data
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 14/19
30 10
temp
temp[1]temp[0]
30 10 20temp[2]temp[4]data[5]data[3]temp[3]temp[5]data[4]data[2]data[1]data[0]Pelaksanaan program berlanjut ke baris 29: total+=nilai
Dengan demikian, total=100.
Baris 30: data[jumlah++]=nilai artinya data[3]=30 dan jumlah=4Selanjutnya loop do/while akan memasuki putaran 5.
Putaran 5:
Baris 10 dilaksanakan: scanf("%lf",&nilai)Diasumsikan bahwa operator memasukkan nilai 0, sehingga nilai=0
Dengan demikian kondisi pada baris 11: if (nilai==0) terpenuhi, sehingga instruksi break dilaksanakan dan loop do/while berakhir.
Kondisi pada baris 32: if (nilai!=0) tidak terpenuhi, sehingga pelaksanaan progam
berlanjut ke baris 37.
Pada baris 37, program akan menampilkan tulisan:Jumlah 4 masukan adalah 100Kondisi pada baris 37: if (jumlah==0) tidak terpenuhi, sehingga instruksi return 0
tidak dilaksanakan.
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 15/19
Pelaksanaan progam berlanjut ke baris 39 dan kemudian melaksanakan for loop dari baris 40 s/d
42 sehingga pada layar komputer ditampilkan tulisan: No. Transaksi Nilai0. 201. 10
2. 303. 40REFERENSI:[SHT00] Victor Shtern. 2000. Core C++: A Software Engineering Approach. Prentice Hall.
Memahami OOP
Posted Fri, 08/12/2005 - 05:34 by wibi
• Artikel:
o [IT] - Pemrograman
Hari gini masih bicara OOP? Hmm, mungkin memang sudah basi. Tapi saya tetap merasa bahwa
untuk bisa masuk ke .NET dengan aman, salah satu yang harus anda persiapkan adalah
pemahaman OOP secara baik. Beruntunglah bagi anda yang sebelum kenal .NET sudah familiar dengan OOP. Tapi bagi anda yang belum, saya menyarankan kenalilah dulu konsep OOP. Cukup
banyak sumber-sumber informasi di internet yang menyediakan informasi tentang OOP.
Secara sederhana, sesuai dengan kepanjangan namanya, OOP adalah suatu model pemrograman
yang berorientasi pada obyek. Maksudnya adalah, bahwa setiap bagian dari apa yang anda program -visual maupun non visual- adalah sebuah obyek. Obyek, dalam konteks ini adalah
"sesuatu", bisa dianalogikan dengan benda, yang padanya melekat attribut-attribut. Attribut
tersebut bisa dikelompokkan ke dalam 2 jenis yaitu kelompok "property" dan kelompok "method" atau "event".
Untuk memudahkan pemahaman, property dan method bisa dibedakan dengan melihat apakah
dipergunakan kata benda atau kata kerja untuk menyebutkannya. Property selalu dengan kata
benda, sementara method adalah kata kerja. Misalnya, jika obyeknya adalah manusia, makacontoh property adalah warna kulit, rambut, tangan, kaki. Sedangkan method-nya adalah
berjalan, berlari, bersin, dipukul, dijitak dan sebagainya. Dalam bentuk obyek visual dalam
pemrograman, contoh yang mudah adalah sebuah tombol atau button. Warna button, bentuk huruf, ukuran button adalah property. Sedangkan method dari button antara lain, diklik, di-
doubleclick, atau dilewati mouse. Banyak sedikitnya property dan method dalam suatu obyek,
bisa tergantung juga dari bahasa pemrograman yang digunakan.
Dalam OOP juga dikenal yang namanya "event driven programming", atau pemrograman yang berdasarkan kejadian. Berbeda dengan pemrograman struktural yang alur prosesnya berjalan
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 16/19
sequential dan bisa ditelusuri dengan mudah dari source-codenya, maka dalam OOP pada
hakikatnya memprogram adalah mendefiniskan proses apa yang harus dilakukan jika ada suatu
kejadian. Dan memang dalam era visual, cara kerja user bisa terlihat amat acak (random) jikadibanding era text-based. Orang bisa saja klik di sana-sini, tekan enter, escape, atau memutar-
mutar mouse di layar dan program yang kita buat harus siap dengan semua event yang bisa
terjadi.
Sinau (belajar) pemrograman
Diposkan oleh rumah digital , Selasa, 05 Oktober 2010 at
11:20, inDunia komputer gak pernah lepas dari kerja 'pemrograman'. Jika zaman jadoel kita
harus menguasai bahasa mesin atau assembly, maka skrng udah banyak banyakpemrograman yg dekat dengan bahasa manusia (bahasa tingkat tinggi).
Pertama belajar algoritma
Kenapa algoritma? algoritma jantung dari pemrograman. Algoritma adalah langkah-
langkah membuat program untuk memecahkan masalah untuk di terjemahkan
dalam bahasa pemrograman.
Buat pemula coba belajar pascal sama C++ dulu..
Belajar programing Pascal atau C++ ?, saya sebenarnya sudah belajar
pemograman baik Pascal menggunakan Tubo Pascal ataupun C++, nah apa
sebenarnya yang bisa kita dapatkan dari belajar programing Pascal atau C++ ini?
Saya ingin memberikan sedikit pengetahuan dan pengalaman, , saya juga hanya
suka belajar saja tidak lebih, dimana ini belajar programming ini sangat penting
baik untuk masa depan kita atau pun untuk pengetahuan dan menambah ilmu
"computer" kita. - lanjut baca Belajar programing Pascal atau C++ ?
"Pascal" adalah salah satu bahasa pemograman taun jebot :) he.. he.. ya yang pasti
yang lagi kuliah dan baru masuk awal-awal kuliah dan memasuki jurusaninformatika atau teknik komputer akan menemui mata kuliah ini. Nah Pascal adalah
dasar dari Visual basic, jadi sahabat yang sedang belajar Pascal pasti bertanya,
"buat apa belajar Pascal" jawabannya adalah Pascal adalah dasar pengetahuan
untuk belajar pemograman di tingkat selanjutnya.Nah klo mau jago VB ada
baiknnya tuntasin dulu pascal.
C++ atau Turbo C atau Visual C++ juga tidak jauh beda dengan Pascal, hanya saja
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 17/19
C++ masih sangat banyak digunakan untuk kalangan industri ataupun untuk
seorang programing dalam membangun programnya. Bahasa C juga banyak
digunakan dalam pembuatan Game. Ganjar rasa Pemograman C atau C++ dan
teman-temannya harus anda kuasai minimal dasarnya untuk belajar pemograman
ke tingkat selanjutnya.
Ingat baik Pascal atau C++ menurut saya adalah salah satu dari banyak software
pemograman tyang banyak digunakan oleh para programmer, ini karena Pascal dan
C++ merupakan dasar dari semua pemograman. Jika sahabat semua sudah
mengerti cara jalan program atau Algoritma dari dua program ini, ini sudah lebih
dari cukup untuk belajar pemograman ketingkat selanjutnya. So baik itu Pascal atau
pun C++ kedua-duanya baik ko :D
Borland C++
Borland C++ is a C and C++ programming environment (used to be called anIntegrated Development Environment) for DOS, Windows, and Windows NT. As a
successor of Turbo C++. Its better debugger, the Turbo Debugger, was written in
protected mode DOS.
Libraries
Object Windows Library (OWL) : A set of C++ classes to make it easier to develop
professional graphical Windows applications.
Turbo Vision : A set of C++ classes to create professional applications in DOS.
Those classes mimics some of the aspects of a Windows application like: dialog
boxes, messages pumps, menus, accelerators, etc.
Add-ons
Borland Power Pack for DOS : It allows you to create 16- and 32-bit DOS applications
using protected mode. Those applications can access a limited scope of the
Windows API and call functions in any Windows DLL.
Borland CodeGuard : Once installed and integrated within the IDE, CodeGuard can
insert instrumentalization code in the final executables that can be used to monitor:
pointer usage, API calls, how many times some function is called, among other
features. If some error is found, a pop-up window appears, the debugger can stop or
a log is written to disk. Delivered for 16- and 32-bit applications.
Version History
Borland C++ 1.0 - (1990, MS-DOS) Next Version was 2.0
Borland C++ 2.0 - (1991, MS-DOS)
Borland C++ 3.0 - (1992) New compiler support to build Microsoft Windows
applications.
Borland C++ 3.1 - (1992) Introduction of Windows-based IDE and application
5/7/2018 belajar pemrograman - slidepdf.com
http://slidepdf.com/reader/full/belajar-pemrograman 18/19
frameworks (OWL 1.0, Turbovision 1.0)
Borland C++ 4.0 - (1993, Windows 3.x) MS-DOS IDE supported no longer, included
OWL 2.0.
Borland C++ 1.0 - (1992, OS/2)
Borland C++ 1.5
Borland C++ 2.0 - (1993, OS/2) Support for 2.1 and Warp 3. OWL 2.0. Included IBMSMART Toolset for automatically migrating Windows applications to OS2. Last
version.
Borland C++ 4.01
Borland C++ 4.02 - (1994)
Borland C++ 4.5
Borland C++ 4.51
Borland C++ 4.52 - (1995) Official support for Windows 95, OWL 2.5
Borland C++ 4.53
Borland C++ 5.0 - (1996, Windows 95) Released in March 1996. Works on Windows
95 and Windows NT 3.51. It does not (officially) work on Windows NT 4.0 (which wasstill in development at that time). 3rd party tests exhibited some problems on NT
4.0. It does not work in Windows 3.x or DOS. Despite that, it can produce either
Win32, Win16 or DOS programs.
Borland C++ 5.01
Borland C++ 5.02 - (1997) Final release of the Borland C++ IDE (subsequently
replaced up by the C++Builder series), final release to support compilation to (real-
mode) MS-DOS target. Windows NT 4.0 officially supported.
Borland C++ 5.5 - Command-line compiler only (not with IDE). It is still (freely)
available from Borland at CodeGear.
http://www.indowebster.com/Borland_C_502.html
sumber : http://www.remo-xp.com/2009/09/borland-c.html
Turbo Pascal 1.5 For Windows
Mungkin saat ini cukup sulit untuk mendapatkan software turbo pascal dari internet,
kecuali hasil ngopi dari komputer lab, tapi kalau kejadiannya seperti saya yang lupa
ngopi dari lab, lalu ada tugas untuk bikin program dari pascal, akhirnya repot juga,
walau saya juga pernah denger2 kalo pake delphi juga bisa karena mereka pada
prinsipnya satu turunan, tapi karena saya sendiri juga blm pernah belajar delphi jadiya masih pede untuk cari program turbo pascal. Bagi teman-teman yang
membutuhkan program Turbo Pascal 1.5 for Windows silahkan download melalui
link dibawah ini :
(link update)
http://www.4shared.com/file/106374605/6f7f30bd/TPW.html