AŬTOMATA TEKSTOFORMATIGO

    La altkvalitaj tekstoprilaboraj programoj, kiel WORDSTAR, disponas pri tre agrabla funkcio: ili mem aranĝas ĉiun linion tiel, ke la kolumno estas bloka, do la dekstra rando de ĉiuj linioj estas egala: Disigo de vortoj kutime ne plu estas necesa, ĉar vortoj, kiuj estas tro longaj kaj ne komplete estas meteblaj en la linion, aŭtomate estas skribataj en la sekvan linion.

    La ĉi-kuna programo ĉiulinie enigas kaj formatigas la tekston. La algoritmo traserĉas de la lasta karaktro reen la tekston. Se ĝi trovas spaceton, ĝi aldonas unu plian, ĝis la linio havas la deziratan longecon. La flago F estas necesa por detekti unuopan vorton. Sen la flago unuopa vorto (do enigita karaktraro sen spaceto) iras en senfina maŝo laŭ la sinsekvo: 140- (150 - 160 - 190 -) 200.

    La programo:

      100 INPUT "LONGO DE LINIO:",ZL
      110 INPUT "TEKSTO:",Z$
      120 L = LEN (Z$)
      130 F = O
      140 FOR J = L TO 1 STEP - 1
      150 IF ZL L THEN 300
      160 IF MID$ (Z$,J,1) " "THEN 190
      165 F = 1
      170 Z$ = LEFT$ (Z$,J) +" "+RIGHT$ (Z$,L-J)
      180 L = L+1
      190 NEXT J
      200 IF F=1 THEN 140
      300 PRINT Z$

    Necesas rimarkigi, ke eĉ tiu eta programo devigas atenti eblajn specifaĵojn de BASIC dialektoj:

    • La funkcio RIGHT$ (A, X) kutime tranĉas la lastajn X-karaktrojn el la ĉeno A$. Iuj dialektoj (laŭ mia memoro ABC 80 de Luxor) generas ĉenon ekde la X-a pozicio, do RIGHT$ ("ESPERANTO", 3) estiĝas "ERANTO" anstataŭ "NTO".
    • Komo en la enigata ĉeno liveras erarmesaĝon ("Redo" ĉe MBASIC de Microsoft, "Estra ignored ĉe HC 900, la lasta akceptas la ĉenon ĝis antaŭ la komo).
    • Se la karaktraro finiĝas per spaceto (do "BASIC " anstataŭ "BASIC"), iuj dialektoj ignoras la spaceton (MBASIC), dum aliaj (HC 900) ĝin prilaboras, do en la formatigo ĝin multobligas.

     

    Michael LENNARTZ

    ---

    Fonto: Revuo Fokuso, n-ro 1987/1 p. 41.

    STEB: http://www.eventoj.hu


    Al la starta pago de STEB Reen al la antaŭa paĝo!