Anda di halaman 1dari 13

PERTEMUAN : 9

BAB VIII
VIII. 1 Larik

LARIK/ARRAY

Larik atau array adalah struktur data yang menyimpan sekumpulan elemen yang bertipe sama. Setiap elemen diakses langsung melalui indeksnya. Contoh: larik A dengan tipe integer dalan memiliki 10 elemen yang setiap elemennya berisi tinggi badan siswa di sebuah sekolah. Deklarasi array adalah sebagai berikut: Int A[10] Setiap elemen dirujuk dengan menggunakan indeks yaitu data[0] sampai dengan data[9], elemen pertama adalah data[0], bukan data[1], dalam bahasa pemograman lain, misal pascal dan basic, elemen pertama array adalah indek 1. A 0 1 2 3 4 5 6 7 8 9 158 159 342 324 123 645 452 323 123 231

VIII. 2 Mendefinisikan Larik di Dalam Deklarasi

Larik adalah struktur data statik, artinya elemen larik harus sudah diketahui sebelum program dieksekusi. Jumlah elemen larik tidak dapat diubah, ditambah atau dikurangi selama pelaksanaan program. Mendefinisikan larik di dalam bagian deklarasi berarti:

1. Mendefinisikan banyaknya elemen larik, berarti memesan sejumlah tempat di memori sebanyak elemen larik yang bersangkutan. 2. Mendefinisikan tipe elemen larik, dapat berupa tipe sederhana Contoh mendefinisikan larik di dalam bagian deklarasi a. Sebagai peubah Deklarasi L : array[1..50] of integer Namamhs : array[a..d] of string NilaiUjian : array[0..50] of real

b. Sebagai tipe baru Deklarasi Type larikint : array[1..100] of integer {nama tipe baru} P : larikint

c. Mendefinisikan ukuran maksimum elemen larik sebagai sebuah konstanta Deklarasi Const nmaks = 1000 {jumlah elemen larik sebagai konstanta} Type larikint : array[1..nmaks] of integer P : larikint

VIII. 3 Dimensi Pada Array

Array menurut dimensinya dapat dibedakan menjadi array berdimensi satu, dua dan multidimensi 1. Array berdimensi satu y Setiap elemen array dapat diakses melalui index y Index array secara default dimulai dari 0 y Deklarasi array : Tipe_array nama_array[ukuran]

2. Array berdimensi dua y Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah buah kolom. Bentuknya dapat berupa matriks atau tabel. y Deklarasi array : Tipe_array nama_array [baris][kolom]

3. Array multidimensi y Array multidimensi merupakan array yang mempunyai ukuran lebih dari dua. Bentuk pendeklarasian array multidimensi sama saja dengan deklarasi array dimensi satu maupun dimensi dua. y Deklarasi array : Tipe_array nama_array [ukuran 1][ukuran 2] . . . [ukuran N]

VIII. 4 Pemrosesan Larik

Elemen larik tersusun secara beruntun. Karena itu, elemennya diproses secara beruntun melalui indeksnya yang terurut. Pemrosesan beruntun pada larik adalah pemrosesan mulai dari elemen pertama larik (yaitu elemen dengan indeks terkecil, berturut-turut pada elemen berikutnya, sampai elemen terakhir dicapai, yaitu elemen dengan indeks terbesar). Skema umum pemrosesan larik Algoritma skema_umum_pemrosesan_larik {memproses setiap elemen larik secara beruntun, mulai dari indeks terkecil sampai indeks terbesar} Deklarasi Const Maks = 100 {banyak elemen larik} Type Larikint : array[1..Maks] of integer A : Larikint K : integer {indeks larik} Deskripsi Inisialisasi nilai K 1 While K Maks do Pemrosesan terhadap A[K] K K+1 Endwhile

{mulai dari elemen pertama}

{K > Maks} Terminasi

VIII. 5 Menginisialisasi Larik

Menginisialisasi larik adalah memberikan harga awal untuk seluruh elemen larik. Inisialisasi kadang-kadang diperlukan, misalnya mengosongkan elemen larik sebelum dipakai untuk proses tertentu. Mengosongkan larik bertipe numeric dapat berupa pengisian elemen larik dengan nol, sedangkan pada larik karakter, mengosongkan larik berarti mengisi elemen larik dengan spasi atau karakter kosong. Nol atau spasi bukanlah satu-satunya nilai yang dipakai untuk kinisialisasi. Permrogram dapat membiarkan nilai lain bergantung pada kebutuhan. Contoh Algoritma 1: Procedure Inisdengan0(output A : Larikint, input N: integer) {menginisialisasi setiap elemen larik A[1..n] dengan nol} {k.awal: n adalah jumlah elemen efektif larik, nilainya sudah terdefinisi} {k.akhir: seluruh elemen larik A bernilai nol} Deklarasi K: integer

{pencatat indeks larik}

Deskripsi For K 1 to N do A[K] 0 Endfor Algoritma Pemroseslarik {pemrogram utama untuk mengisi elemen larik dengan nilai 0} Deklarasi Const NMaks = 100 {banyaknya elemen larik} Type Larikint : array[1..NMaks] of integer A : Larikint K : integer N : integer

{indeks larik} {jumlah elemen efektif larik}

Procedure Inisdengan0(output A:Larikint, input N: integer) {menginisialisasi setiap elemen larik A[1..N] dengan nol} Deskripsi Read(N) Inisdengan0(A, N)

Larik digunakan bila kita memerlukan penyimpanan sementara data yang bertipe sama di dalam memori, untuk selanjutnya data tersebut dimanipulasi, dihitung atau diterapkan oleh proses lainnya. Contoh Algoritma 2: Algoritma BacaTampilLarik {program utama untuk membaca dan menampilkan hasil larik} Deklarasi A[10], N, K : integer Deskripsi Read(N) K 0 repeat K K+1 read(A[K]) until K=N K=0 repeat K K+1 write(A[,K,] =,A[K]) until K=N Program Algoritma 2 //tulisbacalarik #include "stdio.h" main(){ int A[10], N, K; printf("Jumlah : ");scanf("%d", &N); K=0; do { K++; printf("A[%d]",K);scanf("%d", &A[K]); } while (K<N); K=0; do { K++; printf("A[%d] = %d", K, A[K]); } while (K< N); }

Contoh Algoritma 3: Procedure HitungRata2(input A : Larikint, input N : integer, output U : real) {menghitung nilai rata-rata elemen larik A [1..N]} {k.awal: elemen larik A[1..N] sudah terdefinisi nilainya} {k.akhir: U berisi nilai rata-rata seluruh elemen} Deklarasi K : integer Jumlah : real

{indeks larik} {jumlah total seluruh nilai}

Deskripsi Jumlah 0 K 0 repeat{ K K+1 Jumlah Jumlah+A[K] }until (K=N) U Jumlah/N } Program Hitungratarata {program utama menghitung rata-rata seluruh elemen larik}

Deklarasi {banyaknya elemen larik} Const NMaks = 100 Type Larikint : array[1..NMaks] of integer Procedure HitungRata2(input A : Larikint, input N : integer, output U : real) {menghitung nilai rata-rata elemen larik A[1..N]} A : Larikint N, K : integer U : real Deskripsi read(N) K 0 repeat K K+1 read(A[K]) until (K=N) HitungRata2(A, N, U) write(U)

Program Algoritma 3: //hitungrata2 #include "stdio.h" #define NMaks 100 typedef int Larikint[NMaks+1]; void HitungRata2(Larikint A, int N, float *U); main(){ Larikint A; int N, K; float U; printf("Jumlah : ");scanf("%d",&N); K=0; do { K++; printf("A[%d]= ",K);scanf("%d",&A[K]); } while (K<N); HitungRata2(A, N,&U); printf("%4.2f",U);} void HitungRata2(Larikint A, int N, float *U){ int K; float Jumlah; Jumlah=0; K=0; do{ K++; Jumlah = Jumlah+A[K]; }while (K<N); *U=Jumlah/N; } Contoh Algoritma 4: Function Maksimum(input A : Larikint, input N : integer) integer {mengembalikan elemen terbesar di dalam larik A[1..N]} Deklarasi K : integer

{pencatat indeks larik}

Deskripsi Maks -9999 {nilai maksimum sementara} For K 1 to N do If A[K] > Maks then

Maks A[K] Endif Endfor Return maks Algoritma mencarinilaimaksimum {Algoritma utama mencari nilai maksimum} Deskripsi {banyaknya elemen larik} Const NMaks = 100 Type Larikint : array[1..NMaks] of integer Function Maksimum(input A : Larikint, input N : integer) integer {mengembalikan elemen terbesar di dalam larik A[1..N]} A : Larikint N ,K : integer Maks : integer Deskripsi read(N) K 0 repeat { K K+1 read(A[K]) } until (K=N) write(Maks(A, N)) Program Algoritma 4: //cari nilai maksimum #include "stdio.h" #define NMaks 100 typedef int Larikint[NMaks+1]; int Carimaks(Larikint A, int N); int Maks; main(){ Larikint A; int N, K; printf("Jumlah : ");scanf("%d",&N); K=0; do { K++; printf("A[%d]= ",K);scanf("%d",&A[K]);

} while (K<N); printf("Nilai maksimum dari keseluruhan elemen : %d",Carimaks(A, N)); } int Carimaks(Larikint A, int N){ int K; Maks = -9999; for (K=1;K<=N;K++) { if (A[K] > Maks) {Maks = A[K];} }return Maks; }

VIII. 6 Larik Bertipe Terstruktur

Misalkan tabmhs adalah sebuah larik yang elemennya menyatakan nilai ujian seorang mahasiswa untuk suatu mata kuliah (MK) yang ia ambil. Data setiap mahasiswa adalah NIM, nama mahasiswa, mata kuliah yang diambil dan nilai mata kuliah tersebut. Deklarasi Const nmaks = 100 Type mahasiswa : record < nim : integer, Namamhs : string, Kodemk : string, Nilai : char > tabmhs : array[1..nmaks] of mahasiswa Struktur logik larik tabmhs: Tabmhs NIM 1 2 100 Namamhs Kodemk nilai

Cara mengacu elemen larik : Tabmhs[k] {elemen ke-k dari larik tabmhs}

Tabmhs[k].nim {mengacu ke field nim dari elemen ke-k larik} Pencetakan elemen larik : Write(Tabmhs[k].nim) Pengisian elemen larik: Tabmhs[k].nim Contoh Algoritma 5: Algoritma Bacalarikmhs {mengisi elemen larik mahasiswa dengan data yang dibaca dari piranti masukan} Deklarasi Const NMaks =100 Type Mahasiswa : record < Nim : integer, Namamhs : string, Kodemk : string, Nilai : integer > Tabmhs : array[1..NMaks] of Mahasiswa K : integer N : integer Deskripsi Read(N) For K 1 to N do Read(Tabmhs[K]).Nim Read(Tabmhs[K]).Namamhs Read(Tabmhs[K]).Kodemk Read(Tabmhs[K]).Nilai Endfor For K 1 to N do write(Tabmhs[K]).Nim write (Tabmhs[K]).Namamhs write (Tabmhs[K]).Kodemk write (Tabmhs[K]).Nilai Endfor Program Algoritma 5: // bacalarikmhs #include "stdio.h" #define NMaks 100 typedef struct { int Nim[8]; char Namamhs[25]; Tabmhs[k+1].nim

char Kodemk[20]; int Nilai;}Mahasiswa; typedef Mahasiswa Larikint[NMaks+1]; main(){ Larikint Tabmhs; int N, K; printf("Jumlah : ");scanf("%d", &N); printf("Masukan Data\n\n\n"); for (K=1;K<=N;K++){ printf("record ke-[%d]\n", K); printf("Nim : ");scanf("%d", &Tabmhs[K].Nim); printf("Nama mhs : ");scanf("%s", Tabmhs[K].Namamhs); printf("Kode MK : ");scanf("%s", Tabmhs[K].Kodemk); printf("Nilai : ");scanf("%d", &Tabmhs[K].Nilai);} K=0; printf("\n\nTampilkan\n"); for (K=1;K<=N;K++){ printf("record ke-[%d]\n", K); printf("Nim : %d\n", Tabmhs[K].Nim); printf("Nama mhs : %s\n", Tabmhs[K].Namamhs); printf("Kode MK : %s\n", Tabmhs[K].Kodemk); printf("Nilai : %d\n", Tabmhs[K].Nilai);} }

VIII. 7 Soal Latihan

A. Tuliskan kembali program dibawah ini, compile, dan tuliskan semua pernyataan error/kesalahaan yang ada dan tuliskan bagaimana solusinya Program untuk menginput nilai mahasiswa ke dalam array satu dimensi #include "stdio.h" #include "conio.h" void main( ) {int index, nilai[12] ; Clrscr() ; /*input nilai mahasiswa*/ Printf("Input nilai 12 mahasiswa:\n ") For(k=0 ;k<10 ;k++) {printf("Mahasiswa %i : ",k+1) ;

Scanf( "%i",&nilai[k]) ; } /*tampilkan nilai mahasiswa*/ Printf("nilai mahasiswa yang telah diinput") ; For(k=0 ;k<0 ;indek++) printf("%5.0i",nilai[k]); } Getch() ; } Program Mencari Nilai Terbesar dari data berikut {10 4 2 5 3 8 9 2 9 12} #include "stdio.h" int main(); 2 { int data[ ] ={10,4,2,5,3,8,9,2,9,12} int i; int terbesar; terbesar=data[0]; for(i=1;i<10;i++) if (data[i]>terbesar); terbesar=data; printf(terbesar=%d\n,terbesar); return 0; }

B. Buatlah algoritma untuk kasus dibawah ini 1. Buatlah algoritma untuk menampilkan daftar matakuliah Jurusan Teknik Informatika, matakuliah ditampilkan sesuai dengan inputan dari user sebagai berikut\
No 1 2 3 4 5 Nama Matakuliah Algoritma dan Pemograman Metodelogi Penelitian Analisis dan Perancangan Sistem Jaringan Komputer Pemograman Web SKS 4 2 3 4 5 Dosen Novi Sofia Fitriasari S.Si.,M.T Dini Hamidin S.Si.,MBA.,M.T Ai Rosita S.Si.,M.T. Santoso S.Si.,Mkomp Woro Isti Rahayu S.St.,M.T.

2. Buatlah algoritma untuk membaca data secara berulang dari keyboard dan meletakkan ke dalam suatu larik. Jumlah maksimal yang dimasukkan kedalam

larik adalah 15 buah. Setelah itu tampilkan seluruh data yang dimasukkan dari keyboard tadi Tampilan yang diminta adalah sebagai berikut Masukan sebarang bilangan:9 Memasukan lagi (Y/T)?Y Masukan sebarang bilangan:10 Memasukan lagi (Y/T)?Y Masukan sebarang bilangan:16 Memasukan lagi (Y/T)?t Nilai yang dimasukkan adalah 9 10 16 3. Buatlah algoritma untuk memasukkan dan menampilkan kenaikan jumlah gaji tahum 2010 dengan tampilan sebagai berikut

4. Buat algoritma untuk menghtung banyaknya bilangan genap dan ganjil serta total dari bilangan-bilangan genap dan ganjil yang ada dari n buah bilangan. C. Buatlah Program untuk algoritma yang telah anda buat untuk kasus diatas

Anda mungkin juga menyukai