Monday, December 16, 2013

Kelebihan dan Kekurangan Pointer c++

 Bahaya Pointer :
1.Bahaya yang mungkin ada dengan pointer sebagai moniker: memory leak, double delete, invalid memory access.  Semuanya dapat dihindari dengan ownership analysis yang bagus (pada setiap saat, harus diketahui pihak mana yang bertanggung jawab mendelete sebuah object). Jika hal ini sulit dilakukan, misalnya karena shared ownership, anda dapat menggunakan smart pointer atau garbage collector
2.Bahaya yang mungkin ada dengan pointer sebagai iterator: array out of bound. Salah satu cara yang efektif menghindari hal ini adalah dengan menggunakan standard algorithm. 3.Bahaya yang mungkin ada dengan pointer sebagai abstraksi fixed memory : Tidak tahu, tetapi ini bukan mainan sembarang programmer.

         Bahasa Pemrograman tanpa pointer ? 1.Semua Bahasa pemrograman Fungsional, terutama yang murni , tidak mengenal pointer atau memerlukan pointer.  Akan tetapi bahasa ini menggunakan model komputasi yang jauh berbeda, bukan abstract C machine. 2.Beberapa bahasa pemrograman dengan reference semantik dapat mengklaim mereka tidak memiliki pointer,  akan tetapi setiap variabel sebenarnya adalah pointer. Secara fisik mungkin reference tidak memiliki struktur  seperti pointer (biasanya merupakan data struktur yang lebih kompleks sehingga lebih friendly terhadap garbage collector) tapi reference tersebut memiliki fungsi  yang mirip dengan pointer di C atau C++.     Ada yang bilang bahwa reference dalam bahasa - bahasa ini menyebabkan optimasi lebih mudah karena tidak menyebabkan aliasing, tetapi optimasi tersebut juga mungkin dilakukan di C dan C++ ( dengan restrict pointer,  sayangnya belum merupakan bagian dari standard C++).

Fungsi Pointer dengan Contoh program nya

Pointer adalah variable yang berisi alamat memory sebagai nilainya dan berbeda dengan variable biasa yang berisi nilai tertentu. Dengan kata lain, pointer berisi alamat dari variable yang mempunyai nilai tertentu.

Dengan demikian, ada variabel yang secara langsung menunjuk ke suatu nilai tertentu, dan variabel yang secara tidak langsung menunjuk ke nilai.
Adapun bentuk umum dari pernyataan variabel pointer dalam C++ adalah :

Type *variabel-name

Dengan :
Type adalah tipe dasar pointer
Variabel name adalah nama variabel pointer
* adalah variabel pada alamatnya yang ditentukan oleh operand.

Contoh :
          Int *int_pointer;          // pointer to integer
          Float *float_pointer;    // pointer to float

Contoh :

//Program : pointer.cpp                  
#include <iostream>
using namespace std;

int main()
{
            int a, *b;
            a=20;
            b=&a;
                        cout<<"Pointer b menunjukkan alamat =%p\n",b";
                        cout<<"Alamat tersebut berisi nilai :%d\n",*b";
 }

//Program : pointer1.cpp
#include <iostream >
Using namespace std;

// cetak p dan *p
int main()
{
int v = 7, *p;
p = &v;
cout << " Nilai v = " << v << " dan *p = " << *p
<< "\nAlamatnya = " << p << '\n';
}

Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
          Nilai v = 7 dan *p = 7
          Alamatnya = efffb24




//Program:pointer2.cpp
#include <iostream>
using namespace std;
int main ()
{
int value1 = 5, value2 = 15;
int * mypointer;

mypointer = &value1;
*mypointer = 10;
mypointer = &value2;
*mypointer = 20;
cout << "value1==" << value1 << "/ value2==" << value2;
return 0;
}

Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
          “value1==” 10 << “/ value2==20


Matriks Ordo 3x3

#include <iostream>
#include <conio.h>
#include <iomanip>
//Tugas Praktek Coding matrix ordo 3x3
//Steven Prodi : Elektro
//NRP : 213.13.001
using namespace std;
int main()
{
    int A[3][3],B[3][3],C[3][3],i,j,k;
    //clrscr();
   //masukkan matrix A
    cout<<"Silahkan input matrik A : \n";
    cout<<"------------------------- \n";
   for(i=0;i<3;i++)
   {
        for(j=0;j<3;j++)
        {
        cout<<"A["<<j<<"]["<<k<<"] = ";
        cin>>A[i][j];
        }
   }
   //cetak matrix A
   cout<<"\nMatrik A : \n";
   for(i=0;i<3;i++)
   {
        for(j=0;j<3;j++)
        {
        cout<<setw(4)<<A[i][j];
        }
        cout<<endl;
   }
   cout<<endl;
   //masukkan matriks B
   cout<<"Silahkan input matrik B : \n";
   cout<<"------------------------- \n";
   for(i=0;i<3;i++)
   {
    for(j=0;j<3;j++)
        {
        cout<<"B["<<j<<"]["<<k<<"] = ";
      cin>>B[i][j];
        }
   }
   //cetak matrix B
   cout<<"\nMatrik B : \n";
   for(i=0;i<3;i++)
   {
        for(j=0;j<3;j++)
     {
        cout<<setw(4)<<B[i][j];
        }
        cout<<endl;
   }
    //Operasi Perkalian
  for (i=0;i<3;i++)
  {
    for (j=0;j<3;j++)
    {
    C[i][j]=0;
        for (k=0;k< 3;k++)
      {
        C[i][j]+= A[i][k]*B[k][j];
      }
    }
  }
  //Menampilkan hasil
    cout<<endl;
    cout<<"Hasil Perkalian Matriks : \n";
    cout<<"------------------------- \n";
  for(i=0;i<3;i++)
  {
    for(j=0;j<3;j++)
    {
        cout<<setw(4)<<C[i][j];
    }
    cout<<endl;
  }
    cout<<endl;
    cout<<"Diatas adalah hasil perkalian matriks A dan B"<<endl;
    getch();
    return 0;
}

Hasil nya :

Tuesday, December 3, 2013

Array 2


<pre>#include <iostream>
using namespace std;

int main(){
int nilai[1],NRP[1];
//nilai[0]=100;
//nilai[1]=95;
//nilai[2]=90;
//int a;
int b;

//cout<<"Masukkan jumlah mahasiswa:";
//cin>>a;
cout<<"masukkan nama =";
cin>>b;
for(int i=0;i<1;i++){
cout<<"Masukkan nilai NRP "<<"";
cout<<"2131300"<<i+1<<":";
cin>>nilai[i];

}

cout<<endl;
cout<<endl;
cout<<"Menampilkan seluruh isi " <<endl;
for(int i=0; i<1; i++){
cout<<i+1. <<"\t|NRP "<<i+1<<"\t|Nama "<<b<<"\t|nilai:"<<nilai[i];
//cout<<i+1. <<"nilai nilai[i]<<endl;

}
}
Hasilnya :
</pre>

Heap Sort elemen array

<pre>
#include <iostream>
using namespace std;
int main(){

int data[100];

int temp,i,j,n;

cout<< "Berapa data yang ingin anda urutkan!!!";

cin>>n;

cout<<endl;

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

{

cout<<"Bilangan ke- "<<i+1 <<":"<<"" ;

cin>>data[i];

}

cout<<endl<<" BEFORE SORT: ";

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

cout<<data[i]<<" ";

cout<<endl<<endl;

cout<<" AFTER SORT: ";

for(int i=1;i<n;i++)

{

temp = data[i];

j = i -1;

while(data[j]>temp && j>=0)

{

data[j+1] = data[j];

j++;

}

data[j+1] = temp;

}

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

{

cout<<data[i]<<"";

}

cout<<endl<<endl;

system(" PAUSE");

return 0;
}

Hasilnya:
</pre>

Coding Elemen Array : Insertion sort

<pre>
#include <iostream>
#include <conio.h>
using namespace std;
int data[10],data2[10];
int n;
void tukar(int a, int b)
{
    int t;
    t = data[b];
    data[b] = data[a];
    data[a] = t;
}
void insertion_sort()
{
    int temp,i,j;
    for(i=1;i<=n;i++)
    {
        temp = data[i];
        j = i -1;
        while(data[j]>temp && j>=0)
            {
                data[j+1] = data[j];
                j--;
            }
        data[j+1] = temp;
    }
}
int main()
{
int i;
    cout<<"  PROGRAM INSERTION SORT"<<endl;
    cout<<"Masukkan Jumlah Data : ";    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cout<<"Masukkan data ke "<<i<<"   : ";    cin>>data[i];
        data2[i]=data[i];
    }
    insertion_sort();
    cout<<"Data Setelah di Sort : ";
    for(i=1; i<=n; i++)
    {
        cout<<" "<<data[i];
    }
}

Hasilnya :

</pre>

Mengurutkan elemen Array metode Minimum-Maximum

<pre>
/*
Modul 8_1
Nama : Steven
NRP  : 213.13.001
*/

#include <iostream>
#include <cstring>

using namespace std;//deklarasi library standar C++

int main()
{
       int A[7];
 //array A dengan dengan typr data integer
       int j, k, C, temp;
//variable j,k,c,temp bertype data integer
       cout << "Masukkan nilai pada elemen array : " << endl;

       for (C = 0; C < 7; C++)//pengulangan untuk nilai index
       {
              cout << " A [" << C << "] = ";
//nilai C diperoleh dari pengulangan
              cin >> A [C];
//nilai element array diambil dari inputan pengguna
       }

       cout << "\nNilai Elemen array sebelum diurutkan : " << endl;

       for (C = 0; C < 7; C++)
       {
              cout << " A [" << C << "] = " << A [C] << endl;
//menampilkan nilai array sesuai inputan pengguna
       }

       // Pengurutan metoda maksimum-minimum
       int jmaks, U = 6;
//variable jmaks dan U dimana nilai variable U adalah 6
       for (j = 0; j < 6; j++)
       {
              jmaks = 0;
//nilai dari variable jmaks diisi dengan 0

              for (k = 1; k <= U; k++)
//nilai K akan lebih kecil atau sama dengan 6
                     {
                           if (A[k] > A[jmaks])
                     {
                                  jmaks = k;
                                         }
                     }

                     temp = A[U];
                     A[U] = A[jmaks];
                     A[jmaks] = temp;
                     U--;
//dari kode diatas akan diperoleh penyusunan dari nilai maksimum ke minimum
       }
       cout << "\nNilai Elemen setelah diurutkan : " << endl;

       for (C = 0; C < 7; C++)
       {
              cout << " A [" << C << "] = " << A[C] << endl;
//untuk menampilkan nilai element setelah pengurutan
       }
       system ("pause");//mempause output
return 0;//untuk mengclose tampilan output
}

Hasilnya :

</pre>