본문 바로가기
학습/IT

[IT] Java기초(6) - 함수(Function), 주사위 함수 정의하기

by 개성공장 2021. 11. 23.
반응형

□ 함수

 * 함수(function) : 수학의 함수처럼 하나의 처리단위를 구성하는 것을 말합니다.

 

 * 함수의 구성요소

 - 함수를 구분할 수 있는 이름

 - 입력 데이터

 - 출력 데이터

 - 몸체 { ... }

 

 * 함수용어

 - Parameter / Arguments : 함수를 실행하는데 필요한 입력 데이터

 - Return type / value : 함수 실행의 결과물의 타입 정보, 결과값, + "void"

 

 * Java에서의 함수선언

 - 클래스 내에서 (VM이 클래스 단위로 해석하므로 그 안에서 함수 선언)

 - static '리턴타입' '함수이름' (파라미터 ... )

 - 가장 중요한 건 { ... } , 몸체 안의 내용

 

 - public static void main(String[] args) {    => 메인함수, 메인메소드로 부름

 

---

package function;

public class Test1 {
// 변수의 타입은 변수를 최초로 만들때만 선언?!
static int plus(int x, int y); {
	System.out.println("plus");

	return x + y;
}

public static void main(String[] args) {
	System.out.println("main.....")

	// 함수 호출
	Test1.plus(1, 2);
	plus(1, 2);
}
}

---

 

마포대교

 

 

 * 함수와 메모리 공간

 - 변수의 타입 정보는 변수의 최초 선언에만 사용되었다는 점에 유의합니다.

 - { } 는 메모리 공간을 의미합니다.

 - 함수의 실행 비밀은 'stack'  => First In, Last Out

 

 * 함수의 실행과정

 - 함수가 스택으로 추가됨

 - 함수 실행에 필요한 변수들이 생성

 - 생성된 변수들을 이용해서 함수 실행

 - 스택에서 제거

 - (함수가 실행되는 변수는 로컬변수, 지역변수라고도 함)

 - (void도 엄밀히 변수 타입 중 하나)

 - 자바에서 모든 타입은 class 타입을 갖습니다.

 

 * void 타입

 - 엄밀하게 하나의 타입

 - 메모리공간 할당이 없음

 - 함수의 결과 데이터를 반환하지 않을 때 사용

 

 * return 키워드

 - 함수의 실행이 끝났다는 의미(실행의 제어권을 반납)

 - java 언어에서는 결과물을 돌려줄 필요가 없을 때, 생략 가능

 - C언어 등에서는 return 0; 사용

 

 * 재귀함수

 - 함수가 함수를 호출...

 

 

□ 함수 실습

 * 합수의 설계 포인트

 - 함수 코딩 전에는 반드시 설계를 먼저합니다

 - 상자를 염두에 둡시다

 - 기능들을 먼저 뽑아내자 => 기능 명세

 (함수란 자주 사용하는, 필요한 기능을 분리하여 재사용하는 것! => 그 프로그램에 어떤 기능이 필요한지를 고려)

 

 * 상자와 로직의 분리

 - 프로그램의 로직과 함수들의 상자를 같이 생각하면 꼬이기 쉽습니다.

 - 어디서부터 어디까지 함수로 만들지를 고려

 

 * 상자 따로, 로직 따로!

 - 로직에서 상자를 잠시 호출하는 방식으로 고민

 - 잠시 빌려 쓰는 기능으로 생각

 - 배보다 배꼽이 더 크면 안 됩니다.

 

 

서리가 내린 모습

 

 

 * 문제!

 - 주사위의 숫자를 만들어 내는 함수를 정의하시오.

 => 이름, 파라미터, 리턴타입

 

---

package function;

public class Dice {

//이름 : dice
//파라미터 : 로직에 영향을 주는 데이터가 없으면 ()
//리턴타입 : 기능의 호출에 대한 기대 타입 데이터
static int dice(); {
	System.out.println("rolling a dice");
	int value = (int)(Math.random()*6)+1;
	return value;
}

public static void main(String[] args) {

	// 함수 호출
	int userValue = dice();
	int comValue - dice();

	System.out.println("User : " + userValue);
	System.out.println("Computer : " + comValue);

	if(userValue > comValue) {
		System.out.println("User Win !!!")
	} else if (userValue == comValue) {
		System.out.println("Draw !!!")
	} else {
		System.out.println("User Lose !!!")
	}
}
}

---

 

* 추가 연습을 해봅니다.

 - 년도를 알면 나이를 계산하는 기능을 함수로 정의하시오.

 - 컴퓨터와 주사위 게임을 만들어봅시다.

반응형

댓글