01 Array Pointer Dan Struktur
01 Array Pointer Dan Struktur
B. DASAR TEORI
B.1 Array
Suatu array berdimensi satu dideklarasikan dalam bentuk umum berupa :
tipe_data nama_var[ukuran];
dengan :
tipe_data : untuk menyatakan tipe dari elemen array, misalnya int, char, float.
nama_var : nama variabel array
ukuran : untuk menyatakan jumlah maksimal elemen array.
elemen terakhir memiliki indeks 4. Gambar 1.1 di bawah ini menjelaskan urutan
komponen dalam array.
nilai_tes[1]
total 5 elemen
nilai_tes[2]
nilai_tes[3]
nilai_tes[4]
float nilai_tes[5]
nama_var[indek
s]
sehingga, untuk array nilai_tes, maka :
nilai_tes[0] elemen pertama dari nilai_tes
nilai_tes[4] elemen ke-5 dari nilai_tes
Contoh :
nilai_tes[0] = 70; /* contoh 1 */
scanf(“%f”, &nilai_tes[2]);/* contoh 2 */
Contoh pertama merupakan pemberian nilai 70 ke nilai_tes[0]. Sedangkan contoh 2
merupakan perintah untuk membaca data bilangan dari keyboard dan diberikan ke
nilai_tes[2].
B.2 Pointer
Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek
lain. Pada kenyataan yang sebenarnya, variabel pointer berisi alamat dari suatu obyek
lain (yaitu obyek yang dikatakan ditunjuk oleh pointer). Sebagai contoh, px adalah
variabel pointer dan x adalah variabel yang ditunjuk oleh px. Kalau x berada pada
alamat memori (alamat awal) 1000, maka px akan berisi 1000. Sebagaimana
diilustrasikan pada gambar 8.1 di bawah ini
px
1000
zzzz
Address
?
1000
x
tipe *nama_variabel
dengan tipe dapat berupa sembarang tipe data dalam bahasa C. Adapun
nama_variabel adalah nama dari variabel pointer. Sebagai contoh :
int *px; / *contoh 1 */
char *pch1, *pch2; / *contoh 2 */
Contoh pertama menyatakan bahwa px adalah variabel pointer yang menunjuk ke
suatu data bertipe int, sedangkan contoh kedua masing pch1 dan pch2 adalah variabel
pointer yang menunjuk ke data bertipe char.
menyatakan variabel
pointer
Pernyataan di atas berarti bahwa px diberi nilai berupa alamat dari variabel x. Setelah
pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px menunjuk ke
variabel x.
yang menyatakan “isi atau nilai variabel/data yang ditunjuk oleh pointer px” .
Sebagai contoh jika y bertipe int, maka sesudah dua pernyataan berikut
px = &x;
y = *px;
B.3 Struktur
Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama,
dengan sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur dapat
digunakan untuk mengelompokkan beberapa informasi yang berkaitan menjadi
sebuah satu kesatuan.
Bentuk umum deklarasi struktur adalah sebagai berikut:
struct nama_tipe_struktur
{
tipe field1;
.
.
tipe fieldN;
} variabel_struktur1, …, variabel_strukturM;
yang artinya, mendeklarasikan array student yang memiliki elemen yang bertipe
struct person sebanyak MAKS. Setelah array student dideklarasikan, maka ruang
yang disediakan ditunjukkan dalam Gambar 1.4 di bawah ini.
birthday
0
1
18
19
Elemen-elemen dari array stuktur tersebut bisa diakses dengan cara sebagai berikut :
C. TUGAS PENDAHULUAN
Buatlah flowchart untuk tiap permasalahan yang diberikan pada latihan soal no 1 & 3
di bawah ini sebagai Tugas Pendahuluan.
D. PERCOBAAN
1. Buatlah workspace untuk praktikum Struktur Data dengan menggunakan Visual
C++.
2. Buatlah project untuk praktikum pertama.
3. Cobalah untuk masing-masing percobaan di bawah ini.
4. Selesaikan soal-soal yang ada dengan mengimplementasikan flowchart yang anda
buat pada Tugas Pendahuluan.
void main ()
{
int n[ 10 ];
int i,j;
void main()
{
int fibo[MAX];
void main()
{
int i;
fibo[1] = 1;
fibo[2] = 1;
for (i=3;i<=MAX;i++)
fibo[i]=fibo[i-2]+fibo[i-1];
void main ()
{
main()
{
int y, x = 87; /* x & y bertipe int */
int *px;
/* var pointer yang menunjuk ke data yang bertipe int */
x = 87;
main()
{
float d = 54.5f, *pd;
void main()
{
int my_array[] = {1,23,17,4,-5,100};
int *ptr;
int i;
ptr = &my_array[0]; /* var pointer ptr menunjuk ke elemen ke-
0 dari myarray */
printf("\n\n");
for (i = 0; i < 6; i++)
{
printf("my_array[%d] = %d ",i,my_array[i]);
printf("ptr + %d = %d\n",i, *(ptr + i));
}
}
void main()
{
char *pA;
char *pB;
puts(strA);
Algoritma dan Struktur Data 10
Politeknik Elektronika Negeri Surabaya
pA = strA;
puts(pA);
pB = strB;
putchar('\n');
while(*pA != '\0')
{
*pB++ = *pA++;
}
*pB = '\0';
puts(strB);
}
void main()
{
int *fibo;
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));
}
struct polar {
double r;
double alpha;
};
struct kartesian {
double x;
double y;
};
void main()
{
struct polar p1;
struct kartesian k1;
#include <stdio.h>
#include <string.h>
struct dtnilai
{
char nrp[10];
char nama[20];
double nilai;
};
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);
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].nilai);
}
}
void main()
{
tambah_data();
tampil();
}
#include <stdio.h>
#include <string.h>
struct dtnilai
{
char nrp[10];
char nama[20];
double nilai;
};
void main()
{
struct dtnilai *st_ptr;
st_ptr = &my_struct;
strcpy(my_struct.nrp,"01");
printf("\n%s ",my_struct.nrp);
strcpy(my_struct.nama,"Arini");
printf("\n%s ",my_struct.nama);
my_struct.nilai = 63.6;
tampil(st_ptr);
E. LATIHAN
1. Terdapat array dengan tipe char yang berisi {'p', 'e', 'n', 's', 'i', 't'}, baliklah array
tersebut menjadi tisnep.
2. Terdapat dua buah matrik dengan ordo n yang direpresentasikan dengan array
dimensi dua, lakukan operasi penjumlahan, pengurangan dan perkalian.
3. Bagaimana output program di bawah ini ?
main() {
int count = 10, *temp, sum = 7;
temp = &count;
*temp = 32;
temp = ∑
*temp = count;
sum = *temp * 4;
Tulis program yang membaca dua bilangan kompleks dan simbol operasi yang
perlu dilakukan, kemudian lakukan operasi yang diminta. Gunakan struktur untuk
merepresentasikan bilangan kompleks dan gunakan prosedur untuk implementasi
tiap operasi.
F. LAPORAN RESMI
1. Untuk setiap listing program dari percobaan-percobaan di atas, ambil capture
outputnya.
2. Tuliskan kesimpulan dari percobaan yang telah anda lakukan.