1972 dan diimplementasikan pada komputer DEC PDP-11

  (dalam bahasa C)

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

Proses penerjemahan bahasa C

  Editor DISK

  Preprocessor .c .h

  Compiler .obj .out

  (UNIX)

  Linker .exe

  (MS)

  Loader Primary Memory

  CPU

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

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.

  menghasilkan aksi yaitu printf( “Selamat menggunakan bahasa C!\n" );

  • menampilkan teks

  “Selamat menggunakan bahasa C!”

return 0; selalu diikutsertakan pada akhir fungsi main . Keyword return untuk

  • menyatakan keluar dari suatu fungsi, dan angka menunjukkan nilai yang dihasilkan/dikembalikan oleh fungsi tersebut.

Program sederhana I [3]

  komentar 1. /* Program pertama dalam bahasa C */ 2. #include <stdio.h> preprocessor

  3. /* fungsi main mulai eksekusi program */ 4. int main( void ) main function

  5. { 6. printf( “Selamat menggunakan bahasa C!\n" ); statement function body

  7. return 0; /* indikasi program berakhir dengan sukses */ 8. } /* akhir fungsi main */

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

  ”

Program sederhana I [5]

   Modifikasi 1: mencetak 1 baris dengan 2 buah perintah printf

  /* Fig. 2.3: fig02_03.c

  1 Printing on one line with two printf statements */

  2 #include <stdio.h>

  3

  4 /* function main begins program execution */

  5 int main()

  6 {

  7 printf( "Welcome " );

  8 printf( "to C!\n" );

  9

  10 return ; /* indicate that program ended successfully */

  11

  12 } /* end function main */

  13 Program Welcome to C! Output

Program sederhana I [6]

  

Modifikasi 2: mencetak banyak baris dengan sebuah perintah printf

  1 /* Fig. 2.4: fig02_04.c

  3 #include <stdio.h>

  4 5 /* function main begins program execution */ 6 int main()

  7 {

  8 printf( "Welcome\nto\nC!\n" );

  9 10 return ; /* indicate that program ended successfully */

  11

  12 } /* end function main */

  Welcome Program to Output C!

Program sederhana II [1]

   Membaca 2 buah bilangan bulat dari keyboard dan menampilkan hasil penjumlahannya

  1 /* Fig. 2.5: fig02_05.c Addition program */

  2 3 #include <stdio.h>

  4 5 /* function main begins program execution */ int main()

  6 {

  7 8 int integer1; /* first number to be input by user */ 9 int integer2; /* second number to be input by user */ int sum; /* variable in which sum will be stored */

  10

  11 12 printf( "Enter first integer \n" ); /* prompt */ 13 scanf( "%d" , &integer1 ); /* read an integer */

  14 printf( "Enter second integer \n" ); /* prompt */

  15 16 scanf( "%d" , &integer2 ); /* read an integer */

  17 18 sum = integer1 + integer2; /* assign total to sum */

  19 printf( "Sum is %d\n" , sum ); /* print sum */

  20

  21 22 return ; /* indicate that program ended successfully */

  23 } /* end function main */

  24

  Enter first integer

  45 Enter second integer

  Program Output

  72 Sum is 117

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

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

  

  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

Program sederhana II [4]

  

  printf( "Sum is %d\n", 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 %d\n", integer1 + integer2 );

Konsep Memori [1]

   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:

  integer1

  45

Konsep Memori [2] integer1

  45 integer2

  72 integer1

  45 integer2

  72 sum 117

Aritmatika [1]

  

  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

Aritmatika [2]

  C operation Arithmetic operator Algebraic expression C expression Addition

   Operator-operator aritmatika:

  f + 7 Subtraction

  • f + 7

  p - c Multiplication

  • p
    • – c

  b * m Division

  • bm

  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, 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.

  / x / y x / y

Aritmatika [3]

  y = 2 * 5 * 5 + 3 * 5 + 7; St ep 1.

  (Left m ost mult ip lic at ion) 2 * 5 is 10 y = 10 * 5 + 3 * 5 + 7;

  St ep 2.

  (Left m ost mult ip lic at ion) 10 * 5 is 50 y = 50 + 3 * 5 + 7;

  St ep 3.

  (Mult ip lic at ion bef ore ad dition) 3 * 5 is 15 y = 50 + 15 + 7;

  St ep 4.

  (Left m ost ad dit ion) 50 + 15 is 65 y = 65 + 7;

  St ep 5.

  (Last a dd it ion) 65 + 7 is 72 y = 72;

  St ep 6.

  (Last op era tio n—p la ce 72 in y)

Pengambilan Keputusan: Persamaan dan Operator Relasional [1]

  

  Tidak dapat digunakan sebagai nama variabel atau identifier

  

  Kata-kata khusus yang digunakan oleh bahasa C

   Keywords

  Kontrol terhadap perintah selanjutnya setelah struktur if

  

  0 adalah false, non-zero adalah true

  

  Jika suatu kondisi true, maka body statement if dieksekusi

  

  Eksekusi statement

  

  if control statement

  

  Ingin menampilkan “lulus" or “gagal" berdasarkan suatu syarat nilai tertentu

  

  Menghasilkan keputusan

  

  Menghasilkan aksi-aksi (penghitungan, input/output data)

  

  Versi sederhana dahulu, lebih detail kemudian

Pengambilan Keputusan: Persamaan dan Operator Relasional [2]

  Standard algebraic equality C equality or Example of C Meaning of C condition operator or relational operator relational operator condition Equality Operators

  == = x == y x is equal to y

  != x != y  x y is not equal to

  Relational Operators > > x > y x y is greater than

  < < 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

  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 you \n" );

  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 %d \n" , num1, num2 );

  19 } /* end if */

  20

  21 if ( num1 != num2 ) {

  22 printf( "%d is not equal to %d\n" , num1, num2 );

  23 } /* end if */

  24

  25 if ( num1 < num2 ) {

  26 printf( "%d is less than %d \n" , num1, num2 );

  27 } /* end if */

  28

  29 if ( num1 > num2 ) {

  30 printf( "%d is greater than %d \n" , num1, num2 );

  31 } /* end if */

  32 33 if ( num1 <= num2 ) {

  34 printf( "%d is less than or equal to %d \n" , num1, num2 );

  35 } /* end if */

  36

  37 if ( num1 >= num2 ) {

  38 printf( "%d is greater than or equal to %d \n" , num1, num2 ); 39 } /* end if */

  40 41 return ; /* 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

  Program Output

  3 is less than 7 3 is less than or equal to 7

  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

  Program Output

  7 is less than or equal to 7 7 is greater than or equal to 7

  (lanjutan)

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

Pengambilan Keputusan: Persamaan dan Operator Relasional [4]

  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

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