0% menganggap dokumen ini bermanfaat (0 suara)
163 tayangan14 halaman

Pertemuan 2 - Array

Dokumen tersebut membahas tentang array satu dimensi dan dua dimensi dalam bahasa C. Array satu dimensi adalah kumpulan data yang bertipe sama yang diakses melalui indeks. Array dua dimensi mirip dengan matriks yang memiliki baris dan kolom untuk mengakses elemennya. Dokumen juga membahas tentang record yang menggunakan struct untuk mengelompokkan beberapa variabel dengan tipe data yang berbeda.

Diunggah oleh

Sofyan Hadi
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
163 tayangan14 halaman

Pertemuan 2 - Array

Dokumen tersebut membahas tentang array satu dimensi dan dua dimensi dalam bahasa C. Array satu dimensi adalah kumpulan data yang bertipe sama yang diakses melalui indeks. Array dua dimensi mirip dengan matriks yang memiliki baris dan kolom untuk mengakses elemennya. Dokumen juga membahas tentang record yang menggunakan struct untuk mengelompokkan beberapa variabel dengan tipe data yang berbeda.

Diunggah oleh

Sofyan Hadi
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 14

PRAKTIKUM 2

ARRAY
A. ARRAY 1 DIMENSI
Sebelumnya telah kita pelajari mengenai variabel dan penggunaan variabel dalam pembuatan sebuah
program, dimana variabel yang kita gunakan adalah variabel tuggal. Variabel tunggal merupakan variabel
yang dapat menyimpan satu buah nilai untuk setiap variabelnya. Jika kita ingin menyimpan banyak nilai
dalam sebuah variabel kita dapat menggunakan variabel array.
Array dapat diartikan sebagai sesuatu yang berbaris atau berderet-deret. Dalam bahasa pemrograman,
array adalah variabel sejenis yang berderet-deret sedemikian rupa sehingga alamatnya saling
berkesinambungan atau bersebelahan atau berdampingan (contigous).
Array merupakan sekelompok lokasi memori yang terdiri dari kumpulan nilai dengan tipe data yang
sama dengan menggunakan nama yang sama. Sebagai contoh, jika diketahui variabel a yang memiliki 5
lokasi memori yang semuanya bertipe int. Masing-masing nilai dalam setiap lokasi mempunyai identitias
berupa nama variabel dan nomor indeks yang dituliskan di dalam tanda kurung siku ‘[….]’. Untuk
mengakses masing-masing nilai pada array, menggunakan indeks yang mana indeks selalu dimulai dari 0
sampai dengan N-1.

a[0] 1
a[1] 2
a[2] 3
a[3] 4
Nama array a[4] 5
indeks

Array merupakan kumpulan data yang bertipe sama yang dapat diakses melalui indeks. Elemen array
diakses menggunakan simbol kurung siku []. Setelah dideklarasikan, array harus diinisialisasi terlebih dulu.
Variabel array dideklarasikan dengan mencantumkan tipe dan nama variabel diikuti dengan banyak lokasi
memori yang diinginkan. Bentuk umum dari deklarasi sebuah variabel array:

Data-type variable-name [size];

Sebagai contoh :

int c[5];
float x[10];
int c[5] = {-45, 6, 0, 72, 100};
int d[3] = {0};
int x[]={10,15,20,25,30,35,40,45};

Perlu diperhatikan bahwa bahasa C secara otomatis akan menyediakan lokasi memori sesuai dengan yang
dideklarasikan, dimana indeks selalu dimulai dari 0 sampai dengan N-1, N adalah banyaknya lokasi memori
yang dipesan. Nilai suatu variabel array dapat juga diinisialisasi secara langsung pada saat deklarasi, seperti
pada contoh yakni: int c[5] = {-45, 6, 0, 72, 100};. Berarti setiap lokasi memori dari
variabel array c langsung diisi dengan nilai-nilai yang dituliskan di dalam tanda kurung kurawal.

Sebuah variabel array juga dapat sekaligus mengisi setiap lokasi memori dengan satu nilai tertentu,
misalnya nilai 0, maka deklarasi variabel array tersebut dapat dituliskan seperti pada contoh yakni int
d[3] = {0};. Selain itu, banyaknya lokasi memori juga dapat secara otomatis disediakan sesuai dengan
banyaknya nilai yang akan dimasukkan, seperti pada contoh di atas yakni: int
x[]={10,15,20,25,30,35,40,45}; , yang mana membuat variabel array x dengan 8 lokasi
memori.
Contoh Array
Kompilasi dan jalankan program di bawah ini.
#include <stdio.h>

int main()
{
int A[5];
printf(“%5i”, A[0]);
return 0;
}

Selanjutnya ubahlah program di atas menjadi seperti di bawah ini, lalu kompilasi dan jalankan programnya.

#include <stdio.h>

int main()
{
int A[5]={7, 3, 9, 15, 12};
printf(“%i”, A[0]);
printf(“\n%i”, A[3]);
return 0;
}

Berikut adalah contoh implementasi variabel array, yaitu program untuk menghitung jumlah setiap elemen
dalam sebuah array.
#include <stdio.h>
#define SIZE 6

int main()
{
int a[SIZE]={1,3,5,4,7,2};
int indeks, total = 0;

for(indeks=0; indeks<=SIZE-1; indeks++)


total+=a[indeks];

printf("Total setiap elemen array adalah %d\n", total);


return 0;
}
Perhatikan contoh di bawah ini, apakah terjadi error pada saat compile atau run? Mengapa hal tersebut
terjadi?

#include <stdio.h>

int main()
{
int a[5]={1, 3, 5, 4, 7};
printf("%d\n", a[7]);
return 0;
}

Tidak akan terjadi error pada saat compile maupun run, namun nilai yang ditampilkan bukan nilai dari
variabel array. Jika mengakses indeks di luar selang, maka akan diperoleh nilai data lain.

Berikut ini contoh untuk mengisi array dari inputan user. Jika diberikan inputan : 3 20 34 21, apakah yang
akan ditampilkan oleh program di bawah ini?
#include <stdio.h>

int main()
{
int a[100], i;
scanf("%d", &n); //baca banyaknya data

//membaca nilai data dan disimpan ke dalam array


for(i=0;i<n;i++)
scanf("%d", &a[i]);

printf("%d\n", a[n/2]); //contoh akses isi array

return 0;
}

Array sebagai Argumen Fungsi


Mengirimkan argumen array ke sebuah fungsi dilakukan dengan hanya mencantumkan nama array tanpa
diikuti dengan tanda apapun, seperti contoh potongan program berikut:

int c[5] = {1,2,3,4,5};


...
...
...
total = jumlah(c,5);
...
...

Pemanggilan fungsi JUMLAH dengan mengirimkan argumen berupa variabel array c dan sebuah konstanta
5. Perhatikan bahwa variabel array ditulis hanya c, tanpa notasi tambahan apapun. Deklarasi vaiabel array
yang menjadi parameter dari suatu fungsi dituliskan dengan nama variabel array yang diikuti dengan tanda
kurung [], tanpa menuliskan banyaknya lokasi memori yang diinginkan.
Program berikut memberikan contoh penggunaan variabel array dalam suatu fungsi dan cara
pemanggilannya.

#include <stdio.h>
#define SIZE 12

int jumlah(int a[], int n)


{
int indeks, total = 0;

for(indeks=0; indeks<=n-1; indeks++)


total+=a[indeks];

return total;
}

int main()
{
int a[SIZE]={1,3,5,4,7,2,99,16,45,67,89,45};
int total;

total = jumlah(a,SIZE);

printf("Total setiap elemen array adalah %d\n", total);


return 0;
}

B. ARRAY 2 DIMENSI
Pada materi di atas, struktur array yang dibahas adalah array satu dimensi, sehingga variabelnya disebut
dengan variabel array berdimensi satu. Selanjutnya akan dibahas array berdimensi dua. Array berdimensi
dua dapat diibaratkan seperti sebuah matriks berukuran baris x kolom. Sebagai contoh, matriks A berukuran
2x3, dapat dideklarasikan di dalam C sebagai berikut:

int A[2][3] = {{2, 4, 1}, {5, 3, 7}};

yang akan menempati lokasi memori dengan susunan sebagai berikut:


[0] [1] [2]
[0] 2 4 1
[1] 5 3 7

Definisi variabel untuk setiap elemen tersebut adalah:


[0] [1] [2]
[0] A[0][0] A[0][1] A[0][2]
[1] A[1][0] A[1][1] A[1][2]

Sebagai contoh, berikut adalah program untuk lebih memahami konsep array dua dimensi, dan cobalah
menentukan keluaran dari program tersebut:
#include <stdio.h>
void printArray(int A[2][3]);
int main()
{
int matriks1[2][3]={{1,2,3},{4,5,6}},
matriks2[2][3]={1,2,3,4,5},
matriks3[2][3]={{1,2},{4}};
printArray(matriks1);
printArray(matriks2);
printArray(matriks3);
return 0;
}
void printArray(int a[2][3])
{
int i, j;
for(i=0;i<2;i++){
for(j=0; j<3; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}

Contoh input data pada array dua dimensi


#include <stdio.h>

int main()
{
int i,j, M, N;
scanf("%d %d", &M, &N);
int a[M][N];

for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d", &a[i][j]);

for(i=0;i<M;i++){
for(j=0;j<N;j++){
printf("%d ", a[i][j]);
}
printf("\n");
}

return 0;
}
C. RECORD
Struct adalah sekumpulan variabel yang masing-masing dapat berbeda tipe data dan dikelompokka ke
dalam satu nama variabel. Struct sering digunakan untuk mendefinisikan suatu record data yang disimpan
di dalam file. Sementara itu, variabel-variabel yang terdapat di dalam struct merupakan field pada record
tersebut. Struct termasuk ke dalam tipe data yang dibangkitkan (derived data type).
Definisi Struct
Perhatikan format untuk mendefinisikan sebuah struct:

struct tag{
tipe_data field1;
tipe_data field2;
}svar1, svar2;

Sebagai contoh:

struct mhs{
char *nama;
char *nim;
float uts, uas;
char mutu;
};

Kata kunci struct menunjukkan definisi dari struct, dan identifikasi mhs menunjukkan struct tag. Dengan
demikian terdapat tipe data baru bernama struct mhs, yang terdiri dari nama mahasiswa, nomor induk
mahasiswa, nilai uts dan uas, serta huruf mutu, yang masing-masing variabel tersebut disebut dengan field.

Oleh karena itu, jika ingin mendeklarasikan variabel dengan tipe data tersebut, dapat dituliskan seperti
contoh berikut:

struct mhs x, y[100], *z;

Variabel x merupakan variabel tunggal, y merupakan variabel array dengan ukuran alokasi memori
sebanyak 100, dan z adalah variabel pointer, yang mana semuanya bertipe datakan struct mhs yang memiliki
field nama, nim, nilai uts, nilai uas, dan huruf mutu. Penulisan deklarasi variabel bertipe data struct juga
dapat ditulis sekaligus seperti contoh di bawah ini”

struct mhs{
char *nama;
char *nim;
float uts, uas;
char mutu;
}x, y[100], *z;

Inisialisasi terhadap variabel struct dapat dilakukan seperti contoh di bawah ini:

struct mhs x={"Dengklek", "1810511001", 80, 90, 'A'};

Untuk mengakses field atau variabel yang terdapat di dalam struct, terdapat dua cara, yakni:
1. Menggunakan operator titik
Jika variabel yang dideklarasikan merupakan variabel tunggal (misalnya x) , maka untuk
mengakses field atau variabel yang terdapat di dalam struct menggunakan operator titik. Contoh:
printf("%s", x.nama);
2. Menggunakan operator panah
Jika variabel yang dideklarasikan merupakan variabel pointer (misalnya z) , maka untuk mengakses
field atau variabel yang terdapat di dalam struct menggunakan operator panah. Contoh:
printf("%s", z->nama);

Contoh lengkapnya sebagai berikut:


#include <stdio.h>

struct mhs{
char *nama;
char *nim;
foat uts, uas;
char mutu;
};

int main()
{
struct mhs x = {"Dengklek", "1810511001", 80, 90, 'A'};
struct mhs *z;
z=&x;
printf("%s\n", x.nama);
printf("%s\n", z->nama);
return 0;
}

Perlu diperhatikan untuk field yang digunakan bertipe data string. Terdapat dua cara untuk mendeklarasikan
dan menginisialisasinya.
1. Dapat dideklarasikan sebagai pointer
Contoh : char *nama; Untuk menginisialisasinya dapat menggunakan operator assignment (=)
2. Dapat dideklarasikan sebagai array
Contoh : char alamat[40]; Untuk menginisialisasinya harus menyalin string ke array tsb
dengan menggunakan fungsi strcpy();

Sebagai contoh:
#include <stdio.h>
#include <string.h>

int main(){
struct {
char *nama, alamat[40];
} mhs;

mhs.nama = "Indah Nian";


strcpy(mhs.alamat, "Jl. Cemara");
puts(mhs.nama); puts(mhs.alamat);
return 0;
}

Untuk membaca data dari keyboard pada tipe data struct dapat dilakukan dengan dua cara:
1. Jika data dari keyboard dibaca dengan fungsi gets() atau fgets(), maka untuk memasukkan ke field
string pada struct, data ini harus disimpan ke variabel biasa, baru dimasukkan ke field struct.
Sebagai contoh:
#include <stdio.h>
struct dataMhs {
char *nama;
float uts, uas;
} mhs;
int main(){
char x[40];
printf("Nama? "); gets(x); mhs.nama = x;
printf("Nilai? "); scanf("%f", &mhs.uts);
printf("%s %.1f\n", mhs.nama, mhs.uts);
return 0;
}

2. Alternatif lainnya adalah menggunakan scanf() untuk complex format string. "%[^\n]" artinya scan
selama bukan \n. Hasil scan langsung diinput ke field mhs.nama
#include <stdio.h>
int main(){
struct dataMhs {
char nama[50];
float nilai;
}mhs;

printf("Nama? "); scanf("%[^\n]", mhs.nama);


printf("Nilai? "); scanf("%f", &mhs.nilai);
printf("%s %.f", mhs.nama, mhs.nilai); return 0;
}

Typedef
Kata kunci typedef digunakan untuk membuat sinonim atau alias dari tipe data struct yang telah
didefinisikan sebelumnya. Sebagai contoh, pernyataan:
typedef struct mhs MHS;

atau dapat juga didefinisikan langsung seperti contoh di bawah ini:


typedef struct mhs{
char *nama;
char *nim;
int uts, uas;
char mutu;
}MHS;
mendefinisikan tipe data baru bernama MHS sebagai sinonim untuk struct mhs. Dengan demikian,
pernyataan struct mhs untuk selanjutnya dapat diganti dengan MHS saja.

Struct Bertingkat
Field pada struct boleh saja bertipe data struct lainnya sehingga membentuk struct bertingkat. Pengaksesan
field struct bertingkat menggunakan operator titik/panah. Perhatikan contoh di bawah ini:
#include <stdio.h>

typedef struct {
int x, y;
} titik;

typedef struct {
titik kr_atas, kn_bawah;
} kotak;

int main()
{
kotak K;
K.kr_atas.x = 5;
K.kr_atas.y = 4;

printf("%d\n", K.kr_atas.x );
return 0;
}

Array dari Struct


Seperti pada pembahasan awal di atas, kita dapat mendeklarasikan variabel struct dengan menggunakan
variabel array. Biasa digunakan untuk menyimpan beberapa record data.

Sebagai contoh: kita ingin membaca sejumlah data mahasiswa dimana data dibaca per baris, dengan
karakter (;) sebagai pemisah nama dan nilai.

#include <stdio.h>
#define SIZE 3

int main(){
typedef struct {
char nama[50];
float nilai;
} M;

M A[SIZE];
int i;
for (i=0; i<SIZE; i++)
scanf("%[^;];%f", A[i].nama, &A[i].nilai);
for (i=0; i<SIZE; i++)
printf("%s %.1f", A[i].nama, A[i].nilai);

return 0;
}

Jika diberikan input seperti berikut:


Indah Nian; 95.4
Putri Melati; 87.6
Elok Permai; 75

Maka output yang diperoleh sebagai berikut:


Indah Nian 95.4
Putri Melati 87.6
Elok Permai 75.0

Struct dan Fungsi


Struct dapat dikirim sebagai parameter fungsi, baik passing by value maupun passing by reference. Selain
itu, struct juga dapat menjadi nilai yang dikembalikan oleh fungsi.

Sebagai contoh:
#include <stdio.h>
typedef struct {
int pj, lb, tg;
} balok ;

typedef struct{
int pj, lb;
}persegi;

int hitung_volume(balok C){


return C.pj*C.lb*C.tg;
}

int hitung_luas(persegi *C){


return C->pj*C->lb;
}

int main(){
balok A = {6, 4, 5};
persegi C = {6,4};
int V = hitung_volume(A);
int L = hitung_luas(&C);
printf("Volume: %d\n", V);
printf("Luas: %d\n", L);
return 0;
}

LATIHAN
1. [10 poin] Buatlah sebuah program bahasa C untuk menginput 10 bilangan bulat yang menyatakan
nilai mahasiswa ke dalam sebuah array yang berisi 10 buah elemen. Selanjutnya cetak daftar nilai
mahasiswa yang lulus (nilai>=60).

2. [10 poin]Buatlah sebuah program menggunakan array untuk mencari nilai maksimum dan
minimum pada array tersebut. Jumlah data tidak lebih dari 100. Proses masukkan nilai pada array
diulang sampai nilai yang dimasukkan kurang dari 0 atau lebih dari 100. Proses mencari nilai
maksimum dan minimum menggunakan fungsi sendiri.
Contoh input : 1 2 3 4 5 -1
Contoh output : Maksimum = 5
Minimum = 1

3. [20 poin] Pak Dengklek menyelenggarakan ujian harian setelah selesai mengajarkan N ekor beberk
mengenai konsep array. Setiap bebek ke-I mendapat nilai sebesar hi yang merupakan bilangan
bulat. Untuk menentukan lulus, nilai bebek tersebut tidak kurang dari nilai rata-rata dari seluruh
bebek. Tentukan banyaknya bebek yang lulus ujian!. Batasan : (1<=N<=100 ; 1<=h i <=100 ; 1<=
i <=N). Masukkan berupa dua baris. Baris pertama berisi sebuah bilangan bulat N. Bari kedua berisi
nilai ujian bebek. Baris kedua ini merupakan hi . Keluarannya berupa sebuah baris yang menyatakan
banyaknya bebek yang lulus ujian.

Contoh input : 3
567
Contoh ouput : 2

Keterangan : nilai rata-rata dari seluruh bebek adalah 6 dan terdapat 2 ekor bebek yang nilainya
tidak kurang dari 6.

4. [10 poin] Buatlah program membaca matriks a berukuran dan menampilkan elemen terbesar
pada setiap barisnya.
Contoh input :
44
1321
8432
1234
9876

Contoh output:
3849
5. [20 poin] Buatlah program untuk membuat matriks simetris berukuran n×n, seluruh elemen pada
diagonal sekunder (kanan atas ke kiri bawah) adalah n, dan elemen-elemen di bawah dan atasnya
adalah n-1, n-2, … , 1.

Contoh input:
5
Contoh ouput :
12345
23454
34543
45432
54321

6. [10 poin] Buatlah sebuah program yang mengandung sebuah struct yang menyimpan data tanggal
hari ini (tanggal, bulan, tahun). Buat variabel elemen bulan sebagai sebuah enumerasi. Gunakan
sebuah fungsi bernama cetak_tanggal yang digunakan untuk mencetak tanggal yang telah
diinputkan.

Contoh input :
Masukkan tanggal hari ini : 26-11-2018

Contoh output:
Hari ini adalah 26 November 2018.

7. [20 poin] Buatlah sebuah program yang mengandung sebuah struct yang menyimpan data buku
berupa:
 kode isbn dengan panjang maksimal 18
 judul buku dengan panjang maksimal 50
 nama penulis buku dengan panjang mmaksimal 40
 nama penerbit dengan panjang maksimal 25
 jumlah halaman buku
 tahun terbitan buku
 harga buku

diketahui pada program C, fungsi main dari program tersebut sebagai berikut:
#include <stdio.h>
....
....
int main()
{
Buku B;
IsiDataBuku(&B);
printf("\n");
tampilkanDataBuku(B);
return 0;
}

Lengkapi titik-titik pada program di atas sehingga menghasilkan program yang bebas error dan
output yang benar
Contoh input :
Mengisi data buku
ISBN : 978-602-6232-08-3
Judul : Kumpulan Solusi Pemrograman C
Penulis : Budi Raharjo
Penerbit : Informatika
Halaman : 434
Tahun Terbit : 2016
Harga : 98000

Contoh output:
978-602-6232-08-3 | Kumpulan Solusi Pemrograman C | Budi Raharjo | Informatika | 434 | 2016 |
98000
DAFTAR PUSTAKA
[1] G. G. Maulana and others, “Pembelajaran Dasar Algoritma Dan Pemrograman Menggunakan
El-Goritma Berbasis Web,” J. Tek. Mesin, vol. 6, no. 2, p. 8, 2017.
[2] “Lima Bahasa Pemrograman Terpopuler untuk Dipelajari di Tahun 2021 – CCIT.”
http://ccit.eng.ui.ac.id/lima-bahasa-pemrograman-terpopuler-untuk-dipelajari-di-tahun-2021/
(accessed Feb. 07, 2022).
[3] “Pengertian Bahasa Pemrograman C - Tutorial Belajar C | Duniailkom.”
https://www.duniailkom.com/tutorial-belajar-c-pengertian-bahasa-pemrograman-c/ (accessed
Feb. 07, 2022).
[4] “Cara Mendownload dan Menginstall Code::Blocks - Tutorial Belajar C | Duniailkom.”
https://www.duniailkom.com/tutorial-belajar-c-cara-mendownload-dan-menginstall-code-blocks/
(accessed Feb. 07, 2022).
[5] “Belajar Pemrograman C #3: Struktur Dasar dan Aturan Penulisan Program C yang Harus
dipahami.” https://www.petanikode.com/c-syntak/ (accessed Feb. 07, 2022).
[6] “Tutorial Belajar: Jenis-jenis Operator dalam Bahasa C | Duniailkom.”
https://www.duniailkom.com/tutorial-belajar-c-jenis-jenis-operator-dalam-bahasa-c/ (accessed
Feb. 07, 2022).
[7] A. Solichin and Painem, MODUL PRAKTIKUM BAHASA PEMROGRAMAN DASAR
(PG168). Jakarta: Fakultas Teknologi Informasi Universitas Budi Luhur, 2015.
[8] M. M. Santoni, MODUL PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2. Jakarta:
Fakultas Ilmu Komputer, UPN Veteran Jakarta.

Anda mungkin juga menyukai