Professional Documents
Culture Documents
1
OUTLINE
1. Header
2. Function
3. Recursive function
4. Array
2
HEADERS
Header files
Berisi function prototypes untuk library functions
Misalnya: <stdlib.h> , <math.h> , etc
Panggil dengan perintah #include <filename>
#include <math.h>
3
1. HEADER
Standard library header Explanation
<assert.h> Contains macros and information for adding diagnostics that aid
program debugging.
<ctype.h> Contains function prototypes for functions that test characters for
certain properties, and function prototypes for functions that can
be used to convert lowercase letters to uppercase letters and vice
versa.
<errno.h> Defines macros that are useful for reporting error conditions.
<float.h> Contains the floating-point size limits of the system.
<limits.h> Contains the integral size limits of the system.
<locale.h> Contains function prototypes and other information that enables a
program to be modified for the current locale on which it is
running. The notion of locale enables the computer system to
handle different conventions for expressing data like dates, times,
dollar amounts and large numbers throughout the world.
5
Standard library header Explanation
CUSTOM HEADERS }
Contoh stdio.h berisi fungsi standar input dan output #include <stdio.h>
#include "myfunction.h"
7
FUNCTION
PROGRAM MODULES IN C
Modul-modul dalam C disebut functions
Program C biasanya kombinasi antara fungsi baru yang Anda buat dengan fungsi
“prepackaged” yang tersedia dalam C Standard Library.
C Standard Library memberi kemudahan, karena berisi banyak koleksi fungsi untuk
operasi matematika, manipulasi string, karakter, input/output, dan operasi berguna
lainnya.
9
PROGRAM MODULES IN C (CONT.)
Fungsi printf, scanf dan pow adalah contoh fungsi Standard Library
Pemrogram dapat membuat sendiri fungsi-fungsi yang digunakan dalam program →
programmer-defined functions
Pernyataan dalam fungsi hanya dibuat sekali, dan terpisah dari fungsi lainnya
Fungsi dijalankan dengan function call
Memanggil function name
Memberi informasi (sebagai arguments) ke fungsi tersebut agar dapat bekerja dengan baik
10
CONTOH: MATH LIBRARY
FUNCTIONS
Digunakan dalam fungsi matematis
Panggil:
Nama fungsi
Argumen (dalam kurung, dipisahkan koma)
Contoh, mencetak akar 900.0
printf( "%.2f", sqrt( 900.0 ) );
Fungsi dalam math library sqrt dipanggil untuk menghitung akar angka
dalam kurung (900.0)
Hasilnya: 30.0 (tipe double, jika format pencetakan menggunakan “%f”)
11
PANGGIL FUNGSI:
CALL-BY-VALUE AND CALL-BY-REFERENCE
Call by value
Salin argument yang dikirim ke fungsi
Perubahan di dalam fungsi tidak mengubah nilai asalnya
Digunakan jika fungsi tidak perlu mengubah argument
Mencegah perubahan tak sengaja
Perbedaan
Call by reference Call by value ➔ mengirimkan
Mengirim argument asal nilai ke fungsi untuk diolah
Perubahan dalam fungsi mengubah Call by reference ➔
nilai asalnya mengirimkan variabelnya
Hanya digunakan dengan fungsi yang secara langsung, bukan hanya
terpercaya nilainya
Saat ini, fokus pada call by value
13
MENGIRIMKAN NILAI KE DAN DARI FUNGSI
Bagaimana jika perlu komunikasi antara main dan fungsi yang dipanggil?
➔ Parameter passing: call by value dan call by reference
Komunikasi dari main ke fungsi: parameter (variabel) passing
Komunikasi dari fungsi ke main: return
Jika tidak perlu komunikasi dari fungsi ke main, maka tipe fungsi adalah void
Jika perlu komunikasi dari fungsi ke main, maka tipe fungsi disesuaikan dengan tipe nilai yang dikembalikan
14
MENDEFINISIKAN (MEMBUAT) FUNGSI
tipe_nilai_return nama_fungsi (parameter_passing)
{
deklarasi dan statement
}
15
MEMANGGIL FUNGSI
nama_fungsi (nilai_parameter_passing)
italy()
printf("Maximum is: %d\n", max(5,6,7));
maxi = max( 5,6,7);
16
MEMANGGIL FUNGSI DENGAN CALL BY VALUE
Saat argument dikirimkan by value, copy nilai argument dibuat dan dikirimkan ke fungsi
Perubahan nilai copy argumen ini tidak mengubah nilai asal di sisi pemanggil
Call-by-value digunakan jika fungsi yang dipanggil tidak perlu mengubah nilai variable
aslinya di sisi pemanggil
Hal ini akan mencegah efek samping tak sengaja (modifikasi nilai variable) yang
menghambat pengembangan sistem software yang benar dan handal
17
CONTOH
1
2 void swap(int x, int y)
3 {
4 int z;
5 z = x;
6 x = y;
7 y = z;
8 printf("Swapped values are a = %d and b = %d", x, y);
9 }
10
11 int main (int argc, char *argv[])
12 {
13 int a = 7, b = 4;
14 printf("Original values are a = %d and b = %d", a, b);
15 swap(a, b);
16 printf("The values after swap are a = %d and b = %d", a, b);
17 }
18
1 Original Values are a = 7 and b = 4
2 Swapped values are a = 4 and b = 7
3 The values after swap are a = 7 and b = 4
push value of b
push value of a
save return address
call function
MEMANGGIL FUNGSI DENGAN CALL BY REFERENCE
21
CONTOH
1
2 void swap(int *x, int *y)
3 {
4 int z;
5 z = *x;
6 *x = *y;
7 *y = z;
8 printf("Swapped values are a = %d and b = %d", *x, *y);
9 }
10 int main (int argc, char *argv[])
11 {
12 int a = 7, b = 4;
13 printf("Original values are a = %d and b = %d", a, b);
14 swap(&a, &b);
15 printf("The values after swap are a = %d and b = %d", a, b);
16 }
23
Hasil dan Flow Diagram
push value of b
push value of a
save return address
call function
FUNCTION PROTOTYPE
(DEKLARASI FUNGSI)
Dibutuhkan jika penulisan fungsi dilakukan setelah main program
Cara penulisannya sama seperti penulisan nama fungsi, namun diakhiri tanda titik
koma “;”
25
26 Contoh function prototype
#include <stdio.h>
int kuadrat (int y);
Deklarasi fungsi diakhiri “;”
int kubik (int y);
int main()
{
int a,b,c;
a = 5;
b = kuadrat(a);
c = kubik(a);
printf ( "nilai a = %d",a);
printf ( "\nkuadrat a = %d",b);
printf ( "\nkubik a = %d",c);
}
int kuadrat (int y)
{
return( y * y);
}
int kubik (int y)
{
y = y * y * y;
}
FUNGSI REKURSIF
FUNGSI REKURSIF
Fungsi yang memanggil dirinya sendiri → recursive
Definisi sirkular → proses mendefinisikan sesuatu dengan dirinya sendiri
Memanggil dirinya sendiri terus menerus sampai ditemukan “base” masalahnya
28
CONTOH FUNGSI REKURSIF
Factorials
5! = 5 * 4 * 3 * 2 * 1
Notice that
5! = 5 * 4!
4! = 4 * 3! ...
Can compute factorials recursively
Solve base case (1! = 0! = 1) then plug in
2! = 2 * 1! = 2 * 1 = 2;
3! = 3 * 2! = 3 * 2 = 6;
29
30
31
REKURSI VS ITERASI
Repetition
Iteration: explicit loop
Recursion: repeated function calls
Termination
Iteration: loop condition fails
Recursion: base case recognized
32
ARRAY
PENDAHULUAN
Struktur data dasar yang sangat berdaya guna
Sekumpulan data sejenis, mudah dikelola
Pengoperasian yang sangat sederhana, fleksibel dan canggih
34
KEGUNAAN
Dapat digunakan untuk mensimulasikan struktur data yang lain:
Stack
Queue
Tree
Graph
35
SIFAT-SIFAT
Sama seperti variabel lainnya, namun array terdiri atas beberapa bagian
Setiap bagian sama ukuran dan jenisnya serta dapat diolah sendiri-sendiri
Masing-masing bagian array disebut elemen atau unsur array
36
ILUSTRASI Kotak K terdiri dari 12 bagian
K
0 1 2 3 4 5 6 7 8 9 10 11
Perintah: “Taruh kelereng warna biru pada kotak K” →
membingungkan
Jelaskan harus ditaruh dimana kelereng tersebut
Ubah Perintah: “Taruh kelereng warna biru pada kotak
nomor 7”
K
0 1 2 3 4 5 6 7 8 9 10 11
37
FORMAT Array
Menempati kelompok lokasi memori berturut-turut
Nama dan tipe yang sama
38
CONTOH
Diambil dari materi Deitel – Deitel, C How to program Pearson Education Inc.
39
ELEMEN ARRAY
Elemen array seperti variabel biasa
c[ 0 ] = 3;
printf( "%d", c[ 0 ] );
Melaksanakan operasi dalam subscript
Jika x sama dengan 3
c[ 5 - 2 ] == c[ 3 ] == c[ x ];
40
PERINTAH
Pada algoritma, array dibuat dengan perintah sebagai
berikut:
41
ILUSTRASI
c
7681
0 1 2 3 4 5 6 7 8 9 10 11
42
DEFINISIKAN ARRAY
Mendefinisikan array, harus menspesifikasikan:
Nama
Tipe array
Jumlah element
TypeArray NamaArray [ jumlahElemen ];
Contoh:
int c[ 10 ];
float myArray[ 1765 ];
43
DEFINISIKAN ARRAY
Untuk mendefinisikan array lebih dari satu dengan tipe yang sama
Format sesuai variabel biasa
Contoh:
int b[ 100 ], x[ 27 ];
44
CONTOH ARRAY
Inisialisasi
int n[ 5 ] = { 1, 2, 3, 4, 5 };
int n[ 5 ] = { 0 } All elements 0
45
Operators Associativity Type
Operator precedence
46
ARRAY KARAKTER
Array karakter akan Setiap karakter dapat
membentuk string → jenis diakses
array statis karakter string1[ 3 ] berisi
karakter ‘s’
Array karakter dapat
diinisialisasi menggunakan Nama array adalah
literal string alamatnya, jadi tidak
diperlukan & untuk
char string1[] = pembacaan scanf
"first";
Karakter Null '\0’ mengakhiri string
scanf(
"%s",string2);
Variabel string1 sebenarnya Membaca karakter hingga
memiliki 6 elemen, ekivalen dengan menemukan whitespace
char string1[] = Hati-hati agar tidak mengisi
{'f', karakter melebihi ukuran array
'i','r','s','t','\0' string
};
47
LATIHAN
MEMBALIK ISI ARRAY
array diubah dengan mempertukarkan isi elemen array pertama dengan isi
elemen array terakhir, kemudian tukar isi elemen array yang kedua dengan isi
elemen array kedua dari akhir, dst.
Hasilnya: isi array terbalik urutannya dibandingkan array semula (bukan
hanya mencetak dengan urutan terbalik)
49
ANY QUESTIONS?