Date post: | 16-Jan-2023 |
Category: |
Documents |
Upload: | universitasnegerimalang |
View: | 0 times |
Download: | 0 times |
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