(since 2006/12)(更新 2009/07/12)

TNO:メール・マガジン[CASLII]サンプル3

©Copyright 2006,2009 小野智章(小野情報設計)
無断転載を禁止します。
情報系/IT系の広告を掲載しています。(広告一覧)
まぐまぐ版の、 CASLII有料メール・マガジンの、サンプル誌。
各月5回配信の内、第3回相当分。

メール・マガジンの説明

各月第3回分の主な内容。
「プログラムの改良」を含むことがあります。

サンプル誌

配信メールのサンプルです。
図表などは、等角フォントを前提としています。
個々のメールやテーマを区別するための識別情報は、 変更になる可能性があります。

各月第3回相当分
(各回の内容は、サンプル内の記述を参照して下さい。)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      TNO2 CASLII試験対策

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
著作権は、小野智章(小野情報設計)が保有します。
お客様ご本人の利用のため以外の複写・複製や
第三者への公開、配布、譲渡は禁止します。

小野智章(小野情報設計)
  試験情報 http://ww3.tiki.ne.jp/~tno2/shikaku.htm
  登録解除 http://ww3.tiki.ne.jp/~tno2/mag/mag.htm
  連絡先   http://ww3.tiki.ne.jp/~tno2/profile/mail.htm
  マイページ(解除、メール・アドレスの変更等)
           https://mypage.mag2.com/Welcome.do
-------------------------------------------
テーマ記号;A9
テーマ;文字列連結
テーマ分類;文字列複写-2

テーマ発行番号;3
発行;2005年5月
メール番号;3-3
-------------------------------------------
[処理全体]
RS.作業用レジスタの内容の退避
MP-1.前部分文字列の終わりの次の位置を、
(移動先アドレスとしての)GR3へ格納する。
MP-1-1.前部分の文字列の先頭アドレスを、GR3に格納。
MP-1-2.前部分文字列の文字数を、GR3に加算。
MP-2.GR3へ、後部分文字列をコピー。
MP-2-1.後部分文字列の文字数を、(コピー文字数としての)GR5に格納。
中略
MP-3-3.GR5を、連結後の文字数に格納。
RR.作業用レジスタの内容の復旧
FN.終了
-------------------------------------------
[フローチャート全体]
              / ̄\
             (start )
              \__/
          ┌──┴───┐
          │レジスタ退避│
          └──┬───┘
┌───────┴────────┐
│GR3←前部分文字列の先頭アドレス │
└───────┬────────┘
中略
┌───────┴───────┐
│GR5←GR5+後部分文字列の文字数│
└───────┬───────┘
      ┌────┴─────┐
      │連結後の文字数←GR5 │
      └────┬─────┘
          ┌──┴───┐
          │レジスタ復旧│
          └──┬───┘
              / ̄\
             ( end  )
              \__/
-------------------------------------------
[プログラム全体]
RS.作業用レジスタの内容の退避
!RPUSH
MP.主要処理
MP-1.前部分文字列の終わりの次の位置を、移動先アドレスとする。
MP-1-1.前部分文字列の先頭アドレスを、移動先アドレスに格納。
!LAD GR3,1,GR1
MP-1-2.前部分文字列の文字数を、移動先アドレスに加算。
!ADDA GR3,0,GR1
MP-2.GR3へ、後部分文字列をコピー。
MP-2-1.後部分文字列の文字数を、(コピー文字数としての)GR5に格納。
!LD GR5,0,GR2
MP-2-2.(移動元アドレスとしての)GR4へ、後部分文字列のアドレスを格納。
!LAD GR4,1,GR2
中略
MP-3-2.後部分文字列の文字数を、GR5に加算。
!ADDA GR5,0,GR2
MP-3-3.GR5を、連結後の文字数に格納。
!ST GR5,0,GR1
RR.作業用レジスタの内容の復旧
!RPOP
FN.終了
!RET
-------------------------------------------
[プログラム全体-清書]
ラベル等を適切に設定した例です。
又、適宜コメントを付け加えています。

テスト用ドライバの例も、
小文字で示して、加えています。
Rookで実際に動かして、動作試験を行ってみましょう。
2つの文字列を入力すると、連結した文字列が出力されます。
!!Rookにはリンク機能が無いため、
!!清書したプログラムの先頭2行は書換えている。

sample  start
        in      str1,len1
        in      str2,len2
        lad     gr1,len1
        lad     gr2,len2
        call    strcat
        out     str1,len1
        ret
len1    ds      1
str1    ds      256
len2    ds      1
str2    ds      256
STRCAT  RPUSH
        LAD     GR3,1,GR1       ;前文字列の先頭
        ADDA    GR3,0,GR1       ;コピー先のアドレス
中略
        ADDA    GR5,0,GR2       ;後の文字数
        ST      GR5,0,GR1       ;新文字数
        RPOP
        RET
        END
-------------------------------------------
[テスト・データの例]
上記ドライバを使用する場合は、テスト毎に2つの文字列をキー入力します。
1回のテスト毎に終了するので、Rookでは、RestartとRunを繰返して下さい。

!!典型的なデータは、プログラムの基本動作の確認に使います。
test1
test2
!!エラーや例外となるデータ(或いはデータが無い場合のテスト)は、必要です。
!!2つの文字列の一方、又は両方が空行
test1


test2


!!限界値として、通常は、文字数の上限のテストが必要です。
!!この副プログラムでは、限界は無いことになっています。
!!この他のテスト用データも、自分で考えてみましょう。
-------------------------------------------
[擬似言語]
試験に出題される擬似言語で、表現してみましょう。
(実際の試験では、細部の形式が変更になる場合もあります。)
尚、擬似言語に合せて、一部の処理を変更しています。

!!ポインタ型とは、データが格納されているアドレスを指すデータ形式です。
!!又、「--GR5」は、GR5の内容を−1した後、GR5の値を使用します。
!!「GR5--」とすれば、判断に使用するGR5の値を確保した後、
!!GR5の内容を−1します。

[擬似言語-プログラム]
○STRCAT(ポインタ型:GR1,ポインタ型:GR2)
○ポインタ型:GR3,GR4
○整数型:GR5
・GR3←GR1+1+(GR1)
・GR5←(GR2)
・GR4←GR2+1
■--GR5>=0
│・(GR3)←(GR4)
│・GR4←GR4+1
│・GR3←GR3+1
■
・(GR1)←(GR1)+(GR2)
-------------------------------------------
[穴埋め問題について]
プログラムの一部を空欄にした、穴埋め問題を解いてみましょう。
実際の試験では選択肢から選べば良いのですが、
ここでは自分で命令を考えて下さい。
別解がある場合は、試験の選択肢にどの別解が出るかは解らないので、
別解も予想出来る様にしましょう。

問題を解くには、アルゴリズムを理解しておくと良いです。
穴埋め問題のプログラムの流れを理解するため、
穴埋め作業の前に、プログラムからフローチャートを作って見てください。
次回掲載する解法・解答の解説では、
流れの概要が判っているものとして、フローチャートの作成は省略します。

又「プログラムの説明」を良く読むべきです。
そこで「プログラムの説明」も再掲しておきます。
-------------------------------------------
[穴埋め問題]-1
「プログラムの説明」を読んで、プログラム中の空欄を埋めよ。
プログラムの各行の先頭には、各行を区別するため、行番号を加えてある。

[プログラムの説明]
文字列に別の文字列を連結して、
1つの文字列にする副プログラムSTRCATである。

1.文字列は、主記憶上に格納された次の様なデータ列の、
先頭アドレスで指定される。

データ列
┌───┬────┬────┬────┬…
│文字数│1文字目│2文字目│3文字目│…  ;各1語
└───┴────┴────┴────┴…

2.連結される前部分の文字列はGR1で、後部分の文字列はGR2で与えられる。
3.結果の文字列は、
GR1で指定される前部分の文字列と同じ領域に格納された形で得られる。
4.得られる文字列が格納される領域サイズは、
十分に用意されているものとする。
5.全ての汎用レジスタは、内容を保存する。

[プログラム]
 1:STRCAT  START
 2:        [ a ]
 3:        [ b ]                   ;前文字列の先頭
 4:        ADDA    GR3,0,GR1       ;コピー先のアドレス
 5:        [ c ]                   ;コピー文字数
 6:        LAD     GR4,1,GR2       ;コピー元のアドレス
 7:LOOP    SUBA    GR5,=1
 8:        JMI     FIN             ;コピー文字数が残っている
 9:        [ d ]                   ;コピー元の文字
10:        ST      GR6,0,GR3       ;コピー先へ格納
11:        [ e ]
12:        [ f ]
13:        JUMP    LOOP
14:FIN     LD      GR5,0,GR1       ;前の文字数
15:        [ g ]                   ;後の文字数
16:        ST      GR5,0,GR1       ;新文字数
17:        [ h ]
18:        RET
19:        END

次のバナーから申込ページへ移動して、申込んでください。
まぐまぐバナー

他の回のサンプル。
概要と第1回分
第2回分
第3回分
第4回分
第5回分

学習室
トップ・ページへ

お問い合せ等、お待ちしております。
小野智章(小野情報設計) 
Mail連絡先