Buatlah sebuah program Text
Editor yang sederhana menggunakan suatu
multilevel-linked-list ("list of list").
Node-node pada linked-list utama melambangkan baris-baris
teks, dan memiliki pointer ke uatu linked-list yang
melambangkan suatu baris teks. Pada masing-masing node
dari list ini, disimpanlah sebuah karakter ASCII. Sebagai contoh, representasi
linked-list sebagai berikut:

akan menghasilkan teks
sebagai berikut:
baris 0: Struktur
baris 1: Data
baris 2:
baris 3: 97
OK!
Anda harus mengenal konsep
kursor, yaitu penanda di mana pemakai sedang
menyunting teks. Misalkan, untuk teks di atas, jika
kursor sedang berada di karakter K pada kata OK, maka dikatakan kursor ada di posisi
baris 3, kolom 4. Jika dilakukan penyisipan
karakter-karakter E dan H pada saat itu, maka baris 3 akan
menjadi: 97
OKEH! Semua
penghitungan posisi baris dan kolom dimulai dari 0.
User menggunakan program
anda dengan memasukkan perintah-perintah di suatu command-line
dengan prompt berupa karakter >.
Operasi-operasi yang harus
dapat ditangani oleh program anda adalah:
- Insert Line
(perintah: insline)
Menyisipkan baris baru sesudah baris di mana
kursor sedang berada. Program anda harus meminta
user untuk memasukkan baris teks yang mau
disisipkan.
- Insert Characters
(perintah: inschar)
Menyisipkan seuntaian karakter sesudah karakter
di mana kursor sedang berada. Program anda harus
meminta user untuk memasukkan teks yang mau
disisipkan.
- Delete Line (perintah:
delline)
Menghapus baris di mana kursor sedang berada, dan
memindahkan kursor ke awal baris berikutnya.
- Delete Characters (perintah:
delchar)
Menghapus n buah karakter, mulai dari karakter di
mana kursor sedang berada. Program anda harus
meminta user untuk memasukkan jumlah n karakter
yang mau dihapus.
- Go to End of Line (perintah:
endline)
Memindahkan kursor ke karakter terakhir pada
baris di mana kursor sedang berada.
- Go to End of Text (perintah:
endtext)
Memindahkan kursor ke karakter terakhir dari
baris terakhir
- Go to Start of
Line (perintah: stline)
Memindahkan kursor ke karakter pertama pada baris
di mana kursor sedang berada.
- Go to Start of
Text (perintah: sttext)
Memindahkan kursor ke karakter pertama dari baris
pertama
- Forward n
characters (perintah: fwd)
Memajukan kursor n karakter (ke kanan) dari
posisinya yang sekarang. Jika belum sampai maju n
karakter kursor sudah mencapai akhir baris,
kursor harus diletakkan di karakter terakhir.
Program anda harus meminta user untuk memasukkan
jumlah n.
- Go down n lines (perintah:
dwn)
Menurunkan kursor n karakter (ke bawah) dari
posisinya yang sekarang, dan meletakkannya di
karakter pertama. Jika belum sampai turun n
karakter kursor sudah mencapai baris terakhir,
kursor harus diletakkan di karakter pertama dari
baris terakhir. Program anda harus meminta user
untuk memasukkan jumlah n.
Contoh-contoh untuk
masing-masing operasi di atas akan diberikan oleh Asisten
/ Mentor anda.
Di samping itu, program
anda harus dapat membaca dan menulis berkas teks ASCII
dengan ketentuan sbb:
- Read File
(perintah: rdfile)
Setiap untaian karakter ASCII yang diakhiri oleh
karakter khusus \0 menjadi satu baris. Program
anda harus meminta user untuk memasukkan nama
file yang mau dibaca.
- Write File
(perintah: wrfile)
Setiap baris ditulis sebagai seuntaian karakter
ASCII yang diakhiri oleh karakter khusus \0. Program anda harus
meminta user untuk memasukkan nama file yang mau
disimpan.
Terakhir, sesudah selesai
menggunakan program Text Editor anda, user harus bisa
keluar ke Operating System dengan memasukkan perintah
exit.
Untuk kemudahan anda
sendiri, usahakanlah program anda di-coding dengan
modularitas yang baik, dengan mengindahkan kaidah
abstraksi. Mis: mengimplementasikan fungsi-fungsi ADT
List.
Mengingat dekatnya jadwal
pengumpulan tugas, anda disarankan untuk mengerjakan
tugas ini secepatnya!
Selamat mengerjakan
|