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
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:
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;
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
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
1.6.2. Mengakses Elemen Struktur
Elemen dari struktur dapat diakses dengan menggunakan bentuk
variabel_struktur.nama_fieldAntara 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;
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
:
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 :
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.
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++)
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;
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 () {
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); }
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 :
#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++) {
} } 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;
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 :
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++) {
} 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; }
} 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() {
{
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;
} 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"); }
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 .
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
{
}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");
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); }
}
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 :
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 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
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;
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
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.
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