• Tidak ada hasil yang ditemukan

Laporan Praktikum Algoritma dan Struktur

N/A
N/A
Protected

Academic year: 2018

Membagikan "Laporan Praktikum Algoritma dan Struktur"

Copied!
33
0
0

Teks penuh

(1)

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

(2)

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, sedpengupdate-angkpengupdate-an penambahpengupdate-an/penghapuspengupdate-an 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:

(3)

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;

(4)

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

(5)

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

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

(6)

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

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;

(7)

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

:

(8)

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 :

(9)

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.

(10)

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

(11)

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

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

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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 :

(18)

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

(19)

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

(20)

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

(21)

{

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;

(22)

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

(23)

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 .

(24)

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

{

(25)

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

(26)

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

(27)

}

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 :

(28)

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

{

(29)

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

(30)

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;

(31)

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

(32)

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.

(33)

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

Referensi

Dokumen terkait

 Menyiapkan sumber daya manusia, sarana, prasarana, alat, bahan, fasilitas dan sistem informasi yang mendukung pelayanan sebagai rumah sakit rujukan regional sesuai standar;

Tabel 4.26 Selisih Harga Jual Berdasarkan Harga Pokok Produk Pendekatan Full Costing oleh Perusahaan dan yang Telah Diperbaiki Penulis. Untuk Jurusan

Hasil penelitian ini menunjukkan bahwa perilaku kerja, lingkungan kerja, dan interaksi sosial terhadap kepuasan kerja karyawan RSUD Pandan Arang Boyolali dengan motivasi

Berdasarkan latar belakang masalah yang telah diuraikan di atas, maka perlu dilakukan kajian lebih lanjut tentang Penggantian Biaya Kepada Saksi Atau Ahli Dalam

Selain alam, Kabupaten Buleleng juga memiliki banyak potensi budaya berupa pura-pura bersejarah yang sudah ada sejak jaman penjajahan Belanda yang tersebar di desa-desa seperti

Bahan-bahan yang berhasil dikumpulkan selanjutnya,dianalisis dengan metode deskriptif analitis, artinya semua bahan hukum atau refrensi yuridis yang dikumpulkan kemudian

gan dari algor tma Lowest C -First mencari nilai heuristic ritma yang men yang terdapat p gnakan kedua Pencarian akan Algo etia Racana ndung 40132, e dapat guna alam , dan

Skala yang digunakan oleh peneliti untuk menyatakan jawaban dari responden terhadap tiap pertanyaan yang diajukan adalah dengan Skala Likert.. 3.3.1.2