LAPORAN PRAKTIKUM
ALGORITMA DAN STRUKTUR DATA
Disusun
untuk Memenuhi Mata kuliah Praktikum Algoritma dan Struktur Data
Yang
Dibimbing oleh Bapak I Made Wirawan, S.T.,M.T.
Oleh
:
Ike
Sella Kusumalasari
110533430631
S1
PTI off E
UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
S1 PENDIDIKAN TEKNIK INFORMATIKA
September 2012
MODUL 1
ARRAY,STRUCT,POINTER
A.
TUJUAN
a. Mahasiswa
memahami apakah yang dimaksud dengan struktur data
b. Mahasiswa
memahami apakah yang dimaksud dengan algoritma.
c. Mahasiswa
mampu Mengingat kembali array, struktur, pointer dalam bahasa C.
B.
DASAR
TEORI
Struktur data adalah sebuah skema organisasi, seperti
struktur dan array, yang diterapkan pada data sehingga data dapat
diinterprestasikan dan sehingga operasioperasi spesifik dapat dilaksanakan pada
data tersebut.
1. 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
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
2. Pointer
Variabel pointer juga harus didelarasikan terlebih dahulu
sebelum mulai
digunakan
bentuk umum cara mendeklarasikan variabel pointer adalah:
Tipe
*nama_var_pointer
|
Tipe
variabel sama dengan tipe yang dikenal oleh variabel biasa, misalnya
int,
float, char dan sebagainya. Nama variabel pointer juga mengikuti
ketentuan nama
variabel biasa. Yang membedakan variabel pointer dengan variabel biasa dengan
menggunakan tanda asterisk (*) didepan nama varibe pada waktu deklarasi.
3. Struct
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
pendefinisian tipe struktur adalah sebagai berikut:
struct data_tanggal
{
int tanggal;
int bulan;
int tahun;
};
C.
LATIHAN
PRAKTIKUM
Latihan
Praktikum 1
a.
Script
#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.
Printscreen
Hasil
Latihan
Praktikum 2
a.
Script
#include <stdio.h>
#include <iostream.h>
main () {
int y;
int 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.
Printscreen
Hasil
Latihan
praktikum 3
a.
Script
#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.
Printscreen
Hasil
Latihan
praktikum 4
a.
Script
#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.
Printscreen
Hasil
Latihan
praktikum 5
a.
Script
#include <stdio.h>
#include <math.h>
struct polar {
double r;
double
alpha;
};
struct kartesian {
double x;
double y;
};
int main()
{
struct
polar p1;
struct
kartesian k1;
printf("Masukkan
nilai r untuk koordinat polar : ");
scanf("%lf",&p1.r);
printf("Masukkan
nilai alpha untuk koordinat polar :");
scanf("%lf",&p1.alpha);
k1.x =
p1.r * cos(p1.alpha);
k1.y =
p1.r * sin(p1.alpha);
printf("Nilai
koordinat kartesian untuk koordinat polar r= %2.21f alpha= %2.2lf adalah:
\n",p1.r,p1.alpha);
printf("x
= %2.2lf y = %2.2lf", k1.x,k1.y);
};
b.
Printscreen
Hasil
Latihan
praktikum 6
a.
Script
#include <stdio.h>
#include <string.h>
struct dtnilai
{
char
nrp[10];
char
nama[20];
double
nilai;
};
struct dtnilai data[10];
int j=0;
int 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;
}
}
int 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.
Printscreen
Hasil
D.
TUGAS
RUMAH
Tugas
Rumah 1
a.
Script
#include<iostream.h>
typedef struct node {
int coef;
char var;
char exp;
int
power;
struct
node *next;
} list_node;
typedef list_node *list;
list cons(int a, char b, char c, int d, list L) {
list_node
*insert;
insert=new(struct
node);
insert->coef=a;
insert->var=b;
insert->exp=c;
insert->power=d;
insert->next=L;
return(insert);
}
list sort(list L) {
struct
node *p=NULL, *q=NULL;
list
R=NULL, K=NULL;
p=L->next;
R=cons(L->coef,L->var,L->exp,L->power,NULL);
while(p!=NULL)
{
if(p->power>=R->power)
{
R=cons(p->coef,p->var,p->exp,p->power,R);
}
else {
q=R;
start:
if(q->next==NULL)
goto second;
else
if(q->next->power>p->power) {
q=q->next;
goto
start;
}
else {
goto
second;
}
second:
if(q->next==NULL)
{
K=cons(p->coef,p->var,p->exp,p->power,NULL);
q->next=K;
K->next=NULL;
}
else {
K=cons(p->coef,p->var,p->exp,p->power,NULL);
K->next=q->next;
q->next=K;
}
}
p=p->next;
}
return R;
}
list search(list L) {
struct
node *p=NULL,*q=NULL;
p=L;
while(p!=NULL)
{
q=p->next;
while(q!=NULL)
{
if(q->power==p->power)
{
p->coef=p->coef+q->coef;
p->next=p->next->next;
}
q=q->next;
}
p=p->next;
}
L=sort(L);
return L;
}
list read() {
list
L=NULL; int a; char b; char c; int d;
cin>>a>>b>>c>>d;
L =
cons(a,b,c,d,L);
L->next=NULL;
while(cin.peek()!='\n')
{
cin>>a>>b>>c>>d;
L =
cons(a,b,c,d,L);
}
return L;
}
list add(list A, list B, int c) {
list p,
q, R=NULL;
p=A;
q=B;
int x=c;
if(x==1
|| x==2) {
while((p!=NULL)
|| (q!=NULL)) {
if(p==NULL)
{
if(x==1)
R=cons(q->coef,q->var,q->exp,q->power,R);
if(x==2)
R=cons(q->coef-2*q->coef,q->var,q->exp,q->power,R);
q=q->next;
}
else if(q==NULL) {
R=cons(p->coef,p->var,p->exp,p->power,R);
p=p->next;
}
else if(q->power>p->power) {
if(x==1)
R=cons(q->coef,q->var,q->exp,q->power,R);
if(x==2)
R=cons(q->coef-2*q->coef,q->var,q->exp,q->power,R);
q=q->next;
}
else if(p->power>q->power) {
R=cons(p->coef,p->var,p->exp,p->power,R);
p=p->next;
}
else {
if(p->power==q->power)
{
if(x==1)
R=cons(p->coef+q->coef,q->var,q->exp,q->power,R);
if(x==2)
R=cons(p->coef-q->coef,q->var,q->exp,q->power,R);
q=q->next;p=p->next;
}
}
}
} else
if(x==3) {
while(q!=NULL)
{
p=A;
while(p!=NULL)
{
R=cons(p->coef*q->coef,q->var,q->exp,q->power+p->power,R);
p=p->next;
}
q=q->next;
}
} else
if(x==4) {
while(p!=NULL)
{
R=cons(p->coef*p->power,p->var,p->exp,p->power-1,R);
p=p->next;
}
}
return R;
}
void print(list P) {
list L =
P;
if
(L==NULL)
cout<<"0";
else {
if(L)
{
if(L->coef!=0)
cout<<L->coef<<L->var<<L->exp<<L->power<<"
";
L=L->next;
}
while(L!=NULL)
{
if(L->coef>0)
cout<<'+'<<L->coef<<L->var<<L->exp<<L->power<<"
";
else
if(L->coef<0)
cout<<L->coef<<L->var<<L->exp<<L->power<<"
";
L=L->next;
}
}
}
int main() {
list
L,M,Result;
int x;
cout<<"Pilih
Operasi : "<<endl;
cout<<"1.
Penjumlahan"<<endl;
cout<<"2.
Pengurangan"<<endl;
cout<<"3.
Perkalian"<<endl;
cout<<"4.
Turunan"<<endl;
cout<<"Pilihan
: ";
cin>>x;
if(x==1
|| x==2 || x==3) {
cout<<"Polynomial
Pertama : ";
L=read();
cout<<"Polynomial
Kedua : ";
M=read();
L =
sort(L);
cout<<"Polynomial
Pertama Adalah : "<<'\t';
print(L);
cout<<endl;
M =
sort(M);
cout<<"Polynomial
Kedua Adalah : "<<'\t';
print(M);
cout<<endl;
if(x==1)
cout<<"Hasil
Penjumlahan : "<<'\t';
else
if(x==2)
cout<<"Hasil
Pengurangan : "<<'\t';
else
if(x==3)
cout<<"Hasil
Perkalian : "<<'\t';
} else
if(x==4) {
cout<<"Polynomial
: ";
L=read();
cout<<endl;
L =
sort(L);
cout<<"Polynomial
Yang Diturunkan : "<<'\t';
print(L);
cout<<endl;
cout<<"Hasil
Turunan :
"<<'\t';
}
Result=add(L,M,x);
Result=sort(Result);
Result=search(Result);
print(Result);
cout<<endl;
}
b.
Printscreen
Hasil
Tugas
Rumah 2
a.
Script
#include <iostream.h>
typedef struct bilangan {
int riil;
int imj;
} kmp;
typedef kmp *biil;
void proses(biil bil, int a) {
int r,i;
int x=a;
if(x==1)
{
r=bil[0].riil+bil[1].riil;
i=bil[0].imj+bil[1].imj;
cout<<"Hasil
Penjumlahan Dua Bilangan Komlpeks : "<<r<<" +
"<<i<<"i";
} else
if(x==2) {
r=bil[0].riil-bil[1].riil;
i=bil[0].imj-bil[1].imj;
cout<<"Hasil
Pengurangan Dua Bilangan Komlpeks : "<<r<<" +
"<<i<<"i";
} else
if(x==3) {
r=bil[0].riil*bil[1].riil-bil[0].imj*bil[1].imj;
i=bil[0].riil*bil[1].imj+bil[0].imj*bil[1].riil;
cout<<"Hasil
Perkalian Dua Bilangan Komlpeks : "<<r<<" +
"<<i<<"i";
} else
if(x==4) {
r=((bil[0].riil*bil[1].riil+bil[0].imj-bil[1].imj)/(bil[0].riil*2+bil[0].imj*2))+((bil[0].imj*bil[1].riil-bil[0].riil*bil[1].imj)/(bil[1].riil*2+bil[1].imj*2));
i=bil[0].imj-bil[1].imj;
cout<<"Hasil
Pembagian Dua Bilangan Komlpeks : "<<r<<" +
"<<i<<"i";
}
}
int main() {
bilangan
bil[2];
int x;
cout<<"1.
Penjumlahan"<<endl;
cout<<"2.
Pengurangan"<<endl;
cout<<"3.
Perkalian"<<endl;
cout<<"4.
Pembagian"<<endl;
cout<<"----------------------------------------------------------------------------------------------------"<<endl;
cout<<"Pilihan
: ";
cin>>x;
cout<<"----------------------------------------------------------------------------------------------------"<<endl;
for(int
a=0;a<2;a++) {
cout<<"Masukkan
Bilangan Kompleks yamg ke "<<a+1<<endl;
cout<<"Bilangan
Riil : ";
cin>>bil[a].riil;
cout<<"Bilangan
Imajiner : ";
cin>>bil[a].imj;
}
cout<<"----------------------------------------------------------------------------------------------------"<<endl;
for(int
a=0;a<2;a++) {
cout<<"Bilangan
Kompleks yang ke "<<a+1<<" :
"<<bil[a].riil<<" +
"<<bil[a].imj<<"i\n";
}
cout<<"----------------------------------------------------------------------------------------------------"<<endl;
proses(bil,x);
}
b.
Printscreen
Hasil
E.
KESIMPULAN
Struktur data adalah
sebuah skema organisasi, seperti struktur dan array, yang diterapkan pada data
sehingga data dapat diinterprestasikan dan sehingga operasioperasi spesifik
dapat dilaksanakan pada data tersebut. Dalam modul ini menggunakan array,
pointer dan struct.
F.
DAFTAR
RUJUKAN
- Modul BAB 1 Struct, Array, dan Pointer (Modul
Praktikum Algoritma dan Struktur Data
-
Modul 6
Array(Modul Praktikum Bahasa Pemrograman Terstruktur(S1 PTI- UM)
- Modul 8 Pointer(Modul Praktikum Bahasa
Pemrograman Terstruktur(S1 PTI- UM)
- Modul 9 Struct (Modul Praktikum
Bahasa Pemrograman Terstruktur(S1 PTI- UM)
Tidak ada komentar:
Posting Komentar