Jumat, 15 April 2011

Structure Pada Bahasa C


Untuk menyimpan banyak data pada satu variable, biasanya kita menggunakan array. Array mampu menyimpan banyak data dalam satu variable, yaitu dengan ditempatkan dalam index yang berbeda. Tapi kita juga bisa menyimpan banyak data dalam satu index, bahkan dengan tipe data yang berbeda. Untuk dapat melakukan hal ini, kita menggunakan structure.
Structure adalah kumpulan dari beberapa variable yang dikelompokan dalam satu nama untuk kemudahan dalam penggunaan variable-variable tersebut. Structure mampu mengelompokan variable dengan tipe data yang bebrbeda dalam satu nama. Structure sangat diperlukan terutama dalam program-program yang besar. Karena, biasanya program-program yang besar menggunakan data yang kompleks, yang harus diolah dan digunakan secara bersamaan. Strucutre pada beberapa bahasa pemrograman lain disebut "record", misalnya pascal.
Contoh penggunaan structure misalnya pada seorang mahasiswa. Dalam program, kita bisa membuat mahasiswa sebagai sebuah variable. tapi dalam dunia nyata mahasiswa memiliki banyak data, antara lain alamat, nama, umur, NIM, dll. Pada program yang besar, data-data yang dimiliki mahasiswa harus dikelola secara bersamaan. Dan pada program, kita akan sangat kerepotan apabila menggunakan satu buah variable saja. Untuk mengatasi masalah ini, kita memerlukan structure untuk mengelompokan data dan mempermudah dalam mengolahnya.
Operasi yang bisa dilakukan terhadap structure antara lain, penggandaan (copy), sebagai parameter fungsi, dan sebagai nilai kembalian dari fungsi. Structure juga bisa digabungkan dengan array, yaitu dengan memberi index pada nama structure.
format deklarasi structure adalah sebagai berikut:
struct <NamaStructure>
{
member
member
member
}
v                 Data structures
Struct merupakan suatu struktur data yang menggabungkan beberapa data dengan berbagai tipe data yang memiliki ukuran yang berbeda (heterogen) di kelompokan dalam satu deklarasi unik dan saling berkaitan, dengan format sbb :
struct model_name {
type1 element1;
type2 element2;
type3 element3;
.
.
} object_name;

Dimana model_name adalah nama untuk model tipe stukturnya dan parameter optional object_name merupakan identifier yang valid untuk objek struktur. Diantara kurung kurawal { } berupa tipe dan sub-identifier yang mengacu ke elemen pembentuk struktur. Jika pendefinisian stuktur menyertakan parameter model_name (optional), maka parameter tersebut akan menjadi nama tipe yang valid ekuivalen dengan
struktur. Contoh :
struct products {
char name [30];
float price;
} ;
products apple;
products orange, melon;

Didefinisikan model struktur products dengan dua field : name dan price, dengan tipe yang berbeda. Kemudian tipe struktur tadi (products) digunakan untuk mendeklarasikan tiga objek : apple, orange dan melon. Ketika dideklarasikan, products menjadi nama tipe yang valid seperti tipe dasar int, char atau short dan dapat mendeklarasikan objects (variables) dari tipe tersebut. Optional field yaitu object_name dapat dituliskan pada akhir deklarasi struktur untuk secara langsung mendeklarasikan object dari tipe struktur. Contoh :
struct products {
char name [30];
float price;
} apple, orange, melon;

Sangat penting untuk membedakan antara structure model, dan structure object. model adalah type, dan object adalah variable. Kita dapat membuat banyak objects (variables) dari satu model (type). Struct dapat dideklarasikan secara bertingkat, yaitu salah satu field struct bertipe struct lainnya (nested Structure) . Selain itu struct juga dapat digabungkan dengan array, struct yang field-nya berupa array atau array yang setiap elemennya berupa structure.

Deklarasi, Input, dan Output Structure pada Bahasa C

Structure adalah sebuah tipe data yang bisa menampung banyak tipe data yang berbeda. Dengan structure kita seperti membuat tipe data kita sendiri. Structure terdiri dari beberapa anggota. Anggota dari structure disebut member, member inilah yang merupakan variable biasa, yang menampung data sebenarnya. Member dalam sebuah structure bisa terdiri dari tipe data yang berbeda, misalnya pointer, integer, character, dan lain-lain. Berikut ini contoh structure.
#include <stdio.h>
main()
{
struct mahasiswa //deklarasi structure

char nama[30];
char nim[10];
int sks;
int umur;
}data;

printf("Masukan data mahasiswa:\n"); //input data mahasiswa
printf("Nama (tanpa spasi): ");scanf("%s",&data.nama);
printf("NIM : ");scanf("%s",&data.nim);
printf("Jumlah SKS : ");scanf("%d",&data.sks);
printf("Umur : ");scanf("%d",&data.umur);

printf("\n\nData mahasiswa yang dimasukan:"); //cetak data mahasiswa
printf("\nNama : %s",data.nama);
printf("\nNIM : %s",data.nim);
printf("\nJumlah SKS : %d",data.sks);
printf("\nUmur : %d",data.umur);
printf("\n");
}


 
Structure sebagai parameter

Structure dapat dikirim ke function sebagai parameter, jika structure ini hanya merupakan data masukan, maka dapat dikirimkan dengan call by value, tetapi bila structure yang dikirimkan akan mengalami perubahan nilai maka pengiriman parameter harus dengan call by reference dengan mengirimkan pointer to struct. Struct juga dapat menjadi return type sebuah function.
Contoh struct1 (pass by reference):
#include<stdio.h>
#include<conio.h>
struct t_hitung{
int x;
int y;
};
int Hitung(struct t_hitung *Nilai){
int y;
y=Nilai->y*5+2;
Nilai->x=25;
return y;
}
int main(){
struct t_hitung *Angka;
int m;
Angka->x=5, Angka->y=10;
m = Hitung(Angka);
printf("x= %d\ny= %d\nm= %d",Angka->x,Angka->y, m);
return 0;
}

Contoh struct2 (array structures) :
#include<stdio.h>
#include<conio.h>
#define X 5
struct products{
char name[30];
float price;
};
int main(){
int i, j, jml;
struct products Apple[X];
char temp[30];
float Harga;
printf("Berapa jenis apel [Max %d]: ", X);
scanf("%d", &jml);
for(i=0;i<jml;i++){
printf("Masukkan nama buah ke-%d: ", i+1);
flushall();gets(temp);strcpy(Apple[i].name, temp);
printf("Masukkan harga buah : ");
scanf("%f", &Harga);Apple[i].price=Harga;
}
printf("\n\nHasil :\n");
for(j=0;j<jml;j++)
printf("%s Rp %.2f\n",Apple[j].name, Apple[j].price);
return 0;
}
String

Konstanta string, seperti : "I am a string" merupakan array bertipe karakter. Direpresentasikan dalam bahasa C dengan menggunakan Double quote dan diakhiri dengan karakter khusus null “\0'' sehingga program dapat menemukan akhir dari suatu string. Konstanta string sering digunakan dalam menampilkan output dari suatu program dengan menggunakan keyword printf, contoh :
printf("Hello, world\n");
printf("The value of a is: %f\n", a);

Contoh String 1 :
//String example
#include <stdio.h>
void main(){
char text_1[100], text_2[100], text_3[100];
char *ta, *tb;
char message[] = "Hello, I am a string; what are you?";
int i;
printf("Original message: %s\n", message);
// copy the message to text_1 the hard way
i=0;
while ((text_1[i] = message[i]) != '\0' )
i++;
printf("Text_1: %s\n", text_1);
//use explicit pointer arithmetic
ta=message;
tb=text_2;
while ( ( *tb++ = *ta++ ) != '\0' )
;
printf("Text_2: %s\n", text_2);
printf("\n\nSelesai");
getch(); }
Output :

Library standard “string'' terdiri dari beberapa function yang sangat berguna untuk
manipulasii, berikut beberapa contoh fungsi untuk manipulasi string :
char *strcpy(s,ct) → menyalin string ct ke string s, termasuk :\0''; dan
    mengembalikan s
char *strncpy(s,ct,n) → menyalin n buah karakter dari string ct ke string s, dan
    mengembalikan s
char *strncat(s,ct) → menggabungkan string ct keakhir string s dan mengembalikan
    s
char *strncat(s,ct,n) → menggabungkan n buah karakter dari string ct ke akhir
    string s, diakhiri dengan “\0”, dan mengembalikan s
int strcmp(cs,ct) → membandingkan string cs dan string ct; mengembalikan 0 jika
    cs=ct, >0 jika cs>ct, <0 jika cs<ct
char *strchr(cs,ct) → mengembalikan pointer ke urutan pertama dari string ct atau
    Null jika tidak ada
size_t strlen(cs → mengembalikan panjang string cs (s dan t merupakan char*, cs
    dan ct merupakan konstanta char*.

Contoh String 2 :
#include<stdio.h>
#include < string.h>
void main( ) {
char line[100], *sub_text;
strcpy(line,"hello, I am a string;");
printf("Line: %s\n", line);
//add to end of string
strcat(line," what are you?");
printf("Line: %s\n", line);
//find length of string, strlen brings back, length as type size_t
printf("Length of line: %d\n", (int)strlen(line));
// find occurence of substrings
if ( (sub_text = strchr ( line, 'W' ) )!= NULL )
printf("String starting with \"W\" ->%s\n", sub_text);
if ( ( sub_text = strchr ( line, 'w' ) )!= NULL )
printf("String starting with \"w\" ->%s\n", sub_text);
if ( ( sub_text = strchr ( sub_text, 'u' ) )!= NULL )
printf("String starting with \"w\" ->%s\n", sub_text);
}
Output :

Operasi File Pada Bahasa C



File adalah sebuah organisasi dari sejumlah record. Masing-masing record bisa terdiri
dari satu atau beberapa field. Setiap field terdiri dari satu atau beberapa byte.

v     MEMBUKA FILE
Untuk membuka atau mengaktifkan file, fungsi yang digunakan adalah fungsi fopen(). File dapat berupa file biner atau file teks. File biner adalah file yang pola penyimpanan di dalam disk dalam bentuk biner, yaitu seperti bentuk pada memori (RAM) computer. File teks adalah file yang pola penyimpanan datanya dalam bentuk karakter. Penambahan yang perlu dilakukan untuk menentukan mode teks atau biner adalah “t” untuk file teks dan “b” untuk file biner. Prototype fungsi fopen() ada di header fungsi “stdio.h”
Bentuk umum :
file *fopen(char *namafile, char *mode);

Keterangan :
♦ namafile adalah nama dari file yang akan dibuka/diaktifkan.
♦ mode adalah jenis operasi file yang akan dilakukan terhadap file.

Jenis-jenis operasi file :
♦ r  :   menyarakan file hanya dapat dibaca (file harus sudah ada)
♦ w :  menyatakan file baru akan dibuat/diciptakan (file yang sudah ada akan
          dihapus)
♦ a :   untuk membuka file yang sudah ada dan akan dilakukan proses
          penambahan data (jika file belum ada, otomatis akan dibuat)
♦ r+ :  untuk membuka file yang sudah ada dan akan dilakukan proses pembacaan
          dan penulisan.
♦ w+: untuk membuka file dengan tujuan untuk pembacaan atau penulisan.
          Jika file sudah ada, isinya akan dihapus.
♦a+ :  untuk membuka file, dengan operasi yang akan dilakukan berupa
          perekaman maupun pembacaan. Jika file sudah ada, isinya akan dihapus.

Contoh :
pf = fopen(“COBA.TXT”, “w”);

v                 MENUTUP FILE
Untuk menutup file, fungsi yang digunakan adalah fclose(). Prototype fungsi fclose() ada di header file “stdio.h”. Bentuk Umum :
int fclose(FILE *pf); atau int fcloseall(void);

v                 MELAKSANAKAN PROSES FILE
♦ Menulis Karakter, untuk menulis sebuah karakter, bentuk yang digunakan adalah :
putc(int ch, file *fp)
Dimana : fp adalah pointer file yang dihasilkan oleh fopen() dan ch adalah karakter yang akan ditulis.

Contoh :
#include “stdio.h”
#include “conio.h”
#define CTRL_Z 26
void main() {
file *pf; /* pointer ke file */
char kar;
/* ciptakan file */
if((pf = fopen(“COBA.TXT”, “w”)) == NULL){
cputs(“File tak dapat diciptakan !\r\n”);
exit(1); } /* selesai */
while((kar=getche()) != CTRL_Z)
putc(kar, pf); /* tulis ke file */
fclose(pf); /* tutup file */
}

♦ Membaca Karakter, untuk membaca karakter dari file, fungsi yang digunakan
adalah: getc(file *fp);
Dimana fp adalah pointer file yang dihasilkan oleh fopen() dan fungsi feof(),
digunakan untuk mendeteksi akhir file. Pada saat membaca data foef(file *fp)

Contoh :
#include “stdio.h”
#include “conio.h”
void main(){
file *pf; /* pointer ke file */
char kar;
/* buka file */
if((pf = fopen(“COBA.TXT”, “r”)) == NULL) {
cputs(“File tak dapat dibuka !\r\n”);
exit(1); } /* selesai */
while((kar=getc(pf)) != EOF)
putch(kar); /* tampilkan ke layar */
fclose(pf); /* tutup file */
}

Sejarah Bahasa C


 
Bahasa C dikembangkan di Bell Laboratories pada tahun 1972 oleh Dennis Ritchie. Prinsip dasar dan idenya didapat dari bahasa yang sudah ada sebelumnya yaitu bahasa B dan BCPL dan CPL.(Combined Programming Language) yang dikembangkan dengan tujuan untuk membentuk suatu bahasa yang mampu untuk pemrograman high level, machine independent programming dan masih memungkinkan para pemrogram untuk mengatur prilaku informasinya. Masalah utama dari CPL adalah ukurannya yang terlalu besar untuk digunakan pada beberapa aplikasi. Pada tahun 1967, BCPL ( Basic CPL ) diciptakan dan dikembangkan oleh Martin Richards, dan kemudian dikembangkan menjadi bahasa B oleh Ken Thompson ditahun 1970, untuk system UNIX pertama pada PDP-7 di Bell Laboratories. Akhirnya pada tahun 1972, bahasa B dikembangkan menjadi bahasa C. Compiler C yang pertama didesain dan diimplementasikan oleh Dennis Ricthie dan digunakan di computer Digital Equipment Corporation PDP-11 yang menggunakan system operasi UNIX Bahasa C pertama kali. C adalah “K & R” C, yang merupakan singkatan dari nama penemunya. Selama akhir tahun 1970, C berkembang melalui banyak akademi dan universitas, karena kedekatannya dengan Unix dan ketersediaan dari C compiler. Kepopuleran C menyebabkan berbagai organisasi menggunakan vers C sendiri dan mengakibatkan masalah kompatibilitas. Untuk mengatasi hal ini, pada tahun 1983, American National Standards Institute ( ANSI ) membentuk sebuah komite untuk menetapkan definisi standar bahasa C, yang kemudian dikenal dengan istilah ANSI Standard C. Penggunaan bahasa C saat ini berkembang dengan standar fungsi library yang banyak.

v       Alasan-alasan Menggunakan Bahasa C
1. Bahasa C tersedia hampir disemua jenis komputer.
2. Kode bahasa C bersifat Portable.
3. Bahasa C hanya menyediakan sedikit Reserved Word. Keandalan C dicapai dengan fungsi- 
    fungsi pustaka.
4. Proses executable program dalam bahasa C lebih cepat.
5. Dukungan pustaka yang banyak.
6. C merupakan bahasa terstruktur.
7. Selain bahasa tingkat tinggi, C juga dianggap sebagai bahasa tingkat menengah.
8. C adalah bahasa kompiler.


             STRUKTUR PROGRAM C

Struktur program C dapat dilihat sebagai kumpulan satu atau lebih fungsi-fungsi.Fungsi yang harus ada adalah main(), karena fungsi ini merupakan titik awal dan titik akhir peng-eksekusian program. Diawali dengan tanda ( { ) dan diakhiri dengan ( } ).
Bentuk umumnya :
main()
{
Block statement;
}
Bahasa C dikatakan sebagai bahasa pemrograman terstruktur, karena strukturnya menggunakan fungsi-fungsisebagai program-program bagian (subroutine). Fungsi-fungsi ini dapat ditulis setelah fungsi utama atau diletakkan di file pustaka (library). Jika Fungsi diletakkan di file library dan akan dipakai pada suatu program maka nama header file- nya harus disertakan didalam program dengan preprocessor directive #include.
Contoh program sederhana :
#include <stdio.h>
main()
{
printf(“Hello World…!!! “);
}

v       HEADER FILE
Merupakan file yang berisi prototype (judul, nama, dan sintaks ) dari sekumpulan fungsi-fungsi pustaka tertentu, sedangkan fungsi-fungsi pustakanya sendiri disimpan difile pustaka (library file dengan extension .LIB). Cara penulisannya adalah
#include <nama header file>
File stdio.h akan dicari mulai dari directory tempat header file tersebut di-install. Jika tidak ada akan dilanjutkan mencarinya ke current / working directory.Atau
#include “nama header file”
File stdio.h akan dicari mulai dari current / working directory, dan jika tdk ada akan dilanjutkan mencarinya ke directory tempat header file tersebut disimpan pada saat menginstall compiler-nya.

              

Macam Macam Media Penyimpanan


1.      Cakram

a.      Cakram Digital
·         Pengertian
Cakram Digital (bahasa Inggris: Compact Disc, disingkat CD), cakram padat, atau piringan cakram adalah sebuah piringan optikal yang digunakan untuk menyimpan data secara digital. Sejak diperkenalkan secara resmi pada tahun 1982, CD memperoleh puncak penjualan pada tahun 2000 yaitu mencapai 2.445 juta keping Keuntungan yang diperoleh dari CD adalah kualitas suara yang dihasilkan tidak mungkin sebagus yang ada di kaset, selain itu CD sangat ringan dan mudah dibawa serta merupakan barang yang sangat tahan lama. CD menawarkan kapasitas penyimpanan data yang besar serta kapabilitas produksi.
·         Sejarah CD
1970 Philips memulai penelitian mengenai ALP (Audio Long Play), sebuah sistem audio untuk menghadapi teknologi rekaman vinyl dengan menggunakan teknologi laser. Lou Otters, Direktur teknik dari divisi audio di Philips, menyarankan agar format fisik ALP harus lebih kecil dari format rekaman Vinyl dan dapat memuat rekaman musik selama satu jam. Kerja sama antara Sony dan Philips berfokus kepada bagimana membentuk CD lebih kecil, mereka mempunyai ide untuk membuat CD sanggup memuat quadraphonic Sound tetapi berakibat ukuran CD membesar menjadi berdiameter 20cm, rencana itu digagalkan.
1977 Philpis memulai mengambil inisiatif untuk membuat format baru audio, dan banyak nama yang didiskusikan, seperti Mini Rack, MiniDisc, atau CompactRack, tetapi nama yang diambil adalah Compact Disc karena mengingatkan kepada kesuksesan Compact Cassette.
1979 Philips membuat press Conference di Eindhoven, Jerman untuk memamerkan CD dengan kualitas audio yang sangat baik (High audip quality).Philips berkelana ke Jepang untuk mengadakan perundingan pembuatan format standar dari keping audio, dan Philips mendapatkan kesepakan dengan Sony. Philips menawarkan durasi panjang perekaman dan daya tahan terhadap kerusakan cakram seperti goresan halus dan sidik jari, sementara itu Sony menawarkan metode koreksi kesalahan (error-correction method). Ukuran awal yang ditawarkan Philips adalah 11,5cm, tetapi pihak Sony menolaknya dengan alasan bahwa cakram harus mampu merekam keseluruhan lagu dari Beethoven`s 9th Symphony, oleh karena itu diameter CD naik menjadi 12cm untuk memuat data ekstra.
1980 Philpis dan Sony memproduksi “Red Book”, yang didalamnya tercantum standarisasi mengenai Cakram digital, dari sini mereka mulai bekerja terpisah untuk merancang CD yang akan diproduksi.
1982 Philips memproduksi pemutar CD pertama kalinya.
1983 Penerbitan “Yellow Book”. Yang didalamnya memuat standarisasi dari Compact Disc – Read Only Memory (CD-ROM), yang menjadi sebuah standar CD berbasis komputer dan hal ini juga digunakan sebagai standarisasi bagi setiap komputer untuk mampu membaca drive CD-ROM.
1985 Dire Straits dengan Brother In Arms, menjadi artist yang menjual lebih dari satu juta kopi cakram, dan rekor ini masih menjadi rekor album CD terlaris.
1986 Penerbitan “Green Book”, didalamnya terdapat teknologi CD-Interactive, yang digunakan untuk mensinkornasikan antara audio dan data di dalam CD-ROM. Yang ditunjukan untuk menampung full motion video yang dikombinasikan dengan interaktivitas.Perkembangan selanjutnya terciptanya CD-RW, perangkat cakram padat yang dapat digunakan secara berulang-ulang, perangkat ini mempunyai kemampuan seperti disket ataupun hard drive, dapat ditulis ulang berkali-kali.
1998 Empat ratus Miliar CD telah diproduksi.
2000 Format MP3 Diluncurkan dan mulai mempengaruhi penjualan CD.
2008 Penjualan CD menurun 20% dibandingkan penjualan ditahun 2000.
·         Detail Fisik
CD dibuat dari plastik polikarbonat setebal 1,2mm dengan berat 15-20 gram. Pembagian komponen CD dari bagian tengah CD sampai luar adalah : Pusat/ poros CD, daerah transisi pertama (cincin penjepit), daerah kelm (cincin stacking), Daerah transisi kedua, daerah informasi dan RIM. Untuk ukuran CD berdiameter 120mm dapat memuat audio selama 80 menit atau data sebesar 650-870 MB, sedangkan mini cd yang memiliki diameter mulai dari 60mm sampai dengan 80mm dapat memuat audio selama 24 menit atau data sebesar 185-210 MB. Lapisan tipis alumunium atau yang lebuh jarang, lapisan tipis emas digunakan ke permukaan untuk menimbulkan refleksi, lapisan ini dilindungi oleh sebuah film pernis yang diputar langsung ke atas lapisan reflektif. Label Cd dicetak diatas lapisan pernis, metode yang digunakan untuk mencetak label adalah metode percetakan umum atau cetak offset. Lapisan tipis aluminium atau, lebih jarang, emas diterapkan ke permukaan sehingga reflektif. Logam ini dilindungi oleh sebuah film Data di dalam Cd disimpan dalam rangkaian lekukan kecil yang disebut pits, pengkodeaan berlangsung didalam lintasan sprial ke luar dilapisan polikarbonat. daerah antara pits dikenal sebagai lands. Setiap pits memiliki kedalaman sebesar 100nm dan luas sekitar 500nm dan bervariasi dari 850nm sampai 3,5 μm untuk panjangnya. Jarak antara trakc, antara pits, adalah 1,6 μm.
·         Cara Penyimpanan
CD sebaiknya disimpan di suhu sebesar 10-20 celcius, hindari CD dari fluktuasi suhu dan kelembaban. Suhu yang buruk dan lembab dapat menyebabkan CD melengkung dan berakibat CD tidak dapat digunakan. CD sebaiknya disimpan di tempat yang gelap, karena sinar UV akan menyebabkan kandungan alumunium menjadi gelap dan menyebabkan kesalahan dalam pembacaan data di CD. CD sebaik disimpan di dalam kotak penyimpanan CD, setiap kotak penyimpanan CD hanya berisi satu CD. Jangan menumpuk CD dalam satu tempat,karena ada kemungkinan untuk merusak lapisan data CD karena gesekan antara CD. Jika goresan yang ada sangat besar dan dalam, data yang ada di CD kemungkinan besar tidak akan bisa dibaca oleh alat pembaca CD.
·         Format logis
 CD memiliki format standar, panduan format standar ada pada “buku merah” yang diterbitkan oleh Sony dan Philips. Formatnya adalah dua-channel 16-bit PCM encoding dengan sampling rate sebesar 44,1kHz per Channel. Pemilihan tingkat sampling rate didasarkan kepada kebuuhan untuk reporduksi rentang frekuensi antara 20 Hz- 20 Khz Dalil sampling Nyquist-Shannon menyatakan bahwa tingkat sampling lebih ari dua kali frekuensi maksimun dari sinyal yang akan direkam. Sehingga perekam di CD membutuhkan minimal 40kHz. Pemilihan tingkat sampling 44,1kHz berdasarkan metode konversi suara digital ke penyimpanan sinyal analog video untuk disimpan di U-matic video tape.
·         Anti Penyalinan
Buku Merah audiohanya memuat sedikit mengenai anti penyalinan CD, didalamnya juga tidak dimasukan mengenai mekanisme anti penyalinan. Pada awal 2002, dilakukan upaya perusahaan rekaman untuk melindungi CD dari penyalinan data. CD ini tidak dapat dengan mudah disalin, digandakan, di rusak ataupun dikonversi kedalam MP3. Salah satu kelemahan utama adalah CD anti-penyalinan biasanya tidak dapat digunakana atau dibaca oleh peralatan CD-ROM komputer ataupun pemutar CD biasa yang menggunkan mekanisme CD-ROM. Philips menyatakan bahwa CD anti-penyalinan tidak berhak menggunakan label compact disc digital audiokarena melanggar spesifikasi yang ada di buku merah. Banyak sistem anti-penyalinan ini dilawan oleh konsumen CD dengan menggunakan perangkat lunak di internet yang tersedia secara gratis.

b.      CD-R
CD-R adalah singkatan dari istilah bahasa Inggris Compact Disc-Recordable) merupakan jenis cakram padat yang dapat diisi dengan data. salah satu jenis media penyimpanan eksternal pada komputer. Secara fisik CD-R merupakan CD polikarbonat kosong berdiameter 120 mm sama seperti CD ROM. Awalnya CD-R dilapisi emas sebagai media refleksinya.Permukaan reflektif pada lapisan emas tidak memiliki depresi atau lekukan – lekukan fisik seperti halnya pada lapisan aluminium kemudian disempurnakan dengan cara dengan menambahkan lapisan pewarna di antara polikarbonat dan lapisan emas. Jenis pewarna yang sering digunakan adalah cyanine yang berwarna hijau dan pthalocynine yang berwarna oranye kekuningkuningan.Pewarna ini sama seperti yang digunakan dalam film fotografi sehingga menjadikan Kodak dan Fuji produsen utama CD-R Sebelum digunakan pewarna bersifat transparan sehingga sinar laser berdaya tinggi dapat menembus sampai ke lapisan emas saat proses penulisan. Saat sinar laser mengenai titik pewarna, sinar ini memanaskannya sehingga pewarna terurai melepaskan ikatan kimianya membentuk suatu noda. Noda – noda inilah sebagai representasi data yang nantinya dapat dikenali oleh foto-detektor apabila disinari dengan laser berdaya rendah saat proses pembacaan. CD-R hanya dapat menyimpan satu kali saja dan data yang telah ada sebelumnya tidak dapat diubah atau dihapus.

c.       CD-ROM
CD-ROM merupakan akronim dari "compact disc read-only memory" adalah sebuah piringan kompak dari jenis piringan optik (optical disc) yang dapat menyimpan data. Ukuran data yang dapat disimpan saat ini bisa mencapai 700MB atau 700 juta bita.
CD-ROM bersifat read only (hanya dapat dibaca, dan tidak dapat ditulisi). Untuk dapat membaca isi CD-ROM, alat utama yang diperlukan adalah CD Drive. Perkembangan CD-ROM terkini memungkinkan CD dapat ditulisi berulang kali (Re Write / RW) yang lebih dikenal dengan nama CD-RW
d.   CD-RW
Compact Disk Rewritable disingkat CD-RW adalah CD-ROM yang dapat ditulisi kembali. CD-RW menggunakan media berukuran sama dengan CD-R. tetapi bukan menggunakan bahan pewarna cyanine atau pthalocyanine, CD-RW menggunakan logam perpaduan antara perak, indium, antimon, dan telurrium untuk lapisan perekaman.
Kandar CD-RW menggunakan laser dengan tiga daya yang berbeda. Pada daya yang tinggi, laser melelehkan logam paduan, yang mengubahnya dari kondisi kristalin reflektivitas tinggi menjadi kondisi amorf refletivitas agar menyerupai sebuah pit. Pada daya sedang, logam paduan meleleh dan berubah kembali dalam kondisi kristalin alamiahnya untuk menjadi land lagi. Pada daya rendah, keadaan/kondisi material ditelaah (untuk pembacaan), tetapi tidak ada transisi fase yang terjadi.Cakram CD-RW relatif lebih mahal dibandingkan cakram CD-R.

e.      VCD
Video CD disingkat VCD atau disebut juga View CD atau Compact Disc digital video adalah format digital standar untuk penyimpanan gambar video dalam suatu cakram padat. Cakram VCD ini dapat dijalankan dengan alat perekam/pemutar VCD. Namun hampir semua jenis komputer PC, perekam/pemutar cakram DVD, serta beberapa konsol permainan video juga dapat menjalankan jenis cakram VCD ini.