Disusun oleh:
2. Dasar Teori
a. Array
Array adalah struktur yang terdiri dari beberapa elemen dengan tipe data
yang sama. Elemen array disusun secara berurutan dalam memori
komputer. Semua elemen array memiliki tipe yang sama. Array berguna
untuk mengatur kumpulan data homogen di mana ukuran maksimum atau
jumlah elemen yang diketahui sejak awal. Homogen berarti bahwa setiap
elemen dari array yang diberikan harus memiliki tipe data yang sama.
b. Struktur Data
Struktur Data adalah bagan organisasi, sepeti struktur dan array, yang
diterapkan pada data untuk menginterpretasikan data dan melakukan
operasi tertentu padanya. Menggunakan struktur data yang tepat dalam
proses pemrograman menghasilkan algoritma yang lebih jelas dan akurat
yang membuat program lebih sederhana secara keseluruhan.
c. Pointer
Dalam ilmu komputer, pointer adalah tipe data dalam bahasa pemrograman
yang nilainya mengacu pada penggunaan alamat yang ada untuk menunjuk
langsung ke nilai lain yang disimpan di tempat lain di memori komputer.
Pointer dapat sangat meningkatkan kinerja data untuk operasi berulang
seperti traversing string, lookup tabel, control tabel dan tree structure.
1.
2
3. Pembahasan
A. Tugas Pendahuluan
Flowchart Latihan 1 :
START
Mendeklarasikan
char nama; char balik
int jumlah; int i; int k=0
END
3
Flowchart Latihan 3 :
START
Mendeklarasikan
Nilai count, pointer temp, dan nilai sum
END
B. Percobaan
Percobaan 1 : Cara memberikan nilai pada array dan mengakses array
#include <stdio.h>
int main ()
{
int n [ 10 ];
int i,j;
4
for (j = 0; j < 10; j++ )
{
printf("Element[%d] = %d\n", j, n[j] ) ;
}
}
int main ()
{
int a [ SIZE ] = { 1, 3, 5, 4, 7, 2, 99, 16, 45,
67, 89, 45 };
int i = 0;
int total = 0;
for ( int i = 0; i < SIZE; ++i)
{
total+=a[i];
}
int fibo[MAX];
int main ()
{
int i;
fibo [1] = 1;
fibo [2] = 1;
5
int main()
{
int a[5][2] = {{0,0},{1,2},{2,4},{3,6},{4,8}};
int i,j;
main()
{
int y, x = 87;
int *px;
x = 87;
px = &x;
y = *px;
main()
{
float d = 54.5f, *pd;
pd = &d;
*pd += 10;
6
Percobaan 7 : Mengakses elemen array dengan pointer.
#include <stdio.h>
int main()
{
int my_array[] = {1, 23, 17, 4, -5, 100};
int *ptr;
int i;
ptr = &my_array[0];
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));
}
}
int main()
{
char *pA;
char *pB;
puts(strA);
pA = strA;
puts(pA);
pB = strB;
putchar('\n');
while(*pA != '\0')
{
*pB++ = *pA++;
}
*pB = '\0';
puts(strB);
}
int main()
{
7
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;
};
int main()
{
struct polar p1;
struct kartesian k1;
8
}
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].nam
a);
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++)
{
9
printf("%s\t%s\t%6.2f\
n",data[i].nrp,data[i].nama,data[i].nilai);
}
}
int main()
{
tambah_data();
tampil();
}
struct dtnilai
{
char nrp[10];
char nama[20];
double nilai;
};
int main()
{
strcpy(my_struct.nrp,"01");
printf("\n%s ",my_struct.nrp);
strcpy(my_struct.nama,"Arini");
printf("%s ",my_struct.nama);
my_struct.nilai = 63.6;
printf("%g\n",my_struct.nilai);
}
C. Latihan
Latihan 1 : Terdapat array dengan tipe char yang berisi {'p', 'e', 'n', 's', 'i', 't'},
baliklah array tersebut menjadi tisnep.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char nama[]={'p','e','n','s','i','t'};
10
char balik[6];
int jumlah;
jumlah=strlen(nama);
int i;
int k=0;
for(i=jumlah-1;i>=0;i--)
{
balik[k]=nama[i];
k++;
}
11
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
for(k=0;k<N;k++)
{
jumlah+=A[i][k]*B[k][j];
C[i][j]=jumlah;
jumlah=0;
}
}
}
}
int main()
{
int M1[N][N]={1,2,3,4};
int M2[N][N]={5,6,7,8};
int hasil[N][N];
char lagi='y';
int i,j,pilih;
do
{
printf("\n");
printf("1.Penjumlahan\n");
printf("2.Pengurangan\n");
printf("3.Perkalian\n");
printf("Pilihan : ");
scanf("%d",&pilih);
switch(pilih)
{
case 1:tambah(M1,M2,hasil);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",hasil[i]
[j]);
}
printf("\n");
}
break;
case 2:kurang(M1,M2,hasil);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",hasil[i]
[j]);
}
printf("\n");
}
12
break;
case 3:kali(M1,M2,hasil);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",hasil[i]
[j]);
}
printf("\n");
}
break;
default:printf("\nTerimakasih
telah menggunakan program");
exit(1);
}
printf("Lagi? (y/t)");
fflush(stdin);
scanf("%c",&lagi);
}
while(lagi=='y');
printf("\nTerimakasih telah Menggunakan
Program");
}
main()
{
int count = 10, *temp, sum = 7;
temp = &count;
*temp = 32;
temp = ∑
*temp = count;
sum = *temp * 4;
printf("count = %d, *temp = %d, sum = %d\n",
count,*temp, sum );
}
int main()
{
13
cout<<"------------------ Aritmatika Polinomial
------------------"<<endl;
cout<<"Diketahui : "<<endl;
cout<<"P1 = 6x8 + 8x7 + 5x5 + x3 + 15"<<endl;
cout<<"P2 = 3x9 + 4x7 + 3x4 + 2x3 + 2x2 +
10"<<endl;
cout<<"P3 = X2 + 5"<<endl;
cout<<endl<<"==================================
===================="<<endl;
int P1[11]={15,0,0,1,0,5,0,8,6,0,0};
int P2[11]={10,0,2,2,3,0,0,4,0,3,0};
int P3[11]={5,0,1,0,0,0,0,0,0,0,0};
int bil[12]={0,0,0,0,0,0,0,0,0,0,0,0};
int a, b;
14
if (bil[a]==0)
{
cout<<"";
}
else
{
if (a>1)
{
if (bil[a]>1) cout<<" +
"<<bil[a]<<"x"<<a;
else if (bil [a]<0) cout<<"
"<<bil[a]<<"x"<<a;
}
else if(a==1)
cout<<""<<bil[a]<<"x"<<" " ;
else if (a>=0) cout<<" +
"<<bil[a];
}
}
int bil2[12]={0,0,0,0,0,0,0,0,0,0,0,0};
cout<<"\n\n- Perkalian \n";
cout<<"P1 * P3 = (6x8 + 8x7 + 5x5 + x3 + 15) *
(X2 +5)"<<endl;
cout<<"P1 * P3 = ";
for(int a=0;a<10;a++)
{
for(int b=0;b<4;b++)
{
bil2[a+b] += *(P1+a) * *(P3+b);
}
}
for(int a=11;a>=0;a--)
{
if (bil2[a]==0)
{
cout<<" ";
}
else
{
if(a>1)
{
cout<<""<<bil2[a]<<"x"<<a<<"+";
}
else if (a==1)
{
cout<<""<<bil2[a]<<"x"<<" + ";
}
else if (a==0)
{
cout<<""<<bil2[a];
}
15
}
}
int bil3[12]={0,0,0,0,0,0,0,0,0,0,0,0};
cout<<"\n\n- Turunan \n";
cout<<"P2' = (3x9 + 4x7 + 3x4 + 2x3 + 2x2 +
10)'"<<endl;
cout<<"P2' = ";
for(int a=0;a<10;a++)
{
bil3[a] = P2[a+1]* (a+1);
}
return 0;
}
struct bil
{
int riil[2];
int imajiner[2];
}
kompleks;
16
}
int main()
{
cout<<"----------------------------------------
-------";
17
cout<<"\n PROGRAM OPERASI PEMBACA DUA BILANGAN
KOMPLEKS" << endl;
cout<<"----------------------------------------
-------";
bil kompleks;
for (int a=0;a<2;a++)
{
cout <<"\nIsi Bilangan Kompleks Ke- "<<
a+1 << endl;
cout <<"1). Bilangan Riil : ";cin >>
kompleks.riil[a];
cout <<"2). Bilangan Imajiner :
";cin >> kompleks.imajiner[a];
}
cout<<endl<<endl;
penjumlahan(kompleks);
pengurangan(kompleks);
perkalian(kompleks);
pembagian(kompleks);
}
4. Hasil
A. Percobaan
Percobaan 1 : Cara memberikan nilai pada array dan mengakses array
18
setiap elemen. Hasil dari program ini menampilkan 10 baris output yang
menunjukkan nilai yang berbeda-beda.
19
Percobaan 4 : Cara mengakses array dua dimensi
20
Percobaan 6 : Program Mengakses & Mengubah Isi Suatu Variabel Pointer
21
Percobaan 8 : Mengkopi string menggunakan pointer.
22
cartesian. Program ini menggunakan dua struct, dengan 2 variabel di
setiap struct. Kemudian user diminta untuk memasukkan nilai untuk
koordinat polar. Kemudian nilai disimpan dan dilanjutkan dengan
menggunakan rumus untuk mencari nilai koordinat cartesian. Setelah
konversi selesai, program menampilkan nilai hasil porses yang telah
dilakukan.
23
B. Latihan
Latihan 1 : Terdapat array dengan tipe char yang berisi {'p', 'e', 'n', 's', 'i', 't'},
baliklah array tersebut menjadi tisnep.
24
perkalian sesuai dengan pilihan user untuk mengolah array. Kemudian, hasil
dari pengolahan rumus tadi ditampilkan pada output. Dan user juga dapat
memilih rumus pengolahan array yang lainnya.
main()
{
int count = 10, *temp, sum = 7;
temp = &count;
*temp = 32;
temp = ∑
*temp = count;
sum = *temp * 4;
printf("count = %d, *temp = %d, sum = %d\n",
count,*temp, sum );
}
Output :
25
Latihan 4 : Program Aritmatika Polinom
26
Latihan 5 : Program Bilangan Kompleks
5. Kesimpulan
27
pada media penyimpanan komputer agar dapat digunakan secara
efisien.
b. Algoritma adalah serangkaian langkah untuk memecahkan masalah
dengan cara yang sistematis dan logis untuk menyelesaikan masalah.
c. Jika kita membuat program dengan data yang batasnya sudah kita
ketahui, kita dapat menggunakan array (tipe data statis), tetapi jika kita
tidak mengetahui batasan datanya, kita dapat menggunakan pointer (tipe
data dinamis).
d. Untuk sekumpulan data dengan tipe data yang berlainan, namun
merupakan satu-kesatuan, kita dapat menggunakan struktur untuk
merepresentasikannya.
6. Listing Program
Latihan 1 : Terdapat array dengan tipe char yang berisi {'p', 'e', 'n', 's', 'i', 't'},
baliklah array tersebut menjadi tisnep.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char nama[]={'p','e','n','s','i','t'};
char balik[6];
int jumlah;
jumlah=strlen(nama);
int i;
int k=0;
for(i=jumlah-1;i>=0;i--)
{
balik[k]=nama[i];
k++;
}
Output :
28
Latihan 2 : Terdapat dua buah matrik dengan ordo n yang direpresentasikan
dengan array dimensi dua, lakukan operasi penjumlahan, pengurangan dan
perkalian.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 2
29
jumlah=0;
}
}
}
}
int main()
{
int M1[N][N]={1,2,3,4};
int M2[N][N]={5,6,7,8};
int hasil[N][N];
char lagi='y';
int i,j,pilih;
do
{
printf("\n");
printf("1.Penjumlahan\n");
printf("2.Pengurangan\n");
printf("3.Perkalian\n");
printf("Pilihan : ");
scanf("%d",&pilih);
switch(pilih)
{
case 1:tambah(M1,M2,hasil);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",hasil[i]
[j]);
}
printf("\n");
}
break;
case 2:kurang(M1,M2,hasil);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",hasil[i]
[j]);
}
printf("\n");
}
break;
case 3:kali(M1,M2,hasil);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",hasil[i]
30
[j]);
}
printf("\n");
}
break;
default:printf("\nTerimakasih
telah menggunakan program");
exit(1);
}
printf("Lagi? (y/t)");
fflush(stdin);
scanf("%c",&lagi);
}
while(lagi=='y');
printf("\nTerimakasih telah Menggunakan
Program");
}
Output :
main()
{
int count = 10, *temp, sum = 7;
temp = &count;
*temp = 32;
31
temp = ∑
*temp = count;
sum = *temp * 4;
printf("count = %d, *temp = %d, sum = %d\n",
count,*temp, sum );
}
Output :
int main()
{
cout<<"------------------ Aritmatika Polinomial
------------------"<<endl;
cout<<"Diketahui : "<<endl;
cout<<"P1 = 6x8 + 8x7 + 5x5 + x3 + 15"<<endl;
cout<<"P2 = 3x9 + 4x7 + 3x4 + 2x3 + 2x2 +
10"<<endl;
cout<<"P3 = X2 + 5"<<endl;
cout<<endl<<"==================================
===================="<<endl;
int P1[11]={15,0,0,1,0,5,0,8,6,0,0};
int P2[11]={10,0,2,2,3,0,0,4,0,3,0};
int P3[11]={5,0,1,0,0,0,0,0,0,0,0};
int bil[12]={0,0,0,0,0,0,0,0,0,0,0,0};
int a, b;
32
for (int a=11;a>=0;a--)
{
if (bil[a]==0)
{
cout<<"";
}
else
{
if (a>1)
cout<<""<<bil[a]<<"x"<<a<<" + ";
else if(a==1)
cout<<""<<bil[a]<<"x"<<" + ";
else if (a>=0) cout<<""<<bil[a];
}
}
int bil2[12]={0,0,0,0,0,0,0,0,0,0,0,0};
cout<<"\n\n- Perkalian \n";
cout<<"P1 * P3 = (6x8 + 8x7 + 5x5 + x3 + 15) *
(X2 +5)"<<endl;
cout<<"P1 * P3 = ";
for(int a=0;a<10;a++)
33
{
for(int b=0;b<4;b++)
{
bil2[a+b] += *(P1+a) * *(P3+b);
}
}
for(int a=11;a>=0;a--)
{
if (bil2[a]==0)
{
cout<<" ";
}
else
{
if(a>1)
{
cout<<""<<bil2[a]<<"x"<<a<<"+";
}
else if (a==1)
{
cout<<""<<bil2[a]<<"x"<<" + ";
}
else if (a==0)
{
cout<<""<<bil2[a];
}
}
}
int bil3[12]={0,0,0,0,0,0,0,0,0,0,0,0};
cout<<"\n\n- Turunan \n";
cout<<"P2' = (3x9 + 4x7 + 3x4 + 2x3 + 2x2 +
10)'"<<endl;
cout<<"P2' = ";
for(int a=0;a<10;a++)
{
bil3[a] = P2[a+1]* (a+1);
}
34
}
return 0;
}
Output :
struct bil
{
int riil[2];
int imajiner[2];
}
kompleks;
35
void penjumlahan (bil &kompleks)
{
int r,i;
r = kompleks.riil[0] + kompleks.riil[1];
i = kompleks.imajiner[0]+ kompleks.imajiner[1];
36
"<<"("<<d<<"+"<<d2<<")"<<"]"<<"i" << endl;
}
int main()
{
cout<<"----------------------------------------
-------";
cout<<"\n PROGRAM OPERASI PEMBACA DUA BILANGAN
KOMPLEKS" << endl;
cout<<"----------------------------------------
-------";
bil kompleks;
for (int a=0;a<2;a++)
{
cout <<"\nIsi Bilangan Kompleks Ke- "<<
a+1 << endl;
cout <<"1). Bilangan Riil : ";cin >>
kompleks.riil[a];
cout <<"2). Bilangan Imajiner :
";cin >> kompleks.imajiner[a];
}
cout<<endl<<endl;
penjumlahan(kompleks);
pengurangan(kompleks);
perkalian(kompleks);
pembagian(kompleks);
}
Output :
37
38