Oleh:
Dimas prabowo
Nim : 160533611514
Dyah rohamawati
S1 PTI16 OFF A
FUNGSI
Tujuan
Setelah mempelajari bab ini diharapkan mahasiswa akan mampu :
1. mahasiswa memahami apakah yang dimaksud dengan struktur data
2. mahasiswa memahami apakah yang dimaksud dengan algoritma
3. mengingat kembali array, struktur dan pointer dalam bahasa C
DASAR TEORI
A. Array
1. Array Dimensi Satu
Banyak array yang hanya memiliki satu dimensi, seperti sejumlah orang dari setiap
umur. Satu-satunya persyaratan untuk menentukan elemen adalah usia.
B. Struct
Struct adalah tipe data yang dapat melakukan penyimpanan beberapa data
yang saling terkait (seperti Nama, NRP, Alamat), sebagai suatu kesatuan, sehingga
data-data tersebut seakan-akan menjadi suatu data tunggal. Pembuatan tipe data baru
dalam C dilakukan dengan menggunakan kata kunci struct, yang merupakan
kependekan dari structure (struktur).
Syntax :
typedef struct
int NIP ;
char nama[30]
} pegawai_t;
Operator titik digunakan sebagai pemisah antara variabel struktur dengan elemennya,
penulisan ini sebaiknya tidak dipisahkan oleh spasi. Operator ini berfungsi untuk
mengakses suatu element dari variabel struktur.
C. Pointer
1. Pointer dan Pendefinisian
Pointer adalah sebuah variabel yang berisikan alamat memori (bukan nilai)
atau dengan kata lain dapat dikatakan bahwa pointer adalah suatu variabel
penunjuk ke lamat memori tertentu. Cara pendeklarasian pointer dalam bahasa C
adalah dengan menambahkan tanda asterisk (*) didepan nama pointer, seperti
berikut:
Contoh:
Dari hasil tersebut membuktikan bahwa suatu variabel pointer dapat menunjuk
alamat dari suatu variabel. Selain itu, variabel pointer juga dapat untuk mengakses
isi dari suatu variabel. Berikut contohnya:
Dari kedua contoh tersebut terdapat kesimpulan bahwa operator pointer ada
dua, yaitu:
a. Operator &(Operator Diference)
Operator deference (&) yaitu mendeklarasikan suatu variabel didalam
penggantian memori. Operator ini biasa disebut dengan address of.
b. Operator *(Operator Reference)
Operator reference (*) yaitu dapat mengakses secara langsung nilai yang
terdapat didalam variabel yang berpointer, hal ini dapat dilakukan dengan
menambahkan identifier asterisk (*). Operator ini biasa disebut dengan value
pointed by.
3. Pointer Void
Pointer void adalah pointer yang dapat menunjuk ke sembarang tipe data. Jadi
satu pointer dapat menunjuk ke tipe data integer, tipe data float, dan lain
sebagainya.
Berikut ini contoh dari pointer void:
Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang
menggunakan sebuah nama yang sama. Nilai-nilai data di suatu array disebut dengan elemen-
elemen array. Letak urutan dari elemen-elemen array ditunjukkan oleh suatu subscript atau
indeks. Pada saat pendeklarasian array, kompiler mengalokasikan memori yang cukup untuk
menampung semua elemen sesuai dengan yang dideklarasikan. Adapun array dibedakan
menjadi tiga macam, yaitu array berdimensi satu, array berdimensi dua, dan array berdimensi
banyak.
LATIHAN PRAKTIKUM
Latihan I
Pemrograman C++
Script program :
#include <stdio.h>
#define MAX 10
int fibo[MAX];
int main ()
{
int i;
fibo [1] = 1;
fibo [2] = 1;
Output Program :
Penjelasan Program :
Program diatas bertujuan untuk menampilkan deret fibbonaci menggunakan array dan
perulangan for. Dengan pendeklarasian U1 dan U2 lalu U selanjutnya akan dihitung
menggunakan for, yakni dengan menjumlahkan U ke n dengan U n-1. Jumlah suku deret
adalah MAX atau yang telah dideklarasikan bernilai 10. Keluaran proram adalah array yang
telah diisi nilainya oleh for dan ditampilkan menggunakan for pula mulai dari index ke 0 atau
U1.
Berikut penjelasannya :
Pemrograman C++
Nama Program : Menampilkan alamat dan isi dari alamat menggunakan pointer
Script program :
#include <stdio.h>
main ()
{
int y,x =87;
int *px;
px = &x;
y = *px;
Output Program :
Penjelasan Program :
Program diatas adalah program yang bertujuan untuk menunjuk sebuah variabel dan
menunjukkan bahwa pointer yang menunjuk sebuah variabel akan menyimpan
alamatnya.pendeklarasian pointer adalah dengan cara ditambah tanda (*) dan untuk
menujukkan alamat sebuah variabel adalah dengan ditambah tanda (&). Setelah pointer px
diarahakan pada alamat variabel x selanjutnya adalah menyimpan nilai yang ditunjuk px pada
y. Berikut penjelasannya :
13. }
Latihan III
Pemrograman C++
Script program :
#include <stdio.h>
main ()
{
float d = 54.5f, *pd;
pd = &d;
*pd += 10;
Output Program :
Penjelasan Program :
Program diatas adalah program yang bertujuan untuk merubah sebuah data yang
ditunjuk oleh sebuah pointer. Pertama-tama program akan pendeklarasian variable d dan
ponter pd. Lalu memberi nilai pd = &d. Program menampilkan isi d yaitu 54.5, sesuai dengan
pendeklarasian variabel sebelumnya. Selanjutnya memberi nilai pada *pd += 10;.
Menampilkan isi pointer pd sekarang = 64.5. Jadi selain untuk menunjuk suatu alamat pointer
juga dapat mengakses data tersebut dengan cara menggunakan simbil * . maka pada program
ini yang dilakukan adalah pendeklarasian variabel dan pointer lalu ditampilkan keduanya.
Kemudian nilai variabel dirubah dengan cara pengaksesan melalui pointer. Terakhir program
akan menampilkan ulang variabel yang telah dirubah.
Pemrograman C++
Script program :
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
int *fibo;
int main ()
{
int i;
*(fibo + 1) =1;
*(fibo + 2) =1;
for (i=3;i<=MAX;i++)
*(fibo + i) = (*(fibo + i - 2) + *(fibo + i - 1));
Output Program :
Penjelasan Program :
Pemrograman C++
Nama Program : Menampilkan nilai r dan nilai alpha untuk koordinat polar
Script program :
#include <stdio.h>
#include <math.h>
struct polar {
double r ;
double alpha ;
};
struct kartesian {
double x;
double y;
};
int main (){
struct polar p1 ;
struct kartesian k1;
printf (" nilai loordinat kartesian untuk koordinat polar r= %2.2lf alpha =
%2.2lf adalah : \n " , p1.r,p1.alpha );
printf ( "x = %2.2lf y = %2.2lf ", k1.x,k1.y);
}
Output Program :
Penjelasan Program :
Program diatas adalah program yang ditujukan untuk menentukan letak karesian x
dan y dengan inputan r dan alpha koordinat polar. Dengan menggunakan struct polar dan
kaatesian x dan y di hitung menggunakan operasi matematika sin dan cos. Titik x adalah hasil
perkalian r dengan sin alpha dan y merupakan hasil perkalian r dengan cos alpha.
Berikut penjelasannya :
17.}
Latihan VI
Pemrograman C++
Script program :
#include <stdio.h>
#include <string.h>
struct dtnilai {
char nrp [10];
char nama [20];
double nilai ;
};
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);
for (i=0;i<=j;i++)
{
printf (" %s \t %s \t %6.2lf\n", data[i].nrp , data[i].nama , data[i].nilai );
}
}
Output Program :
Penjelasan Program :
Program diatas adalah program yang ditujukan untuk menampilkan data yang telah di
inputkan sebelumnya, data tersebut disimpan dalam bentuk struct dengan elemen-elemen
yang telah ditentukan. Fungsi untuk input data adalah tambah_data dan untuk outputnya
adalah fungsi tampil. Dengan menggunakan perintah perualangan while dan pengolah string
srtcmp program akan memberi pilihan menambah inputan lagi atau menyudahinya.
Berikut penjelasannya :
24.for (i=0;i<=j;i++)
{
25.printf (" %s \t %s \t
%6.2lf\n", data[i].nrp ,
26. Pendeklarasian fungsi utama bertipe
data[i].nama , data[i].nilai );
} integer
} 27. Memanggil fungsi tambah_data
28. Memanggil fungsi tampil
29. Program selesai
26.int main (){
27.tambah_data ();
28.tampil ();
29.}
TUGAS RUMAH
Tugas I
Pemrograman C++
Script program :
#include <iostream>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
struct daftarkue
{
int codekue;
char namakue[50];
int harga;
} kue[10];
int main()
{
int code[10];
kue[0].codekue= 101;
strcpy(kue[0].namakue, "BROWNIES KUKUS ORIGINAL");
kue[0].harga = 30000;
kue[1].codekue= 102;
strcpy(kue[1].namakue, "BROWNIES KUKUS COKLAT ");
kue[1].harga = 40000;
kue[2].codekue= 103;
strcpy(kue[2].namakue, "BROWNIES KUKUS PISANG ");
kue[2].harga = 40000;
kue[3].codekue= 104;
strcpy(kue[3].namakue, "BROWNIES KUKUS KEJU");
kue[3].harga = 40000;
kue[4].codekue= 105;
strcpy(kue[4].namakue, "BROWNIES KUKUS PANDAN");
kue[4].harga = 35000;
kue[5].codekue= 106;
strcpy(kue[5].namakue, "BROWNIES BAKAR ORIGINAL");
kue[5].harga = 35000;
kue[6].codekue= 107;
strcpy(kue[6].namakue, "BROWNIES BAKAR COKLAT ");
kue[6].harga = 45000;
kue[7].codekue= 108;
strcpy(kue[7].namakue, "BROWNIES BAKAR PISANG ");
kue[7].harga = 45000;
kue[8].codekue= 109;
strcpy(kue[8].namakue, "BROWNIES BAKAR KEJU");
kue[8].harga = 45000;
kue[9].codekue= 110;
strcpy(kue[9].namakue, "BROWNIES BAKAR PANDAN");
kue[9].harga = 40000;
cout<<"\n\t\t\t
\n";
cout<<"\t\t\t \n";
cout<<"\t\t\t DAFTAR KUE \n";
cout<<"\t\t\t \n";
cout<<"\t\t\t
\n\n";
cout<<"\t\t\t Kode\t\tNama Kue\t\t\tHarga\n";
cout<<"\t\t---------------------------------------------------------------------------\n";
for(int a=0;a<10;a++)
{
cout<<" \t\t\t
"<<kue[a].codekue<<"\t\t"<<kue[a].namakue<<"\t\t"<<kue[a].harga<<endl;
}
cout<<"\t\t---------------------------------------------------------------------------\n";
cout<<endl<<endl;
cout<<"\t\t\t
\n";
cout<<"\t\t\t \n";
cout<<"\t\t\t PEMBELIAN KUE \n";
cout<<"\t\t\t \n";
cout<<"\t\t\t
\n\n";
cout<<"\t\t\t\tMasukkan Kode Kue yang akan dibeli : ";
cin>>code[0];
int jum,uang,kembalian;
cout<<"\n\n\t\t\t\tMasukkan Jumlah Kue yang akan dibeli : ";
cin>>jum;
cout<<"\n\n\t\t\t\tMasukkan Jumlah uang yang diterima : ";
cin>>uang;
for(int i=0; i<10; i++)
{
if(kue[i].codekue==code[0])
{
int index=i;
cout<<endl<<endl;
cout<<"\t\t\tKode\t\tNama Kue\t\tHarga\t\tJumlah\n";
cout<<"\t--------------------------------------------------------------------------------------------\n";
cout<<"\t\t\t"<<kue[index].codekue<<"\t\t"<<kue[index].namakue<<"\t"<<kue[index].har
ga<<"\t\t"<<jum<<endl;
cout<<"\t--------------------------------------------------------------------------------------------\n";
kembalian=uang-(kue[index].harga*jum);
cout<<"\n\t\tTekan Enter Untuk Melihat Nota";
getch();
system("cls");
cout<<"\n\t\t
\n";
cout<<"\t\t \n";
cout<<"\t\t NOTA PEMBELIAN \n";
cout<<"\t\t ADIYYAH BROWNIES \n";
cout<<"\t\t \n";
cout<<"\t\t
\n\n";
cout<<"\t\t Nama Kue : "<<kue[index].namakue<<endl;
cout<<"\t\t Harga Satuan : Rp. "<<kue[index].harga<<endl;
cout<<"\t\t Jumlah Beli : "<<jum<<endl;
cout<<"\t\t Total Harga : Rp. "<<kue[index].harga*jum<<endl;
cout<<"\t\t Total Uang : Rp. "<<uang<<endl;
cout<<"\t\t Kembalian : Rp. "<<kembalian<<endl;
cout<<"\t\t
\n";
getch();
}
}
}
Output Program :
Penjelasan Program :
Program ini adalah program yang ditujukan untuk melayani pembelian sebuah toko
kue, dengan menggunakan struct bernma daftarkue yang menyimpan elemen codekue bertipe
integer, namakue bertipe char dan harga bertipe integer. Selanjutnya adalah pendeklarasian
variabel kue maksimal 10. Setelah pendeklarasian array bertipe interger bernama code setiap
elemen kue (0-9) diisi terlebih dahulu, yakni nama dari kue pada elemen namakue, kode kue
pada elemen codekue dan harga pada elemen harga. Selanjutnya adalah menampilkan menu
atau tem yang ada dengan menampilkan index pada kue pada tiap-tiap elemen menggunakan
perulangan for , for ini akan menampiklan ke10 index kue yang sebelunya telah di
deklarasikan. Setelelah itu penginputan pembelian, yang pertama di input adalah kode kue
yang akan dibeli untuk menentukan nama kue dan harga, kedua adalah jumlah kue yang
disimpan dalam variabel integer bernama jum dan yang ketiga adalah menginputkan uang
yang diberikan oleh customer untuk perhitungan kembalian. Setelah penginputan selesai
maka akan tampil tabel dari nama barang yang dibeli, jumlah dan harga nya. Dan yang
terakhir adalah pencetakan nota, sebelum mecetak nota terlebih dahulu akan menghitung
kembalian dengan cara mengurangkan uang dengan hasil kali harga kue yang dibeli dengan
jumlah kuenya. Selanjutnya user akan diminta unruk menekan enter dan program akan
berganti layar menggunakan sintak system(cls), setelah berganti layar maka akan tercetak
nota yang didalamnya terdapat nama kue (var namakue), harga satuan (elemen harga pada
kue), jumlah beli (var jum), total harga (hasil kakli harga dan jum), total uang (var uang), dan
kembalian (var kembalian )
KESIMPULAN