728x90

프로그래밍 209

C언어 포인터 관련 예제

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. 1) #include #include #include int main() { { // 포인터 변수 할당, 기본 void*에서 int*로 형변환 printf("\n=====================\n"); int* pPoint = (int*)malloc(sizeof(int)); *pPoint = 100; printf("%0x번지 : %d\n", pPoint + 0, *(pPoint + 0)); free(pPoint); } { //포인터 변수 배열 할당 printf("\n=====================\n"); int* pPointArray = (int*)malloc(sizeof(int) * 1..

C언어 자료형 입출력 예제

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. printf문을 이용한 출력 예제 #include int main() { printf("KGCA 게임아카데미\n"); printf("======= CODE 000 ======\n"); inti = 65; floatf = 123.456; printf("변수 i의 값 : %d\n", i); // 정수 printf("변수 g의 값 : %g\n", f); // %f / %e 중에 적당한 방식으로 출력 (자리수 맞춤) printf("변수 f의 값 : %f\n", f); // 소수점 6자리 출력 printf("변수 e의 값 : %f\n", f); // 지수형식으로 출력 (소문자 e를 사용) printf("변수 E의..

9장 변수와 가독성

PART Ⅱ. 루프와 논리를 단순화하기 9장. 변수와 가독성 - 변수를 잘못 사용하면 다음과 같은 문제가 있다. 1. 변수의 수가 많을수록 기억하고 다루기 더 어려워진다. 2. 변수의 범위가 넓어질수록 기억하고 다루는 시간이 더 길어진다. 3. 변수값이 자주 바뀔수록 현재값을 기억하고 다루기가 더 어려워진다. __01 변수 제거하기 - 가독성에 도움되지 않는 변수는 제거하는 것이 좋다. - 불필요한 임시 변수 : 복잡한 표현을 나누는 것도 아니고, 명확성에 도움이 되는 것도 아니고, 중복된 코드를 압축하지도 않는 임시 변수. - 중간 결과 삭제하기 : 그저 중간 값을 저장하는 변수는 결과를 얻자마자 곧바로 처리하는 방식으로 제거할 수 있다. - 흐름 제어 변수 제거하기 : 순수하게 프로그램의 실행 방향을..

8장 거대한 표현을 잘게 쪼개기

PART Ⅱ. 루프와 논리를 단순화하기 8장. 거대한 표현을 잘게 쪼개기 ★ 거대한 표현을 더 소화하기 쉬운 여러 조각으로 나눈다. __01 설명 변수 - 거대한 표현을 쪼개는 가장 쉬운 방법은 작은 하위표현을 담을 '추가 변수(extra variable)'을 만드는 것이다. - 추가 변수는 하위 표현의 의미를 설명하므로 '설명 변수(explaning variable)'라고도 한다. __02 요약 변수 - 커다란 코드의 덩어리를 짧은 이름으로 대체하여 더 쉽게 관리하고 파악하는 목적으로 만드는 변수를 '요약 변수(summary variable)'라고 한다. - 요약 변수를 통해 읽는 사람이 코드의 주된 개념을 더 쉽게 파악할 수 있게 도와줄 수 있다. __03 드모르간의 법칙 사용하기 - 불리언 표현은 ..

7장 읽기 쉽게 흐름제어 만들기

PART Ⅱ. 루프와 논리를 단순화하기 7장. 읽기 쉽게 흐름제어 만들기 - 제어문은 사실 코드를 읽기 어렵게 만든다. ★ 흐름을 제어하는 조건과 루프 그리고 여타 요소를 최대한 '자연스럽게' 만들도록 노력하라. 코드를 읽다가 다시 되돌아가서 코드를 읽지 않아도 되게끔 만들어야 한다. __01. 조건문에서 인수의 순서 - 왼쪽에 '질문을 받는' 유동적인 값을 쓰고, 오른쪽에 비교대상으로 사용되는 고정적인 값을 써라. __02. if/else 블록의 순서 - 조건은 부정문이 아닌 긍정문으로 쓰려고하라. - 간단한 것을 먼저 처리하라. 이러면 한 화면으로 두개의 구문을 볼 수 있을 가능성이 높아진다. - 더 흥미롭고, 확실한 것을 먼저 다루어라. - 위의 세가지 규칙이 서로 충돌을 일으킬 수도 있다. 중요한..

6장 명확하고 간결한 주석 달기

PART I. 표면적 수준에서의 개선 6장 명확하고 간결한 주석 달기 - 주석은 높은 '정보 대 공간' 비율을 갖춰야 한다. __01. 주석을 간결하게 하라 - 짧게 줄여도 정보를 충분히 전달할 수 있다면 주석을 짧게 줄여라. __02. 모호한 대명사는 피하라 - 모호한 대명사는 원래 명사로 고치거나, 의미가 명확해지도록 문장을 고쳐라. __03. 엉터리 문장을 다듬어라 - 주석을 명확하게 하는 작업과 간결하게 하는 작업은 대부분 한꺼번에 이루어진다. __04. 함수의 동작을 명확하게 설명하라 - 애매한 단어를 사용하지 말고 구현한 방식을 명확하게 설명하는 것이 좋다. __5. 구체적인 용법을 설명해주는 입/출력 예를 사용하라 - 주석을 작성하는 데 신중하게 선택된 입/출력 예는 천 마디 말보다 위력적이..

5장 주석에 담아야 하는 대상

PART I. 표면적 수준에서의 개선 5장. 주석에 담아야 하는 대상 ★ 주석의 목적은 코드를 읽는 사람이 코드를 작성한 사람만큼 코드를 잘 이해하게 돕는 데 있다. __01. 설명하지 말아야 하는 것 ★ 코드에서 빠르게 유추할 수 있는 내용은 주석으로 달지 말라. - 설명 자체를 위한 설명을 달지 말라. 주석을 달아야하겠다면 파악하기 어려운 세부사항을 적는것이 좋다. - 나쁜 이름에 주석을 달지 마라. 대신 이름을 고쳐라. 좋은 코드 > 나쁜 코드 + 좋은 주석 __02. 생각을 기록하라 - 코드를 짜면서 의도한 바나 깨달은 바를 주석으로 기록하라. - 상수가 무엇을 하는지, 그것이 왜 특정한 값을 갖게 되었는지에 대한 내용을 기록해둬라. - 코드에 있는 결함을 설명하라. 코드에 부족한 점이 있는건 당..

4장 미학

Part 1. 표면적 수준의 개선4장. 미학 -좋은 소스코드는 '눈을 편하게' 해야 한다. 이 장에서는 다음과 같은 세 가지 원리가 사용된다. 1. 코드를 읽는 사람이 이미 친숙한, 일관성 있는 레이아웃을 사용하라. 2. 비슷한 코드는 서로 비슷해 보이게 만들어라. 3. 서로 연관된 코드는 하나의 블록으로 묶어라. ※ 여기서 말하는 미학은 가독성만을 위한 것으로 새롭게 설계하는 리팩토링은 서로 독립된 아이디어에 해당한다. 두가지 모두를 추구하는게 이상적이다. __01. 미학이 무슨 상관인가? - 미학적으로 보기 좋은 코드가 사용하기 더 편리하다. 우리는 대부분의 시간을 코드를 그저 바라보는 데 쓴다는 것을 명심하라. __02. 일관성과 간결성을 위해서 줄 바꿈을 재정렬하기 - 줄이 길어져 줄바꿈을 해야한..

3장 오해할 수 없는 이름들

Part 1. 표면적 수준의 개선3장. 오해할 수 없는 이름들 ★ 본인이 지은 이름을 "다른 사람들이 다른 의미로 해석할 수 있을까?"라는 질문을 던져보며 철저하게 확인해야 한다. __01. 예: Filter() -filter라는 변수명은 의미가 모호하다. 대상을 '고르는' 기능을 원한다면 select가 '제거하는' 기능을 원한다면 exclude가 더 낫다.__02. 예: Clip(text, length) - 어떤 문단의 내용을 오려내는 함수 Clip(text,length)라면 두가지 방식으로 이해할 수 있다. 이 함수의 기능은 문단을 처음부터 최대 length만큼 잘라내는 것이므로 truncate(text,max_chars)가 더 좋다. __03. 경계를 포함하는 한계값을 다룰 때는 min과 max를 ..

2장 이름에 정보 담기

Part 1. 표면적 수준의 개선2장. 이름에 정보 담기 ★ 이름(식별자)에 정보를 담아내라. 이름을 일종의 설명문으로 생각하라. 좋은 이름은 생각보다 많은 정보를 전달할 수 있다. __01. 특정한 단어 고르기 - 구체적인 단어를 선택하라. 더 '화려한' 단어를 찾아보면 그 변수에 더 적합한 단어를 찾는데 도움이 된다. ★ 재치 있는 이름보다 명확하고 간결한 이름이 더 좋다. __02. tmp나 retval 같은 보편적인 이름 피하기 ★ retval이라는 이름은 정보를 제대로 담고 있지 않다. 대신 변수값을 설명하는 이름을 사용하라. - 하지만 보편적인 이름이 필요한 의미를 더 전달하는 경우도 있다. ★ tmp라는 이름은 대상이 짧게 임시적으로만 존재하고, 임시적 존재 자체가 변수의 가장 중요한 용도일..

반응형