Larik (array) - Repository UNIKOM

  Tipe Data

  Lecture 8 Tipe Data Dasar

  • Data berdasarkan jenisnya dapat dibagi menjadi lima kelompok, yang dinamakan sebagai tipe data dasar, yaitu:
    • – Bilangan bulat (integer)
    • – Bilangan pecahan (float/real) presisi-tunggal
    • – Bilangan pecahan (float/real) presisi-ganda
    • – Karakter – Tak bertipe

Daftar tipe data dasar

  

Tipe Jml Bit Rentang Data Keterangan

Char 8 -128 .. 127 Karakter Int

  16 -32768 .. 32767 Bilangan bulat Float 32 3.4e-38 .. 3.4e+38 Bilangan pecahan presisi-tunggal

  Double 64 1.7e-308 .. 1.7e+3.8 Bilangan pecahan presisi-ganda

  /* LOTTYPES.C */ #include <stdio.h> int main() { int a; /* simple integer type */ long int b; /* long integer type */ short int c; /* short integer type */ unsigned int d; /* unsigned integer type */ char e; /* character type */ float f; /* floating point type */ double g; /* double precision floating point */ a = 1023; b = 2222; c = 123; d = 1234; e = 'X'; f = 3.14159; g = 3.1415926535898; printf("a = %d\n", a); /* decimal output */ printf("a = %o\n", a); /* octal output */ printf("a = %x\n", a); /* hexadecimal output */ printf("b = %ld\n", b); /* decimal long output */ printf("c = %d\n", c); /* decimal short output */ printf("d = %u\n", d); /* unsigned output */ printf("e = %c\n", e); /* character output */ printf("f = %f\n", f); /* floating output */ printf("g = %f\n", g); /* double float output */ printf("\n"); printf("a = %d\n", a); /* simple int output */ printf("a = %7d\n", a); /* use a field width of 7 */ printf("a = %-7d\n", a); /* left justify in field of 7 */ c = 5; d = 8; printf("a = %*d\n", c, a); /* use a field width of 5 */ printf("a = %*d\n", d, a); /* use a field width of 8 */ printf("\n"); printf("f = %f\n", f); /* simple float output */ printf("f = %12f\n", f); /* use field width of 12 */ printf("f = %12.3f\n", f); /* use 3 decimal places */ printf("f = %12.5f\n", f); /* use 5 decimal places */ printf("f = %-12.5f\n", f); /* left justify in field */

Result of execution

  a = 1023 a = 1777 a = 3ff b = 2222 c = 123 d = 1234 e = X f = 3.141590 g = 3.141593 a = 1023 a = 1023 a = 1023 a = 1023 a = 1023 f = 3.141590 f = 3.141590 f = 3.142 f = 3.14159

  Struktur Array

  Motivation

  • One of the most powerful programming tools available
  • Help to organize a collection of

  homogeneous data items (same type and

  lenght). The individual data items that make up the array are called as Element of the array

  • Example: Scores[3]  indicated the third exam score

  

Definition

  • • Array disebut juga larik, merupakan runtun data

    dengan setiap elemen data menggunakan nama yang sama dan mesing-masing elemen data bertipe sama.
  • Setiap komponen (elemen) array dapat dibedakan dan diakses melalui nomor indeksnya.
  • Struktur array dapat digolongkan menjadi:
    • – Array berdimensi satu
    • – Array berdimensi dua
    • – Array berdimensi banyak

  

Array Satu Dimensi

  • • Struktur array satu dimensi dapat dideklarasikan dengan

    bentuk umum berupa: Tipe nama_var [ukuran];
  • dengan:
    • – tipe: untuk menyatakan jenis elemen array (misalnya char, int, unsigned).
    • – Ukuran untuk menyatakan jumlah maksimal elemen array.

  • • contoh pendeklarasian suatu array lima elemen dengan

    tipe float adalah sebagai berikut:

  float nilai_tes [5];

Mengakses Elemen Array

  • Pada bahasa C, data array akan disimpan dalam memori pada lokasi yang berurutan.
  • Elemen pertama mempunyai indeks bernilai 0.
  • Jika pada contoh variabel nilai_tes mempunyai 5 elemen, maka elemen pertama mempunyai indeks sama dengan 0, elemen kedua mempunyai indeks 1, dan seterusnya.

  • Bentuk umum pengaksesan suatu elemen variabel array adalah:

  Nama_var [indeks];

  • Untuk variabel array nilai_tes,
    • – Nilai_tes[1]  elemen ke-1 dari nilai_tes
    • – Nilai_tes[3]  elemen ke-3 dari nilai_tes
    Gambar berikut memperlihatkan urutan komponen array dalam memori.

  • Contoh untuk memasukkan data ke variabel array:
    • – nilai_tes[0] = 70; /* contoh 1*/
    • – scanf(“%f”, &nilai_tes[3]); /* contoh 2*/

    >Contoh pertama merupakan pemberian nilai 70 ke elemen variabel nilai_tes ke-0.
  • • Contoh kedua merupakan perintah untuk membaca data

    bilangan dari keyboard dan diberikan ke elemen nilai-tes yang ke-3.
  • Statemen &nilai_tes[3] menunjukkan “alamat dari elemen variabel nilai_tes yang ke-3”.
  • Perlu diingat bahwa instruksi scanf( ) membutuhkan

    argumen berupa alamat dari variabel yang digunakan

    untuk menyimpan nilai masukan.

  /* ------------------------------------------------ */ /* File program : baca.c */ /* Contoh pengaksesan array satu dimensi */ /* ------------------------------------------------ */ #include <stdio.h> #define maks_tes 5 main() { int i; float nilai_tes[maks_tes]; /* deklarasi array */ /* Membaca data dari keyboard */ for (i=0;i<maks_tes;i++) { printf("Nilai tes ke-%d: ",i+1); scanf("%f", &nilai_tes[i]); } /* Menampilkan data yang telah dimasukkan */ for (i=0;i<maks_tes;i++) { printf("Nilai tes ke-%d: %f",i+1,nilai_tes[i]); } }

  

Program Baca.c

  • • Program diatas memperlihatkan cara memasukkan data

    larik dari keyboard sebanyak lima buah data dan

    kemudian menampilkan data tersebut ke layar monitor.

  • Data array juga dapat dideklarasikan dalam bentuk variabel yang bersifat statis, serta dapat dilakukan inisialisasi terhadap masing-masing elemen array.
  • • Contoh proses deklarasi dan inisialisasinya adalah: static

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

  • • Dengan deklarasi di atas, maka o jum_hari[0] bernilai 31

    o jum_hari[1] bernilai 28 o jum_hari[2] bernilai 31 o jum_hari[3] bernilai 30 o dan seterusnya.
  • Nilai yang ada pada array menyatakan banyaknya hari

Array 2-Dimensi

  • Tipe data array dua dimensi biasa digunakan untuk menyimpan, mengolah maupun menampilkan suatu data dalam bentuk tabel maupun matriks.
  • Untuk data dalam bentuk tabel, seperti yang diperlihatkan pada tabel berikut ini, dimensi pertama array digunakan untuk menyatakan

    nama Program Studi dan dimensi kedua untuk

    menyatakan jumlah penerimaan mahasiswa per tahun pada tahun tertentu.

  Tabel Jumlah Mahasiswa yang diterima di Jurusan Teknik Elektro UGM.

  • Untuk mendeklarasikan array agar dapat menyimpan data penerimaan mahasiswa dari tabel di atas adalah sebagai berikut:

  int Jumlah_mhs [4][3];

  • Nilai indeks 3 untuk menyatakan banyaknuya tahun dan 4 menyatakan banyaknya program studi.

  

Array dua dimensi

Gambar berikut memperlihatkan ilustrasi untuk memudahkan pemahaman tentang

array dua dimensi.

  • Seperti halnya pada arrau satu dimensi, data array dua dimensi akan ditempatkan pada memori secara berurutan, seperti yang diperlihatkan pada Gambar 7.3.

  Model penyimpanan array dua dimensi pada memori.

Mengakses Elemen Array 2 Dimensi

  • Untuk mengakses elemen array dua dimensi dapat dilakukan dengan statemen:
    • – nama_variabel[indeks pertama][indeks

      kedua];

  • Sebagai contoh:
    • – Jumlah_mhs[1][2] = 129;
    • – Merupakan instruksi untuk mengakses elemen array pada baris ke-1, kolom ke-2.
    Pengakessan elemen array dua dimensi

  • Dalam program, untuk membaca atau memasukkan data array dua dimensi dari keyboard dapat dilakukan dengan memanfaatkan statemen nested loop.
  • Contoh program berikut memperlihatkan bagaimana memasukkan data sebuah matriks n x n ke memori dan menampilkan hasil pembacaan ke layar monitor.

  /* ------------------------------------------------ */ /* File program : baca2.c */ /* Contoh pengaksesan array dua dimensi */ /* ------------------------------------------------ */ #include <stdio.h> main() { int i,j; int matriks[4][3]; /* deklarasi array */ /* Membaca data dari keyboard */ for (i=0;i<4;i++) { for(j=0;j<3;j++)

  { printf("matriks (%d, %d): ",i,j); scanf("%d", &matriks[i][j]); }

  } printf("\n\n"); /* Menampilkan data matriks yang telah dimasukkan */ for (i=0;i<4;i++) { for(j=0;j<3;j++)

  { printf(" Matriks(%d, %d): %d",i,j,matriks[i][j]); } printf("\n"); }

Array of Integer

  • /* INTARRAY.C */
  • #include <stdio.h>
  • int main()
  • {
  • int values[12];
  • int index;
  • for (index = 0 ; index < 12 ; index++)
  • values[index] = 2 * (index + 4);
  • for (index = 0 ; index < 12 ; index++)
  • printf("The value at index = %2d is %3d\n",
  • index, values[index]);
  • return 0;
  • }

Result of execution

  The value at index = 0 is 8 The value at index = 1 is 10 The value at index = 2 is 12 The value at index = 3 is 14 The value at index = 4 is 16 The value at index = 5 is 18 The value at index = 6 is 20 The value at index = 7 is 22 The value at index = 8 is 24 The value at index = 9 is 26 The value at index = 10 is 28 The value at index = 11 is 30

AN ARRAY OF FLOATING POINT DATA

  /* BIGARRAY.C */ #include <stdio.h> char name1[] = "First Program Title"; int main() { int index; int stuff[12]; float weird[12]; static char name2[] = "Second Program Title"; for (index = 0 ; index < 12 ; index++) { stuff[index] = index + 10; weird[index] = 12.0 * (index + 7); } printf("%s\n", name1); printf("%s\n\n", name2); for (index = 0 ; index < 12 ; index++) printf("%5d %5d %10.3f\n", index, stuff[index], weird[index]); return 0;

Result of execution

  First program title Second program title 0 10 84.000 1 11 96.000 2 12 108.000 3 13 120.000 4 14 132.000 5 15 144.000 6 16 156.000 7 17 168.000 8 18 180.000 9 19 192.000 10 20 204.000 11 21 216.000

MULTI-DIMENSIONAL ARRAYS

  #include <stdio.h> int main() { int i, j; int big[8][8], large[25][12]; for (i = 0 ; i < 8 ; i++) for (j = 0 ; j < 8 ; j++) big[i][j] = i * j; /* This is a multiplication table */ for (i = 0 ; i < 25 ; i++) for (j = 0 ; j < 12 ; j++) large[i][j] = i + j; /* This is an addition table */ big[2][6] = large[24][10] * 22; big[2][2] = 5; big[big[2][2]][big[2][2]] = 177; /* this is big[5][5] = 177; */ for (i = 0 ; i < 8 ; i++) { for (j = 0 ; j < 8 ; j++) printf("%5d ", big[i][j]); printf("\n"); /* newline for each increase in i */ } return 0; }

Result of execution

  0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 0 2 5 6 8 10 748 14 0 3 6 9 12 15 18 21 0 4 8 12 16 20 24 28 0 5 10 15 20 177 30 35 0 6 12 18 24 30 36 42 0 7 14 21 28 35 42 49