belajar pemrograman

19
 S  EbenARNYA blogger gaptek di kampUs dapat tugas "memasukan data ke variabel dinamis (for to do)" tapi malas n  gerjakan. wkwkwkw nah ini aku ada dapat bahan materinya untuk pascal, mungkin bermanfaat untuk  so bat gap tek yan g pen ge n bel aja r pascal ato bag i sob at GAPTEK yang ambi l  jurusan ti..  so.. SILAHKAN DINIKMATI ALGORITMA DAN PEMROGRAMAN 2 Oleh: Anis Cherid, MTI VARIABEL STATIS DAN VARIABEL DINAMIS Dalam ber bagai contoh pad a modul se bel umnya, pengg unaan variabel poi nt er adal ah  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 yang dipergunakan adalah variabel statis, yait u variabel yang memi liki 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 bisa dihapus 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 terstrukt ur ( 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 tipe data yang disimpan dalam masing-masing elemen adalah tipe record . Misalnya jika kita mendeklarasikan variabel di bawah ini: type TMahasiswa = record 

Upload: mohammad-ichsan

Post on 06-Jul-2015

136 views

Category:

Documents


0 download

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

5/7/2018 belajar pemrograman - slidepdf.com

http://slidepdf.com/reader/full/belajar-pemrograman 19/19

 

Password : “mlente.wordpress.com” (tanpa tanda kutip)

di kutip dari : http://mlente.wordpress.com/2008/11/05/turbo-pascal-15-for-

windows/

Selamat mencoba..latihan..latihan..latihan..