Kembangkanlah program Text
Editor sederhana yang telah anda buat pada tugas
sebelumnya. Kali ini anda diminta untuk
mengimplementasikan ADT List dengan implementasi berupa Doubly-Linked
List. Anda tetap harus membuat multilevel list di
mana node-node pada list utama melambangkan baris-baris
teks dan memiliki pointer ke suatu list yang melambangkan
huruf-huruf pada suatu baris teks. Sebagai contoh, sebuah node dari
Doubly-Linked List yang anda kembangkan dapat memiliki
bentuk sebagai berikut:

Tugas anda adalah untuk
mengembangkan program yang telah anda buat pada tugas
sebelumnya, dengan menambahkan:
- Gerakan kursor ke
atas, bawah, kiri, dan kanan, dengan tombol
panah. Anda harus memperhatikan kasus berikut:
- Jika tombol panah
kiri ditekan padahal kursor sudah di awal baris,
kursor diam saja
- Jika tombol panah
kanan ditekan padahal kursor sudah di akhir
baris, kursor diam saja
- Jika pada saat kursor
sedang berada di kolom n user menekan tombol
atas/bawah, dan ternyata panjang baris di
atas/bawah itu kurang dari n, kursor dipindahkan
ke akhir baris di atas/bawah tersebut
- Tampilan kursor
berupa inverse dari karakter biasa.
Artinya karakter pada kursor berupa huruf hitam
di atas latar belakang putih, mis:

- Kemampuan untuk
melakukan scrolling, yaitu
pengubahan baris-baris yang tampak di layar jika
user mencoba memindahkan kursor ke baris yang
tidak tampil di layar, mis:
- Jika tombol panah
atas ditekan padahal kursor ada di baris teratas
di layar, maka baris-baris di layar harus
bergeser ke bawah satu agar baris yang baru dapat
ditampilkan di bagian atas layar
- Jika tombol panah
bawah ditekan padahal kursor ada di baris
terbawah di layar, maka baris-baris di layar
harus bergeser ke atas satu agar baris yang baru
dapat ditampilkan di bagian bawah layar
- Jika user mencoba
melakukan operasi Go to Start of Text, Go
to End of Text, Go down n lines,
ataupun Go up n lines (lihat no. 5 di
bawah), maka anda harus melakukan penggeseran
baris secukupnya agar posisi kursor yang baru
dapat ditampilkan di layar
- Menambahkan operasi: Back
n characters (perintah: back)
- Memundurkan kursor n
karakter (ke kiri) dari posisinya yang sekarang.
Jika belum sampai mundur n karakter kursor sudah
mencapai awal baris, kursor diletakkan di
karakter pertama. Program anda harus meminta user
untuk memasukkan jumlah n.
- Menambahkan operasi: Go
up n lines (perintah: up)
- Menaikkan kursor n
karakter (ke atas) dari posisinya yang sekarang,
dan meletakkannya di karakter pertama. Jika belum
sampai naik n baris kursor sudah mencapai baris
pertama, kursor harus diletakkan di karakter
pertama dari baris pertama. Program anda harus
meminta user untuk memasukkan jumlah n.
- Menambahkan operasi: Insert
Before (perintah:ins bef)
Sama dengan perintah Insert
Characters (ins char), tetapi bedanya
penyisipan dimulai pada posisi di mana kursor
berada, dan bukan pada posisi sesudah kursor.
(seharusnya) Dengan implementasi Doubly-Linked
List, operasi ini menjadi lebih mudah.
Beberapa di antara
anda-anda sekalian sudah mengimplementasikan
fungsi-fungsi di atas pada tugas sebelumnya. Selamat,
anda tidak perlu terlalu repot lagi sekarang J
Di samping hal-hal di
atas, anda tetap harus mengimplementasikan
operasi-operasi pada tugas 1A, seperti: Insert
Line/Characters, Delete Line/Characters, pemindahan
kursor, dan operasi File (Read/Write).
Satu hal lagi: gunakanlah
kaidah ADT yang baik, dengan cara membuat fungsi-fungsi
ADT beserta interface-nya, lalu fungsi-fungsi manipulasi
tampilan, penambahan/pengurangan teks, perpindahan
kursor, dan operasi file tinggal menggunakan interface
tersebut, tanpa harus turun sampai ke tingkat
implementasi pointer. Perhatikan juga modularitas program
anda.
Selamat mengerjakan
tugas!
|