You are on page 1of 48

HEADER, FUNCTIONS, ARRAY S1 Teknik Elektro

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.

Fig. 5.6 | Some of the standard library headers. (Part 1 of 3.)

5
Standard library header Explanation

<math.h> Contains function prototypes for math library functions.


<setjmp.h> Contains function prototypes for functions that allow bypassing of
the usual function call and return sequence.
<signal.h> Contains function prototypes and macros to handle various
conditions that may arise during program execution.
<stdarg.h> Defines macros for dealing with a list of arguments to a function
whose number and types are unknown.
<stddef.h> Contains common definitions of types used by C for performing
certain calculations.

Fig. 5.6 | Some of the standard library headers. (Part 2 of 3.)

Standard library header Explanation

<stdio.h> Contains function prototypes for the standard input/output library


functions, and information used by them.
<stdlib.h> Contains function prototypes for conversions of numbers to text
and text to numbers, memory allocation, random numbers, and
other utility functions.
<string.h> Contains function prototypes for string-processing functions.
<time.h> Contains function prototypes and types for manipulating the time
and date.

Fig. 5.6 | Some of the standard library headers. (Part 3 of 3.)


6
myfunction.h
int kuadrat (int y)
{
return( y * y);

CUSTOM HEADERS }

int kubik (int y)


{
Fungsi dapat disimpan dalam nama file terpisah dari program
y = y * y * y;
pemanggilnya }

Program yang berisi fungsi-fungsi saja tanpa ada main program,


disebut Header (ekstensi .h) Programku.c

 Contoh stdio.h berisi fungsi standar input dan output #include <stdio.h>
#include "myfunction.h"

Menggunakan fungsi yang sudah disediakan oleh library C int main()


 #include <header_filename> {
int a,b,c;
 Contoh: #include <stdio.h>
a = 5;
b = kuadrat(a);
Menggunakan fungsi yang dibuat sendiri
c = kubik(a);
 #include “header_filename”
printf ( "nilai a = %d",a);
 Contoh: #include “myfunction.h” printf ( "\nkuadrat a = %d",b);
printf ( "\nkubik a = %d",c);
}

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
}

void italy () Tipe return void


{ (tidak mengembalikan nilai ke main)
printf ( "\nI am in italy" ) ; Nama fungsi italy
} Parameter_passing: tidak ada (void)
int fun_max (int a, int b, int c)
{
int max = a; Tipe return int
if ( b > max ) (mengembalikan nilai max berupa integer)
{ max = b;} Nama fungsi fun_max
if ( c > max ) Parameter_passing: a, b, c
{ max = c;}
return max;
}

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

Jika sebuah argumen dikirimkan ke fungsi by reference, pemanggil membolehkan


fungsi mengubah nilai aslinya
Call-by-reference hanya digunakan dengan fungsi-fungsi yang terpercaya yang
memerlukan perubahan nilai asli variabel argument
Pada bahasan selanjutnya mengenai array, fungsi yang mengirimkan array sebagai
argument otomatis dikirimkan 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

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 = 4 and b = 7

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 “;”

int max (int a, int b, int c);

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

Contoh rekursif faktorial 5!.


CONTOH PROGRAM FAKTORIAL TANPA DAN
DENGAN REKURSI
int factorial ( int x ) int rec ( int x )
{ {
int f = 1, i ; int f ;
for ( i = x ; i >= 1 ; i-- ) if ( x == 1 ) || (x == 0)
f=f*i; return ( 1 ) ;
return ( f ) ; else
} f = x * rec ( x - 1 ) ;
return ( f ) ;
int main( ) }
{
int a, fact ; int main( )
printf ( "\nEnter any number " ) ; {
scanf ( "%d", &a ) ; int a, fact ;
fact = factorial ( a ) ; printf ( "\nEnter any number " ) ;
printf ( "Factorial value = %d", fact ) ; scanf ( "%d", &a ) ;
} fact = rec ( a ) ;
printf ( "Factorial value = %d", fact ) ;
}

31
REKURSI VS ITERASI
Repetition
 Iteration: explicit loop
 Recursion: repeated function calls

Termination
 Iteration: loop condition fails
 Recursion: base case recognized

Both can have infinite loops


Balance
 Choice between performance (iteration) and good software engineering (recursion)

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

Merefer sebuah elemen dengan menspesifikasi:


 Nama array
 Nomor posisi
Nama array[nomor posisi]
 Elemen pertama diberi nomor 0
 Array C dengan n elemen memiliki anggota:
 c[ 0 ], c[ 1 ], ... c[ n – 1 ]

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:

c[12]: array integer

Akan dibuat array bernama c yang terdiri dari 12


elemen numerik tipe integer
Setiap elemen diberi nomor 0 s/d 11 yang disebut
indeks array
Bisa juga berisi karakter (sesuai kebutuhan)

41
ILUSTRASI
c
7681

0 1 2 3 4 5 6 7 8 9 10 11

Untuk menyimpan bilangan 7681 pada elemen ke–4


array C, dibuat perintah sebagai berikut:
C[3] = 7681;

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

Jika ukuran dihilangkan, akan ditentukan oleh inisialisasi


int n[ ] = { 1, 2, 3, 4, 5 };
 Ada 5 inisialisasi, ada 5 elemen pada array

45
Operators Associativity Type

[] () left to right highest

++ -- ! (type) right to left unary

* / % left to right multiplicative

+ - left to right additive

< <= > >= left to right relational

== != left to right equality

&& left to right logical AND

|| left to right logical OR

?: right to left conditional

= += -= *= /= %= right to left assignment

, left to right comma

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?

You might also like