BAB 2 LANDASAN TEORI

dokumen-dokumen yang mirip
BAB 2 TINJAUAN PUSTAKA

BAB 2 TINJAUAN PUSTAKA

BAB 2 TINJAUAN PUSTAKA

NASKAH PUBLIKASI KOMPRESI CITRA DENGAN METODE ARITHMETIC CODING DALAM KAWASAN ENTROPY CODING

BAB 2 TINJAUAN PUSTAKA

BAB 1 PENDAHULUAN Latar Belakang

BAB 2 TINJAUAN PUSTAKA

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 1 PENDAHULUAN 1.1 LATAR BELAKANG

BAB 2 TINJAUAN PUSTAKA

IMPLEMENTASI DAN ANALISIS KINERJA ALGORITMA ARIHTMETIC CODING DAN SHANNON-FANO PADA KOMPRESI CITRA BMP

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 2 LANDASAN TEORI

BAB II DASAR TEORI. 2.1 Pendahuluan

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 2 TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

Penggunaan Kode Huffman dan Kode Aritmatik pada Entropy Coding

STUDI KOMPRESI DATA DENGAN JARINGAN SARAF TIRUAN

1. PENDAHULUAN 1.1. Latar Belakang Masalah

IMPLEMENTASI DAN ANALISIS KINERJA ALGORITMA SHANNON- FANO UNTUK KOMPRESI FILE TEXT

BAB 2 TINJAUAN PUSTAKA

Image Compression. Tujuan Kompresi Image. Teknik kompresi yang diharapkan. Image Compression. Kompresi untuk apa?

TEKNIK KOMPRESI LOSSLESS TEXT

Image Compression. Tujuan Kompresi Image. Teknik kompresi yang diharapkan. Image Compression. Kompresi untuk apa?

ANALISA DAN PERBANDINGAN ALGORITMA RUN LENGTH ENCODING DAN ALGORITMA LZW ( LEMPEL ZIV WECH ) DALAM PEMAMPATAN TEKS

BAB 2 TINJAUAN PUSTAKA. 2.1 Definisi Kompresi Data dan Klasifikasi Algoritma Kompresi Data

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

ANALISIS KOMPRESI DATA TEKNIK LOSSLESS COMPRESSION

BAB 2 LANDASAN TEORI

[TTG4J3] KODING DAN KOMPRESI. Oleh : Ledya Novamizanti Astri Novianty. Prodi S1 Teknik Telekomunikasi Fakultas Teknik Elektro Universitas Telkom

BAB 2 TINJAUAN PUSTAKA

Kata kunci: pohon biner, metode Huffman, metode Kanonik Huffman, encoding, decoding.

PENGANTAR KOMPRESI DATA

BAB 2 LANDASAN TEORI. 2.1 Kompresi Data

Studi Kompresi Data dengan Metode Arithmetic Coding

BAB 2 LANDASAN TEORI

PERBANDINGAN ALGORITMA HUFFMAN DAN ALGORITMA SHANNON-FANO PADA PROSES KOMPRESI BERBAGAI TIPE FILE. Irwan Munandar

Penggunaan Pohon Huffman Sebagai Sarana Kompresi Lossless Data

Image Compression. Kompresi untuk apa?

Kompresi. Definisi Kompresi

BAB 2 TINJAUAN PUSTAKA

BAB III METODE KOMPRESI HUFFMAN DAN DYNAMIC MARKOV COMPRESSION. Kompresi ialah proses pengubahan sekumpulan data menjadi suatu bentuk kode

Penerapan Pengkodean Huffman dalam Pemampatan Data

BAB 2 LANDASAN TEORI

PERANCANGAN APLIKASI KOMPRESI FILE AUDIO DENGAN ALGORITMA ARITMETIC CODING

KOMPRESI DATA DAN TEKS. By : Nurul Adhayanti

BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

1. Pendahuluan. 1.1 Latar Belakang Masalah

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO MULTIMEDIA. Kompresi. Oky Dwi Nurhayati, ST, MT

SISTEM ANALISA PERBANDINGAN UKURAN HASIL KOMPRESI WINZIP DENGAN 7-ZIP MENGGUNAKAN METODE TEMPLATE MATCHING

BAB 1 PENDAHULUAN. Dalam penggunaan sehari-hari data berarti suatu pernyataan yang diterima secara apa

KOMPRESI CITRA MENGGUNAKAN METODE RUN LENGTH ENCODING (RLE) DAN ALGORITMA ARITMETIC CODING

BAB 2 LANDASAN TEORI

PEMAMPATAN TATA TEKS BERBAHASA INDONESIA DENGAN METODE HUFFMAN MENGGUNAKAN PANJANG SIMBOL BERVARIASI

TEKNIK PENGOLAHAN CITRA. Kuliah 13 Kompresi Citra. Indah Susilawati, S.T., M.Eng.

BAB II DASAR TEORI Teknik Kompresi Data

BAB I PENDAHULUAN I-1

BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

~ By : Aprilia Sulistyohati, S.Kom ~

IMPLEMENTASI ALGORITMA ARITHMETIC CODING PADA KOMPRESI FILE AUDIO VIA FTP (FILE TRANSFER PROTOCOL)

Team project 2017 Dony Pratidana S. Hum Bima Agus Setyawan S. IIP

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Informasi dan Coding


BAB 2 LANDASAN TEORI

BAB 2 TINJAUAN PUSTAKA

MULTIMEDIA system. Roni Andarsyah, ST., M.Kom Lecture Series

BAB 2 TINJAUAN PUSTAKA

REPRESENTASI DATA AUDIO dan VIDEO

BAB 2 LANDASAN TEORI

KOMPRESI FILE MENGGUNAKAN ALGORITMA HUFFMAN KANONIK

Teknik Kompresi Citra Menggunakan Metode Huffman

Oleh : Page 1

BAB 2 LANDASAN TEORI

DATA COMPRESSION CODING USING STATIC AND DYNAMIC METHOD OF SHANNON-FANO ALGORITHM

BAB I PENDAHULUAN. Dalam dunia modern sekarang ini kebanyakan aktivitas manusia selalu

BAB I PENDAHULUAN. Dalam bidang teknologi informasi, komunikasi data sangat sering

BAB 3 ANALISIS DAN PERANCANGAN

ANALISIS BEBERAPA TEKNIK CODING RAHMAD FAUZI, ST, MT JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS SUMATERA UTARA BAB I PENDAHULUAN

KOMPRESI TEKS MENGGUNAKAN ALGORITMA DAN POHON HUFFMAN. Nama : Irfan Hanif NIM :

DIGITAL IMAGE CODING. Go green Aldi Burhan H Chandra Mula Fitradi Mardiyah

Perbandingan Algoritma Kompresi Terhadap Objek Citra Menggunakan JAVA

PEMAMPATAN DATA DIGITAL MENGGUNAKAN METODA RUN-LENGTH

>>> Kompresi Data dan Teks <<<

[TTG4J3] KODING DAN KOMPRESI. Oleh : Ledya Novamizanti Astri Novianty. Prodi S1 Teknik Telekomunikasi Fakultas Teknik Elektro Universitas Telkom

STMIK GI MDP. Program Studi Teknik Informatika Skripsi Sarjana Komputer Semester Ganjil Tahun 2010/2011

Penerapan Pohon Biner Huffman Pada Kompresi Citra

PEMAMPATAN CITRA (IMA

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Contoh kebutuhan data selama 1 detik pada layar resolusi 640 x 480 : 640 x 480 = 4800 karakter 8 x 8

BAB 2 TINJAUAN PUSTAKA

UKDW BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB I PENDAHULUAN. dalam storage lebih sedikit. Dalam hal ini dirasakan sangat penting. untuk mengurangi penggunaan memori.

[TTG4J3] KODING DAN KOMPRESI. Oleh : Ledya Novamizanti Astri Novianty. Prodi S1 Teknik Telekomunikasi Fakultas Teknik Elektro Universitas Telkom

ARITHMETIC CODING. Arithmetic Coding

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN 1-1

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Transkripsi:

BAB 2 LANDASAN TEORI 2.1 Kompresi Data Kompresi data sudah ada dalam 20 tahun terakhir ini. Kompresi data memberikan pengaruh yang cukup besar terhadap berbagai bidang studi sekarang ini. Hal ini terbukti bahwa kebutuhan untuk memampatkan data sudah dirasakan di masa lalu, bahkan sebelum kedatangan komputer. Ada banyak metode yang dikenal dalam kompresi data. Masing masing metode memiliki ide yang berbeda beda dengan jenis data yang berbeda serta hasil yang berbeda pula. Akan tetapi semua metode tersebut memiliki prinsip yang sama, yaitu menghilangkan redudancy yang ada dari data asli di dalam file sumber. Dengan demikian, istilah redudancy adalah konsep utama di dalam setiap penelitian pada kompresi data. Kompresi data adalah proses yang dapat mengubah sebuah aliran data masukan (sumber atau data asli) ke dalam aliran data yang lain (keluaran atau data yang dimampatkan) yang memiliki ukuran yang lebih kecil (Salomon, 2007). Kompresi data adalah (dalam bidang ilmu komputer, ilmu pengetahuan dan seni) sebuah penyajian informasi ke dalam bentuk yang lebih sederhana (Pu, 2006). Dalam ilmu komputer dan teori informasi, kompresi data atau source coding adalah proses meng-encode informasi dengan menggunakan lebih sedikit bit dari suatu sumber yang belum di-encode melalui penggunaan skema pengkodean yang spesifik (Data Compression, 2009). Kompresi data sangat populer sekarang ini karena dua alasan yaitu (Salomon, 2007) :

1. Orang orang lebih suka mengumpulkan data. Tidak peduli seberapa besar media penyimpanan yang dimilikinya. Akan tetapi cepat atau lambat akan terjadi overflow. 2. Orang orang benci menunggu waktu yang lama untuk memindahkan data. Misalnya ketika duduk di depan komputer untuk menunggu halaman Web terbuka atau men-download sebuah file. Data dapat dalam bentuk file teks, gambar, suara atau deretan angka. Alasan kenapa kompresi data sangat dibutuhkan karena semakin banyak informasi saat ini yang digunakan dalam bentuk digital dan semakin lama ukuran yang dibutuhkan untuk menyajikan data tersebut semakin besar (Sayood, 2006). Secara garis besar klasifikasi metode kompresi data dapat dilihat pada gambar 2.1 dibawah ini. Data compression Lossless lossy Run Length Entropy Huffman, Arithmetic, Comma Dictionary Lempel Ziv Welch Time Domain Waveform CELP Frequency Domain Synthesis LPC, RPE-LTP Transform Fractal, Wavelet ADPCM, ADM DCT, Sub Band JPEG, MPEG Gambar 2.1 Klasifikasi dari beberapa teknik kompresi data (Sumber : Fauzi, 2009)

Ketika berbicara tentang suatu teknik kompresi atau algoritma kompresi, sebenarnya mengacu pada dua algoritma. Ada algoritma kompresi yaitu mengambil suatu X sebagai masukan dan mengasilkan suatu X c yang memerlukan lebih sedikit bit, dan ada algoritma rekonstruksi yaitu memproses hasil repesentasi kompresi X c untuk menghasilkan rekonstruksi Y. Proses ini dapat dilihat pada gambar 2.2 dibawah ini. Gambar 2.2 Kompresi dan rekonstruksi (Sumber : Pu, 2006) Berdasarkan pada keperluan rekonstruksi, kompresi data dapat dibagi ke dalam dua kelas. Yaitu lossess compression, dimana Y serupa dengan X dan lossy compression, yang secara umum membutuhkan pemampatan jauh lebih tinggi dibandingkan lossess compression tetapi mengizinkan Y untuk berbeda dari X. 2.1.1 Lossless Compression Pada teknik ini tidak ada kehilangan informasi. Jika data dimampatkan secara lossless, data asli dapat direkontruksi kembali sama persis dari data yang telah dimampatkan, dengan kata lain data asli tetap sama sebelum dan sesudah pemampatan. secara umum teknik lossless digunakan untuk penerapan yang tidak bisa mentoleransi setiap perbedaan antara data asli dan data yang telah direkonstruksi. Data berbentuk tulisan misalnya file teks, harus dimampatkan menggunakan teknik lossless, karena kehilangan sebuah karakter saja dapat mengakibatkan kesalapahaman. Lossless

compression disebut juga dengan reversible compression karena data asli bisa dikembalikan dengan sempurna. Gambar 2.3 Lossless compression (Sumber : Pu, 2006) 2.1.2 Lossy Compression Pada teknik ini akan terjadi kehilangan sebagian informasi. Data yang telah dimampatkan dengan teknik ini secara umum tidak bisa direkonstruksi sama persis dari data aslinya. Di dalam banyak penerapan, rekonstruksi yang tepat bukan suatu masalah. Sebagai contoh, ketika sebuah sample suara ditransmisikan, nilai eksak dari setiap sample suara belum tentu diperlukan. Tergantung pada yang memerlukan kualitas suara yang direkonstruksi, sehingga banyaknya jumlah informasi yang hilang di sekitar nilai dari setiap sample dapat ditoleransi. Sama halnya ketika mengamati rekonstruksi suatu sekuensial video, pada faktanya bahwa rekonstruksi yang berbeda dari data asli secara umum bukan terlalu penting sepanjang perbedaan itu tidak mengganggu arti sesungguhnya yang dihasilkan dari video tersebut. Dengan demikian, data multimedia seperti gambar digital, video dan audio lebih mudah dimampatkan dengan teknik lossy karena berhubungan dengan sistem kerja visual manusia. Lossy compression disebut juga irreversible compression karena data asli mustahil untuk dikembalikan seperti semula.

Gambar 2.4 Lossy compression (Sumber : Pu, 2006) 2.1.3 Entropy Istilah entropi pertama sekali digunakan dalam teori informasi yang dikembangkan sekitar tahun 1940 oleh Claude Shannon di laboratorium Bell. Istilah ini dipakai dalam bidang thermodinamika untuk menandai adannya sejumlah gangguan pada sistem fisika. Dalam konteks kompresi data, entropi digunakan untuk merepresentasikan batas bawah (lower bound) dari jumlah rata rata bit per satu nilai input yaitu rata rata panjang codeword yang digunakan untuk mengkodekan input. Input berupa himpunan simbol S = (s 1, s 2, s 3,..., s n ) dengan probabilitas P = (p 1, p 2, p 3,..., p 4 ) yang secara matematis dapat ditulis sebagai berikut. H(P) = n j= 1 p j I(s j ), atau (2.1) H(P) = - n j= 1 p j log p j (2.2) Misalkan terdapat 4 buah simbol dengan probabilitas dari setiap simbol 0.5, 0.25, 0.125, 0.125 maka entropi yang diperoleh adalah H(P) = (0.5, 0.25, 0.125, 0.125) = 0.5 x 1 + 0.25 x 2 + 2 x 0.125 x 3 = 1.75 bit. Dengan kata lain dibutuhkan rata rata 1.75 bit untuk merepresentasikan data tersebut.

Metode entropy coding adalah pengkodean data dengan BPS (Bit Per Simbol) untuk tiap alphabet yang mendekati nilai entropi, karena semakin dekat BPS dari alphabet tersebut dengan nilai entropi semakin efisien pula kode kompresi tersebut (Adityo, 2009). Pada penilitian ini metode entropy coding yang dibahas adalah arithmetic coding. 2.2 Arithmetic Arithmetic coding memiliki sejarah yang sangat penting karena pada saat itu algoritma ini sukses menggantikan Huffman coding selama 25 tahun. Arithmetic coding adalah suatu bagian dari entropy encoding yang mengkonversi suatu data ke dalam bentuk data yang lain dengan lebih sering menggunakan sedikit bit dan jarang menggunakan lebih banyak bit karakter. Teknik pengkodean ini memisahkan pesan masukan ke dalam simbol dan menukar masing masing simbol dengan suatu floating-point. arithmetic coding mengkodekan seluruh pesan ke dalam suatu bilangan pecahan n di mana ( 0.0 = n <1.0) (Arithmetic, 2009). Arithmetic coding memiliki kelebihan terutama ketika memproses kumpulan abjad yang relatif sedikit. Awalnya Arithmetic coding diperkenalkan oleh Shannon, Fano dan Elias. Kemudian dikembangkan oleh Pasco (1976), Rissanene (1976, 1984) dan Langdon (1984). Tujuannya memberikan ide alternatif yang pada saat itu setiap proses pengkodean dilakukan dengan menggantikan setiap simbol masukan dengan suatu codeword (Pu, 2006). Sebagai gantinya, aliran simbol masukan digantikan dengan sebuah angka single floating point. Sehingga semakin panjang dan kompleks pesan yang dikodekan maka semakin banyak bit yang diperlukan untuk keperluan tersebut. Konsep dasar Arithmetic coding adalah menggunakan probabilitas kumulatif dari suatu urutan simbol ke dalam sebuah bilangan yang unik dengan interval [0,1). Notasi [0,1) memiliki arti bahwa semua bilangan real dari 0 sampai 1, termasuk 0 tetapi tidak termasuk 1 atau ditulis dengan 0 x < 1.

Misalkan S = (s 1, s 2,., s n ) adalah kumpulan simbol sumber dengan distribusi probabilitas kemunculan P = (p 1, p 2,., p n ). Subinterval untuk masingmasing perulangan dapat berasal dari setiap simbol menurut probabilitas tersebut. Sebagai contoh, perulangan awal dari [0,1) dapat dibagi ke dalam n interval sebagai berikut : [0, p [p1, p 1 + p 2 ) [p1 + p 2, p 1 + p 2 + p 3 )... [p 1 + p 2 + p 3 +... + p n-1, p 1 + p 2 + p 3 +... + p n-1 + p n ) dimana p1 + p 2 +... + p n = 1 untuk n simbol dalam abjad s 1, s 2,., s n secara berturut turut. Jika simbol pertama yang dibaca adalah ke i dari simbol s i dalam abjad, maka batas kiri dari subinterval low adalah probabilitas kumulatif dari P i = p 1 + p 2 + p 3 +... + p n-1 dan batas kanan high adalah low + P i. 1 ) Panjang dari interval high low kemudian dapat digunakan untuk menghitung satu dari beberapa interval pada perulangan berikutnya : [low, low + (high - low) P 1 ) [low + (high - low) P1, low + (high - low) P 2 )... [low + (high - low) P n-1, low + (high - low) P n ) dimana probabilitas kumulatif seluruhnya adalah Pi = p 1 + p 2 +... + p n = 1. Dengan menganggap suatu pesan sumber dengan kumpulan abjad (s 1,s 2,...,s n ) dan distribusi probabilitasnya (p l, p 2,...,P n ) serta diumpamakan panjang sumber itu adalah N maka dapat dilihat setiap perulangan dari beberapa subinterval pada gambar 2 :

(0) 0 Low 1 High (1) Low High (2) Low High (3) (N) Gambar 2.5 Perulangan setiap interval [low, high) sebanyak N (Sumber : Pu, 2006) Berikut ini algoritma 2.1 untuk encoding dan algoritma 2.2 untuk decoding. Akan digunakan dua variabel low dan high untuk mendefenisikan interval [low, high) (Pu, 2006). Algoritma 2.1 : 1: low 0.0 2: high 1.0 3: while there are still input symbols do 4: get an input symbol s 5: CodeRange high - low 6: high low + CodeRange x high_range(s) 7: low low + CodeRange x low_range(s) 8: end while 9: output low Algoritma 2.2 : 1: get encoded number 2: repeat 3: find symbol whose range covers the encoded number 4: output the symbol 5: CodeRange symbol_high_value - symbol_low_value 6: subtract symbol_low_value from encoded-number 7: divide encoded_number by range 8: until no more symbols

Untuk memahami algoritma diatas maka diberikan contoh sederhana sebagai berikut. Misalkan kata BUKU akan di-encode maka dapat diperoleh probabilitas untuk setiap karakter yang dapat dilihat pada tabel 1. Tabel 2.1 tabel probabilitas untuk kata BUKU Karakter Probabilitas B 1/4 U 2/4 K 1/4 Setelah probabilitas tiap karakter telah diketahui. Tiap karakter akan diberikan range tertentu yang nilainya diantara 0 dan 1, sesuai dengan probabilitas yang ada. Dalam hal ini tidak ada ketentuan pengurutan karakter, asalkan antara encoder dan decoder melakukan hal yang sama. Dari tabel 1 diatas dibentuk tabel 2 berikut. Tabel 2.2 range untuk kata BUKU Karakter Probabilitas Range B 1/4 0.00 0.25 U 2/4 0.25 0.75 K 1/4 0.75 1.00 Dari tabel 2, suatu hal yang perlu dicatat adalah tiap karakter melingkupi range yang disebutkan kecuali bilang yang tertinggi. Jadi karakter K sesungguhnya mempunyai range mulai dari 0.75 sampai 0.9999... Selanjutnya dilakukan proses encoding menggunakan algoritma encoding yang telah disebutkan diatas. Untuk kata BUKU, pertama diambil karakter B. Nilai CodeRange adalah 1.0 0.0 = 1. high_range(b) = 0.25, low_range(b) = 0.00. Kemudian diperoleh nilai High = 0.00 + 1.0 * 0.25 = 0.25 Low = 0.00 + 1.0 * 0.00 = 0.00 Kemudian diambil karakter U. Nilai CodeRange adalah 0.25 0.00 = 0.25. high_range(u) = 0.75, low_range(u) = 0.25. Kemudian diperoleh nilai

High = 0.00 + 0.25 * 0.75 = 0.1875 Low = 0.00 + 0.25 * 0.25 = 0.0625 Dan seterusnya yang diringkas pada tabel 3 berikut. Tabel 2.3 proses encoding pada kata BUKU Karakter Low High CodeRange 0.00 1.00 B 0.00 0.25 1.00 U 0.0625 0.1875 0.25 K 0.15625 0.1875 0.125 U 0.1640625 0.1796875 0.03125 Perulangan untuk setiap interval dapat dilihat pada gambar 2.6 berikut. 0,0 1,0 0,0 B 0,25 1,0 0,0 0,25 0,0625 U 0,1875 0,0625 0,15625 K 0,1875 0,15625 0.1640625 U 0.1796875 0,1875 0.1640625 0.1796875 Gambar 2.6 Perulangan setiap interval untuk kata BUKU

Dari proses tersebut didapat nilai low = 0.1640625. Nilai inilah yang direpresentasikan untuk membawa pesan BUKU. Dalam hal ini simbol akhir sebuah pesan dapat menggunakan simbol khusus misalnya EOM (End Of Message) atau dengan menyertakan panjang pesan pada waktu encoding. Selanjutnya apabila pesan tersebut akan di-decode maka digunakan algoritma decoding yang telah disebutkan diatas. Misalkan untuk kata BUKU akan dilakukan decoding. Pertama sekali diperoleh encoded number 0.1640625 dengan karakter awal B. Maka proses decoding untuk karakter B sebagai berikut. Low = 0.00 High = 0.25 CodeRange = 0.25 0.00 = 0.25 Encoded_number = 0.1640625 0.00 = 0.1640625 Encoded_number = 0.1640625 / 0.25 = 0.65625 Proses decoding dilakukan seterusnya sampai tidak ada lagi simbol / karakter. Proses decoding diringkas pada tabel 4 berikut. Tabel 2.4 proses decoding untuk kata BUKU encoded number karakter low high code range 0.65625 B 0.00 0.25 0.25 0.8125 U 0.25 0.75 0.5 0.25 K 0.75 1.0 0.25 0 U 0.25 0.75 0.5 2.3 Text File Text file (disebut juga dengan flat file) adalah salah satu jenis file komputer yang tersusun dalam suatu urutan baris (Text File, 2009). Data teks biasanya diwakili oleh 8 bit kode ASCII (atau EBCDIC) (Pu, 2006). Akhir dari sebuah file teks sering ditandai dengan penempatan satu atau lebih karakter karakter khusus yang dikenal dengan tanda end-of-file setelah baris terakhir di suatu file teks. File teks biasanya mempunyai jenis MIME (Multipurpose Internet Mail Extension) "text/plain", biasanya sebagai

informasi tambahan yang menandakan suatu pengkodean. pada sistem operasi Windows, suatu file dikenal sebagai suatu file teks jika memiliki extention misalnya txt, rtf, doc dan lain - lain. Bagaimanapun, banyak akhiran lainnya digunakan untuk file teks dengan tujuan tujuan yang spesifik. Sebagai contoh, source code program komputer biasanya dalam bentuk file teks yang mempunyai akhiran nama file tertentu yang menandakan jenis bahasa pemrograman yang digunakan. Sedangkan pada penelitian ini jenis file teks yang digunakan adalah file teks dengan extention txt, rtf, doc. 2.4 Bahasa pemrograman C++ Pada awalnya bahasa C++ dikembangkan dari bahasa C dimana bahasa C merupakan pengembangan B. Bahasa B ditulis oleh Ken Thompson pada tahun 1970 sedangkan bahasa C untuk pertama kalinya ditulis oleh Brian W. Kernighan dan Denies M. Ricthie pada tahun 1972. Bahasa C pada awalnya dioperasikan di atas sistem operasi UNIX.Bahasa C merupakan bahasa pemrograman tingkat menengah yang berada di antara bahasa tingkat rendah dan bahasa tingkat tinggi yang biasa disebut dengan bahasa assembly. Bahasa C mempunyai banyak kemamapuan diantaranya untuk membuat perangkat lunak, misalnya dbase, Word Star dan lain lain. Pada tahun 1980 seorang ahli yang bernama Bjarne Strouptrup mengembangkan beberapa hal dari bahasa C yang kemudian dinamakan C with Classes yang pada tahun 1983 berganti nama menjadi C++ (Frieyadie, 2006). Pada C++ ini terdapat tambahan Object Oriented Programming (OOP) yang tujuan utamanya adalah membantu dalam membuat dan mengelola program yang besar dan kompleks. Kebanyakan pakar setuju bahwa OOP dan C++ dapat mengurangi kekompleksitasan, terutama pada program yang besar yang terdiri dari 10.000 baris atau lebih (Kadir, 2003). Hal ini didasarkan kenyataan bahwa kode yang ditulis dengan C++ lebih mudah untuk digunakan kembali pada program program lain (reusability).

C diambil sebagai landasan dari C++, mengingat bahasa C yang memungkinkan diterapkan pada berbagai mesin dari PC hingga mainframe serta pada berbagai sistem operasi (DOS, UNIX dan sebagainya). C++ C Sifat C tercakup pada C++ Gambar 2.7 C++ mencakup C (sumber : Kadir, 2003) Keistimewaan yang sangat berarti pada C++ adalah karena bahasa ini mendukung pemrograman yang berorientasi objek (PBO). Tetapi sekali lagi C++ hanyalah bahasa yang bersifat hybrid bukan bahsa murni yang berorientasi objek. Karena itu pemrogram C pada tahap awal dapat berpindah ke C++ setahap demi setahap.