• 검색 결과가 없습니다.

4장 조건문

N/A
N/A
Protected

Academic year: 2022

Share "4장 조건문"

Copied!
32
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

1

4장 조건문

이충기

명지대학교 컴퓨터공학과

(2)

2

들어가며

Q: 집에서 학교로 가려고 한다. 가지고 있는 돈이 10,000원 이상이면 택시를 타고 가고 10,000원 미만이고 5,000원 이상이면 직행버스를 타며, 5,000원 미만이면 지하철을 타 고 간다. 이 경우에 집에서 학교에 가는 방법을 상세하고 명확하게 기술하라.

A:

(3)

3

흐름 제어

 흐름 제어는 문들이 프로그램 내에서 실행되는 순서이다.

 메소드 내의 문들의 기본 실행 순서는 문들의 순서와 같다.

 다음 문들이 이 순서를 바꾸는 것을 가능하게 한다.

- 조건문(선택문): 문의 실행 여부를 조건의 만족 여부에 따라 선택하게 한다.

- 반복문(loop): 문들을 조건의 만족 여부에 따라 반복적으로 실행하게 한다.

 각 조건은 부울 연산식에 기초한다.

(4)

4

조건문

 조건문은 어느 문이 다음에 실행될지를 선택하게 한다.

 조건문은 우리가 조건의 만족 여부에 따라 기본 결정을 하게 한다.

 자바 조건문 - if 문

- switch 문

(5)

5

부울 연산식

 부울 연산식(혹은 조건식)은 관계 연산자와 논리 연산자를 사용한다.

 부울 연산식의 연산 결과는 true 혹은 false이다.

 부울 연산식은 복잡한 조건을 나타내기 위해 사용된다.

(6)

6

관계 연산자

 관계 연산자는 두 피연산자들의 값을 서로 비교하여 그들 사이의 관계를 결정한다.

3 > 4 (false) 3 < 4 (true) 3 >= 3 (true) 7 <= 7 (true) 3 == 4 (false) 3 != 4 (true)

(7)

7

논리 연산자

 논리 연산자는 논리 연산을 수행한다.

- && (논리 AND) - || (논리 OR)

- ! (논리 NOT)

 이 연산자들의 모든 피연산자는 논리형을 갖고 결과 값은 true 혹은 false이다.

(8)

8

논리 AND와 논리 OR

 &&: 두 개의 피연산자가 모두 true면 결과는 true, 아니면 false

 || : 두 개의 피연산자 중 적어도 어느 하나가 true면 결과는 true, 아니면 false

진리표

(9)

9

논리 NOT

 ! : 피연산자가 true면 false, false면 true

진리표

(10)

10

예: 논리 연산자

다음 논리 연산식의 결과는?

1.(3 == 5) && (8 == 8) 2.(8 == 7) || (5 < 10)

3.!(3 == 9)

(11)

11

관계 / 논리연산자 우선 순위

 관계연산자들은 산술연산자들보다 우선순위가 낮다.

 논리연산자들은 관계연산자들보다 우선순위가 낮다.

 논리 NOT는 논리 AND 혹은 논리 OR보다 우선순위가 높다.

(12)

12

예: 논리 연산식

Q: 시험 점수가 90점 이상이고 출석률이 100%라는 조건을 나타내라.

A: 점수와 출석률을 나타내는 변수들을 각각 score와 attendRate라고 하자.

그러면 조건은 다음과 같이 나타낼 수 있다.

(score >= 90) && (attendRate == 100)

(13)

13

조건 연산자

 조건 연산자는 두 개의 연산식들 중 하나를 결정 하기 위해 조건식을 사용하는 연산자이다.

 구문법: (조건식) ? 연산식1 : 연산식2

 의미: 조건식의 논리 값이 true이면 연산식1,

false이면 연산식2의 값을 계산한다.

(14)

14

예: 조건 연산자

max = (x < y) ? y : x;

 위 배정문은 변수 y의 값이 변수 x의 값보다

크면 변수 max에 y의 값을 아니면 x의 값을

저장한다.

(15)

15

if 문

 if 문은 조건식의 논리 값에 따라 문의 실행 여부를 결정한다.

 구문법: if (조건식) 문

 의미: 조건식이 true이면 문을 실행하고 false이면 실행하지 않는다.

주: if 문에서 문 대신에 복합문이 나올 수 있다.

(16)

16

if 문의 순서도

조건식

false

true

(17)

17

예: if 문

if (gpa >= 4.0)

System.out.println(“장학금 대상자”);

 위 문은 변수 gpa의 값이 4.0보다 크거나 같다면

‘장학금 대상자’가 출력된다. 그렇지 않다면 아무

일도 하지 않는다.

(18)

18

if-else 문

 if 문에 else절을 추가한 것이 if-else 문이다.

 구문법: if (조건식) 문1;

else 문2;

 의미: 조건식이 true이면 문1을 실행하고 false이면 문2를 수행한다.

(19)

19

if-else 문의 순서도

조건식

1

true false

2

(20)

20

예: if-else 문

if (n % 2 == 0)

System.out.println(“짝수이다”);

else

System.out.println(“홀수이다”);

 위 문은 n을 2로 나눈 나머지가 0이면(n이 짝수이면 )

‘짝수이다’를 출력하고 아니면 ‘홀수이다’를 출력한다.

(21)

21

중첩된 if 문

 중첩된 if 문은 if 문의 결과로서 실행되는 문이나 else 절의 문이 또 다른 if 문인 경우이다.

if (score >= 90) grade = 'A';

else if (score >= 80) grade = 'B';

else if (score >= 70) grade = 'C';

else if (score >= 60) grade = 'D';

else grade = 'F';

(22)

22

데이터 비교

 실수들 비교

- 실수들은 근사값으로 표현된다.

- 두 개의 실수 값들이 같음을 비교할 때 값들의 차를 계산하고 그 차가 주어진 허용 한계치 내에 있다면 같다고 간주한다.

- 예: if(num1 – num2 < 0.0001) System.out.print(“같다”);

 문자들 비교

- 자바에서 모든 문자는 유니코드로 나타내진다.

- 유니코드 문자 집합에서 모든 문자들의 순서는 정의되어 있다.

- 예: if(‘a’ < ‘b’) System.out.print(“문자 a는 문자 b보다 작다”);

(23)

23

문자열 비교

 문자열들을 비교하기 위해 관계 연산자들을 사용할 수 없다.

 두 개의 문자열들이 같은지를 비교하기 위해 String 클래스의 equals 메소드를 이용한다.

예: String name1 = “선남”;

String name2 = “선녀”;

if (name1.equals(name2)) System.out.println(“같다”);

else System.out.println(“다르다”);

(24)

24

switch 문

 switch 문은 어느 문이 다음에 실행될 지를 결정하는 또 다른 방법 을 제공한다.

 switch 문은 연산식을 계산하여 그 결과가 여러 경우들의 하나와 같은지를 확인한다.

 각 경우는 하나의 값과 문(들)의 목록을 가진다.

 연산식의 계산 값과 같은 첫 번째 경우에 해당하는 문(들)을 실행 한다.

(25)

25

switch (연산식) {

case 값1 : 문 목록 1 case 값2 : 문 목록 2 case 값3 : 문 목록 3

• • •

default: 문 목록 x }

 문 목록은 문들의 나열이다. 문 목록은 보통 break 문으로 끝난다.

 연산식의 계산 결과가 여러 값들의 하나와 같다면 그에 대응하는 문 목록을 실행한다.

switch 문의 일반적인 구문

(26)

26

switch 문

 자주 break 문이 각 case의 문 목록의 마지막 문으로 사용된다.

 break 문은 제어 흐름을 switch 문의 다음 문으로 이동하게 한다.

 break 문이 사용되지 않는다면 제어 흐름은 다음 case의 문 목록으로 이동 한다.

 때때로 이것이 적절할지 모른다. 그러나 우리는 자주 각 case에 대응된 문 들만 실행하기를 원한다.

 또한 switch 문은 선택사항으로 기본(default) case를 가질 수 있다. 이 경우 는 연산식의 계산 결과가 모든 case의 값들과 같지 않다면 default 다음에 나오는 문 목록 x를 수행한다.

(27)

27

switch 문

 switch 문의 연산식의 결과 값은 int 형이나 char 형 값이어야 한다.

 각 case의 값은 상수여야 한다.

(28)

28

예: switch 문

// grade 는 char 형 변수이다.

switch (grade) {

case 'A' : aCount++;

break;

case 'B' : bCount++;

break;

case 'C' : cCount++;

break;

case 'D' : dCount++;

break;

default : fCount++;

break; // 빼도 됨 }

(29)

29

예제 프로그램

문제: 두 개의 정수 값을 입력 받아 최대값과 최소값을 구하는 프로그램을 작성하라.

설계

 변수들

- number1: 첫 번째 정수 값 - number2: 두 번째 정수 값 - maximum: 최대값

- minimum: 최소값

 알고리즘: 다음 슬라이드

(30)

30

알고리즘

number1 > number2?

시작

첫 번째 정수 값을 읽어 들여 number1에 저장한다 두 번째 정수 값을 읽어 들여 number2에 저장한다

maximum = number1 minimum = number2

maximum = number2 minimum = number1

maximum 과 minimum 을 출력한다

아니요

(31)

31

완성 프로그램

// FindMaxMin.java: 두 정수의 최대값과 최소값을 구한다 import java.util.Scanner;

public class FindMaxMin {

public static void main(String[] args) { // 변수들을 선언한다

int number1, number2, maximum, minimum;

Scanner scan = new Scanner(System.in);

// 두 개의 정수 값을 읽어 들인다

System.out.println("두 개의 정수 값을 입력 하세요: ”);

number1 = scan.nextInt();

number2 = scan.nextInt();

// 두 개의 정수 값을 비교하여 최대값과 최소값을 구한다

if (number1 > number2) { maximum = number1; minimum = number2; } else { maximum = number2; minimum = number1; }

// 최대값과 최소값을 출력한다

System.out.println("최대값은 ” + maximum + ”이다“);

System.out.println("최소값은 ” + minimum + ”이다“);

} }

(32)

32

요약

 흐름 제어

 부울 연산식

 관계 연산자

 논리 연산자

 if 문

 데이터 비교

 switch 문

 간단한 프로그램 작성

참조

관련 문서

따라서 계산

http://ucampus.jj.ac.kr/app/.. 블루투스 상태가 비정상으로 나오는 경우 설정 방법 2.. 4)

http://ucampus.jj.ac.kr/app/.. 블루투스 상태가 비정상으로 나오는 경우 설정 방법 2.. 4)

http://ucampus.jj.ac.kr/app/.. 블루투스 상태가 비정상으로 나오는 경우 설정 방법 2.. 4)

화학량론적 계산:

• “언어는 모든 요소가 서로 관련되어 있고 어떤 것의 가치가 다른 것의 동시적 존재로부터 나오는 그런 체계 이다.. 언어기호의 의미는 이

현재가치 계산 생략, 액면금액으로 부채 기록 가능.. 사 채 3) 액면발행 사채의 회계처리 (만기보유금융자산 경우 포함)..

덧셈과 뺄셈보다 곱셈 이 계산 순서에서 먼저임을 이해하고 이 모든 연산보다 괄호 안을 더 먼저 계산해야 함을