fc2ブログ

Javaをつつく5-if文。上から来たものを左右へ捌く!

今回は制御構文の一つであるif文をつつくピヨ♪おっと、制御構文の説明がまだだったよね。制御構文とは何かという事について囀るピヨ♪プログラムは普通、上から下へと処理を実行していくだけなんだ。だけどそれだけじゃあ満足できないよね。だって、「在庫数がマイナスになった時の処理」とか「ボタンが押されたらどうする」とか・・・色々な処理が要るピヨ。そこで考え出されたのが制御構文なんだ。この構文を使うと上から下以外の流れに出来るピヨッ♪
理屈ばかりじゃあ面白くないから早速プログラムをつつこう♪


public class BigOrSmall {
    
    public static void main( String args[] ) {
    
        //先ずはぼちぼちする
        int number = 0;
        if ( number < 0 ) {
            System.out.println( "マイナス値なんて後ろ向き過ぎるピヨッ" );
            System.out.println( "もっと大きくいこう♪" );
        } else if ( number < 50 ) {
            System.out.println( number + "は小さい数値ピヨ♪" );
        } else {
            System.out.println( number + "は大きい数値ピヨ♪" );
        }
        
        //ちょっと落ち込んだ
        number = -100;
        if ( number < 0 ) {
            System.out.println( "マイナス値なんて後ろ向き過ぎるピヨッ" );
            System.out.println( "もっと大きくいこう♪" );
        } else if ( number < 50 ) {
            System.out.println( number + "は小さい数値ピヨ♪" );
        } else {
            System.out.println( number + "は大きい数値ピヨ♪" );
        }
        
        //小さいから数値を変更♪
        number = 50;
        if ( number < 0 ) {
            System.out.println( "マイナス値なんて後ろ向き過ぎるピヨッ" );
            System.out.println( "もっと大きくいこう♪" );
        } else if ( number < 50 ) {
            System.out.println( number + "は小さい数値ピヨ♪" );
        } else {
            System.out.println( number + "は大きい数値ピヨ♪" );
        }
    }
}


どう?if文がなんとなく分かったかな?一応説明しておくね。if文は・・・


if ( 条件 ) {
    //条件を満たした時の処理
} else if ( 他の条件 ) {
    //前とは違う条件を満たした時の処理
} else {
  //全ての条件を満たしていない時の処理
}


という具合で記述するピヨ♪この文は基礎中の基礎だけど、非常に使用頻度が高いからしっかりと覚えておこう。制御構文を疎かにする者はプログラミング出来ないピヨッ!プログラミングを始めた頃は高度な構文が使いたくなるものだけど、基礎が一番大事なのであせらずしっかりとマスターしよう♪今回はこれでおしまい♪
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

Javaをつつく4-定数。言えるのは一度きり♪

前回は変数をつついたから、今回はその逆の定数をつつくピヨ♪逆と言ったわけは、定数は宣言時の値から変更できないからなんだ。何でこんなのがいるのかと言うと、プログラムは直書きが好まれないからなんだ。直書きというのはこういうプログラムを言うピヨッ。

int i = x * 3.14

if ( i == 3.14 ) ...

こういったプログラムが好まれない理由は、更新の問題があるからだッピヨッ!例えば、ゆとり教育でパイを3.14から3に変更する時、全プログラムを3.14から3へ変えなくちゃならない。そんなことをすると、更新漏れが生じるし、可読性が低くなるんだ。プログラミングをしている最中は9270とかでも意味が分かるかもしれないけど、後で見た人は「くになれ?どういう意味だ???確かに今この仕事を請けたことを悔いているピヨorz」となるピヨォ。これを防ぐには、1度だけ指定できる変数を用意すると効果的ピヨッ♪それが定数の正体ピヨ♪
そろそろ疼いてきたよね?お待たせしました。プログラムピヨッ残さず食べてよ♪


public class constVariable {
    public static final int niceNumber = 914; //ピヨ

    public static void main( String[ ] args ) {
    	System.out.println( "ボクの好きな数字は" + niceNumber );
    	System.out.println( "何で" + niceNumber + "が好きかって?" );
	System.out.println( "それはねぇ、PIYだからピヨ♪" );
	System.out.println( "このナイス数値" + niceNumber + 
            "は変更しちゃ駄目ピヨ" );
	System.out.println( "この下のコメントはずしちゃ駄目ッ" );
        //niceNumber = 18;
    }

}


念の為に言っておくけど、コメント外したら駄目だよ。本当に外したら駄目ピヨ。あーあ、やっちゃった♪変更できないって旨のエラーが出たよね。このように定数をしておくと、他の開発者が変更する事を防げるピヨ。ちなみに、Javaではとにかくfinalキーワードを使いまくるピヨッ(笑)その理由はねぇ・・・おいおい説明するピヨ♪じゃあ今回はおしまい♪

テーマ : プログラミング
ジャンル : コンピュータ

Javaをつつく3-変数。変な数じゃないピヨ。

さて、今日は変数をつつくピヨ♪変数とは変な数とか恋する数じゃなくて変化する数の事ピヨッ。それで、何で変化する数値が必要なのかと言うと、プログラムは数に名前をつけて抽象的に扱うからなんだ。初心者には分かり辛いと思うからもうちょっと具体的に説明するピヨ。みんな、日常生活で34とか言う事は無いよね?こんな具合に・・・

Aさん「あっそこの34取って」
Bさん「????」

こんな具合に直接数を扱う事は無いはずピヨ。たまに出席番号とかで「34番の人前へ」とか言う時があるけど、それは34と言う名前(識別子)ピヨ。だから先ほどの例で言うと・・・

Aさん「そこの醤油を取って」
Bさん「あいよ」

てな具合で会話するよね。だから、初めてプログラミングをした人が変数に対して、違和感が持つそうだけど、日ごろ数値を抽象化することは誰でも自然に行っている事なんだ。だから、そんなに身構えなくとも使っていれば直ぐに分かるピヨッ♪
じゃあそろそろ、説明だけだと面白く無いからプログラムをつつくピヨ♪


public class variable {
   
    public static void main(String[] args) {
    	//数に名前をつけるピヨ
    	int number = 10;
    	System.out.println( number );
    	
    	//変化した♪
    	number = number + 10;
    	System.out.println( number );
    	
    	//後で値を付けることも可能ピヨ
    	char a;
    	a = 'a'; //文字は必ず1文字
        System.out.println( a );
    	
    	//文字列は''じゃないよ
    	String name = "indre";
        System.out.println( name );
    }
}


実行してみて♪プログラムの内容が分かったかな?変数は使う前に○○を使うよーと宣言する必要があるピヨ。ボク等と違って、コンピューターは赤子みたいなものだから、どんなに当たり前だと人間が思っている事でも記述する必要があるピヨ。変数の宣言の仕方は・・・


型名 変数の名前 =
※後で値をつけてもOK


という決まった形式で行うんだ。型名って何?と思う人もいるだろうけど、それは今の所物の名前と思うと良いピヨ。何故そんな必要があるのかはおいおい分かってくるようにするピヨ。今回はこれでおしまい。じゃあねー。


バサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ


テーマ : プログラミング
ジャンル : コンピュータ

Javaをつつく2-算術演算子。やっぱり計算が出来なくっちゃ駄目♪

プログラムといえば、一番必要なのは計算ピヨ。電子計算機が計算できなきゃお話しにならないからね♪ということで、Javaの演算子をつついてみたピヨ♪


public class opeSample {
    public static void main( String args[] ) {
	System.out.println( 2 + 2 );
	System.out.println( 2 - 2 );
	System.out.println( 2 * 2 );
	System.out.println( 2 / 2 );
        System.out.println( 10 % 3 ); //剰余算ピヨ
    }
}


このプログラムをJavaをつつく0ーコマンドラインでコンパイル♪を参考にしながら実行してごらん。コンソール画面に答えが表示されるピヨね♪今回は短いけども、始めっから飛ばしたら駄目だから今回はこれでお終いにするピヨ♪

テーマ : プログラミング
ジャンル : コンピュータ

Javaをつつく1ー基本型。原子みたいだね♪

今回はJavaの基本となる型をつつくピヨ♪プログラム言語を覚える際に、ボクが始めの方でつつくのが基本型なんだピヨ。理由は全ての基礎だからだピヨッ。特に型重視型のオブジェクト指向言語では重要ピヨ。本当に根源的な型はobject型なんだけど、実際にプログラミング使う比率が高いのは基本型だからね♪
ということで基本型を投下するピヨッ♪


バサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ


【Javaの基本型】
  • byte・・・符号あり1バイト。-128~127。
  • short・・・符号あり2バイト。-32,768~32,767。
  • int・・・符号あり4バイト。-2,147,483,648~2,147,483,647。
  • long・・・符号あり8バイト。-9,223,372,036,854,775,808~9,223,372,036,854,775,807
  • float・・・符号あり4バイト浮動小数点。
  • double・・・符号あり8バイト浮動小数点。
  • boolean・・・真偽。trueかfalseの値となる。
  • char・・・Unicode文字。


ざっと見たところ、基本は符号ありピヨね。それと、複素数などの難しい型は基礎型じゃないみたいだね♪JavaはC++の複雑さに反旗を翻して生み出された言語だからかな?最近はそうでもないけど、昔Java派はかなりC++を攻撃したピヨ。これは、古い書籍などに痕跡が残っているピヨ。例えば、Core JAVAという書籍では繰り返しC++を非難しているピヨ。
これは言語の商業戦略でよくある手だけど、設計思想が違う言語を非難しても何もうまれないと思うピヨ。設計思想が違うんだから違いは当たり前。そこを貶めて優位に立とうというやり方は汚くて見苦しいピヨ。だから、最近Java派がC++を攻撃しないのでほっとしているピヨ。ボクが一旦Javaを止めたのはそういった理由も一因としてあったピヨね。
おっと、話しが脱線したけど基本となる型は覚えておこうね♪

テーマ : プログラミング
ジャンル : コンピュータ

Javaをつつく0ーコマンドラインでコンパイル♪

このシリーズでは文法を解説するピヨ♪対象者はJavaの初心者ピヨ♪
第0回目はコンパイル方法を囀るピヨッ♪ボクは初心者に対してはコマンドラインでする事をお勧めしているピヨ。それは何故かと言うと、統合開発環境頼りでは本質が見えなくなるからだピヨォッ!それに一々統合開発環境を立ち上げるのは面倒ピヨ。 てなわけで、早速Javaのコマンドライン操作法を囀るピヨ♪
Javaをコマンドラインで扱うにはJavaコンパイラのフルパスを探す必要があるピヨね。jdkというフォルダがどこかにあるはずだから探してね♪探し終わったら、jdk直下のbinフォルダへのパスをメモ帳などに記録しよう♪その作業が終わったら、環境変数の末尾へそのパスを貼り付けるんだ。例えば・・・

JavaコンパイラがC:\jdk1.6.0_8\binにある場合
コントロールパネル→システム→詳細決定→環境変数の操作を行い、PATHの最後に
;C:\jdk1.6.0_8\bin;
を追加するピヨね♪

環境変数にパスを追加する作業が終わったら、コマンドプロンプトでjavacと入力してEnterキーを押そう。そうしたら、正常に環境変数が設定されていればオプションの説明が表示されるピヨ♪どう?できた?出来たら次の説明に移るピヨ♪


バサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ


次はサンプルプログラムをコンパイル&実行してみよう♪先ずはサンプルを格納するフォルダを作るピヨ♪名前は・・・JavaSampleとかがいいと思うピヨ。フォルダを作ったら、リンク先にあるHelloプログラムをメモ帳にコピペしてね。それが終わったら、ファイル名をhello.javaにして保存するピヨ。この時、hello.java.txt荷ならないように注意してね。これよくある間違いだから要注意!
プログラムファイルの準備が終わったら、いよいよコンパイルするピヨッ♪コマンドプロンプトを立ち上げて、から次のコマンドを打って先ほど作ったJavaのサンプル専用フォルダに移動しよう。

cd /d Javaサンプルへのフォルダパス

この時パス名が長いとよく打ち間違えると思うけど、その時はTABキーを使おう!TABキーを使えば入力補完してくれるピヨ♪便利だから積極的に使用しよう。
移動終わったよね?終わったらついにコンパイル♪次のコマンドを入力しよう♪

javac hello.java

エラーが何も表示されなかったらコンパイル成功!hello.classファイルが出来ているから

java hello

で実行してごらん♪やったね♪メッセージが表示される筈ピヨォ♪
今回の記事はこれでおしまい。これ以降の回はコマンドラインでするから何度かやってマスターしよう。いまさらコマンドラインをする事に抵抗があるかもしれないけど、統合開発環境で作業していたら絶対に見えない重要な事が見えてくるから、絶対にコマンドラインでコンパイルしよう♪

テーマ : プログラミング
ジャンル : コンピュータ

Javaを咥えてアルゴリズムをつつく0-基本選択ソート(型固定バージョン)。椅子取りゲームみたい。

この記事は「個別のアルゴリズムをつつく0-基本選択ソート。主は此処になおれ!」との連動企画ピヨ。詳しい説明はそちらを見てね。 そして、ボクの実装例を見る前に自分で実装を試みよう。
ではさっそく、つまらないものですがどーぞ♪


public class Main {
    public static void main(String[] args) {
        int values[] = new int[] {  9,3,5,6,2,8,7,0,1,4  };
        System.out.println("整列前のデータ");
        for(int i = 0; i < values.length; i++) 
            System.out.print(values[i] + "\t");

        System.out.println("\n整列後のデータ");
        int[] result = SelectionSort.sort(values);
        for(int i = 0; i < result.length; i++) 
            System.out.print(result[i] + "\t");
    }
}

class SortMan {

    //要素を昇順に整列する
    public static int[] sort(int values[]) {
        for(int sortPoint = 0; sortPoint < values.length - 1; sortPoint++) {
            int min = sortPoint;
            for (int index = sortPoint + 1; index < values.length; index++) {
                if( (int) values[ min ] > (int) values[ index ] )
                    min = index;
            }
            if( min != sortPoint) exchange(values, sortPoint, min);
        }        
        return values;
    }
    
    //要素を交換する
    private static void exchange( int values[], int destination, int source) {
        int tmp = values[ destination ];
        values[ destination ] = (int)values[ source ];
        values[ source ] = tmp;
    }
}


これは見ての通りint型に固定されているからあまりいい実装とは言えないピヨ。型が固定されていないバージョンは、また今度お見せするするピヨ。 それまでの間にこのプログラムを料理しよう。

テーマ : プログラミング
ジャンル : コンピュータ

Javaをつつくー基礎も大事。はじめましてJava。

インドリ「hello Java。久しぶり。君は人気あるよね。」

public class hello {
   
    public static void main(String[] args) {
        System.out.println( "hello indori");
        for ( int i = 0; i < 10; i++ ) System.out.print( i + " " );
        System.out.print( "\n" );
        System.out.println( "good-by\n" );
    }

}

テーマ : プログラミング
ジャンル : コンピュータ

プロフィール

インドリ

Author:インドリ
みなさん、はじめまして、
コンニチハ。

ボクは、無限の夢(infinity dream)を持つネタ好きな虹色の鳥インドリ(in dre)です。
色々な情報処理技術を啄ばむから楽しみにしてね。

http://twitter.com/indori
は別人による嫌がらせ行為です。
私とは関係ないので注意して下さい。
次はなりすましブログなどをするかもしれませんが、ここ以外でブログをするつもりがないので、ここ以外にインドリのブログがあったとしても無視してください。


何度言っても分からない人がいるので、ここにコメント欄へ書き込むときの注意事項を書きます。


一、社会人としてのマナーをわきまえましょう。
一、妄想に基づく書き込みを止めてください。
一、暴言の類は書かないで下さい。
一、某誹謗中傷サイトの書き込みは彼らの妄想に基づく書き込みですから無視して、ここへ書き込まないで下さい。
一、コメント書く前に他のコメントよく読んでから行って下さい。
一、言いがかかり等の行為を禁止します。
一、その他常識的に考えて迷惑なコメントはしないで下さい。


以上のルールを守れない人のコメントは削除します。



利用上の注意
ここに紹介してある文章およびプログラムコードは正確であるように心がけておりますが、内容を保証するものではありません。当サイトの内容によって生じた損害については、一切の責任を負いませんので御了承ください。


執筆したCodeZineの記事


【VB.NETで仮想CPUを作ろう】

  1. VB.NETで仮想CPUを作ろう
  2. レジスタの実装
  3. 仮想CPUのGUI化
  4. テストドライバの改良
  5. CPUの基礎動作の実装
  6. MOV命令の実装
  7. ADD命令実装
  8. SUB命令実装
  9. INC命令&DEC命令の実装と命令長
  10. MLU命令の実装とModR/Mについて
  11. DIV命令の実装とイベント設計について
  12. 機械語駆動式 関数電卓を作ろう!
  13. 機械語駆動式 関数電卓を作ろう! 解答編(前半)
  14. 機械語駆動式 関数電卓を作ろう! 解答編(後半)


【仮想ネットワーク実装でTCP/IPを学ぼう】
  1. TCP/IPの基礎と勘所
  2. ネットワークアクセス層の勘所
  3. インターネット層の勘所
  4. トランスポート層の勘所
  5. アプリケーション層の勘所
  6. セキュリティの基礎と仮想ネットワークの仕様
  7. GDI+と独自プロトコルの定義



【並列化】
インテル Parallel Studioを使って並列化プログラミングを試してみた
並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」


【TBBシリーズ】
  1. インテル スレッディング・ビルディング・ブロックの概要
  2. インテルTBBから学ぶループの並列化
  3. スレッドセーフとインテルTBBのコンテナ
  4. インテルTBBのスレッドクラス


【OpenMPシリーズ】
  1. OpenMPの基礎構文
  2. OpenMPの実行時ライブラリと並列ループ
  3. OpenMPのメモリモデルとfork- joinモデル

最近の記事
最近のコメント
月別アーカイブ
カテゴリ
Ada (9)
COBOL (5)
C (9)
C++ (11)
C# (370)
D (25)
Java (8)
Perl (1)
Ruby (14)
PHP (2)
Boo (2)
Cobra (2)
LISP (6)
F# (33)
HTML (0)
XHTML (0)
CSS (0)
XML (0)
XSLT (0)
Scala (4)
WPF (0)
WF (2)
WCF (0)
LINQ (4)
MONO (5)
Linux (0)
MySQL (0)
ブログ内検索
リンク
最近のトラックバック
RSSフィード
ブロとも申請フォーム

この人とブロともになる

QRコード
FC2カウンター