コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
bはかせ ◆fgfPl6qLuzIU
2018/1/22 22:14
質問
SHIFT とかの文字列参照型って
どういうことですかね?
SHIFTを文字列変数にも同じように使えるのですか?
この(画像)INC命令内の捕捉説明っていうのを見ても
あまり意味がわかりませんでした...

コメント

アバター
bはかせ 2018/1/22 22:17 ◆fgfPl6qLuzIU
SHIFTと同じような処理をしてくれて
かつ文字列変数にも対応してる命令ないかなと
探しているとこれが気になりました
文字列参照型って何なのか教えてください
アバター
はる 2018/1/22 22:38 ◆75Vh4SY8TdKS
試した所、同じように使えました。


例えば、

A$="!#$%&"
?SHIFT(A$)
?A$

とすると、

!
#$%&

とコンソールに表示されます。
アバター
しんいち 2018/1/22 22:52 ◆lHy.hAWXbthn
参照型は配列に対して有効で、文字列変数も配列と同じように扱うことができるので、文字列変数に対してもSHIFT等ができるようになってるんですね。

それで、参照型というのは
A$="HALLO"
B$=A$
とすると、A$とB$は同じ"HALLO"を指してるんですね(当たり前のことを言ってるようですが)。このときA$[1]="E"とすると、?A$,B$はHELLO HELLOと出力されます。A$しか変えていないはずなのにB$も変わるのは、それがつまりA$とB$が同じ"HALLO"を指していたと言うことです。

一方、
A$="HALLO"
B$="HALLO"
とした場合、A$とB$は違う"HALLO"を指しています。
A$[1]="E"
?A$,B$
とすると、HELLO HALLOと出力されます。

このように、同じところを指すことができる、中身ではなく指すところ自体を代入することができるのが、参照型です。
#分かりやすく説明できたか自信ないです^^;
アバター
キルル2 2018/1/22 23:07 ◆rGE712Ruejv7
メモリっていうのがあります
全ての情報はメモリに保持されると考えてください
さてここで、変数Aを作ります。変数Aはメモリ上のnの位置にあるとします
このとき、任意の位置の数値を書き換えることができたら?
nの位置にある数値を書き換えれば、変数Aの値も変わるのです
変数Aはnという情報を持っていて、PRINTなどが実行されたときに、nの位置にある情報を持ってくる(参照する)からです
これと同じことを文字列についてもやるのです
アバター
bはかせ 2018/1/22 23:40 ◆fgfPl6qLuzIU
SHIFTが文字列に使えないと思っていたのは
僕がSHIFTをLEFT$のような使い方で
使ってしまっていたからでした
わざわざ試してくださってありがとうございます。

文字列参照型についても詳しい説明ありがとうございます
自分も画像のようにすると
「BCDE」とふたつ表示されました
イコールで結べばどちらも共通するようになるんですね
プログラムの動き方がまた少し分かった気がします
アバター
こういち 2018/1/23 20:58 ◆ou0jbJnEJ0Kb
この参照渡しってのはDEFの引数として渡すときも起ります。
DEF FUNC A
 A=A+1
END
VAR A
FUNC A
とやってもAは書き換わりませんが、
DEF FILLM A[]
 VAR I
 FOR I=0 TO LEN(A)-1
  A[i]=-1
 NEXT I
END
DIM A[10]
FILL0 A
とやると
Aの中身が書き換わります。
これは前のやつは変数の中身のコピーを渡してて(値渡しと言います)後者は配列の住所を渡してるからです。

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -