□ 함수
* 함수(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 !!!")
}
}
}
---
* 추가 연습을 해봅니다.
- 년도를 알면 나이를 계산하는 기능을 함수로 정의하시오.
- 컴퓨터와 주사위 게임을 만들어봅시다.
'학습 > IT' 카테고리의 다른 글
[IT] Java기초(8) - 자바에서의 배열(Array) 사용법 (0) | 2021.12.07 |
---|---|
[IT] Java기초(7) - 함수(Function), 계산기 예제 코딩해보기 (0) | 2021.12.02 |
[IT] Java기초(5) - 연산자 제어문, 반복문 실습 (0) | 2021.11.19 |
[IT] Java기초(3) - 변수(variable), 데이터의 크기와 종류, 캐스팅 (0) | 2021.11.09 |
[IT] Java기초(2) - Eclipse에서 Hello, World 코드 실행해보기 (0) | 2021.11.03 |
댓글