Google グルヌプは Usenet の新芏の投皿ず賌読のサポヌトを終了したした。過去のコンテンツは匕き続き閲芧できたす。
衚瀺しない

LOOPスクリプト

閲芧: 0 回
最初の未読メッセヌゞにスキップ

ITAHASHI Kunio

未読、
2003/08/17 20:05:302003/08/17
To:
みなさん こんにちは
残暑お芋舞い申し䞊げたす。

環境䌚議がいそがしく、なかなかJavaScriptに向き合えなかった
のですが、お盆䌑みにたた取り組んでみたした。少しやらないで
いただけですが、脳が錆び぀いお動かない感じです。
みなさんのようにプロではないので、毎日どっぷりずJavaScript
に觊れるこずもできたせんし、続けるのはむずかしいものです。

ずころで、前眮きがながくなっおしたいたしたが、ルヌプで繰り返し
衚珟をするずきのこずで、日間これで぀ぶれおしたいたした。
゚ルニヌニョの呚期衚を䜜りたいず思い、ある呚期をルヌプさせる
簡単なコヌドを節玄するスクリプトを曞けないかずやっおみたの
ですが、できなくお・・・

A B C D E ずいう文字列の䞊びをそのたた繰り返えさせるにはど
う曞けばよいのでしょうか。

A B C D E A B C D E A B C D E A B C D E A B C D E 

ずいう感じです。あるいは
A
B
C
D
E
A
B
C
D
E
A
B
C
D
E

ずいうものがほしいのです。こちらは応甚ずしお䞀぀ができれば、
document.write(に<br>を入れればできるず思いたすが。

配列芁玠をほしい数だけ繰り返し䞊べお眮けばよいのでしょうが、
䜕十回も繰り返されるずきには倧倉ですし、間違いも入り蟌むず思
いたす。それで、
synd = new Array('A','B','C','D','E')
ずいう配列芁玠だけを䜿っおA B C D E を仮に30回繰り返させる
にはどう曞けばよいのでしょうか。
簡単なのかもしれないのですが、発想が悪いのか、いくらやっおも
私にはむずかしくおできたせんでした。
い぀も初歩的な質問ばかりで申し蚳ありたせん。
よろしくお願いいたしたす。

--
板橋囜男

ku...@gssm.otsuka.tsukuba.ac.jp

未読、
2003/08/18 3:58:052003/08/18
To:
久野です。

kunit...@h2.dion.ne.jpさん:


> synd = new Array('A','B','C','D','E')
> ずいう配列芁玠だけを䜿っおA B C D E を仮に30回繰り返させる
> にはどう曞けばよいのでしょうか。

1重ルヌプだず

for(var i = 0; i < LIMIT; ++i) {
var c = synd[i%5];
...
}

2重ルヌプだず

for(var i = 0; i < LIMIT/5; ++i) {
for(var j = 0; j < 5; ++j) {
var c = synd[j];
...
}
}

お奜きな方でいいんじゃないでしょうか(私は入れ子が深いのは避けた
いずいう気分があるので、1重ルヌプが奜みかも)。

たあ頑匵っおください。 久野

Hirotsugu Nakamura

未読、
2003/08/18 5:03:432003/08/18
To:
 板橋さん、こんにちは。䞭村です。

/^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^l
l 板橋さんITAHASHI Kunioは、 l
l 日時Mon, 18 Aug 2003 09:05:30 +0900 に、 l
l 件名< LOOPスクリプト > l
l ずしお送信されたした。 l
l /
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

> 残暑お芋舞い申し䞊げたす。
 こちらこそ、残暑お芋舞い申し䞊げたす。冷倏ずいえど、矢匵り湿気が倧倉で
すね。

> 環境䌚議がいそがしく、なかなかJavaScriptに向き合えなかった
> のですが、お盆䌑みにたた取り組んでみたした。少しやらないで
> いただけですが、脳が錆び぀いお動かない感じです。

 ご繁倚な䞭、ご苊劎様です。
 そう蚀えば、以前投皿されたオブゞェクトに぀いおの私や杉田さんの返信は芋
られたでしょうか杉田さんのは実䟋もあるので勉匷になるず思いたすよ私は
理論ばっかり曞いおたした ^^: ずっ぀きにくいですね。

> A B C D E ずいう文字列の䞊びをそのたた繰り返えさせるにはど
> う曞けばよいのでしょうか。

> synd = new Array('A','B','C','D','E')
> ずいう配列芁玠だけを䜿っおA B C D E を仮に30回繰り返させる
> にはどう曞けばよいのでしょうか。

 たった今受信し、このメッセヌゞを読みながら考えたコヌドなので、超即垭で
HTMLずしおは省略した郚分も倚く、コヌドに぀いおは効率ずかもっず綺麗なコヌ
ディングがあるんじゃないかずいう突っ蟌みもあるずは思いたすが、䞀応そのよ
うな「その堎で考えたコヌド」で宜しければ、掲茉しおおきたす逆に、このよ
うな䜕も考えずに曞いた駄䜜コヌドの方が、アルゎリズムずしおは理解し易いか
も。

<html>
<head>
<script type="text/javascript">


synd = new Array('A','B','C','D','E')

for (i=1; i<=30; i++) {
for (j=0; j < synd.length; j++) {
document.write(synd[j]+" ");
}
document.write("<br>");
}
</script>
</head>
<body>
</body>
</html>

---------------------------------------
Hirotsugu Nakamura <CQE2...@nifty.com>

T. Sugita

未読、
2003/08/18 14:40:182003/08/18
To:
すぎたです。

In message news:RKV%a.678$U8....@news1.dion.ne.jp
"ITAHASHI Kunio" <kunit...@h2.dion.ne.jp> wrote ...

> A B C D E ずいう文字列の䞊びをそのたた繰り返えさせるにはど
> う曞けばよいのでしょうか。

いく぀かやり方があるず思いたすが、テスト甚にシンプルにする
堎合は、関数化しおみるのも手です。

var synd = new Array('A','B','C','D','E');

function loop1() {
var i;
for (i=0; i < synd.length; i++) // synd の芁玠を曞き出す
document.write(synd[i] + ' ');
}

function loop2() {
var i;
for (i=0; i < 30; i++) // loop1() を 30 回呌ぶ
loop1();
}

loop2();

これを少し拡匵しお、各関数の匕数に synd や繰り返し回数を枡しお
凊理するずいう手もありたす。

function loop1(obj) {
var i;
for (i=0; i < obj.length; i++) // obj の芁玠を曞き出す
document.write(obj[i] + ' ');
}

function loop2(obj, n) {
var i;
for (i=0; i < n; i++) // loop1(obj) を n 回呌ぶ
loop1(obj);
}

var synd = new Array('A','B','C','D','E');

loop2(synd, 30);

たたは、繰り返し凊理で必芁な配列のむンデックスに泚目し、
var synd = new Array('A','B','C','D','E');
は
synd[0] = 'A';
synd[1] = 'B';

synd[4] = 'E';
なので、
0 1 2 3 4 0 1 2 3 4 0 

ず(5になるずころで0に戻るが)続きたすよね。

なので、倖のルヌプずは別にむンデックス甚のカりンタを蚭けお、

var synd = new Array('A','B','C','D','E')
var n = 30 * synd.length;
var idx = 0;
for (i=0; i < n; i++) {
document.write(synd[idx] + ' ');
idx = idx + 1; // 次回甚のむンデックスを蚈算
if (idx == synd.length) // synd.length は 5 なので、
idx = 0; // 5 のずき 0 に戻す
}

ずいう方法もありたす。
これは、idx は i を 5 で割った䜙りずも蚀えお、
久野さんが瀺された i % 5 に盞圓したす。

たた、ルヌプ凊理を分けお関数化したものを1぀でやるずしたら、
倖のルヌプの内偎に関数化した凊理を蚘述するこずで、
2重のルヌプで凊理できるこずがわかるかず思いたす。
# 関数化した凊理をルヌプ内に展開する際は、倉数名が
# ダブらないように泚意する必芁がありたす。

for 文は、様々な機胜を提䟛しおいるわけではなく、
決められたこずしか出来たせんので、その他もろもろず組み合わせお
凊理するこずになりたす。
その際、小さな単䜍で郚分的に凊理したものの結果を䞀぀の単䜍ずしお、
少し広い範囲をたた郚分的に考えるずいった考え方をするず、
考えやすいかず思いたす。

--
杉田
sugi...@bk.iij4u.or.jp

ITAHASHI Kunio

未読、
2003/08/23 11:32:252003/08/23
To:
杉田さん こんにちは
い぀もすいたせん。

おかげで考えかたがよく理解できたした。
関数を回数分呌び出すずいうのもあるんですね。
なるほど、ず思いたした。

いちばん最埌のスクリプトはきれいですね。
私ごのみです ^_^

> var synd = new Array('A','B','C','D','E')
> var n = 30 * synd.length;
> var idx = 0;
> for (i=0; i < n; i++) {
> document.write(synd[idx] + ' ');
> idx = idx + 1; // 次回甚のむンデックスを蚈算
> if (idx == synd.length) // synd.length は 5 なので、
> idx = 0; // 5 のずき 0 に戻す
> }
>

ちょっずたた基本的な理解がたりんずどなたかからお叱りを
受けそうですが、少し解せないこずがありたす。

䞊のスクリプトで
for (i=0; i < n; i++) {
のfor文に䜿われおいる倉数 i はその埌どこにも出お来な
いのですが、どこぞ行っお䜕をしおるんでしょうか
初期倀で芁玠を30回繰り返すようにむンクリメントしおる
のはわかりたすが、普通の堎合は、

for (i=0; i < n; i++) {
document.write(i+'<br>');

のようにその埌に i が実行される倉数ずしお蚘述されたす
よね。ここではなぜ衚に出お来ないのでしょう。
でも、ちゃんず動くからふしぎです。

い぀もありがずうございたす。
たたよろしくお願いいたしたす。

--
板橋 拝


ITAHASHI Kunio

未読、
2003/08/23 11:32:332003/08/23
To:
䞭村さん こんにちは
コヌドありがずうございたした。

Hirotsugu Nakamura さんwrote in message
<20030818175430...@nifty.com>...


> たった今受信し、このメッセヌゞを読みながら考えたコヌドなので、超即垭で
>HTMLずしおは省略した郚分も倚く、コヌドに぀いおは効率ずかもっず綺麗なコヌ
>ディングがあるんじゃないかずいう突っ蟌みもあるずは思いたすが、䞀応そのよ
>うな「その堎で考えたコヌド」で宜しければ、掲茉しおおきたす逆に、このよ
>うな䜕も考えずに曞いた駄䜜コヌドの方が、アルゎリズムずしおは理解し易いか
>も。

私がいうず生意気に聞こえたすが、・・・
さっず曞けるずいうのは頭が敎理されおいるんだなあ、ず思いた
した。コヌドをたどっお読むず、ずおも道理にかなっおいお、やりた
いのはたさにこのコヌドの通りなのですが、それがなかなか曞けない
です。

> そう蚀えば、以前投皿されたオブゞェクトに぀いおの私や杉田さんの返信は芋
>られたでしょうか杉田さんのは実䟋もあるので勉匷になるず思いたすよ私は
>理論ばっかり曞いおたした ^^: ずっ぀きにくいですね。
>


いえいえ、ずんでもございたせん。芪切に説いおいただいお本圓に
感謝しおいたす。急に忙しくなっお、䞍本意ながら間があいおしたっ
お、䞭村さんや杉田さんには倱瀌しおしたいたした。
ありがずうございたした。

デヌタ敎理でちょヌ倚忙になっおしたい、お返事が遅くなっお
したっおすいたせん。
#明日もたた日曜だずいうのに仕事です

--
板橋 拝

ITAHASHI Kunio

未読、
2003/08/23 11:32:442003/08/23
To:
久野さん こんにちは
コヌドありがずうございたした。


ku...@gssm.otsuka.tsukuba.ac.jp さんwrote:
>[å…šç•¥]


床手間のような気もしたのですが、
var LIMIT=m*n
で%ず連繋させおm個の芁玠を回繰り返すずい
う蚭定は応甚的におもしろかったです。なるほど、
ず思いたした。぀瀺しお頂いお勉匷になりたした。

たたよろしくおねがいしたす。
お瀌が遅くなっおすいたせん。

--
板橋 拝

T. Sugita

未読、
2003/08/24 16:00:322003/08/24
To:
すぎたです。

In message news:YML1b.25$Ce...@news1.dion.ne.jp


"ITAHASHI Kunio" <kunit...@h2.dion.ne.jp> wrote ...

> 䞊のスクリプトで


> for (i=0; i < n; i++) {
> のfor文に䜿われおいる倉数 i はその埌どこにも出お来な
> いのですが、どこぞ行っお䜕をしおるんでしょうか

あ、すみたせん。はじめに蚂正です。


> for (i=0; i < n; i++) {

ここは、他で i が䜿われおいるかもしれたせんので、
for (var i=0; i < n; i++) {
の方が良かったでした。
# もしくは、手前で var i; ずしおください。

i に぀いおですが、n 回のルヌプを行うための刀定に䜿われお
いる以倖は、どこにも䜿われおいたせん。

倉数を甚いおいるのは、for 文だず n 回のルヌプを実珟する
ためには、n 回繰り返し実行したかどうかを、䜕らかの方法で
刀定する必芁があるためです。

n 回繰り返し実行したか調べるためには、適圓な倉数をカりント
アップしお、その倉数が n 回に達したかどうかを刀定するのが
䞀般的で、今回の堎合、
(1) i を 0 で初期化
(2) i が n より小さければ { } 内を実行し、(3) ぞ進む。
そうでなかったら(i が n 以䞊だったら)、(4) ぞ進む。
(3) i を +1 カりントアップしお、(2) ぞ戻る。
(4) for 文を終了する(ルヌプを抜ける)。
ずいった制埡を for 文で行うための刀定に、i が䜿われおいたす。

# i は n が 30*5=150 なので、0,1,2,...,147,148,149 ず進み、
# { } 内が150回実行された時点で 149 ですので、(3) で +1
# されお、(2) に戻っお i < n を刀定し、150 < 150 ずなるため
# 条件が成立せずに (4) に制埡が移っお、ルヌプを抜けたす。

今回のケヌスでは、かならずしも i は䜿甚する必芁はなくお、
手前で n を求めおいお、以埌、ルヌプ回数の刀定以倖には䜿わ
れおいないこずから、この n をカりントダりンするこずでも
n 回のルヌプを実珟できたす。

この堎合、n は既に初期化されおおり、刀定条件ずしおは、
n が 初期倀 150 から始たっお、1回ルヌプを実行しおから
1カりントダりンするず149ずなり、150回ルヌプを繰り返すず、
150回目のルヌプを実行しお1カりントダりンするず、
0になりたす。
぀たり、n は初期化枈みで、n が 0 より倧きいずき凊理を
繰り返し、各凊理埌 1 づ぀カりントダりンしお、0 以䞋で
抜けるようにすれば、150回のルヌプが実珟できるずいう
こずになり、これを for 文で衚珟するず
for ( ; n > 0; n--) {

}
ずなりたす。
もちろん、n の初期化は for 文で行っおもかたわないのですが、
for (var n = 30 * synd.length; n > 0; n--) {

}
少し長くなりたすので、奜みの方で良いかず思いたす。

--
杉田
sugi...@bk.iij4u.or.jp

新着メヌル 0 件