laporan praktikum kelompok 1

20
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

Upload: noor-octavian-anwar

Post on 08-Dec-2015

244 views

Category:

Documents


2 download

DESCRIPTION

Laporan Praktikum Kelompok 1

TRANSCRIPT

Page 1: Laporan Praktikum Kelompok 1

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

Page 2: Laporan Praktikum Kelompok 1

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

Page 3: Laporan Praktikum Kelompok 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

Page 4: Laporan Praktikum Kelompok 1

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

Page 5: Laporan Praktikum Kelompok 1

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

Page 6: Laporan Praktikum Kelompok 1

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

Page 7: Laporan Praktikum Kelompok 1

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

Page 8: Laporan Praktikum Kelompok 1

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

Page 9: Laporan Praktikum Kelompok 1

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

Page 10: Laporan Praktikum Kelompok 1

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

Page 11: Laporan Praktikum Kelompok 1

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

Page 12: Laporan Praktikum Kelompok 1

}}

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

Page 13: Laporan Praktikum Kelompok 1

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

Page 14: Laporan Praktikum Kelompok 1

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

Page 15: Laporan Praktikum Kelompok 1

*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

Page 16: Laporan Praktikum Kelompok 1

Kadir, Abdul. 2003. Pemrograman C++. Yogyakarta: Penerbit ANDI.

15