プログラミング/1

出典: CourseWiki

目次

授業の目標

コンピュータに使われるのではなく,コンピュータを使える人になろう!

コンピュータのプログラム(ソフトウェア)を作るには,プログラミングという作業が必要です.プログラミングとは何か,どのようにすればコンピュータのプログラムが作れるかを学ぶことで,プログラミングの方法・感覚を身につけ,コンピュータへの理解を深めます.


プログラミング入門

何故プログラミングを学ぶのか?

  • プログラミングを学ばずに,コンピュータの理解を深めることはできません.
  • プログラミングを知っていると,コンピュータに自分のやりたいことをやらせることができます .
  • プログラミングは楽しい!

プログラミングとはコンピュータのプログラムを作成することです.コンピュータが理解できる形で,間違いなく記述しないと,人が思う通りにコンピュータを動作させることはできません.コンピュータはプログラムに書いてある通りに動作します.

この講義ではJava言語を使って実習を行いますが,一つの言語を覚えれば,他の言語の学習は難しくありません.

画面に Hello, World と表示するプログラム例

Java言語の例

public class Hello {
  public static void main(String[] args) {
    System.out.println("Hello, World");
  }
}

C言語の例

main()
{
  printf("Hello, World\n");
}

Pascal の例

program sample(output);
begin
  writeln('Hello, World');
end.

FORTRAN の例

PROGRAM SAMPLE
  WRITE(*,*) 'Hello, World'
END

perl の例

print "Hello, World\n";

とにかくやってみよう

プログラミングでは,コマンドライン環境(CUI)を使うことがよくあります. Windows環境でのコマンドラインの使い方はコマンドで操るWindows XP -CUIのアドバンテージを堪能しよう-等を参考にしてください.

ホームディレクトリに Java というディレクトリを作成して下さい.

次に,Java ディレクトリの下に Hello というディレクトリを作成して下さい.

上の Java 言語の例をエディタで入力し,今作った Hello ディレクトリの下に Hello.java というファイル名でセーブして下さい,

コマンドラインから,Hello.javaをJavaコンパイラ(javac)でコンパイルして下さい.入力したプログラムに間違いがなければ javac は何も出力せずに終了するはずです.

[... ~]$ cd Java/Hello    下線部は人が入力する部分
[... ~/Java/Hello]$ javac Hello.java
[... ~/Java/Hello]$ 

なお,上の "["から"]$"まではプロンプトなので入力する必要はありません.Windowsのコマンドプロンプトで作業する場合は,"C:\Users\ユーザ名>" などになっていると思います.

入力したプログラムに間違いがあればエラーメッセージが表示されるので,エラーがなくなるまでエディタで修正して下さい. (プログラムの入力に間違いは付き物です)

[... ~/Java/Hello]$ javac Hello.java
Hello.java:1: '{' がありません。       Hello.java の1行目にエラーがあることを示している
class Hello 
^
エラー 1 個
[... ~/Java/Hello]$ 

コンパイルが正常に終わると Hello.class というファイルができてい るはずです.

[... ~/Java/Hello]$ ls
Hello.class    Hello.java
[... ~/Java/Hello]$ 

実行するには java というプログラムを使います.

[... ~/Java/Hello]$ java Hello
Hello, World
[... ~/Java/Hello]$ 

動きましたか?

解説

Javaのプログラムは 〜.java というファイルに格納する約束になっています.Java言語で書いたプログラムをソースプログラム (source program)と呼びます.

Javaのソースプログラムをコンパイル(compile)すると,〜.class というファイル(クラスファイル)ができます.

Javaのプログラムをコンパイルするプログラム(javac)はJavaコンパイラと呼ばれます.

クラスファイルは,java というコマンドを使って実行することができます.ソースプログラムのままでは,実行することはできません.

このように,Javaのプログラムを実行するには一度コンパイルという作業を行う必要があります.

コンパイラとインタプリタ

コンピュータにはCPU(Central Processing Unit,中央処理装置,マイクロプロセッサ,あるいは単にプロセッサとも呼ばれます)よばれる装置が内蔵されていて,プログラムの実行を行っています.コンピュータの頭脳に相当する部分です.

CPUは,非常に原始的な言語(機械語)しか理解することができません.人が複雑なプログラムを機械語で記述することは困難なので,高級言語が考え出されました.

高級言語の例
手続き型言語 FORTRAN, COBOL, BASIC, C, Pascal, Ada, PL/I, ...
オブジェクト指向言語 Smalltalk, C++, Java, Ruby, Python, ...
その他 Lisp(記号処理言語),Prolog(論理型言語), Perl, ...

高級言語を実行するための方法として,大きく2つの方法があります.

  • 高級言語を,一旦CPUが直接実行できる機械語に変換してから実行する方法(コンパイル方式).
  • (何らかの手段で)高級言語を解釈するプログラム(インタプリタ)を作成し,そのプログラムを使って高級言語を実行する方式(インタプリト方式).

コンパイル
高級言語を機械語に翻訳する作業
コンパイラ
コンパイルを行うプログラム
インタプリタ
高級言語を解釈して実行するプログラム

CPUによって実行できる機械語が異なるので,CPU毎にコンパイラが存在します.(Intel社のPentium用のC言語コンパイラ,etc.)

インタプリタ言語の例

インタプリタ言語の例として perl を取り上げます.上の perl 言語の例をエディタで入力し,Hello.pl というファイル名でセーブして下さい.その後,コマンドラインから perl Hello.pl と入力してみて下さい.(以下はperlをインストールしている環境でのみ動きます).

[... ~]$ perl Hello.pl
Hello, World
[... ~]$ 

この場合,perl コマンドがperl言語のインタプリタであり,Hello.pl に記述された内容を解釈して実行していることになります.

ちなみに,perl コマンド自体はC言語で記述されています.それをC言語のコンパイラによってコンパイルして perl コマンドを作成しているのです.ややこしいですね.

Java言語の場合

Java言語はコンパイル方式を採用していますが,Javaコンパイラは直接機械語に翻訳しません.そのかわり,Java仮想マシンと呼ばれる仮想の(実際に存在しない)CPUの機械語(Javaバイトコード)に変換するようになっています.

クラスファイル(〜.class)には,Javaバイトコードが格納されています.

Javaバイトコードは直接CPUが実行できないので,Javaバイトコードを解釈・実行するためのプログラム(JavaVM, Java Virtual Machine)を使って実行するようになっています.javaコマンドにJavaVM が入っていると考えてください.

画像:Layer.png

Javaプログラムの初歩の初歩

コメント

// (スラッシュ2つ)の後にはコメント(注釈)を書くことができます.

Javaコンパイラは // を見つけると,行末まで無視します.

プログラムが複雑になってくると,自分で書いたプログラムでも数日経つと何が書いてあるのか理解できなくなる場合があります.このためにコメントを書いてプログラムをわかりやすくします.

よいコメントを書くというのも重要な技術です.

Javaのコメントには // 以外にもう一つ /* ... */ というものもあります.// は行末まででしたが,/* を書くと,*/ が見つかるまでコメントになります./* と */ は同じ行にある必要はありません.ですから,

/*
 * Java言語の例
 */
public class Hello {
  public static void main(String[] args) {
    System.out.println("Hello, World");
  }
}

のようにコメントを書くこともできます.

特に,プログラムの一部を動かしたくないときに,そこを /* と */ で囲ってあげれば,そこはコメントになるので実行されなくなります.これはよく使うテクニックですので,覚えておきましょう.

Javaプログラムのファイル名の規則

Javaプログラムは,class の後の名前(クラス名, ここではHello) に ".java" をつけたものをファイル名にするという約束があ ります.今日の例では,class Hello だったので,Hello.java というファイルにセーブしました.(class の意味などについては後日やります.)

クラス名は英字で始まり,その後に英字か数字だけが並んだものでないといけません.漢字等は使わないで下さい.

// この Java プログラムは Hello.java に格納しないといけない
public class Hello {
  public static void main(String[] args) {
    System.out.println("Hello, World");
  }
}

Eclipseの利用

最初は理解を深めるためにコマンドラインを使ってコンパイル・実行してみましたが,実際のJavaプログラミングは統合環境(IDE)を使った方が楽です.

この授業では,以後,統合環境の1つであるEclipseを使います.Eclipseのインストール方法,使い方などはプログラミング/Eclipseを参照してください.


課題1-1 (初めてのJava)

  1. Hello.java を変更して,Konnnichiwa.java を作成せよ.
    表示するメッセージも 「こんにちは」に変更せよ.
  2. 数行のメッセージ(内容は何でも良い)を表示するように変更せよ. 数行のメッセージを表示するには,System.out.println(...); の行を沢山書けば良い.
  3. System.out.println を System.out.print に変更して,結果がどうなったかを報告せよ.

以下をテキストで記述し,提出してください.

  • 作成したJavaプログラム
  • 出力結果
  • 感想(この講義に期待すること,要望などを含めても構いません)
  • 今までのコンピュータの使用経験
  • 使ったことがあるプログラミング言語(プログラミングの経験がある人のみ)

次の授業までに Eclipseに慣れておいて下さい.

課題の提出方法は,プログラミング#課題の提出方法 を参照して下さい.

Copyright (C) 2002-2015 Kota Abe, Osaka City University

ナビゲーション