Thursday, November 10, 2016

laporan praktikum 6

PRAKTIKUM VI

A R R A Y

A. Tujuan Instruksional Khusus
1.      Mengerti konsep data array dalam bahasa C.
2.      Mengerti cara melakukan pemrograman sederhana dengan menggunakan array.
3.      Menjelaskan tentang array berdimensi satu
4.      Menjelaskan tentang array berdimensi dua
5.      Menjelaskan tentang array berdimensi banyak
6.      Menjelaskan tentang inisialisasi array tak berukuran.
7.      Menjelaskan array sebagai parameter fungsi

B. Dasar teori
            Dalam beberapa literatur, array sering disebut (diterjemahkan) sebagai larik.  Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama.  Nilai-nilai data di suatu array disebut dengan elemen-elemen array.  Letak urutan dari elemen-elemen array ditunjukkan oleh suatu subscript atau indeks. 
            Array bisa berupa array berdimensi satu, dua, tiga atau lebih.  Array berdimensi satu (one-dimensional array) mewakili bentuk suatu vektor.  Array berdimensi dua (two-dimensional array) mewakili bentuk dari suatu matriks atau tabel.  Array berdimensi tiga (three-dimensional array) mewakili bentuk suatu ruang.

 1 Array Berdimensi Satu

1.1 Mendeklarasikan Array

Suatu array berdimensi satu dideklarasikan dalam bentuk umum berupa :

                                                                    
dengan :
§  tipe_data   : untuk menyatakan tipe dari elemen array, misalnya int, char, float.
§  nama_var   : nama variabel array
§  ukuran       : untuk menyatakan jumlah maksimal elemen array.
Contoh pendeklarasian array :

                                              float nilai_tes[5];

menyatakan bahwa array nilai_tes mengandung 10 elemen bertipe float.

1.2 Mengakses Elemen Array

Pada C, data array akan disimpan dalam memori yang berurutan.  Elemen pertama mempunyai indeks  bernilai 0.  Jika variabel nilai_tes dideklarasikan sebagai array dengan 5 elemen, maka elemen pertama memiliki indeks sama dengan 0, dan elemen terakhir memiliki indeks 4.  Gambar 6.1 di bawah ini menjelaskan urutan komponen dalam array.










Gambar 1 Array berdimensi satu

Bentuk umum pengaksesan array adalah sbb :


sehingga, untuk array nilai_tes, maka :
              nilai_tes[0]           à  elemen pertama dari nilai_tes
              nilai_tes[4]              à  elemen ke-5 dari nilai_tes
Contoh :

nilai_tes[0] = 70; /* contoh 1 */
scanf(“%f”, &nilai_tes[2]);          /* contoh 2 */

Contoh pertama merupakan pemberian nilai 70 ke nilai_tes[0].  Sedangkan contoh 2 merupakan perintah untuk membaca data bilangan dari keyboard dan diberikan ke nilai_tes[2]
Pada contoh 2 ini

                                                     &nilai_tes[2]

berarti “alamat dari nilai_tes[2]”.  Perlu diingat bahwa scanf() memerlukan argumen berupa alamat dari variabel yang digunakan untuk menyimpan nilai masukan.

1.3 Inisialisasi Array Berdimensi Satu

            Sebuah array dapat diinisialisasi sekaligus pada saat dideklarasikan.  Untuk mendeklarasikan array, nilai-nilai yang diinisialisasikan dituliskan di antara kurung kurawal ({}) yang dipisahkan dengan koma.
Perhatikan, pada contoh inisial.c di atas, pendeklarasian nama variabel array tidak disertai ukuran yang mengindikasikan besarnya array.  Dalam kondisi seperti ini, C akan menginisialisasi ukuran array tersebut sejumlah elemen yang diberikan di dalam kurung kurawal pada saat proses inisialisasi.  Sehingga array values terdiri atas 9 elemen dan array word memiliki 5 elemen.
1.4 Beberapa Variasi dalam Mendeklarasikan Array
            Ada beberapa variasi cara mendeklarasikan sebuah array (dalam hal ini yang berdimensi satu), di antaranya adalah sebagai berikut :
§  int  numbers[10];
§  int numbers[10] = { 34, 27, 16 };
§  int numbers[] = { 2, -3, 45, 79, -14, 5, 9, 28, -1, 0 };
§  char text[] = "Welcome to New Zealand.";
§  float radix[12] = { 134.362, 1913.248 };
§  double radians[1000];

2 Array Berdimensi Dua
Data seperti yang disajikan pada Tabel 6-1, dapat disimpan pada sebuah array berdimensi dua. Dimensi pertama dari array digunakan untuk menyatakan kode program kursus dan dimensi kedua untuk menyatakan tahun kursus.

Tabel 1. Data Kelulusan Siswa Pada Sebuah Kursus Komputer
                   Tahun       1998             1999               2000
  Program

1. (INTRO)                     80               540                1032
2. (BASIC)                     15                 83                  301
3. (PASCAL)                   8                 12                    15
4. (C)                              10               129                  257

2.1 Mendeklarasikan Array Berdimensi Dua
Pendeklarasian yang diperlukan untuk menyimpan data kelulusan siswa pada Tabel 1  adalah:

     int data_lulus[4][3];

Nilai 3 untuk menyatakan banyaknya tahun dan 4 menyatakan banyaknya program kursus. Gambar 2 memberikan ilustrasi untuk memudahkan pemahaman tentang array berdimensi dua.

           
80
540
1032
15
83
301
8
12
15
10
129
257

int data_lulus[4][3];

Gambar.2 Array berdimensi dua

            Sama halnya pada array berdimensi satu, data array aka ditempatkan pada memori yang berurutan. Perhatikan Gambar 3.
           


80
540
1032
15
83
301

80

Gambar .3 Model penyimpanan array dimensi dua pada  memori

 

2.2 Mengakses Elemen Array


Array seperti data_lulus dapat diakses dalam bentuk
            data_lulus[indeks pertama, indeks kedua]
Contoh :
(1) data_lulus[0][1] = 540;
merupakan instruksi untuk memberikan nilai 540 ke array data_lulus untuk indeks pertama = 0 dan indeks kedua bernilai 1.

(2) printf(“%d”,data_lulus[2][0]);
merupakan perintah untuk menampilkan elemen yang memiliki indeks pertama = 2 dan indeks kedua = 0.








540












data_lulus[0][1] = 540;

Gambar 4. Pemberian nilai ke array berdimensi dua

2.3 Inisialisasi Array Berdimensi Dua

            Gambar berikut memberikan penjelasan tentang inisialisasi yang dilakukan terhadap array berdimensi dua :




0
1
1
1
1
1
0
0
0
1
0
0
0
1
0
0
0
1
0
0
0
1
0
0
1
1
1
1
1
1
1
0
1
1
0
0
0
0
1
0
1
1
0
0
0
0
1
0
1
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0

Gambar 5 Representasi inisialisasi array berdimensi dua


3. Array Berdimensi Banyak.
            C memungkinkan untuk membuat array yang dimensinya lebih dari dua. Bentuk umum pendeklarasian array berdimensi banyak :
            tipe nama_var[ukuran 1][ukuran2}…[ukuranN];
sebagai contoh :
     int data_huruf[2][8][8];

merupakan pendeklarasian array data_huruf sebagai array berdimensi tiga. Sama halnya dengan array berdimensi satu atau dua, array berdimensi banyak juga bisa diinisialisasi.

 

4. Inisialisasi Array Tak Berukuran

            Inisialisasi array yang tak berukuran dapat dilakukan untuk array berdimensi satu atau lebih. Untuk array berrdimensi lebih dari satu, dimensi terkirilah yang boleh tak berukuran. Dengan cara ini tabel dalam array dapat diperluas atau dikurangi tanpa mengubah ukuran array.

5. Array Sebagai Parameter
            Array juga dapat dilewatkan sebagai parameter fungsi. Sebagai contoh ditujukan pada program sorting.c.  Program digunakan untuk memasukkan sejumlah data, kemudian data tersebut diurutkan  naik (ascending) dan dicetak ke layar.
            Untuk melakukan sorting (proses pengurutan data), cara yang dipakai yaitu metode buble sort (suatu metode pengurutan yang paling sederhana, dan memiliki kecepatan pengurutan yang sangat lambat). Algoritma pada metode pengurutan ini adalah sebagai berikut :
1.      Atur i bernilai 0
2.      Bandingkan x[i] dengan x[j], dengan j berjalan dari i + 1 sampai dengan n-1.
3.      Pada setiap pembandingan, jika x[i] > x[j], maka isi x[i] dan x[j] ditukarkan
4.      Bila i   <  (n – 1), ulangi mulai langkah 2.

Catatan:    i       =    indeks array
                  x      =    nama array untuk menyimpan data
                  n      =    jumlah data

§  float data[MAKS];
merupakan instruksi untuk mendeklarasikan array data dengan elemen bertipe float dan jumlahnya sebanyak MAKS elemen.

§  pemasukan_data(data, &jum_data);
merupakan instruksi untuk memanggil fungsi pemasukan_data ( ). Pada pemanggilan fungsi, data merupakan array. Yang perlu diperhatikan, parameter array ditulis tanpa diawali dengan &, sekalipun tujuan dari pemanggilan fungsi yaitu untuk mengisikan data ke array. Sebab nama array tanpa kurung siku dalam parameter fungsi berarti ”alamat dari array”.
Sedangkan &jum_data berarti ”alamat dari jum_data”.  Tanda & harus disertakan sebab variabel   jum_data akan diisi oleh fungsi pemasukan_data ().
§  pengurutan_data(data, jum_data);
Merupakan instruksi untuk menjalankan fungsi pengurutan _data (), dalam hal ini data dilewatkan ke fungsi dengan referensi (memberikan alamat array), karena memang hal ini merupakan cara satu-satunya untuk melewatkan array. Sedangkan jumlah data dilewatkan ke fungsi dalam bentuk nilai (pemanggilan dengan nilai).
§  penampilan_data(data,jum_data);
Merupakan instruksi untuk memanggil fungsi penampilan_data().

Pada fungsi untuk pemasukan data, pengurutan data maupun penampilan data,

data[i] menyatakan elemen data ke-i.



Beberapa hal tambahan yang perlu diketahui:
§  Untuk menyatakan alamat dari suatu elemen array, bentuk umumnya adalah

            &nama_array[indeks]

Misalnya,

     &data[1]
menyatakan alamt dari elemen ke-1. Adapun

            &data[0]

sama saja dengan:   

     data

§  Suatu array berdimensi satu dalam parameter formal dideklarasikan dengan bentuk

                   tipe nama_array[] 

dengan di dalam tanda kurung siku tak disebutkan mengenai jumlah elemen. Jumlah elemen dinyatakan dalam parameter tersendiri (atau dinyatakan dalam bentuk variabel eksternal). Untuk array berdimensi lebih dari satu, kurung siku terkirilah yang kosong.
C.  Daftar Alat dan Bahan.
1.CPU
2.Monitor
3.Keyboard
4.Mouse
5.Printer
6.Job Sheet Praktikum
D. Langkah Kerja.
1.      Hidupkan Komputer sampai menyala dan mengeluarkan layar Windows.
2.      Pilih Start pada ujung kiri bawah monitor.
3.      Pilih Program.
4.      Pilih Program Turbo C atau TC for windows.
5.      Jika Layar Turbo C sudah keluar, Pilih File.
6.      Pilih News untuk membuka Program baru, atau open untuk membuka file program yang sudah dibuat sebelumnya.
7.      Ketik Program sesuai dengan di data program.
8.      Setelah selesai pengetikan, pilih file dan save as program tersebut dengan nama file sesuai keinginan praktikan.
9.      compile program tersebut untuk melihat kebenaran pengetikan program dan untuk mengubah file dengan extension .cpp menjadi file .hex, .bin dan. .obj.
10.  Setelah sukses dicompile maka pilih run untuk menjalankan program tersebut.
11.  Lihat hasilnya dimonitor dan catat, kemudian analisa hasil percobaan tersebut.
12.  Lakukan praktikum untuk file program berikutnya dengan cara yang sama.

E. Data Program

1. Mengisi dan menampilkan beberapa variabel array
/* File program : isi.c */
#include <stdio.h>

void main()
{
  int nilai[10];
  int indeks;

  /* menginisialisasi array supaya berisi 0 */
  for(indeks=0; indeks<10; indeks++)
      nilai[indeks] = 0;
 
  nilai[0] = 197;
  nilai[2] = -100;
  nilai[5] = 350;
  nilai[3] = nilai[0] + nilai[5];
  nilai[9] = nilai[5] / 10;
  --nilai[2];

  for(indeks = 0; indeks < 10; indeks++)
      printf("nilai[%d] = %d\n", indeks, nilai[indeks]);
}



2. Mencetak 15 angka pertama dalam deret Fibonacci.

/* fibonacci1.c */
#include <stdio.h>
void main()
{
    int fibo[15], i;
   
    fibo[0] = 0;
    fibo[1] = 1;

    for(i = 2; i < 15; i++)
    {
        fibo[i] = fibo [i-1] + fibo[i-2];
        printf("%5d", fibo[i]);
    }
    printf("\n\n");
}

3.  Menginisialisasi elemen array bertipe integer
/* File program : inisial1.c */
#include <stdio.h>

main()
{
    int i;
    static int nilai[10] = {0, 1, 4, 9, 16};
    /* dgn sendirinya nilai lainnya diset nol */
   
    for(i=5; i<10; i++)
        nilai[i] = i * i;

    for(i=0; i<10; i++)
        printf("nilai[%d] = %d\n", i, nilai[i]);
}

4.  Menginisialisasi elemen array bertipe karakter.
/* File program : inisial2.c */
#include <stdio.h>

main()
{
   int i;
static char word[] = {'H', 'e', 'l', 'l', 'o', '!'};

for(i=0; i<6; i++)
        printf("%c", word[i]);

   printf("\n");
}

5. Menentukan nilai maksimum dari sederetan nilai yang sudah diinisialisasi dan disimpan dalam array; mengirim array sebagai parameter sebuah fungsi.
/* File program : maksimum.c */
#include <stdio.h>
int findmax(int [], int); /* prototype fungsi dlm ANSI */
void main()
{
  static int data1[] = { 5, 34, 56, -12, 3, 19 };
  static int data2[] = { 1, -2, 34, 207, 93, -12 };
 
  printf("nilai maksimum dari data1[] adalah %d\n",
      findmax(data1, 6));
  printf("nilai maksimum dari data2[] adalah %d\n",
      findmax(data2, 6));
}

int findmax(int nilai[], int jml_data)
{
  int  terbesar, i;
 
  terbesar = nilai[0];
 
  for(i = 1; i < jml_data; ++i )
      if(nilai[i] > terbesar)
         terbesar = nilai[i];
     
  return terbesar;
}
6. Menentukan nilai minimum dari sederetan nilai masukan yang disimpan dalam array; mengirim array sebagai parameter sebuah fungsi.

/* File program : minimum.c */
#include <stdio.h>
int minimum(int []);  /* prototype fungsi dlm ANSI */
void main()
{
  int nilai[10], i, kecil;

  printf("Masukkan 10 bil integer dipisahkan dgn spasi :
      \n");
  for (i=0; i<10; i++)
      scanf("%d", &nilai[i]);

  kecil = minimum(nilai);
  printf("\nBilangan terkecil adalah %d\n", kecil);
}

int minimum(int nilai[10])
{
  int min, j;

  min = nilai[0];
  for (j=1; j < 10; j++)
      if (nilai[j] < min)
         min = nilai[j];
 
  return(min);
}

7. Menjumlahkan dua buah array yang ; mengirim array sebagai parameter sebuah fungsi.
/* File program : jml2array.c */
#include <stdio.h>

int jml2array(int [][5], int);  /* prototype fungsi */

main()
{
  int jml;
  int bil[][5] = {
      {1, 2, 35, 7, 10},
      {6, 7, 4, 1, 0}
  };
 
  jml = jml2array(bil, 2);
  printf("Hasil penjumlahan 2 array tsb adalah = %d\n",
      jml);
}

int jml2array(int data[][5], int jmlbrs)
{
  int total = 0, kolom, baris;
 
  for(baris = 0; baris < jmlbrs; baris++ )
      for(kolom = 0; kolom < 5; kolom++ )
          total += data[baris][kolom];
 
  return total;
}
F.  SOAL
1. Buat program untuk menghitung nilai rata-rata sbb :
Input      :  jumlah data (n), data ke-1 s/d data ke-n
Output   :  nilai maks, nilai min, nilai rata-rata

2. Ubahlah program di atas sehingga mendapatkan tampilan seperti di bawah ini:
No.    Nilai                Total                Rata-rata
1.       85                    85                    85.00
2.      95                   180                   90.00
3.      60                   240                   80.00
4.      80                   320                   80.00
5.      50                   370                   74.00
6.      100                  470                   78.33
Nilai maks      = 100
Nilai min        = 50
Nilai rata-rata = 78.33
Nilai terbaik adalah nilai ke = 6

3. Buat program untuk menampilkan deret Fibonacci sbb :
Input       : jumlah deret
Output    : deret[i]  = deret[i-1] + deret[i-2]

Contoh : jumlah deret = 10

0          1          1          2          3          5          8          13           21           34


4. Buat program untuk mengurutkan data masukan dengan urutan naik (ascending)
Input : jumlah data (n), data ke-1 s/d data ke-n
Output : Tampilan data dalam keadaan terurut
Contoh :
Jumlah data = 3
Data ke-1 = 50
Data ke-2 = 43
Data ke-3 = 45

Data terurut naik:
Data ke-1 = 43
Data ke-2 = 45
Data ke-3 = 50


5.    Data nilai mahasiswa :
     

No.    Nama Mhs                  PROG-1      MAT-1             BIG1

1.       Ahmad                            81               90                    62
2.       Adang                             50               83                    87
3.       Dani                                89               55                    65
4.       Edi                                  77               70                    92
Dapatkan output dengan tampilan sbb :
No. Mhs          Rata-rata
            --------------------------
   1                   77.67
   2                   73.33

               3                   69.67

   4                   79.67
            ---------------------------

Petunjuk :
Asumsikan Ahmad mengikuti kelas Prog1, Mat1, dan BIG1.

Nilai pada masing-masing kelas dijumlahkan dan dihitung rata-ratanya (gunakan array 2 dimensi).

No comments:

Post a Comment