HOME»基本情報技術者試験掲示板»【科目B】変数と引数について
投稿する

【科目B】変数と引数について [5892]

 わんわんさん(No.1) 
科目Bの疑似言語アルゴリズムを学習しております。
変数を使う場合は、型名:変数名のように変数宣言をしなければならないですが、
関数で引数を使う場合は、前段で変数宣言する必要はないのでしょうか?
必要ないとするならば、下記をfunc(1)で実行した場合、11が印刷されると考えていいのでしょうか?
○func(整数型:n)
 n←n+10
 nを印刷する
2025.05.07 16:18
jjon-comさん(No.2) 
FE プラチナマイスター
func(1)
のように、関数func()の引数にリテラル(値を変数に格納せず直接表記したもの)を指定する場合は、
1 というリテラルが整数型の値とみなされますから正常に実行されます。

整数型: x ← 1
func(x)
のように、関数func()の引数に変数を指定した場合は、
func()を呼び出す側の実引数 x と、呼ばれる側のfunc()の仮引数 n のデータ型を同じにしなければなりません。

> 関数で引数を使う場合は、前段で変数宣言する必要はないのでしょうか?

リテラルを指定するのであれば(変数は使用していないので)変数宣言は必要ありません。

> 下記をfunc(1)で実行した場合、11が印刷されると考えていいのでしょうか?

はい、そのとおりです。
2025.05.07 16:54
 わんわんさん(No.3) 
>jjon-comさん
ありがとうございます。
参考書の例題で、変数宣言をしないで引数名を用いてn←n+10のように記述されていました。
このことから、引数と変数の違いがよく分からなくなってしまいました。
>リテラルを指定するのであれば(変数は使用していないので)
n←n+10nは変数とは呼ばずリテラルと呼ぶのでしょうか?💦
2025.05.07 17:14
QMさん(No.4) 
FE ゴールドマイスター
> n←n+10のnは変数とは呼ばずリテラルと呼ぶのでしょうか?

nは変数です。
変数は入れ物で、中に入っている値は変えることができます。
nと書いたとき、実際の値は1だったり、11だったり、「変わる」わけです。

1や10はリテラルです。
リテラル(literal)は、「文字通り」という意味で、
1や10、あるいは文字列なら'abc'のような、見たままの値を持つものです。
「1と書いてあるものの中身は10」なんてことはあり得ませんよね。
2025.05.07 19:49
 わんわんさん(No.5) 
>QMさん
ありがとうございます。不慣れで恐縮です💦
変数宣言の整数型:nnは「変数」これはOK
関数宣言の○func(整数型:n)nも「変数」との理解で大丈夫でしょうか?
2025.05.07 20:06
jjon-comさん(No.6) 
FE プラチナマイスター
呼び出す側 func(1) →  リテラル1を渡す  → func(整数型: n) 呼ばれる側
呼び出す側 func(x) → 変数xの内容を渡す → func(整数型: n) 呼ばれる側

という関係において、
質問者は 左項の「呼び出す側 func()」の変数宣言を疑問に思っていると私が誤読してNo.2を書いたのですが、
No.3から判断するに、そうではなく、
質問者は 右項の「呼ばれる側 func()」の変数宣言を疑問に感じているのですね。

であるならば「変数宣言しています」というのが回答です。

質問者ご自身で次のように発言なさっているのですよね。
> 変数を使う場合は、型名:変数名のように変数宣言をしなければならない

関数func()の定義では、○func(n) ではなく、○func(整数型:n) と書かれています。
ですから整数型:nが、関数func()の引数である変数の宣言です。
2025.05.07 20:51
 わんわんさん(No.7) 
>jjon-comさん
ありがとうございます。
説明が至らず申し訳ありませんでした。
リテラル含め、ようやくスッキリできました!
最後までご丁寧にありがとうございました🙇‍♂️
2025.05.07 21:13
返信投稿用フォームスパム防止のためにスレッド作成日から40日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop