

<!DOCTYPE html>
<html>
<head>
<title>P141 横に画像を一行目1枚二行目2枚・・・5行目が5枚、段階毎に出るコード </title>
</head>
<body>
<?php
※for($i=0; $i<5; $i++){
2) for($j=0; $j<$i+1; $j++){
print "<img src=\"Circle.jpg\"/>";
}
print "<br/>\n";
}
?>
</body>
</html>
以上
※ $j<$i+1;のコードでは、段階毎の1行に1枚の画像~5行目は5枚の画像がでる仕組の肝心なコードだと思うのですが・・・まー それを使えば以上のようなプログラムになるよと馬鹿覚えでもいいのですが・・それではプログラムを勉強する意味がないので、仕組みをご教授で来るお方がおられましたらよろしくお願いたします。
No.10ベストアンサー
- 回答日時:
No.7です。
動いている仕様が事実です。
for($i=0; $i<1; $i++) という記述でIMAGEタグが送出されているということは「表現方法は0~0の0回」という理解は誤っているということです。
では、どう誤っているかというと、for文の終了判定は $i<1 です。そしてiの初期値(=for文の実行開始時の値)は $i=0 です。
ですから一回目のルールでは 0<1 となりこの評価結果は「真」となりループ内のロジックが実行されます。
ループの先頭に戻る際に $i++ でiはインクリメントされ2となります。するとループの先頭に戻っての終了条件の評価判定は 2<1 ですから結果は「偽」でループ内のロジックは実行されずforループを抜けます。
ご回答くださいまして誠にありがとうございました。
$i=0∴$i<1∴0<1が成立するので”評価結果は「真」となりループ内のロジックが実行される”・・・
なるほど、どこか勘違いしていた部分がありました、悪しからず。
No.9
- 回答日時:
> for($i=0; $i<1; $i++){ では表現方法は0~0の0回ではないでしょうか!?
for文の動作を理解していないということです。
参考書の114~117ページ辺りをもう一度学習してください。
※動作に疑問が生じたら、参考書でその機能が最初に登場した箇所を読み直すべきです!
No.8
- 回答日時:
> $j<$i+1の絡繰りが解けません
① for($j=0; $j<$i+1; $j++){……}が1回ループすると、●を一つ表示する。
② for($j=0; $j<$i+1; $j++){……}は、$i+1回ループする。
従って●を$i+1個表示する。
③ for($i=0; $i<5; $i++){……}では、5回ループし、ループ毎に$iは0から4まで変化する。
④ $iが0のとき、for($j=0; $j<$i+1; $j++){……}は、1回ループする。
従って●を1個表示する。
⑤ $iが1のとき、for($j=0; $j<$i+1; $j++){……}は、2回ループする。
従って●を2個表示する。
⑥ $iが2のとき、for($j=0; $j<$i+1; $j++){……}は、3回ループする。
従って●を3個表示する。
➆ $iが3のとき、for($j=0; $j<$i+1; $j++){……}は、4回ループする。
従って●を4個表示する。
⑧ $iが4のとき、for($j=0; $j<$i+1; $j++){……}は、5回ループする。
従って●を5個表示する。
No.7
- 回答日時:
No.1です。
補足を拝見して。。。(_ _)
> > for($i=0; $i<6; $i++){
> > for($j=0; $j<$i+0; $j++){
>
> $j<$i+1の絡繰りが解けません
forの二重ループが立会できないということでしょうか?
では、、、
for($i=0; $i<6; $i++){
:
for($j=0; $j<$i+0; $j++){
:
}
}
こんな感じに書いてもイメージがわきませんか?
外側の変数iを使ったforループの一回目はiの値は0です。iの値が6未満ならforループ内の処理を行うので0の場合は処理に入ります。それは分かりますよね?
そうすると内側の変数jを使ったforループに行きます。この時、一回目のjの値は0です。jの値が「i+0」未満ならforループ内の処理を行うのですが、この時点でのiの値は0ですから0+0=0となり処理に入ります。そこでIMAGEタグが1つ送出されます。
で。内側の変数jを使ったforループの一回目を終わって二回目。jはカウントアップされて1になっています。一方iの方は外側のforループを回っていませんから0のままです。とすると内側のforループの脱出条件「$j<$i+0」はどうなりますか? 「1<0」となり成り立たなくなりますからループ内の処理を行わずループを抜けます。
そうすると外側の変数iを使ったforループの一回目を終わって二回目へ。iはカウントアップされて1になっています。iの値が6未満ならforループ内の処理を行うので1の場合は処理に入ります。これも分かりますよね?
そうすると内側の変数jを使ったforループに行きます。新たにfor文が出て来たので「$j=0」という初期条件により一回目もjの値は0です。
二重ループがよくわからないとするとたぶんここのところの理解ではないでしょうか? 内側のjを使ったforループは外側の一回目のループ内でも実行されていますが、一度終了条件に達して抜けています。ここでは新たにfor文が出て来てそれを実行しますので、初期条件の「$j=0」から実行されます。
ここを理解できると二重のforループがどう実行され結果的にIMAGEタグが幾つ送出されるかを頭の中で考えることが出来るようになると思います。
いかがでしょう?

No.6
- 回答日時:
制御文 (for) が分からないのでしょうか。
for ($i = 0; $i < 5; $i++) {…}
↓
$i = 0; { for ($j=0; $j < $i + 1; $j++) { … } print "<br/>\n"; }
$i = 1; { for ($j=0; $j < $i + 1; $j++) { … } print "<br/>\n"; }
$i = 2; { for ($j=0; $j < $i + 1; $j++) { … } print "<br/>\n"; }
$i = 3; { for ($j=0; $j < $i + 1; $j++) { … } print "<br/>\n"; }
$i = 4; { for ($j=0; $j < $i + 1; $j++) { … } print "<br/>\n"; }
↓
for ($j=0; $j < 0 + 1; $j++) { … } print "<br/>\n";
for ($j=0; $j < 1 + 1; $j++) { … } print "<br/>\n";
for ($j=0; $j < 2 + 1; $j++) { … } print "<br/>\n";
for ($j=0; $j < 3 + 1; $j++) { … } print "<br/>\n";
for ($j=0; $j < 4 + 1; $j++) { … } print "<br/>\n";
↓
…
No.5
- 回答日時:
ここで聞く話じゃないですね。
何がわからないかわからないし、どこから話したらよいのか
もわからない。
PHPがどういうHTMLを吐くのかわからないのか?
PHPの吐くはずの HTML の内容が理解できないのか?
なんとなく解説してくれでは回答者が困ります。
ここで質問するなら疑問点を明確にしましょう。
基礎を知りたいなら自分に合った入門書や入門サイトを見ましょう。
基礎を知りたいなら・・・まーあなたは”神れべる”だとは存じますが!
「入門書や入門サイトを見ましょう。」はあなたの教えに勝るものはないと存じます^^
よろしくお願いいたします。
No.4
- 回答日時:
No.1さんも仰っていますが
以下の様に、
プログラムが終了するまで、実行Line、各変数の値、出力の有無を書き出してみては如何ですか?
そうすれば多少とも理解が進むのではないかと思います。
Line01:for($i=0; $i<5; $i++){
Line02: for($j=0; $j<$i+1; $j++){
Line03: print "<img src=\"Circle.jpg\"/>";
Line04: }
Line05: print "<br/>\n";
Line06:}
Step01 Line01実行 $iの値:0 $jの値:不定 $j+1:不定 出力: 無し
Step02 Line02実行 $iの値:0 $jの値:0 $j+1:1 出力: 無し
Step03 Line03実行 $iの値:0 $jの値:0 $j+1:1 出力: <img src="Circle.jpg"/>
Step04 Line04実行 $iの値:0 $jの値:1 $j+1:2 出力: 無し
Step05 Line02実行 $iの値:0 $jの値:1 $j+1:2 出力: 無し
Step06 Line05実行 ……
No.3
- 回答日時:
プログラムはなぜ動くのか ― 知っておきたいプログラミングの基礎知識
http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82 …
まずは落ち着いてガイドブックを読みながら基礎を習得する必要性がありそうです。
No.2
- 回答日時:
No.1
- 回答日時:
変数iを使ったforループと、変数jを使ったforループ。
この2重ループの中にprint分があり、そこでHTMLのIMGタグをアクセス元のWebブラウザに向かって送出しています。外側のループの際にはBRタグも送出しています。それはわかりますよね?
では、この2重ループを頭の中で動かして、ループを抜けるまでにどういうIMGタグとBRタグがどういう順序で何個送出されるかを考えてみましょう。書き出してみるとよいですね。
最初はi=0、j=0からスタートします。1回まわるごとにカウントアップしてループの脱出条件まで回してみましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UWSCの終了の仕方
-
Javaの質問です。 この問題の答...
-
画面を強制的に再描画させる方法
-
Escキーを押すと、中断する時と...
-
null 参照の例外が実行時に発生...
-
UWSCに制限時間を付けたいです
-
VBA Dir関数でファイルをループ...
-
vb.netです。2次元配列の要素を...
-
GIFアニメをループさせたくない
-
CSVファイルの特定の行だけを読...
-
VBA横データを縦にしたいです
-
BGMのループ再生
-
iアプリ、それともJava(?)に...
-
VBAで3秒だけ時間を止めたい
-
pythonでファイルのコメント行...
-
csh foreachで「*」でエラ...
-
setTimeoutをループさせDOMを処...
-
ListBox 複数選択 で オートフ...
-
ループフリー
-
VB2010でCSVファイルの読み込み
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
UWSCの終了の仕方
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
-
UWSCに制限時間を付けたいです
-
Escキーを押すと、中断する時と...
-
乱数の桁数指定、または範囲指定。
-
VBA for i=1 to lastrow
-
流れ図(フローチャート)が分か...
-
DOSコマンドのループ内のTIMEコ...
-
pythonでファイルのコメント行...
-
素数表について。
-
VBAでの一時停止と再開の方法
-
「偶数・奇数の和」のフローチ...
-
DoEventsが必要な理由について
-
vb.netです。2次元配列の要素を...
-
Do whileでExitせず、ループの...
-
ループフリー
-
エクセルの当番表を作っていま...
-
VBAで3秒だけ時間を止めたい
おすすめ情報
皆様ご回答くださいまして誠にありがとうございました。
さて、何かといじっていましたら
for($i=0; $i<6; $i++){
for($j=0; $j<$i+0; $j++){ が!
●
● ●
● ● ●
● ● ● ●
● ● ● ● ●
● ● ● ● ● ●
当初の以下と
for($i=0; $i<5; $i++){
for($j=0; $j<$i+1; $j++){ と!
同じ結果になりました。
考え方としまして、どんな考え方なのでしょうか?
やっとここまでたどり着くことができました^^
$j<$i+1の絡繰りが解けません
教えていただけないでしょうか
よろしくお願いいたします。
siffon9様 回答日時:6分前
毎度ご回答いただき誠ありがとうございまます。
お付き合いをいただきすみません。
ループ事態が、のめりこむ性質ものか、私だけの特徴かさだけではないのですが、
本日は、晩酌はしないで、合計、既に9時間以上取り込んでいます。
ご回答を一通り読ませていただきます。
解決に当たり、しばらくお待ちくださいませ。
新たな疑問で以下ですが?
for($i=0; $i<1; $i++){ では表現方法は0~0の0回ではないでしょうか!?
for($j=0; $j<$i+1; $j++){ これも上と同様で表現法要は0~0の0回ではないでしょうか?
なので、
●が1個も出てこなと思いますが、実際に私のパソコンでは、●が1個出てきます。
なぜ出てくるのでしょうか?私の得意の勘違いでしたら”すみません”
よろしくお願いいたします。
皆様たくさんのご回答をいただきまして誠にありがとうございました。
今まで一番面白いプログラムだと感じました
$j<$i+1;では
●
● ●
● ● ●
● ● ● ●
● ● ● ● ●
$j<$i;
●
● ●
● ● ●
● ● ● ●
パターンはエトセトラ・・・
以上はですが
問題の$j<$iの絡繰りで、段階ごとに●が増えていく理由ですが!
$Jが”列”を担当で、$iは”行”担当なので、$j<$iは$i++で段階ご
とに数字が増えるのを利用して、段々となる・・・・
”そうだろう”というピントが合ったいない理解度のレベルです。
やっぱり100%の理解は難しいです。
最初から100%の理解を求めると息詰まるので徐々に理解していきたいと思います。
まだわかりなくなったら質問いたしますのでよろしくお願いいたします。