Tugas 1A
Struktur Data dan Algoritme
Tanggal Pengumpulan Tugas: Senin, 23 Februari 1998

Text Editor Sederhana

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

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