Kamis, 28 April 2011

PERKEMBANGAN KOMPUTER SEKARANG INI DAN PENERAPANNYA DI BIDANG ELEKTRONIK


DASAR-DASAR KOMPUTER
Staf sistem dan programer komputer dalam sebuah perusahaan bertanggungjawab untuk merancang dan mengoperasikan sistem komputer, sehingga mereka memahami dasar-dasar tehnis dan komponen sistem tersebut. Disamping itu, penggunaan pelayanan komputer oleh berbagai departemen perusahaan memerlukan pengetahuan komputer non tehnis. Sebagai tenaga ahli pada manajemen informasi, administrator kantor harus memahami mesin proses data dan memahami ciri-ciri dasar sistem komputer agar dapat berfungsi secara efisien dan ekonomis.
KARAKTER DASAR KOMPUTER
Semua komputer mempunyai ciri-ciri sebagai berikut :
  1. Sirkuit elektronik yang menjadikan proses komputer modern yang lebih cepat dan kemampuan komputasi yang besar.
  2. Sebuah memori internal yang dapat menyimpan data dan program.
  3. Kecepatan operasi internal yang tinggi.
  4. Kemampuan untuk melakukan operasi matematika dan penggunaan mesin logika.
  5. Pengendalian input dan output secara otomatis.
Klasifikasi Komputer
Komputer dapat diklasifikasikan berdasarkan jenis, tujuan dan ukuran.
Jenis. Komputer elektronik dikelompokkan kedalam kategori analog dan digital, yaitu berdasarkan jenis proses data. Komputer analog digunakan untuk penelitian ilmiah yang menggunakan operasi aritmatika. Komputer digital menghitung jumlah atau digit. Komputer digital menunjukkan operasi aritmatika dan operasi lain yang memberi kode berdasarkan angka-angka. Komputer digital dapat melakukan proses data numerik dan alfabetik.
Tujuan. Tujuan khusus komputer adalah merancang beberapa proses aplikasi, dan program atau perangkat lunak. Komputer beroperasi berdasarkan sirkuit elektronik. Tujuan komputer secara umum adalah untuk memproses berbagai aplikasi yang berbeda.
Semua komputer dalam bab ini, masuk kategori tujuan umum, komputer digital dan proses bisnis. Berbeda dengan komputer bisnis, komputer ilmiah dirancang untuk melakukan proses data numerik dengan kecepatan tinggi dan melibatkan kalkulasi matematika yang rumit, tetapi volume input dan output data lebih kecil daripada komputer untuk proses bisnis.
Ukuran. Berdasarkan kemampuan untuk melakukan proses berbagai volume data atau menangani berbagai masalah komputasi, ada berbagai jenis ukuran yaitu komputer mini, komputer ukuran kecil, menengah, dan besar.
Komputer mini. Komputer yang sangat kecil yang dapat menunjukkan semua fungsi komputer untuk tujuan umum. Komputer ini memiliki penyimpanan internal yang kecil dan kemampuan input dan output data yang lebih terbatas. Komputer mini dapat mengganti muatan operasi pada komputer utama dan bersifat ekonomis, terutama pada departemen yang sebelumnya harus menyusun prioritas muatan pada komputer pusat atau pada pusat pelayanan.
Komputer kecil. Berukuran lebih besar dan lebih serbaguna dibandingkan komputer mini, dan mempunyai penyimpanan yang lebih besar serta kemampuan input-output yang lebih baik.
Komputer ukuran menengah dan ukuran besar. Lebih besar dan lebih cepat daripada komputer ukuran kecil, dapat menangani lebih banyak input, dan memiliki alat penyimpanan yang lebih besar, serta menghasilkan lebih banyak output. Komputer ukuran besar bahkan mempunyai kecepatan proses yang lebih besar, kapasitas penyimpanan yang lebih besar, serta alat input dan output yang lebih canggih daripada komputer ukuran menengah.
Konsep Sistem Komputer
Sebelum menggunakan komputer, harus dipahami konsep sistem komputer yang harus dikembangkan sehingga manajer kantor dalam perusahaan dapat membuat keputusan tentang alat proses data yang ekonomis dan efisien.
Pemeliharaan berkas, merupakan proses memelihara berkas data yang telah disimpan. Pemeliharaan berkas merupakan aplikasi komputer yang paling sering digunakan dalam proses data bisnis.
Basis data. Dengan kemampuan proses komputer yang cepat dan dapat digabungkan dengan alat telekomunikasi yang mengirim informasi jarak jauh ke kantor pusat. Keuntungan basis data antara lain berkurangnya duplikasi berkas, adanya sumber data tunggal yang dapat menyimpan dan menelusuri data secara akurat, dan mengurangi waktu proses komputer. kelemahan menyangkut masalah keamanan, ekonomi, kesulitan untuk menyebarkan informasi, dan kerusakan alat yang menyebabkan pekerjaan terhenti dan produktivitas menurun.
Otomasi sumber data. Untuk mengubah informasi menjadi digital dibutuhkan enam sampai delapan orang. Ini memakan banyak waktu dan biaya. Untuk itu perlu digunakan otomasi sumber data. Otomasi sumber data merupakan cara mengubah data secara mudah agar dapat dibaca oleh komputer. 
Teknologi informasi berkembang pesat seiring dengan penemuan dan perkembangan ilmu pengetahuan dalam bidang informasi dan komunikasi. Perekembangan terknologi informasi mampu menciptakan peralatan yang mendukung perkembangan teknologi informasi, mulai dari sistem komunikasi sampai dengan alat komunikasi yang searah maupun dua arah (interaktif). Komputer merupakan perangkat elektronika yang mampu menerima, memproses, dan menyimpan data, serta menghasilkan bentuk keluaran berupa teks, gambar, simbol, angka dan suara. Dalam pengoperasian, bentuk, sistem dan fungsinya komputer dapat dipandang terdiri atas 2 (dua) bagian yaitu hardware dan software.Teknologi Informasi adalah ilmu yang mempelajari teknik aplikasi komputer untuk mendukung operasi dari suatu organisasi: operasi, instalasi, dan perawatan komputer, perangkat lunak, dan data. Teknologi Komunikasi adalah ilmu yang mempelajari aplikasi berbagai teknologi yang digunakan di dalam telekomunikasi. Sumber Informasi secara garis besar ada dua jenis yaitu dari media cetak dan media elektronik Teknologi Informasi dan Komunikasi sudah dimanfaatkan di berbagai bidang kehidupan, misalnya pendidikan, industri, bioteknologi, militer, kesehatan, dan lain-lain.

Minggu, 27 Maret 2011

Linked List

Pengertian
Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun secara sambung menyambung, dinamis dan terbatas.
Linked List sering disebut juga Senarai Berantai
Linked List saling terhubung dengan bantuan variabel pointer
Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis dan biasanya berupa struct yang terdiri dari beberapa field.


Gambar tersebut menunjukkan Linked List tunggal atau ‘singly-linked list’ dimana tiap simpul hanya memiliki satu taut (link) yang merujuk ke simpul berikutnya atau nilai null pada akhir simpul. Seranai berantai ini hanya bisa diakses maju dari awal simpul ke akhir simpul.
Operasi-Operasi yang ada pada Linked List
Insert
Istilah Insert berarti menambahkan sebuah simpul baru ke dalam suatu linked list.
IsEmpty
Fungsi ini menentukan apakah linked list kosong atau tidak.
Find First
Fungsi ini mencari elemen pertama dari linked list
Find Next
Fungsi ini mencari elemen sesudah elemen yang ditunjuk now
Retrieve
Fungsi ini mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu dikembalikan oleh fungsi.
Update
Fungsi ini mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu
Delete Now
Fungsi ini menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalah elemen pertama dari linked list (head), head akan berpindah ke elemen berikut.
Delete Head
Fungsi ini menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.
Clear
Fungsi ini menghapus linked list yang sudah ada. Fungsi ini wajib dilakukan bila anda ingin mengakhiri program yang menggunakan linked list. Jika anda melakukannya, data-data yang dialokasikan ke memori pada program sebelumnya akan tetap tertinggal di dalam memori.
Operasi-operasi untuk Stack dengan Linked List
IsEmpty
Fungsi memeriksa apakah stack yang adamasih kosong.
Push
Fungsi memasukkan elemen baru ke dalam stack. Push di sini mirip dengan insert dalam single linked list biasa.
Pop
Fungsi ini mengeluarkan elemen teratas dari stack.
Clear
Fungsi ini akan menghapus stack yang ada.
Operasi-operasi Queue dengan Double Linked List
IsEmpty
Fungsi IsEmpty berguna untuk mengecek apakah queue masih kosong atau sudah berisi data. Hal ini dilakukan dengan mengecek apakah head masih menunjukkan pada Null atau tidak. Jika benar berarti queue masih kosong.
IsFull
Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bisa menampung data dengan cara mengecek apakah Jumlah Queue sudah sama dengan MAX_QUEUE atau belum. Jika benar maka queue sudah penuh.
EnQueue
Fungsi EnQueue berguna untuk memasukkan sebuah elemen ke dalam queue (head dan tail mula-mula meunjukkan ke NULL).
DeQueue
Procedure DeQueue berguna untuk mengambil sebuah elemen dari queue. Hal ini dilakukan dengan cara menghapus satu simpul yang terletak paling depan (head).

Single Linked List Circular
Single Linked List Circular (SLLC) adalah Single Linked List yang pointer nextnya menunjuk pada dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya.
Pengertian:
Node : rangkaian beberapa simpul
Single : artinya field pointer-nya hanya satu buah saja dan satu arah.
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
Circular : artinya pointer next-nya akan menunjuk pada dirinya sendiri sehingga berputar

Ilustrasi SLLC
Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data. Pada akhir linked list, node terakhir akan menunjuk ke node terdepan sehingga linked list tersebut berputar.


Deklarasi:
Deklarasi node dibuat dari struct berikut ini:
typedef struct TNode{
int data;
TNode *next;
};
Pembentukan node baru
Digunakan keyword new yang berarti mempersiapkan sebuah node baru
berserta alokasi memorinya.
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = baru;
Dibutuhkan satu buah variabel pointer: head
Head akan selalu menunjuk pada node pertama

Penambahan data di depan
Penambahan node baru akan dikaitan di node paling depan, namun pada saat pertama kali (data masih kosong), maka penambahan data dilakukan pada head nya.
Pada prinsipnya adalah mengkaitkan data baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan. Untuk menghubungkan node terakhir dengan node terdepan dibutuhkan pointer bantu.

HEAD Single Linked List Circular
Penambahan data di depan




Penambahan data di depan
void insertDepan(int databaru){
TNode *baru,*bantu;
baru = new TNode;
baru->data = databaru;
baru->next = baru;
if(isEmpty()==1){
head=baru;
head->next=head;
}
else {
bantu = head;
while(bantu->next!=head){
bantu=bantu->next;
}
baru->next = head;
head = baru;
bantu->next = head;
}
printf(“Data masuk\n“);
}
Penambahan data di belakang
Penambahan data dilakukan di belakang, namun pada saat pertama kali data langsung ditunjuk pada head-nya.
Penambahan di belakang lebih sulit karena kita membutuhkan pointer bantu untuk mengetahui data terbelakang, kemudian dikaitkan dengan data baru. Untuk mengetahui data terbelakang perlu digunakan perulangan.


Penambahan data di belakang
void insertBelakang (int databaru){
TNode *baru,*bantu;
baru = new TNode;
baru->data = databaru;
baru->next = baru;
if(isEmpty()==1){
head=baru;
head->next=head;
}
else {
bantu = head;
while(bantu->next != head){
bantu=bantu->next;
}
bantu->next = baru;
baru->next = head;
}
printf(“Data masuk\n“);
}

Operasi Penghapusan
Penghapusan node dilakukan dengan memutus rantai node kemudian menghapus node. Jika node berada di tengah rangkaian, rangkaian yang terputus perlu disambung kembali. Untuk memudahkan penghapusan simpul dibutuhkan dua cursor sebagai simpul bantu. Selain cursor juga dibutuhkan simpul head sebagai acuan awal simpul dalam rangkaian.

Berikut langkah langkah untuk menghapus simpul dalam rangkaian:
§  Buat cursor bantu yang menunjuk ke awal node(simpul).
§  Pindahkan cursor ke node berikutnya
§  Putus sambungan awal node dengan node berikutnya.
§  Hapus rangkaian
§  Jika berada di akhir rangkaian, putuskan dari rangkaian sebelumnya
§  Jika di tengah rangkaian, pindahkan penunjukan node berikutnya, atau di akhir, atau setelah node yang akan dihapus
Ilustrasi Hapus Depan

Ilustrasi Hapus Depan
void hapusDepan (){
TNode *hapus,*bantu;
if (isEmpty()==0){
int d;
hapus = head;
d = head->data;
if(head->next != head){
bantu = head;
while(bantu->next!=head){
bantu=bantu->next;
}
head = head->next;
delete hapus;
bantu->next = head;
}else{
head=NULL;
}
printf(“%d terhapus\n“,d);
} else printf(“Masih kosong\n“);
}
Ilustrasi Hapus Belakang
Ilustrasi Hapus Belakang
void hapusBelakang(){
TNode *hapus,*bantu;
if (isEmpty()==0){
int d;
hapus = head;
if(head->next == head){
head = NULL;
}else{
bantu = head;
while(bantu->next->next != head){
bantu = bantu->next;
}
hapus = bantu->next;
d = bantu->data;
bantu->next = head;
delete hapus;
}
printf(“%d terhapus\n“,d);
} else printf(“Masih kosong\n“);
}
Ilustrasi Hapus Belakang

Contoh Coding Stack Dengan Linked List
#include <iostream.h>
#include <conio.h>
/* membuat linked list */
typedef struct myLinkedList {
char nim[10];
char nama[35];
int nilai;
myLinkedList *next;
};
myLinkedList *head;
/* keadaan awal */
void init() {
head = NULL;
}
/* fungsi untuk mengecek linked list
* apakah kosong atau tidak
* jika kosong maka bernilai 1
* jika tidak kosong maka bernilai 0
*/
int paKosong() {
if (head == NULL) return 1;
else return 0;
}
/**
* fungsi untuk menambahkan data dari depan node
*/
void tambahDepan() {
myLinkedList *baru;
baru = new myLinkedList;
cout << “Masukkan Data lengkap di bawah ini : ” << endl;
cout << “NIM : “; cin >> baru->nim;
cout << “Nama : “; cin >> baru->nama;
cout << “Nilai : “; cin >> baru->nilai;
baru->next = NULL;
if (paKosong() == 1) {
head = baru;
head->next = NULL;
} else {
baru->next = head;
head = baru;
}
}
/**
* fungsu untuk menambahkan data dari depan node
*/
void tambahBelakang() {
myLinkedList *baru, *bantu;
baru = new myLinkedList;
cout << “Masukkan Data lengkap di bawah ini : ” << endl;
cout << “NIM : “; cin >> baru->nim;
cout << “Nama : “; cin >> baru->nama;
cout << “Nilai : “; cin >> baru->nilai;
baru->next = NULL;
if (paKosong() == 1) {
head = baru;
head->next = NULL;
} else {
bantu = head;
while (bantu->next != NULL) {
bantu = bantu->next;
}
bantu->next = baru;
}
}
/**
* fungsi untuk menghapus dari depan node
*/
void hapusDepan() {
myLinkedList *hapus;
char *data;
if (paKosong() == 0) {
if (head->next != NULL) {
hapus = head;
data = hapus->nim;
head = head->next;
delete hapus;
} else {
data = head->nim;
head = NULL;
}
cout << data << ” sudah terhapus \n”;
} else {
cout << “Data Masih kosong..\n”;
}
cout << “Tekan Enter untuk kembali ke Menu!”;
getch();
}
/**
* fungsi untuk menghapus dari belakang node
*/
void hapusBelakang() {
myLinkedList *hapus, *bantu;
char *data;
if (paKosong() == 0) {
if (head->next != NULL) {
bantu = head;
while(bantu->next->next != NULL) {
bantu = bantu->next;
}
hapus = bantu->next;
data = hapus->nim;
bantu->next = NULL;
delete hapus;
} else {
data = head->nim;
head = NULL;
}
cout << data << ” sudah terhapus… ” << endl;
} else {
cout << “Data masih kosong…” << endl;
}
cout << “Tekan Enter untuk kembali ke Menu!”;
getch();
}
/**
* fungsi untuk menampilkan data linked list
*/
void tampilData() {
int no = 1;
myLinkedList *bantu;
bantu = head;
if (paKosong() == 0) {
while (bantu != NULL) {
cout << “No. : ” << no << endl;
cout << “NIM : ” << bantu->nim << endl;
cout << “Nama : ” << bantu->nama << endl;
cout << “Nilai : ” << bantu->nilai << endl << endl;
no++;
bantu = bantu->next;
}
cout << endl;
} else {
cout << “Data masih kosong ” << endl;
}
cout << “Tekan Enter untuk kembali ke menu!”;
getch();
}
/**
* fungsi Menu, Untuk menentukan linked list mana
* yang dipilih
*/
int menu() {
int pilihan;
cout << “+———————-+\n”;
cout << “| MENU PILIHAN |\n”;
cout << “+———————-+\n”;
cout << “| 1. Tambah Depan |\n”;
cout << “| 2. Tambah Belakang |\n”;
cout << “| 3. Hapus Depan |\n”;
cout << “| 4. Hapus Belakang |\n”;
cout << “| 5. Tambah Tengah |\n”;
cout << “| 6. Hapus Tengah |\n”;
cout << “| 7. TampilData |\n”;
cout << “| 8. Keluar |\n”;
cout << “+———————-+\n”;
cout << “| PILIHAN ANDA ? [ ] |\n”;
cout << “+———————-+\n”;
cin >> pilihan;
return pilihan;
}
/**
* fungsi operasi data
*/
void operasiData() {
int pilih;
do {
pilih = menu();
switch (pilih) {
case 1 :
tambahDepan();
break;
case 2 :
tambahBelakang();
break;
case 3 :
hapusDepan();
break;
case 4 :
hapusBelakang();
break;
case 5 :
tampilData();
break;
case 6:
cout << “Terima kasih coy!!!”;
break;
}
} while (pilih != 6);
}
/**
* PROGRAM UTAMA
*/
void main() {
init();
operasiData();
}
Setelah diCompile, maka akan menghasilkan tampilan: