2018

Sunday, July 22, 2018

LOOPING (PERULANGAN)


Hello guys,
Pertemuan kali ini aku mau share tentang materi looping sederhana. Looping berarti perulangan, naah perulangan itu ibarat kehidupan kita sehari-hari seperti bangun tidur -> makan -> aktivitas dan sampai tidur lagi.. Dengan adanya looping ini lebih mempermudah kita untuk melakukan sesuatu guys, semisal di sini kita ingin mencetak "HELLO" 100 kali, maka gak mungkin kan kita menulis 100 kali :D Maka dari itu kita gunakan looping..

1. Pola yang Berulang

Sebuah proses yang berulang biasanya memiliki pola yang bisa dikenali. Pola ini muncul dari keteraturan aksi yang terdapat di dalam proses tersebut.
Contoh :
1, 2, 3, 4, 5, ...
Kita dapat melihat pola angka yang muncul yakni angka sebelumnya ditambah 1. Kalau elemen sekarang kita misalkan x, maka elemen selanjutnya adalah x  + 1  yang dinotasi algoritma kan akan seperti berikut
x ← x + 1
Dengan mengamati pola berulang yang muncul di dalam sebuah proses, kita dapat menuliskan pola tersebut sebagai sekumpulan aksi yang dilakukan berulang. Program yang lebih kompleks tidak hanya memuat konstruksi pemilihan, tetapi di dalamnya juga terdapat konstruksi pengulangan.

2. Konstruksi Pengulangan

Struktur pengulangan di dalam program terdiri atas dua bagian penting:
  1. Kondisi pengulangan, yakni ekspresi bernilai boolean yang harus dipenuhi untuk melaksanakan pengulangan. Kondisi / syarat ini ada yang dinyatakan secara eksplisit oleh pemrogram atau dikelola sendiri oleh komputer (implisit).
  2. Badan (body) pengulangan, yakni sekumpulan aksi yang diulang selama kondisi pengulangan terpenuhi.
Di samping itu, struktur pengulangan biasanya disertai dengan bagian:
  1. Inisialisasi, adalah aksi yang dilakukan sebelum pengulangan dilakukan pertama kali.
  2. Terminasi, adalah aksi yang dilakukan setelah pengulangan selesai dilaksanakan.
 Jadi, struktur pengulangan secara umum sebagai berikut :
< inisialisasi >
awal pengulangan
badan pengulangan
akhir pengulangan
< terminasi >
Yang dalam hal ini awal dan akhir pengulangan dinyatakan sebagai kata kunci yang bergantung pada jenis struktur pengulangan yang digunakan. Selain itu, <inisialisasi> dan <terminasi> adalah bagian yang opsional (tidak selalu harus dituliskan).
Di dalam algoritma, terdapat beberapa macam konstruksi pengulangan yang berbeda. Beberapa konstruksi berbeda dapat dipakai untuk persoalan yang sama, namun ada konstruksi pengulangan yang hanya cocok dipakai untuk persoalan tertentu. Pemilihan konstruksi ini dapat mempengaruhi kebenaran algoritma.
Pada banyak persoalan, jumlah pengulangan tidak diketahui dengan pasti. Yang dapat ditentukan hanyalah kondisi berhenti pengulangan, artinya instruksi-instruksi di dalam badan pengulangan diulangi sampai kondisi berhenti terpenuhi. Jenis pengulangan ini termasuk ke dalam pengulangan dengan kondisi (conditional looping).

3. Konstruksi FOR

Konstruksi FOR digunakan untuk melakukan pengulangan sejumlah kali yang telah dispesifikasikan sebelumnya. Jumlah pengulangan diketahui atau dapat ditentukan sebelum eksekusi program.
Bentuk umum konstruksi FOR ini ada 2 macam:
FOR menaik:
for pencacah ← <nilai_awal> to <nilai_akhir> do
aksi
end for
Keterangan :
  • pencacah haruslah peubah dari tipe data yang memiliki predecessor dan successor, dalam hal ini hanya integer atau karakter. Tipe riil tidak dapat digunakan sebagai pencacah.
  • aksi dapat berupa satu atau lebih instruksi.
  • nilai_awal harus lebih kecil atau sama dengan nilai_akhir. Jika nilai_awal lebih besar dari nilai_akhir, maka badan pengulangan tidak dimasuki.
  • pada awal pengulangan, pencacah diinisialisasi dengan nilai_awal. Nilai pencacah secara otomatis bertambah satu setiap kali badan pengulangan tersebut dimasuki, sampai akhirnya nilai pencacah sama dengan nilai_akhir.
  • jumlah pengulangan yang terjadi adalah nilai_akhir - nilai_awal + 1.
FOR menurun:
for pencacah ← <nilai_akhir> downto <nilai_awal> do
aksi
end for
Keterangan:
  • pencacah haruslah peubah dari tipe data yang memiliki predecessor dan successor, dalam hal ini hanya integer atau karakter. Tipe riil tidak dapat digunakan sebagai pencacah.
  • aksi dapat berupa satu atau lebih instruksi.
  • nilai_akhir harus lebih besar atau sama dengan nilai_awal. Jika nilai_akhir lebih kecil dari nilai_awal, maka badan pengulangan tidak dimasuki.
  • pada awal pengulangan, pencacah diinisialisasi dengan nilai_akhir. Nilai pencacah secara otomatis berkurang satu setiap kali badan pengulangan tersebut dimasuki, sampai akhirnya nilai pencacah sama dengan nilai_awal.
  • jumlah pengulangan yang terjadi adalah nilai_awal - nilai_akhir + 1.

4. Konstruksi WHILE

Bentuk umum konstruksi WHILe adalah:
while kondisi do
aksi
end while
Keterangan:
Sebelum memasuki badan pengulangan, kondisi diperiksa dulu apakah masih memenuhi (benar) atau sudah tidak memenuhi (salah). Aksi dikerjakan berulangkali selama kondisi masih benar (true). Jika kondisi salah (false), maka badan pengulangan tidak akan dimasuki, yang berarti pengulangan selesai.
Pengulangan suatu saat harus berhenti. Pengulangan yang tidak pernah berhenti menandakan bahwa ada algoritma yang salah. Pengulangan akan berhenti bila kondisi bernilai false. Agar kondisi berubah menjadi false, maka di dalam badan pengulangan harus ada instruksi yang mengubah nilai kondisi.
Sekilas antara FOR dan WHILE sama saja kegunaannya. Namun, WHILE memiliki keunggulan yang tidak dimiliki oleh FOR. Pada kasus-kasus di mana jumlah pengulangan diketahui di awal program, WHILE dapat digunakan sebaik penggunaan FOR. Namun, untuk proses yang jumlah pengulangannya tidak dapat ditentukan di awal, hanya struktur WHILE yang dapat digunakan, sebab kondisi pengulangan diperiksa di awal pengulangan. Jadi, meskipun kita tidak mengetahui kapan persisnya WHILE ini berhenti, tapi kita menjamin bahwa jika kondisi bernilai salah, maka pengulangan pasti berhenti.

5. Konstruksi REPEAT

Bentuk umum konstruksi REPEAT adalah:
repeat
aksi
until kondisi
Keterangan:
Konstruksi REPEAT mendasarkan pengulangan pada kondisi yang bernilai boolean. Pemeriksaan kondisi dilakukan pada akhir setiap pengulangan. Aksi dikerjakan berulang-ulang sampai kondisi terpenuhi (bernilai true). Dengan kata lain, jika kondisi masih false, proses pengulangan masih terus dilakukan. Karena proses pengulangan suatu saat harus berhenti, maka di dalam badan pengulangan harus ada insruksi yang mengubah nilai peubah kondisi.

Kesimpulan:
1. Gunakan konstruksi WHILE pada kasus yang mengharuskan terlebih dahulu pemeriksaan kondisi objek sebelum objek tersebut   dimanipulasi.
2. Gunakan konstruksi REPEAT pada kasus yang terlebih dahulu memanipulasi objek, baru kemudian memeriksa kondisi objek tersebut.

Nah, setelah mengetahui materi tersebut maka kita bisa membuat notasi algoritma nya. Berikut adalah beberapa contoh perulangan dan juga pemrograman nya dalam bahasa C. Berikut notasi nya ↓
1.   1 2 3 4 5 6 7 8 9
//Judul looping bilangan asli
//Kamus
a ← integer
//Deskripsi
a ← 1
while (a < 10) do
{
output (a)
a ← a + 1
}
tanzz

2.  9 8 7 6 5 4 3 2 1
//Judul looping mundur
//Kamus
b ← integer
//Deskripsi
b ← 9
while ( b  ≽  1) do
 {
    output(b)
     b ← b - 1
   }
tanzz

3.  2 4 6 8 10 12 14
          //Judul looping bilangan genap
         //Kamus
          c ← integer
        //Deskripsi
         c ← 2
       while (c ≼ 14) do
       {
        output (c)
        c ← c + 2
       }
tanzz

4. 5 + 7 + 9 + 11 + 13 + 15 + 17 = ?
         //Judul looping penjumlahan bilangan ganjil
       //Kamus
         d ← integer
        jumlah ← integer
      //Deskripsi
        d ← 5
       jumlah ← 0
      while (d ≼ 17) do
      {
        jumlah  ←  jumlah + d
         if ( d < 17) then
         {
         output (d +)
         }
     else
       {
      output  (= d)
        }
    d  ← d + 2
    } output(jumlah)
tanzz

5. 19 17 15 13 11 9 7 5 3
     //Judul looping ganjil mundur
     //Kamus
        e  ← integer
     //Deskripsi
        e  ← 19
        while ( e ≽ 3 ) do
             {
              output (e)
              e  ← e - 2
            }
tanzz

 Silahkan dicoba ya, kalo ada kritik saran maupun pertanyaan bisa dikomen di kolom komentar 😁
Thank You !! Semoga bermanfaat 🙂

Sunday, June 10, 2018

MENGANALISIS KASUS PART 2 DAN PENGAPLIKASIAN DALAM PEMBUATAN NOTASI STATUS BILANGAN 4 VERSI


Hello guys!
Nah ini merupakan lanjutan dari materi ku sebelumnya, yang belum tahu bisa di klik MENGANALISIS KASUS DAN PENGAPLIKASIAN DALAM PEMBUATAN KALKULATOR SEDERHANA. 


Dari judulnya, kalian pasti berpikir "Apa sih status bilangan itu?" "Loh, bilangan punya status juga to?" Hihihi :D
Jadi, status bilangan yang aku maksud di sini itu buat nentuin apakah bilangan itu berstatus ganjil positif, atau ganjil negatif. Begitu juga dengan genap positif atau genap negatif.
Sebelum membuat notasi, kita harus tau lebih dulu cara nya biar bisa muncul itu ganjil positif atau negatif dst, yaitu dengan melihat angka nya. Jadi syarat bilangan genap sudah pasti bahwa bilangan tersebut habis dibagi 2, kalo tidak berarti bilangan tersebut ganjil. Lalu, syarat bilangan tersebut agar positif yakni bilangan itu lebih dari 0, jika kurang sudah pasti negatif.
Setelah mengetahui syarat tersebut, kita bisa membuat notasi nya. Bila ada kata-kata berupa "syarat", maka kita gunakan kondisi yaitu "if - else" dan juga bisa dengan "depend on". Berikut notasi nya ↓
//Judul
              notasi status bilangan nested if-else
//Kamus
    angka<- integer
//Deskripsi
    input (angka)
if    (angka < 0)    then
       {
    if    (angka mod 2 = 0)    then
         {
        output “negatif genap”
        }
    else
        {
        output “negatif ganjil”
        }
     }
    else if    (angka > 0)    then
            {
            if    (angka mod 2 = 0)    then
                {
                output “positif genap”
                }
            else
                  {
                output “positif ganjil”
                  }
           }
else
    {
            output “error”
    }

tanzztanzz

//Judul
              notasi status bilangan nested depend on
//Kamus
    a<- integer
   b <- integer
//Deskripsi
input (a)
depend on (a)
        {
        a <- (a < 0)    :
                {
                  output “negatif”
                 input (b)
                  depend on (b)
                    b <- 0;
                        {
                        output “negatif genap”
                        }
 }
a <- (a > 0)    :
        {
  output “positif”
  input (b)
  depend on (b)
    b <- 0;
        {
          output “positif genap”
}
}
a <- (a < 0)    :
                {
  output “negatif”
  input (b)
  depend on (b)
    b <- (b != 0);
            {
              output “negatif ganjil”
    }
        }
a <- (a > 0)    :
        {
  output “positif”
  input (b)
 depend on (b)
    b <- (b != 0);
            {
output “positif ganjil”
     }
  }
}

//Judul
              notasi status bilangan if-else dan depend on
//Kamus
    a<- integer
   b <- integer
//Deskripsi
input (a)
if    (a < 0)    then
        depend on (b)
            {
            b <- (b != 0)    :
                        {
 output “negatif ganjil”
}
            b <- (b = 0)    :
                        {
             output “negatif genap”
  }
     }
    else   if     (a > 0)    then
            depend on (b)
                {
                b <- (b != 0)    :
                            {
                             output “positif ganjil”
}
                b <- (b = 0)    :
                            {
                             output “positif genap”
}
 }
        else
            {
            output “0”
      }

//Judul
              notasi status bilangan depend on - if-else
//Kamus
    a<- integer
   b <- integer
//Deskripsi
input (a)
depend on (a)
{
a <- (a < 0)    :
        {
         output “negatif”
         if    (a mod 2 = 0)    then
         output “negatif genap”
         else
         output “negatif ganjil”
}
a <- (a > 0):
        {
         output “positif”
         if    (a mod 2 = 0)    then
         output “positif genap”
         else
         output “positif ganjil”
}
otherwise:
            {
             output “0”
     }
}
Untuk status bilangan ini ternyata bisa menggunakan berbagai versi, Silahkan dicoba guys.
Cek juga post-post ku yang lain ya ^^
Untuk kritik saran dan pertanyaan bisa dikomen di kolom komentar bawah ini 😁
Thank You !! Semoga bermanfaat 🙂

MENGANALISIS KASUS DAN PENGAPLIKASIAN DALAM PEMBUATAN KALKULATOR SEDERHANA


Hello guys,
Kali ini aku mau share tentang materi Analisis Kasus, serta penerapannya yakni dengan membuat notasi dan program Kalkulator Sederhana dalam Bahasa C

Sesuai namanya, menganalisis kasus artinya mengidentifikasi kasus-kasus apa saja yang terdapat di dalam persoalan, kondisi (syarat) yang harus dipenuhi pada setiap kasus, dan aksi yang dilakukan jika kondisi tersebut dipenuhi. Adanya analisis kasus menyebabkan terjadinya pemilihan pencabangan instruksi di dalam algoritma, bergantung pada kasus mana yang dipenuhi.
Kondisi adalah suatu ekspresi boolean yang bernilai true atau false dan menentukan aksi yang dilakukan jika kondisi tersebut berlaku (memenuhi).

Dalam menganalisis kasus, semua kasus harus dijabarkan dengan lengkap. Bergantung pada persoalannya, ada persoalan yang terdiri dari satu kasus, dua kasus, tiga kasus, atau lebih.
1. SATU KASUS
Notasi algoritma untuk analisis dengan satu kasus adalah dengan menggunakan konstruksi IF-THEN (jika - maka) yakni :
if kondisi then
      aksi
end if
Instruksi tersebut berarti bahwa aksi hanya dilaksanakan bila kondisi benar (true). Bila kondisi salah (false), maka tidak ada aksi apapun yang dikerjakan. Kata end if sengaja aku tambahin biar mempertegas awal dan akhir struktur if-then itu sendiri.

2. DUA KASUS
Konstruksi if-then hanya menyediakan satu alternatif aksi jika suatu persyaratan (kondisi) dipenuhi. Kadang-kadang kita perlu memilih melakukan aksi alternatif jika kondisi tidak memenuhi. Jadi, ada dua kasus di sini, tetapi hanya salah satu dari keduanya yang harus dipilih untuk dikerjakan. Notasi algoritma untuk masalah dengan dua buah kasus adalah dengan menggunakan konstruksi IF-THEN-ELSE (jika - maka - kalu tidak) :
if kondisi then
     aksi1
else
    aksi2
end if
Instruksi tersebut berarti bahwa aksi1 dikerjakan jika kondisi benar, sebaliknya jika kondisi salah, maka aksi2 yang akan dilaksanakan. Else menyatakan alternatif dari kondisi.

3. TIGA KASUS ATAU LEBIH
Masalah yang mempunyai tiga buah kasus atau lebih dapat dianalisis dengan konstruksi IF-THEN-ELSE bertingkat-tingkat:
if kondisi1 then
     aksi1
else
     if kondisi2 then
          aksi2
     else
          if kondisi3 then
              aksi3
         end if
   end if
end if

4. KONSTRUKSI CASE
 Untuk masalah dengan dua kasus atau lebih, konstruksi case dapat menyederhanakan penulisan IF-THEN-ELSE yang bertingkat-tingkat sebagaimana pada contoh-contoh sebelum ini. Konstruksi CASE sebagai berikut:
case (ekspresi) :
nilai1 : aksi1
nilai2 : aksi2
nilai3 : aksi3
.
.
.
nilain : aksin
otherwise : aksix
end case
ekspresi adalah sebuah aritmetika atau boolean yang menghasilkan suatu nilai (konstanta). Konstruksi case memeriksa apakah nilai dari evaluasi ekspresi tersebut sama dengan salah satu dari nilai1, nilai2, .., nilain.
Catatan : semua nilai-nilai ini harus berbeda
Jika nilai ekspresi sama dengan nilaik, maka aksik dilaksanakan. Aksi yang bersesuaian dengan nilaik dapat lebih dari satu, karena itu ia berupa runtunan. Jika tidak ada satu pun nilai ekspresi yang cocok, maka aksix setelah otherwise dikerjakan. Otherwise bersifat optional, artinya ia boleh ditulis atau tidak di dalam konstruksi case. Dalam penulisan algoritma juga biasanya ditulis dengan depend on - default. Konstruksi ini sering digunakan dalam memilih menu program. Program menawarkan sejumlah menu. Pengguna cukup mengetikkan nomor menu yang diinginkan. Setiap kali nomor menu dipilih, maka prosedur yang berasosiasi dengan nomor menu tersebut dieksekusi.

Nah, sama dengan yang akan kubahas kali ini yakni membuat notasi algoritma kalkulator sederhana. Kali ini aku akan membuat dalam 2 versi, dengan if-else dan juga case (depend on).
So lets check it out guys ↓
//Judul
    Notasi algoritma kalkulator sederhana menggunakan if else
///Kamus
    x                 ← real
    y                 ← real
  jawaban    ← real
  pilihan      ← char

///Deskripsi
pilihan       ← (1 = (+), 2 = (-), 3 = (*), 4 = (/))
    input (pilihan)
 if ((pilihan = 1) or (pilihan = 2) or (pilihan = 3) or (pilihan = 4)) then
{
input (x, y)
}
else{}
    if     (pilihan = 1)    then
        {
                      jawaban<- x + y
                     output (hasil penjumlahan)
                     output(x)
                     output(+)
                     output(y)
                     output(=)
                     output(jawaban)
        }
    else if    (pilihan = 2)    then
            {
                    jawaban ← x - y
                    output (hasil pengurangan)
                     output(x)
                     output(-)
                     output(y)
                     output(=)
                     output(jawaban)
            }
          else if    (pilihan = 3)    then
                   {
                       jawaban ← x * y
                      output (hasil perkalian)
                     output(x)
                     output(*)
                     output(y)
                     output(=)
                     output(jawaban)
                 }
                  else if    (pilihan = 4)    then
                          {
                         jawaban ← x / y
                        output (hasil pembagian)
                       output(x)
                      output(/)
                      output(y)
                     output(=)
                     output(jawaban)
                           }
                       else
                        {
                           output(“pilihan tidak ada”)
                         }
tanzz

tanzz
//Judul
    Notasi algoritma kalkulator sederhana menggunakan depend on
///Kamus
    x                 ← real
    y                 ← real
  jawaban    ← real
  pilihan      ← char

///Deskripsi
pilihan       ← (1 = (+), 2 = (-), 3 = (*), 4 = (/))
 input (pilihan)
depend on (pilihan)
{
pilihan = '1' :
                      {
                       output(penjumlahan)
input (x)
                      input(y)
                      jawaban<- x + y
                     output (hasil penjumlahan)
                     output(x)
                     output(+)
                     output(y)
                     output(=)
                     output(jawaban)
}
pilihan = '2' :
                      {
                       output(pengurangan)
input (x)
                      input(y)
                      jawaban <- x - y
                     output (hasil peengurangan)
                     output(x)
                     output(-)
                     output(y)
                     output(=)
                     output(jawaban)
}
pilihan = '3' :
                      {
                       output(perkalian)
input (x)
                      input(y)
                      jawaban <- x * y
                     output (hasil perkalian)
                     output(x)
                     output(*)
                     output(y)
                     output(=)
                     output (jawaban)
}
pilihan = '4' :
 {
output(pembagian)
input (x)
                      input(y)
                      jawaban <- x *  y
                     output (hasil pembagian)
                     output(x)
                     output(/)
                     output(y)
                     output(=)
                     output(jawaban)
}
other :
                      {
output("pilihan anda tidak ada")
}
}

tanzz
tanzz


tanzz

Ternyata hasilnya sama saja, Silahkan dicoba guys.
Cek juga post-post ku yang lain ya ^^ next post aku mau share status bilangan dengan menggunakan 4 versi dan masih di bab yang sama.
Untuk kritik saran dan pertanyaan bisa dikomen di kolom komentar bawah ini 😁
Thank You !! Semoga bermanfaat 🙂

Friday, June 8, 2018

NAMA DAN TIPE DATA DASAR DALAM PEMROGRAMAN


Hello guys,
kali ini aku mau share tentang berbagai tipe data yang bisa diprogram. Data ini dapat dioperasikan dengan operator yang sesuai dengan tipe nya. Operator menspesifikasikan operasi apa saja yang dapat dilakukan terhadap peubah dan konstanta. Ekspresi mengkombinasikan data untuk menghasilkan nilai baru.
1. NAMA
Di dalam algoritma dan pemrograman, penamaan adalah konsep yang penting. Suatu objek diberi nama agar ia mudah diidentifikasi, dan dibedakan dari objek lainnya. Setiap nama tidak boleh ada 2 buah nama yang sama di dalam lingkup yang sama.
Beberapa aturan penamaan:
  • Nama harus dimulai dengan huruf alphabet, tidak boleh dimulai dengan angka, spaasi, atau karakter khusus lainnya.
  • Huruf besar/huruf kecil tidak dibedakan. Jadi, suatu nama yang ditulis dalam huruf besar atau huruf kecil dianggap sama.
  • Karakter penyusun nama hanya boleh huruf alphabet, angka, dan karakter garis bawah (underscore) dihitung sebagai sebuah huruf karena karakter ini bisa dibilang memudahkan untuk membaca algoritma.
  • Nama tidak boleh mengandung operator matematika, operator relasional, tanda baca, dan karakter khusus lainnya.
  • Karakter-karakter di dalam nama tidak boleh dipisah dengan spasi. Hal ini mengingat bahwa nama adalah kesatuan leksikal, maka setiap nama harus ditulis secara utuh. Spasi dapat diganti dengan karakter "_" (underscore).
  • Panjang nama tidak dibatasi.
2. TIPE DATA DASAR
Dalam dunia pemrograman, yang termasuk ke dalam tipe dasar adalah: bilangan bulat, bilangan riil, bilangan logika, karakter, dan string.
Bilangan Logika
Nama tipe bilangan logika adalah boolean. Bilangan logika hanya mengenal 2 nilai: benar (true) atau salah (false). Istilah "bilangan" pada "bilangan logika" dikarenakan kita dapat menyatakan benar dengan angka 1 dan "salah" dengan angka 0 (atau sebaliknya, bergantung konvensi yang kita buat).
Bilangan Bulat
Bilangan bulat sudah umum digunakan dalam kehidupan sehari-hari. Bilangan bulat adalah bilangan yang tidak mengandung pecahan desimal, misalnya 34, 8, -12, 0, 392838, dst. Dan cara menuliskannya di bagian deklarasi adalah
Deklarasi
a ← integer
Rentang nilainya pun tidak terbatas, dari minus tidak berhingga sampai plus tidak berhingga.
Operasi
Operasi yang dilakukan terhadap bilangan bulat ada 2 macam, yaitu operasi aritmetika dan operasi perbandingan. Operator yang digunakan pada masing-masing operasi dinamakan operator aritmetika dan operator perbandingan (atau operator relasional).
a. Operasi Aritmetika
Operator aritmetika yang didefinisikan pada bilangan bulat adalah:
+ (tambah)
-  (kurang)
* (kali)
div (bagi)
mod (sisa hasil bagi)
Contoh:
3 + 10 (hasil = 13)
90 - 20 (hasil = 70)
5 * 3 (hasil = 15)
10 div 3 (hasil = 3)
10 mod 3 (hasil = 1)
20 div 5 (hasil = 4)
20 mod 5 (hasil = 0)
b. Operasi perbandingan
Operasi perbandingan terhadap bilangan bulat dengan salah satu operator relasional menghasilkan nilai boolean (true atau false) .
Operator perbandingan untuk bilangan bulat adalah:
<   (lebih kecil)
≤   (lebih kecil / sama)
>   (lebih besar)
≥   (lebih besar / sama)
=   (sama dengan)
≠   (tidak sama dengan)
Bilangan Riil

Bilangan riil adalah bilangan yang mengandung pecahan desimal, misalnya 3.65, 0.0002, 29.0 dan lain-lain. Semua konstanta bilangan riil harus mengandung titik. Nama tipe bilangan ini adalah real (dalam pemrograman yakni float). Dan cara menuliskannya dibagian deklarasi:
Deklarasi
b ← real
Rentang nilai juga tidak terbatas, dari minus tidak hingga sampai plus tidak hingga.
Operasi
Operasi yang dilakukan terhadap bilangan riil ada 2 macam, yaitu operasi aritmetika dan operasi perbandingan. Operator yang digunakan pada masing-masing operasi dinamakan operator aritmetika dan operator perbandingan.
a. Operasi Aritmetika
Operator aritmetika yang didefinisikan pada bilangan riil adalah:
+ (tambah)
-  (kurang)
* (kali)
       /  (bagi)
Contoh:
3.2 + 10.3  (hasil = 13.5)
90.0 - 20.0 (hasil = 70.0)
5.1 * 3.0 (hasil = 15.3)
       10.0 / 2.5 (hasil = 4.0)
        10.0 / 3.0 (hasil = 3.333...)
b. Operasi perbandingan
Operasi perbandingan terhadap bilangan riil dengan salah satu operator relasional menghasilkan nilai boolean (true atau false) .
Operator perbandingan untuk bilangan bulat adalah:
<   (lebih kecil)
≤   (lebih kecil / sama)
>   (lebih besar)
≥   (lebih besar / sama)
≠   (tidak sama dengan)
Karakter
 
Yang termasuk dalam karakter adalah semua huruf abjad, semua tanda baca, angka-angka, dan karakter-karakter khusus seperti '&', '^','%' dan sebagainya. Daftar karakter baku yang lengkap dapat dilihat di dalam tabel ASCII.  Nama tipe untuk karakter adalah char. Cara menuliskan di bagian deklarasi adalah:
Deklarasi
c ← char
Konstanta karakter harus diapit oleh tanda petik tunggal, misalnya : 'Y'    '&'     '9'     'p'
Hati-hati menuliskan bahwa '9' adalah karakter, tapi 9 adalah integer.
Operasi
Operasi yang dilakukan terhadap karakter yaitu operasi perbandingan. Operator yang berlaku untuk tipe karakter adalah:
<   (lebih kecil)
≤   (lebih kecil / sama)
>   (lebih besar)
≥   (lebih besar / sama)
=   (sama dengan)
≠   (tidak sama dengan)
String
String adalah untaian karakter dengan panjang tertentu. String sebenarnya bukan tipe dasar murni karena ia disusun dari elemen-elemen bertipe karakter. Namun, karena tipe string sering dipakai dalam pemrograman, maka string dapat diperlakukan sebagai tipe dasar. Cara mendeklarasikan :
Deklarasi
d ← string

Operasi
Operasi terhadap data bertipe string didefinisikan 2 macam:
a. Operasi penyambungan
Operator: +
Operator "+" yang dimaksudkan di sini berarti penyambungan. Bila a dan b adalah peubah bertipe string, maka a + b = ab.
Contoh:
'aaa' + ' bbb' + 'cc' = 'aaa bbbcc'
b. Operasi perbandingan
Operator :
<   (lebih kecil)
≤   (lebih kecil / sama)
>   (lebih besar)
≥   (lebih besar / sama)
≠   (tidak sama dengan)
Setelah mengetahui materi di atas, maka kita bisa memulai untuk membuat notasi dan source code dasar. Kali ini aku bahas 2 persoalan, yaitu : penjumlahan 3 bilangan dan menghitung luas bujursangkar
So, lets check it out  ↓
1.  Membuat Notasi Penjumlahan 3 Bilangan (3 4 7)
//Judul
Penjumlahan 3 bilangan
//Kamus
bil1   ← integer
bil2   ← integer
bil3   ← integer
jumlah ← integer
//Deskripsi
input ( bil1, bil2, bil3 )
jumlah ← bil1 + bil2 + bil3
output (jumlah)

Hasil sebagai berikut

Tanzz



2. Membuat notasi luas bujur sangkar

//Judul
Mencari luas bujur sangkar
//Kamus
sisi    ← integer
luas   ← integer
//Deskripsi
input (sisi)
luas ← sisi * sisi
output (luas)

Hasil sebagai berikut
 
Tanzz

 Silahkan dicoba ya, kalo ada kritik saran maupun pertanyaan bisa dikomen di kolom komentar 😁
Thank You !! Semoga bermanfaat 🙂

Saturday, May 26, 2018

PENGENALAN DASAR PEMROGRAMAN


Di awal post ini aku mau share tentang pemahaman awal mengenai algoritma dan pemrograman. Dimulai dari pembahasan tentang persoalan (problem), yang selanjutnya akan dijelaskan tentang program dan pemrograman, dan ditutup dengan penjelasan tentang notasi yang akan digunakan dalam menuliskan algoritma.


1. PERSOALAN (PROBLEM)

 

Kehidupan manusia itu penuh dengan berbagai persoalan/problem yang melingkupinya. Kehidupan itu sendiri pada dasarnya adalah menyelesaikan aneka persoalan tersebut.  Dan persoalan adalah ibarat pertanyaan yang harus dicari jawabannya.

Agar lebih memahami makna "persoalan", kita ambil contoh :

"Diketahui sebidang tanah berbentuk persegi panjang dengan panjang dan lebar tertetntu ( dalam satuan meter). Hiutnglah luas tanah tersebut!"

Jawaban (yang diharapkan) dari persoalan ini adalah luas tanah tersebut dalam satuan meter persegi.

  2. SEJARAH ALGORITMA

Ditinjau dari asal usul kata, kata "algoritma" sendiri mempunyai sejarah yang cukup unik, lho! Kata ini tidak muncul di dalam kamus Webster sampai akhir taun 1957, malah kata yang ditemukan adalah algorism, yang artinya "proses menghitung dengan angka Arab" [KNU73].

Para ahli bahasa berusaha menemukan asal kata algorism ini namun hasilnya kurang memuaskan, sampai akhirnya para ahli sejarah matematika menemukan asal mula kata tersebut. Kata algorism berasal dari nama penulis buku Arab yang terkenal, yakni Abu Ja'far Muhammad Ibnu Musa al-Khuwarizmi (Al-Khuwarizmi dibaca orang Barat menjadi algorism).

Al-Khuwarizmi

 Al-Khuwarizmi menulis buku yang berjudul Kitab al jabar wal muqabala, yang artinya "Buku pemugaran dan pengurangan (The book of restoration and reduction). Dari judul buku ini kita juga memperoleh kata "aljabar"(algebra).

 

The oldest Arabic word on algebra produced in the 9th century

Perubahan dari kata algorism menjadi algorithm muncul karena kata algorism sering dikelirukan dengan arithmetic, sehingga akhiran -sm berubah menjadi -thm. Karena perhitungan dengan angka Arab sudah biasa / lumrah, maka lambat laun kata algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna aslinya [PAR95]. Dalam bahasa Indonesia, kata algorithm diserap menjadi algoritma.

Sehingga algoritma adalah deskripsi dapat terdiri dari suatu polah tingkah laku, dinyatakan dalam primitif, yaitu aksi-aksi yang didefinisikan sebelumnya dan diberi nama, dan diasumsikan sebelumnya bahwa aksi-aksi tersebut dapat dikerjakan sehingga dapat menyebabkan kejadian yang dapat diamati. Aksi primitif harus dapat dikerjakan. "Pergi ke lapangan!" adalah aksi yang dapat dikerjakan, sedangkan "Pergi ke neraka!" bukan algoritma, karena tidak dapat dikerjakan.

Urut-urutan langkah harus dapat dimengerti dengan baik, oleh pembuat algoritma maupun oleh yang akan mengerjakan.

Contoh paling simpel yang kita jumpai dalam kehidupan sehari-hari, yakni memasak nasi goreng. Pasti yang ada dipikiran kita pertama kali yaitu "Apa saja alat dan bahan yang dibutuhkan?" "Berapa takaran yang diperlukan?" "Bagaimana langkah membuatnya?" "Apa yang harus kita lakukan bila nasi goreng belum matang?" dan lain-lain.

 3. KARAKTERISTIK ALGORITMA

Pada dasarnya, sebuah algoritma menerima beberapa masukan (input), memprosesnya dalam urutan langkah-langkah tadi, dan menghasilkan luaran (output).

Ketika algoritma "dijalankan" (oleh manusia / oleh komputer), maka langkah-langkah tersebut dijelaskan dari awal sampai akhirnya berhenti dan kita memperoleh solusi persoalan. Jika algoritmanya benar, maka hasil (solusinya) pasti benar, sebaliknnya jika algoritma salah maka hasilnya juga salah. 

Sebuah algoritma harus benar, lalu algoritma harus berhenti, dan setelah berhenti algoritma memberikan hasil yang benar

 4. PROGRAM DAN PEMROGRAMAN



Manusia pun dapat melaksanakan suatu algoritma, karena manusia dapat membaca dan mengerti instruksi di dalam algoritma, lalu mengerjakan instruksi tersebut. Namun karena kita bahas pemrograman dengan menggunakan komputer, maka kita memfokuskan pemroses algoritma adalah komputer.

Agar komputer mengerti instruksi yang dibacanya, maka instruksi tersebut tentu harus ditulis dalam bahasa khusus yang disebut bahasa  komputer. Algoritma yang ditulis dalam bahasa komputer dinamakan program. Bahasa komputer yang digunakan untuk menulis program dinamakan bahasa pemrograman (programming language). Orang yang menulis program komputer dinamakan pemrogram (programmer). Dan kegiatan  mulai dari mendesain hingga menulis program dinamakan pemrograman (programming). Teks program dalam bahasa pemrograman sering dinamakan kode program (source code), sehingga menulis kode program sering dinamakan coding.

BELAJAR PEMROGRAMAN ≠ BELAJAR BAHASA PEMROGRAMAN

Belajar pemrograman berarti mempelajari metodologi pemecahan masalah, kemudian menuliskan algoritma pemecahan masalah dalam notasi tertentu.

Belajar bahasa pemrograman berarti belajar memakai suatu bahasa komputer, aturan tata bahasanya, instruksi-instruksi nya, tata cara pengoperasian compiler nya, dan memanfaatkan instruksi-instruksi tersebut untuk membuat program yang ditulis hanya dalam bahasa itu saja.

Belajar pemrograman dan bahasa pemrograman mempunyai tingkatan dan kesulitan yang berbeda-beda. Belajar memprogram lebih bersifat keterampilan daripada analisis dan sintesa. Pengajaran pemrograman titik beratnya adalah membentuk seorang perancang "designer" program, sedangkan pengajaran bahasa pemrograman titik beratnya adalah membentuk seorang "coder" (juru kode). 

 5. PARADIGMA PEMROGRAMAN

Paradigma adalah sudut pandang / "sudut serang" tertentu yang diprioritaskan, terhadap kelompok problema, realitas, keadaan, dan sebagainya.

Dalam pemrograman pun ada beberapa paradigma, masing-masing mempunyai prioritas strategi analisis yang khusus untuk memecahkan persoalan, masing-masing menggiring kita ke suatu pendekatan khusus dari problematika keseluruhan.

Beberapa paradigma pemrograman: 

      1. Paradigma Prosedural / imperatif

      Kata kunci yang sering didengungkan dalam pendekatan ini adalah:

Algoritma + Struktur Data = Program 

      Paradigma ini sangat tidak "manusiawi" dan tidak "alamiah", karena harus berpikir dalam batasan mesin (komputer), bahkan kadang-kadang batasan ini lebih mengikat daripada batasan problematikanya sendiri. Tapi keuntungan dari paradigma ini adalah efisiensi eksekusi, karena dekat dengan mesin.

     2. Paradigma Fungsional

     Paradigma ini didasari oleh konsep pemetaan dan fungsi pada matematika. Dasar pemecahan persoalan adalah transformasional. Paradigma ini tidak lagi mempermasalahkan memorisasi dan struktur data, tidak ada pemilahan antara data dan program, tidak ada lagi pengertian tentang "variabel". Berlainan dengan paradigma prosedural, program fungsional harus diolah lebih dari program prosedural (oleh pemroses bahasanya), karena itu salah satu keberatan adalah kinerja dan efisiensinya.

     3. Paradigma Deklaratif, predikatif atau lojik

     Didasari oleh pendefinisian relasi antar individu yang dinyatakan sebagai predikat. Pemrograman menguraikan sekumpulan fakta dan aturan-aturan. Ketika program dieksekusi, pemakai mengajukan pertanyaan (query), dan program akan menjawab apakah pernyataan itu dapat dideduksi dari aturan dan fakta yang ada. Program akan memakai aturan deduksi dan mencocokkan pertanyaan dengan fakta-fakta yang ada untuk menjawab pertanyaan.

     4. Paradigma Berorientasi Objek (Object Oriented)

      Didasari oleh objek. Sebuah objek memiliki atribut (kumpulan sifat), dan mempunyai kelakuan (kumpulan reaksi, metoda). Paradigma ini menawarkan konsep class, generic, inheritance,  polymorphism, dan menekankan pentingnya pendefinisian statik kelas untuk melahirkan objek pada saat runtime, yang kemudian dimanipulasi atau saling berinteraksi.

6. BAHASA PEMROGRAMAN

  

Sampai sekarang ada puluhan bahasa pemrograman,contoh:
 1. Prosedural : Algol, Pascal, Fortran, Basic, Cobol, C ...
 2. Fungsional : LOGO, APL, LISP
 3. Deklaratif/Lojik : Prolog
 4. Object oriented murni : Smalltalk, Eifel, Jaca, C++ ...
 5. Konkuren : OCCAM, Ada, Java
 6. Relasional : SQL pada basisdata relasional 

Berdasarkan tujuan aplikasinya, bahasa pemrograman dapat digolongkan menjadi 2 kelompok :
  • Bahasa pemrograman bertujuan khusus (specific purpose programming language).
    Yang termasuk kelompok ini adalah Cobol (untuk terapan bisnis dan administrasi), Fortran (aplikasi komputasi ilmiah), bahasa assembly (aplikasi pemrograman mesin), Prolog (aplikasi kecerdasan buatan), bahasa-bahasa simulasi, dan lain-lain.
  • Bahasa pemrograman bertujuan umum (general purpose programming language).
    Dapat digunakan untuk berbagai aplikasi. Yang termasuk kelompok ini adalah bahasa Pascal, Basic,  C, C++, C#, Java, dan lain-lain.
     

     

 7. STRUKTUR TEKS ALGORITMA

Sebuah algoritma adalah sebuah teks yang dibaca secara beruntun (sekuensial) dari atas ke bawah. Dan sebuah teks algoritma selalu disusun oleh 3 bagian, yaitu:
     1. Bagian judul
          Judul adalah bagian teks algoritma tempat mendefinisikan apakah teks tersebut adalah
          program, prosedur, fungsi, modul, atau sebuah skema program.
     2. Bagian Kamus (deklarasi)
          Kamus adalah bagian teks algoritma tempat mendefinisikan:
          - Nama type
          - Nama konstanta
          - Nama informasi (variabel)
          - Nama fungsi, sekaligus spesifikasinya
          - Nama prosedur, sekaligus spesifikasinya
          Dan syarat suatu nama yakni:
          *   Bisa dimaknai
          *   Tidak boleh menggunakan kata khusus
          *   Tidak boleh memakai spasi
          *   Tidak boleh diawali dengan angka
          *   Tidak boleh menggunakan kata kunci
     3. Bagian Deskripsi (algoritma)
         Algoritma adalah bagian teks algoritmik yang berisi instruksi / pemanggilan aksi yang telah didefinisikan.
           Dapat berupa:
          - Instruksi dasar seperti input/output, assignment
          - Sequential statement
          - Analisis kasus
          - Pengulangan
 8. TIGA KONSTRUKSI DASAR
Sebuah algoritma dapat dibangun dari tiga buah konstruksi / struktur dasar, yaitu struktur runtunan (sequence), struktur pemilihan (selection), dan struktur pengulangan (repetition).
Struktur Runtunan
Sebuah runtunan terdiri dari satu / lebih instruksi. Di dalam sebuah runtunan, setiap instruksi dikerjakan secara berurutan (sekuensial) sesuai dengan urutannya di dalam algoritma. Secara sekuensial, artinya suatu instruksi dikerjakan setelah instruksi sebelumnya dikerjakan.
Seperti hal nya dalam membuat nasi goreng sosis, maka urutannya yaitu seperti ambil wajan, taruh wajan di atas kompor dan selanjutnya.
Struktur pemilihan
Adakala nya sebuah aksi dikerjakan jika memenuhi persyaratan (kondisi) tertentu. Dalam pembuatan nasi goreng sosis, maka contoh saja jika nasi goreng sudah matang, lalu tuang di atas piring.
Bentuk instruksi ini dinamakan struktur pemilihan (selection) atau pencabangan, yang dimana penulisannya yaitu
if kondisi then
      aksi
Struktur pengulangan
Pengulangan ini merupakan sesuatu yang dilakukan lebih dari 1 kali. Sebagai contoh, dalam pembuatan nasi goreng sosis bahwa selama nasi goreng belum manis, kemudian kita tambahkan kecap lagi. Sehingga bisa ditulis
While kondisi do
               aksi
Nah setelah mengetahui materi di atas, maka kita bisa membuat notasi algoritma Nasi Goreng Sosis. Berikut adalah notasi nya ↓

//Judul
               Membuat Nasi Goreng Sosis
//Kamus
  • Nasi
  • Bawang putih
  • Bawang merah
  • Sosis
  • Cabe
  • Kecap
  • Garam
  • Cobek
  • Spatula
  • Sendok
  • Garpu
  • Kompor
  • Pisau
  • Talenan
//Deskripsi :
  • Ambil nasi dari rice cooker 1 piring
  • Ambil wajan dari rak
  • Taruh wajan di atas kompor
  • Ambil pisau, dan talenan dari rak
  • Masukkan bawang merah, bawang putih ke cobek
  • Ulek dan haluskan
  • While belum halus do
                  haluskan lagi
  • Ambil sosis dari kulkas
  • Potong sosis menjadi kecil-kecil
  • Nyalakan kompor
  • Ambil spatula dari rak
  • Tumis bawang merah dan bawang putih sampai harum
  • Depend on kesukaan
Suka pedas: masukkan cabe
Tidak suka pedas: -
  • Masukkan nasi ke wajan
  • Masukkan sosis ke wajan
  • While nasi goreng kurang manis do
                      tambahkan kecap lagi
  • While nasi goreng kurang asin do
         tambahkan garam hingga rasa pas
  • Aduk nasi beserta bumbu yang sudah ada di wajan
  • While nasi goreng belum matang do
                       Aduk lagi nasi goreng nya
  • If sudah matang then
         Hidangkan di piring
  • Matikan kompor
  • Nasi goreng siap disantap
Jadi deh nasi goreng nya. Silahkan dicoba ya, bila ada kritik saran maupun pertanyaan bisa dikomen di kolom komentar 😁
Thank You !! Semoga bermanfaat 🙂