2008-08-01から1ヶ月間の記事一覧
perlのprint関数は標準でバッファをするみたいです。 なぜ? システムコールを少なくするため。 printが呼び出されるたびにシステムコールをするのと、 バッファにある程度、溜まったらシステムコールするのとでは 後者のほうがシステムコールを少なくできる…
Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle 大きさが決まっていないものを配列に格納したいときは、ArrayListを使うみたいです。 今のところ、よく分かってません。 public class Test { public static void main…
直訳すると、頭の上の。 コンピュータ用語で、目的としている処理を達成するうえで余計にかかってしまう処理のことを言う。のかな多分。 使用例 「オーバヘッドが大きすぎます。書き直して下さい。」 「バッファを使えば、オーバーヘッドを少なくできます。…
Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle Calendarを使ってみた。 1 import java.util.Calendar; 2 3 class CalendarTest { 4 5 public static void main(String[] args) { 6 7 Calendar day = Calendar.getIns…
perlでも配列変数を作成することができます。 $変数名[インデックス] 配列変数への値の代入は以下のように $arg[0]=0; $arg[1]=1; $arg[2]=2; します。でも、配列の数が10個とかに増えたときにこのような代入をするのは面倒です。 そこで @配列名 という記…
リストコンテキスト 配列全体を表す。 ($a,$b,$c) = @arg; @arg = (0,1,2); @arg2 = @arg1; スカラーコンテキスト 数値として振る舞う $value = @arg; @arg > 0; @arg + 1
@arg = (0,1,2); @arg = (0,1); #arg[2]は削除される $arg[5] = 5; @arg = (0,1); #$arg[0]と$arg[1]しか存在しなくなる。他は削除される。 @arg = (0,1); $arg[5] = 5; # @argの中身は # (0,1,undef,undef,undef,5)
変数aと変数bの値を交換したいとき、 ($a,$b) = ($b,$a); ということができます。 cのように中間変数を挟む必要はなくなります。
@配列名 のような配列を作ると、次のような決まりになります。 $#配列名 には 最後の要素のインデックスが代入される。 @配列名を数値として扱うと配列の個数になる。#!/usr/bin/perl @arg = ("one","two","three","four","five"); print "$arg[$#arg]\n"; p…
スライスとは? 配列の一部を使ったリストのことを言います。 具体例 配列argの最初と2番目を交換 @arg[1,0] = @arg[0,1]; 配列argの偶数番目だけを取り出し、新配列に代入 @arg2 = @arg[0,2,4,6,8,10,12]; リストからもスライスができます。 @arg = (10,20,…
whileやforみたいな、繰り返しを行う制御文。 #!/usr/bin/perl @arg = 1..10; $sum = 0; $tmp = 0; foreach $tmp (@arg) { $sum += $tmp } print "$sum\n"; 結果 55 foreachの処理は 配列argの$arg[0]の値を$tmpにセットして、$sumに加えます。 以下等同様に…
die 引数 この命令は引数のメッセージを出力して、プログラムを終了します。
コマンドラインからプログラムに渡す引数は配列ARGVに代入されます。 ARGV とは argument(引数)のvalue(値)の略です。 $ ./test.pl 1 2 3 4 5 と引数を与えて、プログラムを実行すると、 $ARGV[0] = 1; $ARGV[1] = 2; $ARGV[2] = 3; $ARGV[3] = 4; $ARGV[4] …
evalとは、evaluate(評価する)という英語の略。 eval(引数); の形式で使い、受け取った引数をPerlプログラムとして評価します。 1 #!/usr/bin/perl 2 3 print eval($ARGV[0])."\n"; 実行してみる $ chmod +x test.pl $ ./test.pl 1+2 3
前置演算子 int x = 1; int y = x++; // y=1 , x=2 後置演算子 int x = 1; int y = ++x; // y=2 , x=2 応用 int x = 2; int y = (x++) * (x + 3); このプログラムを実行するとxとyの値は x = 2; y = 12; となる。 (x++) は 2 と評価される。xの値は3に。 (x …
for(i=0;i<n;i++) { ... } for(i=1;i<=n;i++) { ... } for(;n-->0;) { ... } for(;--n>=0;) { ... }</n;i++)>
while (true) { ... } for (;;) { ... |
break; この命令を、while文やfor文などのループの中で使うとループの外へ抜け出すことができます。 実際には、ループを脱出する命令last - rderaログで書いたperlの命令lastのように無限ループを意図的に作り、その中でifによる条件文でループの外へ抜け出…
continue; このcontinue文が実行されると、ループ本体の残りの部分が飛ばされ、ループの末尾にプログラムの流れが移動します。 while (true) { ... if (条件文) continue; //.............................................. //ifの条件に当てはまり、contin…
base64コマンドの使い方: UNIX/Linuxの部屋 base64方式のデコード、エンコードをするコマンド base64 inputfile outputfile -e エンコード -d デコード macだと、標準では組み込まれていないようなので、portでインストールする。 $ sudo port install base6…
javaでのコメントの記述方法は3種類あります。 /* コメント ..... ..... */ /** コメント ..... ..... */ // コメント
初期化していない変数を使うと怒られます。 int x; System.out.println("x="+x); //エラー こんな感じで。 変数 x は初期化されていない可能性があります。 System.out.print("x="+x); ^ しっかり、初期化しましょう。 int x=0; ちなみに複数の変数をまとめ…
import java.util.Scanner; class Test { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); int x = stdIn.nextInt(); System.out.println("x="+x); } } 変数xに標準入力から整数値を読み込み、標準出力に出力する。 実行…
javaが標準で提供している型のことを基本型、または、プリミティブ(primitive)とか呼んだりするみたいです。 基本型には次の2つの型があります。 数値型 論理型 数値型 数値型は2つの型があります。 整数型 浮動小数点型 整数型 byte short char int long …
1 import java.util.Random; 2 3 public class Test { 4 5 public static void main(String[] args) { 6 Random rand = new Random(); 7 System.out.println(rand.nextInt(100)); //0〜99の乱数を出力 8 } 9 10 } 以下のようにインスタンス化しているが、種…
関係演算子 成立すればtrue、そうでなければfalse x < y x > y x <= y x >= y 等価演算子 成立すればtrue、そうでなければfalse x == y x != y 論理補数演算子 xがtrueなら、false xがfalseなら、true !x 論理積演算子 xとyの両方ともtrueであればtrueを、そ…
判定のための制御式は整数型でなければならない。 switch (整数型) ラベル 制御式を評価が行われ、その結果が0だとすると、 case 0: に飛ぶ。 defaultラベル 制御式を評価した結果がどのcaseとも一致しないと、 default: に飛ぶ。 break文 break; break文を…
ブロック内で宣言された変数は、ブロック内でしか利用できません。 if (a>b) { int tmp = b; b = a; a = tmp; } System.out.println("tmp="+tmp); //エラー 変数tmpはブロック内のしか使えない 実行してみると $ javac Test.java $ java Test シンボルを見つ…
perlは変数が数値として振る舞うこともできますし、文字列として振る舞うこともできます。 次のように変数を初期化し、数値として比較すると両方の変数は等しいです。 $a = "1"; $b = "01"; if ($a == $b) { //等しい ... } しかし、数値としてではなく、文…
perlでは変数が数値としても、文字列としても振る舞うことは文字列として比較する - rderaログで述べたが、それに関連してperlでは何を真と決め、何を偽と決めているかについて学びます。perlでは数値の場合、0以外を真、0を偽としています。 つまり、 if (1…