Program ini membaca dua bilangan bulat dari keyboard dan mengevaluasi hubungan relasional antara kedua bilangan tersebut menggunakan operator relasional dan persamaan. Bilangan yang dibaca akan dicek apakah sama, tidak sama, lebih kecil, lebih besar, atau kurang dari/sama dengan menggunakan struktur pengkondisian if.
2. Sejarah Bahasa C
Bersumber dari bahasa BCPL (Martin Richards -1967) dan B
(Ken Thompson -1970)
C diciptakan Dennis Ritchie dari Bell Laboratories pada tahun
1972 dan diimplementasikan pada komputer DEC PDP-11
Pada 1978 Dennis Ritchie dan Brian Kernighan kemudian
mempublikasikan buku The C Programming Language yang
semakin memperluas pemakaiannya dan dijadikan standar oleh
ANSI (American National Standard Institute) pada tahun 1989
C kemudian dikembangkan lagi oleh Bjarne Stroustrup menjadi
C++ (1986)
C dan/atau C++ banyak digunakan (sehingga menjadi ‘standar’)
sebagai bahasa pemrograman untuk membuat sistem operasi
STTQ - 2010 2
3. Proses penerjemahan bahasa
C
STTQ - 2010 3
Editor
Preprocessor
Compiler
Linker
Loader
CPU
DISK
.c
.h
.obj
.out
(UNIX)
.exe
(MS)
Primary Memory
4. Program sederhana I [1]
Contoh program untuk menampilkan sebaris teks
Selamat menggunakan bahasa C! pada layar:
1. /* Program pertama dalam bahasa C */
2. #include <stdio.h>
3. /* fungsi main mulai eksekusi program */
4. int main( void )
5. {
6. printf( “Selamat menggunakan bahasa C!n" );
7. return 0; /* indikasi program berakhir dengan sukses */
8. } /* akhir fungsi main */
Selamat menggunakan bahasa C! Program Output
STTQ - 2010 4
5. Program sederhana I [2]
Komentar diawali dengan /* dan diakhiri dengan */ (seperti terdapat pada baris-
1,3,7,dan 8), komentar tidak dipedulikan/diproses oleh compiler. Bermanfaat
untuk memudahkan pembacaan dan pemahaman sebuah program.
Baris dengan awalan # (seperti pada baris-2) diproses oleh preprocessor C
sebelum program dikompilasi. Baris tersebut menunjukkan bahwa preprocessor
harus mengikutsertakan standard input/output header (stdio.h) pada
program.Header ini mengandung informasi yang digunakan compiler untuk
mengkompilasi pemanggilan fungsi standar input/output seperti printf (baris-6).
int main() merupakan fungsi utama program dan selalu merupakan bagian dari
program dalam C, karena berjalannya program/instruksi ditentukan oleh fungsi
ini. int berarti fungsi main mengembalikan nilai integer
Tanda kurung kurawal buka { dan tutup } merupakan penanda body dari sebuah
fungsi atau sering disebut juga block fungsi/program.
printf( “Selamat menggunakan bahasa C!n" ); menghasilkan aksi yaitu
menampilkan teks “Selamat menggunakan bahasa C!”
return 0; selalu diikutsertakan pada akhir fungsi main. Keyword return untuk
menyatakan keluar dari suatu fungsi, dan angka 0 menunjukkan nilai yang
dihasilkan/dikembalikan oleh fungsi tersebut.
STTQ - 2010 5
6. Program sederhana I [3]
1. /* Program pertama dalam bahasa C */
2. #include <stdio.h>
3. /* fungsi main mulai eksekusi program */
4. int main( void )
5. {
6. printf( “Selamat menggunakan bahasa C!n" );
7. return 0; /* indikasi program berakhir dengan sukses */
8. } /* akhir fungsi main */
komentar
STTQ - 2010 6
preprocessor
main function
statement
function body
7. Program sederhana I [4]
Karakter escape
Karakter Deskripsi
n Pindah kursor ke baris baru
t Horisontal tab, pindah kursor ke posisi tab berikutnya
a Membunyikan bel sistem/beep
Mencetak/menampilkan (backslash)
” Mencetak/menampilkan ”
STTQ - 2010 7
8. Program sederhana I [5]
Modifikasi 1: mencetak 1 baris dengan 2 buah perintah printf
1 /* Fig. 2.3: fig02_03.c
2 Printing on one line with two printf statements */
3 #include <stdio.h>
4
5 /* function main begins program execution */
6 int main()
7 {
8 printf( "Welcome " );
9 printf( "to C!n" );
10
11 return 0; /* indicate that program ended successfully */
12
13 } /* end function main */
Welcome to C! Program
STTQ - 2010 8
Output
9. Program sederhana I [6]
Modifikasi 2: mencetak banyak baris dengan sebuah perintah printf
1 /* Fig. 2.4: fig02_04.c
2 Printing multiple lines with a single printf */
3 #include <stdio.h>
4
5 /* function main begins program execution */
6 int main()
7 {
8 printf( "WelcomentonC!n" );
9
10 return 0; /* indicate that program ended successfully */
11
12 } /* end function main */
STTQ - 2010 9
Welcome
to
C!
Program
Output
10. Program sederhana II [1]
Membaca 2 buah bilangan bulat dari
keyboard dan menampilkan hasil
penjumlahannya
STTQ - 2010 10
11. 1 /* Fig. 2.5: fig02_05.c
2 Addition program */
3 #include <stdio.h>
4
5 /* function main begins program execution */
6 int main()
7 {
8 int integer1; /* first number to be input by user */
9 int integer2; /* second number to be input by user */
10 int sum; /* variable in which sum will be stored */
11
12 printf( "Enter first integern" ); /* prompt */
13 scanf( "%d", &integer1 ); /* read an integer */
14
15 printf( "Enter second integern" ); /* prompt */
16 scanf( "%d", &integer2 ); /* read an integer */
17
18 sum = integer1 + integer2; /* assign total to sum */
19
20 printf( "Sum is %dn", sum ); /* print sum */
21
22 return 0; /* indicate that program ended successfully */
23
24 } /* end function main */
STTQ - 2010 11
Enter first integer
45
Enter second integer
72
Sum is 117
Program Output
12. Program sederhana II [2]
Baris ke-1 hingga ke-7 serupa dengan program I
int integer1, integer2, sum;
Pendefinisian variable-variabel
Variabel: lokasi di memori tempat sebuah nilai disimpan
int berarti variabel dapat menyimpan bilangan bulat (-1, 3, 0, 47)
Nama-nama variabel (identifier)
integer1, integer2, sum
Identifier: mengandung huruf,angka (tidak boleh dimulai dengan
angka) dan underscores( _ )
Case sensitive (huruf besar dan kecil dibedakan)
Deklarasi variabel harus muncul sebelum eksekusi statement yang
menggunakannya
Jika eksekusi statement mengacu kepada variabel yang belum
dideklarasikan maka akan menghasilkan syntax (compiler) error
STTQ - 2010 12
13. Program sederhana II [3]
scanf( "%d", &integer1 );
Mengambil sebuah nilai dari user
scanf menggunakan standar input (biasanya keyboard)
scanf statement ini memiliki dua buah argumen
%d - menunjukkan data yang diambil adalah bilangan bulat desimal
&integer1 – berlokasi di memori untuk menyimpan nilai variabel tsb
Tanda & dapat membingungkan di awal – untuk saat ini sertakan
pada nama variabel pada statement scanf
Ketika program dieksekusi user merespon statement scanf dengan
mengetik sebuah bilangan kemudian menekan tombol enter (return)
= (assignment operator)
Assigns (memberi) sebuah nilai kepada sebuah variabel
Merupakan sebuah operator biner (memiliki dua buah operand)
sum = variable1 + variable2;
sum memperoleh hasil dari variable1 + variable2;
Variabel penerima nilai berada di sebelah kiri
STTQ - 2010 13
14. Program sederhana II [4]
printf( "Sum is %dn", sum );
Serupa dengan pada scanf
%d berarti bilangan bulat desimal akan ditampilkan/dicetak
Nilai variabel sum menentukan bilangan bulat yang akan
ditampilkan/dicetak
Perhitungan dapat langsung dilakukan dalam statement printf
printf( "Sum is %dn", integer1 + integer2 );
STTQ - 2010 14
15. Konsep Memori [1]
STTQ - 2010 15
Variabel
Nama-nama variabel berkaitan dengan lokasi-lokasi di memori
komputer
Setiap variabel memiliki sebuah nama, sebuah tipe, sebuah
ukuran dan sebuah nilai
Ketika sebuah nilai baru diberikan pada sebuah variabel
(misalnya melalui scanf) maka nilai yang lama akan diganti
(dan hilang)
Membaca variabel dari memori tidak akan mengubah nilainya
Representasi visual:
integer 1 45
17. Aritmatika [1]
STTQ - 2010 17
Perhitungan Aritmatika
Gunakan * untuk perkalian dan / untuk pembagian
Pembagian bilangan bulat membuang sisa pembagian
7 / 5 dievaluasi menjadi 1
Operator Modulus (%) menghasilkan sisa pembagian
7 % 5 dievaluasi menjadi 2
Operator precedence
Beberapa operator aritmatika lebih diprioritaskan (dihitung lebih dahulu)
dibandingkan operator lainnya (misalkan perkalian dan pembagian
didahulukan dibandingkan penjumlahan dan pengurangan)
Gunakan tanda kurung jika diperlukan
Contoh: Hitung nilai rata-rata dari variabel-variabel a, b and c
Jangan gunakan: a + b + c / 3
Gunakan: (a + b + c ) / 3
18. Aritmatika [2]
Operator-operator aritmatika:
C operation
Arithmetic operator Algebraic expression C expression
Addition + f + 7 f + 7
Subtraction - p – c p - c
Multiplication * bm b * m
Division / x / y x / y
Modulus % r mod s r % s
Aturan precedence operator:
Operator(s) Operation(s) Order of evaluation (precedence)
() Parentheses Evaluated first. If the parentheses are nested, the expression in the innermost pair is
evaluated first. If there are several pairs of parentheses “on the same level” (i.e., not
nested), they are evaluated left to right.
*, /, or % Multiplication,Division,
STTQ - 2010 18
Modulus
Evaluated second. If there are several, they are
evaluated left to right.
+ or - Addition
Subtraction
Evaluated last. If there are several, they are
evaluated left to right.
19. Aritmatika [3]
Step 1. y = 2 * 5 * 5 + 3 * 5 + 7;
2 * 5 is 10
Step 2. y = 10 * 5 + 3 * 5 + 7;
10 * 5 is 50
Step 3. y = 50 + 3 * 5 + 7;
Step 4. y = 50 + 15 + 7;
Step 5. y = 65 + 7;
STTQ - 2010 19
Step 6. y = 72;
3 * 5 is 15
50 + 15 is 65
65 + 7 is 72
(Leftmost multiplication)
(Leftmost multiplication)
(Multiplication before addition)
(Leftmost addition)
(Last addition)
(Last operation—place 72 in y)
20. Pengambilan Keputusan: Persamaan
dan Operator Relasional [1]
STTQ - 2010 20
Eksekusi statement
Menghasilkan aksi-aksi (penghitungan, input/output data)
Menghasilkan keputusan
Ingin menampilkan “lulus" or “gagal" berdasarkan suatu syarat
nilai tertentu
if control statement
Versi sederhana dahulu, lebih detail kemudian
Jika suatu kondisi true, maka body statement if dieksekusi
0 adalah false, non-zero adalah true
Kontrol terhadap perintah selanjutnya setelah struktur if
Keywords
Kata-kata khusus yang digunakan oleh bahasa C
Tidak dapat digunakan sebagai nama variabel atau identifier
21. Pengambilan Keputusan: Persamaan
dan Operator Relasional [2]
STTQ - 2010 21
Standard algebraic equality
operator or relational operator
C equality or
relational operator
Example of C
condition
Meaning of C condition
Equality Operators
= == x == y x is equal to y
¹ != x != y x is not equal to y
Relational Operators
> > x > y x is greater than y
< < x < y x is less than y
>= >= x >= y x is greater than or equal to y
<= <= x <= y x is less than or equal to y
22. 1 /* Fig. 2.13: fig02_13.c
2 Using if statements, relational
3 operators, and equality operators */
4 #include <stdio.h>
5
6 /* function main begins program execution */
7 int main()
8 {
9 int num1, /* first number to be read from user */
10 int num2; /* second number to be read from user */
11
12 printf( "Enter two integers, and I will tell youn" );
13 printf( "the relationships they satisfy: " );
14
15 scanf( "%d%d", &num1, &num2 ); /* read two integers */
16
17 if ( num1 == num2 ) {
18 printf( "%d is equal to %dn", num1, num2 );
19 } /* end if */
20
21 if ( num1 != num2 ) {
22 printf( "%d is not equal to %dn", num1, num2 );
23 } /* end if */
24
STTQ - 2010 22
23. 25 if ( num1 < num2 ) {
26 printf( "%d is less than %dn", num1, num2 );
27 } /* end if */
28
29 if ( num1 > num2 ) {
30 printf( "%d is greater than %dn", num1, num2 );
31 } /* end if */
32
33 if ( num1 <= num2 ) {
34 printf( "%d is less than or equal to %dn", num1, num2 );
35 } /* end if */
36
37 if ( num1 >= num2 ) {
38 printf( "%d is greater than or equal to %dn", num1, num2 );
39 } /* end if */
40
41 return 0; /* indicate that program ended successfully */
42
43 } /* end function main */
Enter two integers, and I will tell you
the relationships they satisfy: 3 7
3 is not equal to 7
3 is less than 7
3 is less than or equal to 7
STTQ - 2010 23
Program Output
24. Enter two integers, and I will tell you
the relationships they satisfy: 22 12
22 is not equal to 12
22 is greater than 12
22 is greater than or equal to 12
Enter two integers, and I will tell you
the relationships they satisfy: 7 7
7 is equal to 7
7 is less than or equal to 7
7 is greater than or equal to 7
STTQ - 2010 24
Program Output
(lanjutan)
25. Pengambilan Keputusan: Persamaan
dan Operator Relasional [3]
Operators Associativity
* / % left to right
+ - left to right
< <= > >= left to right
== != left to right
= right to left
Precedence dan associativity dari operator-operator
STTQ - 2010 25
26. Pengambilan Keputusan: Persamaan
dan Operator Relasional [4]
STTQ - 2010 26
Keywords
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
Reserved keywords pada bahasa C
27. Algoritma dan Pseudocode
Algoritma: urutan langkah-langkah yang dapat
digunakan untuk memecahkan suatu masalah
Pseudocode:
Bahasa buatan yang bersifat informal yang dapat
membantu untuk mengembangkan algoritma
Serupa dengan bahasa sehari-hari
Membantu mempermudah penulisan program; dengan
menggunakan statement-statement yang dapat dieksekusi,
mempermudah konversi ke bahasa pemrograman
STTQ - 2010 27
28. Struktur Kontrol
Semua program ditulis dalam 3 macam bentuk struktur kontrol:
Sequence atau berturutan: struktur ini tersedia secara built-in. Secara
default program dieksekusi secara berturutan sesuai urutan perintah
Selection atau pilihan: ada 3 macam dalam bahasa C: if, if…else,
STTQ - 2010 28
dan switch
Repetition atau pengulangan: ada 3 macam dalam bahasa C: while,
do…while, dan for
Flowchart
Representasi grafis dari algoritma
Menggunakan simbol-simbol khusus yang dihubungkan dengan garis
beranak panah
Simbol kotak melambangkan aksi
Simbol oval melambangkan awal dan akhir suatu program atau blok
program
Simbol berlian melambangkan keputusan/pilihan
29. Selection Control [1] (if)
grade >= 60 print “Passed”
STTQ - 2010 29
Statement if:
Digunakan untuk seleksi suatu kondisi
Contoh pseudocode:
If student’s grade is greater than or equal to 60
Print “Passed”
Contoh Flowchart:
true
false
30. Selection Control [2] (if)
STTQ - 2010 30
Jika kondisi true
Statement Print dieksekusi dan program dilanjutkan ke statement
berikutnya
Jika kondisi false
Statement Print diabaikan dan program dilanjutkan ke statement
berikutnya
Dalam bahasa C:
if ( grade >= 60 )
printf( "Passedn" );
31. Selection Control [3] (if…
else)
grade >= 60
STTQ - 2010 31
Statement if…else:
Menspesifikasikan aksi baik untuk kondisi true maupun untuk kondisi
false
Contoh pseudocode:
If student’s grade is greater than or equal to 60
Print “Passed”
else
Print “Failed”
Contoh Flowchart:
false true
print “Failed” print “Passed”
32. Selection Control [4] (if…
else)
STTQ - 2010 32
Dalam C :
if ( grade >= 60 )
printf( "Passedn");
else
printf( "Failedn");
Ternary conditional operator (?:)
Memerlukan tiga argumen (kondisi, nilai jika true, nilai jika false)
Contoh di atas dapat ditulis sbb:
printf( "%sn", grade >= 60 ? "Passed" : "Failed" );
Atau dapat ditulis sbb:
grade >= 60 ? printf( “Passedn” ) :
printf( “Failedn” );
33. Selection Control [5] (if…
else)
Statement if…else bertingkat/bersarang:
Digunakan untuk menguji banyak kondisi dimana menempatkan
statement seleksi if…else di dalam statement if…else
Sekali kondisi terpenuhi, sisa statement lainnya dilewatkan/diabaikan
Contoh pseudocode:
If student’s grade is greater than or equal to 90
Print “A”
else
If student’s grade is greater than or equal to 80
Print “B”
else
If student’s grade is greater than or equal to 70
Print “C”
else
If student’s grade is greater than or equal to 60
STTQ - 2010 33
Print “D”
else
Print “F”
34. Selection Control [6] (if…
else)
STTQ - 2010 34
Compound statement
Ada lebih dari satu statement/aksi yang harus dieksekusi setelah suatu
kondisi dipenuhi
Sering disebut juga blok karena ditandai dengan pasangan { dan }
Contoh:
if ( grade >= 60 )
printf( "Passed.n" );
else {
printf( "Failed.n" );
printf( "You must take this course
again.n" );
}
Tanpa tanda kurung kurawal, statement
printf( "You must take this course
again.n" );
Akan dieksekusi secara otomatis.
35. Selection Control [7] (switch)
Multiple-Selection Statement switch:
Berguna pada waktu sebuah variabel atau ekspresi diuji terhadap
semua nilai yang mungkin dan masing-masing mengambil aksi yang
berbeda
STTQ - 2010 35
Format penulisan:
Sederetan label case dan opsional default case
switch ( value ){
case '1':
actions
case '2':
actions
default:
actions
}
break; keluar dari statement
36. Selection Control [8] (switch)
Flowchart statement switch:
case a case a action(s) break
case b case b action(s) break
case z case z action(s) break
STTQ - 2010 36
true
false
.
.
.
false
false
true
true
default action(s)
37. Repetition Control [1] (while)
Struktur pengulangan structure
Programmer menentukan aksi yang akan diulang selama kondisi tetap
STTQ - 2010 37
true
Psuedocode:
While there are more items on my shopping list
Purchase next item and cross it off my list
while loop diulang hingga kondisi menjadi false
Contoh:
int product = 2;
while ( product <= 1000 )
product = 2 * product;
39. Repetition Control [3] (while)
Pengulangan yang dikontrol sebuah counter
Loop diulang hingga counter mencapai angka tertentu
Disebut juga definite repetition karena jumlah pengulangan dapat kita
STTQ - 2010 39
ketahui
Contoh: Sebuah kelas dengan 10 orang mahasiswa mengikuti kuis.
Nilai kuis adalah bilangan bulat dari 0 hingga 100. Tentukan nilai rata-rata
kuis tersebut.
Pseudocode:
Set total to zero
Set grade counter to one
While grade counter is less than or equal to ten
Input the next grade
Add the grade into the total
Add one to the grade counter
Set the class average to the total divided by ten
Print the class average
40. 1 /* Fig. 3.6: fig03_06.c
2 Class average program with counter-controlled repetition */
3 #include <stdio.h>
4
5 /* function main begins program execution */
6 int main()
7 {
8 int counter; /* number of grade to be entered next */
9 int grade; /* grade value */
10 int total; /* sum of grades input by user */
11 int average; /* average of grades */
12
13 /* initialization phase */
14 total = 0; /* initialize total */
15 counter = 1; /* initialize loop counter */
16
17 /* processing phase */
18 while ( counter <= 10 ) { /* loop 10 times */
19 printf( "Enter grade: " ); /* prompt for input */
20 scanf( "%d", &grade ); /* read grade from user */
21 total = total + grade; /* add grade to total */
22 counter = counter + 1; /* increment counter */
23 } /* end while */
24
STTQ - 2010 40
41. 25 /* termination phase */
26 average = total / 10; /* integer division */
27
28 /* display result */
29 printf( "Class average is %dn", average );
30
31 return 0; /* indicate program ended successfully */
32
33 } /* end function main */
STTQ - 2010 41
Enter grade: 98
Enter grade: 76
Enter grade: 71
Enter grade: 87
Enter grade: 83
Enter grade: 90
Enter grade: 57
Enter grade: 79
Enter grade: 82
Enter grade: 94
Class average is 81
42. Repetition Control [4] (while)
Pengulangan yang dikontrol sebuah sentinel
Sentinel: tanda berhenti untuk keluar dari suatu loop, biasanya berupa
karakter, angka, atau tombol di keyboard sebagai tanda. Misalnya ‘Q’
untuk exit.
Loop diulang hingga mencapai sentinel tersebut
Jumlah pengulangan belum dapat kita ketahui secara pasti
STTQ - 2010 42
43. 1 /* Fig. 3.8: fig03_08.c
2 Class average program with sentinel-controlled repetition */
3 #include <stdio.h>
4
5 /* function main begins program execution */
6 int main()
7 {
8 int counter; /* number of grades entered */
9 int grade; /* grade value */
10 int total; /* sum of grades */
11
12 float average; /* number with decimal point for average */
13
14 /* initialization phase */
15 total = 0; /* initialize total */
16 counter = 0; /* initialize loop counter */
17
18 /* processing phase */
19 /* get first grade from user */
20 printf( "Enter grade, -1 to end: " ); /* prompt for input */
21 scanf( "%d", &grade ); /* read grade from user */
22
23 /* loop while sentinel value not yet read from user */
24 while ( grade != -1 ) {
25 total = total + grade; /* add grade to total */
26 counter = counter + 1; /* increment counter */
27
STTQ - 2010 43
44. 28 printf( "Enter grade, -1 to end: " ); /* prompt for input */
29 scanf("%d", &grade); /* read next grade */
30 } /* end while */
31
32 /* termination phase */
33 /* if user entered at least one grade */
34 if ( counter != 0 ) {
35
36 /* calculate average of all grades entered */
37 average = ( float ) total / counter;
38
39 /* display average with two digits of precision */
40 printf( "Class average is %.2fn", average );
41 } /* end if */
42 else { /* if no grades were entered, output message */
43 printf( "No grades were enteredn" );
44 } /* end else */
45
46 return 0; /* indicate program ended successfully */
47
48 } /* end function main */
STTQ - 2010 44
45. STTQ - 2010 45
Enter grade, -1 to end: 75
Enter grade, -1 to end: 94
Enter grade, -1 to end: 97
Enter grade, -1 to end: 88
Enter grade, -1 to end: 70
Enter grade, -1 to end: 64
Enter grade, -1 to end: 83
Enter grade, -1 to end: 89
Enter grade, -1 to end: -1
Class average is 82.50
Enter grade, -1 to end: -1
No grades were entered