Friday, December 23, 2016

Bab 2. Pemrograman C Belajar Dari Contoh



Bab. 2 Program Terstruktur


Tujuan Instruksional
       ·         Statemen seleksi if.
      ·         Statemen seleksi if...else.
·         Statemen repetisi while.
·         Operator penugasan.





2.1 Statemen Seleksi if

Struktur seleksi if dipakai untuk memilih beberapa alternatif aksi yang akan dilakukan program. Sebagai contoh, dimisalkan bahwa nilai batas kelulusan pada sebuah ujian adalah 60. Statemen pseudocode

Jika nilai mahasiswa lebih dari atau sama dengan 60
  Tampilkan “Lulus”

menentukan jika kondisi “nilai mahasiswa lebih dari atau sama dengan 60” bernilai false atau true. Jika kondisi bernilai true, maka “Lulus” akan ditampulkan, dan statemen berikutnya akan dieksekusi. Sebaliknya, jika kondisi bernilai false, maka statemen untuk menampilkan “Lulus” akan diabaikan, dan statemen berikutnya yang akan dieksekusi.

Statemen pseudocode if tersebut dapat ditulis dalam C sebagai

if ( nilai >= 60 ) {
   printf( "Lulus\n" );
} /* akhir if */



Gambar 2.1 | Diagram alir statemen if seleksi-tunggal

Diagram alir pada Gambar 2.1 mengilustrasikan statemen if seleksi-tunggal. Diagram alir ini memuat apa yang dikenal sebagai simbol diagram alir yang paling penting, yaitu simbol diamond, yang juga dikenal dengan simbol keputusan untuk mengindikasikan bahwa suatu keputusan harus dibuat. Simbol keputusan memuat sebuah ekspresi, seperti kondisi, yang bisa bernilai true atau false. Simbol keputusan memiliki dua garis-alir keluar. Satu garis-alir mengindikasikan arah yang akan ditempuh jika ekspresi di dalam simbol bernilai true; yang lain mengindikasikan arah yang akan ditempuh ketika ekspresi bernilai false. Keputusan dibuat didasarkan pada kondisi yang memuat operator relasional dan operator ekualitas. Namun, pada kenyataannya, keputusan bisa dibuat didasarkan pada sembarang ekspresi, jika ekspresi memiliki nilai evaluasi nol, maka akan dipandang sebagai false, dan jika hasil evaluasinya bernilai tak-nol, maka akan diperlakukan sebagai true.


2.2 Statemen Seleksi if...else
Statemen seleksi if melakukan sebuah aksi hanya ketika kondisi bernilai true; sebaliknya aksi tersebut diabaikan. Statemen seleksi if...else memampukan Anda untuk menspesifikasi dua kondisi berbeda ketika kondisi bernilai true dan ketika kondisi bernilai false.

if nilai lebih dari atau sama dengan 60
  Tampilkan “Lulus”
else
  Tampilkan “Gagal”

menampilkan “Lulus” jika nilai mahasiswa lebih dari atau sama dengan 60 dan menampilkan “Gagal” jika nilai mahasiswa kurang dari 60. Statemen pseudocode if...else tersebut dapat ditulis dalam C sebagai

if ( nilai >= 60 ) {
  printf( "Lulus\n" );
} /* end if */
else {
  printf( "Gagal\n" );
} /* akhir else */

Diagram alir pada Gambar 2.2 mengilustrasikan aliran kendali di dalam statemen if...else. Perhatikan kembali bahwa (selain lingkaran kecil dan anak panah) dua jenis simbol yang ada pada diagram alir adalah persegi-panjang (untuk aksi) dan diamond (untuk keputusan).


Gambar 2.2 | Diagram alir statemen if...else seleksi-ganda


C menyediakan operator kondisional (?:) yang sangat berelasi dengan statemen if...else. Operator kondisional ini memerlukan tiga operand. Operand pertama adalah sebuah kondisi. Operand kedua adalah nilai dari ekspresi jika kondisi bernilai true dan operand ketiga adalah nilai dari ekspresi jika kondisi bernilai false. Sebagai contoh,

printf( "%s\n", nilai >= 60 ? "Lulus" : "Gagal" );

memuat sebuah ekspresi kondisional yang mengevaluasi literal string “Lulus” jika kondisi nilai >= 60 bernilai true dan yang mengevaluasi literal string “Gagal” jika kondisi nilai >= 60 bernilai false. String kendali format pada printf memuat penspesifikasi konversi %s untuk menampilkan sebuah string.

Operand kedua dan operand ketiga di dalam ekspresi kondisional dapat pula berupa aksi yang akan dieksekusi. Sebagai contoh, ekspresi kondisional

nilai >= 60 ? printf( "Lulus\n" ) : printf( "Gagal\n" );

dibaca sebagai “Jika nilai lebih besar dari atau sama dengan 60 maka eksekusi printf(“Lulus\n”), sebaliknya eksekusi printf(“Gagal\n”).


2.3 Statemen Seleksi if...else Bersarang
Statemen seleksi if...else bersarang untuk beberapa kasus dilakukan dengan menempatkan statemen if...else di dalam statemen if...else lain. Sebagai contoh, pseudocode berikut akan menampilkan A untuk nilai lebih besar atau sama dengan 90, B untuk nilai lebih besar atau sama dengan 80, C untuk nilai lebih besar atau sama dengan 70, D untuk nilai lebih besar atau sama dengan 60, dan F untuk semua nilai lainnya.

If nilai mahasiswa lebih besar dari atau sama dengan 90
  Print “A”
else
  If nilai mahasiswa lebih besar dari atau sama dengan 90
    Print “B”
  else
    If nilai mahasiswa lebih besar dari atau sama dengan 70
      Print “C”
    else
      If nilai mahasiswa lebih besar dari atau sama dengan 60
        Print “D”
      else
        Print “F”

Pseudocode tersebut dapat dituliskan dalam C sebagai

if ( nilai >= 90 )
  printf( "A\n" );
else
  if (nilai >= 80 )
    printf("B\n");
  else
    if (nilai >= 70 )
      printf("C\n");
    else
      if (nilai >= 60 )
        printf( "D\n" );
      else
        printf( "F\n" );

Banyak programer C lebih nyaman menuliskannya sebagai

if ( nilai >= 90 )
  printf( "A\n" );
else if (nilai >= 80 )
  printf( "B\n" );
else if (nilai >= 70 )
  printf( "C\n" );
else if (nilai >= 60 )
  printf( "D\n" );
else
  printf( "F\n" );

Statemen seleksi if tidak hanya bisa memuat satu statemen di dalam tubuhnya. Untuk mencantumkan beberapa statemen di dalam tubuh suatu statemen if, sepasang kurung kurawal ({ dan }) dipakai untuk mangapitnya. Himpunan statemen yang diapit tersebut dikenal dengan blok atau statemen gabungan.

Contoh berikut mencantumkan statemen gabungan di bagian else dari suatu statemen if...else.

if ( nilai >= 60 ) {
  printf( "Lulus.\n" );
} /* akhir if */
else {
  printf( "Gagal.\n" );
  printf( "Anda harus mengulang matakuliah ini.\n" );
} /* akhir else */


2.4 Statemen Repetisi while
Perhatikan statemen repetisi while berikut:

hasil = 3;
while ( hasil <= 100 ) {
  hasil = 3 * hasil;
} /* akhir while */

Diagram alir pada Gambar 2.3 mengilustrasikan kendali alir di dalam repetisi while. Garis alir yang keluar dari simbol persegi-panjang menuju kembali ke simbol keputusan, yang diuji setiap kali melalui loop sampai keputusan akhirnya bernilai false. Pada titik ini, statemen while keluar dan kendali bergerak ke statemen berikutnya di dalam program.


Gambar 2.3 | Diagram alir repetisi while

Ketika kendali masuk ke statemen while, nilai dari hasil adalah 3. Variabel hasil secara berulang dikalikan dengan 3, menghasilkan nilai 9, 27, dan 81. Ketika hasil menjadi 243, kondisi di dalam statemen while, hasil <= 1000, menjadi false. Hal ini menghentikan repetisi, dan nilai akhir hasil adalah 243. Program kemudian berlanjut untuk mengeksekusi statemen setelah while.


2.5 Studi Kasus
Akan digunakan repetisi terkendali-kounter untuk membaca beberapa nilai yang dimasukkan pengguna. Teknik ini menggunakan sebuah variabel kounter untuk menentukan berapa kali sehimpunan statemen harus dieksekusi. Pada contoh ini, repetisi berhenti ketika kounter melebihi 10. Pseudocode akan disajikan dan program C terkait diberikan pada Gambar 2.4. Repetisi terkendali-kounter sering dikenal dengan repetisi pasti karena jumlah repetisi telah diketahui sebelum loop mulai dieksekusi. Berikut adalah pseudocode yang ingin direalisasikan:

Tetapkan total menjadi nol
Tetapkan kounter nilai menjadi satu

while kounter nilai kurang dari atau sama dengan 10
   Masukkan nilai berikutnya
   Tambahkan nilai ke total
   Tambahkan satu kepada kounter nilai

Tetapkan rata-rata kelas dengan membagi total dengan sepuluh
Tampilkan rata-rata kelas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* Gambar 2.4: gambar02_04.c
   Program untuk menghitung rata-rata kelas */
#include <stdio.h>

/* fungsi main untuk memulai eksekusi */
int main( void )
{
  int kounter; /* jumlah nilai yang akan dimasukkan */
  int nilai; /* nilai */
  int total; /* total nilai yang dimasukkan pengguna */
  int rata_rata; /* rata-rata nilai */

  /* inisialisasi */
  total = 0; /* menginisialisasi total */
  kounter = 1; /* menginisialisasi kounter loop */

  /* pemrosesan */
  while (kounter <= 10) { /* loop 10 kali */
    printf( "Masukkan nilai: " ); /* meminta pengguna untuk masukan */
    scanf( "%d", &nilai ); /* membaca nilai dari pengguna */
    total = total + nilai; /* menambahkan nilai kepada total */
    kounter = kounter + 1; /* menginkremen kounter */
  } /* akhir while */

  /* penghentian */
  rata_rata = total / 10; /* pembagian integer */

  printf( "Rata-rata kelas adalah %d\n", rata_rata ); /* menampilkan hasil */
  return 0; /* indikasi terminasi sukses */
} /* akhir fungsi main */


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


Gambar 2.4 | Program menghitung rata-rata kelas



Soal
1.       Identifikasi dan koreksi error pada tiap kasus berikut:

a) while ( c <= 5 ) {
     hasil *= c;
     ++c;
b) scanf( "%.4f", &nilai );
c) if ( gender == 1 )
     printf( "Wanita\n" );
   else;
     printf( "Pria\n" );

2.       Identifikasi dan koreksi error pada tiap kasus berikut:

a) if ( usia >= 65 );
     printf( "Usia lebih dari atau sama dengan 65\n" );
   else
     printf( "Usia kurang dari 65\n" );
b) int x = 1, total;
   while ( x <= 10 ) {
     total += x;
     ++x;
   }
c) While ( x <= 100 )
     total += x;
     ++x;
d) while ( y > 0 ) {
     printf( "%d\n", y );
     ++y;
   }
3.       Apakah yang dilakukan program ini?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>

int main( void )
{
  int x = 1, total = 0, y;

  while ( x <= 10 ) {
    y = x * x;
    printf( "%d\n", y );
    total += y;
    ++x;
  } /* akhir while */

  printf("Total adalah %d\n", total);
  return 0;
 } /* akhir main */

4.       Apakah yang ditampilkan program ini?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

int main( void )
{
  int hitung = 1; /* inisialisasi hitung */

  while (hitung <= 10 ) { /* loop 10 kali */

    /* menampilkan sebaris teks */
    printf( "%s\n", hitung % 2 ? "****" : "++++++++" );
    hitung++; /* menginkremen hitung */
  } /* akhir while */

  return 0; /* indikasi terminasi sukses */
} /* akhir fungsi main */













No comments:

Post a Comment