Minggu, 24 April 2011

Percabangan C++

Dalam pemrograman C++ dikenal 2(dua) buah jenis struktur yang digunakan untuk mengimplementasikan suatu percabangan, yaitu dengan menggunakan struktur if dan struktur switch.
statement-statement yang terdapat dalam sebuah blok percabangan akan dieksekusi hanya jika kondisi yang didefinisikan terpenuhi (bernilai benar “true”), artinya jika kondisi tidak terpenuhi (nilai salah “false”), maka statement-statement tersebut juga tidak ikut dieksekusi atau dengan kata lain akan diabaikan oleh compiler.
I. Pemilihan Menggunakan Keyword If
1. Struktur satu Kondisi
Struktur ini merupakan struktur yang paling sederhana karena hanya melibatkan satu buah ekspresi yang akan diperiksa. bentuk umum dari struktur percabangan yang memiliki satu kondisi adalah sebagai berikut:
// Jika terdapat lebih dari statement
if (kondisi) {
statement1;
statement2;

}
// jika hanya terdapat satu statement, dapat ditulis seperti di bawah:
if (kondisi) statement;
2. Struktur Dua Kondisi
Struktur percabangan jenis ini sedikit lebih kompleks bila dibandingkan dengan struktur yang hanya memiliki satu buah kondisi. sebenarnya konsepnya sangat sederhana, yaitu pada struktur jenis ini terdapat sebuah statemen khusus yang berguna untuk mengatasi kejadian apabila kondisi yang didefinisikan tersebut tidak terpenuhi (bernilai salah “false”). adapun bentuk umum dari struktur percabangan jenis ini adalah sebagai berikut:
if (kondisi) {
statement_jika_kondisi_terpenuhi;
} else {
statement_jika_kondisi_tidak_terpenuhi;
}
3. Struktur Tiga Kondisi
Percabangan jenis ini merupakan perluasan dari struktur yang memiliki dua kondisi di atas, yaitu dengan menambahkan satu atau lebih kondisi ke dalamnya. bentuk umum dari percabangan ini adalah sebagai berikut:
if(kondisi1) {
statement jika_kondisi1 terpenuhi;
} else if (kondisi2) {
statement jika_kondisi2 terpenuhi;
} else if (kondisi3) {
statement jika_kondisi3 terpenuhi;

else {
statement jika_semua kondisi diatas tidak terpenuhi;
}
II. Pemilihan Menggunakan Keyword Switch
Selain menggunakan struktur if, C++ juga dapat melakukan dengan menggunakan keyword switch ini adalah sebagai berikut:
switch(ekspresi) {
case nilai_konstant1: statement_statement; break;
case nilai_konstant2: statement_statement; break;

case nilai_konstantN: statement_statement; break;
default
statement_statement_alternatif;
}
Type data dari ekspresi di atas haruslah bilangan bulat atau karakter. selain dari type tersebut, C++ tidak mengizinkan. sedangkan statement default berguna untuk mengeksekusi statement alternatif. yaitu jika nilai yang kita masukkan ternyata tidak sesuai dengan nilai-nilai konstant yang telah didefinisikan.

SEKUEN

Sekuen adalah sederetan pernyataan-pernyataan yang urutan dan pelaksanaan eksekusinya runtut, yang lebih dahulu ditemukan (dibaca) akan dikerjakan (dieksekusi) lebih dulu dan Bila urutan pernyataan dibalik, akan mempunyai makna yang berbeda.
Contoh Kasus : Setiap bilangan bulat selalu bisa ditulis dalam
bentuk : m = q.n + r
n dengan n < m, q adalah kuosen dan r adalah residu (sisa).
n Buatlah algoritma untuk merepresentasikan m dan dalam bentuk m = q.n + r. Sebagai
contoh : n integer m = 73 dan n = 7 dapat ditulis
sebagai 73 = 10x7 + 3, yaitu r = 3.

Analisis
Ingat ! Bila perlu buatlah contoh bilangan tertentu sehingga kita memperoleh gambaran bagaimana cara kerja (proses) yang akan dilakukan algoritma.
n Input : n dan m (n < m), n Proses : Kuosen q menggunakan / (asal kedua operan integer), sedangkan r dapat diperoleh dengan menggunakan operator %.
n Output : q dan r (disusun seperti yang diminta)

Algoritmanya : 

Algoritma Aljabar
{membaca masukan nilai n dan m dengan n<m kemudian menuliskan outputnya berbentuk m = q.n + r}
Deklarasi :
m, n : integer {input}
q, r : integer {output}
Deskripsi
read (m, n) (n < m)
q ß m div n {mendapatkan nilai q}
r ß m mod n {mendapatkan nilai r}
write (q, r)

Bahasa C ++ nya : 
class Aljabar {
friend ostream& operator<<(ostream&, const Aljabar&);
friend istream& operator>>(istream&, Aljabar&);
public:
Aljabar();
void hitung(){
q = m / n; // mendapatkan nilai q
r = m % n; // mendapatkan nilai r
}
private:
int m,n; // input

Array Dua Dimensi

Array 2 Dimensi
Contoh deklarasi :
int a[4][5];


0
1
2
3

0
25
40
26
12

1
6
8
12
5

2
1
3
8
9

3
15
22
13
19

4
0
5
7
15







Mengakses data :

a[0][0] = 25
a[0][1] = 40
.
.
dst

Penggunaan array 2D untuk menjumlahkan dua matrik

Matrik asal adalah a dan b, dijumlahkan dan hasilnya disimpan di matrik c. Syarat agar matrik dapat dijumlahkan adalah keduanya mempunyai ukuran yang sama.
Baris matrik 1 = Baris matrik 2
Kolom matrik 1 = Kolom matrik 2

Contoh 6:
#include <iostream.h>
#include <conio.h>

void masukan(int a[10][10],int b,int k)
{ for(int i=0;i<b;i++)
    for(int j=0;j<k;j++)
    {cout<<"Data ke "<<i<<j<<" = ";cin>>a[i][j]; }
}

void jumlah(int a1[][10],int a2[][10],int a3[][10],int b1,int k1)
{  for(int i=0;i<b1;i++)
    for(int j=0;j<k1;j++)
      a3[i][j]=a1[i][j]+a2[i][j];
}

void tampilkan(int a[10][10],int b,int k)
{ for(int i=0;i<b;i++)
   { for(int j=0;j<k;j++)
        cout<<a[i][j]<<"  ";
     cout<<"\n";
    }
}

main() {
 int dt1[10][10],dt2[10][10],dt3[10][10];
 int b1,k1;
 cout<<"Jumlah baris matrik  = ";cin>>b1;
 cout<<"Jumlah kolom matrik  = ";cin>>k1;
 cout<<"\nMatrik pertama\n";
 masukan(dt1,b1,k1);
 cout<<"\nMatrik kedua\n";
 masukan(dt2,b1,k1);
 jumlah(dt1,dt2,dt3,b1,k1);
 clrscr();
 cout<<"\nMatrik pertama\n";
 tampilkan(dt1,b1,k1);
 cout<<"\nMatrik kedua\n";
 tampilkan(dt2,b1,k1);
 cout<<"\nMatrik hasil penjumlahan\n";
 tampilkan(dt3,b1,k1);
 getch();
}

Perhatikan pada saat array 2D menjadi parameter fungsi, jumlah baris boleh ditulis boleh tidak, tetapi jumlah kolom harus ditulis.
Tipe array dapat dikembangkan menjadi array multidimensi. Misal 3D, 4D, dan sebagainya.

Array Satu Dimensi

ARRAY
Digunakan untuk menyimpan sekelompok data yang tipenya sama.

Deklarasi Array 1 Dimensi
tipe nama_var[max_data];

Contoh:
int a[5];
float x[100];
char nama[25];
.
dst.

Cara mengakses data bertipe array
nama_variabel[alamat]

Misal : Array a

27
23
35
46
87
à data yang tersimpan di array
0
1
2
3
4
à alamat array (dimulai dari 0)

a[0] = 27
a[1] = 23
.
.
a[4] = 87

Menginputkan data ke array
Data dapat diinputkan untuk setiap emelen array. Tetapi jika jumlah elemen array banayk, tentunya cara ini tidak efisien. Oleh karena itu dapat digunakan bantuan instruksi perulangan untuk input datanya.

Contoh 1:
#include <iostream.h>
#include <conio.h>

main() {
  int a[5];
  cout<<"Data ke 0 = ";cin>>a[0];
  cout<<"Data ke 1 = ";cin>>a[1];
  cout<<"Data ke 2 = ";cin>>a[2];
  cout<<"Data ke 3 = ";cin>>a[3];
  cout<<"Data ke 4 = ";cin>>a[4];
  int jumlah;
  jumlah=a[0]+a[1]+a[2]+a[3]+a[4];
  cout<<"\n\nJumlahnya = "<<jumlah;
  getch();
}
Contoh 2:
#include <iostream.h>
#include <conio.h>

main() {
  int a[5];
  int jumlah=0;
  for(int i=0;i<5;i++)
  { cout<<"Data ke "<<i<<" = ";cin>>a[i];
    jumlah+=a[i];
  }
  cout<<"\n\nJumlahnya = "<<jumlah;
  getch();
}

Tipe array juga dapat digabungkan dengan pointer. Untuk itu kita akan melakukan perubahan pada contoh 3 menjadi sebagai berikut:

Contoh 3:
#include <iostream.h>
#include <conio.h>

main() {
  int *a=new int[5];
  int jumlah=0;
  for(int i=0;i<5;i++)
  { cout<<"Data ke "<<i<<" = ";cin>>a[i];
    jumlah+=a[i];
  }
  cout<<"\n\nJumlahnya = "<<jumlah;
  getch();
}
Perhatikan contoh 3 diatas pada pengaksesan datanya. Jika array dideklarasikan sebagai pointer, maka untuk pengaksesan datanya cukup dituliskan sebagai array. Tetapi kita tetap bisa menuliskannya sebagai pointer tanpa harus menyertakan alamat arraynya. Jika demikian maka data akan diambilkan dari data pertama, atau data pada alamat ke 0.
Sehingga misalkan pada akhir program contoh 3 diatas kita tambahkan instruksi :
cout<<"\nData = "<<*a;
atau instuksi :
cout<<"\nData = "<<a[0];
akan mempunyai arti yang sama, data akan diambil dari data pertama (alamat 0).

Selain itu untuk input data dan proses penjumlahan, dapat juga dibuat dalam bentuk fungsi seperti pada contoh 4. Perhatikan pada saat tipe array menjadi parameter fungsi, jumlah data yang tersimpan dalam array boleh ditulis boleh tidak (optional). Sehingga bisa ditulis dengan : b[] saja

Senin, 18 April 2011

Perulangan dan String dalam Java

 Perulangan dalam java
Perulangan atau dikenal dengan nama looping, adalah dimana suatu perintah yang digunakan untuk menghasilkan output yang dicetak berulang-ulang. Ada 3 cara yang digunakan untuk melakukan looping, yaitu : for, while, & do while. Pada pembahasan kali ini saya akan membahas perulangan yang meggunakan for. Untuk lebih jelasnya, silahkan perhatikan source kode berikut ini (saya menggunakan compiler jeliot) ;
01import jeliot.io.*;
02
03public class MyClass {
04    public static void main(String[]args) {
05
06    System.out.println("proses looping");
07    for (int b=0;b<=10;b++){
08    System.out.print("nilai : ");
09    System.out.println(b);
10
11    }
12
13    }
14}

Nah.. adapun algoritmanya adalah sebagai berikut:
  1. Kondisikan semuanya dengan baik (baik itu syntax, tipe data, maupun deklarasi variabelnya)
  2. Pada bagian line ke-7, disitu terdapat sintak perulangannya yang menggunakan for.
  3. Disitu tertulis for (int b=0;b<=10;b++). Maksudnya adalah untuk int b=0 (itu menjelaskan kalau nilai b itu sama dengan0), b<=0(nilai b kurang dari 10 atau sma dengan 10), b++(nilai b akan bertambah terus sampai perulangan yang ke 10).
  4. Setelah itu, tinggal di print outkan hasilnya, dengan cara memanggil variabel yang dimaksud tadi.
 String dalam java
String merupakan rangkaian atau deretan karakter. Di dalam tipe memori, string ini diartikan sebagai data yang berisi satu atau sekumpulan karakter. Anda bisa lihat contoh penggunaan string di source kode berikut:

01import jeliot.io.*;
02
03public class Mystring {
04public static void main(String[]argv) {
05String s1;
06String s2;
07String s3;
08s1="Hello ";
09s2="Word..!!";
10s3=s1+s2;
11System.out.println(s1);
12System.out.println(s2);
13System.out.print(s3);
14
15}
16}
Adapun konsep algoritmanya adalah sebagai berikut:
  1. Tuliskan tipe data yang kita pakai(tipe datanya dalah string) & deklarasikan variabel yang akan kita gunakan (variable yang saya gunakan adalah, s1,s2,s3).
  2. Kemudian, pada variabel isikan pernyataan/nilai yang akan di hasilkan.
  3. Setelah itu, bila anda ingin memanggil pernyataan/nilai yang anda isi tadi, anda tinggal memanggil variabel yang anda deklarasikan tadi.

Bahasa Pemrograman Java

Java adalah bahasa pemrograman berorientasi objek yang dikembangkan oleh Sun Microsystems sejak tahun 1991. Bahasa ini dikembangkan dengan model yang mirip dengan bahasa C++ dan Smalltalk, namun dirancang agar lebih mudah dipakai dan ­platform independent, yaitu dapat dijalankan di berbagai jenis sistem operasi dan arsitektur komputer­­. Bahasa ini juga dirancang untuk pemrograman di Internet sehingga dirancang agar aman dan portabel. 

Dalam pemrogramaman Java memiliki delapan tipe data diantaranya : (byte, short, int, long) tipe  ini digunakan sebagai tipe data bilangan bulat, (float, double) tipe ini digunakan sebagai tipe data bilangan real,(char) digunakan untuk tipe data yang mewakili sebuah karakter, dan (Boolean) digunakan untuk tipe data yang menyatakan keadaan logika : true atau false.
Bahasa Pemrograman Java juga memiliki Literal yang merupakan suatu nilai yang dituliskan pada kode sumber Java, misalnya :
public class Literal {
    public static void main(String[] args) {
        System.out.println(27);
        System.out.println(0x27); //Literal Bilangan
        System.out.println('s'); // Literal Karakter
        System.out.println('6');
        System.out.println('#');
        System.out.println(false);//Literal Boolean
        System.out.println(true);
    }
}

Dalam Pemrograman Java juga menggunakan variable yang menyatakan suatu lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu nilai dan nilai yang ada di dalamnya bias diubah. Variable yang digunakan harus dideklerasikan, yakni :
tipe namaVariable [, namaVariable]
Contoh :
Variable
Keterangan
int number;
Variable number bertipe int
float bilangan
Variable bilangan bertipe float
char nama
Variable nama bertipe char
Boolean result
Variable result bertipe boolean
Tipe variable juga dapat berupa nama kelas, misalnya :
String Kalimat;
Pendeklerasian dua buah variable bias dilakukan seperti berikut :
            int bil1, bil2;
pada contoh di atas, baik bil1 dan bil2 bertipe int.

Urutan langkah-langkah yang harus Anda lakukan untuk membuat sebuah program Java sederhana adalah:
  1. Membuat source code program dengan editor teks apapun. Ingat, file tersebut harus berekstensi .java dan case sensitive.
  2. Mengkompile source code dengan perintah javac. Misalnya: javac HelloWorld.java. Jika berhasil, hasilnya adalah file bytecode berakhiran .class.
  3. Mengeksekusi bytecode dengan perintah java. Parameter dari perintah ini adalah nama file hasil kompilasi tanpa ekstensi .class. Contoh: java HelloWorld.

Perbedaan Algoritma Iteratif dan Rekursif

Algoritma iteratif
- Teknik Iteratif merupakan suatu teknik pembuatan algoritma dengan pemanggilan procedure    beberapa kali atau hingga suatu kondisi tertentu terpenuhi.
- Tidak ada variabel lokal baru
- Program tidak sederhana
- Menggunakan perulangan for dan while
Kelebihan perulangan iteratif:
• Mudah dipahami dan mudah melakukan debugging ketika ada perulangan yang salah.
• Dapat melakukan nested loop atau yang disebut dengan looping bersarang.
• Proses lebih singkat karena perulangan terjadi pada kondisi yang telah disesuaikan.
• Jarang terjadi overflow karena batasan dan syarat perulangan yang jelas.

Kelemahan perulangan iteratif:
• Tidak dapat menggunakan batasan berupa fungsi.
• Perulangan dengan batasan yang luas akan menyulitkan dalam pembuatan program perulangan itu sendiri.

program 1
Bentuk fungsi iteratif :
#include <cstdlib>
#include <iostream>
using namespace std;
int jumlah(int n) {
int hasil = 0;
for (int i=0; i<n; i=i+2)
hasil = hasil + i;
return hasil;
}
void cetak(int n) {
for (int i=0; i<n; i=i+2)
cout << i << ” “;
}
int main(int argc, char *argv[])
{
int n = 10;
cout << jumlah(n);
cetak(n);
system(“PAUSE”);
return EXIT_SUCCESS;
}

Algoritma rekursif
- Teknik Rekursif merupakan salah satu cara pembuatan algoritma dengan pemanggilan procedure atau function yang sama
- Ada variabel lokal baru
- Program menjadi lebih sederhana
- Menggunakan perulangan if else
Kelebihan perulangan rekursif:
• Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar.
• Dapat melakukan perulangan dengan batasan fungsi.

Kekurangan perulangan rekursif:
• Tidak bisa melakukan nested loop atau looping bersarang.
• Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja.
• Trace error sulit.
• Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalanya akan menyebabkan stack tak cukup lagi (Stack Overrun).
• Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk.

jika pada program 1, diubah kedalam bentuk rekursif :
Dalam bentuk rekursif :
#include <cstdlib>
#include <iostream>
using namespace std;
int jumlah(int n) {
if(n==0) return (0);
else return (n-2 + jumlah(n-2));
}
void cetak(int n) {
if(n!=0){
cetak(n-2);
cout << n-2 << ” “;
}
}
int main(int argc, char *argv[])
{
int n = 10;
cout << jumlah(n);
cetak(n);
system(“PAUSE”);
return EXIT_SUCCESS;
}

Kamis, 14 April 2011

Algoritma dan Flowchart Menampilkan Deret Fibonancci

Algoritma :
  1. Deklarasikan variable fibo dengan tipe array of int, variabel i untuk iterasi, dan n untuk jumlah bilangan Fibonacci yang ingin ditampilkan.
  2. Masukkan jumlah bilangan fibonacci yang ingin ditampilkan dan nyatakan ke dalam variable n.
  3. Tetapkan nilai pada variable fibo pada indeks ke 0 dengan 0.
  4. Tetapkan nilai pada variable fibo pada indeks ke 1 dengan 1.
  5. Cetak nilai pada variable fibo pada indeks ke-0 dan ke-1.
  6. Isi nilai i dengan 2.
  7. Selama i masih kurang dari n, lakukan langkah 8 s/d 10.
  8. Tambahkan nilai pada variabel fibo di indeks ke-(i-1) dengan nilai pada variabel fibo di indeks ke-(i-2) kemudian nyatakan ke variabel fibo pada indeks ke-i.
  9. Cetak nilai dari variabel fibo pada indeks ke-i.
  10. Tambahkan nilai i dengan 1.
  11. Tanya apakah user masih ingin menampilkan deret fibonacci.
  12. Bila jawabannya iya, maka kembali ke langkah ke-2.
  13. Bila jawabannya tidak, maka program dapat langsung diakhiri.
  14. Namun jika bukan keduanya, tanyalah kembali (kembali ke langkah 11).
Flowchart :

1.jpg

Algoritma Mencari Rata-rata

Algoritma mencari rata-rata dari bilangan bulat positif, dimana banyak data ditentukan dari data yang dimasukkan.

Deklarasi :

        n, jumlah, x : integer
        real : real
Deskripsi :

        jumlah  ← 0
        read(x)
        n ←1
        while (x > 0) do
                  jumlah ← jumlah + x
                  read(x)
                  n ← n + 1
        endfor
        rata ← jumlah / (n-1)
        write(rata)

Penjelasan :
Terlihat rumus yang digunakan agak berbeda, yaitu pembagiannya (n-1). Hal ini disebabkan pada saat nilai terakhir dimasukkan, nilai ini masih digunakan untuk validasi masukkan (apakah masih ada masukkan berikutnya atau tidak) sehingga banyaknya data selalu "kelebihan" 1. Untuk itu, pembagi dalam rumus rata-rata "haruslah" dikurangi dengan 1.