Senin, 15 April 2013

ALGORITMA DAN PEMROGRAMAN I




BAB I
PENGANTAR ALGORITMA DAN PEMROGRAMAN

A.     Pengertian Program dan Bahasa Pemrograman
Program adalah kumpulan instruksi yang digunakan untuk mengatur komputer agar melakukan suatu tindakan tertentu. Tanpa program, komputer tidak dapat melakukan apa-apa. Dengan kata lain, program merupakan salah satu bagian penting pada komputer agar melakukan aksi yang sesuai dengan yang dikehendaki oleh pembuatnya.
Orang yang membuat program biasa disebut pemrogram (programmer). Adapun aktivitas yang berhubungan dengan pembuatan program dinamakan pemrograman (programming).
Bahasa program ditulis dengan mengikuti kaidah bahasa pemrograman tertentu. Secara garis besar, bahasa-bahasa pemrograman dapat dikelompokkan menjadi :
1.            Bahasa berasas tinggi (high-level language) adalah bahasa pemrograman yang berorientasi kepada bahasa manuasia sehingga mudah dipahami oleh manusia. Yang termasuk dalam kelompok ini adalah C, C++, Java, Pascal, dll
2.            Bahasa berasas rendah (low-level language) adalah bahasa pemrograman yang berorientasi kepada mesin. Bahasa ini menggunakan kode biner (hanya mengenal kode 0 dan 1). Yang tergolong dalam kelompok bahasa ini adalah bahasa mesin dan bahasa rakitan. Bahasa ini sangat dulit untuk dipahami oleh orang awam. Selain itu bahasa mesin sangat bergantung pada mesin, artinya bahasa mesin antara satu mesin dengan mesin yang lain jauh berbeda.

B.     Penerjemah Bahasa
Program yang ditulis dalam bahasa pemrograman seperti C++ sebenarnya tidak dimengerti oleh komputer secara langsung, sebab komputer hanya mengenal bahasa mesin, yakni bahasa yang hanya mengenal kode 0 dan 1. Supaya program dapat dijalankan (dieksekusi) oleh komputer, program tersebut harus diterjemahkan terlebih dahulu kedalam bahasa mesin. Proses penerjemahannya dilakukan oleh program yang disebut translator (penerjemah).


Translator dapat berupa :
1.            Interpreter
Kelebihannya :
·              Mudah dalam mencari kesalahan seandainya program menghasilkan sesuatu yang dianggap salah ketika program dijalankan, karena kode sumber selalu tersedia.
Kelemahannya :
·              Kode sumber harus selalu tersedia
·              Eksekusi lambat.
2.      Kompiler
Kelebihannya :
·              Pengerjaan instruksi dilakukan dengan sangat cepat, karena setelah kode objek terbentuk maka tidak perlu lagi adanya penerjemahan, mengingat komputer dapat memahami kode objek secara langsung
·              Kode objek dapat didistribusikan ke komputer lain tanpa perlu menyertakan kode sumber dari kompiler, sehingga kerahasiaan kode sumber tetap terjamin.
Kelemahan :
·              Seluruh kode sumber harus benar secara sintaks agar program dapat diuji.

C.     Penyelesaian Masalah dengan Program
Orang yang membuat program biasanya bertujuan untuk menyelesaikan masalah. Terdapat tiga langkah penting yang harus dilakukan :
1.            Menganalis masalah dan membuat algoritma
Didalam analisis masalah diperlukan tindakan untuk mengidentifikasi informasi yang menjadi keluaran pemecahan masalah dan data-data yang menjadi masukan. Algoritma adalah langkah-langkah yang dilakukan untuk menyelesaikan suatu masalah.
Contoh : Algoritma menghitung luas lingkaran
         Penyelesaian
         Algoritma 1 :
1)            Masukkan jari-jari lingkaran
2)            Hitung luas lingkaran dengan menggunakan rumus 3.14 x jari-jari x jari-jari
3)            Tampilkan nilai luas lingkaran
Algoritma 2 (menggunakan pseudocode) :
1)            jari-jari ← r
2)            luas ← 3.14 x jari-jari x jari-jari
3)            write (luas)
Algoritma 3 (menggunakan flowchart) :
Simbol-simbol dalam flowchart
 
 










                                                                                                                                  
Berikut adalah gambar flowchart dari menghitung luas lingkaran



2.            Menuangkan algoritma ke dalam bentuk program
Langkah-langkahnya :
1)            Start → All Programs → Turbo C++
2)            File → New → ketik program dibawah ini
3)            Untuk melihat hasilnya klik tanda yang dilingkari
3.      Mengeksekusi dan menguji program
         Ada beberapa kemungkinan yang terjadi :
1)            Kesalahan sintaksis, adanya kesalahan dalam menuliskan program yang tidak sesuai dengan kaidah bahasa pemrogram. Contoh : dalam C++ menghasruskan setiap pernyataan diakhiri dengan titik-koma.
2)            Kesalahan logika, kesalahan yang terjadi karena ada logika yang salah. Misalnya phi yang seharusnya 3.14 tetapi ditulis 31.4 atau 3,14
3)            Kesalahan runtime, kesalahan yang terjadi karena suatu operasi dalam  program tidak dapat dilakukan oleh komputer. Contoh : jika terdapat operasi pembagian dengan nol.
BAB II
STRUKTUR DASAR ALGORITMA

A.     Pedoman Menyusun Pseudocode
1.      Notasi ← dipakai untuk memberikan nilai ke suatu variabel. Contoh : bil ← 0 digunakan untuk memberikan nilai nol ke variabel bil.
2.      Setiap pernyataan atau suatu perintah yang dapat berdiri sendiri akan ditulis dalam sebuah baris tersendiri. Contoh : bil ← 1 + 2 , merupakan contoh pernyataan untuk menugaskan atau memasukkan hasil penjumlah bilangan 1 dan 2 ke dalam variabel bil. Pernyataan seperti itu dikenal dengan sebuah pernyataan penugasan.
3.      Setiap variabel (nama yang digunakan untuk menyimpan data dan datanya dapat diubah-ubah) akan ditulis dengan awalan huruf.
4.      Tipe data majemuk atau tipe rekaman (tipe data yang dapat mengandung beberapa data dengan nama yang berbeda-beda) akan dinyatakan dengan notasi seperti berikut :
simpul = REKAMAN
         data1
         data2
         data3
AKHIR-REKAMAN

 
 






Untuk menyatakan data1 yang terdapat pada simpul , maka digunakan notasi berupa simpul ← data1
5.            Indentasi atau penjorokan ke kanan digunakan untuk menuliskan pernyataan-pernyataan yang berada dalam suatu struktur blok. Contoh :
JIKA x > 1 MAKA
            Pernyataan_1
            Pernyataan_2
AKHIR-JIKA
 
 





         Pada contoh di atas, Pernyataan_1, Pernyataan_2 menyatakan dalam sebuah blok JIKA ... AKHIR-JIKA
6.      Simbol // digunakan untuk menyatakan komentar. Komentar adalah keterangan yang ditujukan untuk pembaca algoritma, tidak ditujukan untuk diproses oleh komputer. Semua karakter dimulai dari simbol tersebut hingga akhir baris diperlakukan sebagai komentar. Contoh :
         Pada contoh di atas, bil ← bil + 1 tetap menyatakan sebuah pernyataan, tetapi sisanya dalam baris tersebut berkedudukan sebagai komentar.
7.      Notasi masukan ( ) dan tampilkan ( ) secara berurutan mewakili perintah untuk memperoleh masukan dan menyajikan keluaran.
Contoh :
masukan (panjang, lebar)
tampilkan (luas)
 
 



         Pada contoh pertama, masukan yang diperlukan berupa panjang dan lebar. Pada contoh kedua, yang ditampilkan adalah nilai luas.
8.      Notasi seperti A [i] menyatakan elemen ke-i pada larik A. Nilai terkecil untuk i adalah nol. Untuk larik berdimensi dua, sebuah elemen akan dinotasikan dengan A[i , j] atau A [i] [j] dengan i menyatakan indeks untuk baris dan j untuk kolom.
9.      Notasi panjang (A) menyatakan ekspresi untuk memperoleh jumlah elemen A

B.     Macam-macam Struktur Dasar Algoritma
Terdapat tiga buah struktur dasar, antara lain :
1.      Struktur Sekuensial
         Langkah-langkah yang dilakukan dalam algoritma diproses secara berurutan.
Contoh : Buatlah algoritma untuk menampilkan isi dua buah variabel. Variabel a = 12, b = 55 menjadi a = 55, b = 12
Solusi : Untuk menukarkan isi dua buah variabel diperlukan sebuah variabel yang digunakan untuk membantu penukaran data.
Algoritma : 
1)            Masukan (a , b)                     4)         b ← c
2)            c ← a                                    5)         tampilkan (a , b)
3)            a ← b
2.      Struktur Seleksi
         Struktur seleksi menyatakan pemilihan langkah yang didasarkan oleh suatu kondisi (pengambilan keputusan) yang dinyatakan dengan belah ketupat.
         Pada struktur di atas, langkah 1 hanya akan dijalankan kalau kondisi bernilai BENAR, sedangkan langkah 2 hanya dijalankan kalau kondisi bernilai SALAH.
Contoh 1 : Buatlah algoritma untuk menentukan bilangan terbesar dari dua buah bilangan x dan y ??
Solusi : Penyelesaian dalam bentuk Pseudocode
1)            masukan (x , y)
2)            terbesar ← x    // asumsi bahwa x adalah yang terbesar
3)            JIKA terbesar < y MAKA
                terbesar ← y
         AKHIR JIKA
4)            tampilkan (terbesar)


Penyelesaian dalam bentuk Flowchart

Contoh 2 : Suatu swalayan memberikan diskon sebesar 10% bagi siapa saja yang berbelanja sebesar 100.000 atau lebih. Buatlah algoritma untuk menghitung nilai uang yang harus dibayar oleh pembeli ??
Solusi :  Penyelesaian dalam bentuk Pseudocode
1)                  Masukkan (pembelian)
2)                  JIKA pembelian >= 100000 MAKA
                         diskon ← 0.1 x pembelian
                  SEBALIKNYA
                         diskon ← 0
                  AKHIR-JIKA
3)                  pembayaran ← pembelian – diskon
4)                  tampilkan (pembayaran)



              Penyelesaian dalam bentuk Flowchart

3.      Struktur Pengulangan
Pengulangan menyatakan suatu tindakan atau langkah yang dijalankan beberapa kali. Sebagai contoh, jika Anda ingin menampilkan tulisan ”Hello” sebanyak 10 kali, Anda dapat menuliskannya menggunakan Struktur Sekuensial akan tetapi jika ingin menampilkan dalam jumlah yang besar maka Struktur Sekuensial dianggap tidak praktis lagi. Oleh karena itu dapat menggunakan Struktur Pengulangan.

Contoh 1 : Buatlah algoritma untuk menampilkan 6 buah tulisan ”Hello” dengan menggunakan pengulangan.
Solusi : Penyelesaian dalam bentuk Pseudocode
1)            pencacah ← 1
2)            ULANG SELAMA pencacah < 7
                     tampilkan (”Hello”)
                     pencacah ← pencacah + 1
               AKHIR-ULANG
            Penyelesaian dalam bentuk Flowchart

Contoh 2 : Buatlah algoritma untuk menampilkan bilangan sbb : 1  4  9  16  25  36  49
Solusi :  Penyelesaian dalam bentuk Pseudocede
1)            bil ← 1
2)            ULANG SELAMA bil < 8
               tampilkan (bil, bil x bil)
               bil ← bil + 1 
              AKHIR-ULANG

Penyelesaian dalam bentuk Flowchart

LATIHAN
1.            Buatlah algoritma untuk menampilkan bilangan sbb : 1 2 3 4 5 6 7 8 9 dan sebaliknya ?
2.            Buatlah algoritma untuk menampilkan bilangan sbb : 5 4 3 2 1 ?
3.            Buatlah algoritma untuk menampilkan bilangan genap dan ganjil kurang dari 20 ?
4.            Diketahui tiga buah bilangan x, y, dan z. Buatlah diagram alir untuk mendapat nilai terbesar diantara keiga bilangan tersebut ??











BAB III
DASAR PEMROGRAMAN C++

A.     Mengenal Program C++
Contoh : program sederhana
# include < iostream.h >
   main( )
  {
     cout << “Selamat Belajar C++ \n”;
   }


 
 





·              Berkas header (berekstensi .h) adalah berkas yang berisi prototype fungsi, definisi konstanta, dan definisi variable. Prototipe fungsi berupa judul suatu fungsi yang dilengkapi dengan argumen dan tipe argumen serta tipe nilai balik untuk fungsi yang memberikan nilai balik. Prototipe fungsi harus sudah tersedia sebelum pemanggilan fungsi. Ini merupakan persyaratan selama kompilasi.
·              Praprosesor # include adalah suatu perintah yang digunakan untuk mengatur kompiler agar membaca berkas header yang disertakan di belakang kata include saat pelaksanaan kompilasi.
·              main( ) adalah fungsi yang akan dijalankan pertama kali
·              Pernyataan untuk menampilkan keluaran berupa cout. Setiap pernyataan harus diakhiri tanda titik koma ( ; )

B.     Pengenal (Identifier)
Adalah suatu nama yang digunakan dalam program untuk menyatakan variabel, fungsi, dll. Aturan umum yang berlaku dalam membuat pengenal (identifier) :
·              Berawalan huruf kapital, huruf kecil atau karakter garis bawah ( _ ). Huruf kecil dan huruf kapital dibedakan. Contoh, alamat dan Alamat adalah dua buah pengenal yang berbeda.
·              Bagian berikutnya dapat berupa huruf, angka (0 .. 9) atau karakter garis bawah
·              Tidak boleh terdapat spasi
Absah
Salah
N
modal*bunga (ada tanda *)
_x
3Bulan (diawali dengan angka)
semester_1
Semester 1 (ada spasi)

C.     Tipe Data

Tipe
Keterangan
Char
Menyatakan sebuah karakter (bisa berupa huruf seperti A dan a, digit seperti 0 atau 7, atau simbol seperti & dan *)
Double
Menyatakan bilangan berkoma 
Float
Menyatakan bilangan berkoma 
Int
Menyatakan bilangan bulat antara -32768 sampai 32767
long int
Menyatakan bilangan bulat antara -2147483648 sampai 2147483648

D.     Variabel
Adalah suatu nama yang menyatakan tempat dalam memori komputer yang digunakan untuk menyimpan suatu nilai dan nilainya dapat diubah-ubah.
Mendeklarasikan variabel
tipe_data nama_variabel ;



contoh :
int x;
int y;
int z;

dapat disederhanakan mjd

int x, y, z ;
·        int n;    maksudnya variabel n bertipe int (untuk menyimpan bilangan bulat)
·        char c;    maksudnya variabel c bertipe char (dipakai untuk meniympan karakter)
·        long int jum_penduduk;    maksudnya variabel jum_penduduk bertipe long int (dipakai untuk menyimpan bilangan bulat dengan nilai sekitar 2 milyar)
·        double jarak;   maksudnya variabel jarak bertipe double

Memberikan nilai variabel
variabel = nilai ;
n = 7 ;     berarti mengisikan 7 ke variabel n
n = n + 1;    berari hasil penjumlahan nilai n dengan 1 diberikan ke n. Dengan kata lain isi n dinaikkan sebesar satu

E.      Mengenal Komentar
Komentar digunakan untuk memberikan penjelasan kepada pembaca program. Komentar tidak memberikan efek apa-apa pada keluaran. Isinya dapat saja berupa penjelasan terhadap suatu pernyataan atau sejumlah pernyataan, dapat pula berisi kegunaan program beserta waktu pembuatan dan pembuatnya. Sebuah komentar ditulis di dalam pasangan tanda //
Contoh : // ini adalah komentar C++

F.      Menampilkan Informasi ke Layar
         cout digunakan untuk menampilkan tipe data apa saja dengan bentuk yang sederhana, cukup dengan melibatkan operator << .

G.     Memasukkan Data
         cin digunakan untuk membaca data dari keyboard dan berlaku untuk sebarang tipe data dengan melibatkan operator >>.
G.     Operator Aritmatika
         Digunakan untuk melakukan perhitungan aritmatika. Berkas header math.h menyediakan prototipe sejumlah fungsi yang berkaitan dengan aritmatika.

Fungsi
Keterangan
sqrt(x)
Memberikan nilai balik berupa akar x. Nilai balik bertipe double dan argumen juga bertipe double.
pow(x,y)
Memberikan nilai balik berupa xy . Nilai balik bertipe double dan argumen yang juga bertipe double.
tan(x)
Memberikan nilai balik berupa tangent x. Argumen x berupa nilai dalam satuan radians. Nilai balik berupa double dan argumen juga bertipe double
sin(x)
Memberikan nilai balik berupa sinus x. Argumen x berupa nilai dalam satuan radians. Nilai balik bertipe double dan argumen juga bertipe double
cos(x)
Memberikan nilai balik berupa cosinus x. Argumen x berupa nilai dalam satuan radians. Nilai balik bertipe double dan argumen juga bertipe double
log(x)
Memberikan nilai balik berupa loge. nilai balik bertipe double dan argumen juga bertipe double
log10(x)
Memberikan nilai balik berupa log10 x . nilai bertipe double dan argumen juga bertipe double
cabs(x)
Memberikan nilai balik berupa nilai absolut x. Nilai balik bertipe int dan argumen juga bertipe int.
fabs(x)
Memberikan nilai balik berupa nilai absolut x. Nilai balik bertipe double dan argumen juga bertipe double

Contoh :

Notasi Matematika
Ekspresi C++
ax2 + bx + c
a* x* x + b* x + c
√b
sqrt(b)
3√b
pow(b, 1.0/3)
a + b
c + d
(a + b) / (c + d)
√b2 + 4ac
sqrt(b* b – 4* a* c)
a x + y
x + y
exp(x+y)/ (x + y)
a
+
b
x + y
a+ b / fabs (m-n)
log10 m
log 10(m)
loge (m + n)
log (m+n)

H.     Mengenal Tipe Struct
         Di dalam C++ terdapat tipe struct yang dapat dipakai unruk menghimpun sejumlah data dengan tipe yang berbeda-beda. Data yang diletakkan dalam sebuah struct adalah data yang terkait. Sebagai contoh mungkin untuk membuat tipe struct yang mengandung data nomor pegawai (NIP), nama pegawai, dan gaji.


Pendefinisiannya adalah sebagai berikut :
struct data_pegawai
{
    int nip;
    char nama [25] ;
    long int gaji;
} ;

 
 





         Pada contoh diatas, tipe struct data_pegawai terdiri atas data nip, nama, dan gaji yang secara berturut-turut bertipe int, char [25], dan long int. Dalam hal ini nip, nama, dan gaji disebut sebagai elemen struct atau field.
Contoh 2

# include < iostream.h>
# include <conio.h>
#include <string.h>

struct data_pegawai
{
int nip;
char nama [25];
long int gaji;
};

main ( )
{
struct data_pegawai peg;
peg.nip = 4567 ;
strcpy(peg.nama, “Audi Febrianti”) ; // penugasan literal string ke variable string
peg. Gaji = 1200000 ;

cout << “NIP    : “ << peg . nip << “\n”;
cout << “Nama : “ << peg . Nama << “\n”;
cout << ”Gaji    : ” << peg . Gaji << ”\n”;
getche ( ) ;
}         

Outputnya :
NIP : 4567
Nama : Audi Febrianti
Gaji : 1200000
 



                                                                                      






I.       Operator Pembanding

Operator
Keterangan
Operator
Keterangan
Lebih dari
*
Perkalian
> =
Lebih dari atau sama dengan
/
Pembagian
Kurang dari
%
Sisa pembagian (modulus)
< =
Kurang dari atau sama dengan
< <
Geser bit ke kiri
! =
Tidak sama dengan
> >
Geser bit ke kanan
= =
Sama dengan
&
Operator ”dan”
+ +
Penaikan ke belakang
^
Operator ”xor”
- -
Penurunan di belakang
|
Operator ”bukan”
( )
Pemanggilan fungsi
& &
Logika ”dan”
[ ]
Elemen array
| |
Logika ”atau”
!
Operator bukan
?:
Operator kondisi

LATIHAN

1.      Buatlah program lengkap untuk menampilkan NAMA dan NPM Anda ??
2.      Buatlah program C++ untuk membaca dua buah bilangan bulat dan kemudian menampilkan jumlah kedua bilangan tersebut ??















BAB IV
OPERASI SELEKSI

A.     IF ... ELSE
Kondisi pada pernyataan if harus ditulis dalam tanda kurung. Dengan kata lain, kata kurung harus disertakan untuk melingkupi kondisi pada pernyataan if. Dalam bahasa C++, jika di dalam { } hanya terdapat sebuah pernyataan, tanda tersebut bisa dibuang.

Pseudocode
Kode C++
If..bersarang
JIKA kondisi benar MAKA
       pernyataan_1
       .......
SEBALIKNYA
       pernyataan_2
       ........
AKHIR-JIKA
if (kondisi)
{
        pernyataan_1 ;
        ......
}
else
        pernyataan_2 ;
        .......
}
  
if (kondisi)
{
        pernyataan_1 ;
        ......
}
else
        if (kondisi)
      {
           pernyataan_1 ;
        ......
       else
           pernyataan_2 ;
        .......
} 
 
JIKA kondisi benar MAKA
       pernyataan
       .......
AKHIR-JIKA
if (kondisi)
{
        pernyataan ;
        ......
}



Contoh 1 : Menentukan bilangan genap dan bilangan ganjil. Sebuah bilangan dapat ditentukan sebagai bilangan genap jika bilangan tersebut habis dibagi dengan 2. Jika tidak habs dibagi dengan 2 maka bilangan tersebut dianggap bilangan ganjil. Buatlah algoritma dan programnya ??
Solusi :
              Algoritma :
1)      masukkan (bilangan)
2)      JIKA sisa_pembagian (bilangan,2) = 0 MAKA
                             Tampilkan (”Bilangan genap”)
                    SEBALIKNYA
                             Tampilkan (”Bilangan ganjil)
                    AKHIR-JIKA     

               Program :
                 
Contoh 2 : Menentukan bilangan terbesar diantara dua buah bilangan. Buatlah algoritma dan program untuk menampilkan dua buah bilangan bulat dimasukkan dari keyboard ??
Solusi :              Cara 1
Algoritma :
1)  masukan (x , y)
2)  terbesar ← x    // asumsi bahwa x adalah yang terbesar
     JIKA terbesar < y MAKA
              terbesar ← y
     AKHIR JIKA
3)      tampilkan (terbesar)

Program :
# include <iostream.h>
# include <conio.h>
   main ( )
   {
   double x , y, terbesar ;

    cout << “Masukkan x : “ ;
    cin >> x ;

    cout << “Masukkan y : “ ;
    cin >> y ;

// mengasumsikan yang terbesar adalah x

    if (terbesar < y)
            terbesar = y ;

   cout << ”Bilangan terbesar = ” << terbesar << ”\n”;
   getche ( ) ;
   }

Outputnya :
Masukkan x : 34 (tekan Enter)
Masukkan y : 67 (tekan Enter)
Bilangan terbesar 67

Masukkan x : 55 (tekan Enter)
Masukkan y : 12 (tekan Enter)
Bilangan terbesar 55

 
             



















              






Cara 2 : dilakukan tanpa melibatkan variabel lain
               Algoritma :
1)      masukkan (x , y)
2)      JIKA x > y MAKA
             Tampilkan (”terbesar yaitu ”, x)
      SEBALIKNYA
             Tampilkan (”terbesar yaitu”, y)
      AKHIR-JIKA
               Program :
# include <iostream.h>
# include <conio.h>
   main ( )
   {
   double x , y ;

    cout << “Masukkan x : “ ;
    cin >> x ;

    cout << “Masukkan y : “ ;
    cin >> y ;

    if (x < y)
            cout << ”Bilangan terbesar = ” << x << ”\n”;
    else
            cout << ”Bilangan terbesar = ” << y << ”\n”;
    getche ( );  
   }

Outputnya :
Masukkan x : 5 (tekan Enter)
Masukkan y : 6 (tekan Enter)
Bilangan terbesar = 6
 
              























Contoh 3 : Memvalidasi nilai ujian. Buatlah algoritma dan program yang meminta sebuah nilai ujian dimasukkan dari keyboard dan memvalidasi nilai tersebut. Berikan komentar ”Absah” jika nilai tersebut berada antara 0 – 100 dan berikan komentar ”Tidak absah” untuk keadaan sebaliknya ??
Solusi :
Algoritma :
1)      masukkan (nilai)
2)      JIKA (nilai > = 0 dan nilai < = 100 MAKA
            Tampilkan (”Absah”)
      SEBALIKNYA  
             Tampilkan (”Tidak absah”)
     AKHIR-JIKA
Program :

Contoh 4 : Menentukan predikat kelulusan. Tabel berikut memperlihatkan daftar predikat kelulusan seorang sarjana berdasarkan indeks prestasi kumulatifnya. Buatlah algoritma dan program untuk menentukan predikat kelulusan seperti di bawah ini : 
IP Kumulatif
Predikat Kelulusan
2.00 ≤ IP ≤ 2.75
Lulus Memuaskan
2.75  ≤ IP  ≤ 3.50
Lulus Sangat Memuaskan
3.50  ≤ IP  ≤ 4.00
Lulus dengan Pujian

Solusi : Menggunakan if – bersarang
             Algoritma :
1)      masukkan (ip)
2)      JIKA ip ≥ 2 dan ip   2.75 MAKA
           Tampilkan (”Lulus Memuaskan”)
     SEBALIKNYA
          JIKA ip > 2.75 dan ip  3.50 MAKA
     Tampilkan (”Lulus Sangat Memuaskan”)
 SEBALIKNYA
     JIKA ip > 3,50 dan ip   4.00 MAKA
            Tampilkan (”Lulus dengan Pujian”)
    SEBALINKNYA
            Tampilkan (”Data IP tidak valid”)
    AKHIR-JIKA
AKHIR-JIKA
AKHIR-JIKA

Program :
# include <iostream.h>
# include <conio.h>
   main ( )
   {
      double ip ;

      cout << “IP Kumulatif : “;
      cin >> ip;

      if (ip >= 2.00 && ip <= 2.75)
         cout << “Lulus Memuaskan \n” ;
     else
         if (ip > 2.75 && ip <= 3.50)
              cout << “Lulus Sangat Memuaskan \n” ;
         else
              if (ip > 3.50 && ip <= 4.00)
                   cout << “Lulus Dengan Pujian \n” ;
             else
                   cout << “Data IP tidak valid”;

     getche ( );
     }

Outputnya :
IP Kumulatif : 3.00 (tekan Enter)
Lulus Sangat Memuaskan

IP Kumulif : 1.50 (tekan Enter)
Data IP tidak valid
 
 





















Contoh 5 : Menentukan nama bulan menurut angka. Buatlah algoritma dan program yang membaca data kode bulan dari keyboard dan kemudian menampilkan nama bulan ??
Solusi :  Algoritma
1)      Masukkan (kode_bulan)
2)      JIKA kode_bulan =1 MAKA
         Tampilkan (”Janauari”)
      SEBALIKNYA
         JIKA kode_bulan = 2 MAKA
Tampilkan (”Februari”)
      SEBALIKNYA
               JIKA kode_bulan = 3 MAKA
                  Tampilkan (”Maret”)
               SEBALIKNYA
                    JIKA kode_bulan = 4 MAKA
                        Tampilkan (”April”)
                    SEBALIKNYA
                        JIKA kode_bulan = 5 MAKA
                             Tampilkan (”Mei”)
                        SEBALIKNYA
                             JIKA kode_bulan = 6 MAKA
                                  Tampilkan (”Juni”)
                             SEBALIKNYA
                                  JIKA kode_bulan = 7 MAKA
                                        Tampilkan (”Juli”)
                                  SEBALIKNYA
                                        JIKA kode_bulan = 8 MAKA
                                             Tampilkan (”Agustus”)
                                       SEBALIKNYA
                                             JIKA kode_bulan = 9 MAKA
                                                  Tampilkan (”September”)
                                             SEBALIKNYA
                                                  JIKA kode_bulan = 10 MAKA
                                                      Tampilkan (”Oktober”)
                                                  SEBALIKNYA
                                                       JIKA kode_bulan = 11 MAKA
                                                              Tampilkan (”November”)
                                                      SEBALIKNYA
                                                               JIKA kode_bulan = 12 MAKA
                                                                    Tampilkan (”Desember”)
                                                               SEBALIKNYA
                                                                     Tampilkan (”Salah kode bulan”)
                                                               AKHIR-JIKA
                                                      AKHIR-JIKA
                                                  AKHIR-JIKA
                                            AKHIR-JIKA
                                      AKHIR-JIKA
                                 AKHIR-JIKA
                           AKHIR-JIKA
                     AKHIR-JIKA
               AKHIR-JIKA
         AKHIR-JIKA
AKHIR-JIKA

Program :



# include <iostream.h>
# include <conio.h>
   main ( )
  {
      int kode_bulan;
     
      cout << “Masukkan kode bulan (1..12) :   ”) ;
      cin >> kode_bulan ;

     if (kode_bulan = = 1)
        cout << ”Januari \ n” ;
     else
        if (kode_bulan = = 2)
           cout << ”Februari \ n” ;
        else
           if (kode_bulan = = 3)
              cout << ”Maret\ n” ;
           else
              if (kode_bulan = = 4)
                  cout << ”April \ n” ;
             else
                  if (kode_bulan = = 5)
                      cout << ”Mei \ n” ;
                 else
                      if (kode_bulan = = 6)
                          cout << ”Juni \ n” ;
                     else
                          if (kode_bulan = = 7)
                              cout << ”Juli \ n” ;
                          else
                              if (kode_bulan = = 8)
                                  cout << ”Agustus \ n” ;
                             else
                                if (kode_bulan = = 9)
                                     cout << ”September \ n” ;
                                








 


                               else
                                  if (kode_bulan = = 10)
                                     cout << ”Oktober \ n” ;
                                 else
                                     if (kode_bulan = = 11)
                                         cout << ”November \ n” ;
                                     else
                                          if (kode_bulan = = 12)
                                              cout << ”Desember \ n” ;
                                          else
                                              cout << ”Salah kode bulan \ n” ;
       getche ( );
}

Outputnya :
Masukkan kode bulan (1..12) : 12 (tekan Enter)
Desember

Masukkan kode bulan (1..12) : 14 (tekan Enter)
Salah kode bulan
 
 


































Contoh 6 : Menentukan jumlah hari. Buatlah algoritma dan program yang meminta data bulan (1..12) dimasukkan dari keyboard dan kemudian menentukan jumlah hari dalam bulan tersebut ?
Solusi : Algoritma
1)      Masukkan (kode_bulan)
2)      JIKA kode_bulan = 2 MAKA
         Tampilkan (”Jumlah hari 28 atau 29”)
     SEBALIKNYA
          JIKA kode_bulan = 1 atau 3 atau 5 atau 7 atau 8 atau 10 atau 12 MAKA
              Tampilkan (”Jumlah hari 31”)
         SEBALIKNYA
             JIKA kode_bulan = 4 atau 6 atau 9 atau 11 MAKA
                    Tampilkan (”Jumlah hari 30”)
            SEBALIKNYA
                    Tampilkan (”Salah kode bulan”)
            AKHIR-JIKA
         AKHIR-JIKA
    AKHIR-JIKA




Program :

B.     SWITCH
         Penyataan break pada pernyataan switch digunakan agar ekesekusi dilanjutkan ke pernyataan yang terletak sesudah pernyataan switch. Bagian default pada switch bersifat opsional. Bagian ini hanya dijalankan kalau tak ada satupun bagian case yang cocok dengan nilai yang ada pada switch. Pernyataan break pada bagian default bisa ditiadakan tanpa mengubah hasil.

Pseudocode
Kode C++
COCOK nilai
       DENGAN nilai1 MAKA
             Pernyataan_11 ;
             Pernyataan_12 ;
       DENGAN nilai1 MAKA
             Pernyataan_21 ;
             Pernyataan_22 ;
       LAINNYA
             Pernyataan_31 ;
             Pernyataan_32 ;
AKHIR-COCOK 
switch (nilai)
{
     case nilai1 :
            pernyataan_11 ;
            pernyataan_12 ;
            break;
     case nilai2 :
            pernyataan_21 ;
pernyataan_22 ;
break;
     default :
pernyataan_n1 ;
pernyataan_n2 ;
break;
}
COCOK nilai
       DENGAN nilai1 MAKA
             Pernyataan_11 ;
             Pernyataan_12 ;
       DENGAN nilai1 MAKA
             Pernyataan_21 ;
             Pernyataan_22 ;
       LAINNYA
             Pernyataan_31 ;
             Pernyataan_32 ;
AKHIR-COCOK 
switch (nilai)
{
     case nilai1 :
            pernyataan_11 ;
            pernyataan_12 ;
            break;
     case nilai2 :
            pernyataan_21 ;
pernyataan_22 ;
break;
     case nilai3 :
pernyataan_31 ;
pernyataan_32 ;
break;
}

Contoh 1 : Menentukan nama bulan menurut angka. Buatlah algoritma dan program yang membaca data kode bulan dari keyboard dan kemudian menampilkan nama bulan ??
Solusi : Algoritma
1)      Masukkan (kode_bulan)
2)      COCOK kode_bulan
DENGAN 1 MAKA
   Tampilkan (”Januari”)
DENGAN 2 MAKA
   Tampilkan (”JFebruari”)
DENGAN 3 MAKA
   Tampilkan (”Maret”)
DENGAN 4 MAKA
   Tampilkan (”April”)
DENGAN 5 MAKA
   Tampilkan (”Mei”)
DENGAN 6 MAKA
   Tampilkan (”Juni”)
DENGAN 7 MAKA
   Tampilkan (”Juli”)
DENGAN 8 MAKA
   Tampilkan (”Agustus”)
DENGAN 9 MAKA
   Tampilkan (”September”)
DENGAN 10 MAKA
   Tampilkan (”Oktober”)
DENGAN 11 MAKA
   Tampilkan (”November”)
DENGAN 12 MAKA
   Tampilkan (”Desember”)
 LAINNYA 
   Tampilkan (”Salah kode bulan”)
AKHIR-COCOK

Program :
Contoh 2 : Menentukan jumlah hari. Buatlah algoritma dan program yang meminta data bulan (1..12) dimasukkan dari keyboard dan kemudian menentukan jumlah hari dalam bulan tersebut ?
Solusi : Algoritma
1)      masukkan (kode_bulan)
2)      COCOK kode_bulan
DENGAN 2 MAKA
      Tampilkan (”Jumlah hari 28 atau 29”)
DENGAN 1 MAKA
      Tampilkan (”Jumlah hari 31”)
DENGAN 3 MAKA
      Tampilkan (”Jumlah hari 31”)
DENGAN 5 MAKA
      Tampilkan (”Jumlah hari 31”)
DENGAN 7 MAKA
      Tampilkan (”Jumlah hari 31”)
DENGAN 8 MAKA
      Tampilkan (”Jumlah hari 31”)
DENGAN 10 MAKA
      Tampilkan (”Jumlah hari 31”)
DENGAN 12 MAKA
      Tampilkan (”Jumlah hari 31”)
DENGAN 4 MAKA
      Tampilkan (”Jumlah hari 30”)
DENGAN 6 MAKA
      Tampilkan (”Jumlah hari 30”)
DENGAN 9 MAKA
      Tampilkan (”Jumlah hari 30”)
DENGAN 11 MAKA
      Tampilkan (”Jumlah hari 30”)
LAINNYA
      Tampilkan (”Salah kode bulan”)
AKHIR-COCOK

Program :

# include <iostream.h>
# include<conio.h>
   main ( )
  {
      int kode_bulan ;
      cout << “Masukkan kode bulan (1..12) : “;
      cin >> kode_bulan;

      switch (kode_bulan)
      {
          case 2 :
             cout << “Jumlah hari 28 atau 29 \n” ;
             break;
          case 1 :
 case 3 :
 case 5 :
 case 7 :
 case 8 :
 case 10 :
 case 12 :
 
 























LATIHAN
1.            Buatlah algoritma dan program yang meminta sebuah nilai ujian dimasukkan dari keyboard. Hasilnya berupa keterangan ”Lulus” kalau nilainya lebih besar atau sama dengan 60 dan ”Tidak Lulus” kalau nilainya kurang dari 60 ??
2.            Buatlah algoritma dan program yang meminta sebuah bilangan bulat dimasukkan dari keyboard dan kemudian menghasilkan informasi sebagai berikut :
” Negatif ” kalau nilainya kurang dari nol. ”Nol” kalau nilainya sama dengan nol. ”Positif” kalau nilainya lebih dari nol ??
3.      Berdasarkan data berikut : 1 = ANTV    2 = RCTI     3 = SCTV      4 = INDOSIAR. Buatlah algoritma dan program yang mula-mula meminta nomor saluran dimasukkan dari keyboard dan kemudian menampilkan nama stasiun TV. Jika tidak terdapat nomor saluran maka akan ditampilkan ”Tidak ada siaran coyyy”.  Penyelesaian menggunakan JIKA .. AKHIR-JIKA dan COCOK-AKHIR COCOK ??
4.      Data berikut mencatumkan nama-nama lapisan udara berdasarkan letak ketinggian dari permukaan bumi :
         0 ≤ tinggi < 10 km : Troposfer , 10 ≤ tinggi < 40 km : Statosfer,
         40 ≤ tinggi < 70 km : Mesosfer, 70 ≤ tinggi < 400 km : Termosfer,
         tinggi  ≥ 400 km : Eksosfer. Buatlah algoritma dan program yang mula-mula meminta masukan data ketinggian dan kemudian menentukkan nama lapisan udaranya ??
BAB V
OPERASI PENGULANGAN

A.     WHILE
Pseudocode
C++
ULANG SELAMA kondisi
      Pernyataan_1
      ...........
      Pernyataan_n
AKHIR-ULANG
while (kondisi)
{
      Pernyataan_1 ;
      .........
      Pernyataan_n ;
}

         Dalam hal ini, bagian Pernyataan_1 hingga Pernyataan_n akan dijalankan secara terus menerus selama kondisi bernilai BENAR. Seandainya dalam tanda kurung {    dan     } hanya terdapat satu pernyataan, pasangan tanda tersebut dapat dihilangkan. Contoh :
while (kondisi)
      Pernyataan ;

 
 



Contoh 1 : Buatlah algoritma untuk menampilkan 6 buah tulisan ”Hello” dengan menggunakan pengulangan ??
# include <iostream.h>
# include <conio.h>
   main ( )
   {
       int bil ;
       bil = 1 ;
       while ( bil < =6 )
       {
            cout << ”Hello \n” ;
            bil = bil + 1 ;
        }
        getche ( ) ;
    }

 
Solusi : Program










Contoh 2 : Buatlah program untuk menampilkan bilangan sbb : 1 2 3 4 5 6 7 8 9 ??
Solusi : Program
# include<iostream.h>
# include<conio.h>
   main ( )
   {
      int bil ;
      bil = 1 ;
      while (bil < = 9)
     {
         cout << bil ;
         bil = bil + 1 ; // tambahkan cout << “\n” ; untuk pindah baris
      }
    }




 
 









Contoh 3 : Buatlah program untuk menampilkan bilangan sbb : 5 4 3 2 1 ??
Solusi : Program
Contoh 4 : Buatlah program untuk menampilkan bilangan ganjil kurang dari 20 ??
# include<iostream.h>
# include<conio.h>
   main ( )
   {
      int bil ;
      bil = 1 ;
      while (bil < 20)
     {
         cout << bil ;
         bil = bil + 2 ; // tambahkan cout << “\n” ; untuk pindah baris
      }
    }

 
Solusi : Program
# include<iostream.h>
# include<conio.h>
   main ( )
   {
      int bil ;
      bil = 5 ;
      while (bil < = 1)
     {
         cout << bil ;
         bil = bil + 1 ; // tambahkan cout << “\n” ; untuk pindah baris
      }
    }

 
 







                                                                                                             
Contoh 5 : Buatlah program untuk menampilkan bilangan genap kurang dari 20 ??
# include<iostream.h>
# include<conio.h>
   main ( )
   {
      int bil ;
      bil = 1 ;      while (bil < 20)
     {
         cout << bil ;
         bil = bil + 2 ; // tambahkan cout << “\n” ; untuk pindah baris
      }
    }

 
Solusi : Program









Contoh 6 : Buatlah algoritma dan program untuk menghitung jumlah sepeerti berikut dengan n adalah bilangan yang dimasukkan dari keyboard :
1 + 2 + 3 + 4 + ... + (n-2) + (n-1) + n
Solusi : Algoritma
1)      masukkan (n)
2)      jum ← 0
3)      pencacah ← 0
4)      ULANG SELAMA pencacah ≤ n
         jum ← jum + pencacah
         pencacah ← pencacah + 1
     AKHIR-ULANG
5)      tampilkan (jum)

 Program


 
















Contoh 7 : Buatlah algoritma dan program yang meminta n buah bilangan bukat dimasukkan dari keyboard dan kemudian menampilkan nilai rata-rata dari keseluruhan bilangantersebut??
Solusi : Algoritma
1)            masukkan (n)
2)            jum ← 0
3)            pencacah ← 0
4)            ULANG SELAMA pencacah ≤ n
                     masukkan (bil)
                     jum ← jum + bil
                     pencacah ← pencacah + 1
               AKHIR-ULANG
5)            rata_rata ← jum / n
6)            tampilkan (rata_rata)

    Program


# include<iostream.h>
# include<conio.h>
   main ( )
   {
      int n, pencacah ;
     double bil, jum, rata_rata ;
     cout << ”Jumlah data = ”;
     cin >> n ;

     jum = 0 ;
     pencacah = 1;
     while (pencacah < = n)
     {
         cout << “Bilangan” << pencacah << “ = “ ;
         cin >> bil ;
          jum = jum + bil ;
         pencacah = pencacah + 1 ;

 
 












Contoh 8 : Buatlah algoritma dan program yang pertama-tama meminta suatu string  dimasukkan dari keyboard dan kemudian menghitung jumlah karakter yang terdapat pada string tersebut ??
Solusi : Algoritma
1)      masukkan (string)
2)      indeks ← 0
3)      ULANG SELAMA string [indeks] ≠ NULL
           Indeks ← indeks + 1
      AKHIR-ULANG
4)      tampilkan (”Jumlah karakter = ”, indeks)

Program :

# include <iostream.h>
# include <conio.h>
   main ( ) ;
   {
      char string [80] ;
      int indeks ;

      cout << “Masukkan suatu string : “;
      cin >> string ;

      indeks = 0;
      while (string [indeks] != ’\0’ )
      {
           indeks = indeks + 1 ;
       }

       cout << “Jumlah karakter = “ << indeks << “\n” ;
       getche ( ) ;
     }

Outputnya :
Masukkan suatu string : Bengkulu (tekan Enter)
Jumlah karakter = 8
 
 



















Contoh : Buatlah algoritma dan program untuk menampilkan suatu string yang dimasukkan dari keyboard menjadi terbalik ??
Solusi : Algoritma
1)            masukkan (string)
2)            indeks ← panjang (string) – 1
3)            ULANG SELAMA indeks > = 0
              tampilkan (string [indeks])
              indeks = indeks – 1
         AKHIR-ULANG

            Program :


# include <iostream.h>
# include <conio.h>
# include <string.h>   // prototype strlen ( )
   main ( ) ;
   {
      char string [80] ;
      int indeks ;

      cout << “Masukkan suatu string : “;
      cin >> string ;

      indeks = strlen (string) – 1 ;
      while (indeks > = 0 )
      {
           cout << string [indeks] ;
           indeks = indeks – 1 ;
       }

       cout << “\n” ;
       getche ( ) ;
     }

Outputnya :
Masukkan suatu string : Bengkulu (tekan Enter)
ulukbneB
 
 



















LATIHAN
1.            Buatlah algoritma dan program untuk menampilkan bilangan genap kurang dari 20 ?
2.            Buatlah program untuk menampilkan bilangan 1 4 9 16 25 36 49 ??









           


















 
 

0 komentar:

Posting Komentar