Kamis, 04 Juni 2015

Larik(Array)

Pengertian Larik (Array)

Larik (array) menyatakan kumpulan data. pada beberapa bahasa pemrograman, data yang terkandung dalam suatu larik harus bertipe sama. Namun dalam bahasa pemrograman tertentu, kumpulan data semacam itu bisa melibatkan tipe yang berbeda beda. Karena kita akan membahas bahasa C++, bahasa ini hanya mendukung larik dengan bertipe data yang sama, maka jenis larik seperti itulah yang akan ini bahas.

Di dalam algoritma, larik dinyatakan dengan awalan huruf kapital dan notasi [ ] dipakai untuk menyatakan data dalam larik. Contoh : 

A<- [1,2,3,1]

menyatakan larik A yang berisi data 1, 2, 3, dan 1. 
Untuk menyatakan sebuah elemen dalam larik, anda bisa menggunakan notasi berikut:

A[indeks]

Dalam hal ini indeks digunakan untuk menyatakan posisi elemen. Posisi pertama diberi kode 0, posisi kedua diberi kode 1, dan seterusnya.
Contoh berikut untuk menunjukan cara menampilkan elemen pada larik A dengan indeks sama dengan 2:

tampilkan(A[2])
adapun 
A[2] <- 0

menyatakan pengisian nilai 0 ke elemen berindeks 2 pada larik A.

Larik pada C++

pada bahasa C++, larik dideklarasikan dengan bentuk sebagai berikut:
tipe_data nama_larik[jumlah_elemen]

Dalam hal ini jumlah_elemen harus berupa konstanta. Beberapa contoh dapat dilihat pada tabel berikut:

Deklerasi
Keterangan
int cacah[4];
Larik cacah mempunyai 4 buah elemen bertipe int (bilangan bulat)
char vocal[5];
Larik vocal mempunyai 5 buah elemen bertipe char(karakter)
char kota[6][20];
Larik kota mempunyai 6 buah elemen bertipe string dengan panjang maksimal sebesar 19 karakter

Pengaksesan elemen larik dilakukan dengan menggunakan notasi

nama_array[indeks]

Dalam hal ini indeks dimulai dari nol.
Contoh:

cacah[0] = 1;

merupakan pernyataan untuk mengisikan nilai 1 ke elemen pertama pada larik cacah.
Pada  C++, suatu larik bisa langsung diisikan dengan suatu nilai ketika larik tersebut dideklarasikan. Contoh:

int jum_hari[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

pada contoh tersebut,
jum_hari[0] bernilai 31
jum_hari[1] bernilai 28
jum_hari[2] bernilai 31
jum_hari[3] bernilai 30
dan seterusnya

Perlu diketahui, larik yang telah kita bahas di depan adalah larik berdimensi satu.

Note: Pada C++ terdapat larik dengan dimensi lebih dari satu. Larik seperti itu akan kita bahas nanti

Contoh Berbagai Operasi dengan Larik

Berbagai persoalan yang terkait dengan larik akan kita bahas.

Contoh :

1. Buatlah algoritma dan program yang mula mula menyimpan data huruf vocal ke dalam larik dan kemudian tampilkan:
Algoritma:
1. V<-["A","E","I","O","U"]
2. UNTUK i <- 0 S/D 4
tampilkan(V[i])
AKHIR-UNTUK
Program:
Implementasi dalam C++

#include <iostream.h>
#include <conio.h>

int main ()
{
   char kar[5];
   int i;

   kar[0] = 'A';
   kar[1] = 'E';
   kar[2] = 'I';
   kar[3] = 'O';
   kar[4] = 'U';

  for (i=0;i<5;i++)
      cout << kar[i] << "\n";

  getch ();
  return 0;
}

Hasil eksekusi program dapat dilihat pada gambar berikut














Alternatif yang lain adalah dengan memanfaatkan pengisian elemen larik sewaktu larik didekarasikan. Implementasinya pada C++ adalah sebagai berikut:

#include <iostream.h>
#include <conio.h>

int main ()
{
   char kar[] = {'A','E','I','O','U'};
   for (int i=0;i<5;i++)
       cout <<kar[i] << "\n";

   getch ();
   return 0;
}

Pada contoh di atas, jumlah elemen larik kar tidak perlu disebutkan. Hasil eksekusinya sama dengan program yang pertama.
2. Buatlah algoritma dan program untuk menyimpan data berikut ke dalam larik:
10 4 2 5 3 8 9 2 9 5
kemudian carilah bilangan terbesar
Algorima :
1. data <- [10, 4, 2, 5, 3, 8, 9, 2, 9, 5]
2. terbesar <- data[0]
3. UNTUK i <- 1S/D 9
JIKA data[i] > terbesar MAKA
terbesar <- data[i]
AKHIR-JIKA
AKHIR-UNTUK
4. tampilkan(terbesar)
Mula-mula variabel terbesar diisi dengan elemen pertama larik data. Selanjutnya semua elemen kedua hingga yang terakhir dibandingkan dengan isi variabel terbesar. Kalau nilai elemen tersebut lebih besar daripada variabel terbesar maka isinya diberikan ke variabel terbesar.
 Program:
#include <iostream.h>
#include <conio.h>

int main ()
{
   int data[] = {10, 4, 2, 5, 3, 8, 9, 2, 9, 5};
   int i;
   int terbesar;

   terbesar = data[0];
   for (i=1;i<10;i++)
     if (data[i]>terbesar)
        terbesar=data[i];

   cout<<"terbesar = "<<terbesar<<"\n";
 
   getch ();
   return 0;
}
Hasil eksekusi program:














3. Buatlah algoritma dan program untuk membaca data secara berulang dari keyboard dan meletakannya kedalam suatu larik. Jumlah maksimal yang dapat dimasukan ke dalam larik adalah 10 buah. Setelah itu tampilkan seluruh data yang dimasukan dari keyboard tadi.
Algoritma:
1. jumdata <- 0
2. UNTUK i <- 0 S/D 9
          masukan (data[i])
          tampilkan ("masukan lagi (Y/T)?")
          masukan (jawaban)
          JIKA jawaban = "T" atau "t" MAKA
                jumdata <- i+1
                keluar dari pengulangan
          AKHIR-JIKA
    AKHIR-UNTUK
3. UNTUK i <- 0 S/D jumdata-1
          tampilkan(data[i])
    AKHIR-UNTUK

Langkah kedua di atas digunakan untuk menangani pemasukan data, sedangkan langkah ketiga dipakai untuk menangani penampilan data dalam larik.

Program:

#include <iostream.h>
#include <conio.h>

int main ()
{
   double data[10];
   int i, jumdata;
   char jawaban;

   jumdata = 0;
   for (i = 0; i < 10; i++)
   {
       cout<<"masukan sembarang bilangan: ";
       cin>>data[i];
     
       cout<<"masukan lagi(Y/T)?";
       cin>>jawaban;
    
       if (jawaban == 'T'  || jawaban == 't')
       {
            jumdata=i+1;
            break;
       }
    }

    for (i=0;i<jumdata;i++)
        cout<<data[i] << "\n";
 
    getch ();
    return 0;
}
Hasil eksekusi program:














Larik Berdimensi Dua

Pada larik berdimensi dua setiap elemen diakses melalui dua buah indeks, yaitu indeks baris dan indeks kolom.
Untuk mengakses sebuah elemen pada larik tersebut diperlukan notasi sebagai berikut:

tipe_data nama_larik[indeks_baris][indeks_kolom]

Hal ini berlaku pada algoritma maupun program C++. Dalam hal ini masing masing indeks dimulai dari nol.

contoh:
1. Buatlah algoritma dan program yang menyimpan pasangan data negara dan ibukota seprti berikut:
Indonesia      Jakarta
Pilipina         Manila
Austria          Wina
India             New Delhi
Iran               Taheran
Kemudian tampilkan nama negara dan ibukotanya, khusus untuk negara yang berawalan dengan huruf I. 

Algoritma:

1.   Negara[0][0] <- "Indonesia"
2.   Negara[0][1] <- "Jakarta"
3.   Negara[1][0] <- "Pilipina"
4.   Negara[1][1] <- "Manila"
5.   Negara[2][0] <- "Austria"
6.   Negara[2][1] <- "Wina"
7.   Negara[3][0] <- "India"
8.   Negara[3][1] <- "New Delhi"
9.   Negara[4][0] <- "Iran"
10. Negara[4][1] <- "Taheran"
11. UNTUK baris <- 0 S/D 4

              JIKA Negara[baris][0][0]="I" MAKA
                    tampilkan(Negara[baris][0], Negara[baris][1])
              AKHIR-JIKA
     AKHIR-UNTUK

Program:

#include <iostream.h>
#include <string.h>
#include <conio.h>

int main ()
{
   char negara[5][2][15];
   int baris;

   strcpy (negara[0][0], "Indonesia");
   strcpy (negara[0][1], "Jakarta");
   strcpy (negara[1][0], "Pilipina");
   strcpy (negara[1][1], "Manila");
   strcpy (negara[2][0], "Austria");
   strcpy (negara[2][1], "Wina");
   strcpy (negara[3][0], "India");
   strcpy (negara[3][1], "New Delhi");
   strcpy (negara[4][0], "Iran");
   strcpy (negara[4][1], "Taheran");

   for  (baris = 0; baris < 5; baris++)
       if (negara[baris][0][0] == 'I')
              cout<<negara[baris][0]<<" -"
                     <<negara[baris][1]<<"\n";

  getch ();
  return 0;


Hasil eksekusi program:















2. tulislah algiritma untuk memasukan data ke dalam matriks. Semua data dimasukan dari keyboard. Mula mula jumlah baris dan kolom dimasukan dari keyboard, dan kemudian semua elemen dimasukan dari keyboard. Setelah itu tampilkan semua elemen matriks dalam bentuk susunan matriks.
Selanjutnya translasikan ke dalam program C++.

Algoritma:

1. masukan(jum_baris)
2. masukan(jum_kolom)
3. UNTUK i <- 0 S/D jum_baris-1
           UNTUK j <- 0 S/D jum_kolom-1
                  masukan(A[i][j])
           AKHIR-UNTUK
    AKHIR-UNTUK
4. UNTUK i <- 0 S/D jum_baris - 1
           UNTUK j <- 0 S/D jum_kolom-1
                   tampilkan(A[i][j]) // tanpa pindah baris
            AKHIR-UNTUK
           tampilkan(karakter_pindah_baris)
    AKHIR-UNTUK

Program:

#include <iostream.h>
#include <iomanip.h>
#include <conio.h>

int main ()
{  
   int jum_baris, jum_kolom;
   int i, j; 

   int data[10][10];

   cout << "jumlah baris (1..10): ";
   cin>>jum_baris;
   
   cout <<"jumlah kolom (1..10): ";
   cin>>jum_kolom;

  //pemasukan elemen matriks

    for (i=0;i<=jum_baris-1;i++)
        for(j=0;j<=jum_kolom-1;j++)
        {
            cout<<"nilai baris "<<i+1
                   <<", kolom " <<j+1<<": ";
            cin>> data [i][j];
        }

  //menampilkan matriks

   cout <<"data matriks: \n";
   for (i=0;i<=jum_baris-1;i++)
   {
       for(j=0;j<=jum_kolom-1;j++)
            cout<<setw(8) <<data[i][j];

       cout<< "\n"; // pindah baris
    }

  getch ();
  return 0;
}

Hasil eksekusi program:



   










Tidak ada komentar:

Posting Komentar