배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문...

33
문장 1

Transcript of 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문...

Page 1: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

문장 1

Page 2: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

배정문

혼합문

제어문

조건문

반복문

분기문

표준 입출력

입출력

형식화된 출력

[2/33]

Page 3: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

[3/33]

ANSI C 언어와 유사

문장의 종류

Page 4: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

값을 변수에 저장하는 데 사용

형태 : <변수> = <식> ;

형 변환

광역화(widening) 형 변환 : 컴파일러에 의해 자동적으로 변환

협소화(narrowing) 형 변환 : 캐스트(cast) 연산자

[예제 4.1] 테스트

[4/33]

remainder = dividend % divisor;

i = j = k = 0;

x *= y;

Page 5: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

여러 문장을 한데 묶어 하나의 문장으로 나타냄

주로 문장의 범위를 표시

형태

{ <선언> 혹은 <문장> }

지역변수(Local Variable)

블록의 내부에서 선언된 변수

선언된 블록 안에서만 참조 가능

[5/33]

if (a > b) a--; b++;

if (a > b) {a--; b++;}

Page 6: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

[6/33]

[예제 4.4 – LocalVariable.java]

public class LocalVariable { static int x; public static void main(String[] args) { int x = (x=2) * 2; System.out.println("x = " + x); } }

실행 결과 : x = 4

Page 7: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

프로그램의 실행 순서를 바꾸는 데 사용

실행 순서를 제어하는 방법에 따라

조건문 : if 문, switch 문

반복문 : for 문, while 문, do-while 문

분기문 : break 문, continue 문, return 문

[7/33]

Page 8: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

조건에 따라 실행되는 부분이 다를 때 사용.

if 문의 형태

조건식의 연산결과 : 논리형(true or false)

예 :

[8/33]

if (a < 0) a = -a; // 절대값

if (a > b) m = a; else m = b; // 큰값

if ( <조건식> ) <문장>

if ( <조건식> ) <문장1> else <문장2>

Page 9: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

내포된 if 문

참 부분에서 if 문이 반복

else 부분에서 if 문이 반복

[9/33]

if (<조건식>)

if (<조건식>)

// . . .

<문장>

if (<조건식1>) <문장1>

elseif (<조건식2>) <문장2>

. . .

elseif (<조건식n>) <문장n>

else <문장>

Page 10: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

조건에 따라 여러 경우로 처리해야 되는 경우

switch 문의 형태

여기서, default의 의미는 otherwise

break 문을 사용하여 탈출

[10/33]

switch (<식>) {

case <상수식1> : <문장1>

case <상수식2> : <문장2>

.

.

case <상수식n> : <문장n>

default : <문장>

}

Page 11: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

정해진 횟수만큼 일련의 문장을 반복

for 문의 형태

<식1> : 제어 변수 초기화

<식2> : 제어 변수를 검사하는 조건식

<식3> : 제어 변수의 값을 수정

[11/33]

s = 0;

for (i = 1; i <= N; ++i) // 1부터 N까지의 합 : i 증가

s += i;

for ( <식1> ; <식2> ; <식3> )

<문장>

Page 12: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

for 문의 실행순서

[12/33]

Page 13: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

무한 루프를 나타내는 for 문

루프 종료 : break 문, return 문

내포된 for 문

for 문 안에 for 문이 있을 때.

다차원 배열을 다룰 때.

[13/33]

for ( ; ;)

<문장>

for (i = 0; i < N; ++i)

for (j=0; j<M; ++j)

matrix[i][j] = 0;

Page 14: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

여러 원소로 이루어진 집합의 모든 원소에 대해 특정 작업을 반복

개선된 for문의 형태

수식은 배열이나 여러 변수를 포함할 수 있는 자료형

[14/33]

for (자료형 변수명: 수식)

<문장>

Page 15: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

[15/33]

[예제 4.4 – EnhancedForSt.java]

public class EnhancedForSt { public static void main(String[] args) { String[] color = { "red", "green", "blue" }; for (String s: color) { System.out.println(s); } } }

실행 결과 : red green blue

Page 16: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

조건식이 참인 경우에만 프로그램의 일정한 부분을 반복해서 실행 while 문의 형태

while 문의 예

[16/33]

i = 1; s = 0;

while (i <= N) { // 1부터 N까지의 합

s += i; ++i;

}

while ( 조건식 )

<문장>

Page 17: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

while 문의 실행순서

[17/33]

Page 18: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

for 문과 while 문의 비교

for : 주어진 횟수

while : 주어진 조건

[18/33]

for (i = 0; i < N; ++i)

s += i;

i = 0;

while (i < N) {

s += i;

++i;

}

Page 19: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

반복되는 문장을 먼저 실행 한 후에 조건식을 검사

do-while 문의 형태

precondition check --- for, while

postcondition check --- do-while

[19/33]

do

<문장>

while ( <조건식> );

Page 20: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

블록 밖으로 제어를 옮기는 역할

break 문의 형태 레이블이 없는 경우

C/C++와 동일

[20/33]

int i = 1;

while (true) {

if (i == 3)

break;

System.out.println(“This is a ” + i + “ iteration”);

++i;

}

break [레이블];

Page 21: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

레이블 break 문

goto 문 대용으로 사용 가능

사용형태

[21/33]

lableName :

반복문1 {

반복문2 {

// . . .

break;

// . . .

break labelName;

}

// . . .

}

Page 22: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

다음 반복이 시작되는 곳으로 제어를 옮기는 기능

continue 문의 형태

for 문 안에서 사용될 때

[22/33]

for(i = 0; i <= 5; ++i) {

if (i % 2 == 0)

continue;

System.out.println("This is a " + i + " iteration"); }

continue [레이블];

Page 23: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

while 문 안에서 사용될 때

조건 검사 부분으로 이동

[23/33]

i = 0;

while (i <= 5) {

++i;

if ((i % 2) == 0)

continue;

System.out.println("This is a odd iteration – " + i);

}

Page 24: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

레이블 continue 문

레이블 break와 유사

[24/33]

lableName :

반복문1 {

반복문2 {

// . . .

continue;

// . . .

continue labelName;

}

// . . .

}

Page 25: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

[25/33]

[예제 4.16 – LabeledContinue.java]

public class LabeledContinue {

public static void main(String[] args) { int count = 0; outer: for (int i = 0; i < 10; i++) { inner: for (int j = 0; j < 10; j++) { if ( j == 2) continue inner; if ( j == 5) continue outer; ++count; } } System.out.println("count = " + count); } }

실행 결과 : count = 40

Page 26: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

메소드의 실행을 종료하고 호출한 메소드에게 제어를 넘겨주는 문장

return 문의 형태

[예제 4.18] 테스트

[26/33]

return;

return <식>;

Page 27: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

시스템에서 지정한 표준 파일에 입출력하는 방법

표준 입출력

표준 입력 파일 : in

표준 출력 파일 : out

표준 에러 파일 : err

[27/33]

키보드

화면(screen)

System 클래스의 정적 변수

Page 28: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

자바 언어의 기본 패키지인 java.io로부터 제공

표준 입력 메소드 : System.in.read()

키보드로부터 한 개의 문자를 읽어 그 문자의 코드 값을 정수형으로 복귀하는 기능

표준 출력 메소드 : System.out.print(), System.out.println()

System.out.printf(), System.out.write()

[28/33]

Page 29: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

표준 입력에서 한 라인을 스트링 형태로 읽음 :

표준입력으로부터 한 라인을 읽어 스트링 형태로 복귀

스트링 형태를 정수 형태로 변환

[29/33]

import java.io.*;

BufferedReader input =

new BufferedReader(new InputStreamReader(System.in));

n = Integer.parseInt(input.readLine());

Page 30: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

[30/33]

[GcdLcd.java]

import java.io.*;

public class GcdLcd { static int gcdMethod(int x, int y) { while (x != y) if (x > y) x -= y; else y -=x; return x; } public static void main(String[] args) throws java.io.IOException { BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); int i, j; int gcd, lcd; System.out.print("Enter first number : "); i = Integer.parseInt(input.readLine()); System.out.print("Enter second number : "); j = Integer.parseInt(input.readLine()); gcd = gcdMethod(i, j); System.out.println("GCD of "+i+" and "+j+" = "+gcd); lcd = (i/gcd) * ( j/gcd) * gcd; System.out.println("LCD of "+i+" and "+j+" = "+lcd); } }

실행 결과 : Enter first number : 12 Enter second number : 6 GCD of 12 and 6 = 6 LCD of 12 and 6 = 12

Page 31: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

출력하려는 값에 포맷(format)을 명시하여 원하는 형태로 출력

System.out.printf() 메소드에서 출력 포맷 지정

출력 포맷의 형태

형식 지정 스트링(format string)

매개 변수의 개수와 일치하는 출력 포맷으로 이루어진 스트링 상수

형식화하려는 값의 형태

[31/33]

%[argument_index$][flags][width][.precision]conversion

System.out.printf(format-string, arg1, arg2, arg3, ..., argN);

Page 32: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

[32/33]

[예제 4.22 – FormattedOutput.java]

public class FormattedOutput { public static void main(String[] args) { System.out.printf("1) %3$2s %2$2s %1$2s\n", "a", "b", "c"); boolean b = false; System.out.printf("2) %b %b %b\n", null, b, "a"); System.out.printf("3) %h %h\n", null, b); System.out.printf("4) %s %s\n", null, b); System.out.printf("5) %1$d 0%1$o 0x%1$x\n", 3342); System.out.printf("6) %1$e %1$f %1$g %1$a\n", Math.PI); System.out.printf("7) %% %n"); } }

실행 결과 : 1) c b a 2) false false true 3) null 4d5 4) null false 5) 3342 06416 0xd0e 6) 3.141593e+00 3.141593 3.14159 0x1.921fb54442d18p1 7) %

Page 33: 배정문 - Dongguk · 표준 C(ANSI C)언어와 유사 기본 문장의 종류 배정문 혼문 제어문 조건문: if문, switch문 반복문: for문(개선된 for문), while문,

자바의 문장

표준 C(ANSI C)언어와 유사

기본 문장의 종류

배정문

혼합문

제어문

조건문: if문, switch문

반복문: for문(개선된 for문), while문, do-while문

분기문: break문, continue문, return문

표준 입출력

형식화된 출력 : 원하는 형식에 맞게 값을 출력

[33/33]