質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

4回答

960閲覧

JavaScriptのサイコロの合計について

fromJapan

総合スコア1

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/05/19 13:20

javascript初学者です。学習中のユーザー定義関数の問題で、教材の説明文を読んでも分からず教えていただきたいです。
サイコロを振った数と合計値を表示しているのですが、
var i=0はどのように解釈せれば良いのでしょうか?
またreturn sum;の処理は引数の回数行われると考えて良いのでしょうか?

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>ユーザー定義関数の利点</title> 6</head> 7<body> 8 <script> 9 function throw_dice(num){ 10 var sum = 0; 11 12 for (var i = 0; i < num; i++) { 13 // 1〜6の数字を変数sumへ合算 14 sum += Math.floor(Math.random() * 6) + 1; 15 } 16 17 return sum; 18 } 19 20 document.write('<p>サイコロを1個振る: ' + throw_dice(1) + '</p>'); 21 document.write('<p>サイコロを1個振る: ' + throw_dice(1) + '</p>'); 22 document.write('<p>サイコロを2個振る: ' + throw_dice(2) + '</p>'); 23 document.write('<p>サイコロを2個振る: ' + throw_dice(2) + '</p>'); 24 25 </script> 26</body> 27</html> 28
Javascript

試したこと

引数:サイコロの個数(振った回数)
処理:サイコロを指定回数振った合計値を計算する
返り値:サイコロの合計値 の説明はなんとなく理解できました。

色々なサイトや、教材を見返しましたが理解できず
お忙しい中大変恐縮ですがご教授お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

var i=0はどのように解釈せれば良いのでしょうか?

何回実行するかカウントするための変数です。別に1から始めても構わないですが、配列の要素も0から始まるように、0で始めることも多いです。

return sum;の処理は引数の回数行われると考えて良いのでしょうか?

「引数の回数」という言葉の意味が通りません。関数を呼んだ回数です。


本題ではありませんが、document.writeは古い書き方です。テキストを自分で選んだ状況であれば、もっと新しいものに乗り換えるほうが適当かと思います。

投稿2020/05/19 13:38

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fromJapan

2020/05/19 13:46

ご回答いただきありがとうございます! 振った回数の変数と考えるんですね。 なるほど、そうすると例えば 2回サイコロを振ったときは、(i=0, 0<num,i++)と(i=0, 1<num,i++)の2回処理が回り、それそれの数字が合算される。そして中括弧外のreturn sumで引数numに数字が戻る。 というイメージで良いでしょうか? またまた質問になってしまいすみません(>_<)
guest

0

var i=0はどのように解釈せれば良いのでしょうか?

for構文の初期化命令です。

またreturn sum;の処理は引数の回数行われると考えて良いのでしょうか?

引数(繰り返しの回数)に関わらず1回です。

試したこと に書かれている理解は概ね合っています。
が、ユーザー定義関数の説明の前に制御構文(forやwhile)の理解が足りません。
教材ならこの章より前に制御構文の学習があるはずなので、そこまで巻き戻ってもう一度学習しなおしてください。

投稿2020/05/19 13:44

hope_mucci

総合スコア4447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fromJapan

2020/05/19 13:57

お答えいただきありがとうございます!確かに質問がfor文の内容ってかんじですね...もう一度巻き戻ってみます!
guest

0

引数:サイコロの個数(振った回数)

処理:サイコロを指定回数振った合計値を計算する
返り値:サイコロの合計値 の説明はなんとなく理解できました。

上記、だけだと思います。

基本的には「INPUT」と「OUTPUT」です。
「何を与えて(INPUT)」「どういう結果を返す(OUTPUT)」

変数についてはおそらくスコープのことですかね。
その観点で調べてみると理解が深まると思います。

投稿2020/05/19 13:37

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/19 13:43

ちょっと雑な回答をしてしまったかもしれない。
fromJapan

2020/05/19 14:05

全然です!ご回答ありがとうございます! まだあまりfor文自体に慣れていないためか、変数iって何?となってしまいました。 スコープは次の章で学習するみたいなので引き続きがんばりますね。
guest

0

var i=0

for (var i = 0; i < num; i++) { // 1〜6の数字を変数sumへ合算 sum += Math.floor(Math.random() * 6) + 1; }

var i = 0はここで使われているiを0とする変数ですね。
numthrow_dice関数の引数なのでthrow_dice(2)の場合には、for (var i = 0; i < 2; i++)となります。
for (var i = 0; i < 2; i++) は繰り返しを表現しています。具体的には

  1. i = 0:iを0とします
  2. i++:iは1ずつ増加します
  3. i < 2:iが2未満の間、For文内の処理を繰り返します

return sum;の処理は引数の回数行われると考えて良いのでしょうか?

記載いただいたコードでは、For分の処理が完了した後に行われるようです。
引数の値にかかわらず、1回です。

投稿2020/05/19 13:46

hatsu

総合スコア1809

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fromJapan

2020/05/19 13:55

とてもわかり易い説明をしていただきありがとうございます。 return numはfor文の処理が終わってから1回処理されるということなんですね。
fromJapan

2020/05/19 14:02

まず 引数numでサイコロを振った回数なのに 変数iってどういう意味??ってなってしまいました。というか引数と変数は別物ですね...
hatsu

2020/05/19 14:04

>引数と変数は別物ですね そうですね。引数は、throw_dice(num)のnumのように関数に渡す値ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問