Anda di halaman 1dari 31

LAPORAN PRAKTIKUM I

ALGORITMA DAN STRUKTUR DATA


STRUCT, ARRAY, POINTER
Disusun untuk Memenuhi Matakuliah Praktikum Algoritma dan Struktur Data
Dibimbing oleh Bpk. Aji Prasetya Wibawa, S.T., M.M.T.,Ph. D.

Oleh:

Niki Priarsa Viki Yonanda

(140533602803)

Setiawan

(140533603042)
S1 PTI 2014 offering E

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
S1 PENDIDIKAN TEKNIK INFORMATIKA
JANUARI 2015

STRUCT, ARRAY, POINTER


A. TUJUAN

1. Memahami dengan baik dengan materi perkuliahan yang disebut Struktur


Data
2. Mengetahui dan mengerti tentang pengertian dan penggunaan dari
Algoritma
3. Review kembali tentang materi Mata Kuliah Semester 1 Dasar
Pemrograman Komputer yang berhubungan dengan array, struktur, dan
pointer pada Bahasa C
4. Dapat menyelesaikan dan memecahkan problematika sehari-hari dengan
Algoritma dan Struktur Data
B. DASAR TEORI
1. Pengertian Struktur Data
Pengintreprestasian sebuah skema organisasi seperti struktur dan array
yang diimplementasikan pada data sehingga operasi-operasi spesifik dapat
dilaksanakan pada data tersebut
2. Pengenalan Algoritma
Suatu serangkaian langkah dasar perhitungan yang mengganti masukan
dari beberapa fungsi matematika menjadi keluaran

Perkalian
Input : integer positif n,w
Output : n X w
Algoritma perkalian :
Contoh kasus : a = 250, b = 16
Metode 1 : 250 * 16 = 250 + (250 * 15)
= 500 + (250 * 14)
=
= 4000 + (250 * 0)

Metode 2 :

250
16
1500
25

3. Pengenalan Array
Array adalah sekumpulan data homogen yang terorganisir dengan
ukuran atau jumlah elemen maksimumnya telah diketahui awal. Array
secara umum disimpan dalam memori komputer secara tertata dan teratur.
Deklasi array dapat didefinisikan sebagai berikut :
Int N[5]; artinya variabel N adalah sekumpulan data dengan jumlah
5 buah bilangan yang mempunyai integer. Pengaksesan langsung dapat
dilaksanakan pada operasi terhadap elemen di array. Dalam pengambilan
nilai di masing masing posisi elemen dapat dilakukan secara langsung dan
disimpan tanpa melewati posisi-posisi lain. Tipe operasi mempunyai 2
tipe, yaitu :
1. Operasi terhadap satu elemen/posisi dari array
2. Operasi terhadap array sebagai kesuluruhan
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

Penyimpanan dan Pengambilan Nilai


Dalam proses penyimpanan dan pengambilan sebuah atau beberapa

elemen pada posisi tertentu pada array, beberapa bahasa pemrogram


mungkin bisa berbeda dan menyediakan sintaks tertentu.
Contoh :
S[5] = 99, dapat kita artikan bahwa nilai 78 akan disimpan di posisi 5
dalam array S
W = S[5], berarti nilai elemen dari array S diambil pada posisi ke 5

Keunggulan dan Kelemahan Array

Dalam pengaksesan secara acak, array sangat cocok untuk dipakai


karena sembarang elemen di array dapat diakses secara langsung
Penelusuran yang mudah ke neighbourhood elements
Penyimpanan yang efisien hanya jika nilai nilainya independen dan
terjaga
r Didalam array kita tidak bisa memasukkan elemen yang tidak sejenis,
dengan kata lain elemen yang kita miliki harus homogen
r Bahasa pemrograman rata-rata menggunakan static array yang sulit
diubah ukurannya saat eksekusi. Apabila terjadi operasi penambahan
dan pengurangan terus-menerus, maka akan berdampak tidak efisien
dalam penggunaan memori, membuang banyak waktu, dan static
array tidak dimungkinkan dalam aplikasi
4. Pengenalan Pointer
Pointer atau variabel penunjuk yaitu suatu variabel yang menunjuk ke
variabel lain, dalam hal ini pointer mempunyai isi alamat memori dari
variabel lain tersebut. Alamat ini merupakan lokasi dari obyek lain
(biasanya variabel lain) di dalam memori. Jika sebuah variabel berisi
alamat dari variabel lain, variabel pertama dikatakan menunjuk ke variabel
kedua. (Modul 8 Praktikum Dasar Pemrograman Komputer, 2014).
Contoh Pendeklarasian dalam 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 Integer Pointer 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).
(http://lecturer.eepis-its.edu/~entin/Struktur%20Data%20&
%20Algoritma/buku/Data%20Structure%20-%20Bab%201.pdf

diunduh

tanggal 21 Januari 2015)


5. 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.

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.

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;
C. LATIHAN PRAKTIKUM
Percobaan 1
Algoritma dan Struktur Data
Nama Program

Penggunaan

array

pada

bilangan

fibonacci
Bahasa Pemrogramam

: C++

Compiler

: MinGW Developer Studio

Script 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]);
}

Output Program :

Algoritma :
1. Algoritma Penggunaan array pada bilangan fibonacci(10)
2. Pre : 10 adalah nilai yang akan digunakan untuk menghitung deret bilangan
Fibonacci
3. Post : Menampilkan hasil perhitungan 10 bilangan awal deret fibonacci
4. Mendeklarasikan angka pertama dan kedua adalah 1 menggunakan array satu
dimensi dengan ketentuan :
fibo[1]=1;
fibo[2]=1;

5. Menggunakan perulangan for untuk menghitung deret selanjutnya dengan


ketentuan for(i=3;i<=MAX;i++)
6.

Jika

syarat

terpenuhi

maka

dilakukan

perhitungan

dengan

rumus

fibo[i]=fibo[i-2]+fibo[i-1];

7. Menampilkan hasil perhitungan


printf("%d Bilangan Fibonaci Pertama adalah : \n",MAX);
8.

Menggunakan perulangan dengan syarat for (i=1;i<=MAX;i++)

9.

Jika syarat terpenuhi maka akan menampilkan hasil perhitungan dengan


tampilan printf("%d ", fibo[i]);

10. Selesai Penggunaan Array pada Bilangan Fibonacci


Deskripsi :
Program di atas tidak dapat diexecute menggunakan minGW apabila
menggunakan void, maka diganti dengan int. Program ini menggunakan
header <stdio.h> untuk menggunakan fungsi printf dan scanf. Define MAX

untuk menentukan konstanta. Program ini menggunakan tipe data interger.


Program ini menggunakan fungsi perulangan for untuk melakukan perhitungan
dan juga menggunakan array 1 dimensi untuk menampilkan hasil perhitungannya.
Percobaan 2
Algoritma dan Struktur Data
Nama Program

: Program mengubah isi variabel melalui

pointer

Bahasa Pemrogramam

: C++

Compiler

: MinGW Developer Studio

Script program

#include <stdio.h>
int 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
}

Output Program :

= %d\n",y);

Algoritma :
1. Algoritma Program mengubah isi variabel melalui pointer(87)
2. Pre : 87 adalah isi dari variable
3. Post : Menampilkan perubahan isi variable melalui pointer
4. Membaca file header
5. Mendeklarasikan isi variable
int y, x = 87;

6. Menentukan letak alamat px dan y , dengan ketentuan:


px=&x;
y= *px;

7. Mencetak hasil
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);

8. Selesai Program mengubah isi variabel melalui pointer.


Deskripsi :
Program ini menggunakan file header <stdio.h> untuk mendeklarasikan
penginputan data baik secara manual atau sistematis, menggunakan printf.
Program ini menggunakan tipe data interger. Program ini juga menggunakan
fungsi pointer untuk membaca suatu alamat yang sudah ditentukan dalam syntax.
Tujuan

menggunaan

pointer

adalah

untuk

mempermudah penulisan script.


Percobaan 3
10

mempersingkat

script

dan

Algoritma dan Struktur Data


Nama Program

: Program mengakses dan mengubah isi

suatu variabel
pointer.

Bahasa Pemrogramam

: C++

Compiler

: MinGW Developer Studio

Script program

#include <stdio.h>
int 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);
}

Output Program :

Algoritma :
1. Algoritma Program mengakses dan mengubah isi suatu
variabel pointer(54.5)

2. Pre : 54.5 adalah isi dari variable

11

3. Post : Mengakses dan mengubah isi suatu variabel


pointer

4. Membaca file header


5. Mendeklarasikan variable dan isi variabel
float d = 54.5f, *pd;

6. Menentukan letak alamat dan nilai yang diinginkan


pd = &d;
*pd += 10;

7. Mencetak hasil
printf("Isi d sekarang = %g\n", d);

8. Selesai Program mengakses dan mengubah isi suatu


variabel pointer

Deskripsi :
Program ini menggunakan file header <stdio.h> untuk mendeklarasikan
penginputan data baik secara manual atau sistematis, menggunakan printf.
Program ini menggunakan tipe data interger.Program ini menggunakan pointer
untuk menghitung nilai d.menggunakan rumus *pd+10 yang nantinya pada proses
hasil akhir akan ditambahkan 10 sehingga nilai langsung berubah sesuai hasil
perhitungan menggunakan rumus yang dipakai. Tujuan pengaplikasikan fungsi
pointer dalam script adalah untuk mempermudah dan mempersingkat script,
dalam satu baris dapat mempersingkat penggunaan rumus dan penentuan lokasi
pemanggilan fungsi.
Percobaan 4
Algoritma dan Struktur Data
Nama Program

Penggunaan

pointer

fibonacci.

Bahasa Pemrogramam

: C++

Compiler

: MinGW Developer Studio

Script program

#include <stdio.h>
#include <stdlib.h>
#define MAX 10

12

untuk

bilangan

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));
}

Output Program :

Algortima :
1. Algoritma

Penggunaan

pointer

untuk

bilangan

fibonacci(10)

2. Pre : 10 adalah nilai yang akan digunakan untuk menghitung deret bilangan
Fibonacci
3. Post : Menampilkan hasil perhitungan 10 bilangan awal deret fibonacci
4. Membaca file header.

13

5. Mendeklarasikan variabel
6. Membaca fungsi fibo dengan penggunaan pointer didalamnya.
7. Mendeklarasikan angka pertama dan kedua adalah 1 menggunakan pointer
dengan ketentuan :
fibo = (int *) malloc(MAX * sizeof(int));
*(fibo+1)= 1;
*(fibo+2)= 1;

8. Menggunakan perulangan for untuk menghitung deret selanjutnya


dengan ketentuan for (i=3;i<=MAX;i++)
9. Jika syarat telah terpenuhi, maka deret selanjutnya akan dihitung
dengan rumus *(fibo+i)=(*(fibo+i-2)+*(fibo+i-1));
11. Menampilkan hasil perhitungan
printf("%d Bilangan Fibonaci Pertama adalah : \n",
MAX);
12.

Menggunakan perulangan dengan syarat for (i=1;i<=MAX;i++)

13.

Jika syarat terpenuhi maka akan menampilkan hasil perhitungan dengan


tampilan printf("%d-", *(fibo+i));

14. Selesai Penggunaan pointer untuk bilangan fibonacci


Percobaan 5
Algoritma dan Struktur Data
Nama Program

Penggunaan

struktur

koordinat polar

ke koordinat catersian.
Bahasa Pemrogramam

: C++

Compiler

: MinGW Developer Studio

Script program

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

14

pada

konversi

struct kartesian
{
double x;
double y;
};
int main()
{
struct polar pl;
struct kartesiaan 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:\n",pl.r,pl.alpha);
printf("x = %2.2lf y = %2.2lf",kl.x,kl.y);
}

Output Program :

Algoritma :

15

1. Algoritma Penggunaan struktur pada konversi koordinat


polar ke koordinat catersian(koordinat)

2. Pre : koordinat 0
3. Post

Menunjukkan

penggunaan

struktur

pada

konversi koordinat polar ke koordinat catersian

4. Membaca file header.


5. Membaca struct polar, kartesian.
struct polar
{
double r;
double alpha;
};
struct kartesian
{
double x;
double y;
};

6. Pemanggilan strcut polar dan artesian.


struct polar pl;
struct kartesiaan kl;

7. Masukkan nilai r untuk polar.


printf("Masukkan nilai r untuk koordinat polar

: ");

scanf("%lf",&pl.r);

8. Masukkan nilai alpha untuk kartesian.


printf("Masukkan nilai alpha untuk koordinat polar : ");
scanf("%lf",&pl.alpha);

9. Mengkonversi koordinat dengan menggunakan rumus :


kl.x=pl.r * cos(pl.alpha);
kl.y=pl.r * sin(pl.alpha);

10. Mencetak Hasil :


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);

16

11. Selesai Penggunaan struktur pada konversi koordinat


polar ke koordinat catersian.

Deskirpsi :
Program di atas tidak dapat diexecute menggunakan minGW apabila
menggunakan void, maka diganti dengan int. Program ini menggunakan
header <stdio.h> untuk menggunakan fungsi printf dan scanf. Program ini
menggunakan header <Math.h> untuk pengoperasian matematika. Program ini
menggunakan tipe data interger. Program ini menggunakan fungsi perulangan for
untuk melakukan perhitungan dan juga menggunakan struct untuk menampilkan
hasil perhitungannya.
Percobaan 6
Algoritma dan Struktur Data
Nama Program

: Program struktur dalam array.

Bahasa Pemrogramam

: C++

Compiler

: MinGW Developer Studio

Script 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

17

: ");

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();
}

Output Program :

18

Algoritma :
1. Algoritma Program struktur dalam array
2. Membaca file header
#include <stdio.h>
#include <string.h>

3. Membaca srtuct data nilai


struct dtnilai
{
char nrp[10];
char nama[20];
double nilai;
};

4. Mendeklarasikan variable
int j=0;
int i;

5. Membaca kumpulan fungsi.


void tambah_data()
void tampil()

6. Masukkan data mahasiswa.


printf("NRP

: ");

scanf("%s",&data[j].nrp);
printf("Nama : ");
scanf("%s",&data[j].nama);
printf("Nilai Test : ");
scanf("%lf",&data[j].nilai);
7.

Perulangan while digunakan untuk melakukan pengulangan apabila


kita ingin memasukkan data lagi.

19

while(1)
8.

Menampilkan menu pilihan percabangan yang digunakan untuk melakukan


perulangan
if((strcmp(jawab,"Y")==0)||(strcmp(jawab,"y")==0))
{
j++;continue;
}
else if ((strcmp(jawab,"T")==0)||(strcmp(jawab,"t")==0))
break;
}

9. Menampilkan Hasil
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);
}

10. Selesai Program struktur dalam array


Deskripsi :
Program ini menggunakn file header <stdio> yang digunakan untuk fungsi
printf dan scanf. Program ini menggunakan file header string untuk
penggunaan strcmp pada syntaxnya. Program ini menggunakan struct , kumpulan
fungsi. Program ini menggunakan perulangan while untuk menginputkan kembali
data yang dinginkan. Program ini juga menggunakan perulangan for untuk
menampilkan hasil. Menggunakan break agar program tidak langsung berhenti.
D. TUGAS RUMAH
Tugas Praktikum 1
Algoritma dan Struktur Data
Nama Program

: Program aritmatika polinom.

Bahasa Pemrogramam

: C++

Compiler

: MinGW Developer Studio

Script program

#include<iostream>
#include<conio.h>
#include<stdio.h>

20

using namespace std;


void jumlah(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<=l;k++)
{
b[k]=0;
}
}
else if(l==e)
{
k=c+1;
for( ;k<=l;k++)
{
a[k]=0;
}
}
int z;
for(z=0;z<=l;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 kurang(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<=l;k++)
{
b[k]=0;
}
}

21

else if(l==e)
{
k=c+1;
for( ;k<=l;k++)
{
a[k]=0;
}
}
int z;
for(z=0;z<=l;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 kali(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 pertama : "<<" ";
for(f=0;f<c;f++)
{
if(f!=c-1)
{

22

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 kedua : "<<" ";
for(f=0;f<e;f++)
{
if(f!=e-1)
{
cout<<b[f]<<"x"<<f<<"+";
}
else
{
cout<<b[f]<<"x"<<f;
}
}
cout<<endl;

}
void eror()
{
cout<<"Kode salah, silahkan coba kembali!"<<endl;
}
int main()
{
char hasil;
do
{
int a[21],b[21],c,d,e,f;
cout<<"\t\t\tOperasi Hitung Bilangan Polinom\n\n";
cout<<"Masukkan Polinom Pertama"<<endl;
cout<<"Masukkan Derajat Tertinggi Polinom Pertama :
";
cin>>c;
cout<<"Masukkan

Koofisien

Mulai

Dari

Pangkat

0"<<endl;
for(d=0;d<=c;d++)
{
cout<<"\nKoofisien x Pangkat "<<d<<" : ";
cin>>a[d];
cout<<endl;
}
cout<<"Masukkan Polinom Kedua"<<endl;
cout<<"Masukkan Derajat Tertinggi Polinom Kedua: ";
cin>>e;
cout<<"Masukkan Koofisien x Mulai dari x Pangkat 0"<<endl;
for(d=0;d<=e;d++)
{
cout<<"\nKoofisien x Pangkat "<<d<<" : ";
cin>>b[d];
cout<<endl;

23

}
cout<<"Pilih Operasi Yang Diinginkan : \n";
cout<<"1. PENJUMLAHAN
\n2.
PENGURANGAN
\n3.
\n4. TURUNAN"<<endl;
cout<<"Masukkan Kode Operasi : ";
cin>>f;
switch(f)
{
case 1:
{
cout<<"\n";
jumlah(a,b,e,c);
break;
}
case 2:
{

}
case 3:
{

}
case 4:
{

}
default:
{
}
}

cout<<"\n";
kurang(a,b,e,c);
break;

cout<<"\n";
kali(a,b,c,e);
break;

cout<<"\n";
turunan(a,b,c,e);
break;

eror();
break;

printf("\nCoba Lagi (Y/T)? ");


scanf("%s",&hasil);

}
while ((hasil=='Y' || hasil=='y'));

Output Program :

24

PERKALIAN

Algoritma :

Mulai

Membaca file header.


#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;

Membaca 5 fungsi operasi perhitungan.


void jumlah(int a[],int b[],int c,int e)
void
void
void
void

kurang(int a[],int b[],int e,int c)


kali(int a[],int b[],int c,int e)
turunan(int a[],int b[],int c,int e)
eror()

Masukkan nilai derajat tertinggi polinom pertama.


cout<<"\t\t\tOperasi Hitung Bilangan Polinom\n\n";
cout<<"Masukkan Polinom Pertama"<<endl;
cout<<"Masukkan Derajat Tertinggi Polinom Pertama : ";
cin>>c;

Memasukkan koofisien x sebanyak nilai derajat tertinggi pertama yang


dimasukkan
cout<<"Masukkan Koofisien x Mulai Dari x Pangkat 0"<<endl;
for(d=0;d<=c;d++)
{
cout<<"\nKoofisien x Pangkat "<<d<<" : ";
cin>>a[d];
cout<<endl;
}

Masukkan nilai derajat tertinggi polinom kedua

25

cout<<"Masukkan Polinom Kedua"<<endl;


cout<<"Masukkan Derajat Tertinggi Polinom Kedua: ";
cin>>e;

Memasukkan koofisien x sebanyak nilai derajat tertinggi kedua yang di


masukkan
cout<<"Masukkan Koofisien x Mulai dari x Pangkat 0"<<endl;
for(d=0;d<=e;d++)
{
cout<<"\nKoofisien x Pangkat "<<d<<" : ";
cin>>b[d];
cout<<endl;
}

Pilihan menu proses perhitungan


cout<<"Pilih Operasi Yang Diinginkan : \n";
cout<<"1. PENJUMLAHAN

\n2.

PENGURANGAN

\n3.

PERKALIAN

\n4. TURUNAN"<<endl;
cout<<"Masukkan Kode Operasi : ";
cin>>f;

Pilihan kembali ke perhitungan jika pilih y makan akan kembali ke awal


memulai program jika pilih t maka program akan diakhiri.
while ((hasil=='Y' || hasil=='y'));
printf("THE END");

10 Cetak hasil.
11 Selesai
Deskripsi :
Program ini berfungsi untuk operasi perhitungan aritmatika polinom.
Proses yang dijalankan dalam script ini adalah, inputan derajat polinom pertama ,
maksudnya adalah diperintahkan untuk mengisi batas maksimal inputan nilai
untuk proses aritmatika polinom . kemudian masukkan inputan ke dua untuk
memudahkan terjadinya operasi matematika. Setelah selesai, pilih beberapa menu
yang disediakan untuk mengetahui hasil dari operasi aritmatika yang dibuat.
Menggunakan beberpa fungsi untuk penguraian aspek yang ingin dimunculkan
saat program dijalankan.
Program ini menggunakan header <iostream>, <conio.h>, dan <stdio.h>.
Menggunakan header iostream karena program melibatkan fungsi cin dan

26

cout. Menggunakan header conio karena program melibatkan fung getch();.


Menggunakan header stdio karena program melibatkan printf dan scanf. Program
ini menggunakan tipe data int dan char. Program ini menggunakan fungsi,
perulangan, percabangan, dan juga array.
Tugas Praktikum 2
Algoritma dan Struktur Data
Nama Program

: Program bilangan kompleks

Bahasa Pemrogramam

: C++

Compiler

: MinGW Developer Studio

Script program

#include<stdio.h>
#include<windows.h>
#include <math.h>
struct
{

int a,b,c,d;

}bil;
void kali()
{
printf("\t\t

HASIL PERKALIAN BILANGAN KOMPLEKS\n\n");

int angka1 = (bil.a * bil.c) - (bil.b * bil.d);


int angka2 = (bil.a *bil.d) + (bil.b * bil.c);
printf(
"Hasil perkalian dari \n(%d + %di) * (%d + %di) = (%d.%d %d.%d)+(%d.%d

%d.%d)i

\n\t\t

%d

%di",bil.a,bil.b,bil.c,bil.d,bil.a,bil.c,bil.b,bil.d,bil.a,bil.d,
bil.b,bil.c,angka1, angka2);
}
void bagi()
{
printf("\t\t
HASIL PEMBAGIAN BILANGAN KOMPLEKS\n\n");
int
int
int
int

angka1
angka2
angka3
angka4

=
=
=
=

printf("Hasil

((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);
pembagian

dari

\n(%d

%di)/(%d

%di)

[(%d.%d + %d.%d)/(%d.%d + %d.%d)]+[(%d.%d - %d.%d)/(%d.%d + %d.


%d)]i

\n\t\t

(%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,angk
a1,angka2,angka3,angka4);

27

}
void jumlah()
{
printf("\t\t

HASIL PENJUMLAHAN BILANGAN KOMPLEKS\n\n");

int angka1 = (bil.a + bil.c);


int angka2 = (bil.b + bil.d);
printf("Hasil penjumlahan dari \n(%d + %di) + (%d + %di) =
(%d

%d)+(%d

%d)i

\n\t\t

%d

%di",bil.a,bil.b,bil.c,bil.d,bil.a,bil.c,bil.b,bil.d,angka1,angka
2);
}
void kurang()
{
printf("\t\t

HASIL PENGURANGAN BILANGAN KOMPLEKS\n\n");

int angka1 = (bil.a - bil.c);


int angka2 = (bil.b - bil.d);
printf("Hasil pengurangan dari \n(%d + %di) - (%d + %di) =
(%d

%d)+(%d

%d)i

\n\t\t

%d

%di",bil.a,bil.b,bil.c,bil.d,bil.a,bil.c,bil.b,bil.d,angka1,
angka2);
}
int main()
{
char hasil;
do
{
char menu;
system("cls");
printf("\t\t\tOperasi Bilangan Kompleks\n\n");
printf("Masukkan 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("\nPilih Operasi Yang Diinginkan\n");
printf("\n1. Perkalian \n2. Pembagian \n3. Penjumlahan
\n4. Pengurangan\n");
printf("\nPilih Menu : ");
scanf("%s",&menu);
if(menu=='1')
kali();
else if(menu=='2')
bagi();
else if(menu=='3')
jumlah();
else if(menu=='4')
kurang();

28

else
printf("Error, try again!!");
printf("\nCoba Lagi (Y/T)? ");
scanf("%s",&hasil);
}
while ((hasil=='Y' || hasil=='y'));
printf("\n\nEXIT!");
}

Output Program :

Algoritma :
1. Mulai
2. Membaca file header
#include<stdio.h>
#include<windows.h>
#include <math.h>

3. Membaca struct.
struct
{
int a,b,c,d;
}bil;

4. Membaca 4 fungsi pengoperasian matematika.


void kali()
void bagi()
void jumlah()
void kurang()

5. Masukan bilangan A,B,C dan D


printf("\t\t\tOperasi Bilangan Kompleks\n\n");
printf("Masukkan bilangan A : ");
scanf("%d",&bil.a);

29

printf("Masukkan bilangan B : ");


scanf("%d",&bil.b);
printf("Masukkan bilangan C : ");
scanf("%d",&bil.c);
printf("Masukkan bilangan D : ");
scanf("%d",&bil.d);

6. Masuk kemenu pilihan


if(menu=='1')
kali();
else if(menu=='2')
bagi();
else if(menu=='3')
jumlah();
else if(menu=='4')
kurang();

7. Untuk mengulang, tekan Y/y untuk iya m T/t untuk tidak.


else
printf("Error, try again!!");
printf("\nCoba Lagi (Y/T)? ");
scanf("%s",&hasil);

8. Cetak hasil
9. Selesai
Deskripsi :
Program diatas digunakan untuk mengetahui apakah suatu kata
tersebut merupaka kata palindrom. Palindrom yaitu kata yg apabila di
balik memiliki susunan kata yang sama. Program diatas menggunakan
putz yang fungsinya sama sepertinya printf. Sebagai pemanggil
sebuah kalimat atau kata yang dimunculkan dalam program ketika
berjalan sebagai acuan. Menggunakan strcmp untuk memanggil
kembali sebuah kata yang telah diinputkan sebelumnya.
E. KESIMPULAN

Skema yang terorganisir yang dapat diimplementasikan pada data


sehingga interprestasi data dapat dilaksanakan bersama dengan operasi
operasi yang spesifik disebut Struktur Data

30

Dalam pembuatan program terlebih dahulu kita harus mengetahui batasan


dari data tersebut, apabila kita sudah mengetahui maka kita menggunakan
array, jika belum mengetahui batasannya kita bisa menggunakan pointer

Data data dengan sifat heterogen dan merupakan satu kesatuan,


sekumpulan data tersebut dapat dipresentasikan menggunakan struktur

Pointer diperlukan untuk membuat sebuah struktur data seperti daftar,


deret dan percabangan guna mengorganisir implementasi dan kendali
struktur

Pointer menggunakan 2 operator yaitu operator & dan operator *

F. DAFTAR PUSTAKA

http://lecturer.eepis-its.edu/~entin/Struktur%20Data%20&

%20Algoritma/buku/Data%20Structure%20-%20Bab%201.pdf
http://elearning.upnjatim.ac.id/courses/ISI3002/document/Struktur_Data_

Ruby/Struktur_Data_Pertemuan_1.ppt?cidReq=ISI3002
http://elib.unikom.ac.id/download.php?id=55604
http://www2.ukdw.ac.id/kuliah/si/erickblog/Materi12_B10E/AlgoritmaPe
mrograman.pdf

31

Anda mungkin juga menyukai