5. pemrograman array dan_string

2,727 views
2,482 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,727
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
61
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

5. pemrograman array dan_string

  1. 1. BAB VII PEMROGRAMAN ARRAY DAN STRING Pertemuan Minggu IX dan X Alokasi Waktu : 4 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang menggunakan struktur Larik (Array) Indikator : Mahasiswa dapat memahami struktur program bahasa C yang mengandung Array : Mahasiswa dapat membuat program dengan melibatkan struktur Array Pada pemrograman yang sesungguhnya terkada kita membutuhkan suatu blok data yang mempunyai karakteristik yang sama. Seperti di ilustrasikan tentang konsep variable dengan menganalogikan penamaan alamat pada sebuah kamar hotel, array di analogikan pada aktifitas pemesanan beberapa kamar hotel yang akan kita isi sesuai dengan kebutuhan si pemesan. Pada konsep pemrograman bahasa C array didefinisikan sebagai berikut: Tipe data nama_array [panjang_array] Tipe data merupakan batasan dari variable tentang format data apa yang dapat dimanipulasi untuk variable tersebut, nama_array merupakan nama variable yang dijadikan sebagai bentuk array, dan panjang_array adalah jumlah maksimum data yang dapat di tamping dalam variable array tersebut. Berikut adalah contoh format penulisan variable array int nim [10] char nama [30] Pada contoh int nim [10] diartikan sebagai sebuah variable dengan nama nim yang bertipe integer dengan kemampuan maksimum data yang dapat ditampung sebesar 10 digit. Demikian juga untuk contoh char nama [30] mengindikasikan bahwa variable array nama bertipe char yang mampu menampung data sebanyak 30 character (huruf). Hal yang perlu diperhatikan bahwa penulisan batas maksimum daya tamping sebuah array di tulis dengan tanda kurung kotak [ ]. Pemrograman Array dibagi menjadi dua kelempok besar yaitu array satu dimensi dan array multi dimensi. Pada pembahasan kali ini hanya akan di dibahas lebih mendalam tentang array 1 dimensi dan array 2 dimensi. 7.1. ARRAY 1 DIMENSI Seperti dicontohkan pada penulisan variable array diatas, contoh tersebut mengacu pada sintak atau aturan penulisan untuk array 1 dimensi. Dimana array tersebut hanya berbentuk 1 kolom atau pun baris. Berikut adalah ilustrasi dari penerapan array 1 dimensi Contoh 7.1 #include <stdio.h> #include <conio.h> /* Program menghitung nilai rata-rata */ main() { 1
  2. 2. int n1, n2, n3, n4, n5; float rata; printf("Masukan nilai untuk n1, n2, n3, n4 dan n5n"); scanf("%d %d %d %d %d", &n1, &n2, &n3, &n4, &n5); rata = (n1+n2+n3+n4+n5) / 5; printf("Nilai rata-ratanya = %f ",rata); getch(); } Pada program contoh 7.1 diatas mengilustrasikan bahwa untuk dapat membuat rata-rata nilai dari sekian data kita harus menyiapkan sekian variable sesuai dengan jumlah data yang akan kita kalkulasi, tentu hal ini tidak akan menjadi masalah jika data yang akan kita hitung dalam rentang satuan, bagaimana jika data yang akan kita kalkulasi sebanyak 100 bahkan 1000 buah data, tentu saja program pada contoh 7.1 menjadi tidak sangat efektif. Array salah satunya digunakan untuk mengelola blok data sehingga lebih mudah dalam memanfaatkannya. Contoh 7.2 berikut akan mengilustrasikan manfaat penggunaan array untuk memperbaiki efektifitas dari program contoh 7.1 Contoh 7.2 #include <stdio.h> #include <conio.h> /* Program menghitung nilai rata-rata dengan array*/ main() { int n[10]; int data, i,sum; float rata; printf("Berapa data yang akan Anda hitung "); scanf("%d",&data); sum =0; for (i=0; i<data; i++) { printf("data ke-%d ",i+1); scanf("%d",&n[i]); sum = sum + n[i]; } rata = sum/data; printf("Nilai rata-ratanya = %.2f",rata); getch(); } Pada contoh 7.2 terlihat bahwa pemrograman array terkait erat dengan teknik pemrograman looping. Penggunaan Teknik looping disini diperuntukan untuk menjalankan proses pemasukan (inisialisasi) data secara otomatis terkait dengan jumlah data yang aka dikalkulasi secara dinamis. Pada contoh 7.2 Teknik looping yang digunakan adalah dengan menggunakan struktur for akan tetapi pada dasarnya bisa diganti dengan teknik looping yang lain. Cara kerja Struktur array adalah sebagai berikut: 1. Ketika pengguna memasukan angka kedalam program, angka tersebut ditangkap oleh variable data yang bertipe integer. 2. Kemudian program berlanjut mengesekusi baris berikutnya yaitu menginisialisasi (pemberian nilai awal) pada variable sum dengan nilai nol (0). 2
  3. 3. 3. Program berlanjut ke struktur looping dimana proses looping akan dimulai dari angka ke 0 dan berakhir pada nilai yang dikandung pada variable data dengan proses penambahan angka 1 setiap perputaran looping yang ditandai dengan pernyataan i++. Proses looping akan berhenti ketika nilai yang terkadung dalam variable i sudah lebih besar atau sama dengan nilai yang terkandung dalam variable data. 7.2. ARRAY 2 DIMENSI Struktur array 2 dimensi mengisyaratkan bahwa susunan data yang dibentuk menyerupai table yaitu akan terdiri dari baris dan kolom. Pada konsep pemrograman bahasa C array 2 dimensi didefinisikan sebagai berikut: Tipe data nama_array [panjang_baris] [panjang_kolom] Array 2 dimensi termasuk dalam kategori array multidimensi, lebih jauh tentang array multidimensi pada penjabarannya kita dapat membuat array 3 dimensi, 4 dimensi dst, array multidimensi didefinisikan sebagai berikut: Tipe data nama_array [dimensi 1] [dimensi 2][dimensi 3] array 3 dimesi Tipe data nama_array [dimensi 1] [dimensi 2][dimensi 3][dimensi 4] array 4 dimesi Pada pokok bahasan ini akan lebih ditekankan pada array dua dimensi yang akan diilustrasikan dengan pemrograman matrik. Contoh program dibawah ini akan menampilkan susunan angka yang berbentuk baris dan kolom. Contoh 7.3 #include <stdio.h> #include <conio.h> main(void) { int t, i, num[3][4]; for(t=0; t<3; ++t) for(i=0; i<4; ++i) num[t][i] = (t*4)+i+1; /* now print them out */ for(t=0; t<3; ++t) { for(i=0; i<4; ++i) printf("%3d", num[t][i]); printf("n"); } getch(); } Ketika di jalankan maka output dari program adalah sebagai berikut: Gambar 7.1 Output program array 2 dimensi 3
  4. 4. Pada gambar 7.1 menampilkan susunan angka yang berpola, dalam gambar tersebut dapat terlihat susunan table yang terdiri dari bari dan kolom. Berikut adalah ilustrasi dari hasil keluaran program diatas 1 2 3 4 Baris 1 5 6 7 8 Baris 2 9 10 11 12 Baris 3 Kol 1 Kol 2 Kol 3 Kol 4 Program contoh 7.3 mengilustrasikan pembuatan table yang terdiri dari 3 baris dan 4 kolom. Pendeklarasian variable num[3][4] mengyatakan bahwa keluaran akan dibentuk kedalam table 3 x 4. Sebagai catatan bahwa array 2 dimensi mempunyai default nilai koordinat untuk kiri atas adalah (0,0) yang berarti bahwa table dimulau dari baris ke 0 dan kolom ke 0. Proses pembentukan tampilan adalah sebagai berikut: 1. Looping dimulai pada baris ke 0 yang dinyatakan dengan nilai t=0, dalam ini terjadi proses looping dimulai pada loop terluar yaitu pada loop for(t=0; t<3; ++t). 2. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan for(i=0; i<4; ++i). pada loop kedua ini I dimulai dengan angka 0 yang menyatakan kolom ke 0. Sampai pada tahap ini program sudah memegang nilai indeks yaitu di 0,0. 3. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan printf("%3d", num[t][i]). Pernyataan tersebut merupakan sutau perintah untuk menampilkan angka sesuai dengan hasil perhitungan pada pernyataan num[t][i] = (t*4)+i+1. num[t][i] adalah variable bertipe array 2 dimensi yang akan menampatkan angka dari hasil perhitungan susai dengan nomor indeksnya. Pada perhitungan awal variable num[t][i] bernilai 1 (satu) yang mempunyai indeks di (0,0) (lihat gambar 7.1). posisi tersebut menyatakan bahwa nilai 1 berada pada baris ke 0 dan kolom ke 0. 4. Setelah mencetak angka 1 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 0 menjadi i=1. Proses looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (0,1), sehingga nilai 2 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada posisi baris ke nol dan kolom 1. 5. Setelah mencetak angka 2 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 1 menjadi i=2. Proses looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (0,2), sehingga nilai 3 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada posisi baris ke nol dan kolom 2. Proses looping pada baris ke 0 akan berakhir setelah i bernilai 3 atau dari logika loop yang dimaksud jika I < 4 maka loop akan berakhir 6. Setelah baris pertama terpenuhi yaitu baris ke 0, maka proses looping akan melompat ke loop yang terluar yaitu loop for(t=0; t<3; ++t). pada bagian ini proses looping akan berlanjut pada variable t (lihat keterangan no 1), variable t yang semula bernilai 0 akan berubah menjadi 1 melalui proses increament ++t. pada proses ini pengeksekusian program hanya melakukan proses increament nilai t selajutnya program secara sequence mengeksekusi baris berikutnya yaitu pada loop for(i=0; i<4; ++i). 7. Pada tahap ini proses looping akan terjadi pada loop for(i=0; i<4; ++i), pada tahap kedua ini variable I akan mengalai proses dari awal dengan I bernilai 0. Hanya saja pada tahap ini program memegang 4
  5. 5. indeks dengan nilai (1,0), yang merujuk pada t=1 yang menyatakan baris ke 1, dan I=0 yang menyatakan kolom ke 0. 8. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan printf("%3d", num[t][i]) (lihat keterangan no 3). Pada perhitungan ini variable num[t][i] bernilai 5 (lima) yang mempunyai indeks di (1,0) (lihat gambar 7.1). posisi tersebut menyatakan bahwa nilai 5 berada pada baris ke 1 dan kolom ke 0. 9. Setelah mencetak angka 5 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 0 menjadi i=1. Proses looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (1,1), sehingga nilai 6 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada posisi baris ke 1 dan kolom ke 1. Proses looping pada baris ke 1 akan berakhir setelah i bernilai 3 atau dari logika loop yang dimaksud jika I < 4 maka loop akan berakhir 10. Proses akan kembali seperti pada keterangan no. 6 yang akan merubah harga t dari 1 menjadi 2. Proses di looping terluar akan berakhir ketiga harga berlogika kurang dari 3 (t<3) atau t bernilai 2. 7.3. STRING String merupakan tipe data bentukan dari tipe data dasar yaitu char. Tipe char hanya mengijinkan untuk pembacaan 1 huruf (character), dengan memanfaatkan array maka kita dapat menampung beberapa karakter yang membentuk suatu kesatuan kata atau bahkan kalimat dengan menggunakan tipe data char, berikut sintaks penulisan tipe bentukan string dalam bahasa C. char nama[20]; char alamat[50]; dalam pembuatan variable string aturan umum dalam pembuatan variable yaitu mencantumkan tipe data di depan variable masih tetap berlaku, hanya saja setelah nama variable harus diikuti tanda kurung kotak dengan disertai angka didalamnya. Sebagai contoh dua varibel diatas mengandung arti bahwa variable nama dengan tipe char dapat menampung character/huruf sebanyak 20, demikian juga dengan variable alamat yang mempunyai tipe char dengan huruf maksimal yang dapat ditampung sebanyak 50 huruf. Terdapat Beberapa aturan yang perlu dicermati dalam melakukan inisialisasi awal pada variable string, aturan dalam melakukan inisialisasi awal tersebut diantaranya sebagai berikut: char saying[ ] = "This is a string." 2. char str[40] = "Feddy Setio Pribadi" 1. Inisialisasi dengan kurung kotak kosong Inisialisasi dengan kurung kotak terdifinisi Contoh 7.4. #include <stdio.h> #include <conio.h> int main(void) { char nama[80], alamat[80]; puts("Ketikan Nama Anda Lalu Tekan Enter"); puts("nLalu Ketikan Alamat Anda kemudian tekan Enter"); gets(nama); gets(alamat); printf("nNama Anda %s dengan Alamat %s",nama,alamat); 5
  6. 6. getch(); } String mempunyai kajian tersendiri dalam pemrograman, C menyediakan library (string.h) yang berisi tentang fungsi-fungsi untuk melakukan manipulasi terhadap string. Berikut adalah contoh program yang menyajikan proses manipulasi yang dapat dilakukan pada string Contoh 7.5. #include <stdio.h> #include <string.h> #include <conio.h> main() { char s1[80], s2[80]; puts("Ketikan Sebuah Kata Lalu Tekan Enter"); puts("nKetikan Sebuah Kata kemudian tekan Enter"); gets(s1); gets(s2); printf("lengths: %d %dn", strlen(s1), strlen(s2)); if(!strcmp(s1, s2)) printf("The strings are equaln"); strcat(s1, s2); printf ("%sn", s1); strcpy(s1, "This is a test.n"); printf(s1); if(strchr("hello", 'e')) printf("e is in hellon"); if(strstr("hi there", "hi")) printf("found hi"); getch(); } Pada contoh 7.5 perhatikan sintaks program pada bagian include, fungsi-fungsi manipulasi string seperti strlen, strcmp, strcpy, strcat, dll terkandung dalam library <string.h>, oleh karena itu ketika kita akan melakukan manipulasi string dengan fungsi-fungsi tersebut maka terlebih dahulu kita harus menyertakan #include <string.h> pada bagain deklarsai library. Pengayaan Latihan 7.1 #include <stdio.h> #include <conio.h> main() { char str1[] = "To be or not to be"; char str2[] = ",that is the question"; 6
  7. 7. int count = 0; /* Stores the string length */ while (str1[count] != '0') /* Increment count till we reach the string */ count++; /* terminating character. */ printf("nThe length of the string "%s" is %d characters.", str1, count); count = 0; /* Reset to zero for next string */ while (str2[count] != '0') /* Count characters in second string */ count++; printf("nThe length of the string "%s" is %d characters.n", str2, count); getch(); } Latihan 7.2 #include <conio.h> #include <stdio.h> void misteri(char *s); main() { char string[] ="naufal"; printf("Sebelum proses %sn",string); misteri(string); printf("Setelah proses %s",string); getch(); } void misteri(char *s) { while (*s != '0') { if (*s >= 'a' && *s <= 'z') *s -=32; s++; } } 7

×