Tugas 1B
Struktur Data dan Algoritme
Tanggal Pengumpulan Tugas: Senin, 9 Maret 1998

Text Editor & Doubly-Linked List

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:

  1. 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
  1. Tampilan kursor berupa ‘inverse’ dari karakter biasa. Artinya karakter pada kursor berupa huruf hitam di atas latar belakang putih, mis:

  2. 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
  1. Menambahkan operasi: Back n characters (perintah: back)
  2. 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.
  3. Menambahkan operasi: Go up n lines (perintah: up)
  4. 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.
  5. 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!

    klik di sini untuk download file Microsoft Word dari tugas 1B (tugas1b.doc)
    klik di sini untuk kembali ke halaman utama...