2019년 3월 22일 금요일

국비 교육 : 게임 프로그래밍 017일

17일 차 교육 메모를 옮겨 본다.

콘솔 프로그래밍의 출력 화면을 좀 더 다듬기 위해 C 문법의 입력/출력 제어 방식이 교육된 거 같다. 그리고 프로그램의 호출방식에 대한 내용이 작성되어 있다.


C형 출력으로는 printf 함수를 사용한다.

이스케이프 시퀀스
- 문자 중에 '\'가 붙은 문자들
- 출력되지 않고, 기능을 수행하는 문자
- 한 글자 1byte로 취급한다.
- '\n'  : 개행
- '\t'  : tab 가로 탭
- '\a'  : beep 음 출력
- '\"'  : " 출력
- '\0'  : null 문자를 의미
- cout에 입력해도 적용된다.

서식 문자
- 출력 문자열에 특정 값을 대입하는 문자
- 앞에 % 가 붙음
- %d : 정수를 출력
- %f : 실수를 출력
- %s : 문자열
- 서식 문자 고급활용이 있으며, 각자 알아보도록 한다.

C형 입력으로는 scanf 함수를 사용한다.
- scanf 함수 보다는 scanf_s 함수를 사용하는 것을 권장한다.
- char형 입력 시 저장공간 길이를 넘쳐도 처리가 되도록 자체 방어 처리가 되어 있다.
- scanf("서식", &변수);


함수 : 명령의 모음
- 반환 자료형 함수명(매개 변수)
 {
   함수 몸통
 }

함수는 전방 선언을 통해 이런 함수가 있다고 알릴 수 있다.
- 전방 선언 = 함수의 원형 = 프로토타입
- 선언 형태 : 반환 자료형 함수명(매개 변수);

매개 변수
- 호출 시 외부변수의 값으로 초기화하는 함수의 지역 변수

지역
- {  } 로 구분되는 구역
- 구역 내 return; 는 함수의 종료를 의미

변수
- 지역 변수 : {  } 안에 선언되는 변수로 지역이 끝나면 소멸
- 전역 변수 : {  } 밖에 선언되는 변수로 프로그램 종료 시 소멸


재귀 호출, 재귀 함수
- 함수가 함수 내부에서 자기 자신을 호출하는 형태
- 장점 : 코드가 간편해진다. (특정 알고리즘에 한해서)
- 단점 : 느리다. (종료 프로세스 , 불필요한 조건)
   : 용량 낭비가 심하다. (메모리에 함수를 보관)
   : 디버깅이 어렵다.
- 주의점 : 종료 조건(재 호출조건)이 명확해야 한다.


호출 방식 : 호출 시 초기화 값에 대한 형태
- Call By Value : 값에 의한 호출 : 일반 변수
- Call By Address : 주소에 의한 호출 : 포인터 변수
- Call By Reference : 참조에 의한 호출 : 레퍼런스 변수
- 호출 방식의 구분은 외부 변수의 값을 함수 내부에서 변경하는지로 구분한다.
 (Call By Address, Call By Reference 는 변경 가능)

Reference 변수
- 기존의 변수에 별칭을 새로 지정하는 문법
- 특성상 초기화와 동시 선언되어야 됨
- 데이터형 & 변수명 = 변수;
 int count = 10;
 int &num = count;

Call By Value
- 값에 의한 호출
- 매개 변수가 일반 변수들
- 초기화 값이 값의 형태
- 함수 내부에서 외부 변수를 변경할 수 없음

Call By Address
- 주소에 의한 호출
- 매개 변수가 포인터 변수일 경우
- 초기화 값이 주솟값
- 주소 값이 변경할 변수의 주소인 경우에만 변경 가능

Call By Reference
- 참조에 의한 호출
- 매개 변수가 레퍼런스 변수인 경우
 -원격지의 변수가 되는 것이기에 값의 수정이 자유로움

int i = 0;
char data[10] = {};  ← 초기화를 하면 0값 즉 \0 의 문자가 입력되어 있다.
cin >> data;
char *a = s;
while(*(a+i))   ← 문자열의 값이 들어가서 while이 정상 동작하고, 
{          끝의 \0 항목 도달 시 while이 종료된다.
  코드 본체    이스케이프 문자 \0 는 0 과 같으며 false 처리됨
  i++
}

위 코드는 즉 아래와 같이 처리된다.

char data[10] = {};
cin >> data;
for( int i = 0 ; data[i] != 0 ; i++ )
{
  코드 본체 
} 

for를 이용한 반복문이 가능하며 char형에 대해 한시적으로 활용이 가능하다.

char형 배열을 이용한 반복문 활용이다.
이상과 같은 내용이 정리되어 있는데, 다른날에 비해 압도적으로 내용이 많다.
그리고 가장 혼돈되는 개념들이 동시에 설명 됐다.
다시 봐도 Call By ~ 에 대한 내용은 하루 강의가 된다고 습득이 되지 않았을 것 같은데 이후 다시 설명되는지는 모르겠다.



댓글 없음:

댓글 쓰기

Unity - Firebase 연동 (Analytics, AdMob)

버전 : firebase_unity_sdk_6.5.0.zip 게임에서 통계 측정 및 광고 추적을 위해 Firebase 을 연동한다. 앞서 [Unity - GPGS 와 Admob 연동 및 배포 준비 작업]  연동 이후에 작업을 진행 한다. 유니...