컴퓨터공학 개론 제11장 프로그래밍 -...

69
11프로그래밍 컴퓨터공학 개론 1

Upload: others

Post on 08-Jan-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

제11장 프로그래밍

컴퓨터공학 개론

1

Page 2: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

학습 목표

프로그램의 정의와 개발 방법에 대해 배운다

저수준 언어와 고수준 언어의 차이점을 이해한다

어셈블리 프로그래밍 언어의 예를 이용하여 저수준 언어의 기초를 배운다

알고리즘과 의사코드를 포함한 프로그램의 구조에 대해 배운다

2

Page 3: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

학습 목표 (계속)

Java의 예를 이용하여 고수준 언어의 기본을

이해한다

변수에 대해 배우고 그 활용 방법을 배운다

Java 연산자를 사용해본다

프로그래밍에 사용되는 제어 구조를

경험해본다

객체-지향 프로그래밍과 연관된 용어를

이해한다

3

Page 4: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

프로그램의 정의

어떤 문제를 해결하기 위한 문장이나 명령을 수행하는 절차들의 집합

컴퓨터가 이해할 수 있는 언어로 변환되어야 한다

알고리즘: 논리적으로 순서화된 문장의 집합

변환 작업은 인터프리터 또는 컴파일러를 통해 수행된다 인터프리터는 프로그램 문장을 한 줄씩 해석한다

컴파일러는 모든 문장을 읽어와서 완성된 프로그램을 생성한다

4

Page 5: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

컴퓨터와 대화하기

여러분이 어떤 언어를 사용할 지 결정한다

어셈블리어는 하드웨어 제어에 적합

Java, JavaScript는 인터넷 응용에 주로 사용

Lisp는 인공지능 분야에 사용

Visual Basic은 단순하지만 강력한 그래픽 사용자 인터페이스 환경을 제공

그 밖에 C, C++, Smalltalk, Delphi, ADA, FORTRAN, COBOL 등의 언어가 사용된다

5

Page 6: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

프로그래밍 언어의 유형

저수준 언어 사람보다는 컴퓨터가 이해하는 방식에 가까운

프로그래밍 언어

기계어는 컴퓨터가 바로 이해할 수 있는 최저 수준의 언어

어셈블리어는 최저수준 언어와 고수준 언어 사이의 언어 어셈블러는 어셈블리어 코드를 기계어로 번환

고수준 언어 사람에게 친숙하고 자연스러운 언어

6

Page 7: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

7

그림 11-1

프로그래밍 언어의 유형

Page 8: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

저수준 언어

기계어는 이진수만으로 이루어진다

어셈블리어는 기계어에 비해 영어와 유사하다

각 문장이 기계 명령어에 대응된다

고수준 언어에 비해 빠른 실행이 가능하다

특정 CPU 유형에 매우 밀접한 특성을 지닌다

고수준 언어보다 읽고 이해하기가 어렵다

8

Page 9: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

어셈블리어의 문장

연산자와 레지스터 등을 포함하는 알파벳 형식의 명령어로 구성된다

mov 문은 값들을 이동시킨다

mov cx, 8

add 문은 값을 더한다

mov cx, 3

mov dx, 8

add dx, cx

sub 문은 한 숫자에서 다른 숫자를 뺀다

9

Page 10: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

어셈블리어의 문장(계속)

inc 문은 레지스터의 값을 증가시킨다 inc dx

cmp 문은 두 값을 비교한다 mov cx, 4

mov dx, 7

cmp dx, cx (dx - cx = 0이면 제로 플래그가 1이

된다)

jnz 문은 프로그램의 특정 위치로 이동시킨다 jnz stop (제로 플래그가 1일 때 stop으로

표기된 위치로 이동한다)

10

Page 11: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

고수준 언어

저수준 언어에 비해 읽고, 쓰고, 이해하기가 쉽다

한 개의 문장으로 보다 많은 작업을 수행할 수 있다

일반적으로 느리다 컴파일이나 인터프리트 과정이 필요하다

많은 언어들이 통합 개발 환경(IDE:Integrated Development Environment)을 포함한다 편집기, 컴파일러, 그래픽 디자이너 등을

포함하는 인터페이스

11

Page 12: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

12

그림 11-2

마이크로소프트의 Visual Studio .NET 은 소프트웨어 개발을 용이하게 한다

Page 13: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

프로그램의 구조

프로그램의 구조는 알고리즘을 기반으로 하는데, 이는 주로 의사코드로 표현된다

알고리즘: 어떤 문제를 해결하기 위해 따라야 하는 실행 가능한 단계

의사코드: 사람의 언어 형식으로 작성된 알고리즘에 대한 판독 가능한 설명문

프로그래밍 언어 구문으로 변환될 템플릿

13

Page 14: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

의사코드의 예

화씨 온도에서 섭씨 온도로의 변환

사용자에게 화씨 온도를 입력받는다

입력된 온도를 섭씨 온도로의 변환식에 대입한다

섭씨 온도 = (5/9) * (화씨 온도 - 32)

화씨 온도 ##에서 변환된 섭씨 온도 XX를 출력

14

Page 15: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

알고리즘의 선택과 테스팅

어떤 임무를 수행하거나 목표를 달성하기 위해서는 여러 가지 다양한 방법들이 사용될 수 있다

무수한 결정요인들을 기반으로 프로젝트에 가장 적합한 알고리즘을 선택하라

알고리즘의 테스트를 위해 여러분이 최종 사용자라고 가정하고 프로그램을 구동시켜봐야 한다

온도변환의 예: 만약 사용자가 숫자를 입력하지 않는다면?

유효한 값이 입력되었는지를 검사하도록 의사코드를 변경한다

15

Page 16: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

테스팅을 통해 의사코드를 변경

사용자에게 화씨 온도를 입력받는다

숫자가 입력된다면

입력된 온도를 변환식에 대입한다

섭씨 온도 =

(5/9) * (화씨 온도 - 32)

화씨 온도 ##에서 변환된 섭씨 온도 XX를 출력한다

그렇지 않다면

입력된 값이 유효하지 않다는 메시지를 출력한다

16

Page 17: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

프로그래밍 언어의 구문

프로그램 작성은 요리법 (알고리즘이나 의사코드)에 따라 재료들을 정확히 섞어 음식 (프로그램)을 만들어내는 과정에 비유될 수 있다

음식의 재료들은 다음과 같다

변수

연산자

제어 구조

객체

17

Page 18: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

Java의 요리법

Java는 썬에 의해 개발된 고수준 언어이다

친숙한 구문 (C++ 구문과 유사)

이식성이 좋다

재컴파일 없이도 다른 컴퓨터에서 동작 가능

강력하다

많은 작업을 수행할 수 있는 풍부한 라이브러리를 가지고 있다

상용화되어 있다

다양한 응용의 개발에 사용되고 있다

18

Page 19: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

변수

변수: 컴퓨터 메모리의 특정 위치와 값을 식별하기 위해 사용되는 이름

실제 하드웨어의 주소를 알 필요없이 컴퓨터 메모리에 접근할 수 있는 방법을 제공

변수에 식별자를 부여하는 것을 변수를 선언한다고 말한다

변수를 선언할 때, 식별자나 자료형, 내용 등과 같은 여러 속성을 지정하게 된다

int numTicketsBought;

19

Page 20: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

식별자와 명명 기법

Java의 변수 선언 규칙 영문자, 밑줄, 숫자만 사용

영문자로 시작한다

Java에서 특수한 프로그래밍 의미를 가지는 예약어는 사용할 수 없다

명명 기법 의미있는 이름으로 식별자를 정하여라

첫 번째 단어의 첫 문자는 소문자로 하되, 후속된 단어들의 첫 문자는 대문자로 하라

20

Page 21: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

변수의 종류

모든 변수는 강한 타입(strongly typed)을 가진다

각 변수에 저장될 데이터의 타입을 선언해주어야 한다

8가지의 데이터 타입 제공 (표 11-1에서 11-4까지 제공)

변수 선언 구문 type variableName;s

예 float salary;

boolean deserveRaise;

21

Page 22: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

22

표 11-1, Java의 정수형 데이터 타입

Page 23: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

23

표 11-2, Java의 실수형 데이터 타입

Page 24: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

24

표 11-3, Java의 문자형 데이터 타입

Page 25: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

25

표 11-4, Java의 불리언 데이터 타입

Page 26: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

문자열 데이터 타입

문자형 데이터 타입은 단일 인용 부호 안에 영문자 하나를 포함한다

문자열 데이터 타입은 이중 부호의 쌍 안에 하나 또는 그 이상의 영문자를 포함한다 String sFirstName = “Joe”;

String sLastName = “Blow”;

문자열 접합 연산자(+)는 여러 문자열을 하나로 결합시킨다 String sFullName;

sFullName = sLastName + “, ” + sFirstName;

26

Page 27: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

헝가리 표기법

변수의 명명 방법

변수 앞에 그 변수의 데이터 타입을 나타내는 문자를 붙이는 방법

단지 가독성을 높이기 위한 방법임

변수가 반드시 해당 데이터 값을 저장해야 하는 것은 아니다

27

Page 28: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

28

표 11-5, Java의 헝가리 표기법

Page 29: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

변수의 내용

변수 초기화는 변수를 선언하면서 동시에 그 변수에 값을 할당하는 것을 말한다

프로그래밍 언어에서 디폴트 값을 할당하게 하는 것보다는 변수 초기화를 하는 방법이 더 낫다

두 문장을 사용하는 방법

int iStudentCount;

iStudentCount = 456;

한 문장으로 결합시킨 방법

int iStudentCount = 456;

29

Page 30: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

연산자

데이터 조작에 기호가 사용된다

데이터 타입에 의한 분류

덧셈, 뺄셈, 곱셈, 나눗셈, 모듈로 연산을 위한 산술 연산자

이진 수식에 사용될 수 있는 약식 표기

iFirstNum = iFirstNum + iSecondNum;

은 다음의 문장과 같다

iFirstNum += iSecondNum;

30

Page 31: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

31

표 11-6, 산술 연산자

Page 32: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

연산자 (계속)

증감 연산자 (++, --)

변수의 값에서 1만큼 증가시키거나 감소시킨다

전치 증가 또는 전치 감소 연산자는 해당 소스 코드의 행에서 맨 먼저 수행한다

후치 증가 또는 후치 감소 연산자는 해당 소스 코드의 행에서 맨 나중에 수행한다

int iCount = 5;

int iResult = 0;

iResult = iCount++ + 10;

결과값은 15이다; iCount는 결과값이 계산된 후에 맨 나중에 6으로 증가한다

32

Page 33: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

연산자 (계속)

관계 연산자 (표 11-7)

값을 비교

논리 연산자 (표 11-8)

수식을 비교할 때 진리표를 생성한다 수식이란 실행된 후 결과 값을 반환해주는 프로그래밍

문장이다

33

Page 34: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

34

표 11-7, Java의 관계 연산자

Page 35: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

35

표 11-8, Java의 논리 연산자

Page 36: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

36

표 11-9, 불리언 수식의 대표적인 예제

Page 37: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

우선순위

연산자들 사이의 우선순위가 결과값을 좌우한다

높은 우선순위의 연산자가 그보다 낮은 우선순위의 연산자들보다 먼저 수행된다

(2+3) * 4 의 결과값은 20이다

2 - 5 * 2 의 결과값은 -8 이다

37

Page 38: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

38

그림 11-5, 관계, 산술 연산자들 사이의 우선순위

Page 39: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

Java 제어 구조와 프로그램 흐름

제어 구조는 프로그램 내에서 구문의 실행 순서를 지시하는 문장이다

고수준 언어의 네 가지 제어 구조

호출

하향식 제어

선택적 제어

반복적 제어

39

Page 40: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

호출

모든 Java 프로그램은 시작점을 알리는 “main”이라는 함수를 가지고 있다

public static void main(String[] args) {}

“public”은 다른 어떤 소스 코드에게도 보여질 수 있다는 것을 의미한다

“static”은 함수가 해당 클래스에 속한다는 것을 나타낸다

“void”는 반환 값이 없다는 것을 의미한다

“String[] args”는 프로그램이 실행될 때 파라미터나 값을 수신할 수 있다

40

Page 41: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

하향식 제어 (시퀀스)

프로그램 문장이 시간상으로 상단에서 하단으로 한번에 하나씩 연속적으로 실행된다

모든 프로그래밍 언어에서 발견되는 가장 보편적인 프로그래밍 제어 구조이다

다른 어떤 소스 코드를 호출하지 않고 순서대로 문장을 실행함으로써 구현할 수 있다

41

Page 42: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

코드의 블록

여러 개의 문장을 시작 및 종료 중괄호 안에 묶어 단일 블록 문장으로 만들 수 있다 중괄호 안의 문장들은 서로 기능적으로

연관된다

중괄호를 누락시켰을 때 프로그램이 부정확하게 동작할 수 있다

이 밖에도 중괄호가 필요한 경우가 있다 호출, 선택, 반복과 같은 제어 구조와 함께 흔히

사용된다

42

Page 43: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

데이터의 출력

System.out.print()나 System.out.println() 문장을 이용하여 현재 출력 장치로 데이터를 출력할 수 있다 print()는 출력된 데이터의 맨 마지막에 현재의

삽입 지점이 오게 한다

println() 는 출력된 데이터의 다음 행에 삽입 지점이 오게 한다

“\n” (새 라인 출력제어 문자)는 시스템에게 다음 행으로 이동하라고 요구한다

수식은 결합될 수 있다 (+ 연산자)

43

Page 44: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

44

표 11-10, Java 출력 문장의 대표 예제

Page 45: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

데이터의 입력

System.in은 현재의 입력 장치로부터

데이터를 읽어오는 여러 메소드를 제공한다

입력 스트림으로부터 문자를 읽어오기 위해

새로운 변수를 생성한다

문자들은 새로 입력된 문자열을 저장할 일종의

메모리 버퍼 역할을 하는 다른 변수에 한 글자씩

옮겨 쓴다

이 값은 다시 readLine() 메소드를 호출함으로써

선언된 문자열 변수에 할당된다

45

Page 46: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

호출에 대한 부언

호출은 무엇 또는 누구를 부르는 행위이다

Java는 함수 또는 메소드를 부름으로써 호출을 구현한다

함수는 어떤 작업을 수행하고 때에 따라서는 결과 값을 반환할 수 있다

메소드는 클래스에 속한 함수이다

함수의 이름이 나오면 시스템은 해당 함수 이름으로 시작되는 소스 코드의 첫 번째 라인으로 제어를 옮긴다

함수의 실행이 끝나면 시스템은 함수를 호출했던 지점으로 제어를 되돌린다

46

Page 47: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

선택

if 문

if (조건)

{ 한 개 또는 그 이상의 문장 }

if-else 문

if (조건)

{한 개 또는 그 이상의 문장 }

else

{한 개 또는 그 이상의 문장 }

47

Page 48: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

선택 (계속)

if-else-if 문 if (조건)

{한 개 또는 그 이상의 문장 }

else if

{한 개 또는 그 이상의 문장 }

… // 다수의 else if문을 포함할 수 있다

else

{한 개 또는 그 이상의 문장 }

프로그램이 실행되는 동안 프로그램 내에서 어떤 변수의 상태에 따라 특정 코드 블록을 수행한다

48

Page 49: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

선택 (계속) switch 문

switch (수식) { case 값_1; 문장_1; break; case 값_2 문장_2 break; default; // 선택적 문장_3; }

49

Page 50: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

반복 (루핑)

for 문 for (변수 선언; 수식;

증가/감소)

{ 문장(들); }

루프에서 카운터로 사용되는 변수를 변경할 때 증가 및 감소 연산자가 자주 사용된다

for (iCount = 1; iCount <= 5; iCount++)

for와 while 루프는 선조건 루프이다 루프 안의 문장들을 실행하기 이전에 조건식을

먼저 검사한다

50

Page 51: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

반복 (계속)

while 문 while (수식)

{ 문장들; }

do while 문 do

{

문장(들);

} while (수식);

do while 루프는 후조건 루프이다 조건식이 검사되기 이전에 최소한 한 번은 실행된다

51

Page 52: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

프로그램의 실행

Java를 구매하거나 다운로드 받는다 썬 마이크로 시스템 사에서는 Java와 JDK를

무료로 제공한다

프로그램을 작성할 편집기를 선택한다 통합 개발 환경(IDE) 또는 메모장과 같은 단순한

텍스트 편집기를 사용할 수 있다

javac 명령어로 프로그램을 컴파일한다 javac MyProg1.java

java 명령어로 프로그램을 실행한다 java MyProg1

52

Page 53: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

객체-지향 프로그래밍

요소, 물체, 사람을 객체로 표현하고 객체의 행위를 둘러싼 논리에 기반을 둔 프로그래밍 형태

객체는 세 가지 특징을 가진다 특성 (속성)

행위

반응 (이벤트에 대한)

OOP는 재사용성과 유지 관리의 효율성을 제공한다

53

Page 54: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

54

그림 11-7

객체는 특성, 행위, 반응이라는

특징을 가진다

Page 55: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

OOP의 작동법

틀 만들기

클래스 혹은 템플릿을 만든다

모형 만들기

틀의 특성을 정의한다

동작 모양 만들기

모형이 수행할 수 있는 동작과 어떤 이벤트에 대한 반응 등을 정의한다

55

Page 56: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

OOP 용어

클래스

새로운 객체 유형을 그 속성과 행위에 따라

정의하는데 사용되는 템플릿 또는 틀

객체

데이터와 프로시저 모드로 이루어진 독립적인 개체

인스턴스화

클래스를 바탕으로 객체를 생성하는 과정

생성자

객체를 인스턴스화하는 데 사용되는 클래스 메소드

56

Page 57: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

OOP 용어 (계속)

특성 (속성)

객체의 특징

메소드

객체가 수행하는 행위; 클래스 내에서 된다

이벤트

클래스에 의해 인식되는 행위

이벤트 핸들러

이벤트에 대해 클래스가 반응하는 방식

57

Page 58: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

58

그림 11-8

플라스틱 인형을 만드는 과정은 OOP 개념을 설명한다

Page 59: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

계승

범용 클래스를 기반으로 좀 더 세부적인 클래스를 생성하여 클래스 기능을 추가적으로 제공하는 프로세스

부모 클래스 계승을 통해 다른 클래스들을 생성할 수 있는

범용 클래스

서브 클래스 부모 클래스로부터 생성된 상세한 클래스

메소드 호출시 정의된 클래스를 찾을 때까지 연쇄적으로 부모 클래스로 거슬러 올라간다

59

Page 60: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

60

그림 11-9

계승은 코드 재사용성을 촉진한다

Page 61: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

캡슐화

다른 객체들에게 한 객체의 연산들을 숨기는 과정

객체를 블랙박스와 같이 취급한다

어떤 객체를 사용하기 위해서 그 객체가 어떻게 동작하는지에 대해 전혀 알 필요가 없다

잠재적인 오류를 방지한다

문제가 있는 객체로부터 오류를 분리시킨다

61

Page 62: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

폴리모피즘

상이한 연산을 표시하는데 동일한 표현을 사용할 수 있는 객체의 능력

연산이 호출되면 시스템이 실행 시에 어떤 연산이 사용될 지를 결정한다

예: 모든 기하학적인 모양(사각형, 삼각형, 원)에 대하여 Draw 연산을 사용

Draw가 호출되면, 시스템은 모양을 정확하게 출력하기 위하여 어떤 객체의 메소드를 호출해야 할 지를 결정한다

62

Page 63: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

Java와 OOP

Java의 모든 것은 클래스, 그 속성과 메소드로 귀결된다

여러분 자신이나 다른 누군가에 의해 생성된 객체들을 재사용함으로써 작성할 코드의 양을 줄일 수 있다

사용 가능한 객체나 라이브러리들을 보여주는 자료를 이용하라

많은 프로그램, 알고리즘, 작업 등이 다른 누군가에 의해 이미 구현되어 있다

63

Page 64: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

프로그래밍 언어의 선택

고려 사항

기능

판매자의 능력

인기도

관련 직종

Price

학습의 용이함

성능

64

Page 65: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

맺는 말

프로그램은 여러분이 하라고 시킨 일만 한다

프로그램이 정확하게 동작하지 않는

대부분의 경우는 컴퓨터가 아닌 프로그램

개발자의 잘못에서 기인한다

책임감 있는 프로그래머가 되라

사회에 일조할 수 있는 훌륭한 프로그램을 개발할 수

있다

여러분이 개발한 프로그램이 사회에 심각한 결과를

초래할 수도 있다

65

Page 66: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

요약

프로그램은 프로그램을 개발하는

프로그래머만큼 중요하다

프로그램은 도처에서 여러분이 하는

대부분으 일들에 사용된다

프로그램은 해석되거나 컴파일된다

저수준 언어는 컴퓨터가 이해하는 기계어와

보다 밀접하다

어셈블리어는 저수준 프로그래밍 언어이다

66

Page 67: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

요약(계속)

고수준 언어는 인간의 언어와 더 밀접하다

알고리즘은 논리적인 방법으로 문제를 해결하기 위해 개발된다

의사코드는 프로그램이 수행해야 할 일들을 프로그래머가 사람의 언어로 정밀하게 계획하는 방법이다

알고리즘을 개발하는 일은 프로그램 개발에서 가장 중요한 과정이다

67

Page 68: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

요약(계속)

Java는 원래 인터넷을 염두에 두고 설계된 고수준 언어이다

변수는 특정 데이터 타입에 할당되는 임시 저장 위치

계산이나 저장 용도로 사용된다

Java는 수학, 관계, 논리 연산자를 사용한다

프로그램에서 사용되는 제어 구조에는 하향식, 호출, 선택, 반복 등의 네 가지 유형이 있다

68

Page 69: 컴퓨터공학 개론 제11장 프로그래밍 - mmu.ac.krlily.mmu.ac.kr/lecture/12ic/Intro_CE_11.pdf · 2012-05-07 · 프로그램 작성은 요리법 (알고리즘이나 의사코드)에

요약(계속)

객체-지향 프로그래밍(OOP)은 프로그래머로

하여금 코드를 재사용하여 프로그램의 유지

관리가 효율적으로 이루어지게 한다

OOP는 객체를 생성할 수 있는 템플릿 또는 틀

역할을 하는 클래스를 생성한다

객체는 속성, 메소드, 이벤트 핸들러를 포함한다

Java는 OOP 모델과 밀접하게 연관된다.

훌륭한 프로그래머가 되기 위해서는 실습, 실습,

또 실습해야 한다.

69