laporan ASD STRUCT POINTER ARRAY CODE BL

(1)

LAPORAN PRAKTIKUM I

STRUCT, ARRAY, POINTER

Disusun untuk Memenuhi Matakuliah Praktikum Algoritma dan Struktur Data Dibimbing oleh Bpk. Utomo Pujianto

Oleh:

Ananda Putri Syaviri

130533608243

S1 PTI’13 OFF B

UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK

JURUSAN TEKNIK ELEKTRO

PRODI PENDIDIKAN TEKNIK INFORMATIKA Februari 2014


(2)

a) Tujuan

Setelah mempelajari bab ini diharapkan mahasiswa akan mampu : 1. Mahasiswa memahami apakah yang dimaksud dengan struktur data. 2. Mahasiswa memahami apakah yang dimaksud dengan algoritma. 3. Mengingat kembali array, struktur, pointer dalam bahasa C. b) Dasar Teori

- Pengenalan Struktur Data

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.

- Pengenalan Algoritma

Algoritma adalah barisan langkah-langkah perhitungan dasar yang mengubah masukan (dari beberapa fungsi matematika) menjadi keluaran. Contoh :

Perkalian

Input : integer positif a , b Output : a X b

Algoritma perkalian :

Contoh kasus : a = 365, b = 24

Metode 1 : 365 * 24 = 365 + (365 * 23) = 730 + (365 * 22)

…..

= 8760 + (365 * 0) = 8760

Metode 2 : 3 6 5 2 4

1 4 6 0 7 3 0 8 7 6 0


(3)

- 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. - Penyimpanan dan Pengambilan Nilai

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. - Keunggulan dan Kelemahan Array

Keunggulan array adalah sebagai berikut:

1. Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara langsung tanpa melalui elemen-elemen lain.

2. Jika berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemen-elemen tetangga, baik elemen pendahulu atau elemen penerus.

3. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga, maka penggunaan penyimpanannya sangat efisien.

- Kelemahan array. Array mempunyai fleksibilitas rendah, karena array mempunyai batasan


(4)

1. Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemen adalah

karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain.

2. Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis.

Tidak efisien dalam penggunaan memori Menyiakan banyak waktu komputasi

Pada suatu aplikasi, representasi statis tidak dimungkinkan.

- Pointer

Misalnya kita ingin membuat beberapa penunjuk ke blok penyimpan yang berisi integer. Deklarasi pada 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 didepanny 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));


(5)

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

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


(6)

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

Percobaan 1

Algoritma dan Struktur Data

Nama Program : Penggunaan array pada bilangan fibonacci

Bahasa Pemrogramam : C++

Compiler : Code Blocks

Script program :

#include <stdio.h> #define MAX 10 int fibo[MAX]; void main () {

int i; fibo[1]=1; fibo[2]=1;


(7)

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

Script yang benar :

#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. Mulai.

2. Membaca file header. 3. Membaca fungsi fibo. 4. Membaca fungsi utama. 5. Membaca tipe data integer i.

6. Menggunakan rumus : (disini menggunakan array satu dimensi)

fibo[1]=1; fibo[2]=1;

7. Menggunakan perulangan for dengan rumus :

for (i=3;i<=MAX;i++)

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

8. Cetak hasil.

printf("%d Bilangan Fibonaci Pertama adalah : \n",MAX); for (i=1;i<=MAX;i++)

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

9. Selesai. Deskripsi:


(8)

Program di atas jika dijalankan pada code blocks tidak dapat diexecute apabila menggunakan “void” , maka diganti dengan “int”. kemudian program diatas tetap dapat diexecute namun hasil program terdapat kesalahan. Dari 10 bilangan fibonaci yang diminta , yang keluar hanya 9. Mengapa? Karena penggunaan rumus yang kurang tepat, yaitu “ for (i=1;i<=MAX;i++)”, yang pada awalnya tidak menggunakan operator = setelah “<’. Hal ini

sangat berpengaruh pada hasil program. Jika tidak menggunakan operator “=” maka hasil yang akan muncul adalah urutan bilangan fibonaci yang kurang dari 10. Menggunakan “%d” untuk tipe data integer. Penggunaan file header stdio untuk penggunaan printf. Define MAX untuk penentu maksimal keluarnya bilangan fibonaci yang ditentukan.

Percobaan 2

Algoritma dan Struktur Data

Nama Program : Program mengubah isi variabel melalui pointer

Bahasa Pemrogramam : C++

Compiler : Code Blocks

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

}


(9)

Algoritma : 1. Start.

2. Membaca file header. 3. Membaca fungdi utama.

4. Menggunakan tipe data integer y,x dengan nilai tetap=87. 5. Menggunakan pointer pada tipe data.

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

px=&x; y= *px;

7. Cetak 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. Deskripsi :

Dalam program diatas tidak ada kesalahan pada syntax. Menggunakan file header stdio untuk mendeklarasikan penginputan data baik secara manual atau sistematis, menggunakan “printf”. Menggunakan pointer untuk membaca suatu alamat yang sudah ditentukan dalam syntax. Mengaplikasikan penggunaan pointer untuk mempersingkat script. Dan mempermudah penulisan script.

Percobaan 3


(10)

Nama Program : Program mengakses dan mengubah isi suatu variabel pointer.

Bahasa Pemrogramam : C++

Compiler : Code Blocks

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

Output Program :

Algoritma : 1. Start

2. Membaca file header. 3. Membaca fungsi utama.

4. Membaca tipe data yang digunakan dengan ketentuan angka yang ditetapkan. 5. Membaca penggunaan pointer pada tipe data.

float d = 54.5f, *pd;

6. Menentukan letak alamat dan nilai yang diinginkan.


(11)

*pd += 10;

7. Cetak hasil.

printf("Isi d sekarang = %g\n", d);

8. Selesai. Deskripsi :

Pada script program diatas tidak ada kesalahan. 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 rumus yang dipakai. Mengaplikasikan fungsi pointer dalam script sehingga 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 untuk bilangan fibonacci.

Bahasa Pemrogramam : C++

Compiler : Code Blocks.

Script program :

#include <stdio.h> #include <stdlib.h> #define MAX 10 int *fibo; void main () {

int i;

fibo = (int *) malloc(MAX * sizeof(int)); *(fibo+1)= 1;

*(fibo+2)= 1;

for (i=3;i<=MAX;i++)


(12)

printf("%d Bilangan Fibonaci Pertama adalah : \n", MAX); for (i=1;i<MAX;i++)

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

Script program yang benar:

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

Output Program :

Algoritma : 1. Start.

2. Membaca file header.

3. Membaca fungsi fibo dengan penggunaan pointer didalamnya. 4. Membaca fungsi utama.

5. Membaca tipe data integer i. 6. Menggunakan rumus.

fibo = (int *) malloc(MAX * sizeof(int)); *(fibo+1)= 1;

*(fibo+2)= 1;


(13)

*(fibo+i)=(*(fibo+i-2)+*(fibo+i-1));

7. Cetak hasil.

printf("%d Bilangan Fibonaci Pertama adalah : \n", MAX); for (i=1;i<=MAX;i++)

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

8. Selesai. Deskripsi :

Program diatas memiliki beberapa kesalahan, yaitu penggunaan void yang seharusnya menggunakan int. Penggunaan rumus yang kurang tepat. Hampir sama dengan percobaan 1, namun dalam percobaan ini , menggunakan pointer dalam proses execute program tersebut. Penggunaan pointer tersebut memberikan variasi terhadap penulisan script untuk menghasilkan sebuah program. penggunaan sizeof dan malloc dalam script ini yang memiliki definisi fungsi tersendiri.

Percobaan 5

Algoritma dan Struktur Data

Nama Program : Penggunaan struktur pada konversi koordinat polar ke

koordinat catersian.

Bahasa Pemrogramam : C++

Compiler : Code Blocks.

Script program :

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

struct kartesian { double x; double y; };


(14)

{

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.2lf alpha= %2.2lf adalah: \n", pl.r,pl.alpha);

printf("x= %2.2lf y= %2.2lf", kl.x,kl.y); }

Script program yang benar:

#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(


(15)

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

Output Program :

Algoritma : 1. Start.

2. Membaca file header.

3. Membaca struct polar, kartesian. 4. Membaca fungsi utama.

5. Pemanggilan strcut polar dank artesian. 6. Masukkan nilai r untuk polar.

7. Masukkan nilai alpha untuk kartesian. 8. Penggunaan rumus .

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

9. Cetak 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);

10. Selesai. Deskripsi :

Program diatas memiliki kesalahan dalam penulisan syntax. Program tersebu mendeteksi 6 error. Enam error bukan berarti terdapat 6 titik kesalahan , tergantung pada penulisan atau peletakkan setiap script. Yang pertama, tentang penulisan fungsi utama yang seharusnya menggunakan int bukan void. Penulisan syntax yang perlu diperhatikan. Untuk baris 28-29 nnti ada kesalahan pada syntax yang pertama. Dan seharusnya tidak menggunakan enter saat penulisan rumus. Kesalahan yang paling


(16)

fatal terletak pada penulisan pada baris 28-29. Seharusnya tidak di enter, hal tersebut menimbulka error pada script sehingga tidak bias di excute. Penggunaan file header math.h untuk pengoperasian matematika.

Percobaan 6

Algoritma dan Struktur Data

Nama Program : Program struktur dalam array.

Bahasa Pemrogramam : C++

Compiler : Code Blocks.

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 : "); 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)) {


(17)

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

}

void main() {

tambah_data(); tampil(); }

Script program yang benar:

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


(18)

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 :

Algoritma : 1. Start.

2. Membaca file header.

3. Membaca srtuct datanila dengan beberapa tipe data yang mendukung jalannya progam ini.


(19)

4. Membaca kumpulan fungsi. 5. Masukkan data mahasiswa.

int i;

printf("Data Mahasiswa yang telah diinputkan : \n"); printf("NRP\tNama\tNilai\n");

6. Cetak hasil.

for (i=0;i<=j;i++)

{ printf("%s\t%s\t

%6.2f\n",data[i].nrp,data[i].nama,data[i].nilai);

7. Jika ingin mengulang untuk menginputkan data maka “y” jika tidak “t”. 8. Cetak hasil.

9. Selesai. Deskripsi :

Program diatas hanya memiliki penulisan syntax yaitu penulisan void main pada baris 45. Maka untuk pembenaran dan proses kirim segera dimulai. Program diatas menggunakan struct , kumpulan fungsi. Menggunakan perulangan while untuk menginputkan kembali data yang dinginkan. Menggunakan break agar program tidak langsung berhenti. Menggunakan file header string untuk penggunaan strcmp pada syntax.

Tugas Praktikum 1 Algoritma dan Struktur Data

Nama Program : Program aritmatika polinom.

Bahasa Pemrogramam : C++

Compiler : Code Blocks.

Script program :

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


(20)

{

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


(21)

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

}

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<<"+"; }


(22)

{

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


(23)

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 eror() {

cout<<"Kode salah, silahkan coba kembali!"<<endl; }

int main() {

char hasil; do


(24)

{

int a[21],b[21],c,d,e,f;

cout<<"Masukkan Polinom Pertama,tekan sembarang untuk next"<<endl; getch();

cout<<"Masukkan Derajat Tertinggi Polinom Pertama: "; cin>>c;

cout<<"Masukkan Koofisien x Mulai Dari x Pangkat 0, tekan sembarang untuk next"<<endl;

getch();

for(d=0;d<=c;d++) {

cout<<"\nKoofisien x Pangkat "<<d<<" : "; cin>>a[d];

cout<<endl; }

cout<<"Masukkan Polinom Kedua, tekan Sembarang untuk next"<<endl; getch();

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

cout<<"\nMasukkan Koofisien x Mulai dari x Pangkat 0, Tekan Sembarang untuk next"<<endl;

getch();

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<<"Masukkan Kode Operasi : "; cin>>f;

switch(f) {

case 1: {


(25)

jumlah(a,b,e,c); break;

} case 2: {

kurang(a,b,e,c); break;

} case 3: {

kali(a,b,c,e); break;

} case 4: {

turunan(a,b,c,e); break;

} default:

{

eror(); break; }

}

printf("\n Coba Lagi ? [y/t] "); scanf("%s",&hasil);

}

while ((hasil=='Y' || hasil=='y')); printf("THE END");

}


(26)

Algoritma : 1. Start

2. Membaca file header.

3. Membaca 5 fungsi yang digunakan untuk perhitungan. 4. Membaca fungsi utama.

5. Masukkan nilai derajat tertinggi polinom pertama.

6. Memasukkan koofisien x sebanyak nilai derajat tertinggi pertama yang dimasukkan

7. Masukkan nilai derajat tertinggi polinom kedua

8. Memasukkan koofisien x sebanyak nilai derajat tertinggi kedua yang di masukkan 9. Pilihan menu proses perhitungan

a. 1= proses perhitungan penjumlahan . b. 2= proses perhitungan pengurangan . c. 3= proses perhitungan perkalian . d. 4= proses perhitungan turunan 10. Cetak hasil.

11. Pilihan kembali ke perhitungan jika pilih y makan akan kembali ke awal memulai program jika pilih t maka program akan diakhiri.

12. Cetak hasil. 13. Selesai

Deskripsi :

Program diatas 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


(27)

proses aritmatika polinom . kemudian masukkan inputan ke dua untuk memudahkan terjadinya operasi matematika. Setelah selesai , pilih beberapa emnu yang disediakan untuk mengetahui hasil dari operasi aritmatika yang dibuat. Menggunakan beberpa fungsi untuk penguraian aspek yang ingin dimunculkan saat program dijalankan.

Tugas Praktikum 2 Algoritma dan Struktur Data

Nama Program : Program bilangan kompleks

Bahasa Pemrogramam : C++

Compiler : Code Blocks.

Script program :

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

{

int a,b,c,d; }bil;

void kali() {

printf("\tPERKALIAN BILANGAN KOMPLEKS \t"); int angka1 = (bil.a * bil.c) - (bil.b * bil.d); int angka2 = (bil.a *bil.d) + (bil.b * bil.c); printf(

"Hasil 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,bil.d,bil.b,bil.c,a ngka1, angka2);

}

void bagi() {


(28)

int angka1 = ((bil.a*bil.c)+(bil.b*bil.d)); int angka2 = (bil.a*bil.a)+(bil.b*bil.b); int angka3 = ((bil.b*bil.c)-(bil.a*bil.d)); int angka4 = (bil.c*bil.c)+(bil.d*bil.d);

printf("Hasil pembagian dari (%d + %di)/(%d + %di) =[(%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,angka1,angka2,angka3,angka4); }

void jumlah() {

printf("\tPENJUMLAHAN BILANGAN KOMPLEKS \t"); int angka1 = (bil.a + bil.c);

int angka2 = (bil.b + bil.d); printf(

"Hasil 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,angka1,angka2); }

void kurang() {

printf("\tPENGURANGAN BILANGAN KOMPLEKS \t"); int angka1 = (bil.a - bil.c);

int angka2 = (bil.b - bil.d); printf(

"Hasil 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,angka1, angka2);

}

int main() {


(29)

do {

char menu; system("cls");

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("\tPilihan : ");

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

printf("Error, try again!!"); printf("\n Coba Lagi ? [y/t] "); scanf("%s",&hasil);

}

while ((hasil=='Y' || hasil=='y')); printf("\n\n THX. EXIT!");

}


(30)

Algoritma : 1. Start.

2. Membaca file header. 3. Membaca struct.

4. Membaca 4 fungsi pengoperasian matematika. 5. Membaca fungsi utama.

6. Masukan bilangan A,B,C dan D 7. Masuk kemenu pilihan

a.) Jika pilih menu 1 maka akan pemanggilan rumus perkalian.

b.) Jika pilih menu 2 maka akan pemanggilan rumus pembagian. c.) Jika pilih menu 3 maka akan pemanggilan rumus penjumlahan. d.) Jika pilih menu 4 maka akan pemanggilan rumus pengurangan.

8. Cetak hasil.

9. Untuk mengulang, tekan Y/y untuk iya m T/t untuk tidak. 10. Cetak hasil.

11. Selesai.

Deskripsi :

Program diatas berfungsi untuk memudahkan pengguna dalam menyelesaikan permasalahan hitungan bilangan kompleks . menggunakan file header iostream dalam code blocks harus disertai dengan using namespace std, jika tidak maka tidak akan bisa di execute. Menggunakan beberapa fungsi dan menggunakan struct (kumpulan tipe data). Menggunakan file header math.h yang diperuntukkan untuk operasi matematika dalam penyusunan script sebuah program.

Tugas Rumah 1

Algoritma dan Struktur Data

Nama Program : Program palindrom


(31)

Compiler : Code Blocks. Script program :

#include <iostream> #include <string.h> #include <stdio.h> int main ()

{

char kata[25]; char balik[25];

int panjang, p, k, hasil; printf("Masukkan Kata :"); scanf("%s",&kata);

p=0;

panjang=strlen(kata); for(k=panjang-1;k>=0;k--){ balik[p]=kata[k];

p++; }

balik[p]='\0';

hasil=strcmp(balik,kata); if(hasil==0)

puts("Kata diatas Palindrom"); else

puts("Kata diatas bukan Palindrom"); }


(32)

Algoritma : 1. Start.

2. Membaca file header.

3. Membaca fungsi yang digunakan serta fungs utamanya. 4. Masukan kata.

5. Proses pengecekan kata. 6. Cetak hasil.

7. Benar maka “kata diatas merupakan palindrom”. Jika salah maka “kata diatas bukan merupakan palindrom”.

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.

KESIMPULAN

1. Struktur data adalah sebuah skema organisasi yang diterapkan pada data sehingga data dapat diinterprestasikan dan sehingga operasi-operasi spesifik dapat dilaksanakan pada data tersebut.

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 struktur untuk merepresentasikannya.

4. Keunggulan array adalah sebagai berikut:

Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara langsung tanpa melalui elemen-elemen lain. Jika berada di suatu lokasi elemen, maka sangat


(33)

mudah menelusuri ke elemen-elementetangga, baik elemen pendahulu atau elemen penerus. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga, maka penggunaan penyimpanannya sangat efisien

5. Kelemahan array:

Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemen adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain . Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis.

-Tidak efisien dalam penggunaan memori. -Menyiakan banyak waktu komputasi.

-Pada suatu aplikasi, representasi statis tidak dimungkinkan

6. Saat membuat struktur data seperti daftar, deret dan percabangan, perlu memiliki pointer untuk membantu mengelola bagaimana struktur dapat diimplementasikan dan dikendalikan. 7. Kegunaan pointer yang utama adalah untuk menyimpan alamat memori dari sebuah variabel (data type atau object dari class), menyimpan alamat dari sebuah fungsi (function pointer) dan dapat berfungsi untuk mengirimkan “Parameter yang berupa variabel” ke dalam fungsi, artinya nilai variabel bisa diubah di dalam fungsi serta dapat membuat variabel dinamis. 8. Ada 2 operator pointer yang dikenal secara luas, yaitu operator & dan operator *.

DAFTAR RUJUKAN

1. Tim Asisten Dosen. 2014. Modul 1 Struct, Array, dan Pointer. Malang: Unversitas Negeri Malang.

2. http://christ-13.blogspot.com/2012/07/pointer.html


(1)

int angka1 = ((bil.a*bil.c)+(bil.b*bil.d)); int angka2 = (bil.a*bil.a)+(bil.b*bil.b); int angka3 = ((bil.b*bil.c)-(bil.a*bil.d)); int angka4 = (bil.c*bil.c)+(bil.d*bil.d);

printf("Hasil pembagian dari (%d + %di)/(%d + %di) =[(%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,angka1,angka2,angka3,angka4); }

void jumlah() {

printf("\tPENJUMLAHAN BILANGAN KOMPLEKS \t");

int angka1 = (bil.a + bil.c); int angka2 = (bil.b + bil.d); printf(

"Hasil 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,angka1,angka2); }

void kurang() {

printf("\tPENGURANGAN BILANGAN KOMPLEKS \t");

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

"Hasil 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,angka1, angka2);

}

int main() {


(2)

system("cls");

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("\tPilihan : ");

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

printf("Error, try again!!");

printf("\n Coba Lagi ? [y/t] "); scanf("%s",&hasil);

}

while ((hasil=='Y' || hasil=='y')); printf("\n\n THX. EXIT!");

}


(3)

Algoritma :

1. Start.

2. Membaca file header. 3. Membaca struct.

4. Membaca 4 fungsi pengoperasian matematika. 5. Membaca fungsi utama.

6. Masukan bilangan A,B,C dan D 7. Masuk kemenu pilihan

a.) Jika pilih menu 1 maka akan pemanggilan rumus perkalian.

b.) Jika pilih menu 2 maka akan pemanggilan rumus pembagian. c.) Jika pilih menu 3 maka akan pemanggilan rumus penjumlahan. d.) Jika pilih menu 4 maka akan pemanggilan rumus pengurangan. 8. Cetak hasil.

9. Untuk mengulang, tekan Y/y untuk iya m T/t untuk tidak. 10. Cetak hasil.

11. Selesai.

Deskripsi :

Program diatas berfungsi untuk memudahkan pengguna dalam menyelesaikan permasalahan hitungan bilangan kompleks . menggunakan file header iostream dalam code blocks harus disertai dengan using namespace std, jika tidak maka tidak akan bisa di execute. Menggunakan beberapa fungsi dan menggunakan struct (kumpulan tipe data). Menggunakan file header math.h yang diperuntukkan untuk operasi matematika dalam penyusunan script sebuah program.

Tugas Rumah 1

Algoritma dan Struktur Data Nama Program : Program palindrom


(4)

#include <string.h> #include <stdio.h>

int main () {

char kata[25]; char balik[25];

int panjang, p, k, hasil; printf("Masukkan Kata :"); scanf("%s",&kata);

p=0;

panjang=strlen(kata);

for(k=panjang-1;k>=0;k--){ balik[p]=kata[k];

p++; }

balik[p]='\0';

hasil=strcmp(balik,kata); if(hasil==0)

puts("Kata diatas Palindrom"); else

puts("Kata diatas bukan Palindrom"); }


(5)

Algoritma :

1. Start.

2. Membaca file header.

3. Membaca fungsi yang digunakan serta fungs utamanya. 4. Masukan kata.

5. Proses pengecekan kata. 6. Cetak hasil.

7. Benar maka “kata diatas merupakan palindrom”. Jika salah maka “kata diatas bukan merupakan palindrom”.

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.

KESIMPULAN

1. Struktur data adalah sebuah skema organisasi yang diterapkan pada data sehingga data dapat diinterprestasikan dan sehingga operasi-operasi spesifik dapat dilaksanakan pada data tersebut.

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 struktur untuk merepresentasikannya.

4. Keunggulan array adalah sebagai berikut:

Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara langsung tanpa melalui elemen-elemen lain. Jika berada di suatu lokasi elemen, maka sangat


(6)

penggunaan penyimpanannya sangat efisien 5. Kelemahan array:

Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemen adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain . Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis.

-Tidak efisien dalam penggunaan memori.

-Menyiakan banyak waktu komputasi.

-Pada suatu aplikasi, representasi statis tidak dimungkinkan

6. Saat membuat struktur data seperti daftar, deret dan percabangan, perlu memiliki pointer untuk membantu mengelola bagaimana struktur dapat diimplementasikan dan dikendalikan. 7. Kegunaan pointer yang utama adalah untuk menyimpan alamat memori dari sebuah variabel (data type atau object dari class), menyimpan alamat dari sebuah fungsi (function pointer) dan dapat berfungsi untuk mengirimkan “Parameter yang berupa variabel” ke dalam fungsi, artinya nilai variabel bisa diubah di dalam fungsi serta dapat membuat variabel dinamis. 8. Ada 2 operator pointer yang dikenal secara luas, yaitu operator & dan operator *.

DAFTAR RUJUKAN

1. Tim Asisten Dosen. 2014. Modul 1 Struct, Array, dan Pointer. Malang: Unversitas Negeri Malang.

2. http://christ-13.blogspot.com/2012/07/pointer.html