21
7. 중간정리

7 mid term summary

  • Upload
    -

  • View
    208

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 7 mid term summary

7. 중간정리

Page 2: 7 mid term summary

차례

• 프로그래밍 시작 : 자료형과 연산자

• 조건문, 반복문, 네임스페이스

• 고급변수 사용

• 논리적 자료 표현 : 구조체

• 함수

2/25

Page 3: 7 mid term summary

프로그래밍 시작 : 자료형과 연산자

• 문제 분석을 통해 다룰 자료 식별 및 자료형 결정 • 변수 및 상수(constant)의 data type

• 자료형 • 정수형 : signed, unsigned

• char, int (short, long, long long) – CPU, OS, 컴파일러에 의존적

• 실수형 : 항상 signed • float, double, long double (위와 같이 의존적)

• Bool형

• 유도형 : struct, union, enum

• char • ASCII 문자 저장용

• 기본 128 + 확장 128 • BCD 코드로 처리 못하는 특수문자 등을 표현하기 위함

3/25

Page 4: 7 mid term summary

프로그래밍 시작 : 자료형과 연산자

• u, l, ul의 suffix 를 이용하여 상수의 data type을 엄밀히 구분할 수 있음

• 100L, 72ul

• 문자열도 상수이다(constant 이므로)

• 연산자

• 산술연산자, 관계연산자, 논리연산자, 비트연산자

4/25

* GNU C++ : type_traits.h 에 사용가능한 변수타입이,

numeric_traits.h에 사용가능한 변수범위가 정의되어 있다.

Page 5: 7 mid term summary

조건문

• 조건문 if, switch~case

5/25

if (조건식) 조건이 참이면 수행할 문장;

if (조건식) 조건이 참이면 수행할 문장; else

조건이 거짓이면 수행할 문장;

if (조건식1)

조건식1이 참이면 수행할 문장; else if (조건식2) 조건식2가 참이면 수행할 문장; else if (조건식3) 조건식3이 참이면 수행할 문장; ………

else

조건 모두 만족되지 못할 경우 수행할 문장;

switch (수식) {

case 상수1:

수식의 결과가 상수1일 때 수행할 내용;

case 상수2:

수식의 결과가 상수2일 때 수행할 내용;

case 상수3:

수식의 결과가 상수3일 때 수행할 내용;

case 상수4:

수식의 결과가 상수4일 때 수행할 내용; ……

default :

수식 결과가 주어진 case에 모두 만족되지 않을

경우 수행할 내용; }

Page 6: 7 mid term summary

반복문

• for, while, do~while

6/25

for (초기화 ; 조건문 ; 증감문) {

반복할 내용들; }

while (조건문) {

반복할 내용들; }

do

{

반복할 내용들;

} while (조건문);

break, continue

Page 7: 7 mid term summary

네임스페이스

• 네임스페이스

• 블록 이름으로 범위 내에 변수 함수 모두 선언, 정의가 가능하다.

• 범위 연산자(::)를 통해 해당 범위 내의 멤버 참조 가능

7/25

namespace A_RANGE

{

int score=100;

int TEST(const int s)

{

return s/10;

}

}

using namespace A_RANGE;

Page 8: 7 mid term summary

고급변수 사용 1

레퍼런스 변수

8/25

Page 9: 7 mid term summary

고급변수 사용 2

• 배열변수 – 연속적인 기억공간

• 메모리 동적 할당

9/25

int a=100, i;

int *pa=&a;

int arr[5]={1,2,3,4,5};

Page 10: 7 mid term summary

고급변수 사용 2

• 변수, 함수의 선언 규칙

• static const unsigned int * a = 100;

• Specifier • type specifier

• type qualifier : const, volatile

• storage class specifier

• Modifier : *, [], ()

• Identifier : 변수이름

• Initializer : rvalue

10/25

Page 11: 7 mid term summary

고급변수 사용 2

• Modifier

• Int *a • 주소화

• Int a[3]; • 집합화

• Int a(int b); • 함수화

• 무한확장 가능! • Int *(*a[4])(int *);

11/25

Page 12: 7 mid term summary

고급변수 사용 2

• 연산자 우선순위 규정

• 1. 단항우선 • 단항연산자 -> 이항 -> 삼항 -> 대입 -> , 연산자

• 2. 후치 우선 • 후치 -> 전치

• 3. 근치 우선 • 가까운 단항 -> 먼 단항

• *--(*b)[3](3,4);

• *(--(*b)[3])(3,4);

12/25

Page 13: 7 mid term summary

고급변수 사용 2

• 변수의 해석

• Int *a[4]; • 1. token 분리

• 2. 우선순위 배정

• 3. identifier 부터 해석

• a는 int 를 가리키는 주소 4개를 담을 수 있는 배열이다.

• * : 가리키는 데이터 타입 / 포인터가 가리키는 것 -> 차순위 modifier

• [] : 요소 수, 요소 타입 / 배열의 요소 -> 차순위 modifier

• () : return 타입 / 함수의 리턴 -> 차순위 modifier

13/25

Page 14: 7 mid term summary

고급변수 사용 2

14/25

int *

int *

int *

int *

a[0]

a[1]

a[2]

a[3]

int

int

int

int

Int *a[4];

a

Page 15: 7 mid term summary

고급변수 사용 2

• 연습

• int **p

• int *a[3]

• int (*p)[3]

• char *f(char)

• char (*p)(char)

• int a[3][4]

• int *(*p)(void)

• int *(*a[3])(void)

15/25

Page 16: 7 mid term summary

고급변수 사용 2

• 구조체의 동적 할당

16/25

Page 17: 7 mid term summary

고급변수 사용 2

• 동적구조체는 멤버 연산자(.)을 사용할 수 없다.

• 동적 구조체에는 이름이 없고, 그 구조체의 주소만 알기 때문!

• ps = new char [strlen(name) + 1];

• delete ?

17/25

Page 18: 7 mid term summary

논리적 자료의 표현 : 구조체

• 여러 항목을 하나로 묶어서 자료형으로 선언

• 멤버

• 멤버 참조 연산자 (.)

• 구조체 포인터형 변수의 멤버 참조 연산자 (->)

• typedef 와 함께 사용

18/25

struct 태그명 {

구조체 멤버;

} (변수이름);

typedef struct

{

구조체 멤버;

} 재정의이름;

Struct

{

구조체 멤버;

} 변수이름1;

typedef struct 태그명 {

구조체 멤버;

} 재정의이름;

Page 19: 7 mid term summary

함수

• 함수

• 약속된 기능을 수행

• 표준 함수 = 표준 라이브러리 = 라이브러리 함수

• 사용자 정의함수

• main()

• 함수 오버로딩(Overloading)

• 동일한 함수 이름이지만 매개변수가 다른 경우 함수 재정의 가능!!!

• Sizeof (int) ?

• sizeof는 연산자이며, 컴파일 타임에 값이 결정되어 상수화된다

19/25

Page 20: 7 mid term summary

함수

• 함수 등가포인터

• 함수 이름 대신

• (*p)

• int add(int, int);

• -> int (*p)(int, int);

• char *f(char *);

• -> char *(*p)(char *);

20/25

Page 21: 7 mid term summary

배열은?

• 배열 등가포인터

• 배열 이름 대신 • (*p)

• Int a[4]; • -> int *p;

• Int *a[4]; • -> int **p;

• Int a[2][3]; • -> (*p)[3];

21/25