スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Adaをつつく6ーcase文。おばあちゃん複数から厳格に選ぶ。

前回if文をつついたから今回は複数条件分岐をつつくピヨ♪Adaでも複数の条件を判定する文があるピヨッ。Adaの場合はcase文で複数条件分岐を行うピヨォッチ。じゃあ早速、つついてみよう♪


with Ada.Text_Io; use Ada.Text_Io;
with Ada.Integer_Text_IO;

procedure CaseSample is

Num : Integer := 0;
Positive : Integer := 0;

begin
  --値を入力
  Put ("好きな数値を入力してEnterキーを押すピヨ♪:" ); 
  Ada.Integer_Text_IO.Get ( Num,  Positive);
  
  --入力値
  Put ( "入力された数値は" );
  Ada.Integer_Text_IO.Put ( Num, Width => 1 );
  Put ( "ピヨ♪" );
  New_Line;
  
  --case文
  case Num is
    when 0 => Put_Line ( "無我の境地だね♪" ); 
    when 3 | 6 | 9 => Put_Line ( "ピヨォーん" );
    when 10 .. 100 => 
      Put_Line ( "結構ありがちな数値だよね♪" );
      Put_Line ( "そうそう複数行ある場合はこう書くんだよ♪" );
    when others => Put_Line ( "予想外の数値だね♪" );
  end case;
  
end CaseSample;


どう?独特でしょ。=>記号を使う所なんか結構ユニークピヨ♪だけどそれは表面的な事で、Adaは厳格な言語なんだ。それこそが本当の特徴ピヨ♪例えば、othresを指定しないとエラーになるところなんか厳格ピヨッ。VBとかだと全ての条件に当てはまらない場合実行されないだけだけど、Adaだとエラーになるんだ。Adaおばあちゃんは本当に厳格だねぇ。あと、必ず=じゃなくてはならないから・・・

when Num < 0

だとエラーになるピヨォ!エラーメッセージを読むと、どうやらNum < 0の結果とNumの等価性を判定しようとしているらしい。それで、BooleanとIntegerの型が違うからエラーが発生するというわけ。うーん厳しいぃー。そこのところは融通して欲しいけど、そんな厳格さがAdaの売りピヨ。Num < 0の様な事をしたければif文を使おう!
スポンサーサイト

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

Adaをつつく5ーif文。おばあちゃん選択す。

みんな、そろそろ条件分岐したくなったんじゃないかな?ということで、今回はif文をつつくピヨ♪ 仕様書を見ながら打ってみたピヨ♪


with Ada.Text_Io; use Ada.Text_Io;
with Ada.Integer_Text_IO;

procedure IfSample is

Num : Integer := 0;
Positive : Integer := 0;

begin

  --値を入力
  Put ("好きな数値を入力してEnterキーを押すピヨ♪:" ); 
  Ada.Integer_Text_IO.Get ( Num,  Positive);
  
  --入力値
  Put ( "入力された数値は" );
  Ada.Integer_Text_IO.Put ( Num, Width => 1 );
  Put ( "ピヨ♪" );
  New_Line;
  
  --If文
  if Num < 0 then
    Put_Line ( "マイナス指向だね♪" );
  elsif Num > 10_000 then
    Put_Line ( "気が大きいね♪" );
  end if;
  
end IfSample;


どう?よくあるif文だねぇ。でも細かいところで注意するべきところがあるからそれを囀るピヨ♪
まず一つ目に、elsifである事に注意が必要ピヨ。else ifでもなければ、elseifでもないピヨ。ここ間違えやすいから要注意♪ 二つ目にend if のセミコロンに注意が必要ピヨ♪これも間違えやすいところピヨね。えっ?勿論ボクは・・・間違えたさ!エッヘン♪
if文はこれ以上つつくところがないから終わるピヨ。じゃあねー♪


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


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

Adaツールをつつく0-gnatcleanは使用禁止!

Adaル時に注意が必要ピヨ。
間違ってもgnatcleanは使用したら駄目ピヨォッ!!
間違って使うとAdaに必要なパッケージが消されてMake出来なくなる時があるピヨ。
AdaのMake時に発生する余分なファイルを消したい時はエクスプローラで直接消すといいピヨ。注意してね♪

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

Adaをつつく4ーリテラル。色々シ・テ・イ♪

今回は何をつつこうかなー♪そうだリテラルにしよう♪リテラルというのは、数値・文字・文字列などの事ピヨ。じゃあ、早速エイダル(Adaプログラミングを満喫する事)しよう♪


with Ada.Text_Io; use Ada.Text_Io;
with Ada.Integer_Text_IO;
with Ada.Float_Text_Io;

procedure Literal is
begin

  --String
  Put_Line ( "文字列" );
  
  --Char
  Put ( "キャラクタ:" );
  Put ( 'A' );
  New_Line;--改行
  
  --Integer
  Put_Line ( "様々な数値表現で17を指定するピヨッ♪" );
  Put( "2#1_0001#:" );
  Ada.Integer_Text_IO.Put(2#1_0001#, Width => 1); --2進
  New_Line;

  Put( "4#41#:" );
  Ada.Integer_Text_IO.Put(04#101#, Width => 1); --4進
  New_Line;  
  
  Put( "8#21#:" );
  Ada.Integer_Text_IO.Put(8#21#, Width => 1); --8進
  New_Line;  

  Put( "17:" );
  Ada.Integer_Text_IO.Put(17, Width => 1); --10進
  New_Line;  
  
  Put( "16#11#:" );
  Ada.Integer_Text_IO.Put(16#11#, Width => 1); --16進
  New_Line;
  
  --Real:浮動小数点
  Ada.Float_Text_IO.Put(0.36, Fore => 1, Aft => 2, Exp => 0); 
end Literal;


ご覧の通りAdaは、文字・文字列・数値・浮動小数点はもちろんの事2~16進数までサポートしているピヨッ♪進数を指定するには・・・


2~16までの数値#数値#


の形式で指定するんだ。つまり、何進数か指定して、シャープ記号で数値を囲むってわけだね。ちなみに、10進数は標準だから一々指定する必要は無いピヨ。
それと、出力関数に注目!型ごとに関数が違うピヨ。これはAdaが信頼性を重視した結果なんだ。それに、昔のプログラム言語はオーバーロードがなかったら型ごとに関数を用意するのは当たり前だったんだ。昨今のプログラミング言語が型を意識せずに関数を使えるのはオーバーロードのお陰ピヨ。
後、これはおまけなんだけどNew_Lineに気付いたかな?これは改行命令ピヨ。他にも04##などの柔軟な数値表現が出来る事を頭の隅においておこう♪

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

Adaをつつく3ー演算。エイダおばさんは数字に強い。

今回はAdaの演算機能をつついていくピヨ♪じゃあ、早速サンプルを召し上がれ♪

with Ada.Text_Io; use Ada.Text_Io;
with Ada.Integer_Text_IO;
procedure Operators is

X : Integer := 0;
Y : Integer := 0;

begin

  --足し算
  Put( "2 + 2 = " );
  Ada.Integer_Text_IO.Put( ( 2 + 2 ), Width => 1 );
  New_Line;
  
  --引き算
  Put( "2 - 2 = " );
  Ada.Integer_Text_IO.Put( ( 2 - 2 ), Width => 1 );
  New_Line;
  
  --掛け算
  Put( "2 * 2 = " );
  Ada.Integer_Text_IO.Put( ( 2 * 2 ), Width => 1 );
  New_Line;
  
  --割り算
  Put( "40 / 2 = " );
  Ada.Integer_Text_IO.Put( ( 4_0 / 2 ), Width => 1 );
  New_Line;
  
  --べき乗
  Put( "2 ** 3 = " );
  Ada.Integer_Text_IO.Put( ( 2 ** 3 ), Width => 1 );
  New_Line;
  
  --剰余(remainder)
  X := 11;
  Y := -5;
  Put( "11 rem -5 = " );
  Ada.Integer_Text_IO.Put( ( X rem Y ), Width => 1 );
  New_Line;

  --剰法(modulo)
  Put( "11 mod -5 = " );
  Ada.Integer_Text_IO.Put( ( X mod Y ), Width => 1 );
  New_Line;

end Operators;


よしgnatmakeっと・・・どう?Adaは色々な演算があるピヨね♪
特に、剰余と除法の結果の違いに吃驚したと思う。

11 mod -5 = -4

この計算法普通の人は馴染みないよね。この計算結果の理由を厳密に説明すると長くなるから、例えで説明するピヨッ。modの場合は割り切るために必要な数と考えるといいピヨ。符号については割る数と同じと考えておけばいいピヨ♪例えば、11 mod -5 の場合、2ではあまるから3で割り切るには足りない数値は・・・って風に考えるんだ。これは厳密な数学の考え方ではなけど、この記事は数学の記事じゃないから我慢してね♪
なお、どっちも正数の場合はtemとmodの演算結果は変らないピヨ。注意してね♪
あと、数値の表現法に気付いたかな?Adaでは数値にアンダーバーを使用できるピヨ。1_024とかにすると見やすくなって良いと思うピヨ。これ結構良いよね♪他の言語にも取り入れて欲しい機能ピヨ♪

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

Adaをつつく2ーコメント。あのぉ~一言言ってもいいですか?

今回は地味だけどコメントをつつくピヨ♪コメントは地味だけど、実務ではかなり重要な要素ピヨ♪また、特に慣れない言語を練習する時も積極的にコメントを書いていこう♪
じゃあ早速行くぞー


バサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ エイドリアーン


--ピヨピヨピヨピヨエイダピッピォピショピール
with Ada.Text_Io; use Ada.Text_Io;
with Ada.Integer_Text_IO;
procedure Hello is
begin
  Put_Line ( "hello indori" );
  for count in 0 .. 9
  loop
    Ada.Integer_Text_IO.Put(count, Width => 1);
    Put ( ' ' );
  end loop;
  Put_Line ( "" );
  Put_Line ( "good-by" );
end Hello;


見ての通り、Helloプログラムにコメントを鳥語で書いたピヨ。えっ?鳥語は読めない?これは失礼。コメントは誰が見てもわかるようにしよう。これ大事だっピヨッ♪分かりやすいコメントを書けない人は、開発チームで嫌われるピヨ♪ちなみにボクが書いたのは・・・



このプログラムは、Adaの基本構造、および、コンソール出力とループの書き方を示したサンプルプログラムです。


ピヨ。おっと、言い忘れたけど日本語が書けるというところに注目してね♪やったね♪
おまけに、--はーーでも正常にコンパイルできるピヨ♪このコンパイラよく出来ているね♪

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

Adaをつつく1ー実行ファイル生成。エイダおば様と作ろうファイル♪

インストールもう終わったよね?うん。ならOK♪次はAdaコンパイラのGNATを使って、実行ファイルを作ってみよう。最初のプログラムはやっぱりHelloプログラムにしよう♪やっぱり伝統は大事にしなくっちゃ。
先ずは、このプログラムを任意のディレクトリへhello.adaファイルとして保存しよう。なお、文字コードはShift-JISにしてね!絶対ピヨ。
ファイルを作ったら、コマンドプロンプトで次のコマンドを打とう。


cd /d hello.adaをインストールしたディレクトリ


出来た?例えば、CドライブにHelloプログラムを保存した場合


cd /d C:\hello.ada


にするんだ。OKだよね?この作業が終わったら後は・・・


gnatmake hello.ada


とするだけピョッ♪これでhello.exeが生成されるはずピヨ。もしコンパイルできない場合は、英語でエラーメッセージが表示されるピヨ。コンパイルが成功したら喜び勇んで、hello.exeとコマンドプロンプトに打ってEnterキーを押そう!駆け足だったけど、これがAdaの基本的な使い方ピヨ。次回からは自在にプログラミングが出来るように文法をつついていくピヨ♪

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

Adaをつつく0ーインストール方法。こんにちは。エイダおば様!

軍部あがりで厳格だけど信頼性が高いエイダおば様(Ada言語)を自分家に招く(Windowsへインストール)する方法は簡単ピヨ♪
このページからAutomated MinGW Installerをダウンロードして実行するだけピヨッ♪基本的にインストーラを進めていくだけだけど、言語を選択する画面が出てくるから注意が必要ピヨ。その時Adaを選択しないとインストールされないピヨ。そうなれば、アンインストールしてからインスールをやり直さないと駄目ピヨ。他にも方法はあると思うけど、ひとまずこうした方が安全なんだ。インスールが完了したら、コマンドプロンプトでgnatと打とう!英語で色々メッセージが表示されたら成功ピヨッ♪無事エイダおば様が君の家にいるって事ピヨ。次から具体的につついていくから楽しみにしてね♪

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

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

インドリ「hello Ada。未だに現役なんて凄いピヨね。」


with Ada.Text_Io; use Ada.Text_Io;
with Ada.Integer_Text_IO;
procedure Hello is
begin
  Put_Line ( "hello indori" );
  for count in 0 .. 9
  loop
    Ada.Integer_Text_IO.Put(count, Width => 1);
    Put ( ' ' );
  end loop;
  Put_Line ( "" );
  Put_Line ( "good-by" );
end Hello;


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

プロフィール

インドリ

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カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。