この資料からハイパーリンクされているコンテンツの内 http://wwws.kobe-c.ac.jp/deguchi/c/ 以下はC言語に関する資料なので、リンク箇所から離れてハイパーリンクを辿ったり、スクロールし過ぎないように注意すること。

1.はじめの1歩

  1. コンピュータとプログラミング言語
  2. Javaプログラムの開発
    Javaの場合Cの場合(詳細はこちら
  3. とりあえずコンパイルして実行してみよう
    • コマンドプロンプトではCUIでWindowsを使う
    • プロンプト(>)に対して、コマンドを入力して最後にEnterキーを押す(
    • コマンドプロンプトの詳細はこちら
    1. 作業ディレクトリを決める
      ここでは、Z:ドライブにjava10というフォルダを作成することにする
      (以下のjava10の部分は作成したフォルダ名で読み替えること!)
    2. エディタでソースファイル(Sample1.java)を作成し、作業ディレクトリに保存
    3. 作業ディレクトリに移動
      コマンドプロンプトを起動して、
      ?:\???> Z: ・・・ドライブ変更
      Z:\> cd \java10 ・・・ディレクトリ移動
      Z:\java10> dir ・・・ディレクトリのファイル一覧表示
      でソースファイルがあることを確認する
    4. 作業ディレクトリでコンパイル(javac ソースファイル名
      Z:\java10> javac Sample1.java
      Sample1.classクラス名.class)というファイルが出来るはず!
      Z:\java10> dir で確かめよ!)
    5. コンパイルエラーが出たら、ソースファイルを訂正して、やり直す
    6. 作業ディレクトリで実行(java クラス名)(拡張子.class無用)
      Z:\java10> java Sample1
    // 「ようこそJavaへ!」と画面に表示するプログラム
    class Sample1
    {
    	public static void main(String[] args)
    	{
    		System.out.println("ようこそJavaへ!");
    	}
    }
    // end of Sample1.java
    
    • コメント(//から行末まで、/**/で囲まれた部分)、
      文字列リテラル(""で囲まれたもの)、
      文字リテラル(''で囲まれた文字)
      以外に全角(2バイト)文字を使わない!
    • 大文字と小文字を区別する
    • 空白は半角スペースで、インデントはタブで!
    • 紛らわしい文字や記号に注意
      (例えば、printlnの最後は、print line なので、エルエヌ)
  4. わざとプログラムにエラーを入れてコンパイル、実行(もしコンパイル出来たら)してみよう!

2.Javaの基本

  1. 画面への出力
  2. コードの内容
  3. 文字と数値:リテラル(literal)
  4. 練習問題
    1. 「自己紹介のプログラム(その1)」
      自分の所属、氏名を行を分けて表示する(Self1.java
      例:
      神戸女学院大学
      人間科学部
      出口 弘
    2. 「自己紹介のプログラム(その2)」
      A. の‘自分の所属、氏名を行を分けて表示する’を
      System.out.println(○○○)を1個だけ用いて実現する(Self2.java
      (それ以外のSystem.out...は用いない!)
      例:
      神戸女学院大学
      人間科学部
      出口 弘
    3. 「工夫を要する文字列を表示するプログラム」
      「"Smile \0"」と二重引用符で囲まれた文字列を表示するプログラム(Smile1.java
      例:
      "Smile \0"

3.変数

 変数(variable)は値を入れる箱のようなもので、メモリ(memory)を利用して値を記憶する。 変数は名前(name)、型(data type)、値(value)という属性を持つ。

  1. 識別子(identifier)・・・変数等の名前となる
  2. 型(data type)
  3. 変数宣言(declaration)初期化(initialization)
    • 変数は使う前に必ず型と名前を宣言しなければならない
    • 当面、main()メソッドのブロック内({}の間)で宣言、初期化する
    • ブロック内で重複しないようにユニークな名前を付ける
    型名 変数名; 		// 変数の宣言
    型名 変数名, 変数名2;	// 同じ型の複数の変数をまとめて宣言
    
    型名 変数名 = ;	// 初期化は変数の宣言と同時に値を格納(代入)する
    	これは、
    	型名 変数名; // 宣言
    	変数名 = ; // 代入
    	と同じ


  4. 変数への値の代入(assignment)
    変数名 = ;
    この = は数式の等号ではなく代入演算子(「左辺と右辺が等しい」という意味の関係演算子==
  5. 変数の値を表示する
  6. キーボードからの入力
  7. 練習問題
    1. 「変数(整数)の値を表示するプログラム」
      int型の変数jkを宣言し、初期化を使わずに、123234を代入して、それぞれの変数の値を下の様に表示せよ(DispInt1.java)。
      例:
      変数jの値は123です。
      変数kの値は234です。
    2. 「16進数の値を(10進数で)表示するプログラム」
      int型の変数nを16進数のFFで初期化し、変数nの値を表示してみよ(DispHex1.java)。
      例:
      変数nの値は〇〇です。
    3. 「16進数や8進数の値を代入した変数の値を表示するプログラム」
      int型の変数nに16進数でFFを代入したり8進数で23を代入した後で変数nの値を表示してみよ(HexOct1.java)。
      例:
      16進数のFFは〇〇です。
      8進数の23は△△です。
    4. 「変数(実数)の値を表示するプログラム」
      float型の変数xy12.323.4で初期化し、各変数の値を下の様に表示せよ(DispFloat1.java)。
      例:
      変数xの値は12.3です。
      変数yの値は23.4です。
    5. 「変数の値を入れ替えるプログラム」
      上のプログラムを改良して、変数xyの値を表示した後、xyの値を入れ替えて、
      「交換しました。」と表示した後で、再び変数xyの値を表示するプログラム(SwapFloat1.java)。
      例:
      変数xの値は12.3です。
      変数yの値は23.4です。
      交換しました。
      変数xの値は23.4です。
      変数yの値は12.3です。
      注:偽ってもう片方の変数の値を使って表示するのではない!
      ×  "変数xの値は"+ y +"です。"
      "変数yの値は"+ x +"です。"
    6. 「キーボードから入力した実数値を変数に代入して表示するプログラム」
      以下の様に入力を要求してキーボードから入力された値を表示せよ(InFloat1.java)
      (使用する変数はfloat型でもdouble型でも良い。)
      例:
      実数を入力して下さい。
      12.3
      入力された値は12.3でした。
    7. 「入力した変数の値を入れ替えるプログラム」
      以下の様に入力された2つの実数を変数に代入して表示し、変数の値を交換して再び表示する(InSwapF1.java)
      (使用する変数はfloat型でもdouble型でも良い。)
      例:
      変数xとyに代入する実数を入力して下さい。
      12.3
      23.4
      変数xの値は12.3です。
      変数yの値は23.4です。
      交換しました。
      変数xの値は23.4です。
      変数yの値は12.3です。
      注:偽ってもう片方の変数の値を使って表示するのではない!
      ×  "変数xの値は"+ y +"です。"
      "変数yの値は"+ x +"です。"

4.式と演算子

  式(expression)は演算子(operator)と被演算数・オペランド(operand)から成り、 式の値(value)を計算することを評価(evaluation)という。

  1. 2項算術演算子(binary operator)
    演算子機能(数学)備考
     +加算足し算(+) a + b文字列を連結することもできる(文字列連結演算子)
     -減算引き算(−) a - b 
     *乗算掛け算(×) a * b 
     /除算割り算(÷) a / b 整数型同士の場合、商は0に向かって丸められる
     %剰余割り算の余り a % b aをbで割った余り、必ず a == (a/b)*b + a%b となる
    暗黙の型変換(精度の高い方に合わせて)後に演算
  2. 単項算術演算子(unary operator)
    演算子機能備考
     +プラス +a
     -マイナス -a
  3. ビット演算子
    演算子機能備考
     &ビット毎の論理積 a & b ビットマスクに使われるオペランドがboolean(真理値)の場合は論理演算となる
    (両オペランドを評価してから論理演算する)
     |ビット毎の論理和 a | b ビットオンに使われる
     ^ビット毎の排他的論理和 a ^ b ビット反転に使われる
     <<左シフト a << b aをbビット左シフト(右から0が入る)、2bを掛けるのと同じ
     >>算術右シフト a >> b aをbビット右シフト(最上位の符号ビットを保存する)、2bで割るのと同じ
     >>>論理右シフト a >>> b aをbビット右シフト(左から0が入る)、符号無し数の場合に 2bで割るのと同じ
     ~1の補数 ~a aの各ビットの0/1を反転する
    <<>>の間に 空白(スペース)を入れてはいけない!)

    各ビット演算の結果( 0:偽、1:真 )
    被演算ビット論理積(and)論理和(or)排他的論理和(xor)論理否定(not)
    aba & ba | ba ^ b~a
    000001
    01011
    100110
    11110

    1ビットシフトの結果
    符号ビット(s)
    が保存される →
  4. 代入演算子(assignment operator)
    変数 = 
    
    変数 op= 
    
  5. インクリメント・デクリメント演算子(increment/decrement operator)
    演算子 前置(++a, --a 後置(a++, a--
     ++ aの値を使用する前に、
    インクリメント(1増やす)
    aの値を使用した後に、
    インクリメント(1増やす)
     -- aの値を使用する前に、
    デクリメント(1減らす)
    aの値を使用した後に、
    デクリメント(1減らす)
    ++--の間に 空白(スペース)を入れてはいけない!)
    • 式の中に++--が含まれている場合の考え方
      ++iを1個含む式 ++i;
      式中の++iiに置き換えた式
       例: j = ++i;
      ++i;
      j = i;
      i++を1個含む式 式中のi++iに置き換えた式
      i++;
       例: j = i++;
      j = i;
      i++;
    • 変数(k)の値を1増やす方法
      1. k = k + 1;
      2. k += 1;
      3. ++k;
      4. k++;
  6. 関係演算子(relational operator)(比較演算子(comparison operator))
    演算子機能数学備考
     > より大きい 算術演算子よりも優先順位が低く、
    論理演算子よりも優先順位が高い

    結果はboolean型で、
    のとき true
    のとき false
     >= 以上
     < より小さい
     <= 以下
     == 等しい
     != 等しくない
    代入演算子 = と間違わないように!
    (演算子を構成している記号の間に空白(スペース)を入れてはいけない!例: > = はNG!)
  7. 論理演算子(logical operator)
    演算子機能備考
     &&論理積(and) 1 && 2 1の値が false のとき、2を評価せずに、false
    1の値が true のとき、2を評価して、
      その値が false ならば falsetrue ならば true
    結果はboolean型で、
    true または false
     & 1 & 2 12の値が共に true のときのみ true、それ以外は false
     ||論理和(or) 1 || 2 1の値が true のとき、2を評価せずに、true
    1の値が false のとき、2を評価して、
      その値が false ならば falsetrue ならば true
     | 1 | 2 12の何れかが true のとき true、それ以外は false
     ^排他的
    論理和(xor)
    1 ^ 2 12の真理値が異なるとき true、同じとき false
     !論理否定(not) !1 1の値が true のとき falsefalse のとき true
    (演算子を構成している記号の間に空白(スペース)を入れてはいけない!例: & & はNG!)

    結果の論理値
    被演算式論理積(and)論理和(or)排他的
    論理和(xor)
    論理否定(not)
    1 2 1 && 2
    1 & 2
    1 || 2
    1 | 2
    1 ^ 2 !1
    falsefalsefalsefalsefalsetrue
    falsetruetruetrue
    truefalsefalsetruetruefalse
    truetruetruefalse
  8. 数学との違いについて
    数学意味Javaの式備考
    x = 1x に 1 を代入するx = 1代入演算子、 == と間違わないこと
    a = ba と b が等しいa == b関係(比較)演算子、 = = ではダメ、= と間違わないこと
    a ≠ ba と b が等しくないa != b関係(比較)演算子、 ! =<> ではダメ、論理否定を使って !(a==b) でも良い
    a ≧ ba は b 以上a >= b関係(比較)演算子、 > = ではダメ
    a ≦ ba は b 以下a <= b関係(比較)演算子、 < = ではダメ
    a = b = 0a 、b に 0 を代入するa = b = 0代入演算子、 場所によっては a = 0; b = 0;a = 0, b = 0 でも良い
    a = b = 0a も b も 0 に等しいa == 0 && b == 0関係(比較)演算子と論理演算子、 a == b == 0 はダメ
    1 < x < 3x は 1 より大きく、3 より小さい1 < x && x < 3関係(比較)演算子と論理演算子、 1 < x < 3 はダメ
    x ≦ 1,3 ≦ xx は 1 以下または 3 以上x <= 1 || 3 <= x関係(比較)演算子と論理演算子、 x <= 1, 3 <= x はダメ
    a = 2,b = 4a は 2、b は 4 に等しいa == 2 && b == 4関係(比較)演算子と論理演算子、 a == 2, b == 4 はダメ
  9. 条件式(conditional operator)
    ( 条件 ) ? t : f
  10. キャスト(cast operator)
    (型名 )
    
  11. 型変換
  12. 演算子(operator)と優先順位(priority)
    Java演算子優先
    順位
    結合
    規則
    備考C演算子
    [] . ()















    配列メンバ/構造体メソッド/関数 [] . -> ()
    ! ~ ++ -- + - () new 単項 ! ~ ++ -- + - * & () sizeof
    * / % 2項(乗、除、剰余) * / %
    + - 2項(加、減) + -
    << >> >>> ビットシフト(左、右) << >>
    < <= > >= instanceof 比較 < <= > >= 
    == != 比較 == !=
    & ビット毎の論理積 &
    ^ ビット毎の排他的論理和 ^
    | ビット毎の論理和 |
    && 論理積 &&
    || 論理和 ||
    ? : 条件式(3項) ? :
    = += -= *= /= %=  &= ^= |= <<= >>= >>>= 代入 = += -= *= /= %=  &= ^= |= <<= >>=
    カンマは演算子ではない カンマ ,
    Javaでは for(式1; 式2; 式3) の式1と式3に、カンマ(,)で区切って複数の式を書くことができる
  13. キーワード(予約語)
    abstract    continue    for           new          switch
    assert      default     if            package      synchronized
    boolean     do          goto          private      this
    break       double      implements    protected    throw
    byte        else        import        public       throws
    case        enum        instanceof    return       transient
    catch       extends     int           short        try
    char        final       interface     static       void 
    class       finally     long          strictfp     volatile
    const       float       native        super        while
    
  14. 定数(constant)列挙型(enum:enumerable type)

     定数を表現する方法には、文字リテラル数値リテラル以外に、名前付き定数(変更不可能な変数)、列挙型(JSE1.5.0で追加された)がある。

  15. 練習問題
    1. 「台形の面積を求めるプログラム」
      上底、下底、高さを入力して、台形の面積を計算して画面に表示する(Trape1.java
      例:
      台形の上底と下底と高さを入力して下さい。
      3.0
      4.0
      5.0
      台形の面積は17.5です。
       
    2. 「円周と円の面積を求めるプログラム」
      円の半径を入力して、円周と円の面積を計算して画面に表示する(Cir1.java
      例:
      円の半径を入力して下さい。
      10
      半径10.0の円の
      円周は62.83185307で、
      面積は314.15926535です。
       
      ヒント:円周率$\pi$は3.1415926535とせよ
    3. 「BMIを計算して表示するプログラム」
      身長(cm)と体重(Kg)を入力して、BMIを計算して画面に表示する(Bmi.java
      例:
      身長(cm)を入力して下さい。
      170
      体重(Kg)を入力して下さい。
      80.3
      あなたのBMIは27.785467128027683です。
      ヒント:BMIの定義(求め方)や検算・確認は「BMI」をキーワードでWeb検索せよ
    4. 上のBMIの計算において、身長や体重をdouble型で扱ってそのまま計算すると、
      有効桁数を超えて表示されるので、有効数字を3桁として、小数第2位を四捨五入し、
      「あなたのBMIは27.8です。」の様に表示するように工夫せよ。(Bmi2.java