• ベストアンサー

繰り返し文

$repetition = 7;#繰り返す回数 $unit = 5;#増やす数値の単位 $number = 0; while(){ print "$number", "<br>\n"; } ↑をプリントした場合に↓のように表示させたいです。 0 5 10 15 20 25 30 繰り返し文の書き方がよくわからないのですが、このようなことがやりたい場合は、どのようにすればいいのでしょうか。

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

  • ベストアンサー
回答No.3

7回5づつ増やすというだけなら、 $repetition = 7;#繰り返す回数 $unit = 5;#増やす数値の単位 $number = 0; for $i(1..$repetition){ print "$number<br>\n"; $number+=$unit; } が好きです。 個人的には、変数(特に繰り返しのカウンタ)は、ちゃんと宣言(局所化)して欲しいので・・・ my $number = 0; for my $i(1..$repetition){ print "$number<br>\n"; $number+=$unit; } が良いな。 while 使わないけど・・・ 課題なんですか? こういう「何回繰り返す」って言う設問に、while使えってのはどーかと思う・・・ 初期値があって、終了条件までって時にしてほしい。 課題だったらで、設問者に対してですけれど・・・

MASTER-PPC
質問者

お礼

有難うございます。大変助かりました。 繰り返し文はいろいろあって、どのような時にどれを使えばいいのか、まだあまり理解できていないため、whileと書いてみました。 この場合はfor文がよいのでしょうか。勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

質問にあるように while文でやりたいのなら こんな感じ。 #幾つか修正しています use strict; use warnings; my $repetition = 7;#繰り返す回数 my $unit = 5;#増やす数値の単位 my $number = 0; while (--$repetition >= 0){ print "$number<br>\n"; $number += $unit; } 0<br> 5<br> 10<br> 15<br> 20<br> 25<br> 30<br> ・単に変数の内容を print するだけならダブルクォートで括る必要はありません。 ・use strict; しておきましょう なんかの課題のように思えるのは気のせい?

MASTER-PPC
質問者

お礼

有難うございます。大変助かりました。 課題ではなく趣味でPerlを少しずつ勉強しています。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

#Perl普段から使ってなくてやり方わからんので変数宣言省略 $repetition = 7;#繰り返す回数 $unit = 5;#増やす数値の単位 $number = 0; while($repetition > 0){ print "$number\n"; $number = $number + $unit; $repetition = $repetition - 1; }

MASTER-PPC
質問者

お礼

有難うございます。大変助かりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • perlの「until」ループ文

    こんにちは。以下のループ文ですが、 --- print "初期値を入力してください:\n"; $number = <STDIN>; chomp($number); until ($number > 16) { print "数値:$number\n"; $number += $number; } --- 実行画面で「2」を入力すると、 数値:2 数値:4 数値:8 数値:16 のように出力されます。 なぜでしょうか?2,3,4....16じゃないの? どなたか、教えてください。よろしくお願いします。

    • ベストアンサー
    • Perl
  • JSPのwhile文で1~5の☆でひし形を作りたい

    JSPのwhile文でひし形を作りたいのですが 半分しかできません。数値が固定になってしまいます。 どうやったらひし形ができますか?教えてください。 // 上り for (int i = 0; i < 5; i++) { for (int j = 0; j <= i; j++) { out.print("*"); } out.print("<BR>"); } // 下り for (int i = 0; i < 5; i++) { for (int j = 4; j >= i; j--) { out.print("*"); } out.print("<BR>"); }

  • 条件文の扱い方について

    こんにちは。現在、組まれていたCGIを編集しており、いろいろ試行錯誤した結果、煮詰まってしまったので知恵を貸していただきたいと思い投稿致しました。 Perlに関しては初心者で、編集しながら少しずつ理解するのがやっとのことなので、的違いなことを言っていたら申し訳ありません。 やりたいことは、外部から入力されたデータを表示させたいのですが $urlという変数が入力された場合と、そうでない場合に表示方法を変えたいのです。 ↓1.外部から入力するためのフォーム ------------------------------------ <form action="abc.cgi" method="post"> <input type="hidden" name="mode" value="regist"> お名前<br> <input type="text" name="name" value="" size="40"><br><br> URL<br> <input type="text" name="url" value="" size="40"><br><br> コメント<br> <textarea name="comment" cols="50" rows="7"></textarea><br> <input type="submit" value="送信する"> </form> ------------------------------------ ↓2.外部から入力されたものを、datファイルに書き出ししている部分 ------------------------------------ truncate(DAT, 0); seek(DAT, 0, 0); print DAT "$no\t$now\t$in{'name'}\t$in{'comment'}\t$ENV{'REMOTE_ADDR'}\t$in{'url'}\t\n"; print DAT @data; close(DAT); ------------------------------------ ↓3.datファイルからデータを読み込み、最後に表示するための部分(今回はここの部分の編集をしています) ------------------------------------ while (<IN>) { my ($no,$date,$name,$comment,$ip,$url) = split(/\t/); print "<div class=\"line_wrap\">"; print "<div class=\"line_left\">$date\n</div>"; print "<div class=\"line_right\"><a href=\"$url\">\n$comment</a>"; print "\n</div>"; print "</div>"; } close(IN); ------------------------------------ 今現在の状態では、URLが入力されていない場合でも、空リンクがついてしまいます。 それを、入力されている場合と入力されていない場合で変えたいのですが、Excelで言うif関数のようなもの(while?だとしたら、whileの中にwhileを入れられるのか、どう入れればよいのか・・・)を使わなきゃいけない、というところで行き詰ってしまいました。 (URLを入力しなくても、datファイルには“入っていないよ”という、“空”が入ってしまっていて、if系も使えないかもしれないと不安も感じています。) それ以外でも全然かまわないのですが、何か方法がありましたら お教えいただけるとうれしいです。よろしくお願い致します。

  • if文で、上手く表示されない

    お世話になります。 PerlのBBSを改造中です。 きちんと勉強してはいませんが、なんとなく弄ることは出来るレベルです。 今、ifで、表示の変更をしているのですが、上手く行かなくて困っています。 お分かりになる方、 何らかの原因に心当たりのある方、 どうぞよろしくお願いします。 ★━━━━━━━━━━━━━━━━━━━━★ データを入れているdatファイル内、 $astrologyというのに、「*Leo*」というのが格納されています。 …で、 if(!$astrology){ print "入ってない\n";} else{ print "入ってる\n";} …と入れると、「*Leo*」というデータが入っているわけなので、 「入ってる」と、表示されます。 ですが、 if($astrology == "*Aries*") {print "おひつじ座 <br />$astrology \n";} elsif($astrology == "*Leo*") {print "しし座 <br />$astrology\n";} else{print "その他<br />$astrology\n";} ・・・と、書いてみると 「 おひつじ座 *Leo* 」 と表示されます。 「*Leo*」と表示されているので、呼び込めていない訳ではないと思うのですが…。 ★━━━━━━━━━━━━━━━━━━━━★ 何が原因かわからないので、ちょっとしたアドバイスでも構いません。 ご返答よろしくお願いします。

    • ベストアンサー
    • Perl
  • While文を使って配列の中身を全て取り出すには

    よろしくお願いします。 $data=file("./log.txt"); echo "$data[0]<br>"; echo "$data[1]<br>"; echo "$data[2]<br>"; -----表示結果----- おはよう こんにちは こんばんは ------------------ 上記のプログラムを、行数が多いことを想定して While文を使い$dataの中身が無くなるまで log.txtのデータを全て表示するようにしたいと考えているのですが、 While文の条件部分をどのように記述いていいのか困ってます。 ご指導お願いします。

    • ベストアンサー
    • PHP
  • while文の内容を変数に取り込む方法

    PHPとMySQLを使って、顧客管理システムを作っています。 While文の内容を、変数に取り込む方法についてお尋ねします。 MySQLに登録されている名簿の名前を表示させるスクリプトが下記なのですが、 while ($row_s = mysql_fetch_array($rs_s)){ echo $row_s[name]. "<br>¥n"; } ここでechoされる内容を、変数に入れることはできないかと思っています。 下記のようにやると、一番最後の名前だけが変数 $name に入ってしまいます。 while ($row_s = mysql_fetch_array($rs_s)){ $name = $row_s[name]. "<br>¥n"; } 全部を取り込むには、どうすればいいでしょうか?いろいろやってみたのですが、うまくいきません。 わかる方いたら、教えて下さい。

    • ベストアンサー
    • PHP
  • cgiで文字列操作

    文字列$FILENAME1から★★より右側だけ取り出したいのですが、★★がない場合もあるので、 以下のようにしてみました。 -------------------- $FILENAME1 = "*****★★****"; print "文字列は「$FILENAME1」<BR><BR>\n"; $DIR = "★★"; $MOJISUU = length $DIR; print "探す文字列は「$DIR」<BR><BR>\n"; $position = index $FILENAME1,$DIR; print "$DIRの文字位置は「$position」<BR><BR>\n"; if ($position > 0){ $FILENAME = substr($FILENAME1,$position+$MOJISUU); print "$FILENAME<BR>\n"; } else { print "$FILENAME<BR>\n"; } -------------------- ★★が入ってる場合はうまくいくのですが、入っていない場合うまくいきません。 (結果が表示されない) どこを直したらいいのでしょうか?

  • ページの文字コードがUTF-8にならない

    PHP Version 5.1.6を使っています。 次のようにして、文字コードをUTF-8にしてコードもUTF-8で保存してアップロードし、 ページを表示しようとするとなぜか文字コードがShift_JISになったままで 何も表示されません。 ただ表示させてる"aaa・・・"をもう1行加えるとちゃんとUTF-8になり表示されます。 これから考えられる原因はなんなのでしょうか? print "<html>\n"; print "<head>\n"; print "<title>サンプル</title>\n"; print "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />\n"; print "</head>\n"; print "<body>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "</body>\n"; print "</html>\n";

    • ベストアンサー
    • PHP
  • while文を使った問題なのですが・・

    はじめまして。 C言語初心者です。 while文のところまでやっとたどり着きましたが、次の問題がどうしても解くことができません。 ********************** 整数を入力し、入力された整数の数だけ「*」を横一列に表示し、最後に改行するプログラムを while 文を使って作りなさい。 但し、0または負の値が入力された場合は、「*」は表示せず、改行のみを表示すること。 ********************** #include<stdio.h> int main(void) { int a; scanf("%d", &a); while(a!==0){ printf("%d*\n", a); } } こんな感じでつくってみたのですが、whileの条件部分がさっぱり分かりません。 int a の数字文だけ、*で表示する、というのも方法が思いつきません。 アドバイス、お願いいたします。

  • HTML文のOptionボタン値の抽出

    出力イメージ通りに出力したいのですが、Perl の print 構文が正しくない ようで思った通りに出力してくれません。 どなたか教えて頂けないでしょうか? ■ [検索]ボタンをクリックした後の出力イメージ ■ Hello 平成18年 bye ■ メニューのHTML文 ■ <HTML> <HEAD></HEAD> <BODY> <FORM action="select.pl" NETHOD="POST"> <SELECT name="combo1"> <OPTION value="8">平成17年</OPTION> <OPTION value="9" selected>平成18年</OPTION> </SELECT> <INPUT type="SUBMIT" name="SUBMIT" value="検索"> </FORM> </BODY> </HTML> ■ select.pl ■ #!C:/Perl/bin/perl use CGI; print "Content-type: text/html\n\n"; print "<html><body>\n"; print "Hello<BR>\n"; print $form->param('combo1') . "<BR>\n"; ← ここの構文が不明 print "bye<BR>\n"; print "</body></html>\n";