Kamis, 22 Maret 2012

SDLC (System Development Life Cycle)

SDLC (System Development Life Cycle) Siklus Hidup Pengembangan Sistem yaitu Proses yang direkayasa secara logik untuk mengembangkan sistem dari tahap perencanaan sampai penerapan.
Tahapan pengembangan system:
• Tahap konservasi yaitu menyelidiki konsep sistem baru dan menentukan dengan tepat apa yang dibutuhkan oleh para pemakai sebelum merancang sistem secara terinci.
• Melakukan Dokumentasi Laporan yang dibuat ditujukan untuk para pemakai system.
• Proses dari pengembangan sistem yang terutama :
* Analisis sistem
* Desain sistem
* Implementasi sistem
+ Proses kebijakan
+ Perencanaan sistem dalam tahapan pengembangan sistem (proses ini merupakan tahapan sebelum dilakukan pengembangan system)
PERENCANAAN SISTEM.

Perencanaan sistem menyangkut estimasi dari kebutuhan-kebutuhan fisik, tenaga kerja dan dana yang dibutuhkan untuk mendukung pengembangan sistem ini serta untuk mendukung operasinya setelah diterapkan.

Perencanaan sistem dapat terdiri :
1. Perencanaan jangka pendek meliputi periode 1 s.d. 2 tahun
2. Perencanaan jangka panjang meliputi periode sampai dengan 5 tahun

Perencanaan sistem biasanya ditanggani oleh staf perencanaan sistem bila tidak ada dapat juga dilakukan oleh departemen sistem.

Proses Perencanaan Sistem dapat dikelompokkan dalam 3 proses utama yaitu sbb :
1. Merencanakan proyek-proyek sistem yang dilakukan oleh staf perencana sistem
2. Menentukan proyek-proyek sistem yang akan dikembangkan dan dilakukan oleh komite pengarah.
3. Mendefinisikan proyek-proyek sistem dikembangkan dan dilakukan oleh analis sistem.

Adapun tahapan dari proses perencanaan sistem untuk ketiga bagian ini adalah :
1. Merencanakan proyek-proyek sistem
-Mengkaji tujuan,perencanaan strategi dan taktik perusahaan
- Mengidentifikasikan proyek-proyek sistem
- Menetapkan sasaran proyek-proyek sistem
- Menetapkan kendala proyak-proyek sistem
- Menentukan proyek-proyek sistem prioritas
- Membuat laporan perencanaan sistem
- meminta persetujuan manajemen

2. Mempersiapkan proyek-proyek sistem yang akan dikembangkan
- Menunjuk team analis
- Mengumumkan proyek pengembangan sistem

3. Mendefinisikan proyek-proyek dikembangkan
- Melakukan studi kelayakan
- Menilai kelayakan proyek sistem
- Membuat usulan proyek sistem
- Meminta persetujuan manajemen.

ANALISIS SISTEM
Analisis Sistem dapat didefinisikan sebagai :
Penguraian dari suatu sistem informasi yang utuh ke dalam bagian-bagian komponennya dengan maksud untuk mengidentifikasikan dan mengevaluasi permasalahan-permasalahan, kesempatan-kesempatan, hambatan-hambatan yang terjadi dan kebutuhan-kebutuhan yang diharapkan sehingga dapat diusulkan perbaikan-perbaikan.

Tahap analisis merupakan tahap yang kritis dan sangat penting, karena kesalahan di dalam tahap ini akan menyebabkan juga kesalahan di tahap selanjutnya.

Langkah-langkah di Analisis Sistem :
Langkah-langkah di dalam tahap analisis sistem hampir sama dengan langkah-langkah yang dilakukan dalam mendefinisikan proyek-proyeksistem yang akan dikembangkan di tahap perencanaan sistem. Perbedaannya pada analisis sistem ruang lingkup tugasnya lebih terinci.
Didalam tahap analisis sistem terdapat langkah-langkah dasar yang harus dilakukan oleh Analis Sistem Yaitu sbb:
1. Identify, Yaitu mengidentifikasikan masalah
- Mengindentifikasikan penyebab masalah
- Mengidentifikasikan titik keputusan
- Mengidentifikasikan personil-personil kunci
2. Understand, Yaitu memahami kerja dari sistem yang ada
- Menentukan jenis penelitian
- Merencanakan jadual penelitian
- Mengatur jadwal wawancara
- Mengatur jadwal observasi
- Mengatur jadwal pengambilan sampel
- Membuat penugasan penelitian
- Membuat agenda wawancara
- Mengumpulkan hasil penelitian
3. Analyze, Yaitu Menganalis Sistem
- Menganalisis kelemahan Sistem
- Menganalisis kebutuhan Informasi pemakai / manajemen
4. Report, Yaitu membuat laporan hasil analisis
Tujuan :
- Pelaporan bahwa analisis telah selesai dilakukan
- Meluruskan kesalah-pengertian mengenai apa yang telah ditemukan dan dianalisis oleh analis sistem tetapi tidak sesuai menurut manajemen
- Meminta pendapat-pendapat dan saran-saran dari pihak manajemen
- Meminta persetujuan kepada pihak manajemen untuk melakukan tindakan selanjutnya .PERANCANGAN SISTEM

Setelah tahap analisis sistem selesai dilakukan, maka analis sistem telah mendapatkan gambaran dengan jelas apa yang harus dikerjakan. Tiba waktunya sekarang bagi analis sistem untuk memikirkan bagaimana membentuk sistem tersebut. Tahap ini disebut dengan perancangan sistem .

Perancangan Sistem dapat dibagi dalam dua bagian yaitu :
1. Perancangan sistem sec.umum/perancangan konseptual, perancangan logikal/perancangan sec.makro
2. Perancangan sistem terinci / perancangan sistem secara phisik.

Perancangan sistem dapat diartikan sebagai berikut ini :
1. Tahap setelah analisis dari siklus pengembangan sistem
2. Pendefinisian dari kebutuhan-kebutuhan fungsional
3. Persiapan untuk rancang bangun implementasi
4. Menggambarkan bagaimana suatu sistem dibentuk
5. Yang dapat berupa penggambaran, perencanaan dan pembuatan sketsa atau pengaturan dari beberapa    elemen yang terpisah ke dalam satu kesalahan yang utuh dan berfungsi
6. Termasuk menyangkut mengkonfigurasikan dari komponen-komponen perangkat lunak dan perangkat keras dari suatu sistem

Tahap perancangan sistem mempunyai 2 tujuan utama yaitu :
1. Untuk memenuhi kebutuhan kepada pemakai sistem
2. Untuk memberikan gambaran yang jelas dan rancang bangun yang lengkap kepada pemrogram komputer dan ahli-ahli teknik lainnya yang terlibat.

Kamis, 19 Januari 2012

Link List (penambahan(depan & belakang), hapus, dan sisip elemen)

#include <cstdlib>
#include <iostream>

using namespace std;
class linklist{
public:
linklist();
void tambah(int);
void tambahdepan(int);
void tambahbelakang(int);
void tampil();
void hapus(int);
void sisip(int,int);
private:
int data;
linklist *berikut,*p;

};

linklist::linklist(){
p=NULL;
}

void linklist::tambah(int info){
linklist *q,*t;

if(p==NULL){
p=new linklist;
p->data=info;
p->berikut=NULL;
}else{
q=p;
while(q->berikut != NULL)
q=q->berikut;

t=new linklist;
t->data=info;
t->berikut=NULL;
q->berikut=t;
}
}

void linklist::tambahdepan(int nilai){
linklist *q;

q = new linklist;
q->data = nilai;
q->berikut = p;
p = q;
}

void linklist::tambahbelakang(int nilai){
linklist *q,*t;

if( p == NULL )
{
p = new linklist;
p->data = nilai;
p->berikut = NULL;
}
else
{
q = p;
while( q->berikut != NULL )
q = q->berikut;

t = new linklist;
t->data = nilai;
t->berikut = NULL;
q->berikut = t;
}
}

void linklist::tampil(){
linklist *i;
for(i=p;i!=NULL;i=i->berikut){
cout<data<<" "<<"-> ";
}cout<<" NULL\n"; } void linklist::hapus(int target){ linklist *q,*r; q=p; if(q->data==target){
p=q->berikut;
delete q;
return;
}
r=q;
while(q!=NULL){
if(q->data==target){
r->berikut=q->berikut;
delete q;
return;
}
r=q;
q=q->berikut;
}
cout<<"\nElemen "<<<" tidak ada.\n"; } void linklist::sisip(int posisi,int nilai){ linklist *q,*t; int i; for(i=1,q=p;i<=posisi-1;i++){ q=q->berikut;
if(q==NULL){
cout<<"\nElemen lebih kecil dari "<<<"\n "; return; } } t=new linklist; t->data=nilai;
t->berikut=q->berikut;
q->berikut=t;
}

int main(int argc, char *argv[])
{
linklist post;
cout << "isi data"<
post.tambah(9);
post.tambah(7);
post.tambah(2);
post.tambah(6);
post.tambah(13);
post.tambah(19);
post.tambah(1);
post.tambah(17);
post.tambah(15);
post.tambah(11);
post.tambah(5);
post.tambah(31);
post.tampil();

cout << "hapus data 13"<
post.hapus(13);
post.tampil();
cout << "\nhapus data 11"<
post.hapus(11);
post.tampil();
cout << "\nhapus data 2"<
post.hapus(2);
post.tampil();
cout << "\nhapus data 19"<
post.hapus(19);
post.tampil();
cout << "\nsisip data 99 pada posisi ke 5"<
post.sisip(4,99);
post.tampil();
cout << "\nsisip data 35 pada posisi ke 3"<
post.sisip(2,35);
post.tampil();
cout << "\nsisip data 73 pada posisi ke 7"<
post.sisip(6,73);
post.tampil();
cout << "\ntambah data 23 di depan"<
post.tambahdepan(23);
post.tampil();

cout << "\ntambah data 89 di belakang"<
post.tambahbelakang(89);
post.tampil();

system("PAUSE");
return EXIT_SUCCESS;
}

Prototype Class Priority Queue

TDA Priority Queue
Deskripsi: antrian yang mempunyai fitur untuk memproritaskan item.
Instansi : kumpulan data antrian / larik antrian.
Operasi : -Enqueue
-Dequeue
-Priority

Prototype dengan type array
class priority queue{
private :
int antrian[10];
public :
void enqueue(int data);
int dequeue();
void priority(int index);
};

Prototype dengan type linklist
class priority queue{
private :
node*item;
public :
void enqueue(int data);
int dequeue();
void priority(int index);
};

Senin, 19 Desember 2011

DESKRIPSI ANTRIAN PARKIR MOTOR DI MALL

Dalam antrian ini, kami membahas tentang rancangan atau prosedur “Antrian parkir motor di suatu Mall. Akan tetapi sebelum, kita akan membahas pengertian “antrian queue”.
Antrian (queue) adalah struktur data yang menerapkan suatu aturan penyisipan di satu ujung dan penghapusan diujung yang lainnya, atau dengan menerapkan aturan FIFO (First In First Out/masuk pertama, keluar pertama). Dalam antrian penambahan (di belakang-rear) dan penghapusan (di depan-front) dilakukan pada tempat yang berbeda.
Contoh :
Dalam antrian X terdapat [1,2,3,4,5]. Pada bagian depan dinotasikan dari antrian X sebagai front(X) dan pada bagian belakang sebagai rear(X). Maka antrian X = [1,2,3,4,5] : front(X)=1 dan rear(X)=5.
Setelah kita bahas apa itu antrian, sekarang kita bahas tentang antrian parkir motor di Mall.
Pelayanan pada antrian parkir motor di Mall tersebut hanya dilayani oleh satu Loket parkir saja, sehingga jika terdapat banyak pengunjung yang berdatangan di Mall, maka semakin panjang pula antriannya dan memakan waktu yang cukup lama.
Pada antrian ini menggunakan situasi dimana petugas parkir akan menyelesaikan pelayanannya, baru melayani orang yang diprioritaskan. Dan “first come first serve” yaitu orang yang datang lebih dulu akan dilayani terlebih dahulu.
Petugas parkir akan melayani orang yang datang lebih dulu dengan mendata plat motor pengunjung Mall tersebut dan memberikan kertas parkir kepada pengunjung, sebagai bukti parkir. Setelah pelayanan selesai barulah petugas parkir akan melayani pengantri selanjutnya.
Berikut gambar simulasinya :

Dalam gambar diatas, dapat diasumsikan bahwa motor pertama, dengan plat ‘AB 1000 BC’ sebagai pengantri pertama, kemudian di lanjutkan dengan pengantri yang berikutnya dengan plat ‘AB 8888 BC’ dan seterusnya.

Selasa, 06 Desember 2011

Pengantar Stack

  • Stack merupakan suatu susunan koleksi data dimana data  dapat ditambahkan dan dihapus selalu dilakukan pada bagian akhir data, yang disebut dengan top of stack
  • Stack bersifat LIFO (Last In First Out)
  • “Benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar dari stack.
Operasi pada stack terdiri dari :
  1. Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
  2. Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
  3. Clear : digunakan untuk mengosongkan stack
  4. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
  5. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh

Selasa, 25 Oktober 2011

ARRAY DINAMIS

Array Dinamis
Dalam contoh-contoh di atas, ada batas tententu dalam jumlah elemennya, yaitu 100 int, 100 Pemain, dan 100 BentukGeometris. Karena ukuran array tidak bisa berubah, array tersebut hanya bisa menampung maksimum sebanyak elemen yang didefinisikan pada pembuatan array. Dalam banyak kasus, adanya batas maksimum tersebut tidak diinginkan. Kenapa harus bekerja dengan hanya 100 bilangan bulat saja, bukan 101?

Alternatif yang umum adalah membuat array yang sangat besar sehingga bisa digunakan untuk dalam kehidupan sehari-hari. Akan tetapi cara ini tidak baik, karena akan sangat banyak memori komputer yang terbuang karena tidak digunakan. Memori itu mungkin lebih baik digunakan untuk yang lain. Apalagi jika komputer yang akan digunakan tidak memiliki memori yang cukup untuk menjalankan program tersebut.

Tentu saja, cara yang lebih baik adalah apabila kita bisa mengubah ukuran array sesuka kita kapan saja. Ingat bahwa sebenarnya variabel array tidak menyimpan array yang sesungguhnya. Variabel ini hanya menyimpan referensi ke objek tersebut. Kita tidak bisa membuat array tersebut lebih besar, akan tetapi kita bisa membuat array baru yang lebih besar, kemudian mengubah isi variabel array tersebut ke array baru itu.

Tentunya kita harus mengkopi semua isi di array yang lama ke array baru. Array lama akan diambil oleh pemulung memori, karena ia tidak lagi digunakan.

Mari kita lihat kembali contoh game di atas, di mana ArrayPemain adalah array dengan tipe Pemain[] dan jumlahPemainAktif[/code] adalah jumlah pemain yang sudah digunakan array tersebut. Misalnya kita tidak ingin membuat limit banyaknya pemainnya yang bisa ikut main. Jika pemain baru masuk dan array tersebut sudah penuh, kita akan membuat array baru yang lebih besar.

Variabel ArrayPemain akan merujuk pada array baru. Ingat bahwa setelah ini dilakukan, ArrayPemain[0] akan menunjuk pada lokasi memori yang berbeda, akan tetapi nilai ArrayPemain[0] sama dengan sebelumnya. Berikut ini adalah kode untuk melakukan hal di atas:

// Tambah pemain baru, meskipun array sudah penuh

if (jumlahPemainAktif == ArrayPemain.length) {
// Array sudah penuh. Buat array baru yang lebih besar,
// kemudian kopi isi array lama ke array baru lalu ubah
// ArrayPemain ke array baru.
int ukuranBaru = 2 * ArrayPemain.length; // Ukuran array baru
Pemain[] temp = new Pemain[ukuranBaru]; // Array baru
System.arraycopy(ArrayPemain, 0, temp, 0, ArrayPemain.length);
ArrayPemain = temp; // Ubah referensi ArrayPemain ke array baru.
}

// Di sini kita sudah tahu bahwa pasti ada tempat di array baru.

ArrayPemain[jumlahPemainAktif] = pemainBaru; // Tambah pemain baru...
jumlahPemainAktif++; // ... dan tambah satu jumlahPemainAktif nya

Jika kita akan melakukan hal ini terus menerus, akan lebih indah jika kita membuat kelas untuk menangani hal ini. Objek mirip array yang bisa berubah ukuran untuk mengakomodasi jumlah data yang bisa ia tampung disebut array dinamis. Array dinamis memiliki jenis operasi yang sama dengan array : mengisi nilai pada posisi tertentu dan mengambil nilai di posisi tertentu. Akan tetapi tidak ada batas maksimum dari jumlah array (hanya tergantung pada jumlah memori komputer yang tersedia). Dalam kelas array dinamis, metode put dan get akan diimplementasikan sebagai metode instansi.

Di sini misalnya, adalah kelas yang mengimplementasikan array dinamis int :

public class ArrayDinamisInt {
private int[] data; // Array untuk menyimpan data
public DynamicArrayOfInt() {
// Konstruktor.
data = new int[1]; // Array akan bertambah besar jika diperlukan
}

public int get(int posisi) {
// Ambil nilai dari posisi tertentu di dalam array.
// Karena semua posisi di dalam array adalah nol, maka
// jika posisi tertentu di luar data array, nilai 0 akan dikembalikan
if (posisi >= data.length)
return 0;
else
return data[posisi];
}

public void put(int posisi, int nilai) {
// Simpan nilai ke posisi yang ditentukan di dalam array
// Data array tersebut akan bertambah besar jika diperlukan

if (posisi >= data.length) {
// Posisi yang ditentukan berada di luar array data
// Besarkan ukuran array 2x lipat. Atau jika ukurannya masih
// terlalu kecil, buat ukurannya sebesar 2*posisi

int ukuranBaru = 2 * data.length;
if (posisi >= ukuranBaru)
ukuranBaru = 2 * posisi;
int[] dataBaru = new int[ukuranBaru];
System.arraycopy(data, 0, dataBaru, 0, data.length);
data = dataBaru;

// Perintah berikut hanya untuk demonstrasi
System.out.println("Ukuran array dinamis diperbesar menjadi "
+ ukuranBaru);
}
data[posisi] = nilai;
}

} // akhir kelas ArrayDinamisInt

Data pada objek ArrayDinamisInt disimpan dalam array biasa, akan tetapi arraynya akan dibuang dan diganti dengan array baru yang lebih besar apabila diperlukan. Jika bilangan adalah variable bertipe ArrayDinamisInt, maka perintah bilangan.put(pos,nilai) akan menyimpan bilangan pada posisi pos di array dinamis tersebut. Fungsi bilangan.get(pos) mengambil nilai yang disimpan pada posisi pos.

Pada contoh pertama, kita menggunakan array untuk menyimpan bilangan bulat positif yang dimasukkan oleh user. Kita bisa menulis ulang program tersebut dengan menggunakan ArrayDinamisInt. Referensi ke bilangan[i] diganti dengan bilangan.get[i]. Perintah "bilangan[jmlBilangan] = bil;" kita ganti dengan "bilangan.put(jmlBilangan,bil);". Berikut ini adalah programnya:

public class BalikBilanganInput {

public static void main(String[] args) {

ArrayDinamisInt bilangan; // Array untuk menyimpan nilai input dari user
int jmlBilangan; // Banyaknya bilangan yang sudah disimpan dalam array
int bil; // Bilangan yang diambil dari user

bilangan = new ArrayDinamisInt();
jmlBilangan = 0; // Belum ada bilangan yang disimpan

System.out.println("Masukkan bilangan bulat positif, masukkan nol untuk mengakhiri.");

while (true) {
System.out.print("? ");
bil = KonsolIO.ambilInt();
if (bil <= 0)
break;
bilangan.put(jmlBilangan,bil);
jmlBilangan++;
}

System.out.println("\nBilangan yang Anda masukkan dalam urutan terbalik adalah :\n");

for (int i = jmlBilangan - 1; i >= 0; i--) {
System.out.println( bilangan.get(i) );
}

} // akhir main();

} // akhir kelas BalikBilanganInput

Minggu, 16 Oktober 2011

Konstruktor

Konstruktor digunakan untuk memberi nilai awal (inisialisasi) data member kelas.
Deklarasi Konstruktor
                        Kompleks(int s=0, int t=0) : a(s), b(t) { /* aksi */ }

Data member dari kelas Kompleks, yaitu s dan t akan diberi nilai 0 jika suatu
objek dideklarasikan tanpa parameter. Sebagai contoh :
Kompleks P;
                       Objek P (dalam logika kita) berbentuk : 0 + 0i.

Bila objek P dideklarasikan dengan satu parameter, maka hanya s yang akan
diinisialisasi melalui deklarasi tersebut, sebagai contoh :
             Kompleks P(-2);
Objek P (dalam logika kita) berbentuk : -2 + 0i. (bagaimana deklarasi objek, jika yang dikehendaki adalah bilangan kompleks berbentuk 0 – 2i ?)

Bila objek P dideklarasikan dengan dua parameter, maka baik s dan t akan diinisialisasi melalui deklarasi tersebut, sebagai contoh :
             Kompleks P(-2, 5);
Objek P (dalam logika kita) berbentuk : -2 + 5i.