Anda di halaman 1dari 44

Program Studi S1 Sistem Informasi

UPN VETERAN JAKARTA

Pointer
Pertemuan 3
Struktur Data dan Algoritma

Tim Dosen:
1. Dr. Achmad Solichin, S.Kom., M.T.I
2. Helena N. Irmanda, S.Pd., M.Kom
3. M. Adrezo, S.Kom., M.Sc
4. Novi Trisman Hadi, S.Pd., M.Kom
5. Neny Rosmawarni, S.Kom., M.Kom
6. Rifka Dwi Amalia, S.Pd., M.Kom.
Outline

01 Pointer

Rekursif 02

03 Contoh-contoh

Latihan-latihan 04
APA ITU POINTER?
 Pointer adalah variabel yang berisi alamat memori suatu lokasi memori.

 Pointer berisi alamat dari variabel yang mempunyai nilai tertentu.

Deklarasi variabel pointer Contoh

type *nama; int *nilai;


OPERATOR PADA POINTER
 Operator deference ( & )
 Biasanya disebut dengan address of atau operator alamat.
 Dengan menggunakan operator deference (&) ini, suatu variabel akan
menghasilkan alamat variabel di memori.
 Operator reference ( * )
 Biasanya disebut value pointed by.
 Dengan menggunakan operator ini, kita dapat mengakses secara langsung nilai
yang terdapat pada suatu alamat memori.
CONTOH PROGRAM POINTER
45 0000 Deklarasi

A P
CONTOH PROGRAM POINTER
45 0000

A P
P diisi
45 0000 dengan
alamat dari
variabel A
A P

P
Untuk visualisasi
45 biasa dituliskan
seperti ini saja
A
CONTOH PROGRAM POINTER

P
45

Tercetak isi variable


yang ditunjuk oleh P
yaitu : 45
CONTOH PROGRAM 2
Luaran Program
X = 65
X = 65
P = 000000000062FE0C
X = 100
P = 000000000062FE0C
Y = 75
Q = 000000000062FE08
CONTOH PROGRAM 3: POINTER DAN ARRAY 1
DIMENSI Luaran Program
5 10 15 25 21 17
5 10 15 25 21 17
CONTOH PROGRAM 4: POINTER DAN ARRAY 2
DIMENSI
Latihan Soal
SOAL 1: APA YANG TERCETAK?
SOAL 2: APA YANG TERCETAK?
SOAL 3
Apa yang tercetak jika program berikut ini dijalankan?

Sudah dibuat array dua


dimensi int A[3][5] lengkap
dengan isinya, dengan
ilustrasi sebagai berikut :
Fungsi Rekursif
● Suatu fungsi yang memanggil dirinya sendiri.
● Sebuah fungsi yang merupakan bagian dari serangkaian pemanggilan
fungsi.

f1 f1 f2 … fn
Permasalahan yang cocok diselesaikan dengan Rekursif
● Satu atau beberapa kasus sederhana yang dapat diselesaikan secara mudah (tidak terlalu
rumit).
● Permasalahan-permasalahan yang dapat didefinisikan / disederhanakan menjadi
permasalahan yang lebih sederhana.
● Permasalahan dapat disederhanakan dengan menyelesaikan permasalahan yang lebih
kecil secara rekursif.

If this is a simple case


solve it
else
redefine the problem using recursion
Memecah Permasalahan

● Asumsikan bahwa permasalahan dengan ukuran 1 (size 1) dapat diselesaikan dengan


mudah (masalah sederhana)
● Kita dapat memecah permasalahan dengan menyelesaikan permasalahan size 1 dan
size n-1 secara rekursif.
ATURAN PENGGUNAAN FUNGSI REKURSIF

 Base case: Sekurang-kurangnya memiliki satu penyelesaian tanpa rekursif


(bentuk sederhananya).
 Make progress: Bentuk pemanggilan rekursif harus menuju ke bentuk paling
sederhananya (base case).
 “You gotta believe”: Selalu asumsikan bahwa pemanggilan fungsi rekursif
bekerja dengan baik.
 Compound interest rule: Jangan memanggil fungsi rekursif dua kali atau lebih
pada ruang lingkup yang sama.
Contoh 1: Perkalian 6 x 4

6*4 6 + (6 * 3) 6 + 6 + (6 * 2) 6 + 6 + 6 + (6 * 1)

Permasalaha Permasalaha
Permasalaha
n lebih n paling
n kompleks
sederhana sederhana
Contoh 1: Fungsi Perkalian dengan Rekursif

The simple case is “m*1=m.”

The recursive step uses the following equation: “m*n =


m+m*(n-1).”
The recursive step.

The recursive step.

The simple case.


Contoh 2: Hitung jumlah karakter

● Permasalahan: Hitung jumlah karakter yang ada di dalam suatu string


Contoh 2: Hitung jumlah karakter
Contoh 3: Faktorial
Contoh 3: Faktorial Cara 2: Dengan Fungsi Non-Faktorial

Cara 1: Tanpa Fungsi


Contoh 3: Faktorial
Cara 3: Dengan Fungsi Faktorial Cara 4: Dengan Fungsi Faktorial
Contoh Implementasi Fungsi Rekursif

Menu Struktur
Bertingkat Jabatan
REFERENSI
 Painem, R. Ragam, M. Sjukani. 2019. Modul Perkuliahan Pertemuan 11: Pointer. Jakarta: Fakultas
Teknologi Informasi, Universitas Budi Luhur.
Referensi
● Buku “Problem Solving and Program Design in C, 8 th edition”. Pearson Addison-Wesley.
● Slide “Bab 14. Recursion” oleh M. Sjukani, Univ Budi Luhur.
● Slide “Chapter 10. Recursion” from the books of “Problem Solving and Program Design in C, 4 th edition”
● http://achmatim.net/2012/03/19/fungsi-rekursif-dan-penerapannya-di-php/
● Catatan: Seluruh contoh Program dapat ditemukan di https://github.com/achmatim/algoritma/tree/main/java-program
REKURSIF
• adalah proses pengulangan item-item dengan cara yang mirip
• Secara algoritmik: suatu cara untuk mendesain solusi dari masalah
dengan cara divide-and-conquer
• apa itu divide-and-conquer? memecah-mecah masalah yang
ada menjadi beberapa bagian kecil sehingga lebih mudah
untuk diselesaikan

• Secara semantik: suatu teknik pemrograman dimana fungsi dapat


memanggil dirinya sendiri
6

1
125

25

5
REKURSIF
• Secara umum, masalah-masalah yang berkaitan dengan rekursif juga
dapat diselesaikan dengan solusi iteratif, tetapi kita perlu
mengidentifikasi dan mengindeks permasalahan yang lebih kecil pada
saat memprogram
• Dalam pemrograman, rekursif tidak boleh memiliki tujuan akhir yang
tidak terhingga
• Setidaknya rekursif harus memiliki 1 atau lebih kasus
pokok/basis(base case) yang mudah untuk diselesaikan
• Harus menyelesaikan permasalahan yang sama pada input yang lain
dengan tujuan dari penyederhanaan input masalah yang lebih besar
ALGORITMA REKURSIF FIBONACCI
● Apa saja pola bilangan Fibonacci?
● Pola bilangan ini terbentuk dari susunan bilangan yang diawali angka 0 dan 1,
kemudian suku setelahnya didapatkan dari hasil penambahan kedua suku
sebelumnya. Contoh dari pola bilangan Fibonacci adalah 0, 1, 1, 2, 3, 5, 8, dan
seterusnya. Rumus pola bilangan Fibonacci adalah Un = (n-1) + (n-2).
• Deret Fibonacci adalah deret yang didefinisikan sebagai berikut:

Anda mungkin juga menyukai