for文の理解方法と初心者向け練習問題の紹介

このQ&Aのポイント
  • for文が理解できずに困っている方へ、for文の使い方と初心者向けの練習問題を紹介します。
  • for文の書き方や使い方についての解説サイトをいくつか見たが、うまく理解できない。for文初心者におすすめの練習問題や参考サイトがあれば教えてほしい。
  • for文の使い方が分からない方へ。for文の基本的な書き方や使い方について説明し、初心者向けの練習問題を紹介します。
回答を見る
  • ベストアンサー

for文学び

for文がいまいち理解できずに困っています。 いくつかのfor文の解説HPを見たのですが、例えば下記の or (i=1; 100>=i; i++) { trace(i); } の様なかたちに書けば、iは変数で、100になるまで計算が繰り替えされる、などのような説明があるだけで、どの様に使うのかが上手く理解できずにいます。 最初は 上記のASのtraceの部分でMC._x = i; と書けば100の位置まで移動するムービーという感じなのかなと思ったりしたのですが、大間違いでした。 for文初心者がfor文を覚えるのによい練習問題がありましたら、書き込みをいただきたく思います。またよい例題になる記載があるHPなどでもいいです。 ご存じありましたら、書き込みをいただきたく思います。よろしくお願いします。

  • Flash
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.2

for文はどこでも使いますね。 このカテゴリを for で検索してもたっくさんの for文 の使い方例が出てきます。 教えて!goo の検索結果ですが。 http://oshiete.goo.ne.jp/search/search.php?status=select&MT=for&ct_select=1&ct0=205&ct1=221&ct2=564 計算や文字列操作に使う場合も当然ありますが, ざっと上のURLを見てみた感じ, 予想通り,ムービークリップなどのインスタンスに一気にアクセスするのに使われる場合が多いようです。 それでは,Flash での for文 の活用例です。 Flash のドキュメントを作成して, ステージ上に1cmくらいの塗り入りの赤い丸でも描いてみてください。 その赤い丸を選択して,ムービークリップに変換してください。 ステージ上に赤い丸のムービークリップができましたら, それを選択した状態で,下のプロパティインスペクタ(プロパティパネル)からインスタンス名を付けてください。 インスタンス名は,「MC0」にしておきます。 その「MC0」をコピペで10個にして,ステージの上の方に横一列に並べてください。  ┏━━━━━━━━━━━━━┓  ┃● ● ● ● ● ● ● ● ● ● ┃ そしてそれぞれのインスタンス名を, 左から「MC0」,「MC1」,「MC2」,「MC3」,…,「MC9」 に変更してください。 そしてフレームに次のように書きます(コピペ可)。 -------------------------- for (i=0; i<=9; i++) { _root["MC"+i]._alpha = 20; } -------------------------- そして, 「制御」→「ムービープレビュー」すると, 一気に全てのムービークリップが半透明になります。 もう少し計算っぽい要素を含めてみます。 ----------------------------- for (i=0; i<=9; i++) { _root["MC"+i]._alpha = 10*(i+1); } ----------------------------- 最初に書いたスクリプトをこれに変更して(コピペしなおして), 「制御」→「ムービープレビュー」。 「MC0」~「MC9」までグラデーション的にアルファがかかります。 その他, 座標操作もできます。 ----------------------------- for (i=0; i<=9; i++) { _root["MC"+i]._x = 40*(i+1); _root["MC"+i]._y = 40*(i+1); } ----------------------------- また,上のようにいちいちコピペしてムービークリップを増やさなくても, for文で一気にムービークリップの複製もできますよ。 ----------------------------- for (i=0; i<=9; i++) { _root.MC0.duplicateMovieClip("myMC"+i, i, {_y:40*(i+1)}); } ----------------------------- また,次のスクリプトをコピペして, Http の H を小文字の h に変更してパブリッシュしてみてください。 ---------------------------------- var url = "Http://okwave.jp/qa285848"; for (i=0; i<=9; i++) { _root["MC"+i].n = i; _root["MC"+i].onRelease = function() { getURL(_root.url+this.n+".html"); }; } ---------------------------------- そして, 各ムービークリップをクリックすると, OKWave で,このページを含む前後の質問ページにジャンプできると思います。 少し遊びましたが, こんな感じが, Flash っぽい for文の活用方法だと思います。 当然,ちゃんとした計算にも使いますよ。

thank001
質問者

お礼

sassakunさん、書き込みありがとうございます。 丁寧なご説明で感じがつかめてきた気がします。 (ただ私が何とか対応できたのは例3つ目までで、4つめになると何でそうなるのかがわからない状態です。) とりあえず一歩前進できた感じです。4つ目以降は続けて頑張ってみようと思います。 書き込みありがとうございました。大変勉強になりました。

その他の回答 (1)

  • yaa6
  • ベストアンサー率22% (2/9)
回答No.1

使用言語が分かりませんが、Cのようにお見受けして回答します。 for文は、{}内を()の条件が満たされる回数だけ繰り返すものです。()内は、(初期値;条件;操作)となります。 例えば int x; for(x = 1000;x > 5;x /= 2){ printf("%d\n",x); } なら 1000 500 250 125 62 31 15 7 となります。

参考URL:
http://homepage2.nifty.com/sak/

関連するQ&A

  • forとduplicateMovieClip

    for文とduplicateMovieClipを覚える事を目的に、アンケート用紙のようなムービーを作ろうとしています。 一つのMCを用意し、「MC」とインスタンス名をつけました。その中に四角の絵(□)とダイナミックテキストが一つずつ入れてあります。ダイナミックテキストには変数名HT_answerとつけてあります。 フレームから下記の様にASを書きました。 var HanswerBox:Array = ["Answer1","Answer2","Answer3","Answer4"]; _root.MC.HT_answer = HanswerBox[0]; for(i=1;i<=3;i++){ _root.MC.duplicateMovieClip (["MC"+i],i,{_x:_root.MC._x ,_y:_root.MC._y+(50*i)}); _root["MC"+i].HT_answer = HanswerBox[i]; _root["MC"+i].onRelease = function(){ Hflag = i; trace(Hflag); } } これでプレビューするとステージには下記のかたちで表示されます。 □ Answer1 □ Answer2 □ Answer3 □ Answer4 クリックするとチェックマークが入るというものを作ろうとしているのですが、Hflag = i で項目毎に番号宣言させて、その番号にしたがってチェックマークを表示させようと考えたのですが、なぜかすべて Hflag は 4 と出力されてしまいます。これはなぜなのでしょうか?まだfor文とduplicateMovieClipは覚えたばかりなので、理解に間違いがあるだとは思うのですが、どうにも上手くいかずに困っています。 for文、duplicateMovieClipなど、この辺りのご指摘と共にご回答をいただきたく思います。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • for文について

    for文についてお聞きしたいことがあります。 for文で、10個のmcに動作をつけてるのですが、たとえば、その中のひとつをロールオーバーさせたら、その他の9個のムービークリップに ロールオーバーしてるムービークリップとは違うアクションをつけたいのですが、どうすればいいでしょうか?

  • for文を用いて

    みなさん、こんにちわ。C言語についてわからないことがありましたので、質問させていただきます。 C言語の本でfor文を用いて1~10までの和を求める例題は数多くありますが、(i=0,i<=10,i++) 1+2+1+2+1+2+… のように二種類のパターンがでてきたときはどのようにfor文で組めばよいのでしょうか?合計とその途中の計算も結果出力したいのですが、わからず困っています。ご教授よろしくお願いします。

  • for文の処理で・・・

    こんにちは。Actionscript3.0で、 以下のようなスクリプトを動かしたいのですが、 menupositionReset(); function menupositionReset():void { for (var i:int = 1; i <= 10; i++) { trace("menu_mc" + i); ["menu_mc"+i].x=500; } } これを実行すると、 1083: Syntax error: dot is unexpected. と表示されて動きません。menu_mc01~10を500ピクセル動かしたいだけなのですが。。。 スクリプトはステージの1フレーム目に記述しています。 ["menu_mc"+i].x=500;でエラーが出ているようです。 なぜ動かないのでしょうか?

    • ベストアンサー
    • Flash
  • FLASHでムービークリップ名を変数で持つ場合のloadmovie

    FLASHMXで空ムービークリップを作成して その中に外部SWFを読み込むスクリプトを書いています。 外部ファイルはa0.swfからa10.swfまであるのでそれを全て読み込む為に 空ムービークリップ名を変数で持ちたいのですが loadmvieの行では変数と認識してくれないようで何も表示されません。 (traceの行の2つの変数は正常に表示されますし  直接ムービークリップ名を入れれば読込もできます) おそらく下のソースの例だとpart_mcは変数名なのに そのままムービークリップ名と捕らえられてしまっているようです。 どのようにすれば変数と認識してくれるのでしょう? for (var i = 0; i<10; i++) { var part_mc = "a10" + i + "_mc"; var loadfile = "a" + i + ".swf"; _root.createEmptyMovieClip(part_mc, 100+i); _root.part_mc.loadMovie(loadfile); _root.part_mc._x = i * 10; trace(loadfile); trace(part_mc); } アドバイスをお願いします。

  • forでonRollOverを一回で書くには?

    下の内容をfor文を使って一回で書くにはどのようにすればよいですか? _root.a0.onRollOver = function(){  trace("0"); } _root.a1.onRollOver = function(){  trace("1"); } _root.a2.onRollOver = function(){  trace("2"); } 下のように書いてみましたが、どのmcにロールオーバーしても "2" と表示されてしまいます。 for(i=0; i<3; i++){  _root["a"+i].onRollOver = function(){   trace(i);  } }

    • ベストアンサー
    • Flash
  • 【as3.0】for~文で変数に連番を適用したい

    初めてAS3.0を使用してゲームを作成しています。 5枚のムービークリップの位置をシャッフルしたいのですが、 シャッフルさせるイベントをそれぞれのムービークリップに適用させることが出来ずに困っています。 以下、現在のスクリプトです。 import flash.events.Event; var mixarrayX:Array = [0,60,120,150,200];//x位置のパターン var mixarrayY:Array = [0,20,50,80,90];//y位置のパターン this.addEventListener(Event.EXIT_FRAME,syaful); function syaful(e:Event):void { //ランダムで位置のパターンを抜き出す var syafulPTX1:int = (Math.random() * mixarrayX.length); var syafulPTY1:int = (Math.random() * mixarrayY.length); //カードの位置【x,y】を当てはめる var mix1:Array = [mixarrayX[syafulPTX1], mixarrayY[syafulPTY1]];   //MC1に抜き出した位置を適用させる MC1.x = mix1[0]; MC1.y = mix1[1]; //今回のパターンを配列から抜き出す。 syafulPTX1 = mixarrayX.shift(); syafulPTY1 = mixarrayY.shift(); } removeEventListener(Event.EXIT_FRAME,syaful); } for文を使って各変数の「1」等のナンバーにiを適用させて、ループさせれば良いとは思うのですが、 ["MC"+i]等と入力してもエラーになってしまいます。 for文で変数を宣言する場合の正しい書き方を教えていただけると助かります。 何卒、よろしくお願い致します。

    • ベストアンサー
    • Flash
  • For文と配列

    下のFor文でセルに0から9999の数字を入力しようとしたのですが 「forで指定された変数は既に使用されています」というエラーがでます。 Dim i As Integer Dim Num(3) As Integer For Num(0) = 0 To 9 For Num(1) = 0 To 9 For Num(2) = 0 To 9 For Num(3) = 0 To 9 Cells(i, 1) = Num(3) + Num(2) * 10 + Num(1) * 100 + Num(0) * 1000 i = i + 1 Next Num(3) Next Num(2) Next Num(1) Next Num(0) 他には何にも書いていないマクロなので他所で使用しているとも思えないですが うまくゆきません。 続きの作業でNum()を配列として作業したいのでこの形を変えたくありません。 何がいけないのでしょう?

  • アクションスクリプト2.0でfor文の出力結果

    for (i = 1; i < 53; i++) { this["pad"+i].onRelease = function() { trace("pad"+i); }; } pad1~pad52というインスタンス名のムービークリップを配置します。 ムービークリップを押したときに各番号をtraceしたいのですが、 すべて"pad53"という同じ結果(出力)になってしまいます。 よくよく考えてみるとそうなってしまうな・・・ というのはわかるのですが、どこをどのように変更すれば よいのか思いつきません。。。 根本的に考え方が違うのでしょうか。 よろしくお願いいたします。

  • JavaScriptでfor文

    初歩的な事ですが教えて下さい。 for文で宣言した変数をfor文内で変更した時、 通常の記述で上手く動作しません。 どのようにしたら良いのでしょうか? 意味をなさないfor文ですが… for (var i=0; i<5;i++){ alert("i=" + i); i=4; //ここが上手くいかない } 以下のようにすると意図した通りになります。 が、なんかかっこ悪い?違う気がする… for (var i=0; i<5;){ alert("i=" + i); i=4; //これだと上手くいく i++; } 上記以外のメジャーな方法って有るのでしょうか? それともこれが最善でしょうか?教えて下さい。

専門家に質問してみよう