+ All Categories
Home > Documents > Laporan Praktikum Algoritma dan Struktur Data Modul 1

Laporan Praktikum Algoritma dan Struktur Data Modul 1

Date post: 16-Jan-2023
Category:
Upload: universitasnegerimalang
View: 0 times
Download: 0 times
Share this document with a friend
47
STRUCT, ARRAY, DAN POINTER Tujuan 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. DASAR TEORI 1.1. Pengenalan Struktur Data Struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien. Dalam teknik pemrograman, struktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna atau pun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna. 1.2. Pengenalan Algoritma Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan logis untuk pemecahan suatu permasalahan. Arti umum adalah serangkaian urutan langkah-langkah yang tepat, logis, terperinci, dan terbatas untuk menyelesaikan suatu masalah yang disusun secara sistematis. 1. Algoritma adalah inti dari ilmu komputer 2. Algoritma adalah urutan-urutan dari instruksi atau langkah-langkah untuk menyelesaikan suatu masalah
Transcript

STRUCT, ARRAY, DAN POINTER

Tujuan

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.

DASAR TEORI

1.1. Pengenalan Struktur Data

Struktur data adalah cara penyimpanan, penyusunan dan

pengaturan data di dalam media penyimpanan komputer sehingga

data tersebut dapat digunakan secara efisien.

Dalam teknik pemrograman, struktur data berarti tata letak

data yang berisi kolom-kolom data, baik itu kolom yang

tampak oleh pengguna atau pun kolom yang hanya digunakan

untuk keperluan pemrograman yang tidak tampak oleh pengguna.

1.2. Pengenalan Algoritma

Algoritma adalah urutan langkah-langkah logis penyelesaian

masalah yang disusun secara sistematis dan logis untuk

pemecahan suatu permasalahan.

Arti umum adalah serangkaian urutan langkah-langkah yang

tepat, logis, terperinci, dan terbatas untuk menyelesaikan

suatu masalah yang disusun secara sistematis.

1. Algoritma adalah inti dari ilmu komputer

2. Algoritma adalah urutan-urutan dari instruksi atau

langkah-langkah untuk menyelesaikan suatu masalah

3. Algoritma adalah blueprint dari program

4. Sebaiknya disusun sebelum membuat program

5. Kriteria suatu algoritma:

- Ada input dan output

- Efektifitas dan efisien

- Terstruktur

1.3. Hubungan Struktur Data dan Algoritma

Dengan pemilihan struktur data yang baik, maka problem

yang kompleks dapat diselesaikan sehingga algoritma dapat

digunakan secara efisien, operasi-operasi penting dapat

dieksekusi dengan sumber daya yang lebih kecil, memori lebih

kecil, dan waktu eksekusi yang lebih cepat.

Tidak semua struktur data baik dan sesuai. Contoh untuk

problem data bank: pengupdate-an harus cepat, sedangkan

penambahan/penghapusan data boleh lebih lambat.

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

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

1.4.2. Keunggulan Dan Kelemahan Array

Keunggulan :

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-elementetangga, 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 mempunyai fleksibilitas rendah, karena array

mempunyai batasan

sebagai berikut:

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

1.5. 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 didepannya ditambahkan typedef

sebagai berikut:

Typedef int *IntegerPointer;

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

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

1.6.1. 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 berikutstruct 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.

1.6.2. Mengakses Elemen Struktur

Elemen dari struktur dapat diakses dengan menggunakan

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

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

}

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:

Code blocks tidak dapat diexecute jika 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.

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

}

Output Program:

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 bak secara manual atau

sistematis. Menggunakan pointer untuk membaca suatu

alamat yang sudah ditentukan dalam syntax.

Percobaan 3

Algoritma dan Struktur Data

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.pd = &d;

*pd += 10;

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

8. Selesai.

Deskripsi :

Tidak ada kesalahan yang terdapat pada syntax

tersebut. Program ini menggunakan pointer untuk

menghitung nilai d. menggunakan rumus *pd+10 yang

nantinya padaproses hasil akhir akan ditambahkan 10

sehingga nilai langsung berubah sesuai rumus yang

dipakai.

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

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

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

*(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. Hamper sama dengan

percobaan 1, namun dalam percobaan ini , menggunakan

pointer dalam proses execute program tersebut.

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;

};

void 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.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(

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

.

Deskripsi :

Program diatas memiliki kesalahan dalam penulisan

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

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

{

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

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

}

}

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.

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 prses kirim segera dimulai. Program diaa

menggunakan struct , kumpulan fungsi. Menggunakan

perulangan while untuk menginputkan kembali data yang

dinginkan. Menggunakan break agar program tidak

langsung berhent. Menggunakan file header string untuk

penggunaan strcmp pada syntax.

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

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<=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 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<=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 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 menu tidak tersedia,pilih menu yang

tersedia!"<<endl;

}

int main()

{

char jawab;

do

{

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

cout<<"Masukkan Polinom Pertama, Tekan Sembarang Tombol Unuk

Melanjutkan"<<endl;

getch();

cout<<"\nMasukkan Derajat Tertinggi Polinom Pertama: ";

cin>>c;

cout<<"\nMasukkan Koofisien x Mulai Dari x Pangkat 0, Tekan

Sembarang Tombol Untuk Melanjutkan"<<endl;

getch();

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

{

cout<<"\nKoofisien x Pangkat "<<d<<" : ";

cin>>a[d];

cout<<endl;

}

cout<<"Masukkan Polinom Kedua, Tekan Sembarang Tombol Untuk

Melanjutkan"<<endl;

getch();

cout<<"\nMasukkan Derajat Tertinggi Polinom Kedua: ";

cin>>e;

cout<<"\nMasukkan Koofisien x Mulai dari x Pangkat 0, Tekan

Sembarang Tombol Untuk Melanjutkan"<<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<<"\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("\n Apakah anda ingin mengulang ? [y/t] ");

scanf("%s",&jawab);

}

while ((jawab=='Y' || jawab=='y'));

printf("\n\n\t\t\t\tTERIMA KASIH");

}

OutProgram :

Algoritma :

1. Start

2. Masukkan nilai derajat tertinggi polinom pertama.

3. Memasukkan koofisien x sebanyak nilai derajat

tertinggi pertama yang dimasukkan

4. Masukkan nilai derajat tertinggi polinom kedua

5. Memasukkan koofisien x sebanyak nilai derajat

tertinggi kedua yang di masukkan

6. Pilihan menu proses perhitungan

a. Jika pilih menu 1 maka akan melakukan

proses perhitungan penjumlahan .

b. Jika pilih menu 2 maka akan melakukkan

proses perhitungan pengurangan .

c. Jika pilih menu 3 maka akan melakukkan

proses perhitungan perkalian .

d. Jika pilih menu 4 maka akan melakukkan

proses perhitungan turunan

7. Hasil dari proses perhitungan

8. Pilihan kembali ke perhitungan jika pilih y makan

akan kembali ke awal memulai program jika pilih t

maka program akan diakhiri.

9. Selesai

Deklarasi :

Program ini menampilkan aritmatika polinom, awal dari program

ini kita menentukan derajat tertinggi pertama atau bisa

dibilang ini adalah sebagai batas nilai inputan, jika kita

masukkan 4 maka koofisien yang akan kita masukan sejumlah 5

karena dimulai dari koofisien x pangkat 0 hingga koofisien x

pangkat 4. Setelah itu menentukkan derajat tertinggi kedua dan

sama seperti proses yang pertama, kemudian akan memilih

pilihan beberapa menu proses antara lain, penjumlahan,

pengurangan, perkalian, dan turunan.

Tugas Rumah 2

Algoritma dan Struktur Data

Nama Program : Program Bilangan Kompleks

Bahasa Pemrogramam : C++

Compiler : Code Blocks.

Script program :#include<stdio.h>

#include<windows.h>

struct

{

int a,b,c,d;

}bil;

void perkalian()

{

printf("\n\n\tPERKALIAN BILANGAN KOMPLEKS \t\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,bil.d,bil.b,bil

.c,hasil1, hasil2);

}

void pembagian()

{

printf("\n\n\tPEMBAGIAN BILANGAN KOMPLEKS \t\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)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,hasi

l3,hasil4);

}

void penjumlahan()

{

printf("\n\n\tPENJUMLAHAN BILANGAN KOMPLEKS \t\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,

hasil2);

}

void pengurangan()

{

printf("\n\n\tPENGURANGAN BILANGAN KOMPLEKS \t\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,hasil1,

hasil2);

}

int main()

{

char jawab;

do

{

char pilihan;

system("cls");

printf("|>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<|");

printf("\n| Input Bilangan Kompleks |");

printf("\n|>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<|");

printf("\n\n|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("\n|^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^|");

printf("\n|\tMenu Pilihan : |");

printf("\n|^^^^^^^^^^^^^^+^^^^^^^^^^^^^^^|");

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("\n Apakah anda ingin kembali melakukan

perhitungan ? [y/t] ");

scanf("%s",&jawab);

}

while ((jawab=='Y' || jawab=='y'));

printf("\n\n\t\t\t\tTERIMA KASIH");

}

OutProgram :

Algoritma :

10. Start

11. Masukan bilangan A,B,C dan D

12. Masuk kemenu pilihan

a.) Jika pilih menu 1 maka akan pemanggilan

rumus dari perkalian bilangan kompleks seperti

berikut :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,bil

.d,bil.b,bil.c,hasil1, hasil2);

}

b.) Jika pilih menu 2 maka akan pemanggilan

rumus dari pembagian bilangan komplek seperti

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

c.) Jika pilih menu 3 maka akan pemanggilan

rumus dari penjumlahan bilangan kompleks

seperti berikut :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,

hasil2);

d.) Jika pilih menu 4 maka akan pemanggilan

rumus dari pengurangan bilangan kompleks

seperti berikut :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,hasil1,

hasil2);

13. Hasil dari proses perhitungan sesuai dengan

pilihan menu

14. Jika ada memilih y maka akan kembali ke awal

program dan jika memilih t maka program akan

diakhiri

15. Selesai

Deklarasi :

Program diatas menampilkan sebuah perhitungan bilangan

kompleks, untuk penggunaan file header iostream harus ditemani

dengan using namespace std, jika tidak akan terjadi eror pada

program. Program ini juga memudahkan para pengguna dalam

perhitungan bilangan kompleks.

Tugas Rumah 3

Algoritma dan Struktur Data

Nama Program : Program memeriksa sebuah kata palindrom atau bukan

Bahasa Pemrogramam : C++

Compiler : Code Blocks.

Script program :#include <string.h>

#include <stdio.h>

int main ()

{

char kata[20];

char balik[20];

int panjang, a, b, bukti;

printf("Masukkan Kata :");

scanf("%s",&kata);

a=0;

panjang=strlen(kata);

for(b=panjang-1;b>=0;b--){

balik[a]=kata[b];

a++;

}

balik[a]='\0';

bukti=strcmp(balik,kata);

if(bukti==0)

puts("Kata diatas Palindrom");

else

puts("Kata diatas bukan Palindrom");

}

OutProgram :

Algoritma :

1. Start

2. Masukan kata

3. Pembacaan kata yang telah dimasukkan

4. Akan muncul sebuah pernyataan yang menyatakan bahwa kata

yang dimasukkan tadi berupa palindrom atau tidak

5. Selesai

Deklarasi :

Program diatas adalah untuk memeriksa apakah kata tersebut

termasuk palindrom atau bukan. Dari script yang tertera jika

“bukti==0” maka “kata diatas palindrom” sebaliknya jika

“bukti≠≠0” maka “kata diatas bukan palindrom”. Fungsi “strcmp”

berfungsi seperti mengcopy atau membaca kata yang telah di

masukkan tadi. Program ini penting bagi yang membutuhkan nya.

Tugas Rumah 4

Algoritma dan Struktur Data

Nama Program : Program Menghitung gaji pegawai

Bahasa Pemrogramam : C++

Compiler : Code Blocks.

Script program :#include <iostream>

using namespace std;

int main()

{

string nama, nomor;

double gaji_pokok, lembur, tunjangan, upah_lembur, total;

double persentunjangan=0.15, persen=0.3;

cout<<"===================================="<<endl;

cout<<"| Program Mengitung Gaji Pegawai |"<<endl;

cout<<"===================================="<<endl;

cout<<"\n| Nomor Pegawai :";

cin>>nomor;

cout<<"\n| Masukkan Nama : ";

cin>>nama;

cout<<"\n| Masukkan Gaji Pokok :";

cin>>gaji_pokok;

cout<<"\n| Jumlah Jam Lembur :";

cin>>lembur;

tunjangan = persentunjangan * gaji_pokok;

upah_lembur = persen *lembur * gaji_pokok;

total = gaji_pokok + tunjangan + upah_lembur;

cout<<"|============================="<<endl;

cout<<"\n|Gaji Pokok = "<<gaji_pokok<<endl;

cout<<"\n|Tunjangan = "<<tunjangan<<endl;

cout<<"\n|Upah Lembur = "<<upah_lembur<<endl;

cout<<" \n|Total Gaji Dari " <<nama<<"Adalah "<<total;

}

OutProgram :

Algortima :

1. Start

2. Masukkan nomer pegawai

3. Masukkan nama pegawai

4. Masukkan gaji pokok pegawai

5. Masukkan jumlah jam lembur pegawai

6. Menampilkan gaji pokok pegawai

7. Menampilkan tunjangan pegawai dengan proses perhitungan

menggunakan rumus “tunjangan = persentunjangan *

gaji_pokok;”

8. Menampilkan upah lembur pegawai dengan proses perhitungan

menggunakan rumus “upah_lembur = persen *lembur *

gaji_pokok;”.

9. Menampilkan total gaji pegawai dengan proses perhitungan

rumus “total = gaji_pokok + tunjangan + upah_lembur;”

10. Selesai

Deklarasi :

Program ini menampilkan perhitungan gaji pegawai. Dari

program ini ada beberapa proses perhitungan, yang pertama

perhitungan tunjangan dengan rumus “tunjangan =

persentunjangan * gaji_pokok;” pada rumus tunjangan ini

“persentunjangan” memiliki ketentuan dan telah di

deklarasikan sebelumnya. perhitungan berikutnya adalah

upah lembur dengan rumus “upah_lembur = persen *lembur *

gaji_pokok;” pada rumus ini “persen” memiliki ketentuan

dan telah di deklarasikan sebelum nya. Yang terakhir

total dengan rumus “total = gaji_pokok + tunjangan +

upah_lembur;”

KESIMPULAN

1. Struktur data adalah cara penyimpanan, penyusunan dan

pengaturan data di dalam media penyimpanan komputer

sehingga data tersebut dapat digunakan secara efisien.

2. Algoritma adalah urutan langkah-langkah logis

penyelesaian masalah yang disusun secara sistematis dan

logis untuk pemecahan suatu permasalahan.

3. Arti umum adalah serangkaian urutan langkah-langkah yang

tepat, logis, terperinci, dan terbatas untuk

menyelesaikan suatu masalah yang disusun secara

sistematis.

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

5. Untuk sekumpulan data dengan tipe data yang berlainan,

namun merupakan satu-kesatuan, kita dapat menggunakan

struktur untuk merepresentasikannya.

DAFTAR RUJUKAN

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

Unversitas Negeri Malang.

2. http://hermauy.blogspot.com/2013/02/pengenalan-struktur-

data.html

3. http://ghadinkz23.blogspot.com/2012/03/pengertian-

algoritma.html

4. http://christ-13.blogspot.com/2012/07/array.html


Recommended