Sabtu, 09 Januari 2010

STRUKTUR DATA

TUGAS

STRUKTUR DATA


  1. Temukan eror dalam kode program berikut :

  1. For ( x = 100, x >= 1, x++ )

cout <<>

  1. Kode berikut ini seharusnya mencetak apakah suatu nilai integer itu genap atau ganjil:

switch ( value % 2 )

{

case 0:

cout << "ganjil integer" <<>

case 1:

cout << "genap integer" <<>

}

  1. Kode program berikut seharusnya mengeluarkan output integer ganjil dari 19 sampai 1 :

for ( x = 19; x >= 1; x += 2 )

cout <<>

  1. Kode program berikut seharusnya mengeluarkan output integer genap dari 2 sampai 100:

counter = 2;


do

{

cout <<>

counter += 2;

} While ( counter < 100 );

2. Buat sebuah program yang menggunakan sebuah statement for untuk menjumlahkan sejumlah integer yang dimasukkan satu per satu oleh user. Misal integer yang dimasukkan adalah sebagai berikut : 5 100 200 300 400 500

  1. Buat sebuah program yang menggunakan sebuah statement for untuk menemukan integer terkecil dari beberapa integer yang dimasukkan oleh user.

  2. Buat sebuah program yang menggunakan sebuah statement for untuk menghitung dan menjumlahkan bilangan ganjil dari 1 sampai 15.

  3. Buat sebuah program yang menggunakan statement for untuk mencetak bentuk-bentuk berikut secara terpisah. Gunakan loop for untuk membuat bentuk tersebut. Semua asterisk (*) harus dicetak dengan statement tunggal dengan cout << ‘*’; [petunjuk : kedua bentuk terakhir memerlukan sejumlah blank untuk memulainya. Bonus ekstra : kombinasikan keempatnya dalam satu program.]

(a) (b) (c) (d)

* ********** ********** *

** ********* ********* **

*** ******** ******** ***

**** ******* ******* ****

***** ****** ****** *****

****** ***** ***** ******

******* **** **** *******

******** *** *** ********

********* ** ** *********

********** * * **********




JAWABAN


1. Eror dari kode program berikut :

1.1 For ( x = 100, x>=1, x++)

cout<<>

Adalah :

  1. Deklarasi pada statement perulangan for seharusnya semua menggunakan huruf kecil (for) bukan For.

  2. Parameter nilai pencacah x++ dalam tubuh for seharusnya menggunakan x--

  3. Akhir parameter di dalam statement for seharusnya menggunakan titik koma (;) seperti for(x=100; x>=1; x--)


1.2 Kode berikut seharusnya mencetak suatu integer itu genap atau ganjil :

switch ( value % 2 )

{

case 0:

cout<< ” ganjil integer ”<

case 1:

cout<< “ genap integer “<

}

Adalah :

  • Jika ingin mencetak suatu bilangan dan bilangan tersebut termasuk genap atau ganjil maka kita harus tahu terlebih dahulu kalau hasil bilangan yang modulus 2 adalah 0, maka bilangan yang dicetak adalah bilangan genap.

Maka kode diatas seharusnya :

switch ( value % 2 )

{

case 0:

cout<< ” genap integer ”<

case 1:

cout<< “ ganjil integer “<

}


  • Biasanya penggunaan switch case dalam kode program harus diikuti dengan kata break;

switch ( value % 2 )

{

case 0:

cout<< ” genap integer ”<

break ;

case 1:

cout<< “ ganjil integer “<

break;

}



    1. Kode program berikut seharusnya mengeluarkan output integer ganjil dari 19 sampai dengan 1.

for( x = 19; x >=1 ; x +=2)

cout<<>




Adalah :

Jika kita ingin menampilkan output bilangan ganjil dari besar ke kecil maka kita harus melakukan pengurangan bilangan pencacah bukan penjumlahan. Statemen yang benar adalah seperti di bawah ini :

for( x = 19; x >=1 ; x - =2)

cout<<>

    1. Kode program berikut seharusnya mengeluarkan output integer genap dari 2 sampai 100.


counter = 2;

do

{

cout<<>

counter +=2;

} While ( counter <>


Adalah :

Kode program diatas sudah benar tetapi yang salah disini yaitu pendeklarasian “While” dimana seharusnya menggunakan huruf kecil, seperti dibawah ini :

counter = 2;

do

{

cout<<>

counter +=2;

} while ( counter <>


2. Program yang menggunakan statement for untuk menjumlahkan integer yang dimasukan oleh user :


#include

#include

main()

{

int n[6], i;

double jum;

gotoxy(15,2);cout<< "+*****************************************+";

gotoxy(15,3);cout<< "+---oO0----- PROGRAM -----0Oo---+";

gotoxy(15,4);cout<< "| P E N J U M L A H A N |";

gotoxy(15,5);cout<< "+---oO0-----*******************-----0Oo---+"<< "\n\n";



cout<< "Masukkan 6 buah data nilai yang akan dijumlahkan... :"<< "\n\n";

for (i=1; i<=6; i++)

{ cout<<< " : ";

cin>>n[i]; }

cout<< "\n\n";

cout<< "Data nilai yang Anda masukkan yaitu :"<< "\n\n";

for (i=1; i<=6; i++)

{ cout<<< "\n"; }

jum=0;

for (i=1; i<=6; i++)

{

jum+=n[i]; }

cout<<"_______+"<

cout<<< "\n\n";

cout<< "Jadi Total Jumlah Nilai adalah : "<

}




Outputnya :
















  1. Buat sebuah program yang menggunakan sebuah statement for untuk menemukan integer terkecil dari beberapa integer yang dimasukkan oleh user.

Adalah :

#include

void main()

{

int x[6];

int i;

int min=1000;

double tot;


cout<< "Masukkan 6 data nilai :"<< "\n\n";

for(i=1;i<=6;i++)

{ cout<< "Nilai ke"<<<":";

cin>>x[i];}

cout<< "\n\n";

cout<< "Data nilai yang anda masukkan :"<< "\n\n";

for(i=1;i<=6;i++)

{cout<<< " "; }

for(i=0;i<10;i++)

{

if(x[i]

{

min=x[i];

}

}

cout<< " "<< "\n\n";

cout<< "Nilai terkecil : "<<

}



Outputnya :

4. Menggunakan statement for untuk menampilkan bilangan ganjil dari 1 sampai 15 :


#include

main()

{

int a;

for (a=1; a<=15; a+=2)

{ cout<<< " " ;}

}



Outputnya :





  1. Listing Program C++ untuk menampilkan deret bintang

#include<iostream.h>

#include<conio.h>

void main()

{

int c,i,j,y,z;

//Cetak teks keterangan program

gotoxy(10,18);cout<<"*******STITNA*******ANiX@2010*******";

gotoxy(9,1);cout<<"+---oO0----PROGRAM MENAMPILKAN----0Oo---+";

gotoxy(9,2);cout<<"| B I N T A N G |"<

gotoxy(1,4);cout<< "(a)" ;

gotoxy(15,4);cout<< "(b)" ;

gotoxy(30,4);cout<< "(c)" ;

gotoxy(54,4);cout<< "(d)" ;



for (j=1; j<=10; j++)

{ cout<

for(y=1; y<=j; y++)

{ cout<<"*"; }

}

for (j=10; j>=1; j--)

{

if ( j==10)

{

gotoxy(15,5);

for(z=1;z<=j;z++)

{ cout<<"*"; }

}

if ( j==9)

{

gotoxy(15,6);

for(z=1;z<=j;z++)

{ cout<<"*"; }

}

if ( j==8)

{

gotoxy(15,7);

for(z=1;z<=j;z++)

{ cout<<"*"; }

}

if ( j==7)

{

gotoxy(15,8);

for(z=1;z<=j;z++)

{ cout<<"*"; }

}

if ( j==6)

{

gotoxy(15,9);

for(z=1;z<=j;z++)

{ cout<<"*"; }

}

if ( j==5)

{

gotoxy(15,10);

for(z=1;z<=j;z++)

{ cout<<"*"; }

}

if ( j==4)

{

gotoxy(15,11);

for(z=1;z<=j;z++)

{ cout<<"*"; }

}

if ( j==3)

{

gotoxy(15,12);

for(z=1;z<=j;z++)

{ cout<<"*"; }

}

if ( j==2)

{

gotoxy(15,13);

for(z=1;z<=j;z++)

{ cout<<"*"; }

}

if ( j==1)

{

gotoxy(15,14);

for(z=1;z<=j;z++)

{ cout<<"*"; }

}


}

for (c=10;c>=1;c--)

{

if (c==10)

{

gotoxy(30,5);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==9)

{

gotoxy(31,6);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==8)

{

gotoxy(32,7);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==7)

{

gotoxy(33,8);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==6)

{

gotoxy(34,9);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==5)

{

gotoxy(35,10);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==4)

{

gotoxy(36,11);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==3)

{

gotoxy(37,12);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==2)

{

gotoxy(38,13);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==1)

{

gotoxy(39,14);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

}

for (c=1;c<=10;c++)

{

if (c==1)

{

gotoxy(55,5);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==2)

{

gotoxy(54,6);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==3)

{

gotoxy(53,7);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==4)

{

gotoxy(52,8);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==5)

{

gotoxy(51,9);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==6)

{

gotoxy(50,10);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==7)

{

gotoxy(49,11);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==8)

{

gotoxy(48,12);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==9)

{

gotoxy(47,13);

for (i=1;i<=c;i++)

{ cout<<"*"; }

}

if (c==10)

{

gotoxy(46,14);

for (i=1;i<=c;i++)

{ cout<<"*"; }


}

}

}


Outputnya :

PBO

  1. Listing Program

//Class induk(super class)

package Animal;

public class Animal {

private int weight;

public Animal(int w) { weight=w; }

public void setWeight(int w) { weight = w; }

public int getWeight() { return weight; }

}

package Animal;

// class cow

public class Cow extends Animal {

public Cow() { super(100);}

}

package Animal;

//class pig

public class Pig extends Animal {

public Pig() { super(40); }

}

package Animal;

//class sheep

public class Sheep extends Animal {

public Sheep() { super(65); }

}

package Animal;

//main program

public class FarmExample2 {

public static void main(String[] args) {

Animal[] farm = {new Cow(), new Pig(),

new Sheep()};

int totalWeight = 0;

for (int i=0; i

totalWeight += farm[i].getWeight();

System.out.println("The total weight of the animals is " + totalWeight);

}

}

Output Program :

The total weight of the animals is 205

  1. membuata program :

¨ Buatlah sebuah class baru dengan nama Bebek yang merupakan turunan dari class Animal.

¨ Bebek memiliki atribut khusus jumlahTelur bertipe integer.

¨ Bebek berbunyi ‘kwek’.

¨ Panggil class Bebek dalam fungsi utama, dan tampilkan jumlah telurnya.

Jawab :

//class Animal

public class Animal {

private int weight;

public Animal(int w) { weight=w; }

public void setWeight(int w) { weight = w; }

public int getWeight() { return weight; }

public void talk() {

}

}

//class bebek

public class Bebek extends Animal {

int numberOfEggs;

public Bebek() {

super(4); // panggil constructor induk

numberOfEggs = 8;}

public void talk() {

System.out.println(" Bebek Berbunyi Kwek!!");}

public int getNumberOfEggs() {

return numberOfEggs;}

public void setNumberOfEggs(int n) {

numberOfEggs = n;}

}

//main program

public class farmExample3 {

public static void main(String[] args) {

Animal[] farm = {new Bebek()};

for (int i=0; i

farm[i].talk();

System.out.println(" Memiliki " +((Bebek)farm[i]).getNumberOfEggs()+ " Telur");

}

}

}

Outputnya :

Bebek Berbunyi Kwek!!

Memiliki 8 Telur

  1. Carilah permasalahan umum yang biasanya terjadi dalam polymorphisme

Masalah Pada Polymorphism:

Perhatikan kode berikut:

public class FarmExample4 {

public static void main(String[] args) {

Animal[] farm = {new Goose(), new Cow(),

new Pig(), new Sheep()};

for (int i=0; i

farm[i].talk();

System.out.println(farm[i].getNumberOfEggs()+“ eggs”);

}

} // end of main

}

Eksekusi program diatas hasilnya error. Goose, Cow, Pig dan Sheep dapat diperlakukan sebagai jenis dari Animal, tetapi class-class ini tidak mengimplementasikan semua metode yang sama: hanya Goose yang mengimplementasikan metode getNumberOfEggs.

Konsep Polymorphism memungkinkan digunakannya suatu interface yang sama untuk memerintah objek agar melakukan aksi atau tindakan yang mungkin secara prinsip sama namun secara proses berbeda. Dalam konsep yang lebih umum sering kali polymorphism disebut dalam istilah satu interface banyak aksi.

Pada contoh diatas clas dasar adalah class bentuk yang memiliki atribut berupa Luas dan operasi hitung luas, class tersebut dapat diturunkan kedalam berbagai macam class bentuk seperti Segitiga, Lingkaran, Persegi panjang. Class Segitiga, Lingkaran, Persegi panjang memiliki atribut “Luas” dari hasil penurunan class bentuk, akan tetapi operasi hitung luas pada masing masing class akan berbeda-beda, inilah yang disebut sebagai polymorphism

  1. Java tidak membolehkan multiple inheritance murni. Mengapa?

Ø Multiple inheritance diimplementasikan dalam beberapa bahasa object oriented programming ( seperti C++).

Ø Masalah – suatu subclass dapat mempunyai multiple superclasses dengan perilaku dan struktur yang overlap.

Ø Contoh:

Class InterestBearing menyimpan tanggal pembayaran bunya pertama.

Class Insurable menyimpan tanggal premi asuransi pertama di bayar

BankAccount diturunkan dari InterestBearing dan Insurable.

Ø Masalah ini bukan tidak dapat diatasi tetapi akan menambah kompleksitas dari bahasa.

Ø Java dirancang menjadi bahasa yang sederhana sehingga tidak mendukung multiple inheritance.

Ø Solusi yang diberikan Java adalah melalui interface.

Jadi, java hanya mengijinkan single inheritance bukan multiple inheritance. Karena Suatu class hanya dapat diturunkan dari satu class induk.

Ø Multiple inheritance, di Java, dapat diperoleh dengan memanfaatkan fitur interface.

  1. Soal

§ Perhatikan deklarasi berikut:

Asset asset1 = new RealEstate(1834.34);

Insurable asset2 = new RealEstate(1834.34);

InterestBearing asset3 = new BankAccount(794.43);

BankAccount asset4 = new BankAccount(794.43);

Mana pernyataan berikut yang sah (legal)?

System.out.println(asset1.getPremium());

System.out.println(asset1.getValue());

System.out.println(asset2.getPremium());

System.out.println(asset2.getInterestRate());

System.out.println(asset3.getPremium());

System.out.println(asset3.getInterestRate());

System.out.println(asset4.getPremium());

System.out.println(asset4.getValue());

System.out.println(asset4.getInterestRate());

Jawab :

Pernyataan yang sah :

a. Asset asset1 = new RealEstate(1834.34);

System.out.println(asset1.getValue());

b. Insurable asset2 = new RealEstate(1834.34);

System.out.println(asset2.getPremium());

c. InterestBearing asset3 = new BankAccount(794.43);

System.out.println(asset3.getInterestRate());

d. BankAccount asset4 = new BankAccount(794.43);

System.out.println(asset4.getPremium());

System.out.println(asset4.getInterestRate());