プログラミング入門1

Similar documents
プログラミング入門1

プログラミング入門1

メソッドのまとめ

プログラミング入門1

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

プログラミング入門1

関数 C 言語は関数の言語 関数とは 関数の定義 : f(x) = x * x ; 使うときは : y = f(x) 戻り値 引数

メソッドのまとめ

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

Microsoft Word - no11.docx

Prog1_6th

プログラミング入門1

プログラミング基礎I(再)

関数の中で宣言された変数の有効範囲はその関数の中だけです さっきの rectangle _s で宣言されている変数 s は他の関数では使用できません ( 別の関数で同じ名前の変数を宣言することはできますが 全く別の変数として扱われます このように ある関数の中で宣言されている変数のことをその関数の

Microsoft PowerPoint - prog07.ppt

Microsoft PowerPoint - prog03.ppt

Javaプログラムの実行手順

プログラミング実習I

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Microsoft PowerPoint - prog04.ppt

スライド 1

Microsoft PowerPoint - 10.ppt [互換モード]

PowerPoint プレゼンテーション

プログラミング入門1

情報処理Ⅰ演習

基礎プログラミング2015

Microsoft PowerPoint - chap10_OOP.ppt

プログラミングA

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

ガイダンス

Microsoft PowerPoint - prog09.ppt

Microsoft PowerPoint - prog09.ppt

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

JavaプログラミングⅠ

Microsoft PowerPoint - prog08.ppt

デジタル表現論・第4回

JavaプログラミングⅠ

6 関数 6-1 関数とは少し長いプログラムを作るようになると 同じ処理を何度も行う場面が出てくる そのたびに処 理を書いていたのでは明らかに無駄であるし プログラム全体の見通しも悪くなる そこで登場す るのが 関数 である 関数を使うことを 関数を呼び出す ともいう どのように使うのか 実際に見て

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

Microsoft PowerPoint L07-Imperative Programming Languages-4-students ( )

GEC-Java

Microsoft Word - VBA基礎(6).docx

JavaプログラミングⅠ

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

第二回独習 Java ゼミ 第二章クラスとメソッド 2.1 メソッドの構造 2.2 静的メソッドと静的変数の概要 2.3 インスタンスメソッドとインスタンス変数の概要 2.4 Integerクラス 2006/04/19 神津健太

Microsoft PowerPoint - 09.pptx

GEC-Java

Microsoft PowerPoint - 計算機言語 第7回.ppt

JavaプログラミングⅠ

PowerPoint プレゼンテーション

Microsoft PowerPoint - CproNt02.ppt [互換モード]

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

Javaによるアルゴリズムとデータ構造

PowerPoint プレゼンテーション

プログラミング入門1

PowerPoint プレゼンテーション

メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

Week 1 理解度確認クイズ解答 解説 問題 1 (4 2 点 =8 点 ) 以下の各問いに答えよ 問題 bit 版の Windows8.1 に Java をインストールする時 必要なパッケージはどれか 但し Java のコンパイルができる環境をインストールするものとする 1. jdk

PowerPoint プレゼンテーション

gengo1-11

プログラミングA

Microsoft PowerPoint ppt

2

Microsoft PowerPoint ppt

Program Design (プログラム設計)

ex05_2012.pptx

C#の基本2 ~プログラムの制御構造~

Prog1_2nd

PowerPoint Presentation

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

Java講座

プログラミング入門1

gengo1-10

プログラムの基本構成

PowerPoint Presentation

Microsoft Word - 03

memo

Microsoft PowerPoint - class2-OperatorOverLoad.pptx

Prog2_9th

デジタル表現論・第6回

Microsoft Word - keisankigairon.ch doc

PowerPoint プレゼンテーション

2

JAVA入門

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

プログラミングA

Prog1_10th

Prog1_15th

JavaプログラミングⅠ

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

Microsoft Word - java a.doc

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol

JavaプログラミングⅠ

Java言語 第1回

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

PowerPoint プレゼンテーション

情報処理 Ⅱ 2007 年 11 月 26 日 ( 月 )

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

Transcription:

プログラミング入門 1 第 8 回メソッド (2)

授業開始前に自己点検 前回までの必須課題はすべてできていますか 前回までの学習項目であいまいな所はありませんか 理解できたかどうかは自分自身の基準をもとう Java 1 第 8 回 2

前回のテーマ メソッドとは いくつかの命令の列を束ねて 一つの命令として扱えるようにしたもの 今回学ぶメソッドの役割は その他のプログラミング言語では関数またはサブルーチンと呼ばれることがある メソッドを書く 宣言あるいは定義 メソッドを使う 起動あるいは呼び出し (call) Java 1 第 8 回 3

以下の質問に答えられますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 引数つきのメソッドの宣言はどのようにしますか 変数のスコープとは何ですか Java 1 第 8 回 4

メソッドの宣言とは 起動とは何ですか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 引数つきのメソッドの宣言はどのようにしますか 変数のスコープとは何ですか メソッドの宣言 ( 定義 ): 一連の命令を束ねたものに名前をつけること メソッドの起動 ( 呼び出し ): メソッドを実行すること 注意 : 宣言しただけでは実行されない Java 1 第 8 回 5

メソッドの宣言はどのように書きますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 引数つきのメソッドの宣言はどのようにしますか 変数のスコープとは何ですか public static void < メソッドの名前 > () { < メソッド本体 > ここに命令文を並べる Java 1 第 8 回 6

メソッドの宣言はどこに置きますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 引数つきのメソッドの宣言はどのようにしますか 変数のスコープとは何ですか 駄目 public class SomeClass{... public class SomeClass{ public static void main(sring[] args){... OK Java 1 第 8 回 7

メソッドの起動はどのようにしますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 引数つきのメソッドの宣言はどのようにしますか 変数のスコープとは何ですか [ 引数なしの場合は ] メソッドを実行したい場所で メソッド名 (); のように書く Java 1 第 8 回 8

メソッドの仮引数 実引数とは何ですか? メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 引数つきのメソッドの宣言はどのようにしますか 変数のスコープとは何ですか public class Adder { public static void add(double x, double y) { System.out.println(x + y); 値渡し add(10.5, 12.3); add(-2.3, 2.4); Java 1 第 8 回 9

引数つきのメソッドの宣言はどのようにしますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 引数つきのメソッドの宣言はどのようにしますか 変数のスコープとは何ですか public static void < メソッドの名前 > (< 仮引数の宣言 >) { < メソッド本体 > あるいは, で区切られた複数の仮引数の宣言 Java 1 第 8 回 10

変数のスコープとは何ですか メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 引数つきのメソッドの宣言はどのようにしますか 変数のスコープとは何ですか for (int i = 0; i < 10; i++) { //... // ERROR: ここで変数 i は使用できない System.out.println(i); // i を for の外で宣言することによって // for の外側でも利用できるようにする int i; for (i = 0; i < 10; i++) { //... // これなら変数 i を使用できる System.out.println(i); Java 1 第 8 回 11

もう答えられますね メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 引数つきのメソッドの宣言はどのようにしますか 変数のスコープとは何ですか Java 1 第 8 回 12

今回のテーマ 式としてのメソッド メソッドの起動では命令列が実行されるだけでなく 値をもつ ( 値を返す ) ということ 前回の講義では メソッドを いくつかの命令を束ねたもの という視点で見ており メソッドを起動することによって束ねられた命令の列を実行することができた 今回は メソッドを いくつかの命令を束ねた式 として扱う y = Math.sqrt(2.0); 式としての値は 1.41... Java 1 第 8 回 13

値をもつ 返すとは (Java に元々用意されている例から ) y = Math.sqrt(2.0); 1. Math ( という class) の sqrt というメソッドを使っている 2. カッコ内がこのメソッドに渡される引数 ( ひきすう : パラメタ parameter) であり 今の場合 double 型の実数 2.0 が引数である 3. この文を実行すると 2.0 を引数としてメソッド sqrt が実行される ( メソッドを起動する 呼び出すとも言う ) 4. その実行が終わると 1.4142135623730951 が返される (1.4142135623730951 という戻り値を持ってメソッドから帰ってくる ) 5. その値が変数 y に代入される Java 1 第 8 回 14

Math.sqrt のような値を返すメソッドを自分で定義 ( 宣言 ) する ここでは平方を返すメソッドを考える public class SquareMethod { for (int i = 1; i <= 5; i++) { System.out.println(square(i)); この場所に値 が返ってくる 起動 public static int square(int x) { return x * x; Java 1 第 8 回 15

メソッドを呼び出すと 実引数の値が仮引数に代入されてメソッドの本体が実行される public class SquareMethod { for (int i = 1; i <= 5; i++) { System.out.println(square(i)); public static int square(int x) { return x * x; Java 1 第 8 回 16

return 文で返された戻り値がそのメソッド呼び出しの値となる public class SquareMethod { for (int i = 1; i <= 5; i++) { System.out.println(square(i)); public static int square(int x) { return x * x; Java 1 第 8 回 17

戻り値の型 public class SquareMethod { for (int i = 1; i <= 5; i++) { System.out.println(square(i)); public static int square(int x) { return x * x; Java 1 第 8 回 18

メソッド定義の書き方 public static 戻り値の型メソッド名 ( 仮引数の宣言の列 ){ メソッドの本体 前回の講義では 戻り値の型 の部分が void であった void とは 何もない を表す型で そう考えると戻り値型が void のメソッドを 何もないを返す ( 値を何も返さない ) とすることができる 何か値を返すメソッドを作りたい場合 戻り値の型に int や double などを入れてやればよい Java 1 第 8 回 19

実数と整数 (double, int) の 2 つの引数を取り double 型の値を返すメソッド power public class Power { System.out.println(power(3, 4)); // a の b 乗を計算するメソッド public static double power(double a, int b) { double product = 1; // a を b 回掛けたものを作る for (int i = 0; i < b; i++) { product *= a; return product; Java 1 第 8 回 20

基本事項の確認 : a b を計算するのに迷わずこのようなループが書けますか public class Power { System.out.println(power(3, 4)); // a の b 乗を計算するメソッド public static double power(double a, int b) { double product = 1; // a を b 回掛けたものを作る for (int i = 0; i < b; i++) { product *= a; return product; Java 1 第 8 回 21

return 文は 戻り値の型が void 以外のときにメソッドを呼び出した元に値を返す命令 public static int square(int x) { return x * x; 戻り値が void ではメソッドの途中で実行を打ち切りたいときに使える public static void printonnotzero(int x) { if (x == 0) { return; System.out.println(x); Java 1 第 8 回 22

戻り値の型が void であるメソッドの呼び出しは 式の一部あるいは式が来るべき場所で使ってはいけない コンパイルエラーになる public class SomeClass { System.out.println(voidMethod() + 5); System.out.println(voidMethod()); public static void voidmethod() { System.out.println(10); Java 1 第 8 回 23

戻り値の型が void 以外であるメソッドの呼び出しは 通常は式の一部として使われるが それだけで命令文としてもよい 戻り値を利用していないが 誤りではない public class SomeClass { intmethod(); public static int intmethod() { System.out.println(10); return 0; Java 1 第 8 回 24

メソッドの多重定義 (overloading) 戻り値や仮引数の型が違えば 名前が同じでも異なるメソッドとなる public class Overloading1 { public static void main(string[] args){ int x = square(25); double y = square(25.0);... public static int square( int x ) { return x * x; public static double square( double y ) { return y * y; Java 1 第 8 回 25

public class Overloading2 { // max(int) System.out.println(max(10)); // max(int, int) System.out.println(max(10, 20)); // max(int, int, int) System.out.println(max(10, 30, 20)); // 1つの中の最大 public static int max(int a) { return a; // 2つの中の最大 public static int max(int a, int b) { if (a > b) { return a; else { return b; // 3つの中の最大 public static int max(int a, int b, int c) { // max(int, int) を 2 回使う return max(a, max(b, c)); 引数の個数が違っても異なるメソッド Java 1 第 8 回 26

演習に入る前に AddSub と Combination という 2 つのプログラムを各自作成し実行 テストまでを一斉にやる 頃合をみて 2 つのプログラムの詳細な解説をするが 講義資料の解説を見ながらその意味を自分でよく考えること この 2 つのプログラムの意味をきちんと理解できた人だけが課題に進んでよい Java 1 第 8 回 27

一緒にやってみよう 今回の演習で使うテストドライバをいつものようにインストールする ライブラリのアップデートがあるので手順を正確に実行すること テストドライバの導入に成功すると プロジェクト java20xx の中の test というフォルダに 08 という名前のフォルダが作成される このフォルダには今週使用するテスト一式が入っている j1.lesson08 というパッケージを作成する 講義資料にある AddSub, Combination というプログラムを このパッケージに作成する 講義資料にある手順でテスト 実行までやること Java 1 第 8 回 28

AddSub の解説 public class AddSub{ System.out.println(add(1, 2)); System.out.println(sub(10, 7)); System.out.println(sub(add(1, 2), sub(3, 4))); public static int add(int a, int b) { return a + b; public static int sub(int a, int b) { return a - b; Java 1 第 8 回 29

引数を 1,2 としてメソッド add(int a, int b) を呼び出し 戻り値を表示する public class AddSub{ System.out.println(add(1, 2)); System.out.println(sub(10, 7)); System.out.println(sub(add(1, 2), sub(3, 4))); public static int add(int a, int b) { return a + b; public static int sub(int a, int b) { return a - b; Java 1 第 8 回 30

引数を 10,7 としてメソッド sub(int a, int b) を呼び出し 戻り値を表示する public class AddSub{ System.out.println(add(1, 2)); System.out.println(sub(10, 7)); System.out.println(sub(add(1, 2), sub(3, 4))); public static int add(int a, int b) { return a + b; public static int sub(int a, int b) { return a - b; Java 1 第 8 回 31

引数を 1,2 としてメソッド add(int a, int b) を呼び出し public class AddSub{ System.out.println(add(1, 2)); System.out.println(sub(10, 7)); System.out.println(sub(add(1, 2), sub(3, 4))); public static int add(int a, int b) { return a + b; public static int sub(int a, int b) { return a - b; Java 1 第 8 回 32

さらに引数を 3,4 としてメソッド sub(int a, int b) を呼び出す public class AddSub{ System.out.println(add(1, 2)); System.out.println(sub(10, 7)); System.out.println(sub(add(1, 2), sub(3, 4))); public static int add(int a, int b) { return a + b; public static int sub(int a, int b) { return a - b; Java 1 第 8 回 33

それらの戻り値を引数としてメソッド sub(int a, int b) を呼び出し public class AddSub{ System.out.println(add(1, 2)); System.out.println(sub(10, 7)); System.out.println(sub(add(1, 2), sub(3, 4))); public static int add(int a, int b) { return a + b; public static int sub(int a, int b) { return a - b; Java 1 第 8 回 34

計算結果を表示する public class AddSub{ System.out.println(add(1, 2)); System.out.println(sub(10, 7)); System.out.println(sub(add(1, 2), sub(3, 4))); public static int add(int a, int b) { return a + b; public static int sub(int a, int b) { return a - b; Java 1 第 8 回 35

メソッドの宣言の書き方 public class AddSub{ System.out.println(add(1, 2)); System.out.println(sub(10, 7)); System.out.println(sub(add(1, 2), sub(3, 4))); public static int add(int a, int b) { return a + b; public static int sub(int a, int b) { return a - b; Java 1 第 8 回 36

Combination の解説 public class Combination { //combinationメソッドを呼び出す System.out.println("10 人から2 人選ぶ組み合わせは " + combination(10, 2) + " 通り "); // ncr = n! / ((n-r)! * r!) を計算するメソッド public static int combination(int n, int r) { // 階乗の計算でfactメソッドを呼び出す return fact(n) / (fact(n-r) * fact(r)); //nの階乗を計算するメソッド public static int fact(int n) { int total = 1; for (int i = n; i >= 1; i--) { total *= i; return total; Java 1 第 8 回 37

階乗の計算は基本中の基本 :n(n-1)(n-2) 1 public class Combination { //combinationメソッドを呼び出す System.out.println("10 人から2 人選ぶ組み合わせは " + combination(10, 2) + " 通り "); // ncr = n! / ((n-r)! * r!) を計算するメソッド public static int combination(int n, int r) { // 階乗の計算でfactメソッドを呼び出す return fact(n) / (fact(n-r) * fact(r)); //nの階乗を計算するメソッド public static int fact(int n) { int total = 1; for (int i = n; i >= 1; i--) { total *= i; return total; Java 1 第 8 回 38

階乗を使って : 組合せの計算 public class Combination { //combinationメソッドを呼び出す System.out.println("10 人から2 人選ぶ組み合わせは " + combination(10, 2) + " 通り "); // ncr = n! / ((n-r)! * r!) を計算するメソッド public static int combination(int n, int r) { // 階乗の計算でfactメソッドを呼び出す return fact(n) / (fact(n-r) * fact(r)); //nの階乗を計算するメソッド public static int fact(int n) { int total = 1; for (int i = n; i >= 1; i--) { total *= i; return total; Java 1 第 8 回 39

引数を 10,2 としてメソッド combination(int n, int r) を呼び出し public class Combination { //combinationメソッドを呼び出す System.out.println("10 人から2 人選ぶ組み合わせは " + combination(10, 2) + " 通り "); // ncr = n! / ((n-r)! * r!) を計算するメソッド public static int combination(int n, int r) { // 階乗の計算でfactメソッドを呼び出す return fact(n) / (fact(n-r) * fact(r)); //nの階乗を計算するメソッド public static int fact(int n) { int total = 1; for (int i = n; i >= 1; i--) { total *= i; return total; Java 1 第 8 回 40

出力 :10 人から 2 人選ぶ組み合わせは 45 通り public class Combination { //combinationメソッドを呼び出す System.out.println("10 人から2 人選ぶ組み合わせは " + combination(10, 2) + " 通り "); // ncr = n! / ((n-r)! * r!) を計算するメソッド public static int combination(int n, int r) { // 階乗の計算でfactメソッドを呼び出す return fact(n) / (fact(n-r) * fact(r)); //nの階乗を計算するメソッド public static int fact(int n) { int total = 1; for (int i = n; i >= 1; i--) { total *= i; return total; Java 1 第 8 回 41

課題 各自のペースで 第 08 週目の課題 をやってみよう Java 1 第 8 回 42

==== 課題 0801 main の仕事 (1) プロンプトを適切に出しながら 入力する (2) cels2fahr を適切な引数を与えて起動し 戻り値を変数にしまう (3) 出力する注 : (2),(3) を 1 つの式にしてもよい cels2fahr の仕事 (1) 引数として受け取ったデータから華氏の値を計算し return する ==== 課題 0802 main の仕事 (1) プロンプトを適切に出しながら 入力する (2) distance を適切な引数を与えて起動し 戻り値を変数にしまう (3) 出力する注 : (2),(3) を 1 つの式にしてもよい distance の仕事 (1) 引数として受け取ったデータから距離を計算し return する Java 1 第 8 回 43