1 / 18

情報科学1( G1) # 1 1

情報科学1( G1) # 1 1. テキスト編集のプログラミング エディタ プログラムの 作成 (続き). エディタ. コンピュータ との対話 Computer : Command: User : i ( 文字列を挿入せよ) Computer : Insert What? User : abcdaefgh Computer : *abcdaefgh (ポインタの位置を*で表す) Computer : Command: User : p ( ポインタの位置を合わせよ)

Download Presentation

情報科学1( G1) # 1 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 情報科学1(G1)#11 • テキスト編集のプログラミング • エディタ プログラムの作成(続き)

  2. エディタ コンピュータとの対話 Computer : Command: User : i (文字列を挿入せよ) Computer : Insert What? User : abcdaefgh Computer : *abcdaefgh (ポインタの位置を*で表す) Computer : Command: User : p (ポインタの位置を合わせよ) Computer : Point to What? User : aef Computer : abcd*aefgh

  3. ポインタ:変更が行なわれる位置を示す目印 2番目のaにポインタをあわせる. abcdaefgh | ポインタの直前に'bbb'を挿入する. abcdbbbaefgh | ポインタの場所から4文字を削除する. abcdefgh |

  4. 繰り返し while文 • while条件 do文 • (「条件」が成立する時,「文」を実行)を繰り返し行なう. • 成立しない場合は,次の文へ

  5. エディタプログラムの作成 繰り返しコマンドを受け付けるようにする. 0.‘Enter Editor.’と出力する. 1.単語‘Command:’を出力する. 2.ユーザのコマンドを入力する. 3.もしコマンドが ‘q‘ ならエディタを終了する. 4.もしコマンドが ‘i’ ならば,挿入を実行する. 5.もしコマンドが ‘p’ ならば,ポインタの移動を実行する. 6.もしコマンドが.... (以下省略) ……… N. 1.へもどる.

  6. エディタプログラムの作成 writeln('Enter Editor.'); text := ''; ptr := 0; command := ''; while command <>'q' do begin writeln('Command:'); readln(command); if command = 'i' then begin 挿入を実行する end; ....... end; writeln('Exit Editor');

  7. エディタプログラムの作成 writeln('Enter Editor.'); text := ''; ptr := 1; command := ''; while command <>'q' do begin writeln('Command:'); readln(command); if command = 'i' then begin 挿入を実行する end; ....... end; writeln('Exit Editor'); textの初期値は長さ0の文字列 pointerの初期値は文字列の先頭 commandの初期値は長さ0の文字列

  8. コマンド • iコマンド文字を挿入する • pコマンド ポインタの移動 • dコマンド 削除する • cコマンド 変更する • sコマンド 空白を挿入する • hコマンド • plコマンド

  9. i コマンド(改訂版) begin writeln('Insert what?'); readln(new); text := copy(text,1,ptr-1)+new +copy(text,ptr,length(text)-ptr+1); writeln(text); end; このアルゴリズム/コードではポインタ*が出力に含まれない. 出力する文字列をpformとする.

  10. i コマンド(改訂版) • 'Insert What?'と表示する • 文字列を入力し,それを new に記憶する. • text内のポインタの左側までの文字列,newの文字列,text内の残りの文字列が続く文字列を構成し,textにコピーする. • ポインタを合わせた文字のすぐ左に'*'を含んだ文字列を作成し,pformに記憶する. • pformを出力する.

  11. i コマンド(改訂版) begin writeln('Insert what?'); readln(new); text := copy(text,1,ptr-1)+new +copy(text,ptr,length(text)-ptr+1); pform := copy(text,1,ptr-1)+’*’+ +copy(text,ptr,length(text)-ptr+1); writeln(pform); end;

  12. p コマンド ポインタの移動 • Point to what? と出力する. • 文字列を入力し target に記憶する. • targetが文字列text内に現れた最初の位置をptrに記憶する. • ポインタをあわせた文字の直前に*のついた文字列を作成し表示する.

  13. d コマンド 削除する • Delete how many characters. と出力する. • 削除する文字数を入力する.(nchar) • textのポインタの位置から入力した文字数を削除する. • ポインタをあわせた文字の直前に*のついた文字列を作成し表示する.

  14. c コマンド 変更する • Change how many characters. と出力する. • 文字数を入力する.(nchar) • To what? と出力する. • 変更する文字列(new)を入力する. • textのポインタの位置からnchar文字をnewに変更した文字列を新たなtextとする. • ポインタをあわせた文字の直前に*のついた文字列を作成し表示する.

  15. s コマンド 空白を挿入する • How many SPACEs? と出力する. • 文字数を入力する.(nchar) • textのポインタの位置にnchar文字の空白を追加する. • ポインタをあわせた文字の直前に*のついた文字列を作成し表示する.

  16. h コマンド • コマンドの説明を表示. plコマンド  • 文字列の最後にポインタを合わせる

  17. 新たなコマンドをつくる. • コマンドのアルゴリズムを考える. • 入力した値が適切なものでない場合,動作がおかしくならないか,を考える. • 必要に応じて,アルゴリズムを変更する. • プログラムを書く.

  18. 入力した値が適切なものでない場合? • 例)整数の値を入力 • 0または正の値を想定 • 負の値が入力されたらどうする? • 負の値が入力されたらどうする?

More Related