HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
1009
スリナif文の条件文の変数等について7解決


スリナ

リンク

2024/10/9(Wed) 16:44:20|NO.102354

hspを学んでいるのですが、if文の条件文が 変数のみ な場合や、 変数(cnt) 
といった場合のものはどういった意味を持つのでしょうか?



この記事に返信する


ねんねこ

リンク

2024/10/9(Wed) 16:55:16|NO.102355

if文の条件文が変数のみの場合の場合は、値が正の値化どうかを判定しています。
変数(cnt)は配列の列挙です。



窓月らら

リンク

2024/10/9(Wed) 18:08:03|NO.102356

if は 0かそれ以外かで判定しています。

a=1
if a { mes "aは0以外です。" }

a=2 でも結果は同じです。a=0 の場合はmesが実行されません。

a=2
if a=2 { mes "aは2です。" }
mes (a=2)

a=2 が真なら1、負なら0になります。



窓月らら

リンク

2024/10/9(Wed) 18:19:17|NO.102357

> a=2 が真なら1、負なら0になります。
✗負
〇偽



スリナ

リンク

2024/10/10(Thu) 10:03:22|NO.102364

配列の列挙とは何でしょうか?
なんとなくのイメージしか掴めていないので説明をお願いします。



正造

リンク

2024/10/10(Thu) 12:35:58|NO.102367

どうぞ

dim hairetsu, 10 //整数型の配列変数を確保 hairetsu = 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 //10個の要素に代入 repeat length(hairetsu) //lengthは配列の要素数(この場合10)を返す mes "配列"+cnt+"番目 hairetsu("+cnt+") = "+hairetsu(cnt) loop



SYAM

リンク

2024/10/26(Sat) 02:38:37|NO.102471

だいぶ日が経ってますね。見てるかな...?
if からいったん離れて、まず「式」と「値」について理解を深めてみましょう。

まず、「式」と「値」について

「変数」は、かならず「値」を持っています。
それと同じように、「式」もかならず「値」を持っています。
たとえば、 a = 1 , b = 2 のとき、 (a + b)という式の「値」は 3 です。
「式」の「値」とは、つまり式を計算した結果のことです。簡単すぎるくらいの話ですね。

次に、等式・不等式について。

等式(=)や不等式(< > <= >=)も「式」の一種です。ということは、「値」を持っています。
HSPでは、等式や不等式は、それが成立するなら 1 、成立しないなら 0 が「値」になります。
たとえば、 a = 1 , b = 2 のとき、 (a = 1) という式の「値」は 1 で、( a = b )という式の「値」は 0 です。これは算数や数学の話ではなく HSPでのルール なので、そういうもの、と覚えるしかないところです。
見た目が代入( a=1 // aの値を1にする )と同じなのもややこしいところですが、それがどこに書かれているかによって区別はできますね。

ここで、 if の話に戻ります

if は「 ( ) の中の条件が 成り立つなら以降の処理を実行する」もの、と理解しているものと思います。
しかし実は、正確にいうと
「 ( ) の中の『値』が 0 以外なら処理を実行する」
なのです。これが、このスレッドの質問への回答でもあります。
たとえば、a = 1 , b = 2 のとき
if (a = 1) { ... } は、等式 a = 1 が成立するので ( )内の「値」は 1 → 処理を実行する
if (a = b) { ... } は、等式 a = b が成立しないので ( )内の「値」は 0 → 処理を実行しない
if (a) { ... } は、( )内の「値」は 1 → 処理を実行する
if (b) { ... } は、( )内の「値」は 2 → 処理を実行する

意味があるかはさておき、もっと直接的に こんな風に書いてもOKです。
if (1) { ... } は、( )内の「値」は 1 → 処理を実行する
if (0) { ... } は、( )内の「値」は 0 → 処理を実行しない

ここまでわかれば、変数だけを指定した if が完全に理解できると思います。

最後に、ご質問にあった 「変数(cnt)」
これも ( )内に配列変数を指定しているだけで同じことです。その配列変数の「値」が 0 かどうかで分岐します。


長々と説明しましたが、そんなに高度な話ではなかったのではないかと思います。
おさらいすると

- 等式とか不等式は、成立すれば 1 、不成立なら 0 という値になる
- if は、( ) の中身の値が 0 以外なら実行される

この2点だけでも質問の回答にはなる程度の話でした。
でも、変数も式も等式も、わりとなにもかもが「値」を持つというのは、たいていのプログラミング言語で重要な考え方ですので、長めに語ってみた次第です。

年寄りは話がながくていけませんね...



スリナ

リンク

2024/10/29(Tue) 12:02:38|NO.102491

理解できました!ありがとうございます



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.102354への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2023(c) All rights reserved.