Minggu, 30 Januari 2011

Dasar-Dasar Pemrograman


Ciri penting algoritma :
• Algoritma harus berhenti setelah mengerjakan
sejumlah langkah terbatas.
• Setiap langkah harus didefinisikan dengan
tepat dan tidak berarti-dua (Ambiguitas).
• Algoritma memiliki nol atau lebih masukkan.
• Algoritma memiliki nol atau lebih keluaran.
• algoritma harus efektif (setiap langkah harus
sederhana sehingga dapat dikerjakan dalam
waktu yang masuk akal).
Memprogram dan bahasa pemrograman:
Belajar memprogram adalah belajar tentang metodologi pemecahan masalah, kemudian menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami.
• Belajar bahasa pemrograman adalah belajar memakai suatu bahasa, aturan tata bahasanya, instruksi-instruksinya, tata cara pengoperasian compiler-nya untuk membuat program yang ditulis dalam bahasa itu saja.
Notasi Algoritma
• Penulisan algoritma tidak tergantung dari spesifikasi bahasa pemrograman dan komputer yang mengeksekusinya. Notasi algoritma bukan notasi bahasa pemrograman tetapi dapat diterjemahkan ke dalam berbagai bahasa pemrograman
Notasi algoritma
• Notasi algoritma dapat berupa :
– Uraian kalimat deskriptif (narasi)
Contoh
Algoritma Kelulusan_mhs
Diberikan nama dan nilai mahasiswa, jika nilai tersebut lebih besar atau sama dengan 60 maka mahasiswa tersebut dinyatakan lulus jika nilai lebih kecil dari 60 maka dinyatakan tidak lulus.
DESKRIPSI :
baca nama dan nilai mahasiswa. jika nilai >= 60 maka  keterangan = lulus tetapi jika keterangan = tidak lulus. tulis nama dan keterangan
Bagan alir (flow chart). Bagan alir (flow chart).
Keterangan = ' Lulus' Mulai  baca
Nama, nilai
Nilai >= 60
Keterangan = ' Tidak Lulus'
Selesai
Tulis
Nama, keterangan
ya
tidak
Pseudo-code.
Algoritma Kelulusan_mhs
{diberikan nama dan nilai mahasiswa, jika nilai tersebut lebih besar atau sama dengan 60 maka mahasiswa tersebut dinyatakan lulus jika tidak maka dinyatakan tidak lulus}
DEKLARASI :
Nama : string
Nilai : integer
Keterangan : string
DESKRIPSI :
read (nama, nilai)
if nilai >= 60 then
keterangan = ‘lulus’
else
keterangan = ‘tidak lulus’
write(nama, keterangan)
Aturan Penulisan Teks algoritma Aturan Penulisan Teks algoritma
• Judul algoritma
Bagian yang terdiri atas nama algoritma dan penjelasan (spesifikasi) tentang algoritma tersebut. Nama sebaiknya singkat dan menggambarkan apa yang dilakukan oleh algoritma tersebut.
• Deklarasi
Bagian untuk mendefinisikan semua nama yang digunakan di dalam program. Nama tersebut dapat berupa nama tetapan, peubah, tipe, prosedur dan fungsi.
• Deskripsi
Bagian ini berisi uraian langkah-langkah penyelesaian masalah yang ditulis dengan menggunakan notasi yang akan dijelaskan selanjutnya
Algoritma Luas_Kell_Lingkaran {<- ini judul algoritma}
{menghitung luas dan keliling lingkaran untuk ukuran jari-jari tertentu. Algoritma menerima masukan jari-jari lingkaran, menghitung luas dan kelilingnya, dan mencetak luas lingkaranke piranti keluaran <- ini spesifikasi algoritma}
DEKLARASI :
const phi = 3.14 {nilai ? }
R : real {jari-jari lingkaran}
Luas : real {luas lingkaran}
Keliling : real {keliling lingkaran}
DESKRIPSI :
read (R)
Luas <- phi * R *R
Keliling <- 2 * phi * R
write(luas, keliling)

Tipe data dalam Java:
n      Primitive types: tipe boolean, char, numerik
n      Reference types: class (termasuk String, Integer), array.
n      Apa perbedaan antara primitive and reference type?
 








n      Apakah operator?

n      Berdasarkan jumlah dari operands:
n      Unary
n      Binary

n      Berdasarkan operasi yang dilakukannya:
n      Arithmatic
n      Logical
n      Apakah itu expression?

n      Apakah output dari potongan program berikut?
int ii = 1;
int jj = 2;
double a = (ii + 1) / (jj + 1);
double b = (double) (ii + 1) / (jj + 1);
double c = (ii + 1) / (double) (jj + 1);
double d = (ii + 1.0) / (jj + 1.0);
System.out.println (a + " " + b);
System.out.println (c + " " + d);
Perlu diingat:
n      Tipe data dari sebuah ekspresi bergantung pada operator dan tipe data dari operands.
n      Urutan evaluasi sebuah ekspresi bergantung pada tingkat precedence operator. Jika dua buah operators memiliki tingkat precedence yang sama, lihat pada associativity operatornya:
       LR: Left to Right
       RL: Right to Left
n      Branch (cabang)
n      Digunakan untuk memilih perintah mana yang akan dijalankan berdasarkan kondisi tertentu.

n      Loop (pengulangan)
n      Suatu kelompok program dijalankan secara berulang. Kondisi berhenti menyatakan berapa kali pengulangan dijalankan.
if (condition)                                           
{
    statement; if (condition)
{
    statement1
}
else
{
    statement2
}
next statement

}
next statement
n      Kesalahan umum:
if (x == 0);
    System.out.println (“x is zero”);

if (x > 0)‏
    System.out.println (“x = “);
    System.out.println (x);
testExpr ? yesExpr : noExpr
n      Berguna untuk menyederhanakan perintah if-then-else sederhana
n      Contoh:
if (x > 100){
    y = x * 0.9;
} else {
    y = x;
}
n      Setara dengan:
y = (x > 100) ? (x * 0.9) : x;
while (condition){
      statement;
  }
  /* Post condition: ~condition */

n      Selama nilai ekspresi condition true, maka statement akan dijalankan, kemudian ekspresi condition akan dievaluasi lagi.
n      Saat nilai expression condition false, pengulangan berhenti. Perintah statement tidak lagi dijalankan.
n      Ingat: condition dievaluasi lebih dulu!
do {
      statement;
      ...
  } while (condition);
  /* Post condition: ~condition */
n      statement dijalankan lebih dulu, kemudian condition dievaluasi.
n      Jika kondisi true Þ statement dijalankan lagi.
n      Jika kondisi false Þ loop berhenti.
n      Minimal statement dijalankan sekali.
for (initialization; condition; update) {
      statement;
  }

n      setara dengan perintah while berikut:
 initialization;
 while (condition) {
    statement;
    update;
 }
n      for digunakan bila kita sudah tahu berapa banyak pengulangan yang akan dilakukan.
Class
·        Class memiliki:
n      Detail implementasi (blue print) dari sebuah object yang akan dibuat Þ bayangkan sebuah object factory.
n      Class juga menyimpan static methods dan static variables dari object yang akan dibuat.
n      Class menyatakan detail implementasi object
n      Seluruh method dan fields
n      code untuk method yang akan menentukan perilaku dari object.
n      Berdasarkan definisi class Þ object dibuat
Field
n      Menyimpan status dari object atau class
n      Terdapat dua jenis field:
n      Instance variable
       Tiap object punya nilai variable masing-masing Þ object variable
n      Static variable
       Satu class hanya punya satu nilai variable, walaupun class tersebut memiliki beberapa object Þ class variable
Array
n      Deklarasi Array (array adalah object juga)
int [] array1;
n      ingat: mendeklarasikan sebuah reference variable tidak berarti mengalokasikan memory dan membuat object.
n      Membuat array
array1 = new int[100];
int[] array2 = { 2, 3, 7, 5 };
n      Untuk mengakses element dalam array, gunakan index
array1[0] = 20;
n      Karena array adalah object juga, operator = tidak mengcopy(clone) array.
int[] lhs = new int[100];
int[] rhs = new int[100];
...
lhs = rhs;
Exceptions
n      Exception menyatakan bahwa sebuah “kejadian aneh” telah terjadi.
n      Sebuah object Exception menyimpan informasi tentang keanehan tersebut.
n      throw Þ “menandakan” keanehan
n      catch Þ tindakan “mengatasi” keanehan
n      Error vs. Exception
n      Error Þ kesalahan fatal, mis: out of memory
n      Exception Þ masih bisa “dibetulkan”, mis: EOFException, ArrayIndexOutOfBoundException.
Overloading
n      Memakai nama sama untuk method berbeda
n      Method-method ini dibedakan berdasarkan signature-nya:
n      Jumlah parameter
n      Tipe parameter
n      Urutan parameter
n      Perhatikan bahwa signature tidak tergantung
n      Nama parameter
n      Return type
n      Overloading ditangani pada saat kompilasi (static binding)
Overriding
n      Sebuah method yang memiliki nama dan signature yang sama dengan method dari superclass.
n      Method dari subclass dikatakan meng-override method dari superclass.
n      Ditangani pada saat runtime (dynamic binding): instance type menentukan method mana yang digunakan.
Polymorphism
n      Dalam mendefinisikan method untuk sebuah subclass, ada  tiga kemungkinan:
n      override a method from the superclass: Nama dan signature sama dengan method milik superclass.
n      inherit method from the superclass: Methods yang tidak ditulis ulang otomatis akan diturunkan kepada seluruh subclass.
n      create a new method: Nama dan signature berbeda dengan method milik superclass
Interface
n      Sebuah class hanya boleh meng-extend satu superclass, tapi boleh meng-implement banyak interface.
n      Ketika meng-extend superclass, sebuah class mewarisi interface (definisi method) dan juga implementasinya.
n      Ketika meng-implement interface, sebuah class hanya mewarisi interface (definisi method).
n      Contoh: sifat generik “comparable” didefinisikan di dalam sebuah interface:
public interface Comparable {
    public int compareTo (Object ob);
}
n      compareTo mengembalikan:
       <0: object this “lebih kecil” dari parameter ‘ob’
       0: object this sama nilainya dengan parameter ‘ob’
       >0: object this “lebih besar” dari parameter ‘ob’
Contoh: interface
public class CircleComparable extends Circle
    implements Comparable
{
    public CircleComparable (double r)
    {super (r);}
    public int compareTo (Object other)
    {
        CircleComparable otherCircle =
           (CircleComparable) other;
        if (radius < otherCircle.getRadius ())
        {return -1;}
        else if (radius > otherCircle.getRadius ())
        {return 1;}
        else
        {return 0;}
    }
}

Tidak ada komentar:

Posting Komentar