SSブログ
- | 次の30件

分岐のプログラム その5 [Java]

前回はifの条件式()内でequalsを使って、文字列の比較を行うことについて説明しました。

前回までは条件式の部分をさまざまに変化させて説明してきましたが、今回は少し発展させて3つ以上の分岐について説明していきたいと思います。 

前回まで説明してきた2つの分岐は、条件が1つあり、それを満たすかどうかでその後の実行結果が2つに分かれるというものでした。

例えば、

眠いなら、「二度寝してください。」、そうでないなら、「おはようございます。」

と表示させるプログラミングですね。 

 

今回説明するのは、簡単にいうと

天気が晴れなら〜、曇りなら・・・、雨なら…

のように実行結果が3つに分岐するプログラミングです。

 

それでは実際にソースコードをみていきましょう。

 

public class Main{
 public static void main(String[] args){
 
System.out.println("明日の天気を予報します。");
  int tenki=new java.util.Random().nextInt(3)+1;
  if(tenki==1){
   System.out.println("晴れ");
  }else if(tenki==2){
   System.out.println("曇り");
  }else{
   System.out.println("雨");
  }

 }

}

 

実行結果

明日の天気を予報します。

 

(ランダム生成した整数が1なら)

晴れ

(ランダム生成した整数が2なら)

曇り

(ランダム生成した整数がそれ以外なら)

 

条件分岐とは関係ありませんが、久しぶりに「整数をランダム生成するコード」と、演算子がでてきました。

まずはそれについて復習していきます。以下のコードです。

int tenki=new java.util.Random().nextInt(3)+1;

このコードの意味は

0~2までのランダムに生成した整数に1を足したものをint型の整数tenkiに代入する 

というものです。簡単にいうと、1~3までの整数をランダムで生成するコードです。 

(3)の()内にいれる数字によって、ランダムで生成する数字の個数が変化します。

(3)の場合は3個の整数を生成します。

この時注意が必要なのが、生成されるのが1,2,3ではなく0,1,2ということで0から始まるという点です。

そこで、「+1」とすることで、1,2,3のいずれかの整数を生み出したことになるわけです。

 

では、本題に戻ります。

3つ以上の分岐ですが、基本形をしっかり押さえていればたいして難しく感じないだろうと思います。

 

基本形

if(条件式){
実行結果① 
}else{
実行結果② 

 

 

3つ以上の分岐(今回)

if(条件式①){
実行結果①
}else if(条件式②){
実行結果②

}else{
実行結果③ 

 

2つの式を比較して異なっているのは赤い部分だけですね。

条件が3つ4つ・・・と増えていった場合、赤い部分をその分だけ増やせばいいというわけです。

 

もし条件①を満たせば実行結果①へ、もし条件②を満たせば実行結果②へ、もし条件③を満たせば実行結果③へ、もし条件④を満たせば実行結果④へ、・・・、それ以外の場合は〜。

 

といった感じですね。 

ただ、条件が増えれば増えるほど、コードが長くなり、スッキリしません。

次回は、コードが長くなった時にスッキリとさせるために使う「switch」を使った分岐について説明していきます。 


分岐のプログラム その4 [Java]

前回に続きifを使った分岐のプログラムについて説明していきます。

前回までは「==」、「>」、「>=」などの関係演算子や、「&&」、「‖」を使った「かつ」、「または」のプログラムについて説明しました。

今回はifの条件式()内で文字列の比較をするパターンについて説明します。

例えば、何かのサイトにログインする時に、パスワードやIDを忘れてしまった場合、「秘密の質問」の入力を求められることがありますね。 

そして、その質問の答えはたいてい文字列です。

前回までは数字の比較でしたが、文字列の比較ではまた違った式を使います。

 それが、「equals」です。

例えば、秘密の答えが太郎に等しいというとき

answer.equals("太郎")

というように表現します。

 

それでは実際にソースコードの例をみていきましょう。

 

public class Main{
 
public static void main(String[] args){
  System.out.println("秘密の質問の答えを入力してください。");
  System.out.println("あなたの犬の名前は何ですか。");
  String answer=new java.util.Scanner(System.in).nextLine();
  if(answer.equals("ポチ")){
   System.out.println("正解です。あなたのパスワードは12345です。");
  }else{
   System.out.println("違います。");
  }

 }

}

 

実行結果

秘密の質問の答えを入力してください。

あなたの犬の名前は何ですか。

 

(「ポチ」なら)

正解です。あなたのパスワードは12345です。

(それ以外なら)

違います。

 

ifの条件式()内は

answer.equals("ポチ")

となっています。

answerは、その前の行でString型の変数として文字入力を受け付けた変数ですね。

今回はこのString型の変数answerがポチと等しいかどうかの比較(=文字列の比較)を行うため、equalsを使っています。

数値の場合は==、文字の場合はequalsです。 

 

次回はもう少し発展して、三つ以上の分岐について説明していきたいと思います。 

 


分岐のプログラム その3 [Java]

前回はいろいろな関係演算子を使ったif分岐のプログラムを説明しました。

今回は条件式をさらに変えてみます。

「または」、「かつ」のパターンについて説明していきたいと思います。 

 

現実世界においても、「または」や「かつ」を使う場合がありますね。 

天気が晴れまたは曇りの場合、 外出する。

お腹が空いているかついろいろなものが食べたい場合、バイキングに行く。 

などですね。

 

もう少しプログラミングに近づけた例をあげると、

年齢層が10代または20代の場合、◯◯の宣伝を表示する 。

性別が男性かつスポーツ好きの場合、◯◯に関するニュースを配信する。 

 などです。

 

それでは実際にソースコードを見ていきましょう。

 

public class Main{
 public static void main(String[] args){
 
System.out.println("性別を入力してください。");
  int seibetsu=new java.util.Scanner(System.in).nextInt();
  System.out.println("1:男性 2:女性");
  System.out.println("年齢を入力してください");
  int age=new java.util.Scanner(System.in).nextInt();
  if(seibetsu==1 && age>=20){
   System.out.println("大人の男性諸君、こんにちは"); 
  }else{
   System.out.println("こんにちは");
  }

 }

}

 

性別、年齢の入力を受け付け、男性かつ20歳以上なら「大人の男性諸君、こんにちは」と表示し、それ以外の場合は「こんにちは」と表示するプログラムです。

ifの条件式()内で「&&」が登場しました。

「&&」は「かつ」という意味です。つまり、性別が男性という条件と、20歳以上という条件の2つを同時に満たしている場合でないと条件を満たしたことにはなりません。

今回のソースコードには登場しませんでしたが、「‖」は「または」という意味です。

仮に、今回のソースコードの&&を‖に変えた場合、性別が男性という条件、または年齢が20歳以上のどちらかいっぽうの条件を満たしている場合、条件を満たしていることになります。 

 

次回はさらに別パターンの例を説明していきます。 


分岐のプログラム その2 [Java]

今回も分岐のプログラムについて説明していきます。

前回、ifの条件式()の中に=を書く時は==となることについて説明しました。

今回はその他のパターンについてもみていきたいと思います。

関係演算子には他に「!=」、「>」、「>=」、「<」、「<=」 があります。

「!=」は「≠」のようなもので、等しくないことを表します。

「>」や「>=」は大小比較です。「=」の付いている方は値を比較したときに等しい場合も条件を満たすということです。

3>3は成り立ちませんが、3>=3は成り立ちます。

では、実際にソースコードの例をあげてみていきましょう。

 

public class Main{
 
public static void main(String[] args){
 
int a=2;
  int b=3;
  System.out.println("2と3の和積の大小比較を行います。);
  int wa=a+b;
  int seki=a*b;
  if(wa>=seki){
   System.out.println("和は積以上です。");
  }else{
   System.out.println("和は積未満です。"); 
  }

 }

}

 

実行結果

2と3の和積の大小比較を行います。

和は積未満です。

 

 

int型の整数a,bにそれぞれ2,3を代入します。

そして、その和をwa、積をsekiとします。

和と積を比較し、和が積以上なら「和は積以上です。」と表示します。そうでない場合(和は積未満の場合)は、「和は積未満です。」と表示します。

今回は積の方が大きいため、画面上には「和は積未満です。」と表示されます。 

 

このように、条件式の部分にはtrueかfalseを問うもの以外にも大小比較を入れることもできます。

次回もif文による条件分岐について説明します。 


分岐のプログラム その1 [Java]

前回、ifを使えば分岐させることができると説明しました。

今回は実際にソースコードの例を挙げて説明していきたいと思います。

 

public class Main{
 
public static void main(String[] args){
 
boolean nemuke=true;
  if(nemuke==true){
   System.out.println("二度寝しましょう") ;
  }else{
   System.out.println("おはようございます"); 
  }

 }

}

 

それでは順番にみていきます。

最初の2行はお馴染みの決まり文句のようなものですね。

 

そして3行目「boolean nemuke=true」 。nemukeは変数です。そして、booleanは真偽(true or falseを問う)データ型です。そして、trueで初期化しています。

「int a=3」と構造的には同じですね。

この場合は

int型の変数aに3を代入する

でしたが、上の例の場合は

boolean型の変数nemukeにtrueを代入する

となります。眠気がある場合はtrue、そうでない場合はfalseですね。

 

そして、いよいよでてきました「if」。

if(nemuke==true){
 System.out.println("二度寝しましょう");

はもし、nemukeがtrueなら(眠いなら)、{ } 内のことを実行します、という意味です。

ifの直後の()内に条件を書き入れ、その条件を満たす場合の行動を{}内に書き入れます。

簡単にいうと、

if(条件){
行動

}

ということですね。 

条件の部分でnemuke==trueのように=が2つになっています。ifの中で使われる演算子のことを特に「関係演算子」と呼びます。(ちなみに、前記事ででてきた演算子は厳密には代入演算子といいます。)

ifの条件式では=が2つと覚えておきましょう。 

 

 

そして次の

else{
System.out.println("おはようございます");

 

これは、「そうでない場合は{}内の行動をする」という意味です。elseは英語で「他の」といった意味があります。

ひらたく言うと、もし(if)〜なら・・・、そうでないなら(else)・・・ということになります。 

つまり、今回のプログラムでは、もし眠気がないなら、画面に、おはようございます、と表示させます 

 

まとめると基本形は以下のようになります。

if(条件){
行動①
}else{
行動②

}

 

条件を満たすなら行動①へ、満たさないなら行動②へということです。 

これがifの最も基本的な構造です。

次回は条件式の部分を変えて、もう少しifの基本形に慣れていきましょう。 


枝分かれさせたいならif [Java]

前回、プログラムは①順次、②分岐、③繰り返しの三つでできていると説明しました。

今回は②分岐について説明していきます。

分岐は簡単にいうと枝分かれのことです。

夕食を食べた後、お風呂にはいるor寝る。 

休日、出かけるor家で過ごす。

道に迷った時、右に進むor左に進む。などなど

二つ以上の選択肢があることを分岐といいます。日常レベルではあまり意識しないかもしれませんが、人はどちらかを選択する時に必ず何かしらの判断基準があります。

例えば、休日、出かけるor家で過ごす、では疲れているのか、そうでないかなどです。

 

プログラミングではこういった判断の条件を「if」で表します。 

「もしも〜なら・・・」といった具合ですね。

そして、その条件に合わない場合、つまり「そうでないならば」、「else」で表します。 

もし〜なら・・・、そうでないなら…。(if条件・・・、else…)といった具合ですね。

 

次回は実際にプログラムの例を挙げて説明していきます。 


知財戦略の教科書 工夫と知識はお金に換えられる!(佐原雅史) [読書感想文]

今日は読書感想文書きたいと思います。

今回読んだ本の内容は、気になった部分を簡単に要約すると、
新しい商品を開発する時には特許を取得し、参入障壁を構築することが重要だということ。


よく、1番手は売れなかったのに、後追いの2番手は売れたなどの話を聞きますね。
ビジネスはタイミングが大事だと言われていますが、それは同時に他社の商品を真似ることの大事さも示しています。

仮に良い商品を作っても、大企業に真似されてしまっては価格競争やマーケティングで勝つことが難しくなるため、真似されないようにしよう!というのが特許です。

ただし、特許を取らない方が良い例もあるそうです。

例えば、コカコーラやケンタッキーフライドチキン。

特許を取ると、たしかに一時的に商品を守ることができます。
しかし、特許取得から1年6ヶ月後には特許明細書が公開されてしまうため、うまくそこをかいくぐりながら似たような製品が開発されてしまう可能性があります。

そこで、商品を守るためにあえて特許を取らないという選択肢もあります。

コカコーラやケンタッキーフライドチキンは商品を見たり、食べただけでは作り方がわかりません。
ですから、特許を取らなくても真似されにくいのです。


新しいアイデアを守るという発想で書かれた本でしたが、これからは大企業の数が減り、中小企業やフリーランスなどが増えると予想されているため、新しいアイデアをシェアするということも必要になってくるのかなーと、個人的には思いました。
自分自身に付加価値をつけるということはますます重要性を増すでしょう。

たった3つでわかる、プログラムの流れ [Java]

今回はプログラムの流れについて説明していきます。

先に言っておきます。今回説明することは、プログラミング以外のことにも通ずることで、難しくありません。 

プログラムを作るうえで、そのプログラムは①順次、②分岐、③繰り返しの3つの流れで構成されています

 

①順次

プログラムを上から順番に実行していく。

 

②分岐

条件によって、枝分かれする。

 

③繰り返し

ある条件が満たされるまで繰り返す。 

 

これら3つを組み合わせれば、どんなものでもプログラミングすることができます。

以前の記事でも触れたように、→

 

 

プログラミングは現実にあるものを細分化して、コンピュータにもわかるように説明したものです。

ということは、どんなものでもプログラミングできるということを言い換えれば、逆にいうと、現実にあるどんなものでもこの3つの組み合わせを用いて説明でいるということになります。

 ということで、1日の生活を例に、この3つを詳しく説明していきたいと思います。

 

朝起きました。

↓順次

 朝ごはんを食べました

↓順次

歯を磨きました。

↓ 順次

服を着ました。

(友人との待ち合わせ。晴れなら大きな公園、雨ならカフェ)

分岐

(雨だったので)カフェにいきました。

↓順次

帰宅しました。

↓順次

カフェで食べ過ぎたので、疲れて上がらなくなるまで腕立て伏せすることにしました。

繰り返し

腕立て伏せがようやく終わりました。

↓順次

就寝 

 

 

通常は「順次」です。

しかし、「もしも、雨が降ったら〜」のように条件によって行動が変わる時は「分岐」となります。選択肢が複数ある状態ですね。

そして、腕立て伏せで「疲れるまで」のようにある条件を満たすまで同じことをやり続けることを「繰り返し」といいます。

 

次回は「分岐」について説明していきます。プログラミングでは分岐の際には「if」を使います。 


いろいろな演算子 [プログラミング全般]

演算子とは簡単に言うと四則計算でした。数学の計算ですね。
前記事→( http://weekly-programmer.blog.so-net.ne.jp/2015-07-05 )
ただし、プログラミングにおいては、見慣れない演算子の用法もあります。
前記事で説明した演算子は算術演算子と呼ばれています。

今回は①代入演算子と、②インクリメント・デクリメント演算子について説明します。


①代入演算子
代入演算子の代表格は「=」です。
数学だと、左辺=右辺ということで、等しいということを表しますが、
プログラミングにおいては少しだけニュアンスが異なります。
プログラミングにおいては、右辺を左辺に代入するという意味です。

例えば、
a=3
数学的にはaと3は等しいという意味になりますが、プログラミングでは3をaに代入するということになります。
この例だけだと、「あれ、右辺を左辺に代入するってことは、両辺が等しくなるんだから、結局同じじゃん!」とつっこまれてしまいそうですね。

ということでもう一つ例をあげます。

a=a+3

え?っとなった方はきっと数学的な視点でこの式を見ているのだと思います。
もう一度言います。
プログラミングにおいては、「右辺を左辺に代入する」という意味です。
aと3を足したものをaに代入します。
結局、aはa+3になります。
仮にaが5だった場合、5+3をaに代入するので、aは8になります。

少し違和感があるかもしれませんが、そういうものだと割り切るしかありません。

他には
+=といった書き方もあります。
a+=3
これは、
a=a+3と同じ意味です。
-など他の演算子に対しても同じような使い方ができます。



②インクリメント・デクリメント演算子
インクリメント演算子・・・a++
デクリメント演算子・・・a--
これは、1だけ増減したい時に使えます。
a=a+1や、a+=1のような場合に楽することができます。

public class Main{
 public static void main(String[] args){
  int a=3;
  a++;
  System.out.println(a);
 }
}


実行結果

4


演算子については、このようにプログラミング特有のものがあるので、慣れていきましょう。

次はプログラムの流れについて説明していきます。

命令実行の文 その3 [Java]

前回は、ランダムで数字を生成する文について説明しました。

今回は、文字や整数の入力を受け付ける文について説明します。

主な用途としては、ユーザーに氏名や年齢を入力してもらうときに使用します。

 

文字列の入力を受け付ける

String input = new java.util.Scanner(System.in).nextLine();

 

整数の入力を受け付ける

int input =new java.util.Scanner(System.in).nextInt(); 

 

見比べてみてください。

非常に似通っています。異なる部分はStringとint 、nextLineとnextIntですね。

簡単におさらいしながらこの二つの違いについて説明していきます。

Stringとintは変数inputに対するデータ型です。収納する箱の形状を表しているのでしたね。 

Stringが文字列を収納するデータ型であるのに対して、intは整数を収納するデータ型です。

ちなみに一文字だけ収納する場合はchar、大きな整数を収納する場合は long、小さな整数を収納する場合はshort(またはbyte)を使えばよかったのでしたね。

特に理由がない場合は、文字ならString、整数ならintで問題ありません。

ということで、今回の場合は文字の入力を受け付ける方にはデータ型としてStringを、整数の入力を受け付ける方にはデータ型としてintを使います。箱の中にいれるものを想定して、データ型(箱の形状)を決定すればよいわけです。 

 

続いて異なる部分としてnextLineとnextIntが挙げられます。

これについては意味を考えればわかると思います。

文字列の入力を受け付けるのでLineを、整数の入力を受け付けるのでIntを用います。どちらかややこしくなった時は、意味のうえから考えても違いがはっきりすると思います。

この二つの文はよく使う文なのでそのまま覚えてしまうのが良いと思います。

命令実行の文は覚えきれないほどの数があります。実際にプログラムを作る際には、「こんな命令あったよな・・・」と思い出したり、調べたりしながら作業していくことになりますが、よく使う文に関しては覚えてしまった方が効率が良いと思います。

理由は二つあります。

①調べる手間が省ける

②表記の仕方に慣れる

からです。一見、無意味に見える文字の羅列ですが、その一つ一つにちゃんと意味があります。

詳しくはもっとJavaのことを勉強していくうちに少しずつわかっていくので、今の時点では形ごと覚えてしまいます。

 

 

さて、それでは実際にこの二つの文を使ったプログラミの例を見てみましょう。

 

public class Main{
 public static void main(String[] args){
 
System.out.println("あなたの名前を教えてください。");
  String name = new java.util.Scanner(System.in).nextLine(); 
  System.out.println("あなたの年齢を教えてください。"); 
  int age = new java.util.Scanner(System.in).nextInt();
  System.out.println("こんにちは、"+age+"歳の"+name+"さん");

 }

}

 

実行結果

あなたの名前を教えてください。
ウィークリープログラマー
あなたの年齢を教えてください。
23

こんにちは、 23歳のウィークリープログラマーさん

 

このようなユーザーから入力を受け付けるプログラムを組んだ場合、プログラムは一時停止状態になります。

ユーザーが文字やら数字やらを入力するとそれが変数に代入されます。

 

命令実行の文は他にもたくさんありますが、あとはでてくる度にその都度説明することにします。

次回は演算子について説明します。

インクリメント演算子、ディクリメント演算子、そして、普段はあまり馴染みのない式の書き方です。 


命令実行の文 その2 [Java]

前回は、命令実行の文の中でも画面に文字を表示させる方法を紹介しました。
今回は乱数を発生させる文について説明します。


int r=new java.util.Random().nextInt(①);


これは乱数を発生させる命令です。
乱数とはランダムで生み出される数字のことです。

①には、乱数の上限値を指定します。ただし、その数字自体は含みません。
例えば…
①に5と代入した場合、0〜4(5は含まれない!)の数字がランダムで生成されます。

この生成された数字は右辺の変数であるrに代入されます。(rの部分は任意で変更可です。)
前回の画面に文字を表示させる命令と組み合わせると、
ランダムで生成された数字を画面に表示することができますね。

例)

public class Main{
 public static void main(String[] args){
  int r=new java.util.Random().nextInt(3);
  System.out.println("あなたの運勢は、"+r+"です。");
  System.out.println("0:大吉 1:吉 2:凶");
 }
}


実行結果

あなたの運勢は、1です。
0:大吉 1:吉 2:凶


ランダムで発生させた0〜2までの数字を画面上に表示させるプログラムです。
ちなみに0という数字を使わずに1〜3の数字を発生させたい場合は以下の方法が考えられます。

①rに1を足して新たな変数として定義する
int R=r+1;

②乱数生成の命令の後ろに+1(または++を挿入する
int r=new java.util.Random().nextInt(3)++;

③インクリメント演算子を挿入する
r++;



その他にも方法はありそうですが、一般的には③番の方法が好まれるようです。
インクリメント演算子についてはまた追い追い説明していこうかと思います。

次回は文字の入力を受け付ける文について説明します。

ハンドメイドペンケース [その他]

最近、プログラミングを勉強し始めたことで、ノートとペンを持ち歩くことが多くなりました。

これまでは、参考書にペンをはさめておくという感じで、ペンケースを使っていませんでした。
かばんの中で散乱したり、見つけるのに手間取ったり…

そんな状況を見かねたAさんがハンドメイドでペンケースをプレゼントしてくれました!

それがこちらです!
image.jpg
私はカメラを趣味としてやっています。(Nikon D7100愛用)

それをモチーフとしたロゴがステッチされています。
シャッターやフラッシュなど、特徴をよく捉えていて可愛らしいです。

裏面には…

image.jpg
DAIと自分の名前がステッチされています。
これまた字体がかわいらしいですね。

デニム地なので肌触りが良く、使い込むほどに味の出るハンドメイドらしい仕上がり。

中は灰色の布が裏地として使われています。

image.jpg
サイズ感も程よく、温もりのある風合い。

普段使うものにはこだわりたいですよね。

ちなみにこのペンケース、デニム地と布地の間に接着芯というクッション性のある素材が採用されていることで、頑丈さも兼ね備えています。

元々、ジーンズが作業着から生まれたことを考えると、この'タフさ'も男心をくすぐりますね。よくわかっています。

数ヶ月使用して見た後の変化が楽しみなペンケースです。

より一層、勉強に熱が入ります!
ありがとうございます^ ^

命令実行の文 [Java]

これまで変数を宣言する(int a=3;など)、演算(計算)をするといったことをやりました。
しかし、これはコンピュータ内部で行われることであって、実際にプログラムを起動した際には目で見て確認することができません。
これまでは裏方の部分を勉強してきたというわけです。

今回説明する命令実行の文は表舞台で活躍し、プログラムを起動した時に実際に目に見える形として表れる文です。
なんだかワクワクしてきましたね。

実はもうすでに一つ、命令実行の文は出てきています。


例)
public class Main{
 public static void main(String[ ] args){
  int a=3;
  int b=5;
  int sum=a+b;
  System.out.println(sum);
 }
}


おさらいです。

変数aをint型の整数だと定義し、その中に3を入れます。(ちなみにこの3を入れることを変数の初期化といいます)

変数bの中にも同様に5を入れます。

変数sumをint型の整数だと定義し、その中に変数aとbを足したものを入れます。

変数aとbはそれぞれ3と5なので、変数sumは8ということになります。

画面上にsumの値(=8)を表示します。


表示結果

8


このプログラムによって画面上に8が表示されました。

先ほどの話と合わせて説明すると、int型の変数a,b,sumを定義し、演算(今回の場合は足し算)するまでが裏方。

そして、画面に8と表示するのが命令実行の文ということになります。

具体的には、今回使った命令実行の文は、画面上に文字を表示する命令

System.out.println(引数);

です。

ここで引数という単語が出てきました。
これは、簡単にいうと、追加の情報です。

仮に中に追加の情報を入れずに実行した場合、画面に何かを表示するという命令ですが、肝心のその何かがわからないという状況に陥ってしまいます。

そこで、引数には、表示させたい情報を入力することになっています。


これに似た命令に

System.out.print(引数);

があります。
lnがついているかどうかの違いですね。
初めに紹介した方が改行を伴うのに対して、上の命令は改行を伴わず、連続して表示されます。

簡単な例を挙げて見比べてみましょう。

public class Main{
 public static void main(String[ ] args){
  System.out.println("あおき");
  System.out.println("だい");
  System.out.print("あおき");
  System.out.print("だい");
 }
}


表示結果

あおき
だい
あおきだい


この他にもキーボードから入力を受け付けたり、ファイルに書き込むなどさまざまな命令があります。
次回はその他の命令も少し紹介します。

変数の決まり [Java]

前回までに、変数はデータを収納するための箱であると説明しました。

そして、その箱の名前は自分で決めることができます。

例えば、数字を入れる箱なら、「int number」、「int suuji」、「int kazu」などわかりやすいように名付けます。

使用できるのはアルファベット、数字、「_」、「$」(、ひらがな、漢字など←推奨されません)です。 

ただ、厳密には変数として名付けることのできない名前もあります。 それが予約語と呼ばれる約50個の単語です。

 

①予約語は使用禁止 

その単語自体がJavaの中で意味を持ってしまっているため使用することができません。これまでにでてきたものだとint,doubleなどのデータ型、その他にも後々に紹介するif(条件分岐)などです。さらに詳しく知りたい方は→( 

 

②同じ変数名を再度使ってはならない

コンピュータは理解力のない体力馬鹿 ( )でも触れたように、同じ変数名を使用してしまうと区別することができません。

人間であれば、見た目も声も何から何までそっくりな双子がいても、バスケをやっているのか、サッカーをやっているのかなど、行動内容で見分けることができますね。

しかし、コンピュータは名前でしか判断できません。行動内容が異なっていても、名前が同じなら、コンピュータにとっては同じなのです。

ですから、もしも数字を複数種類使いたいのであれば、 int number_a, int number_b, int number_cのように別々の名前を付けなければなりません。

 

③大小文字、全半角は区別される

上の例でいうと、int number_aとint number_bが区別されるように、int number_aとint number_Aは区別されます。全半角についても同様に区別されます。

 

④ 複数の単語をつなげる場合は、2つ目以降の単語の先頭を大文字にする

int myNameのように、2つ目以降の単語の先頭を大文字にします。これは慣習のようなもので、必ずしもこうしなければいけないというものではありません。

プログラムをグループで作る、書いたプログラムを他者に見てもらうとなった時に見やすくするためです。 

 

 

変数の名付け方にも慣れてきたでしょうか? 

次回は「命令実行の文」について説明します。 


主なデータ型は4種類 [Java]

前回は、演算子について説明しました。

その中で「int a」のintの部分をデータ型、aを変数であると説明しました。

変数の部分は箱に入れる中身がわかるような名前にしておくということでした。

今回は、このデータ型について説明していきたいと思います。

 

データ型は、簡単に言うと箱の種類・大きさを表しています。

引っ越しで例えると、

Sサイズの段ボールなのか、Mサイズなのか、Lサイズなのか、

それとも、衣類を入れることができるハンガーボックスなのか、

家具を包み込むネット毛布なのか。 

収納するものの種類や大きさによって使い分けます。プログラミングでも同じです。

文字なのか、数字なのか(大きな数字なのかどうか)などによって使うことのできるデータ型が異なります。 

前回使ったのはintというデータ型でした。これは普通の整数を収納できるデータ型です。具体的には−2147483648〜2147483647の範囲内の整数を扱うことができます。 

intの他にも整数に対応したデータ型はありますが、intでほとんどの整数をカバーできるため割愛します。(long,short,byte)

 

さて、intは整数に限られました。小数の場合はどうなるのでしょう?

小数の場合は主にdoubleを用います。(floatについては割愛)

数字以外には文字が考えられますね。文字の場合は主に Stringを用います。ただし、一文字の場合に限りcharを用いても良いことになっています。

その他、YesかNoかで答えられるような二者択一のものに対してはbooleanを用います。収納するデータは必ず(yesなら)trueか(noなら)falseになります。

収納するデータによってこの型を使い分けます。 

主に、整数(int)、小数(double)、文字(string)、二者択一(boolean)の4種類を使い分けることになります。例えば、文字列のデータに対してintを使うとエラー(コンパイルエラー)になり、実行できません。種類が全く違うからです。

ただし、byte,short,intのデータ型をlongのデータ型に収納するのは可能です。種類が同じ、かつ、より大容量のデータ型なら可能なのです。(通常はintで事足りるのでintを使っておけば問題ないです。)

以下に簡単にデータ型についてまとめておきます。

 

整数 long     大きな整数
   int    普通の整数
   short  小さな整数

   byte   とても小さな整数


小数 double  普通の小数

   float    少しあいまいな小数

 


 

文字 String    文字列

   char      1文字


真偽 boolean  trueかfalse

 

 

 次はデータ型とセットになっている「変数」についてさらに詳しく説明していきたいと思います。

 

 


演算子を使って計算してみよう [Java]

前回は画面上に「こんにちは」と表示させるプログラミングについて説明しました。

今回は、四則演算です。足し算、引き算、掛け算、割り算ですね。

前記事 ( http://weekly-programmer.blog.so-net.ne.jp/2015-07-04 )で、プログラミングの書き出しの部分は毎回ほぼ固定だと説明しました。(神様と司令官の部分ですね。)

それでは、早速・・・

 

public class Main{
 
public static void main(String[] args){
 
int a;
  int b;
  a=3;
  b=5;
  int sum=a+b;
  System.out.println(a+ "+" +b+ "=" +sum);

 }

}

 

青色部分と赤色部分は前回と全く同じですね。メソッドブロック(緑色部分)が前回と異なっています。このメソッドブロックのソースコードについて説明していきたいと思います。 

 まず、一行目の「int a;」。これは、変数宣言と 呼ばれています。イメージとしては、「a」は箱を表していて、「int」はその箱の種類を表しています。ちなみにaのこと変数をintのことをデータ型と呼びます。

箱の中に入れるものが数字なのか、文字なのか・・・によって箱の種類が変わってきます。今回は数字なので、「int」という種類を用意しました。(詳しくはまた別記事にて)

そして「a=3;」は「a」という箱に「3」を入れるという意味です。

「b」についても同様です。今、aとbのそれぞれの箱に3と5が入っている状態です。

ちなみに、メソッドブロックの各行に登場する「;」は、日本語でいう句読点のようなものです。必ず書き忘れないようにしましょう。 

このようにやや面倒な手続きをしなければなりません。なんかプログラミングっぽいですね。しかし、実はこの4行、省略して書くことができるんです。ヒントは次の行「int sum=a+b;」。

これは

int sum;

sum=a+b;

と二行にかき分けることができます。この2つ、よーく見てください。 aとbのそれぞれと同じ書き方ですね。つまり、逆に2行を1行にまとめて書くと・・・

int a=3;

int b=5;

とそれぞれ書き換えることができます。すると、全文は以下のようになります。 

public class Main{
 public static void main(String[] args){
 
int a=3;
  int b=5;
  int sum=a+b;
  System.out.println(a+"+" +b+"="+sum); 

 }

 

だいぶすっきりしましたね。

そして、次は「int sum=a+b;」 。intという種類のsumという箱。そこにaとbを足したものを入れます。

このsumは合計という意味ですが、これはこちらが勝手に決めた名前です。tasiでも、plusでも、cでも好きな名前で構いません。ただし、コードが複雑になればなるほど、後で見返した時にわかりにくくなります。ですので、なるべく意味を連想できる名前が好ましいです。

System.out.println();は前回のこんにちはを表示させるプログラムでもでてきましたね。

今回は()の中が少し複雑です。()の中の決まりがあります。

①" "で囲む

②ただし、変数は" "の外に出す

③" "で囲まれた部分とそうでない部分が入っている場合、+でつなぐ

 つまり、" "で囲まれた部分はそのまま表示され、" "の外にある+は接着剤のようなものなので、表示されません。

上のソースコードだと、

実行結果 

3+5=8 

と表示されます。 長い割に意外とすっきり。System~以外の行は実行した時に画面には表示されない、いわば裏方となっています。

 

ちなみに、四則演算は、+、−、*、/です。

次回は今回説明を割愛した「データ型」について説明していきたいと思います。 


画面上に「こんにちは」と表示させる [Java]

今回は、画面に好きな文字を表示させるプログラムについてです。

public class Main{
 public static void main(String[] args){
  System.out.println("こんにちは");

 }
}

 

実行結果

こんにちは 

 

 なんとなく英語に近い言葉で書かれていると思います。

「こんにちは」の部分をさまざまに変化させて、好きな文字を表示させることができます。

水色と赤色の部分はほぼ定型文です。

赤色部分はクラスブロック、緑色部分はメソッドブロックと呼ばれています。プログラミングを行ううえで重要な概念のひとつにブロックというものがあげられます。

簡単にいうと、ブロックまとまりを表しています。

青色のブロックはこのプログラム全体を、クラスブロックメソッドブロックをそれぞれ包み込んでいます。

そして、メソッドブロックには主に実行させたいことを書いていくといった具合です。

詳しくはまた別記事にて書いていくので、今のところは「まとまりを表している」ということだけうっすらと理解していれば良いと思います。

実際にプログラミングをしていくとメインとなるのはメソッドブロッグです。その他の部分はほぼ定型文です。 

 

例えば、画面上に、おはようございます、こんにちは、こんばんはと三つ縦に並べて表示させたい時は以下のようなプログラミングになります。 

public class Main{
 public static void main(String[] args){
  System.out.println("おはようございます");
  System.out.println("こんにちは");
  System.out.println("こんばんは");

 }

}

 

青色部分が全体を包み込み、クラスブロックメソッドブロックを包み込みます。

コードが長くなってくると、この包含関係がわからなくなってきます。必ず「{」と「}」の数が一致していることを確認してください。

青色部分のMainの部分はこのプログラミングも名前とも呼べるべき部分です。

私のイメージですが、

青は神様

赤は司令官

緑は一般人

といったところでしょうか。神様は普遍的。変わりません。

Mainとmainの部分はそれぞれ、神様と司令官につけることのできる名前です。自分で自由に変更して構いません。 

赤の司令官は緑の一般人をうまく操ります。時には司令官どうしで一般人の受け渡しをすることもあります。

次回は「四則演算のプログラミング」について書きたいと思います。 

 

 


エンジニアが30歳までに身につけておくべきこと(椎木一夫) [読書感想文]

今回は本を読んで気になった箇所を何箇所かピックアップして、感想文を書いてみようと思う。


著者は日本経済の衰退を単純かつ明快に述べている。



『 日本が急成長を遂げた20世紀の工業化社会は、大量生産によって成り立っていた。
(中略)
 ところで大量生産を可能にする最も重要な要因は何か。生産量に見合った需要があること、すなわち大量消費である。今の日本のように、物があふれているけれども、とくに欲しい物がないという成熟社会では、大量消費を望むことは難しくなった。
 さらに日本の賃金水準が高くなり、(中略)、それほど高い能力を必要としない仕事に、日本で大卒一名を雇う金を使えば、賃金水準が日本に比べて低い中国では、何人もの人が雇えることになる。
 こうして日本では、製品を安く作れなくなった。従来の大量生産・大量消費路線を続けるなら、中国やインドなどの未成熟社会への輸出に力を入れることになるだろう。しかし、ただ安く作ることだけが重要ならば、日本は中国、インド、東南アジアなどの人件費の安い国に負けてしまう。同じ土俵で勝負しては、日本は中国に勝てない。
 このように、日本で作る物が高くて売れなくなったから景気がわるくなった。考えてみると、大きな要因というのは案外、シンプルな理屈なのだ。』



大量生産、大量消費の時代は終わりを遂げた。 
その役目は中国、インドなどの労働力の安い国に取って代わられたということだ。

その上で著者は今後の日本製品に期待することを以下のようにまとめている。



『企業が生き残るためには、労働集約型の製品ではなく、技術集約型の製品に力を入れざるを得ない。』



革新的、真新しさ、技術の飛躍的な進歩などがキーワードとなるだろう。

このような製品を開発する上で、不可欠な能力としてセレンディピティーという概念を挙げている。



 『 科学の世界では、セレンディピティー(serendipity)という言葉がよく使われる。これは「珍しい宝を偶然発見する能力」のことで、研究者が大発見したときに「寝ているときの夢で……」とか「ある女性が着ていた模様を見て、瞬時に氷解した」などのエピソードが紹介される。「積み重ねの結論」というよりも、傍から見ていると「偶然的なヒント、アイデアによって解決」されたように思える場合である。
(中略)
 いま起きている現象を頭の中で整理し、よく考え、自分なりの仮説を立てる。これがセレンディピティー修得の第一歩だ。』



ひらめきと言い換えることができるかもしれない。
そして、このひらめきは鍛錬によって鍛えることができるとしている。

そして、エンジニアとして成長していく上で、専門分野一つに特化するのではなく、いろいろな専門性を身につける必要があると言う。


横軸を専門分野、縦軸を能力とした時、
①I型: 一つの専門分野に特化するのではなく、
②T型: 周辺知識も修得する必要がある。さらに、専門分野を複数身につけて、
③π型: 複数の専門分野、さらにその周辺知識を身につけ、多角的な視点を獲得する必要があるとしている。

これは、カリヨンツリー型のキャリア形成の考え方に類似している。
詳しくは『WORK SHIFT(リンダ グラットン著)』を参考にしてほしい。これからの時代を生き抜くキャリア形成の示唆に富んだ名著だ。


コンピュータは理解力のない体力バカ? [プログラミング全般]

前回、プログラミングの仕組みについて簡単に説明しました。

その中で、プログラミングをするための2ステップとして、
①日本語で指示内容を考える
②それをプログラミング言語に翻訳する
をあげました。
今回はこの①日本語で指示内容を考えるということについて掘り下げて説明していきたいと思います。

指示をする場合、支持される側の理解力と実行力を吟味する必要があります。



(以下、しばらくは具体例です。読み飛ばしても構いません)
理解力の例
「この部屋暑いね」
と言った時、大人ならクーラーを効かせ、冷たいお茶を持ってきてくれるかもしれません。
しかし、同じことを幼稚園児に言ったとします。よほどできた幼稚園児でない限りは「あつい〜」などと言うだけでクーラーを効かせる、お茶を持ってくるというところまで気が回らないでしょう。

実行力の例
「毎朝10キロ走ってください」
というようにマラソンランナーと高齢者に指示します。
マラソンランナーにとっては毎朝10キロのランニングは苦になりません。
しかし、高齢者にとっては毎朝10キロのランニングはかなり厳しいと思います。
ーーーーーーーー

①の例からも分かるように、同じ言葉を同じ状況で発しても、受け取る相手によって対応が異なります。
1を聞き10を知るのか、
1を聞き1を知るのか。
コンピュータは後者です。
言われたことしかできないのです。
だから、コンピュータに指示を出す時には指示内容をなるべく細分化しなければなりません。
このぐらいでわかるだろう、あとは察してくれ、というのはコンピュータには通用しないのです。
コンピュータは言われたことしかわからないのです。

一方で、コンピュータは言われたことなら着実に遂行することができます。
こんなにいっぺんに指示を出したらかえって頭がこんがらがるだろうなとか、余計な心配をする必要はありません。
むしろおせっかいだと思われるほどに詳しく説明してあげることがコンピュータにとっては親切なのです。


次回はいよいよ簡単なプログラミングをやっていきます。


プログラミング言語?マシン語? [プログラミング全般]

プログラミングとは、プログラム言語の規則に基づいてコンピュータに実行させる作業の指示を順序だてて細かく記述することです。

つまり、コンピュータにもわかる言葉で指示を出すことです。

通常、コンピュータは「マシン語」という、0と1で構成された言葉しか理解できません。

 マシン語でコンピュータに指示を出そうとすると、000110101000100111100101000・・・のように一見意味のない文字の羅列を用いる必要があります。

 これを人間が完璧に理解するのは実質不可能です。

 

そこで、人間の言語に近い「プログラミング言語」を用いてコンピュータに指示を出すわけです。

プログラミング言語にはさまざまな種類があります。

 Java,C言語,PHP・・・などあげればキリがありません。

 

例えば、

System.out.println("あいうえお");

これは、画面上に「あいうえお」 と表示させます。

英語に近くて、ある程度意味も推測できるかと思います。

 このプログラミング言語をマシン語に変換する機能をコンパイラ、インタプリタ(JVM)といいます。 

コンピュータは「マシン語」しか理解できません。

しかし、コンパイラとインタプリタの二つの機能を介在することで、「プログラミング言語」を「マシン語」に翻訳してくれます。 

 

複雑で難しそうに見えるプログラミングも、やっていることは

日本語で書かれた指示書をプログラミング言語に翻訳する、というだけなのです。あとは機械が勝手にやってくれますので。

 

ということは人間がすべきは・・・

①日本語で指示内容を考える

②それをプログラミング言語に翻訳する

というたった2ステップで良いというわけです。

 

プログラミング言語を理解することも重要ですが、それ以上に重要なのは、

「日本語で(コンピュータへの)指示内容を考える」ということです。

これについては、また次回、詳しく書きたいと思います。

 

 

 


プログラミングは本当に難しいのか? [プログラミング全般]

「プログラミング」という言葉を聞いてどんなことを思い浮かべますか?

 パソコンの前でずっとタイピングしてそうなイメージ、

 難しそう、

 などさまざま。

 中には言葉を聞いただけでアレルギー反応を起こす人もいるかもしれません。以前の僕がそうでした。

 プログラミングを勉強し初めて1週間経った今思うこと。

 「なぜもっと早くやらなかったんだろう」ということ。

 プログラミングの基本的な考え方さえ身につけてしまえば、そこまで難しくないのではないか?

それが一週間経った率直な感想です。

 

次回は、その「プログラミングの基本的な考え方」について書こうと思います。 


ブログはじめました! [その他]

こんにちは、あおきだいです。

 このブログは、プログラミング初心者が

 ①独学で

 ②効率良く

 ③実践的に即して

 ④楽しく 

④継続的に 

 学習していくことを目的としたブログです。

毎週、成果物を1つ作ることを目標にしています。

 

まず初めは、JAVAというプログラミング言語を学んでいこうと思います。

しばらくは1日1記事を継続して やっていこうと思います。


- | 次の30件

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。