Anda di halaman 1dari 17

LAPORAN PRAKTIKUM I

STRUCT, ARRAY DAN POINTER

Disusun untuk Memenuhi Matakuliah Praktikum Algoritma dan Struktur Data


Dibimbing oleh Bapak Wahyu Nur Hidayat, S.Pd., M.Pd.

Oleh :

Dendi Yudha Kusuma (170533628625)

S1 PTI’17 OFF A

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA
FEBRUARI 2018
A. LATIHAN PRAKTIKUM
1. Percobaan 1
a. Kode Program
#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]);
}

b. Output Program

c. Analisis
Program ini dibuat untuk menampilkan bilangan Fibonacci yang diawali
dengan assigmnmet angka pertama dan kedua bernilai 1 yang menggunakan
perintah array, Kemudian terdapat perintah perulangan yang didalamnya
dimasukkan lagi assignment angka 2, dilanjutkan dengan perintah perulangan
dengan syarat penambahan angka 3 yang berurutan hingga maksimalnya 10
angka berurutan sesuai dengan header (#define MAX 10).
2. Percobaan 2
a. Kode Program
#include <stdio.h>

main()
{
int y, x = 87;
int *px;

px = &x;
y = *px;

printf("Alamat x = %p\n", &x);


printf("Isi px = %p\n", px);
printf("Isi x = %d\n", x);
printf("Nilai yang ditunjuk oleh px = %d\n", *px);
printf("Nilai y = %d\n", y);
}

b. Output Program

c. Analisis
program diatas digunakan untuk mengubah isi variable melalui pointer.
Menggunakan header file stdio untuk mendeklarasikan penginputan dan baik
secara manual atau sistematis. Menggunakan pointer untuk membaca suatu
alamat yang sudah ditentukan dalam syntax. Mengaplikasikan penggunaan
pointer untuk mempersingkat script. Dan mempermudah penulisan script.
3. Percobaan 3
a. Kode Program
#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);


}

b. Output Program

c. Analisis
Program awalnya menampilkan nilai d dengan assignment 54.5,
kemudian dilanjutkan assignment kedua dengan penambahan nilai pada d
dengan nilai 10. Selanjutnya nilai yang telah ditambahkan tersebut
ditampilkan pada program.

4. Percobaan 4
a. Kode Program
#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));
}

b. Output Program

c. Analisis
Program ini menggunakan script pointer untuk menampilkan bilangan
fiboacciyang diawali dengan pointer assignment angka pertama dan kedua
adalah 1. Dilanjutkan dengan assignment kedua bernilai 2, setelah itu
ditambahkan script perulangan untuk angka berikutnya hingga
maksimal(#define MAX 10). Bedanya sama program array pertama adalah
jumlah angka yang ditampilkan pada pointer sejumlah 10 buah.

5. Percobaan 5
a. Kode Program
#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.2lf1alpha =%2.2lf adalah:\n",pl.r,pl.alpha);
printf("x = %2.2lf y = %2.2lf",kl.x,kl.y);
}

b. Output Program

c. Analisis
Program ini digunakan untuk menghitung nilai konversi dari koordinat
polar ke koordinat kartesian, program ini juga dibuat tanpa assignment nilai.
Kita perlu memasukkan nilai yang ingin dikonversikan, untuk nilai koordinat
x maka dikalikan dengan cos (kl.x = pl.r * cos(pl.alpha)), sedangkan untuk
nilai koordinatnya dikalikan dengan sin (kl.y = pl.r * sin(pl.alpha)).
6. Percobaan 6
a. Kode Program
#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].nilai);
}
}

int main()
{
tambah_data();
tampil();
}
b. Output Program

c. Analisis
Program diatas dimaksudkan sebagai simulasi penggunaan struct dalam
array. Array yang digunakan adalah array dimensi dan menggunakan
perulangan while untuk mengisi data dan akan ditampilkan berdasarkan
koordinat dari array.

B. TUGAS RUMAH
1. Tugas Rumah 1
a. Kode Program
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
using namespace std;
void penjumlahan(int a[],int b[],int c, int e)
{
int k,l;
if(c<=e)
l=e;
else
l=c;
if(l==c)
{
k=e+1;
for( ;k<=1;k++)
{
b[k]=0;
}
}
else if(l==e)
{
k=c+1;
for( ;k<=1;k++)
{
a[k]=0;
}
}
int z;
for(z=0;z<=1;z++)
{
a[z]=a[z]+b[z];
}
for(z=0;z<=1;z++)
if(z!=1)
{
cout<<a[z]<<"x^"<<z<<"+";
}
else
{
cout<<a[z]<<"x^"<<z;
}
cout<<endl;
}
void pengurangan(int a[],int b[],int e,int c)
{
int k,l;
if(c<=e)
l=e;
else
l=c;
if(l==c)
{
k=e+1;
for( ;k<=1;k++)
{
b[k]=0;
}
}
else if(l==e)
{
k=c+1;
for( ;k<=l;k++)
{
a[k]=0;
}
}
int z;
for(z=0;z<=1;z++)
{
a[z]=a[z]-b[z];
}
for(z=0;z<=l;z++)
if(z!=l)
{
cout<<a[z]<<"x^"<<z<<"+";
}
else
{
cout<<a[z]<<"x^"<<z;
}
cout<<endl;
}
void perkalian(int a[],int b[],int c,int e)
{
int f,g,h[21],i=0,j[21];
for(f=0;f<=c;f++)
for(g=0;g<=e;g++)
{
h[i]=b[g]*a[f];
j[i]=f+g;
i++;
}
for(f=0;f<i;f++)
{
if(f!=i-1)
{
cout<<h[f]<<"x^"<<j[f]<<"+";
}
else
{
cout<<h[f]<<"x^"<<j[f];
}
}
cout<<endl;
}
void turunan(int a[],int b[],int c,int e)
{
int f;
for(f=0;f<=c;f++)
{
a[f]=a[f+1]*(f+1);
}
cout<<"turunan polinom pertama adalah : "<<" ";
for(f=0;f<c;f++)
{
if(f!=c-1)
{
cout<<a[f]<<"x^"<<f<<"+";
}
else
{
cout<<a[f]<<"x^"<<f;
}
for(f=0;f<=e;f++)
b[f]=b[f+1]*(f+1);
}
cout<<endl<<endl<<"turunan polinom kedua adalah :
"<<" ";
for(f=0;f<e;f++)
{
if(f!=e-1)
{
cout<<b[f]<<"x^"<<f<<"+";
}
else
{
cout<<b[f]<<"x^"<<f;
}
}
cout<<endl;
}
void salah()
{
cout<<"maaf manu tidak tersedia, pilih menu
yang ada"<<endl;
}
int main()
{
char jawab;
do
{
int a[21],b[21],c,d,e,f;
cout<<"\nmasukkan derajat tertinggipolinom pertama :
";
cin>>c;
for(d=0;d<=c;d++)
{
cout<<"\nkoofisien x pangkat
"<<d<<" : ";
cin>>a[d];
cout<<endl;
}
cout<<"\nmasukkan derajat tertinggi
polinom kedua : ";
cin>>e;
for(d=0;d<=e;d++)
{
cout<<"\nkoofisien x pangkat
"<<d<<" : ";
cin>>b[d];
cout<<endl;
}
cout<<"1. PENJUMLAHAN \n2. PENGURANGAN
\n3. PERKALIAN \n4. TURUNAN"<<endl;
cout<<"\nmasukkan kode operasi : ";
cin>>f;
switch(f)
{
case 1:
{
penjumlahan(a,b,e,c);
break;
}
case 2:
{
pengurangan(a,b,e,c);
break;
}
case 3:
{
perkalian(a,b,c,e);
break;
}
case 4:
{
turunan(a,b,c,e);
break;
}
default:
{
salah();
break;
}
}
printf("\napakah anda ingin mengulang ?
[y/t]");
scanf("%s",&jawab);
}
while ((jawab=='Y'|| jawab=='y'));
}

b. Output Program
c. Analisis
Program diatas menampilkan aritmatika polinon, awal dari program ini kita
menentukan derajat tertinggi pertama atau bisa dibilang ini adalah sebagai
batas nilai inputan. Setelah itu menentukan derajat tertinggi kedua dan sama
seperti proses yang pertama. Kemudian akan memilih operasi penghitungan
yang diinginkan. Lalu tampil hasilnya

2. Tugas Rumah 2
a. Kode Program
#include<stdio.h>
#include<windows.h>
struct
{
int a,b,c,d;
}bil;
void perkalian()
{
printf("\n\n\t\tPERKALIAN BILANGAN KOMPLEKS \n");
int hasil1 = (bil.a*bil.c)-(bil.b*bil.d);
int hasil2 = (bil.a*bil.d)+(bil.b*bil.c);
printf("\nhasil perkalian dari (%d+%di)*(%d+%di) = (%d.%d-
%d.%d)+(%d.%d+%d.%d)i adalah
%d+%di",bil.a,bil.b,bil.c,bil.d,bil.a,bil.c,bil.b,bil.d,bil.a,b
il.d,bil.b,bil.c,hasil1,hasil2);
}
void pembagian()
{
printf("\n\n\t\tPEMBAGIAN BILANGAN KOMPLEKS\n");
int hasil1 = ((bil.a*bil.c)+(bil.b*bil.d));
int hasil2 = (bil.a*bil.a)+(bil.b*bil.b);
int hasil3 = ((bil.b*bil.c)-(bil.a*bil.d));
int hasil4 = (bil.c*bil.c)+(bil.d*bil.d);

printf("\nhasil pembagian dari


(%d+%di)/(%d+%di)=[(%d.%d+%d.%d)/(%d.%d+%d.%d)]+[(%d.%d-
%d.%d)/(%d.%d+%d.%d+%d.%d)i adalah (%d/%d)+(%d/%d)i",
bil.a,bil.b,bil.c,bil.d,bil.a,bil.c,bil.b,bil.d,bil.a,bil.a,bil
.b,bil.b,bil.b,bil.c,bil.a,bil.d,bil.c,bil.c,bil.d,bil.d,hasil1
,hasil2,hasil3,hasil4);
}
void penjumlahan()
{
printf("\n\n\t\tPENJUMLAHAN BILANGAN KOMPLEKS\n");
int hasil1 = (bil.a+bil.c);
int hasil2 = (bil.b+bil.d);
printf("\nhasil penjumlahan dari
(%d+%di)+(%d+%di)=(%d+%d)+(%d+%d)i adalah %d
+%di",bil.a,bil.b,bil.c,bil.d,bil.a,bil.c,bil.b,bil.d,hasil1,
asil2);
}
void pengurangan()
{
printf("\n\n\t\tPENGURANGAN BILANGAN KOMPLEKS\n");
int hasil1 = (bil.a-bil.c);
int hasil2 = (bil.b-bil.d);
printf("\nhasil pengurangan dari (%d+%di)-(%d+%di)=
(%d-%d)+(%d-%d)i adalah
%d+%di",bil.a,bil.b,bil.c,bil.d,bil.a,bil.c,bil.b,bil.d,hasil
,hasil2);
}
int main()
{
char jawab;
do
{
char pilihan;
system("cls");
printf("+---------------------------------
+");
printf("\n Input bilangan kompleks ");
printf("\n+---------------------------------
+");
printf("\n\nmasukkan bilangan A : ");
scanf("%d",&bil.a);
printf("masukkan bilangan B : ");
scanf("%d",&bil.b);
printf("masukkan bilangan C : ");
scanf("%d",&bil.c);
printf("masukkan bilangan D : ");
scanf("%d",&bil.d);
printf("\nMENU PILIHAN : ");
printf("\n1. perkalian \n2. pembagian \n3.
penjumlahan \n4. pengurangan\n");
printf("\nmasukkan pilihan anda : ");
scanf("%s",&pilihan);

if(pilihan=='1')
perkalian();
else if(pilihan=='2')
pembagian();
else if(pilihan=='3')
penjumlahan();
else if(pilihan=='4')
pengurangan();
else
printf("maaf menu yang anda pilih tidak
tersedia");
printf("\nApakah anda ingin mengulang ?
[y/t]");
scanf("%s",&jawab);
}
while ((jawab=='Y' || jawab=='y'));
}
b. Output Program

c. Analisis
Program ini digunakan untuk membaca dua bilangan kompleks dan
diimplementasikan pada setiap operasi program. Program yang menggunakan
fungsi void yang nantinnya dipanggil oleh penggunanya. Untuk pemanggilan
void digunakan fungsi if dan else. Penggunakan variabel int dikarenakan
data tersebut adalah bernilai angka.
C. KESIMPULAN
1. Struktur data adalah sebuah skema organisasi. Seperti stuktur dan array, yang
diterapkan pada data sehingga data dapat diimprestasikan dan sehingga operasi-
operasi spesifik dapat dilaksanakan pada data tersebut. Dalam modul ini
menggunakan array, pointer dan struct
2. apabila kita membuat program dengan data yang sudah kita ketahui batasnya.
Maka kita bisa menggunakan array (tipe data statis), namun apabila data kita
belum kita ketahui batasnya, kita bisa menggunakan pointer (tipe data dinamis).
3. Untuk sekumpulan data dengan tipe data yang berlainan, namun merupakan satu
kesatuan, kita dapat menggunakan stuktur untuk mempresentasikannya.
4. Saat membuat stuktur data seperti daftar, deret dan percabangan, perlu memiliki
pointer untuk membantu pengelola bagai mana stuktur dapat diimplementasikan
dan dikendalikan.
5. Ada 2 operator pointer yang dikenal secara luas, yaitu operator & dan operator *.

Anda mungkin juga menyukai