laporan praktikum kelompok 1
DESCRIPTION
Laporan Praktikum Kelompok 1TRANSCRIPT
LAPORAN
MODUL 1
Algoritma dan Struktur Data
Disusun untuk Memenuhi Mata Kuliah Praktikum Dasar Pemrograman Komputer
Yang Dibimbing oleh Bapak Ahmad Mursyidun Nidhom, S.Pd, M.Pd
Oleh:
Noor Octavian Anwar
140533604496
S1 PTI2014 Offering E
UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
S1 PENDIDIKAN TEKNIK INFORMATIKA
NOVEMBER 2014
LAPORAN KE-1
”Modul 1”
A. DASAR TEORI
1. Struct
Struct merupakan sekelompok elemen data yang dikelompokkan bersama-sama di
bawah satu nama. Unsur-unsur data, yang dikenal sebagai member, dapat memiliki
jenis dan panjang yang berbeda.
Berikut ini syntax-nya:
struct type_name{
member_type1 member_name1;member_type2 member_name2;
} object_name;
Dimana type_name merupakan nama untuk jenis struktur dan object_name dapat
menjadi set identifier yang balid untuk objek yang memiliki tipe struktur ini. Dalam
kurung kurawa, terdapat daftar member yang masing-masing ditentukan dengan
jenis dan identifier yang valid sebagai nama dan dipisah dengan “;” pada tiap
elemennya.
Contoh:
struct Product{
int weight;double price;
};
Product apel;Product nanas, anggur;
Pada contoh diatas, kita mendeklarasikan tipe struktur dengan nama “Product”, dan
mendefinisikan struktur ini mempunyai 2 member, weight, dan price, dimana
masing-masing member memiliki perbedaan tipe data. Pada deklarasi tersebut, kita
membuat tipe struktur “Product”, yang digunakan untuk mendeklarasikan 3 objek
variabel yaitu apel., nanas, dan anggur. Setelah tiga objek tersebut telah ditentukan
tipe strukturnya, mereka dapat mengakses member strukturnya secara langsung
menggunakan titik, atau “.”, seperti contoh berikut:
apel.price;apel.weight;nanas.price
2. Pointer ke Struktur
1
Seperti tipe data lainnya, struktur dapat ditunjuk oleh jenis sendiri pointernya.
struct Product{
int weight;double price;
};Product apel;Product *pApel;
Sehingga, kode dibawah sama validnya dengan penggunajan umum pointer:
pApel = &apel;
Operator panah, “->” merupakan operator dereference yang digunakan secara
eksklusif dengan pointer ke objek yang memiliki member. Operator ini berfungsi
untuk mengakses member dari sebuah objek langsung dari alamatnya. Misalnya:
pApel->price;
Kode diatas ekivalen dengan kode berikut:
(*pApel).price;
Pada kode diatas, akan mengakses nilai yang ditunjukkan oleh anggota pointer hipotetik
yang disebut dengan judul dari struktur objek pApel. Tabel berikut merangkum
kemungkinan kombinasi dari operator untuk pointer dan member struktur.
Ekspresi Apa yang di evaluasi Eqivalen
a.b Member b objek a
a->bMember b, objek ditunjukkan ke
pointer a(*a).b
*a.bNilai ditunjukkan oleh member b
dari objek a*(a.b)
TUGAS LATIHAN1. Nama Program : LATIHAN1
Bahasa Pemrograman: C++
Compiler : Microsoft Visual Studio Express 2013
Algoritma :
Mulai.
Mendeklarasikan pointer pBil dengan tipe data int.
2
Mendeklarasikan variabel bilX yang bernilai 77 dengan tipe data int.
Assignment alamat pointer pBil dengan alamat variabel bilX.
Cetak variabel bilX dan pointer pBil.
Menambahkan nilai pointer pBil ditambah dengan 3.
Cetak variabel bilX dan pointer pBil.
Selesai.
Script Program :
#include <iostream>#include <conio.h>
using namespace std;
void main(){
int *pBil;int bilX = 77;
pBil = &bilX;
cout << "Isi bilX = " << bilX << endl;cout << "Nilai yang ditunjuk pBil = " << *pBil << endl;
*pBil += 3;
cout << endl;
cout << "Isi bilX sekarang = " << bilX << endl;cout << "Nilai yang ditunjuk pBil = " << *pBil << endl;
}
PrintScreen Output :
Penjelasan :
Program ini digunakan menunjukkan bahwa pointer yang telah di assignment
kepada alamat variabel, menjadikan nilai variabel dapat di rubah melalui pointer.
3
2. Nama Program : LATIHAN2
Bahasa Pemrograman : C++
Compiler : Microsoft Visual Studio Express 2013
Algoritma :
Mulai.
Mendeklarasikan variabel p dengan tipe data long.
Mendeklarasikan pointer x dengan tipe data long.
Assignment alamat pointer x dengan alamat variabel p.
Memberi nilai pointer x dengan 15.
Mencetak nilai pointer x, variabel p, alamat nilai p, dan alamat nilai x.
Memberi nilai variabel p dengan 25.
Mencetak nilai pointer x, variabel p, alamat nilai p, dan alamat nilai x.
Selesai.
Script Program :
#include <iostream>#include <conio.h>
using namespace std;
void main(){
long p;long *x;
x = &p;*x = 15;
cout << "Nilai x = " << *x << endl;cout << "Nilai *p = " << p << endl;cout << "Nilai P = " << &p << endl;cout << "Nilai &x = " << &x << endl;
cout << endl;
p = 25;
cout << "Nilai x = " << *x << endl;cout << "Nilai *p = " << p << endl;cout << "Nilai p = " << &p << endl;cout << "Nilai &x = " << &x << endl;
}
4
PrintScreen Output :
Penjelasan :
Sama seperti program sebelumnya, pada program ini, terdapat variabel dan pointer
yang alamatnya diarahkan ke variabel. Sehingga, walau pointer yang dibuat
memiliki alamatnya sendiri pada memory, nilai yang di rubah pada pointer atau
variabel yang di acu oleh pointer akan mengubah keduanya.
3. Nama Program : LATIHAN3
Bahasa Pemrograman : C++
Compiler : Microsoft Visual Studio Express 2013
Algoritma :
Mulai.
Mendeklarasikan fungsi ubah dengan parameter pointer x yang bertipe data
int.
Pada fungsi main, mendeklarasikan variabel a yang bernilai 12 dengan tipe
data int.
Mencetak nilai variabel a.
Memanggil fungsi ubah dengan memasukkan argumen pertama dengan alamat
variabel a.
Mencetak nilai variabel a.
Selesai.
5
Script Program :
#include <iostream>#include <conio.h>
using namespace std;
void ubah(int *x);
void main(){
int a = 12;
cout << "Isi nilai semula = " << a << endl;
ubah(&a);
cout << "Isi nilai sekarang = " << a << endl;}
void ubah(int *x){
*x = 34;}
PrintScreen Output :
Penjelasan :
Program ini menunjukkan cara penggunaan pointer pada fungsi. Fungsi ini
menggunakan parameter pointer, atau bisa disebut pass by reference. Di sini dapat
disimpulkan bahwa alamat variabel yang di masukan pada argumen fungsi
tersebut dapat mengubah nilai tersebut. Hal ini terjadi karena pada parameter
fungsi tersebut yang dimasukkan adalah alamat variabel.
6
TUGAS PRAKTIKUM
1. Nama Program : Program Tugas Praktikum 1
Bahasa Pemrograman : C++
Compiler : Microsoft Visual Studio Express 2013
Algoritma :
Mulai.
Melakukan deklarasi variabel azis, variabel defa, pointer pointerDefa dan
variabel dewi dengan tipe data int.
Memberikan variabel azis dengan nilai 85067.
Assignment nilai variabel defa dengan nilai variabel azis.
Memberi nilai variabel dewi dengan nilai variabel defa di tambah 3.
Mencetak nilai variabel defa, dan variabel dewi.
Memberikan variabel azis dengan nila 85067.
Assignment alamat pointer pointerDefa dengan alamat variabel azis.
Memberi nilai variabel dewi dengan nilai pointer pointerDefa di tambah 3.
Mencetak nilai pointer pointerDefa, dan variabel dewi.
Selesai.
Script Program :
#include <iostream>#include <conio.h>
using namespace std;
void main(){
int azis, defa, *pointerDefa, dewi;
azis = 85067;
defa = azis;
dewi = defa + 3;
cout << "a. Berapa nilai defa? " << defa << endl;cout << "b. Berapa nilai dewi? " << dewi << endl;
azis = 85067;
pointerDefa = &azis;
dewi = *pointerDefa + 3;
cout << "c. Berapa nilai defa? " << *pointerDefa << endl;cout << "d. Berapa nilai dewi? " << dewi << endl;
}
7
PrintScreen Output :
Penjelasan :
Program ini menunjukkan bahwa alamat pointer yang telah di assignment ke alamat
variabel lain memiliki nilai yang sama. Sehingga bila salah satu nilai diantara
pointer atau variabel diubah, makan akan mengubah keduanya.
2. Nama Program : Program Tugas Praktikum 2
Bahasa Pemrograman : C++
Compiler : Microsoft Visual Studio Express 2013
Algoritma :
Mulai.
Mendeklarasikan fungsi BalikKata dengan parameter pointer target dengan tipe
data string.
Pada fungsi main, mendeklarasikan variabel kalimat dan pointer pKalimat
dengan tipe data string.
Memanggil fungsi getline dengan argumen pertama cin, dan parameter kedua
variabel kalimat.
Assignment alamat pointer pKalimat dengan alamat varibael kalimat.
Memanggil fungsi BalikKata dengan parameter pertama alamat pointer
pKalimat.
Mencetak nilai variabel kalimat.
Selesai.
8
Script Program :
#include <iostream>#include <conio.h>#include <string>
using namespace std;
void BalikKata(string *target);
void main(){
string kalimat, *pKalimat;
cout << "Masukkan kata : ";getline(cin, kalimat);
pKalimat = &kalimat;
BalikKata(pKalimat);
cout << "Pembalikan kata : ";cout << kalimat << endl;
}
void BalikKata(string *target){
string temp = *target;int length = (*target).length() - 1, lengthRev = 0;while (length >= 0){
(*target).at(lengthRev) = temp.at(length);length--;lengthRev++;
}}
PrintScreen Output :
Penjelasan :
Program ini menunjukkan bahwa alamat pointer yang telah di assignment ke alamat
variabel lain memiliki nilai yang sama. Hal tersebut dapat dilihat dengan
pemanggilan fungsi, dimana argumen yang dimasukkan adalah alamat pointer,
9
sehingga perubahan yang terjadi didalam fungsi pada pointer, akan mengubah nilai
variabel sebelumnya.
TUGAS RUMAH
1. Nama Program : Program Tugas Rumah 1
Bahasa Pemrograman : C++
Compiler : Microsoft Visual Studio Express 2013
Algoritma :
Mulai.
Mendeklarasikan fungsi HitungJumlahKata yang bertipe data int dengan
parameter pointer target dengan tipe data string.
Pada fungsi main, mendeklarasikan variabel kalimat dan pointer pKalimat
dengan tipe data string.
Memanggil fungsi getline dengan argumen pertama cin, dan parameter kedua
variabel kalimat.
Assignment alamat pointer pKalimat dengan alamat varibael kalimat.
Mencetak nilai variabel kalimat dan nilai return fungsi HitungJumlahKata
dengan memasukkan argumen alamat pointer pKalimat.
Selesai.
Script Program :
#include <iostream>#include <conio.h>#include <string>
using namespace std;
int HitungJumlahKata(string *target);
void main(){
string kalimat, *pKalimat;
cout << "Masukkan kalimat : ";getline(cin, kalimat);
pKalimat = &kalimat;
cout << "Banyak kata dari kalimat \"" << kalimat << "\" adalah " << HitungJumlahKata(pKalimat) << endl;
}int HitungJumlahKata(string *target){
int menghitungSpasi = 1, length = (*target).length() - 1;
for (int i = 0; i < length; i++){
if ((*target).at(i) == ' '){
menghitungSpasi++;
10
}}
return menghitungSpasi;}
PrintScreen Output :
Penjelasan :
Program ini menunjukkan bahwa alamat pointer yang telah di assignment ke alamat
variabel lain menjadikan pointer seolah-olah merupakan variabel itu sendiri. Hal ini
ditunjukkan dengan pemanggilan atribute variabel yang dapat diakses dari pointer.
2. Nama Program : Program Tugas Rumah 2
Bahasa Pemrograman : C++
Compiler : Microsoft Visual Studio Express 2013
Algoritma :
Mulai.
Mendeklarasikan fungsi kalimatKapitar yang bertipe data void dengan
parameter alamat pointer target dengan tipe data string.
Pada fungsi main, mendeklarasikan variabel kalimat dan pointer pKalimat
dengan tipe data string.
Memanggil fungsi getline dengan argumen pertama cin, dan parameter kedua
variabel kalimat.
Assignment alamat pointer pKalimat dengan alamat varibael kalimat.
Memanggil fungsi kalimatKapitar dengan memasukkan argumen pointer
pKalimat.
Mencetak nilai variabel kalimat.
Selesai.
11
Script Program :
#include <iostream>#include <conio.h>#include <string>
using namespace std;
void kalimatKapitar(string &target);
void main(){
string kalimat, *pKalimat;
cout << "Masukkan kalimat : ";getline(cin, kalimat);
pKalimat = &kalimat;
kalimatKapitar(*pKalimat);cout << kalimat << endl;
}
void kalimatKapitar(string &target){
for (int i = 0; i < target.length(); i++){
if (i == 0)target[i] = toupper(target[i]);
else if (target[i] == ' ')target[i + 1] = toupper(target[i + 1]);
}}
PrintScreen Output :
Penjelasan :
Program ini menunjukkan bahwa alamat pointer yang telah di assignment ke alamat
variabel lain memiliki nilai yang sama. Hal tersebut dapat dilihat dengan
pemanggilan fungsi, dimana argumen yang dimasukkan adalah alamat pointer,
sehingga perubahan yang terjadi didalam fungsi pada pointer, akan mengubah nilai
variabel sebelumnya. Pada program diatas, pointer yang dijadikan argumen diubah
12
isi karakter pertama dan karakter setelah spasi, sehingga pada proses cetak variabel,
tiap huruf pada kata memiliki huruf besar.
3. Nama Program : Program Tugas Rumah 3
Bahasa Pemrograman : C++
Compiler : Microsoft Visual Studio Express 2013
Algoritma :
Mulai.
Mendeklarasikan fungsi DiKaliDua dengan parameter pertama pointer a,
parameter kedua pointer b, dan pointer ketiga pointer c yang bertipe data int.
Mendeklarasikan variabel a, b, dan c dengan tipe data int.
Memasukkan inputan user ke dalam variabel a, b, dan c.
Memanggil fungsi DiKaliDua dengan memasukkan argumen pertama dengan
alamat variabel a, argumen kedua dengan alamat variabel b, dan argumen
ketiga dengan alamat variabel c.
Mencetak nilai variabel a, b, dan c.
Selesai.
Script Program :
#include <iostream>#include <conio.h>
using namespace std;
void DiKaliDua(int *a, int *b, int *c);
void main(){
int a, b, c;
cout << "Masukkan nilai a : ";cin >> a;cout << "Masukkan nilai b : ";cin >> b;cout << "Masukkan nilai c : ";cin >> c;
DiKaliDua(&a, &b, &c);
cout << "\nNilai a, b, dan c setelah pemanggilan fungsi.\n" << endl;
cout << "Nilai a :";cout << a << endl;cout << "Nilai b :";cout << b << endl;cout << "Nilai c :";cout << c << endl;
_getch();}
void DiKaliDua(int *a, int *b, int *c){
13
*a *= 2;*b *= 2;*c *= 2;
}
PrintScreen Output :
Penjelasan :
Program ini menunjukkan cara menggunakan pointer sebagai parameter suatu
fungsi. Hal ini sangat berguna, terutama bila kita ingin mengubah nilai lebih dari
satu variabel. Jika kita menggunakan fungsi dengan nilai return, kita hanya bisa
mengubah nilai satu variabel. Dengan penggunaan pointer, masalah ini dapat
diselesaikan.
B. KESIMPULAN
1. Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer
dimaksudkan untuk menunjuk ke suatu alamat memori sehingga alamat dari suatu
variable dapat diketahui dengan mudah.
2. Dengan menggunakan pointer yang benar, dapat menyusun sebuah program
yang berkemampuan tinggi. Sebaliknya sedikit saja kesalahan dalam menggunakan
pointer akan mengakibatkan kesalahan fatal pada program tersebut.
3. Menggunakan operator deference variable akan menghasilkan alamat lokasi
memori.
4. Menggunakan operator reference akan dihasilkan nilai yang berada pada suatu
alamat memori.
DAFTAR PUSTAKA
Tim Asisten Dosen. 2014. Modul 8 POINTER. Malang: Universitas Negeri Malang.
14
Kadir, Abdul. 2003. Pemrograman C++. Yogyakarta: Penerbit ANDI.
15