Anda di halaman 1dari 16

Praktikum Algoritma dan Pemrograman 2021

MODUL VI
POINTER
6.1 TUJUAN PRAKTIKUM
1. Mahasiswa mampu mengimplementasikan statement control dan looping
dalam bahasa pemrograman.
2. Mahasiswa mampu mengimplementasikan function, array dan object dalam
bahasa pemrograman
6.2 DASAR TEORI
6.2.1 Pointer
Pointer adalah suatu variabel penunjuk berisi nilai yang menuju kalimat
suatu lokasi memori tertentu. Jadi pointer tidak berisi nilai data melainkan berisi
suatu alamat memori. Lokasi memori tersebut bisa diwakili sebuah variabel atau
juga alamat memori secara langsung.
1. Deklarasi pointer
Jika terdapat sebuah variabel dengan tipe data tertentu maka untuk mendpatkan
alamat dari variabel tersebut adalah dengan menggunakan operator “&”. Alamat
ini lah yang kemudian akan disimpan kedalam variabel yang bertipe pointer.
Untuk mendeklarasikan variabel sebagai pointer, hanya perlu menambahkan
tanda asterisk (*) di depan nama variabel. Bentuk umum dari pendeklarasian
pointer[1]:
Tipe_data nama_variabel
Atau
Tipe_data* nama_variabel

2. Cara mengakses struct


Pada pointer, terdapat beberapa operator yang dapat digunakan yaitu:
a. Deference (*)
Suatu operator yang berfungsi menyatakan satu variabel adalah variabel
pointer. Sama halnya dengan operator reference, peletakan symbol operator
deference diawal variabel. Operator deference ini akan membuat suatu variabel
pointer untuk menampung alamat.

Modul VI – Pointer VI-1


Praktikum Algoritma dan Pemrograman 2021

b. Reference (&)
Suatu operator yang berfungsi untuk menanyakan alamat dari suatu variabel.
Apabila anda memberikan symbol “&” pada awal variabel dan mencetak
hasilnya, maka yang akan tercetak adalah alamat dari variabel tersebut bukan
nilai yang ditampung oleh variabel tersebut [1].
3. Perbedaan pointer dan variabel biasa
a. Variabel biasa
Variabel biasa merupakan variabel yang berisi data atau nilai dengan
operator dilakukan seperti umumnya seperrti operator aritmatika,bitwise dan
lainnya.Dengan sifat statis maka contoh dari deklarasinya sebagai berikut:
Int a;
b. Pointer
Pointer merupakan berisi alamat memori dari suatu variabel
tertentu.Membutuhkan operator khusus deperti operator deference atau
reference dan bersifat dinamis maka contoh dari deklarasi sebagai berikut:
Int *a;
4. Pemanfaatan pointer
a. “void” pointer
“void” pointer adalah pointer yang dapat menyimak ke semua tipe data,
yaitu dengan mendeklarasikan pointer sebagai pointer tanpa tipe data.
Bentuk umum untuk mendeklarasikan pointer tanpa tipe data adalah sebagai
berikut:
Void *nama_pointer;
Berikut contoh program yang menggunakan “void” pointer:
b. Operasi aritmatika pada pointer
Pointer dapat berperan sebagai operand dalam operasi aritmatika. Proses
semacam ini sering disebut pointer aromatic. Suatu variabel pointer hanya
dapat dilakukan operasi aritmatika dengan nilai integer saja. Hanya terdpat
dua operasi aritmatikanya yang dapat diterapkan pada pointer, yaitu operasi
penjumlahan dan pengurangan.
c. Pointer pada array
Pointer dan array memiliki hubungan yang dekat. Secara internal array
juga menyatakan alamat pada elemenpertama pada array.

Modul VI – Pointer VI-2


Praktikum Algoritma dan Pemrograman 2021

d. Pointer pada string


Pointer dapat juga digunakan untuk menampilkan sebuah kata atau kalimat.
Berikut contoh program pointer pada string:
e. Pointer pada struct
Pointer pada struct akan menunjukan alamat letak dari variabel berikutnya.
Berikut contoh program pointer pada struct
Adapun perbedaan dot operator dan arrow operator beserta contonya:
1) Dot operator
Dot operator (.) digunakan untuk mengakses elemen struct bsik yang
bertipe pointer maupun tida. Jika elemen (field) harus dalam tanda
kurung (*field) . Contoh operator sebagai berikut:
Z=(*pos_xy).x;
2) Arrow operator
Arrow operator (→) hanya digunakan untuk mengakses elemen struktur
yang bertipe pointer. Contoh penggunaanya sebagai berikut:
Z=pos_xy→x;
f. Pointer pada pointer
Pointer dapat menunjukan ke pointer lain yang telah menujuk ke alamat
tertentu. Untuk mendeklarasikan pointer, yaitu menggunakan tanda asterisk
sebanyak dua kali (**) [2].

Modul VI – Pointer VI-3


Praktikum Algoritma dan Pemrograman 2021

6.3 PERMASALAHAN
Pada suatu malam yang cerah, seorang mahasiswa yang bernama nizam azmi
biasa dipanggil ajem atau ijux diminta untuk membuat sebuah program yang bias
menghubungkan akun-akun seperti social media sederhana menggunakan Bahasa
pemrograman C++ dan java, siapa yang meminta? Tidak penting. Ajem a.k.a ijux
diminta untuk membuat sebuah program dengan fitur-fitur sebagai berikut. Di
programnya terdapat 2 menu, yang pertama menu utama yang dimana menu ini
akan ditampilkan ketika awal program dan ketika user ingin Kembali ke menu ini
(bingung? Stay tune). Menu kedua adalah menu Home yang ditampilkan ketika
user sudah login.
1. Pada menu utama program terdapat pilihan fitur-fitur berikut :
• Login → fitur untuk login ke akun dengan memasukkan nama dari akun
yang terdaftar (tanpa password biar nggak panjang)
• Buat akun → fitur untuk membuat akun baru, social media sederhana milik
ijux harus memiliki 10 akun (boleh lebih jika ada kemauan) dan setiap akun
maksimal berteman dengan 5 orang, mengapa? Benar, biar tidak Panjang.
Saat mendaftar akun baru, user akan diminta untuk memasukkan nama dan
umur (boleh lebih jika niat).
• Data semua akun → fitur untuk menampilkan data nama dan umur dari
semua akun yang terdaftar
• Data pertemanan → fitur untuk menampilkan teman-teman dari setiap akun
yang terdaftar
• Data saran pertemanan → fitur untuk menampilkan saran pertemanan untuk
setiap akun, akun yang menjadi saran pertermanan adalah akun yang
merupakan teman dari teman kita. Contoh, rizqi berteman dengan ajem dan
ajem berteman dengan rifqi, maka rifqi merupakan saran pertemanan untuk
rizqi karena rizqi belum berteman dengan rifqi.
2. Menu kedua yaitu menu Home yang ditampilkan ketika user sudah login,
isinya sebagai
berikut:
• Tambahkan teman → dari Namanya suda jelas fitur ini berfungsi untuk
memambahkan teman baru dengan memasukkan nama dari akun yang ingin

Modul VI – Pointer VI-4


Praktikum Algoritma dan Pemrograman 2021

ditambahkan sebagai teman, pertemanan bersifat 2 arah. jika ajem


menambahkan rifqi sebagai teman maka otomatis rifqi juga berteman dengan
ajem tanpa perlu menambahkan ajem secara manual.
• Lihat teman → fitur yang berfungsi untuk menampilkan daftar teman dari
akun yang sedang login.
• Lihat saran pertemanan → fitur ini berfungsi untuk menampilkan saran-saran
pertemanan untuk akun yang sedang login.
• Kembali ke menu utama → fitur ini untuk Kembali lagi ke menu utama,
ketika Kembali ke menu utama maka user dianggap sudah logout

Modul VI – Pointer VI-5


Praktikum Algoritma dan Pemrograman 2021

6.4 HASILPERCOBAAN
6.4.1 Program Direktori Berkas
1. Algoritma
2. Flowchart
3. Pseudocode
Step 1: Start.
Step 2:
Step 3:
Step 4:
Step 5:
Step 6:
Step 7:
Step 8:
Step 9:
Step 10:
Step 11:
Step 12:
Step 13:
Step 14:
Step 15:
Step 16:
Step 17:
Step 18:
Step 19:
Step 20:
Step 20:
Step 21: End.
4. Source Code
import java.util.Scanner;

class user {
public String nama;
public int umur, indexTeman;
public int[] teman = new int[5];

user(String nama, int umur) {


this.nama = nama;
this.umur = umur;
indexTeman = 0;
}

public class MOD6 {

Modul VI – Pointer VI-6


Praktikum Algoritma dan Pemrograman 2021

static user[] users = new user[10];


boolean isLogin = false; // ngecek apakah sudah login atau
belum
static int activeUser; // menandai user yang sedang login
static int regist = 0;
static Scanner sc = new Scanner(System.in);

static void menuUtama() {


int pilihan;
System.out.println("\nPilih salah satu : ");
System.out.println("1. Login");
System.out.println("2. Buat Akun\n3. Data semua
akun\n4. Data pertemanan\n5. Data saran pertemanan\n6. Exit");
System.out.println("Pilihan : ");
pilihan = sc.nextInt();

switch (pilihan) {

case 1:
login();
break;
case 2:
daftar();
break;
case 3:
printUser();
break;
case 4:
friendList();
break;
case 5:
suggestedFriend();
break;
default:
return;
}
}

static void menuHome(int index) {


int pilihan;
System.out.println("\nSELAMAT DATANG " +
users[index].nama);
System.out.println("=====================");

System.out.println("1. Tambahkan teman");


System.out.println("2. Lihat teman");
System.out.println("3. Lihat saran pertemanan");
System.out.println("4. Menu utama");
System.out.println("Pilihan : ");
pilihan = sc.nextInt();

switch (pilihan) {
case 1:
addFriend();
break;
case 2:
friendList(activeUser);
break;

Modul VI – Pointer VI-7


Praktikum Algoritma dan Pemrograman 2021

case 3:
suggestedFriend(activeUser);
break;
default:
menuUtama();
}
}

static void login() {


String nama;
System.out.println("Masukkan nama akun : ");
nama = sc.next();

// cek login

for (int i = 0; i < 10; i++) {


if (users[i].nama.equalsIgnoreCase(nama)) {
activeUser = i;
menuHome(i);
}
}
}

static void daftar() {


String nama;
int umur;
System.out.println("Masukkan nama : ");
nama = sc.next();
System.out.println("Masukkan umur : ");
umur = sc.nextInt();

users[regist] = new user(nama, umur);


regist++;

menuUtama();
}

static void addFriend() {


String nama;
System.out.println("Masukkan nama teman : ");
nama = sc.next();

// System.out.println("nama yang ingin ditambah : " +


nama);
int indexTambah = findIndex(nama);
// System.out.println("index yang ingin ditambah : " +
indexTeman);
// saling berteman
users[activeUser].teman[users[activeUser].indexTeman]
= indexTambah;
users[activeUser].indexTeman++;

users[indexTambah].teman[users[indexTambah].indexTeman] =
activeUser;
users[indexTambah].indexTeman++;

menuHome(activeUser);

Modul VI – Pointer VI-8


Praktikum Algoritma dan Pemrograman 2021

static void printUser() {

System.out.println("\tDATA SEMUA AKUN");


System.out.println("\t===============");

for (int i = 0; i < regist; i++) {


System.out.println("Nama : " + users[i].nama + "
Umur : " + users[i].umur);
}

menuUtama();

static void friendList() {

System.out.println("\nDATA FRIENDLIST SEMUA AKUN");

System.out.println("===================================");

for (int i = 0; i < regist; i++) {


System.out.print("\n" + (i + 1) + ". " +
users[i].nama + " : ");
for (int j = 0; j < users[i].indexTeman; j++) {
int indexTeman = users[i].teman[j];
System.out.print(users[indexTeman].nama + "
");
}
}

menuUtama();

static void friendList(int index) {

if (users[index].indexTeman > 0) {
System.out.println("TEMAN DARI AKUN " +
users[index].nama);
for (int i = 0; i < users[index].indexTeman; i++)
{
int indexTeman = users[index].teman[i];
System.out.println((i + 1) + ". " +
users[indexTeman].nama + " ");
}
} else {
System.out.println("Belum ada teman");
}

menuHome(index);

static void suggestedFriend() {

Modul VI – Pointer VI-9


Praktikum Algoritma dan Pemrograman 2021

System.out.println("\nSARAN PERTEMANAN UNTUK SEMUA


AKUN");

System.out.print("=====================================");

boolean[] teman = new boolean[10];

for (int x = 0; x < regist; x++) {


System.out.print("\n" + users[x].nama + " : ");

for (int i = 0; i < 10; i++) {


teman[i] = false;
}

for (int i = 0; i < users[x].indexTeman; i++) {


int indexUser = users[x].teman[i];

for (int j = 0; j <


users[indexUser].indexTeman; j++) {
int temannyaTeman =
users[indexUser].teman[j];
if (!isFriend(x, temannyaTeman) && x !=
temannyaTeman) {
teman[temannyaTeman] = true;
}
}
}
for (int i = 0; i < 10; i++) {
if (teman[i]) {
System.out.print(users[i].nama + " ");
}
}
}

menuUtama();

static void suggestedFriend(int index) {

System.out.println("Saran pertemanan untuk akun " +


users[index].nama + " : ");
for (int i = 0; i < 10; i++) {
teman[i] = false;
}

for (int i = 0; i < users[index].indexTeman; i++) {


int indexUser = users[index].teman[i];

for (int j = 0; j < users[indexUser].indexTeman;


j++) {
int temannyaTeman = users[indexUser].teman[j];
if (!isFriend(index, temannyaTeman) && index
!= temannyaTeman) {
teman[temannyaTeman] = true;
}
}
}

Modul VI – Pointer VI-10


Praktikum Algoritma dan Pemrograman 2021

// print saran-saran teman


for (int i = 0; i < 10; i++) {
if (teman[i]) {
System.out.println(users[i].nama + " ");
}
}

menuHome(index);

static int findIndex(String nama) {


for (int i = 0; i < regist; i++) {
if (users[i].nama.equalsIgnoreCase(nama)) {
return i;
}
}

return -1;

static boolean isFriend(int index, int indexTeman) {


for (int i = 0; i < users[index].indexTeman; i++) {
if (users[index].teman[i] == indexTeman)
return true;
}

return false;
}

public static void main(String[] args) {

users[0] = new user("rizqi", 20);


users[1] = new user("adit", 20);
users[2] = new user("ajem", 20);
users[3] = new user("rifqi", 20);
users[4] = new user("dika", 20);
regist = 5;

menuUtama();

Modul VI – Pointer VI-11


Praktikum Algoritma dan Pemrograman 2021

5. HasilProgram

Modul VI – Pointer VI-12


Praktikum Algoritma dan Pemrograman 2021

6.5 ANALISIS DATA


6.5.1 Analisis Program
import java.util.Scanner;
Berfungsi untuk memasukkan semua library yang ada.
class user {
public String nama;
public int umur, indexTeman;
public int[] teman = new int[5];
Memasukkan class yang berisi nama, umur, index teman yang dimana teman ber-
array 5.
static user[] users = new user[10];
Memasukkan user yang dimana usernya ber-array dengan jumlah 10 user
boolean isLogin = false;
static int activeUser;
Perintah untuk mengecek apakah user sudah bias login atau tidak dan perintah
untuk menandai user yang sedang login.
static void menuUtama() {
int pilihan;
System.out.println("\nPilih salah satu : ");
System.out.println("1. Login");
System.out.println("2. Buat Akun\n3. Data semua akun\n4. Data
pertemanan\n5. Data saran pertemanan\n6. Exit");
Perintah men-set menu pilihan untuk menu utamanya yang dimana berisi menu
login, buat akun, data semua akun, data pertemanan, dan data saran pertemanan.
switch (pilihan) {
case 1:
login();
break;
case 2:
daftar();
break;
case 3:
printUser();
break;
case 4:
friendList();
break;
case 5:
suggestedFriend();
break;
default:
return;
Perintah untuk membuat menu pilihan dengan perintah “case” yang dimana
baerisi case login, daftar akun, user, daftar pertemanan, dan saran pertemanan.
System.out.println("\nSELAMAT DATANG " + users[index].nama);
System.out.println("=====================");

Modul VI – Pointer VI-13


Praktikum Algoritma dan Pemrograman 2021

System.out.println("1. Tambahkan teman");


System.out.println("2. Lihat teman");
System.out.println("3. Lihat saran pertemanan");
System.out.println("4. Menu utama");
System.out.println("Pilihan : ");

6.6 KESIMPULAN
Kesimpulan yang bisa diambil dari praktikum modul 6, antara lain:
1. Control statement dan looping adalah statement yang digunakan untuk
mengarahkan jalannya program sehingga urutan pengerjaan program dapat
melompat lompat atau berulang.

2. Function adalah sebuah struktur, Pengelompokan yang mengandung


sekelompok pernyataan yang akan dilaksanakan oleh CPU jika nama function
tersebut dipanggil untuk dieksekusi, kecuali untuk function utama yaitu int
main() yang akan dieksekusi secara otomatis. Array merupakan tipe data
terstruktur yang berguna untuk menyimpan sejumlah data yang bertipe sama.
Bagian yang menyusun array disebut elemen array (isi), yang masing-masing
elemen dapat diakses tersendiri melalui indeks array. Object adalah bentuk jadi
Modul VI – Pointer VI-14
Praktikum Algoritma dan Pemrograman 2021

dari Class. Jadi class itu template atau cetakan untuk sekelompok objek yang
memiliki properti yang sama. Class bisa terdiri dari Fields Template dari
keadaan (property) yang bisa membedakan objek yang satu dengan yang
lainnya.

Modul VI – Pointer VI-15


Praktikum Algoritma dan Pemrograman 2021

DAFTAR PUSTAKA

[1] Arimbi, Yuanita Frinka Dwi, “Mengenal Tipe Data Pointer”, Jurnal fakultas
Komputer, section 2.
[2] Eka W Fridayanthie, Jimmy Charter, “RANCANG BANGUN SISTEM
INFORMASI SIMPAN PINJAM”, Jurnal Techno Nusa Mandiri, vol.13, no.2,
September, 2016.

Anda mungkin juga menyukai