0% menganggap dokumen ini bermanfaat (0 suara)
161 tayangan

Struct, Array, Dan Pointer

Struktur data, array, dan pointer merupakan konsep penting dalam bahasa C. Struktur data digunakan untuk menyimpan dan mengatur data secara efisien, sementara array dan pointer memungkinkan akses langsung ke elemen memori. Percobaan mendemonstrasikan penggunaan ketiga konsep ini untuk menyelesaikan masalah seperti bilangan Fibonacci, konversi koordinat, dan manipulasi variabel.

Diunggah oleh

Rhianty's Wiwid
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
161 tayangan

Struct, Array, Dan Pointer

Struktur data, array, dan pointer merupakan konsep penting dalam bahasa C. Struktur data digunakan untuk menyimpan dan mengatur data secara efisien, sementara array dan pointer memungkinkan akses langsung ke elemen memori. Percobaan mendemonstrasikan penggunaan ketiga konsep ini untuk menyelesaikan masalah seperti bilangan Fibonacci, konversi koordinat, dan manipulasi variabel.

Diunggah oleh

Rhianty's Wiwid
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 10

STRUCT, ARRAY, DAN POINTER

Tujuan
1. Mahasiswa memahami apakah yang dimaksud dengan struktur data.
2. Mahasiswa memahami apakah yang dimaksud dengan algoritma.
3. Mengingat kembali array, struktur, pointer dalam bahasa C.
DASAR TEORI
1.1.

Pengenalan Struktur Data


Struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam
media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.
Dalam teknik pemrograman, struktur data berarti tata letak data yang berisi kolom-kolom
data, baik itu kolom yang tampak oleh pengguna atau pun kolom yang hanya digunakan

untuk keperluan pemrograman yang tidak tampak oleh pengguna.


1.2.
Pengenalan Algoritma
Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara
sistematis dan logis untuk pemecahan suatu permasalahan.
Arti umum adalah serangkaian urutan langkah-langkah yang tepat, logis, terperinci, dan
terbatas untuk menyelesaikan suatu masalah yang disusun secara sistematis.
1. Algoritma adalah inti dari ilmu komputer
2. Algoritma adalah urutan-urutan dari instruksi atau langkah-langkah untuk
menyelesaikan suatu masalah
3. Algoritma adalah blueprint dari program
4. Sebaiknya disusun sebelum membuat program
5. Kriteria suatu algoritma:
- Ada input dan output
- Efektifitas dan efisien
- Terstruktur

1.3.

Hubungan Struktur Data dan Algoritma


Dengan pemilihan struktur data yang baik, maka problem yang kompleks dapat
diselesaikan sehingga algoritma dapat digunakan secara efisien, operasi-operasi penting
dapat dieksekusi dengan sumber daya yang lebih kecil, memori lebih kecil, dan waktu
eksekusi yang lebih cepat.
Tidak semua struktur data baik dan sesuai. Contoh untuk problem data bank: pengupdatean harus cepat, sedangkan penambahan/penghapusan data boleh lebih lambat.

1.4.

Array
Array adalah organisasi kumpulan data homogen yang ukuran atau jumlah elemen
maksimumnya telah diketahui dari awal. Array umumnya disimpan di memori komputer
secara kontigu (berurutan). Deklarasi dari array adalah sebagai berikut:
int A[5]; artinya variabel A adalah kumpulan data sebanyak 5 bilangan bertipe
integer.
Operasi terhadap elemen di array dilakukan dengan pengaksesan langsung. Nilai di
masing-masing posisi elemen dapat diambil dan nilai dapat disimpan tanpa melewati
posisi-posisi lain.
Terdapat dua tipe operasi, yaitu:
1. Operasi terhadap satu elemen/posisi dari array
2. Operasi terhadap array sebagai keseluruhan
Dua operasi paling dasar terhadap satu elemen/posisi adalah
1. Penyimpanan nilai elemen ke posisi tertentu di array
2. Pengambilan nilai elemen dari posisi tertentu di array

1.5.

Penyimpanan dan Pengambilan Nilai


Biasanya bahasa pemrograman menyediakan sintaks tertentu untuk

penyimpanan dan pengambilan nilai elemen pada posisi tertentu di array.


Contoh:
A[10] = 78, berarti penyimpanan nilai 78 ke posisi ke-10 dari array A
C = A[10], berarti pengambilan nilai elemen posisi ke-10 dari array A

1.5.1. Keunggulan Dan Kelemahan Array


Keunggulan :
1. Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat
diacu secara langsung tanpa melalui elemen-elemen lain.
2. Jika berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemenelementetangga, baik elemen pendahulu atau elemen penerus
3. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus
terjaga, maka penggunaan penyimpanannya sangat efisien
Kelemahan :
Array mempunyai fleksibilitas rendah, karena array mempunyai batasan
sebagai berikut:
1. Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu
elemen adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe
lain
2. Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit
diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi
terus-menerus, maka representasi statis

1.6.

Tidak efisien dalam penggunaan memori

Menyiakan banyak waktu komputasi

Pada suatu aplikasi, representasi statis tidak dimungkinkan

Pointer
Misalnya kita ingin membuat beberapa penunjuk ke blok penyimpan yang berisi
integer.
Deklarasi pada C adalah:
int *IntegerPointer;
Tanda asterik (*) yang berada sebelum nama variable IntegerPointer menandakan
pointer pada suatu int. Jadi deklarasi diatas berarti definisikan sebuah tipe yang terdiri
dari pointer bertipe integer yang bernama IntegerPointer.
Apabila didepannya ditambahkan typedef
sebagai berikut:
Typedef int *IntegerPointer;
Berarti IntegerPointer merupakan suatu tipe pointer berbentuk integer.
Apabila akan mendeklarasikan dua variable A dan B sebagai penunjuk ke bilangan
integer:
IntegerPointer A, B;

Berarti kompiler C akan berisi nilai dari variable A dan B yang menunjuk ke integer.
Untuk membuat beberapa penunjuk ke beberapa penyimpan integer yang kosong dan

untuk membuat A dan B menunjuk tempat tersebut, digunakan prosedur dinamis untuk
alokasi penyimpan yang disebut malloc
A = (IntegerPointer *) malloc (sizeof(int));

B = (int *) malloc (sizeof(int));

Misalnya kita akan menyimpan integer 5 pada blok penyimpan yang ditunjuk pointer
pada variable A. Untuk menuimpan angka 5 pada blok penyimpan integer itu melalui
pointer A, digunakan pernyataan :
*A = 5;

Linked list adalah salah satu struktur data yang paling fundamental. Linked list terdiri dari
sejumlah kelompok elemen (linked ) dengan urutan tertentu. Linked list sangat berguna
untuk memelihara sekelompok data, semacam array, tetapi linked list lebih
menguntungkan dalam beberapa kasus. Linked list lebih efisien dalam proses penyisipan
(insertion ) dan penghapusan (deletion ). Linked list juga menggunakan pengalokasian
penyimpan secara dinamis, dimana penyimpan dialokasikan pada saat waktu berjalan
(runtime).

1.7.

Struktur
Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama, dengan
sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur biasa dipakai untuk
mengelompokkan beberapa informasi yang berkaitan menjadi sebuah satu kesatuan.

Contoh sebuah struktur adalah informasi data tanggal, yang berisi: tanggal, bulan dan
tahun.
1.7.1. Mendeklarasikan Struktur
Contoh pendefinisian tipe struktur adalah sebagai berikut:
struct data_tanggal {
int tanggal;
int bulan;
int tahun;
};

yang mendefinisikan tipe struktur bernama data_tanggal, yang terdiri dari tiga buah
elemen (field) berupa : tanggal, bulan dan tahun. Pendefnisian dan pendeklarasian
struktur dapat juga ditulis sebagai berikut:
struct data_tanggal {
int tanggal;
int bulan;
int tahun;
} tgl_lahir;

Bentuk umum dalam mendefinisikan dan mendeklarasikan struktur adalah sebagai


berikut
struct nama_tipe_struktur {
tipe field1;
tipe field2;
...
...
tipe fieldn;
}variabel_struktur1, ... , variabel_strukturM;

Masing-masing tipe dari elemen struktur dapat berlainan. Adapun variabel_struktur1


sampai dengan variabel_strukturM menyatakan bahwa variabel struktur yang
dideklarasikan bisa lebih dari satu. Jika ada lebih dari satu variabel, antara variabel
struktur dipisahkan dengan tanda koma.
1.7.2. Mengakses Elemen Struktur
Elemen dari struktur dapat diakses dengan menggunakan bentuk
variabel_struktur.nama_field

Antara variabel_struktur dan nama_field dipisahkan dengan operator titik (disebut


operator anggota struktur). Contoh berikut merupakan instruksi untuk mengisikan data
pada field tanggal
tgl_lahir.tanggal = 30;

Nama Program
Bahasa Pemrogramam
Compiler
Script program

Percobaan 1
: Penggunaan array pada bilangan fibonacci
: C++
: Code Blocks
:

#include <stdio.h>
#define MAX 10
int fibo[MAX];
int main ()
{
int i;
fibo[1]=1;
fibo[2]=1;
for (i=3;i<=MAX;i++)
fibo[i]=fibo[i-2]+fibo[i-1];
printf("%d Bilangan Fibonaci Pertama adalah : \n",MAX);
for (i=1;i<=MAX;i++)
printf("%d-", fibo[i]);
}

Buatlah laporan dari percobaan di atas lengkap dengan algoritma, hasil running /
output dan analisanya!

Nama Program
Bahasa Pemrogramam
Compiler
Script program
#include <stdio.h>
main()
{
int y, x = 87;
int *px;
px = &x;
y = *px;
printf("Alamat x
printf("Isi px
printf("Isi x
printf("Nilai yang
printf("Nilai y
}

Percobaan 2
: Program mengubah isi variabel melalui pointer
: C++
: Code Blocks
:

= %p\n",
= %p\n",
= %d\n",
ditunjuk
= %d\n",

&x);
px);
x);
oleh px
y);

= %d\n", *px);

Buatlah laporan dari percobaan di atas lengkap dengan algoritma, hasil


running / output dan analisanya!

Nama Program

Percobaan 3
: Program mengakses dan mengubah isi suatu

variabel pointer.
Bahasa Pemrogramam
Compiler
Script program

: C++
: Code Blocks
:

#include <stdio.h>
main()
{
float d = 54.5f, *pd;
printf("Isi d mula-mula = %g\n", d);
pd = &d;
*pd +=10;
printf("Isi d sekarang =%g\n", d);
}

Buatlah laporan dari percobaan di atas lengkap dengan algoritma, hasil


running / output dan analisanya!

Nama Program
Bahasa Pemrogramam
Compiler
Script program

Percobaan 4
: Penggunaan pointer untuk bilangan fibonacci .
: C++
: Code Blocks.
:

#include <stdio.h>
#include <stdlib.h>
#define MAX 10
int *fibo;
int main ()
{
int i;
fibo = (int *) malloc(MAX * sizeof(int));
*(fibo+1)= 1;
*(fibo+2)= 1;
for (i=3;i<=MAX;i++)
*(fibo+i)=(*(fibo+i-2)+*(fibo+i-1));
printf("%d Bilangan Fibonaci Pertama adalah : \n", MAX);
for (i=1;i<=MAX;i++)
printf("%d-", *(fibo+i));
}

Buatlah laporan dari percobaan di atas lengkap dengan algoritma, hasil


running / output dan analisanya!

Nama Program

Percobaan 5
: Penggunaan struktur pada konversi koordinat polar

Bahasa Pemrogramam
Compiler
Script program

ke koordinat catersian.
: C++
: Code Blocks.
:

#include <stdio.h>
#include <math.h>
struct polar {
double r;

double alpha;
};
struct kartesian {
double x;
double y;
};
int main ()
{
struct polar pl;
struct kartesian kl;
printf("Masukkan nilai r untuk koordinat polar: ");
scanf("%lf",&pl.r);
printf("Masukkan nilai alpha untuk koordinat polar: ");
scanf("%lf",&pl.alpha);
kl.x=pl.r * cos(pl.alpha);
kl.y=pl.r * sin(pl.alpha);
printf(
"Nilai koordinat kartesian untuk koordinat polar r= %2.2lf alpha=%2.2lf
adalah: \n", pl.r,pl.alpha);
printf("x= %2.2lf y= %2.2lf", kl.x,kl.y);
}

Buatlah laporan dari percobaan di atas lengkap dengan algoritma, hasil


running / output dan analisanya!

Nama Program
Bahasa Pemrogramam
Compiler
Script program

Percobaan 6
: Program struktur dalam array.
: C++
: Code Blocks.
:

#include <stdio.h>
#include <string.h>
struct dtnilai
{
char nrp[10];
char nama[20];
double nilai;
};
struct dtnilai data [10];
int j=0;
void tambah_data()
{
char jawab[2];
while(1)
{
fflush (stdin);
printf("NRP : "); scanf ("%s",&data[j].nrp);
printf("Nama :"); scanf("%s",&data[j].nama);
printf("Nilai Test :");scanf("%lf",&data[j].nilai);
printf("Ada data lagi (y/t):"); scanf("%s",&jawab);
if ((strcmp(jawab,"Y")==0)|| (strcmp(jawab,"y")==0))
{
j++;continue;
}
else if ((strcmp(jawab, "T")==0||(strcmp(jawab,"t")==0))

)break;
}
}
void tampil()
{
int i;
printf("Data Mahasiswa yang telah diinputkan :\n");
printf("NRP\tNama\tNilai\n");
for (i=0;i<=j;i++)
{
}

printf("%s\t%s\t%6.2f\n",data[i].nrp,data[i].nama,data[i]);

}
int
main()
{
tambah_data();
tampil();
}

Buatlah laporan dari percobaan di atas lengkap dengan algoritma, hasil running /
output dan analisanya!

Anda mungkin juga menyukai