東北大学全学教育科目
情報基礎
B
1
セメスター 金曜 2 講時
工学部
15, 16 組
JAVA
JAVA
言語初級プログラム(基本)
言語初級プログラム(基本)
建築・社会環境工学科
プログラミング
コンピュータの言語は「
0」と「1」で書かれる
.
例えば・・・
1 + sin 50 = ???
「
+」や「sin」,「50」を 0 と 1 で命令しなければならない・・
このような命令文を『ソフトウェア』あるい
は『プログラム』と呼ぶ
人がわかる言語
(プログラム言語)
機械がわかる言語
(「0」と「1」の数字列)
高級言語
低級言語
プログラム言語
(Java言語やFORTRAN言語など)を用い
て,人がわかり易い表現で命令文を作り,それを機械語
機械語への変換
ニーモニック言語: 「
アセンブル
する」
Java や FORTRAN や C:
「
コンパイル
する」
BASIC: 「
インタープリット
する」
人がわかる言語
(プログラム言語)
機械がわかる言語
(「
0」と「1」の数字列)
高級言語
低級言語
機械語
普通の人は「
高級言語
」でしかプログラミングができな
い.だから,それを機械語に「
変換
」する必要がある.
変換
プログラミング
目的:
計算のフロー制御や判断を正確にコンピュータに命
令するプログラムを作るための基礎を学ぶ.
※この授業では
Java言語を用いるが,これは単な
るプログラム言語の一例としてである.
多分将来は
C や FORTRAN を使うことになる.
Java のシステムはインターネットでダウンロードでき
るので,自宅の
PC にインストールして利用したい場
合は,例えば
http://www.smg.co.jp/seminar/java/
の
UNIX コマンドの復習
コンソールを立ち上げて,プログラムファイルを作成する
.
コンソールを立ち上げて,プログラムファイルを作成する
.
ディレクトリ直下のファイル情報の表示
コンソールを立ち上げて,プログラムファイルを作成する
.
ディレクトリの新規作成
Java のプログラムを作るディレ
クトリを別に作っておこう.
UNIX コマンドの復習
コンソールを立ち上げて,プログラムファイルを作成する
.
子ディレクトリへ移動
コンソールを立ち上げて,プログラムファイルを作成する
.
Kwriteの実行
必ずバックグラウンドで実行
そうでないとコンパイルができなくなる
UNIX コマンドの復習
プログラムの実行方法(練習)
•
以前ダウンロードした『
3ple.html』より,最初の簡単な
プログラムをコピー・ペーストを用いてテキストエディタ
(Kwrite) に貼り付ける.
•
以前ダウンロードした『
3ple.html』より,最初の簡単な
プログラムをコピー・ペーストを用いてテキストエディタ
(Kwrite) に貼り付ける.
2. ファイル名を『joho.java』で保存する.
プログラムの実行方法(練習)
Java のプログラムファイルは,
拡張子を『
.java』にする.
プログラムの実行方法
ソースファイル
:
プログラム言語
(Java 言語など)でテキストエディ
タを使って作ったプログラムファイル.
コンパイル
:人が理解できる言語からコンピュータ
が理解できる言語へ変換すること.
クラスファイル
:ソースファイルをコンパイルして作ら
ソースファイルをコンパイルする
.
プログラムの実行方法
ソースファイルをコンパイルする
.
「
javac joho.java」と入力しエンターを押す
.
コンパイルをするためのコマンド
コンパイル対象のソースファイル
プログラムの実行方法
ソースファイルをコンパイルする
.
クラスファイルができる.
プログラムの実行方法
プログラムを実行する
.
「
java joho」と入力しエンターを押す.
クラスファイルを読み,プログラムを実行するコマンド
クラスファイルのファイル名
(注意;『.class』は抜かす)
プログラムの実行方法
プログラムを実行する
.
プログラムが実行され,ここでは『
Hello
Java World!』と表示された.サンプ
ルはちょっと違って 『
Hi, I am OK!』とな
ると思うが・・・
ソースファイルの基本形
ソースファイルの基本形
本体以外の部分は決まり文句
!!
ソースファイルの基本形
本体以外の部分は決まり文句
!!
練習
プログラムを変更して,別の一文を表示させてみよう.
1) 出力する文字を変更したら,ファイル保存をし
2) コンパイルし直し,(javac joho.java)
3) 実行する.(java joho)
自分が指定した一文が表示されるかどうか確認する!!
エラー
エラー
コンパイルができず,警告文が出る.
わざとファイル名とクラス名を違うものにすると・・・
import java.io.*; public class joho {
public static void main(String args[]) throws IOException { int a,b,c,d,e,f,g; a=7; b=3; c=a+b; d=a-b; e=a*b; f=a/b; g=a%b; System.out.println(c); System.out.println(d); System.out.println(e); System.out.println(f);
四則演算
注意
大文字と小文字は異なる
文字として区別される.
英数字は全角でなく,半
角で入力する.
import java.io.*; public class joho {
public static void main(String args[]) throws IOException { int a,b,c,d,e,f,g; a=7; b=3; c=a+b; d=a-b; e=a*b; f=a/b; g=a%b; System.out.println(c); System.out.println(d); System.out.println(e); System.out.println(f); System.out.println(g);
四則演算
整数変数の宣言
a,b,c,d,e,f, g を整
数の変数として定義
import java.io.*; public class joho {
public static void main(String args[]) throws IOException { int a,b,c,d,e,f,g; a=7; b=3; c=a+b; d=a-b; e=a*b; f=a/b; g=a%b; System.out.println(c); System.out.println(d); System.out.println(e); System.out.println(f);
四則演算
a=7,b=3と定義
import java.io.*; public class joho {
public static void main(String args[]) throws IOException { int a,b,c,d,e,f,g; a=7; b=3; c=a+b; d=a-b; e=a*b; f=a/b; g=a%b; System.out.println(c); System.out.println(d); System.out.println(e); System.out.println(f); System.out.println(g);
四則演算
四則演算の実施
+
x+y xとyの加算
-
x-y xとyの除算
*
x×y xとyの乗算
/
x÷y xとyの除算
%
x%y yで割った余り
import java.io.*; public class joho {
public static void main(String args[]) throws IOException { int a,b,c,d,e,f,g; a=7; b=3; c=a+b; d=a-b; e=a*b; f=a/b; g=a%b; System.out.println(c); System.out.println(d); System.out.println(e); System.out.println(f);
四則演算
a,b,c,d,e,f, g をディ
スプレイ表示
import java.io.*; public class joho {
public static void main(String args[]) throws IOException { int a,b,c,d,e,f,g; a=7; b=3; c=a+b; d=a-b; e=a*b; f=a/b; g=a%b; System.out.println(c); System.out.println(d); System.out.println(e); System.out.println(f); System.out.println(g);
四則演算
注意:一つ一つのコマンドの終わり
にはセミコロン“;”が付く!
import java.io.*; public class joho {
public static void main(String args[]) throws IOException { int a,b,c,d,e,f,g; a=7; b=3; c=a+b; d=a-b; e=a*b; f=a/b; g=a%b; System.out.println(c); System.out.println(d); System.out.println(e); System.out.println(f);
四則演算
注意:スペース(
半角
!)や改行はプ
ログラムの内容へは影響しない.
「見やすさ」「間違いの見つけやすさ」の
ために,適宜スペース(半角)や改行を
する.
import java.io.*; public class joho {
public static void main(String args[]) throws IOException { int a,b,c,d,e,f,g; a=7; b=3; c=a+b; d=a-b; e=a*b; f=a/b; g=a%b; System.out.println(c); System.out.println(d); System.out.println(e); System.out.println(f); System.out.println(g);
四則演算:実行すると・・・
割り算注意:あとで説明
変数の宣言
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
double a,b,c;
a=10.0;
b=3.0;
c=a/b;
System.out.println(c);
}
}
実数変数の宣言
a,b,c を実数の変数
として定義
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
double a,b,c;
a=10.0;
b=3.0;
c=a/b;
System.out.println(c);
}
}
実数変数の宣言
a,b,c を実数の変数
として定義
変数の宣言
今度は小数点以下も覚えてくれる
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
double kyori,zikann,sokudo;
kyori=10.0;
zikann=3.0;
sokudo=a/b;
System.out.println(sokudo);
}
}
宣言する変数は一文字
でなくても大丈夫!
変数の宣言
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
int a,b,c;
a=10;
b=3;
c=a/b;
System.out.println(c);
}
}
整数変数とすると・・・
変数の宣言
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
int a,b,c;
a=10;
b=3;
c=a/b;
System.out.println(c);
}
}
整数変数とすると・・・
a,b,c は整数として扱われ,小数点以
下は
捨てられて
しまう.さっきと同じ!
⇒ わざとそうしたい場合でなければ,
変数の宣言
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
int a,b,c;
a=10;
b=3;
c=a/b;
String d;
d="a/b";
System.out.println(d);
System.out.println(c);
}
}
文字列の宣言
変数の宣言
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
int a,b,c;
a=10;
b=3;
c=a/b;
String d;
d="a/b";
System.out.println(d);
System.out.println(c);
}
}
文字情報は『
"』で挟む
.
変数の宣言
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
int a,b,c;
a=10;
b=3;
c=a/b;
String d;
d="a/b";
System.out.println(d);
System.out.println(c);
}
}
変数の宣言
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
double a=10.0;
double b=2.0;
double c=a/b/b;
System.out.println(c);
c=c/b;
System.out.println(c);
}
}
変数の宣言と他の命令を一文
でまとめて行っても良い.
変数の宣言
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
double a=10.0;
double b=2.0;
double c=a/b/b;
System.out.println(c);
c=c/b;
System.out.println(c);
}
}
変数の宣言と算術代入文
同じ変数を再定義することもできる.
同じ変数を何度使っても良い
代入文は最初は難しいよ!
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
double a=10.0;
double b=2.0;
double c=a/b/b;
System.out.println(c);
c=c/b;
System.out.println(c);
}
}
変数の宣言:実行すると・・・
import java.io.*; public class dainyu {
public static void main(String args[]) throws IOException { int a; a=1; a=a+2; System.out.println(a); a=a*5; System.out.println(a); } }
算術代入文:大学生最初の
挫折
果たして? 表示される
a の値は?
ここと!
ここ!
import java.io.*; public class dainyu {
public static void main(String args[]) throws IOException { int a; a=1; a=a+2; System.out.println(a); a=a*5; System.out.println(a); } }
算術代入文:最初の挫折
つまり! ある変数の最後の値がメモリの中に「
保持さ
れている
」ことと,右辺の結果が左辺の変数に「
代入さ
もう一度!代入文の不思議
右辺にも
a があり,左辺にも a がある.
これは一体?????
右辺の結果は
CPU のレジスタに一時的に置かれる
それがメモリの
a の値に重ね書きされるまでは
a の値は不変!
代入文とは「
a のメモリにレジスタの結果を書き込むこと」
!
演算の優先順位
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
double a=-10.0;
double b=5.0;
double c=Math.pow(a,b);
System.out.println(c);
System.out.println(Math.sqrt(b));
}
}
|a|
⇒
Math.abs(a)
e
a⇒
Math.exp(a)
ln(a)
⇒
Math.log(a)
a
b⇒
Math.pow(a,b)
⇒Math.sqrt(a)
算術演算子(関数)
a
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
double a=-10.0;
double b=5.0;
double c=Math.pow(a,b);
System.out.println(c);
System.out.println(Math.sqrt(b));
}
}
ディスプレイ表示の命令文中でも計算可能
算術演算子(関数)
import java.io.*;
public class joho
{
public static void main(String args[]) throws IOException
{
double a=-10.0;
double b=5.0;
double c=Math.pow(a,b);
System.out.println(c);
System.out.println(Math.sqrt(b));
}
}
算術演算子(関数)
ディスプレイ表示の命令文中でも計算可能
import java.io.*; public class joho2 {
public static void main(String args[])throws IOException {
double a,b,c; String strx,stry; // Object making for input
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in)); System.out.println("a/c ="); System.out.println("a="); strx = br.readLine(); a= Double.parseDouble(strx); System.out.print("b="); stry = br.readLine(); b= Double.parseDouble(stry); c=a/b; System.out.println("a/b=" + c);
キーボード入力
import java.io.*; public class joho2 {
public static void main(String args[])throws IOException {
double a,b,c; String strx,stry; // Object making for input
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in)); System.out.println("a/c ="); System.out.println("a="); strx = br.readLine(); a= Double.parseDouble(strx); System.out.print("b="); stry = br.readLine(); b= Double.parseDouble(stry); c=a/b; System.out.println("a/b=" + c); }
キーボード入力
キーボード入力を使うときのおまじない
キーボードから入力された情報を一時的
に蓄える『
br』というバッファ(一時保管
庫)を作っておく
import java.io.*; public class joho2 {
public static void main(String args[])throws IOException {
double a,b,c; String strx,stry; // Object making for input
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in)); System.out.println("a/c ="); System.out.println("a="); strx = br.readLine(); a= Double.parseDouble(strx); System.out.print("b="); stry = br.readLine(); b= Double.parseDouble(stry); c=a/b; System.out.println("a/b=" + c);
キーボードからバッファに入力された文
字を読み込むコマンド.
一度読み込むと,次にキーボードから入
キーボード入力
import java.io.*; public class joho2 {
public static void main(String args[])throws IOException {
double a,b,c; String strx,stry; // Object making for input
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in)); System.out.println("a/c ="); System.out.println("a="); strx = br.readLine(); a= Double.parseDouble(strx); System.out.print("b="); stry = br.readLine(); b= Double.parseDouble(stry); c=a/b; System.out.println("a/b=" + c); }
キーボード入力された情報は文字列
として扱わなければならない.
キーボード入力
import java.io.*; public class joho2 {
public static void main(String args[])throws IOException {
double a,b,c; String strx,stry; // Object making for input
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in)); System.out.println("a/c ="); System.out.println("a="); strx = br.readLine(); a= Double.parseDouble(strx); System.out.print("b="); stry = br.readLine(); b= Double.parseDouble(stry); c=a/b; System.out.println("a/b=" + c);
そして,その文字列を
実数へ変換して計
算に使う・・・ちと面
キーボード入力
整数への変換:
Integer.parseInt(***)
実数への変換:
Double.parseDouble(***)
import java.io.*; public class joho2 {
public static void main(String args[])throws IOException {
double a,b,c; // Object making for input
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in)); System.out.println("a/c ="); System.out.println("a="); a = br.readLine(); System.out.print("b="); b = br.readLine(); c=a/b; System.out.println("a/b=" + c); } }
キーボード入力された情報を実数型として扱うと・・・
キーボード入力 間違った方法
import java.io.*; public class joho2 {
public static void main(String args[])throws IOException {
double a,b,c; // Object making for input
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in)); System.out.println("a/c is calculated"); System.out.println("a="); a = br.readLine(); System.out.print("b="); b = br.readLine(); c=a/b; System.out.println("a/b=" + c); } }
キーボード入力された情報を実数型として扱うと・・・
キーボード入力 間違った方法
コンパイル時に,エ
import java.io.*; public class joho2 {
public static void main(String args[])throws IOException {
double a,b,c; String strx,stry; // Object making for input
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in)); System.out.println("a/c ="); System.out.println("a="); strx = br.readLine(); a= Double.parseDouble(strx); System.out.print("b="); stry = br.readLine(); b= Double.parseDouble(stry); c=a/b; System.out.println("a/b=" + c); }
System.out.println
;一行の表示で改行される.
System.out.print
;一行の表示で改行されない.
コンソールへの出力(表示)
import java.io.*; public class joho2 {
public static void main(String args[])throws IOException {
double a,b,c; String strx,stry; // Object making for input
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in)); System.out.println("a/c ="); System.out.println("a="); strx = br.readLine(); a= Double.parseDouble(strx); System.out.print("b="); stry = br.readLine(); b= Double.parseDouble(stry); c=a/b; System.out.println("a/b=" + c);
『
//~~』とすると~~は無視される
.
⇒プログラムを分かりやすくするた
めに用いるメモ書き.
プログラム中のコメント(メモ書き)
キーボードから二つの
整数
を読み込んで,四則計算
と余り(
a = b % c は b を c で割った余りが a に記憶
される)の計算をして,その結果を表示するプログラ
ムを作成せよ.
ダウンロードした『
3ple.html』のテンプレートから必要
な箇所をコピーして自分のファイルに貼り付けて,
『
Calculate.java』というファイルに保存し,引き算など
を追加した上でコンパイルして実行し,正しい結果
がでることを確認せよ.
練習
最初に
a=0 にして,1 から 10 まで足していくプログ
ラムを作り,結果が
55 になることを確認せよ.
練習
import java.io.*; public class dainyu {
public static void main(String args[]) throws IOException { int a; a=0; a=a+1; a=a+2; a=a+3; ・・・・などなど続ける.泥臭く10行のプログラムにしていい. もっとカッコいい方法はあと学習するので・・・ System.out.println(a);