Anda di halaman 1dari 52

Modul Perkuliahan

DTE203 Pemrograman Komputer


Program Studi D3 Teknik Elektro

Oleh:
Djuniadi

JURUSAN TEKNIK ELEKTRO


FAKULTAS TEKNIK
UNNES
DAFTAR ISI

MODUL 1 …………………………………………………………………….. 3
MODUL 2 …………………………………………………………………….. 7
MODUL 3 …………………………………………………………………….. 13
MODUL 4 …………………………………………………………………….. 19
MODUL 5 …………………………………………………………………….. 24
MODUL 6 …………………………………………………………………….. 34
MODUL 7 …………………………………………………………………….. 37
MODUL 8 …………………………………………………………………….. 45
MODUL 9 …………………………………………………………………….. 50

2
MODUL 1
PENGANTAR

Apa itu Pemrograman Komputer?


• Pemrograman Komputer = ilmu tentang abstraksi.
• Abstraksi merupakan proses untuk menciptakan model yang tepat untuk suatu
masalah dan merancang teknik – teknik yang dapat dimekanisasikan guna
menyelesaikan masalah tersebut.

Tujuan :
• Ilmu Komputer harus mampu melakukan abstraksi atas masalah-masalah
dunia nyata supaya dapat dipresentasikan dan diolah dalam komputer.
• Ilmu Komputer berakar pada Matematika dan Ilmu Teknik.

Start
Problem sorving
Phase Implementation phase

Problem
definition

Algorithm Coding
design algorithm as a
program

Dekstop Testing
testing

Working
program

Gambar 1. Sistematika Program

3
Pengenalan Komputer
• Komputer : suatu mesin yang melakukan tugas-tugas yang sangat sederhana
berdasarkan instruksi - instruksi tertentu.
Komputer begitu berguna karena tugas - tugas sederhana tersebut dilakukan
dengan kecepatan dan ketelitian yang sangat tinggi.

• Program : sekumpulan instruksi untuk dilaksanakan oleh suatu komputer


Kumpulan program - program untuk suatu komputer disebut software
(perangkat lunak).
Software-lah yang membuat suatu komputer dapat melakukan tugas yang
canggih.
Bagian - bagian fisik dari sebuah komputer atau system computer : hardware
(perangkat keras).

• Komputer terdiri dari 4 komponen utama:


1) CPU (central processing unit)
2) Output device : CRT screen/monitor, printer, …
3) Input device : keyboard, mouse, scanner, …
4) Memory : primer (primary) dan sekunder (secondary)

• CPU :
- Otak dari komputer.
- Yang melaksanakan instruksi-instruksi dalam suatu program
- Dapat melaksanakan perhitungan (aritmetik): tambah, kurang, kali, bagi,
compare.

4
CPU

Memory

0
1
Input device 2 Output device
3
4
5
6
7
8
9
10
11
12

Gambar 2. Komponen utama komputer

• Instruksi-instruksi dalam suatu BTT (bahasa tingkat tinggi) jauh lebih rumit
dari pada instruksi-instruksi sederhana yang dapat diikuti langsung oleh CPU
suatu komputer. Jenis bahasa yang dapat diikuti langsung oleh komputer
disebut BTR (bahasa tingkat rendah / low level languages).
• Contoh instruksi tingkat rendah (assembly language):
ADD A, B, C
Hal ini dapat dijelaskan sebagai berikut, tambahkan bilangan di lokasi
memori A ke bilangan di lokasi memori B dan taruh hasilnya di lokasi
memori C.
• Instruksi- instruksi dalam bahasa assembly masih harus diterjemahkan ke
dalam bahasa mesin (machine language).
• Instruksi- instruksi dalam bahasa mesin terdiri dari 0 dan 1.
Misal : ADD A, B, C =0110 0001 0010 0011

5
• Untuk memecahkan suatu masalah dengan komputer, bagian yang paling sulit
sesungguhnya adalah mendapatkan langkah-langkah penyelesaiannya.
Langkah-langkah yang jelas dan lengkap dan yang dapat memberikan solusi
itu disebut algoritma (algorithm).
• Bahasa Tingkat Tinggi ( High level languages).
- Mirip bahasa manusia
- Relative mudah untuk menulis program
- Relative mudah untuk dibaca oleh manusia  program mudah dirawat.
- Memberikan keuntungan : readability, maintainability, portability
• Contoh BTT : C, C++, BASIC, Pascal, LISP, COBOL, FORTRAN, Ada,
PROLOG, ML, …
• Setiap bahasa tingkat tinggi harus diterjemahkan ke dalam bahasa mesin
sebelum komputer dapat mengikutinya.
Program yang menterjemahkan suatu BTT ke bahasa mesin disebut
kompilator (compiler )
• Sistem operasi (operating system) :
Program yang mengontrol dan mengelola program-program lain untuk
kemudahan bagi manusia.
Manusia berkomunikasi dengan mesin komputer lewat suatu operating
system.
Contoh : MS – DOS, UNIX, Windows 95, …

6
MODUL 2
DASAR PEMROGRAMAN C

Mengenal bahasa C
• C dirancang oleh Dennis Ritchie di Belll Laboratories pada tahun 1972
• C dibakukan pada tahun 1989 oleh ANSI (American National Standards
Institute). Juga disetujui oleh
ISO ANSI C
• System C :
o Bahan C (memiliki sekumpulan perintah-perintah yang terbatas)
o Standard Libraries (prosedur / program-program yang sudah ada
yang dapat dipakai)
o Environment (sistem operasinya)
 UNIX – Based
 PC – Dos – based
 Windows based
 dll
Sebelum C adalah B
Bahasa C :
• Borland C
• Turbo C
• Microsoft C

Contoh program sederhana :


#include <stdio.h>
main () {
printf(“Selamat datang\n”);
printf(“dalam dunia pemrograman C”);
}
 Program C yang belum decompile dapat di compile dengan unit based, dos
based dll
 Pelaksanaan perintah line perline secara sequensial

7
Program penjumlahan bilangan

1. /* contoh program C */
2. # include <stdio.h>
3. main ( ) {
4. int bil1, bil2, jum;
5. printf (“ ketik bilangan pertama : “);
6. scanf (“ %d “, & bil1);
7. printf (“ ketik bilangan kedua : “);
8. scanf (“ %d “, & bil2);
9. jum = bil1 + bil2;
10. printf (“Jumlah kedua bilangan tersebut = %d \n “ , jum);
11. return 0;
12. }

Keterangan:
1. [ /*……….*/ ] menyatakan comment (komentar)
- Diabaikan oleh kompilator
- Memberi keterangan tentang program
- Membantu manusia untuk membaca dan mengerti program
- Membantu manusia untuk merawat program
- Harus jelas dan singkat
2. Suatu directive untuk C-preprocessor
- Baris-baris yang diawali # diolah oleh preprocessor sebelum di compile
- Baris-baris itu menyuruh preprocessor untuk meng- include isi dari file
stdio.h dalam program
- stdio.h adalah standard input output header file, yang mengandung
informasi dan deklarasi - deklarasi yang digunakan oleh kompilator untuk
penanganan fungsi-fungsi i/o seperti printf, scanf, dsb.
3. Tanda kurung ( ) pada “main ( )” adalah suatu fungsi dengan nama main
- Setiap program C yang lengkap harus minimal mengandung satu fungsi
dengan nama main

8
- Setiap program C terdiri dari satu atau lebih fungsi
- Setiap program C dilaksanakan (dieksekusi) mulai dari fungsi main
- Kurung kurawal { } mengapit nol atau lebih statement, yang membentuk
body dari fungsi
- Block program merupakan bagian program yang di apit oleh { }
4. Merupakan suatu declaration (deklarasi)
- Bil1, bil2 dan jum adalah nama-nama variabel.
- Variabel adalah lokasi dalam memori dimana suatu nilai dapat disimpan dan
dapat dibaca untuk digunakan oleh program.
Memori
bil1

bil2

jum

- Declaration (deklarasi) itu menyatakan bahwa variabel - variabel bila1, bil2,


dan jum masing-masing bertipe int; dan menyebabkan memori dialokasikan
untuk tiap variabel tersebut.
- Jika suatu variabel diberi nilai baru, nilai lamanya hilang (ditimpa).
- Sebelum bisa dipakai, setiap variabel harus dideklarasikan dengan sebuah
nama dan sebuah tipe.
Tipe menyatakan jenis nilai yang bisa disimpan dalam variabel itu dan
operasi apa yang bisa dilakukan pada variabel tersebut.
Variabel bertipe int dapat berisi nilai-nilai berupa bilangan bulat, missal -7,
0, 152 dsb.
- Nama variabel adalah suatu identifier (tanda pengenal).
Identifier dalam bahasa C adalah suatu karakter-karakter yang terdiri dari
huruf, angka dan underscove ( _ ), yang tidak dimulai dengan angka.
Panjang identifier sebaiknya tidak lebih dari 31 karakter, karena hanya 31
karakter pertama yang membedakan.

9
Contoh identifier :
Bilangan2
-ABC-
A3b
Lion – King
Orang – baik
- Nilai maksimum yang dapat ditampung oleh variabel bertipe int
biasanya : 32767 (= INT – MAX)
Nilai minimum tipe int biasanya : -32768 (= INT – MIN)
- INT – MAX dan INT – MIN didefinisikan dalam file (limits.h)
32767 = 215 – 1
5. Baris ini merupakan suatu statement yang menginstruksikan computer untuk
melakukan suatu aksi (action), yaitu mencetak string yang diapit oleh “ “ ke
layar monitor.
- Setiap statement harus diakhiri dengan tanda ;
\n tidak dicetak
Backslash ( / ): dikarenakan escape, mengubah arti karakter yang
mengikutinya.
\n berarti newline (cursor pindah ke awal baris berikutnya).
\n merupakan satu kesatuan yang disebut escape – sequence
- Escape – sequence lainnya : \a (bell alert), \\ ( \ ), \” ( “ ), \t ( tab), \r (return).
6. Statement ini dipakai untuk memperoleh masukan dari pemakai berupa sebuah
bilangan bulat.
- scanf mengambil input dari standard-input, yang biasanya adalah keyboard.
- Argument pertama untuk scanf : “ %d “ menyatakan tipe data yang harus
dimasukkan pemakai.
% escape character
d decimal integer
- Argumen kedua untuk scanf : &bil2 menyatakan alamat memori dimana
nilai yang didapatkan dari pemakai akan disimpan.
& : operator address (alamat)
& bil1 memberikan address dari variabel bil1.

10
9. Suatu assignment – statement
Pihak – kiri = pihak – kanan;
Maknanya: nilai dari pihak – kanan disimpan ke variabel di pihak – kiri.
jum = bil1 + bil2;
Berarti: nilai yang diperoleh dari menjumlahkan nilai bil1 dan nilai bil2
disimpan dalam variabel jum.
Nilai lama dari variabel jum menjadi hilang. Tetapi nilai dari variabel bil1 dan
bil2 masing-masing tetap.

Sebelum Sesudah
assignment assignment
bil1 bil1 15
15

bil2 -6 bil2 -6

jum 0 jum 9

- + dan = adalah operator-operator biner, karena perlu dua operator.


Operator biner Operator-operatornya
+ bil1, bil2
= jum, bil1 + bil2
- Operator menandakan suatu operasi.
10. Statement ini menggunakan printf untuk mencetak pesan jumlahnya = diikuti
dengan nilai dari jumlah.
“ Jumlah kedua bilangan tersebut = %d\n “ : format – control – string.
%d : conversion specifier, menyatakan bahwa suatu integar akan dicetak
ditempatnya.
11. Statement
return 0; menyalurkan nilai Ø (nol) kepada system operasi. Berdasarkan
kesepakatan, nilai Ø menandakan bahwa program telah berjalan dengan
sukses.

11
12. } menandakan akhir dari fungsi main.
Program selesai kalau } sudah tercapai.
Hasil program :
Ketik bilangan pertama : 15
Ketik bilangan kedua : -6
Jumlah kedua bilangan tersebut : 9

Program diatas (tanpa mengubah keluarannya) dapat ditulis menjadi sebagai


berikut,:
/*Versi lain dari contoh program
*Variabel jumlah dapat ditiadakan
*/
# include <stdio.h>
main () {
int bil1;
int bil2;

printf ( “ ketik bilangan pertama: “ );


scanf ( “ %d “, & bil1);
printf ( “ ketik bilangan kedua: \n “ );
scanf ( “ %d “, & bilangan2);
printf ( “ jumlah kedua bilangan tersebut = %d\n “ , bil1 + bil2 );
return 0;
}

12
MODUL 3
KATA KUNCI DALAM C

Kata-kata (keywords) berikut ini mempunyai arti khusus dalam ANSI C dan tidak
boleh dipakai sebagai nama variabel.

Auto double int struct


Break else long switch
Case enum register typedef
Char extern return union
Const float short unsigned
Continue for signed void
Default goto sizeof volatile
Do if static while

Tabel 1. Aritmatika
Operasi Operator Contoh Ekspresi
penjumlahan + x + y
pengurangan - x – y
perkalian * x * y
Pembagian / x / y
Modulus % x % y

• Untuk x dan y yang bertipe integer,


Ekspresi x/y memberikan hasil sebuah integer.
Contoh :
15/3 memberikan 5
7/4 memberikan 1
3/6 memberikan 0

13
• Operator modulus hanya berlaku untuk bilangan bulat.
Ekspresi
x%y
memberika sisa dari pembagian x oleh y.
Contoh :
4%2 memberikan 0 (baca : 4 mod 2)
2%4 memberikan 2
21 % 5 memberikan 1
• Perhatikan bahwa beberapa simbol mempunyai arti yang bergantung pada
konteks.
Bandingkan arti-arti symbol % dalam statement :
printf (“Hasil a %% b = %d” , a % b );

• Setiap operator mempunyai precedence (presedensi) dan associativity


(asosiativitas), yang menentukan bagaimana suatu ekspresi dievaluasi.
• Urutan pengevaluasian suatu ekspresi adalah sbb :
Ekspresi atau bagian ekspresi yang berada dalam tanda kurung ( ) dievaluasi
lebih dulu. Ekspresi dalam tanda kurung yang paling dalam dievaluasi paling
dulu.
Operator dengan presedensi lebih tinggi terkait lebih kuat dengan operand -
operandnya, dibandingkan dengan operator dengan presedensi lebih rendah.
Jadi operator dengan presedensi lebih tinggi dievaluasi lebih dulu.
Contoh :
1 + 2 * 3 memberikan 7
(1 + 2) * 3 memberikan 9

Untuk operator-operator dengan presedensi yang sama, urutan evaluasi


ditentukan oleh asosiativitas : left-to-right (dari kiri ke kanan) atau right-to-left
(dari kanan ke kiri).

14
Contoh :
int a=1, b=2, c=3;
Ekspresi Ekspresi setara Nilai
a * b / c (a * b) / c 0
-a * b - c ( (-a ) * b) - c -5
1 + a*b %c 1 + ( (a*b) %c) 3

Tabel 2. Asosiativitas
OPERATORS ASSOCIATIVITY
( ) [ ] left to right
! ~ ++ -- + - * & (type) sizeof right to left
* / % left to right
+ - left to right
<< >> left to right
< <= > >= left to right
== != left to right
& left to right
^ left to right
: left to right
&& = dan left to right
:: = atau left to right
? : right to left
= + = - = * = / = % = & = ^ = | = << = >> = right to left
, left to right

if-statement

Komputer dapat disuruh membuat keputusan berdasarkan kondisi tertentu, melalui


if-statement. Ada 2 bentuk if-statement :
if (kondisi) statement
if (kondisi) statement 1 else statement 2

15
• Semantik (makna) dari
If (kondisi) statement
Adalah :
Kondisi dievaluasi; jika nilainya true (benar), maka statement
dilaksanakan.
• Semantik dari
if (kondisi) statement1 else statement2
Adalah :
Kondisi dievaluasi ; jika nilainya true, maka statement1 dilaksanakan ; jika
tidak , maka statement2 dilaksanakan.

Dalam bahasa C, kondisi berupa suatu ekspresi yang dapat


bernilai nol atau tidak nol. Nilai nol dianggap sama dengan
false, nilai tidak-nol dianggap sama dengan true.

Operator
Operator-operator yang biasa dipakai untuk membentuk kondisi adalah operator -
operator kesamaan (= =, ! =) dan operator-operator relasional (<, > , < =, >=).
Operator kesamaan membentuk ekspresi kesamaan.
Operator relasional membentuk ekspresi relasional.

Tabel 3. Operator dan relasi


Operator Ekspresi Makna
== a == b a sama dengan b
!= a != b a tidak sama dengan b
> a > b a lebih besar dari b
< a < b a lebih kecil dari b
>= a >= b a lebih besar dari atau sama dengan b
<= a <= b a lebih kecil dari atau sama dengan b

16
Contoh :
int a=10, b=15;
Ekspresi Nilai numerik Nilai lojik
a == b 0 false
a != b 1 true
a > b 0 false
a < b 1 true
a > = 10 1 true
69 < = b 0 false
b 15 true

/*
∗ Contoh pemakaian if -statement , operator kesamaan
∗ Dan operator relasional
*/

#include <stdio.h>
main ( ) {
int bill , bil 2;
printf (“Hai, ketikkan dua bilangan bulat , \n”) ;
printf (“nanti saya beri tahu hubungan \n”) ;
printf (“antara keduanya : “) ;
scanf (“%d %d” , &bil1 , &bil2) ;
if (bil1 = = bil2)
printf (“%d sama dengan %d\n”, bil1, bil2) ;
if (bil1 ! = bil2)
printf (“%d tidak sama dengan %d\n”, bil1, bil2) ;
if (bil1 < bil2)
printf (“%d lebih kecil dari %d\n”, bil1, bil2) ;
if (bil1 > bil2)
printf (“%d lebih besar dari %d\n”, bil1, bil2) ;
if (bil1 %2 = = 0 )
printf (“%d adalah bilangan genap %d\n”, bil1, bil2) ;
else
printf (“%d adalah bilangan gasal %d\n”, bil1, bil2) ;
printf (“\nSampai jumpa lagi ! \n”) ;
return 0; /* Program berakhir dengan baik */
}

17
Contoh hasil :

Hai, ketikkan dua bilangan bulat,


nanti saya beri tahu hubungan
antara keduanya : 19 256
19 tidak sama dengan 256
19 lebih kecil dari 256
19 adalah bilangan gasal
Sampai jumpa lagi !

Salah satu keampuhan komputer adalah dapat melaksanakan


sejumlah aksi atau operasi secara berulang-ulang hingga suatu
kondisi terpenuhi.
Untuk melakukan pengulangan (iterasi) , kita dapat menggunakan
suatu iteration – statement (statement iterasi). Salah satu statement
iterasi berbentuk :
While (ekspresi) statement
Semantiknya :
Ekspresi dievaluasi ; jika nilainya tidak-nol (true), maka
statement dilaksanakan dan setelah itu ekspresi dievaluasi lagi,
dan seterusnya. Siklus ini berlangsung terus sampai ekspresi
bernilai nol (false) , yaitu apabila ekspresi bernilai nol,
keseluruhan while-statement itu langsung selesai.

/ * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*
* Contoh penggunaan while-statement tunggal*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#include <stdio.h>
main ( ) {
int pangkatDua = 1 ;
while (pangkatDua < = 100 )
pangkatDua = pangkatDua * 2 ;
printf (“Nilai pangkatDua = %d\n”, pangkatDua ) ;
return 0;
}
Output :

Nilai pangkatDua = 128

18
MODUL 4
STATEMENT

Statement terdiri dari


1. Statement tunggal
2. Statement majemuk (compound-statement atau block)

• Nol atau lebih statement dalam kurung kurawal disebut statement majemuk.
• Sesudah kurung buka { dan sebelum statement boleh ada deklarasi.
• Statement majemuk dapat ditempatkan dimana saja.
• Suatu statement majemuk tidak diakhiri tanda titik-koma, tetapi diakhiri
kurung tutup }.

/* Contoh penggunaan statement majemuk.


* Program ini menghitung nilai rata-rata dengan
* Interasi yang dikontrol oleh suatu counter.
*/
#include < stdio.h >
#define JUMLAH_NILAI 10
main () {
float rata-rata;
int counter, nilai, total;

printf ( “ *** penghitungan Nilai rata-rata Kelas *** \n” ) ;


total = 0 ;
counter = 1 ;
/ * tahap pengolahan */
while ( counter <= JUMLAH_NILAI ) {
printf ( “Masukkan nilai : “ ) ;
scanf ( “%d”, &nilai ) ;
total = total + nilai ;
counter = counter + 1 ;
}
/ * tahap penyelesaian * /
rata_rata = (float ) total / JUMLAH_NILAI ;
printf (“Nilai rata-rata kelas adalah % .2f \n” , rata_rata ) ;
return 0 ;
}

19
Hasilnya :

*** Penghitungan Nilai Rata-rata Kelas ***


Masukkan nilai : 76
Masukkan nilai : 71
Masukkan nilai : 98
Masukkan nilai : 87
Masukkan nilai : 83
Masukkan nilai : 90
Masukkan nilai : 57
Masukkan nilai : 79
Masukkan nilai : 94
Masukkan nilai : 82
Nilai rata - rata kelas adalah 81.70

Tipe float mencakup bilangan - bilangan yang mengandung pecahan, seperti :


81.70; 0.6; 2.55, dsb.
Apa yang terjadi kalau kurung kurawal { } setelah while ( ) dihilangkan?
Statement :
printf (“ Masukkan nilai : “ ) ;
Akan diulang terus tanpa berhenti, karena kondisi
counter <= JUMLAH_NILAI
tidak pernah menjadi false. D.k.l. terjadi pengulangan tak hingga (infinite–loop).

Supaya pembagian total / JUMLAH_NILAI itu tidak dilakukan secara integer,


maka kita buat nilai salinan sementara bertipe float dari nilai total.
Caranya : gunakan operator cast (float)
Penggunaan operator cast seperti ini disebut Explicit – conversion (konversi
eksplisit ).
Operator cast dapat dibuat dari setiap tipe data; bentuknya :
(nama – tipe )
Operator cast adalah suatu operator unary .

20
Conversion – specifier
%. 2f
Menyatakan bahwa suatu bilangan pecahan (floating – point number) akan
ditayangkan dengan ketelitian 2 angka desimal di kanan titik decimal.
Contoh :
Printf (“%.2f” , 3.447 ) ; /* cetak 3.45 */
Printf (“%.1f” , 3.447 ) ; /* cetak 3.4 */
%f identik dengan %. 6f

Assignment operator
Operator - operator Assignment dan Ekspresi = adalah suatu operator biner; oleh
karena itu Variabel = pihak_kanan. Hal ini merupakan suatu ekspresi. Nilai dari
pihak_kanan disimpan ke variabel. Nilai dari pihak_kanan ini juga menjadi nilai
dari ekspresi assignment itu secara keseluruhan .
Contoh :
int a = 1, b = 2;
Ekspresi Nilai Ekspresi
a=a+3 4
b=b-7 -5
Statement merupakan satuan terkecil yang dapat dieksekusi. Statement diakhiri
dengan tanda titik - koma. Statement yang paling sederhana adalah null-statement
(statement kosong):
;
Suatu ekspresi yang diikuti oleh tanda titik-koma merupakan suatu statement.
Contoh: a = 3;
b = b + 2;
Statement berikut ini tidak berguna, karena tidak ada efeknya.
a + 1;
Statement
a = b = c = 1;
Ekivalen dengan
a = ( b = ( c = 1 ) );

21
Karena asosiativitas operator = adalah right–to-left jadi, c diberi nilai 1 dan
ekspresi c = 1 mempunyai nilai 1. Kemudian b diberi nilai 1 itu dan ekspresi b =
(c = 1) mempunyai nilai 1 . akhirnya a diberi nilai 1 itu dan ekspresi a = (b = (c =
1) ) mempunyai nilai 1.

Statement
total = total + nilai;
Dapat disingkat menjadi
total += nilai;
+ = adalah juga suatu assignment – operator.

Semua assignment – operator dalam C adalah:


= += -= *= /= %= >>= <<= &= ^= |=
Semua operator ini mempunyai presendensi dan asosiativitas right – to - left.
Makna ( semantic ) dari Variabel op = ekspresi
Ekivalen dengan makna dari Variabel = variable op (ekspresi)
Kecuali bahwa variable dalam bentuk yang ringkas itu dievaluasi hanya satu kali.
Jadi waktu eksekusi yang bentuk yang ringkas bias lebih pendek.
j *= k + 3 ekivalen dengan j = j * (k+3)
bukan j = j *k+3

Increment operator
Operator increment (tambah 1) ++ dan Operator decrement (kurang 1) - -
merupakan operator unary , dapat diterapkan pada variabel.
Keduanya dapat berada pada posisi prefix ataupun postfix, dengan semantic yang
berbeda.
Ekspresi Efek Nilai Ekspresi
++i Nilai bertambah 1 Nilai i baru
i++ Nilai bertambah 1 Nilai i baru
--i Nilai bertambah 1 Nilai i baru
i-- Nilai bertambah 1 Nilai i baru

22
Contoh:
int a, b, c = 0;
a = ++c;
b = c++;
Printf ( “%d %d\n “ , a,b,++c ) ; /* cetak : 1 1 3 */

23
MODUL 5
PENGULANGAN

Struktur pengulangan
• Pengulangan (repetition/looping) dapat dikontrol dengan :
counter, atau
sentinel (nilai pembatas)
Jika jumlah iterasi diketahui sebelumnya, gunakan counter.
Counter merupakan suatu variabel untuk menghitung jumlah iterasi.
Sentinel dipakai untuk mengontrol looping apabila :
1) Jumlah iterasi tidak diketahui sebelumnya
2) Loop itu mengandung statement untuk mengambil data dalam tiap
iterasi
Sentinel (nilai pembatas) menyatakan akhir data. Sentinel harus muncul
setelah semua data regular telah muncul. Sentinel harus berbeda dengan data
regular.
• Statement while dapat dikontrol dengan counter maupun sentinel.

for dan while


Pengulangan yang dikontrol dengan counter lebih mudah dilakukan dengan
menggunakan statement for yang berbentuk :
for (ekspresi1 ; ekspresi2; ekspresi3)
statement
Statement ini ekivalen dengan
ekspresi1 ;
while (ekspresi2) {
statement
ekspresi3;
}
ekspresi1 menginisialisasi counter (variabel pengontrol loop);
ekspresi2 merupakan kondisi yang menentukan kelanjutan looping ; ekspresi3
mengubah nilai counter.

24
/* Contoh penggunaan for-loop */
#include <stdio.h>
main ( ) {
int i ;
/ * Mengubah counter i dari 1 s / d 10,
* dengan kenaikan 1
*/
for ( i = 1 ; i < = 10 ; i++ )
printf (“%d “, i) ;
printf (“\n”) ;
/ * Mengubah counter idari 10 s / d 1,
* dengan kenaikan -1 (penurunan 1 )
*/
for ( i = 10 ; i > = 1 ; i-- )
printf (“%d “, i) ;
printf (“\n”) ;
/ * Mengubah counter i dari 2 s / d 20,
* dengan kenaikan 3
*/
for ( i = 2 ; i < = 20 ; i+ = 3 )
printf (“%d “, i) ;
printf (“\n”) ;
return 0 ;
}
Output :

1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
2 5 8 11 14 17 20

25
/*
* Program ini melakukan penjumlahan :
* 1 + 2 + 3 + ... + N
*/
#include <stdio.h>
main ( ) {
long int jumlah = 0 ;
int bilangan, N;
printf (“Mau menjumlahkan 1 s / d berapa ? “) ;
scanf (“%d” , &N);
for (bilangan=1 ; bilangan <= N; ++bilangan)
jumlah + = bilangan ;
printf (“1 + 2 + . . . + %d = %1d\n”, N, jumlah);
return 0 ;
}
Output :
Mau menjumlahkan 1 s / d berapa ? 99
1 + 2 + . . . + 99 = 4950

• variabel bertipe long int (dapat disingkat long) dapat menampung bilangan
bulat, biasanya dari -2147483648
(LONG_MIN) sampai dengan + 2147483647 (LONG_MAX)
Konstanta LONG_MAX dan LONG_MIN didefinisikan dalam header-file
<limits.h>
• Conversion-specifier %1d dipakai untuk menampilkan nilai bertipe long int.
• ekspresi1, ekspresi2 dan ekspresi3 dalam suatu statement for adalah
opsional (dapat dihilangkan). Jika ekspresi2 tidak ada, maka kondisi itu
dianggap selalu true.
Jadi
for (;;) {
...
}

26
merupakan suatu infinite-loop. (Dapat dipecah dengan menggunakan return
atau break.)

do - while
• Ada satu lagi statement untuk melakukan looping, yaitu statement do/while,
yang bentuknya :
do {
statement
} while (kondisi) ;
Berbeda dengan statement while, statement do-while melakukan evaluasi
terhadap kondisi sesudah pelaksanaan statement. Jadi dalam suatu loop do-
while, statement dilaksanakan minimal satu kali.

/* Contoh penggunaan statement do/while */


#include <stdio.h>
main ( ) {
int counter = 1 ;
do {
printf (“%d “, counter++) ;
} while (counter < = 10) ;
return 0 ;
}
Output :

1 2 3 4 5 6 7 8 9

Statement break dan continue


• Untuk mengubah alur kontrol
• Pelaksanaan statement break dalam struktur while, for, do-while atau
switch menyebabkan keluar segera dari struktur tsb.

27
/* Contoh penggunaan break dalam struktur for * /
#include <stdio.h>
main ( ) {
int x ;
for (x = 1; x < = 10; x++) {
if (x = = 5) break;
printf (%d “, x) ;
}
printf (“\nKeluar dari loop ketika x = = %d \ n”, x) ;
return 0 ;
}
Output :

1 2 3 4
Keluar dari loop ketika x = = 5

• Pelaksanaan statement continue dalam struktur while, for, atau d0/while


menyebabkan lompat ke iterasi berikutnya.
Dalam struktur while dan do-while, evaluasi kondisi segera dilakukan setelah
pelaksanaan continue.
Dalam struktur for, setelah pelaksanaan continue yang dilakukan berikutnya
adalah evaluasiekspresi3 dan kemudian evaluasi ekspresi2.

/* Contoh penggunaan continue dalam for-loop * /


#include <stdio.h>
main ( ) {
int x ;
for (x = 1; x < = 10; x++) {
if (x = = 5) continue;
printf (%d “, x) ;
}
printf (“\nNilai 5 dilompati dengan continue.\n”) ;
return 0 ;
}
Output :
1 2 3 4 5 6 7 8 9 10
Nilai 5 dilompati dengan continue.

28
Statement switch
• Untuk memilih dari beberapa alternative, dengan cara menguji apakah suatu
ekspresi mempunyai nilai yang cocok dengan satu dari beberapa konstanta
bernilai bulat.
switch (ekspresi) {
case ekspresi-konstanta : statements
.
.
.
case ekspresi-konstanta : statements
default : statement
}

Tiap alternatif diberi label suatu konstanta atau ekspresi konstanta bernilai bulat.
Jika ekspresi cocok dengan salah satu label ekspresi-konstanta, eksekusi dimulai
dari statement yang mengikuti label itu sampai dengan statement break atau
statement terakhir sebelum tanda }.
Tiap ekspresi-konstanta harus unik.
Alternatif yang dilabel default akan dilaksanakan jika tidak ada alternatif
lain yang cocok. Alternatif default boleh dihilangkan. Jika tidak ada
alternatif default dan tidak ada case yang cocok, maka tidak ada aksi sama
sekali.

29
/*
* Program ini menghitung banyaknya nilai-huruf
*/

#include <stdio.h>

main ( ) {
int nilai;
int hitungA = 0, hitungB = 0, hitungC = 0,

hitungD = 0, hitungE = 0;
printf (“Masukkan nilai dalam huruf\n”) ;
printf (“ (EOF untuk berhenti) : \n”) ;
while ( (nilai = getchar ( ) ) ! = EOF) {
switch (nilai) {
case ‘A’ : case ‘a’ : hitungA++ ;
break;
case ‘B’ : case ‘b’ : hitungB++ ;
break;
case ‘C’ : case ‘c’ : hitungC++ ;
break;
case ‘D’ : case ‘d’ : hitungD++ ;
break;
case ‘E’ : case ‘e’ : hitungE++ ;
break;
case ‘\n’ : case ‘ ’ : /* Abaikan ‘\n’ dan ‘ ‘*/
break;
default : /* menangkap karakter lainnya */
printf (“Input salah. Tolong ulangi. \n”) ;
break ;
}
}
printf (“\nBanyaknya nilai \n”) ;
printf ( “A : %d\n”, hitungA) ;
printf ( “B : %d\n”, hitungB) ;
printf ( “C : %d\n”, hitungC) ;
printf ( “D : %d\n”, hitungD) ;
return 0 ;
}

• getchar ( ) , yang didefinisikan dalam stdio.h , memberikan nilai karakter yang


dibacanya dari keyboard.
• Karakter biasanya disimpan dalam variabel bertipe char. Tetapi karena char
adalah subtipe dari int, maka karakter juga dapat disimpan dalam variable
bertipe int.

30
Variabel bertipe char memerlukan memori 1 byte. Tipe char terdiri dari
integer-integer kecil. Jadi suatu karakter dapat diperlakukan sebagai suatu int
atau suatu char.
Konstanta karakter adalah suatu integer yang ditulis dalam bentuk satu karakter
dalam tanda kutip tunggal, misalnya : ‘a’.

Contoh :
printf (“Karakter (%c) mempunyai nilai %d.\n” ,
‘a’ , ‘a’ ) ;
Di layar akan dicetak
karakter (a) mempunyai nilai 97 .

OUT PUT :
Conversion-specifier %c dipakai untuk mencetak karakter dan %d untuk
mencetak nilai desimalnya.

Masukkan nilai dalam huruf (EOF untuk


berhenti) :
B
A
a
B
b
B
B
F
Input salah. Tolong ulangi.
C
E
Banyaknya nilai
A : 2
B : 4
C : 1
D : 0
E : 1

31
• Bilangan 97 itu adalah representasi numerik desimal dari karakter a dalam
komputer.
Kebanyakan komputer menggunakan character-set ASNII (American Standard
Code for Information Interchange), dimana 97 mengkodekan huruf kecil a.
• Karakter dapat dibaca dengan fungsi scanf dengan memakai conversion-
specifier %c.
• EOF adalah konstanta simbolik (biasanya bernilai -1) yang menyatakan end –
of - file. Didefinisikan dalam berkas stdio.h
Variabel nilai dalam program itu diberi tipe int agar aman, karena harus
menampung nilai dari EOF.
• Untuk sistem UNIX , EOF dibuat dengan mengetikkan
<return> <ctrl-d>
(artinya menekan tombol return , kemudian sekaligus menekan tombol ctrl dan
tombol d)
Untuk DOS, gunakan <ctrl-z>.
Left \ Right ASCII
digits American Standart Code for Information Interchange
0 1 2 3 4 5 6 7 8 9
0 nul soh stx etx eot enq ack bel bs ht
1 nl vt np er so si dle del dc2 dc3
2 dc4 nak syn etb can em sub esc fs gs
3 rs us sp ! “ # $ % & ‘
4 ( ) * + , - . / 0 1
5 2 3 4 5 6 7 8 9 : ;
6 < = > ? @ A B C d E
7 F G H I J K L M n O
8 P Q R S T U V W x Y
9 Z [ \ ] ^ _ ‘ a b c
10 d e f g h i j k l m
11 n o p q r s t u v w
12 x y z { | } ~ dal

32
Control characters :
NUL Null DLE Data link escape
SOH Start of heading DC1 Device control 1
STX Start of text DC2 Device control 2
ETX End of text DC3 Device control 3
EOT End of DC4 Device control 4
transmission
ENQ Enquiry NAK Negative acknowledge
ACK Acknowledge SYN Synchronous idle
BEL Bell ETB End of transmission block
BS Backspace CAN Cancel
HT Horizontal tab EM End of medium
NL Newline SUB Substitute
VT Vertical tab ESC Escape
FF Form feed FS File separator
CR Carriage reurn GS Goup separator
SO Shift out RS Record separator
SI Shift in US Unit separator
SP Space DEL Delete

33
MODUL 6
OPERATOR LOGIKA

Operator – Operator Logika


• Kondisi - kondisi sederhana seperti a > 3 dan a ! = 10 dapat digabung menjadi
kondisi yang lebih rumit.
• Kondisi – kondisi yang sederhana dapat dikombinasikan menjadi kondisi yang
lebih rumit dengan menggunakan operator – operator logika:
! (NOT logika)
&& (AND logika)
|| (OR logika)

Tabel. Logika NOT (!)


Ekspresi ! ekspresi
0 (false) 1 (true)
Tidak – nol (true) 0 (false)

Tabel. Logika AND (&&)


Ekspresi 1 Ekspresi 2 Ekspresi 1 && ekspresi 2
0 (false) 0 (false) 0 (false)
0 (false) Tidak - nol (true) 0 (false)
Tidak - nol (true) 0 (false) 0 (false)
Tidak - nol (true) Tidak - nol (true) 1 (true)

Tabel. Logika OR (||)


Ekspresi 1 Ekspresi 2 Ekspresi 1 | | ekspresi 2
0 (false) 0 (false) 0 (false)
0 (false) Tidak - nol (true) 0 (false)
Tidak - nol (true) 0 (false) 0 (false)
Tidak - nol (true) Tidak - nol (true) 1 (true)

34
Contoh:
char C = ‘B’;
int i = 7, j = 8;

Tabel. Ekspresi dan nilainya


Ekspresi Nilai
!C 0
! (i – j) 0
!i–j -8
!! i 1
‘A’ < C && C<= ‘Z’ 1
i > j || C < ‘K’ 1
i / j || i && j - 8 0

Perhatikan presendensi dari masing – masing operator.

Evaluasi short – circuit


Dalam pengevaluasian ekspresi-ekspresi yang menjadi operand dari && dan ||,
proses evaluasi berhenti ketika hasil true atau false sudah diketahui.
Evaluasi short-circuit ini merupakan sifat yang penting dari operator && dan ||.
Andaikan eksp1 dan eksp2 adalah ekspresi dan eksp1 mempunyai nilai nol .
dalam ekspresi logika:
Eksp1 && eksp2
Evaluasi terhadap eksp2 tidak terjadi , karena nilai dari ekspresi logika itu secara
keseluruhan sudah dapat ditentukan sama dengan nol.
Demikian pula , jika eksp1 bernilai tidak-nol , maka evaluasi terhadap eksp2
dalam ekspresi
Eksp1 || eksp2
Tidak terjadi , karena nilai dari ekspresi logika itu secara keseluruhan sudah dapat
ditentukan sama dengan 1.

35
Structure Programming (Pemrograman Berstruktur)
• Membuat program yang mudah dimengerti dan dirawat oleh manusia.
• Mengutamakan kesederhanaan.
• Menggunakan tiga struktur/bentuk control :
Sequence (urutan statement dalam program)
Selection (pemilihan satu dari beberapa alternative)
repetition (pengulangan / looping)
• Dalam bahasa C,
Sequence diimplementasikan dengan menuliskan satu statement setelah
statement lainnya;
Selection diimplementasikan dengan menggunakan struktur if , if / else , atau
switch;
Repetition diimplementasikan dengan menggunakan struktur while , for , atau
do/while.

Fungsi
• Solusi masalah dunia nyata biasanya memerlukan program yang jauh lebih
besar dari pada program yang telah kita bahas sejauh ini.
Program yang besar sebaiknya terdiri dari satuan-satuan yang lebih kecil atau
amodul-modul , supaya lebih mudah dikelola.
• Modul-modul program C berbentuk fungsi.
Program C biasanya merupakan kombinasi dari fungsi-fungsi baru yang
ditulis oleh programmer dan fungsi-fungsi yang telah tersedia dalam C-
Standard library.
Printf dan scanf adalah contoh fungsi-fungsi dari C-Standard-library yang
telah sering kita gunakan.

36
MODUL 7
FUNGSI

• Program yang telah kita bahas sejauh ini terdiri dari hanya satu fungsi , yaitu
fungsi main yang memanggil fungsi-fungsi dari standard – library .
• Programmer dapat membuat fungsi sesuai dengan kebutuhannya.
Bentuk umum penulisan devinisi suatu fungsi :
Tipe-hasil nama-fungsi ( deklarasi parameter )
{
Deklarasi - deklarasi
Statement – statement
}

/ * Program ini mengandung fungsi bernama pangkat


* yang dibuat sendiri oleh programmer
*/
# include < stdio.h >
int pangkat ( int , int ) ; /* prototype fungsi */m
main ( ){
int x;
for ( x = 1 ; x <= 10 ; x ++ )
printf ( “ %d “ , pangkat (2 , x ) );
printf ( “\n” );
return 0 ;
}
/* - - - - - - - - - - - - -- - - - - -- - - -- - - - - -- - - *
* devinisi fungsi pangkat: *
* pokok dipangkatkan n; n > = 0 *
* - - - - - - - -- - - - - -- - - - - -- - - - - - -- - - - - */
int pangkat (int pokok , int n){
int hasil , I;
hasil = 1;
for (I = 1 ; I < = n ; ++I)
hasil = hasil * pokok;
return hasil ;
}
OUTPUT:

2 4 8 16 32 64 128 256 512 1024

37
• Function – Prototype ( prototype fungsi ) memberitahu kompilator mengenai:
- Tipe dari hasil yang dikembalikan fungsi kepada pemanggilnya
- Jumlah parameter, tipe parameter, dan urutan parameter yang harus
diberikan kepada fungsi oleh pemanggilnya.
• Prototype fungsi dipakai oleh kompilator untuk melakukan validasi terhadap
function – call ( pemanggilan fungsi ) . dengan demikian , kompilator dapat
membantu programmer dalam menangkap kesalahan-kesalahan dalam
program.
• Prototype fungsi seharusnya diletakkan sebelum fungsi itu digunakan
(dipanggil).
• Nama fungsi harus berupa suatu identifier yang sahih . nama fungsi sebaiknya
mencerminkan tugas yang dilakukan oleh fungsi itu.
• Return – type ( tipe hasil ) dari suatu fungsi menyatakan tipe hasil yang
dikembalikan fungsi kepada pemanggilnya.
Tipe hasil void menyatakan bahwa fungsi tidak mengembalikan apa-apa.
Tipe hasil yang tidak ditulis dianggap oleh kompilator sebagai int.
• Deklarasi parameter void menyatakan bahwa fungsi itu tidak membutuhkan
parameter.
• Semua variable yang dideklarasikan dalam fungsi adalah variable lokal,
artinya hanya diketahui (bias diakses) dalam fungsi tersebut.
Semua parameter fungsi juga bersifat local.
Jadi dua fungsi boleh mempunyai parameter / variable local dengan nama
yang sama tanpa terjadi konflik.
• Function – body merupakan suatu block ( aitu deklarasi dan statement dalam
sepasang tanda kurung kurawal .
• Ada 3 cara untuk mengembalikan kontrol dari fungsi kepada pemanggilanya:
1. Jika fungsi tidak mengembalikan suatu hasil, fungsi berakhir apabila
tanda kurung kurawal akhir “}” sudah tercapai atau dengan pelaksanaan
statement.
2. return; (jika fungsi mengembalikan suatu hasil, pelaksanaan statement)
3. return ekspresi; (Mengakhiri fungsi dan mengembalikan nilai dari
ekspresi kepada pemanggil).

38
• Motivasi – motivasi utama dalam membuat program sebagai system dari
beberapa fungsi:
1. Pendekatan divide – and – conquer mempermudah pengembangan
program.
2. Fungsi merupakan alat untuk melakukan abstraksi .
3. Software – reusability (penggunaan fungsi – fungsi yang telah ada
untuk membuat program baru)
4. Sekelompok statement yang melakukan tugas tertentu dapat dieksekusi
pada beberapa tempat dalam program tanpa mengulangi penulisan
kelompok statement tsb.
• Parameter - parameter fungsi yang tertera pada definisi fungsi disebut juga
argumen-argumen formal.
Pada waktu fungsi dipanggil, argumen-argumen yang diberikan kepada fungsi
disebut argumen-argumen aktual.
• Argument-argumen untuk fungsi merupakan alat untuk menyalurkan data
kepada fungsi.
• Dalam C, semua argument fungsi disalurkan secara pindah-nilai (by value).
Artinya, fungsi yang dipanggil itu diberikan salinan dari nilai argument
aktualnya. Jadi variabel dari pemanggil yang menjadi argument actual dari
suatu fungsi tidak dapat diubah oleh fungsi itu.
• Dalam contoh program tadi, variabel x yang menjadi argument actual dari
fungsi pangkat tidak dapat diubah oleh fungsi pangkat itu.
Salinan dari nilai x diberikan kepada argument formal n (dapat dipikirkan
seperti assignment n = x). Meskipun n diubah dalam fungsi pangkat,
perubahan ini tidak mempengaruhi x.
• Pemanggilan fungsi (function call) dengan mekanisme demikian disebut : call
by value.
• Definisi untuk pangkat itu dapat juga ditulis menjadi :

39
/*
*Versi ringkas dari fungsi pangkat
* Pokok dipangkatkan n; n >= 0
*/
int pangkat (int pokok, int n) {
int hasil = 1;
for ( ; n > 0 ; - - n )
hasil = hasil * pokok;
return hasil;
}

Dimana n dipakai sebagai variabel sementara untuk mengontrol loop. Nilai n


diturunkan sampai dengan 0. Perubahan terhadap nilai n tidak mempengaruhi x
dari fungsi main.
• Pemanggilan fungsi dengan mekanisme lain, yaitu call by reference akan
dibahas nanti pada saat pembahasan pointer.
Dalam call by reference, variabel dari pemanggil (caller) dapat diubah oleh
fungsi.

/* Program ini memperlihatkan “call by value” */


#include (stdio.h)
int hitung_jumlah (int n);
main ( ) {
int n = 3, jumlah ;
printf (“%d\n”, n); /* cetak 3 */
jumlah = hitung_jumlah (n);
printf (“%d\n”, n); /* cetak 3 */
printf (“%d\n”, jumlah); /* cetak 6 */
return 0;
}
/* Menjumlahkan integar 1s/d n; n >= 1 */
int hitung_jumlah (int n) {
int hasil = 0;
for (; n > 0; - -n)
hasil += n;
return hasil;
}

40
Fungsi-fungsi matematik yang umum diperlukan tersedia dalam standard-library
dengan header (math.h).
Table berikut ini memperlihatkan beberapa fungsi matematik yang sering dipakai,
masing-masing mengembalikan nilai bertipe double. x dan y bertipe double.

Tabel. Fungsi dalam math.h


Fungsi Keterangan Contoh Ekspresi Nilai
Sqrt (x) Akar kuadrat dari x Sqrt (9.0) 3.0
Exp (x) E pangkat x Exp (1.0) 2.718282
Log (x) Logaritma natural dari x Log (exp (1.0) 1.0
(pokok e)
Log 10 (x) Logaritma dari x (pokok 10) Log 10 (100.0) 2.0
Fabs (x) Nilai mutlak dari x Fabs (-2.5) 2.5
Ceil (x) Nilai bulat terkecil yang >= x Ceil (9.3) 10.0
Floor (x) Nilai bulat terbesar yang <= x Floor (-9.7) -10.0
Pow (x) X pangkat y Pow (2.7) 128.0
Sin (x) X dalam radian Sin (0.0) 0.0
Cos (x) X dalam radian Cos (0.0) 1.0
Tan (x) X dalam radian Tan (0.0) 0.0

ANSI C menyediakan tiga tipe untuk bilangan floating-point: float, double, dan
long double.
Jumlah byte yang dibutuhkan untuk meyimpan suatu objek (misalnya variabel,
tipe, dsb.) dalam memori dapat ditentukan dengan menggunakan operator unary
sizeof
Sizeof (char) bernilai 1; ini berarti satu variabel bertipe char memerlukan memori
sebanyak 1 byte.
Jumlah byte untuk tipe-tipe dasar, meskipun bergantung pada mesin
computer/kompilator ybs .. dalam ANSI C mememnuhi hubungan sbb:
Sizeof (char) = 1
Sizeof (short) < sizeof (int) < sizeof (log)

41
Sizeof (signed) = sizeof (unsigned) = sizeof (int)
Sizeof (float) < sizeof (double) < sizeof (long double)
Pada mesin PC, biasanya:
Sizeof (int) bernilai 2
Sizeof (long) bernilai 4
Sizeof (float) bernilai 4
Sizeof (double) bernilai 8

/*
*program ini memberikan ukuran dari
tipe-tipe
*dasar
*/
#include (stdio.h)
Main ( )
{
printf ( “ jumlah byte untuk tipe-tipe dasar.\n”);
printf ( “ char:%3d\n”, sizeof (char) )
printf ( “ short:%3d\n “, sizeof (short) )
printf ( “ int:%3d\n “, sizeof (int) )
printf ( “ long:%3d\n “, sizeof (long) )
printf ( “ unsigned:%3d\n “, sizeof (unsigned) )
printf ( “ float:%3d\n “, sizeof (float) )
printf ( “ double:%3d\n “, sizeof (double) )
printf ( “ long double:%3d\n “, sizeof (long double) )
return 0;
}

Output dari PC
Jumlah byte untuk tipe-tipe dasar.
Char : 1
Short: 2
Int : 2
Long: 4
Unsigned: 2
Float: 4
Double: 8
Long double: 10

Bagaimana outputnya di komputer kamu?

42
/*contoh penggunaan fungsi matematik dari standard
*library dengan header (math.h)
*/
#include<stdio.h>
#include<math.h>
main ( ) {
double x;
printf (“ \n%s\n ”,
“kalkulasi akar kuadrat dari x”,
“ - - - - - - “);
printf (“ input x: “);
scanf (“ %1f”, &x);
if (x >= 0.0)
printf(“\n%22s%21.15e\n%22s%21.15e\n”,
“x = “ , x,
“akar kuadrat dari x = “, sqrt (x);
else
printf (“\nMaaf, input harus nonnegative.\n”);
return 0;
}
Outputnya:
Kalkulasi akar kuadrat dari x
-----
Input x: 2
X = 2.000000000e+00
Akar kuadrat dari x = 1.414213562373095e+00

• Kompilasi di UNIX:
C89 –Im namafile.c -0 namafile

43
• Untuk printf:
%s adalah penentu konversi untuk string.
%22s - - > tempat yang disediakan (field width) 22 karakter, rapat ke kanan.
%s - - > tempat yang disediakan secukupnya.
%21.15e - - > cetak sebagai bilangan floating-point dalam notasi eksponen
seperti dalam contoh; field-width 21 karakter dengan 15 karakter di
belakang titik decimal.
• Untuk scanf:
%1f adalah penentu konversi untuk tipe double.
• Ketelitian (precision) untuk tipe float biasanya adalah 6 digit, sedangkan
untuk tipe double biasanya adlah 15 digit.

44
MODUL 8
ARRAY

LARIK (ARRAY)
• Array merupakan suatu struktur data yang terdiri dari beberapa data bertipe
sama.
• Suatu array menempati sekelompok lokasi memori yang berturutan. Tiap lokasi
memori ini berlaku sebagai suatu variabel dengan tipe yang sama.
• Unsur dari suatu array dapat diakses secara langsung dengan menggunakan
nama array dan indeks (subskrip) ybs.
• Nama array mengikuti aturan seperti nama variabel.
• Contoh:
Int A [5] ; /* mendeklarasikan array bernama A, yang terdiri dari 5 unsur,
masing-masing bertipe int. */
Array A

A [0] A[1] A[2] A[3] A[4]


• Unsur pertama mempunyai subskrip 0.
• Kurung siku [ ] yang mengapit subskrip array merupakan suatu operator.
Perhatikan presedensi dan asosiativitasnya dalam table operator pada modul 3.

/*contoh array */
#include (stdio.h)
main ( )
{
int a [ 10 ], i;

/*inisialisasi array dengan nilai 1 */


for (I = 0; I <= 9; i++)
a[i] = 1;

printf (“%s%12s\n”,“unsure ke”, “nilai “)


for (i = 0; i <= 9; i++) /* cetak array */
printf (“%8d%12d\n”, i, a[ i ];
return 0;
}

45
Output :
Unsure ke Nilai
0 1
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1

/*menghitung jumlah unsur-unsur array */


#include <stdio.h>
#define UKURAN 12
main ( )
{
int a [UKURAN] = {1,3,5,4,7,2,99,16,-5,0,-11,8};
int i , jumlah = 0;
for (i = 0; i<= UKURAN-1; i++)
jumlah + = a [ i ]
printf (“ Jumlahnya = %d\n”, jumlah);
return 0;
}

Output;

Jumlahnya = 129

46
Inisialisasi Array
• Array dapat diinisialisasi secara ekplisit pada waktu deklarasi. Nilai-nilai awal
diapit oleh kurung kurawal { }. Apabila banyaknya nilai awal kurang dari
ukuran array, maka unsur-unsur array yang tersisa diberi nilai awal nol.
Contoh :
int a[50] = {0} ; /* semua unsur dari array a diberi nilai 0 */
int a[10] = {-1,3} ; /* semua unsur dari array b diberi nilai 0 kecuali b [0]
diberi nilai awal -1 dan b[ 1] diberi nilai awal 3 */
• Jika suatu array dideklarasikan tanpa ukuran dan diinisialisasi secara eksplisit
dengan sebarisan nilai, maka kompilator akan menentukan ukuran array tsb.
Sama dengan banyaknya nilai awal.
Contoh :
Int a [ ] = { 2,3,-7,5} ;
Ekivalen dengan
Int a [4 ] = { 2,3,-7,5} ;

Array of char
char s [ ] = “abc” ;
ekivalen dengan
char s [ ] = {‘a’ , ‘b’ , ‘c’ , ‘\0’} ;
ekivalen dengan
char s [4 ] = {‘a’ , ‘b’ , ‘c’ , ‘\0’} ;

• String seperti “abc” adalah suatu array yang terdiri dari karakter-
karakter, dengan diakhiri oleh karakter null ‘\0’.
Jadi string “abc” sebenarnya terdiri dari 4 karakter
Berapakah nilai dari sizeof (“abc”) ?
4
• ‘x’ tidak sama dengan “x”. bedanya ?
• scanf dapat dipakai untuk menginput suatu string dari keyboard dengan
penentu konversi %s. String itu disimpan dalam suatu array char.

47
Suatu array char yang merepresentasikan suatu string dapat dioutput
dengan printf melalui penentu konversi %s.

/* tentang string dan array char */


#include <stdio.h>
main ( )
{
char str1 [20] , str2 [ ] = “ Teknik Informatika“ ;
int i ;
printf (“Ketikkan sebuah string : “) ;
scanf (%s”, str1) ; /* Tidak perlu pakai & */
printf (“String1 : %s\nString2 : %s\n” , str1 , str2) ;
printf (“String1 dengan spasi antar karakter : \n”) ;
for ( i = 0 ; str1 [1] ! = ‘\0’ ; i++)
printf (“%c “ , str1 [1] ) ;
printf (“\n”)
return 0 ;
}
Output :
Ketikkan sebuah string : apa saja
String1 : apa
String2 : Teknik Informatika
String1 dengan spasi antar karakter :
apa

Array sebagai Argumen Fungsi


• Prototipe fungsi :
int maksimum (int a[ ] , int ukuran)
menyatakan bahwa fungsi maksimum memerlukan dua argument. Argument
pertama suatu array bertipe int ; argument kedua suatu unt yang merupakan
ukuran dari array tsb. Fungsi maksimum akan mengembalikan suatu int.
• Sebagai argument actual , nama array saja yang dipakai.

48
/* Contoh penggunaan array sebagai argumen */
#include <stdio.h>
int maksimum (int ar [ ] , int uk) ;
main ( )
{
int ukuran, a[ ] = {9,0,-7,3,14,9,5,-3} ;
ukuran = sizeof (a) / sizeof (int) ;
printf (“Nilai maksimum dalam array berukuran %d”
“ itu \nadalah : %d\n”,
ukuran, maksimum (a,ukuran) ) ;
return 0 ;
}
/* Mengembalikan nilai maksimum dalam array */
int maksimum (int ar [ ] , int ukuran)
{
int i, maks ;
maks = ar[0] ;
for (i = 1; i < = ukuran-1; i++)
if (ar[i] > maks ) maks = ar[i] ;
return maks ;
}

Output :

Nilai maksimum dalam array berukuran 8 itu


adalah 14

49
MODUL 9
SCOPE

Scope
Scope (lingkup) dari suatu identifier (nama) adalah bagian dari program di mana
identifier itu dapat dipakai / diakses.
Ada identifier yang dapat dipakai di seluruh program. Ada identifier yang dapat
dipakai hanya dalam bagian tertentu dari program

Aturan dasar untuk menentukan scope :


Identifier dapat diakses hanya dalam block tempat identifier itu
dideklarasikan, identifier itu tidak diketahui di luar blocknya.

Suatu block dapat berada dalam block lainnya.


Setiap block mempunyai ruang penamaan sendiri. Nama dalam block yang lebih
luar tetap berlaku di block yang lebih dalam jika nama tidak didefinisikan lagi di
block yang lebih dalam itu.

Identifier yang dideklarasikan di luar fungsi mempunyai scope seluruh file.


Identifier semacam ini diketahui dalam semua fungsi mulai dari tempat identifier
itu dideklarasikan sampai dengan akhir file. Variable global, definisi fungsi, dan
prototype fungsi yang ditaruh di luar fungsi semuanya mempunyai file-scope.

50
“ Block Nested”

/* Contoh scoping */
#include <stdio.h>
main ( ) {
int a=1, b=2, c=3 ;
printf (“%2d%2d%2d\n” ,a,b,c|) ; /* 1 2 3 */
{
int b=4
float c=5.0;
printf (“%2d%2d%4.1f\n” ,a,b,c|) ; /* 1 4 5 . 0 */
a = b
{
int c ;
c=b:
printf (“%2d%2d%2d\n” ,a,b,c|) ; /* 4 4 4 */
}
printf (“%2d%2d%4.1f\n” ,a,b,c|) ; /* 4 4 5 . 0 */
}
printf (“%2d%2d%2d\n” ,a,b,c|) ; /* 4 2 3 */
return 0 ;
}

“ Block Paralel “
{
int a,b ;
...
{ /* block-dalam 1 */
float b ;
... /* int a diketahui , int b tidak */
}
...
{ /* block-dalam 2 */
float a ;
... /* int b diketahui , int a tidak */
/* Tidak ada dari block-dalam 1
diketaui */
}
...
}

51
DAFTAR PUSTAKA
1. H.M. Deitel & P.J. Deitel. C: How to program. 2nd edition. Prentice Hall
2. Brian W Kernighan and Dennis M Ritche. The C Programming Language,
Prentice Hall, Second edition
3. Paul M Embree and Bruce Kimble, C Language Algorithms for Digital Signal
Processing, Printice Hall
4. Catatan Kuliah Konsep Pemrograman

52

Anda mungkin juga menyukai