제 7 주:
©
J.-H. Kang, CNU강 지 훈 jhkang@cnu.ac.kr 충남대학교 컴퓨터공학과
©
J.-H. Kang, CNU함수 2
©
J.-H. Kang, CNU[제 7 주 실습]
성적 처리
2
©
J.-H. Kang, CNU 성적처리: 단계별로 해결하자
제1단계 [프로그램 7-1]
점수를 학점으로 변환하기
제2단계 [프로그램 7-2]
학점을 평점으로 바꾸기
제3단계 [프로그램 7-3]
세 과목 점수 입력 처리하기
제4단계 [프로그램 7-4]
평균평점 구하기
[실습] 성적처리 3
©
J.-H. Kang, CNU[프로그램 7-1]
점수를 학점으로 변환하기
[실습 7-1] 점수를 학점으로 4
©
J.-H. Kang, CNU 제1단계 [프로그램 7-1]
입력
0부터 100 사이의 정수로 된 점수가 학생 수 만큼 입력
100보다 큰 점수가 입력되면 다음과 같은 오류 메시지를 내보낸 다.
입력의 종료 조건
음수의 점수가 입력되면 입력은 종료되는 것으로 본다. 더 이상 점수는 입력되지 않는다.
출력
입력된 점수와 그에 해당하는 학점을 출력한다.
마지막에 학점별 학생수를 출력한다.
[실습 7-1] 점수를 학점으로 5
오류: 100이 넘어서, 정상적인 점수가 아닙니다.
©
J.-H. Kang, CNU 프로그램 7-1 [2]
출력의 예
[실습 7-1] 점수를 학점으로 6 - 점수를 입력하시오: 82
점수: 82, 학점: B
- 점수를 입력하시오: 45 점수: 45, 학점: F
- 점수를 입력하시오: 93 점수: 93, 학점: A
- 점수를 입력하시오: 102
오류: 100이 넘어서, 정상적인 점수가 아닙니다.
- 점수를 입력하시오: 66 점수: 66, 학점: D
- 점수를 입력하시오: 87 점수: 87, 학점: B
- 점수를 입력하시오: -1
음의 점수가 입력되어 입력을 종료합니다.
A는 1명입니다.
B는 2명입니다.
C는 0명입니다.
D는 1명입니다.
F는 1명입니다.
프로그램을 종료합니다.
©
J.-H. Kang, CNU 점수 입력을 함수로 [1]
점수 하나 입력 받는 것을 함수로 만들어 사용한다.
private int inputScore()
함수에 주어지는 입력값은 없다.
출력값, 즉 리턴값은 키보드에서 입력 받은 한 개의 점수
점수가 올바르게 입력되었는지는 검사하지 않는다.
입력은 Scanner의 nextInt()를 사용
입력 전에 Prompt message를 다음과 같이 내보낸다.
사용법:
int score;
score = inputScore();
[실습 7-1] 점수를 학점으로 7
- 점수를 입력하시오:
©
J.-H. Kang, CNU 점수 입력을 함수로 [2]
함수를 이용하지 않을 경우에는?
int score;
System.out.print(“>점수를 입력하시오: “);
score = sScanner.nextInt();
while (score >= 0) { if (score >100) {
System.out.print(“오류: 100이 넘어서, 정상적인 점수가 아닙니다.”) ; } else {
/* 점수가 정상이다 */
/* 필요한 일을 한다 */
……
} System.out.print(“>점수를 입력하시오: “);
score = sScanner.nextInt();
}
[실습 7-1] 점수를 학점으로 8
©
J.-H. Kang, CNU 점수 입력을 함수로 [2]
함수를 이용할 경우에는?
int score;
score = inputScore();
while (score >= 0) { if (score >100) {
System.out.print(“오류: 100이 넘어서, 정상적인 점수가 아닙니다.”) ; } else {
/* 점수가 정상이다 */
/* 필요한 일을 한다 */
……
}
score = inputScore();
}
[실습 7-1] 점수를 학점으로 9
©
J.-H. Kang, CNU 점수를 학점으로 변환
점수를 학점으로 변환하는 기준
90~100: A
80~89: B
70~79: C
60~69: D
0~59: F
함수를 사용하자!
private char score2Grade(int score)
함수의 입력: 양의 정수 (0~100)
이 함수의 입력 값에 오류는 없는 것으로 한다.
출력(return value): 점수에 해당하는 학점 (‘A’~’F’ 중의 하나)
사용법:
char grade;
grade = score2Grade(85); /*변수 grade의 값은 ‘B’가 된다. */
[실습 7-1] 점수를 학점으로 10
©
J.-H. Kang, CNU[프로그램 7-2]
학점을 평점으로 변환하기
[실습 7-2] 학점을 평점으로 11
©
J.-H. Kang, CNU 제2단계 [프로그램 7-2]
문제
[프로그램 7-1]에서는 점수를 입력받아 학점으로 변환했 다.
여기서는 학점을 평점으로 또 변환한다.
점수 ⇒ 학점 ⇒ 평점
입력의 종료 조건
음수의 점수가 입력되면 입력은 종료되는 것으로 본다. 더 이상 점수는 입력되지 않는다.
출력
입력된 점수와 그에 해당하는 학점과 평점을 출력한다.
마지막에 학점별 학생수를 출력한다.
[실습 7-2] 학점을 평점으로 12
©
J.-H. Kang, CNU 프로그램 7-2 [2]
출력의 예
[실습 7-2] 학점을 평점으로 13 - 점수를 입력하시오: 82
점수: 82, 학점: B, 평점: 3.0 - 점수를 입력하시오: 45 점수: 45, 학점: F , 평점: 0.0 - 점수를 입력하시오: 93 점수: 93, 학점: A , 평점: 4.0 - 점수를 입력하시오: 102
오류: 100이 넘어서, 정상적인 점수가 아닙니다.
- 점수를 입력하시오: 66 점수: 66, 학점: D , 평점: 1.0 - 점수를 입력하시오: 87 점수: 87, 학점: B , 평점: 3.0 - 점수를 입력하시오: -1
음의 점수가 입력되어 입력을 종료합니다.
A는 1명입니다.
B는 2명입니다.
C는 0명입니다.
D는 1명입니다.
F는 1명입니다.
프로그램을 종료합니다.
©
J.-H. Kang, CNU 학점을 평점으로 변환
학점을 평점으로 변환하는 기준
A: 4.0
B: 3.0
C: 2.0
D: 1.0
F: 0.0
함수를 사용하자!
private double grade2Point (char grade)
함수의 입력: 학점 (‘A’~’F’)
이 함수의 입력 값에 오류는 없는 것으로 한다.
출력(return value): 학점에 해당하는 평점 (0.0~4.0)
사용법:
double point;
point = grade2Point(‘B’); /*변수 point의 값은 3.0이 된다. */
[실습 7-1-2] 학점을 평점으로 14
©
J.-H. Kang, CNU[프로그램 7-3]
3 과목 처리하기
[실습 7-1-3] 3과목 처리하기 15
©
J.-H. Kang, CNU 제3단계 [프로그램 7-3]
문제
[프로그램 7-2]에서는 한번에 하나의 점수만 입력받았다.
여기서는 한번에 3 과목의 점수를 입력 받는다.
과목은 Korean, English, Computer
입력의 종료 조건
음수의 점수가 입력되면 입력은 종료되는 것으로 본다. 더 이상 점수는 입력되지 않는다.
출력
입력된 점수와 그에 해당하는 학점과 평점을 출력한다.
학점별 인원수는 출력하지 않는다.
[실습 7-1-3] 3과목 처리하기 16
©
J.-H. Kang, CNU 프로그램 7-3 [3]
출력의 예
[실습 7-1-3] 3과목 처리하기 17
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력합니다:
- 점수를 입력하시오: 82 - 점수를 입력하시오: 77 - 점수를 입력하시오: 90
[국 어] 점수: 82, 학점: B, 평점: 3.0 [영 어] 점수: 77, 학점: C, 평점: 2.0 [컴퓨터] 점수: 90, 학점: A, 평점: 4.0
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력합니다:
- 점수를 입력하시오: 45 - 점수를 입력하시오: 66 - 점수를 입력하시오: 88
[국 어] 점수: 45, 학점: F , 평점: 0.0 [영 어] 점수: 77, 학점: C, 평점: 2.0 [컴퓨터] 점수: 90, 학점: A, 평점: 4.0
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력합니다:
- 점수를 입력하시오: 93 - 점수를 입력하시오: 56 - 점수를 입력하시오: 72
[국 어] 점수: 93, 학점: A, 평점: 4.0 [영 어] 점수: 56, 학점: F, 평점: 0.0 [컴퓨터] 점수: 72, 학점: C, 평점: 2.0
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력합니다:
- 점수를 입력하시오: 102 - 점수를 입력하시오: 85 - 점수를 입력하시오: 20
오류: 100이 넘어서, 정상적인 점수가 아닌 것이 있습니다.
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력합니다:
- 점수를 입력하시오 : 66 - 점수를 입력하시오 : 85 - 점수를 입력하시오 : 20
[국 어] 점수: 66, 학점: D, 평점: 1.0 [영 어] 점수: 85, 학점: B, 평점: 3.0 [컴퓨터] 점수: 20, 학점: F, 평점: 0.0
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력합니다:
- 점수를 입력하시오 : 87 - 점수를 입력하시오 : 95 - 점수를 입력하시오 : 99
[국 어] 점수: 87, 학점: B, 평점: 3.0 [영 어] 점수: 95, 학점: A, 평점: 4.0 [컴퓨터] 점수: 99, 학점: A, 평점: 4.0
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력합니다:
- 점수를 입력하시오 : -1 - 점수를 입력하시오 : -1 - 점수를 입력하시오 : -1
음의 점수가 입력되어 입력을 종료합니다.
프로그램을 종료합니다.
©
J.-H. Kang, CNU 3 과목 점수 입력 받기
inputScore()를 3 번 사용한다.
System.out.print(“> 세 과목 (국어, 영어 컴퓨터)의 점수를 차례로 입력합니다: “) ; score_Korean = inputScore() ;
score_English = inputScore() ; score_Computer = inputScore() ;
[실습 7-1-3] 3과목 처리하기 18
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력합니다:
- 점수를 입력하시오: 82
- 점수를 입력하시오: 77
- 점수를 입력하시오: 90
©
J.-H. Kang, CNU 점수 오류 검사하기
3 개의 점수 중에서 하나만 100 이 넘어도 오류 메시지를 내보내기로 한다.
if ( (score_Korean > 100) || (score_English> 100) || (score_Computer > 100 ) ) { System.out.print(“오류: 100 이 넘어서, 정상적인 점수가 아닌 것이 있습니다.”) ; }
[실습 7-1-3] 3과목 처리하기 19
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력합니다:
- 점수를 입력하시오: 102 - 점수를 입력하시오: 85 - 점수를 입력하시오: 20
오류: 100이 넘어서, 정상적인 점수가 아닌 것이 있습니다.
©
J.-H. Kang, CNU[프로그램 7-4]
평균 평점 구하기
[실습 7-4] 평균평점 구하기 20
©
J.-H. Kang, CNU 제4단계 [프로그램 7-4]
문제
[프로그램 7-3]과 입력은 동일하다.
세 과목 Korean, English, Computer 의 점수를 입력받는다.
입력의 종료 조건
음수의 점수가 입력되면 입력은 종료되는 것으로 본다. 더 이상 점수는 입력되지 않는다.
출력
입력된 점수와 그에 해당하는 학점과 평점을 출력한다.
또한 평균 평점을 출력한다.
평균 평점대별 학생수를 출력한다.
[실습 7-4] 평균평점 구하기 21
©
J.-H. Kang, CNU 프로그램 7-4 [3]
출력의 예
[실습 7-4] 평균평점 구하기 22
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력하시오: 82 77 90 [국 어] 점수: 82, 학점: B, 평점: 3.0
[영 어] 점수: 77, 학점: C, 평점: 2.0 [컴퓨터] 점수: 90, 학점: A, 평점: 4.0 이 학생의 평균평점은 3.0 입니다.
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력하시오: 45 66 88 [국 어] 점수: 45, 학점: F , 평점: 0.0
[영 어] 점수: 77, 학점: C, 평점: 2.0 [컴퓨터] 점수: 90, 학점: A, 평점: 4.0 이 학생의 평균평점은 2.0 입니다.
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력하시오: 93 56 72 [국 어] 점수: 93, 학점: A, 평점: 4.0
[영 어] 점수: 56, 학점: F, 평점: 0.0 [컴퓨터] 점수: 72, 학점: C, 평점: 2.0 이 학생의 평균평점은 2.0 입니다.
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력하시오: 102 85 20 오류: 100이 넘어서, 정상적인 점수가 아닙니다.
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력하시오: 66 85 20 [국 어] 점수: 66, 학점: D, 평점: 1.0
[영 어] 점수: 85, 학점: B, 평점: 3.0 [컴퓨터] 점수: 20, 학점: F, 평점: 0.0 이 학생의 평균평점은 1.33 입니다.
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력하시오: 87 95 99 [국 어] 점수: 87, 학점: B, 평점: 3.0
[영 어] 점수: 95, 학점: A, 평점: 4.0 [컴퓨터] 점수: 99, 학점: A, 평점: 4.0 이 학생의 평균평점은 3.67 입니다.
> 세 과목 (국어, 영어, 컴퓨터) 의 점수를 차례로 입력하시오: -1 -1 -1 음의 점수가 입력되어 입력을 종료합니다.
평균평점이 3.0 이상 4.0 미만인 학생은 2 명입니다.
평균평점이 2.0 이상 3.0 미만인 학생은 2 명입니다.
평균평점이 1.0 이상 2.0 미만인 학생은 1 명입니다.
평균평점이 1.0 미만인 학생은 1 명입니다.
프로그램을 종료합니다.