728x90

프로그래밍 209

11장 한 번에 하나씩

PART Ⅲ. 코드 재작성하기 11장. 한 번에 하나씩 - 한 번에 여러 가지 일을 수행하는 코드는 이해하기 어렵다. ★ 한 번에 하나의 작업만 수행하게 코드를 구성해야 한다. (코드를 '탈파편화(Defragmenting)'하라.) - 하나의 함수는 오직 한가지 작업만 하게 하는 것이 좋지만, 큰 함수를 독자적인 논리적 영역들로 재구성하는 것만으로 가독성에 도움이 된다. - 코드가 한 번에 한가지 일만 수행하게 하는 절차는 다음과 같다. 1. 코드가 수행하는 모든 '작업'을 나열한다. 이때 작업은 아주 간단한 일일수도 있고, 아주 모호한 일일수도 있다. 2. 이러한 작업을 분리하여 서로 다른 함수로 혹은 적어도 논리적으로 구분되는 영역에 놓을 수 있는 코드로 만들어라. __1. 작업은 작을 수 있다. -..

C언어 파일처리 주요예제 2 (고수준 파일 입출력2)

8. 데이터 파일에서 정수를 읽은 후, 2진트리에 순서에 맞게 저장한 다음, 전위운행한 다음 정렬한 결과를 다른 파일에 정렬하여 넣는 프로그램. #include #include #include #define LEFT 0 #define RIGHT 1 typedef int DATA; struct node { DATAd; node*left; node*right; }; typedef node* BTREE; BTREE new_node(DATA d1); void add_node(BTREE parent, BTREE r_node, DATA d1, int r_1); void inorder(FILE* ofp, BTREE root); BTREE root = NULL; int main() { DATA a; int size =..

C언어 파일처리 주요예제 1 (고수준 파일 입출력1)

1. c언어로 작성된 프로그램을 읽어서 화면으로 보여주는 프로그램을 작성하세요. #include #include #include void display(FILE* fp); //화면에 출력하는 함수 int main() { char fname[20], cExit; FILE* fp; do { printf("input file name : "); gets_s(fname, 20); fopen_s(&fp,fname,"r"); if (fp == NULL) { fprintf(stderr, "cannot open this file : %s \n", fname); } else { display(fp); } printf("\n\n Any key... or 'q' to exit..."); cExit = getchar(); }..

C언어 이론 12. 파일처리(고수준의 파일 입출력 2. 텍스트 입출력함수)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. getc(), fgetc() / putc(), fputc() //한 문자를 입출력하는 함수 ① 원형 int getc(FILE* _Stream); int putc(int _Character, FILE* _Steream); int fgetc(FILE* _Stream); int fputc(int _Character, FILE* _Stream); ② getc(FP)는 지정한 스트림으로부터 한 문자를 읽어드리고, FP를 1증가시킨다. ③ getc(stdin)은 키보드로부터 한 문자를 읽어들이고, getc(FP)는 FP가 가리키는 파일 스트림으로부터 한 글자를 읽어들인다. ④ getc(FP)의 FP가 ..

C언어 이론 12. 파일처리 (고수준의 파일 입출력 1. 열고닫기)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 파일 열고 닫기 ① 파일에 데이터를 입출력하려면 제일 먼저 파일을 열어서 실행중인 프로그램과 파일간의 스트림을 연결해야한다. ② 파일을 열고 작업이 끝나면 파일을 닫아 스트림을 닫아주어야 작업이 파일에 저장된다. ③ 고수준의 입출력에서는 이 스트림을 FP(파일포인터)로 관리한다. ④ 고수준의 입출력에서 파일을 여는 함수는 fopen_s()이고 닫는 함수는 fclose()이다. ⑤ fopen()의 경우 파일을 열고 FP값을 반환값으로 주기 때문에 이를 저장하지 않는 실수를 할 수도 있었지만, fopen_s()의 경우 FP값을 첫번째 인자로 요구하기 때문에 그럴수가 없다. Ⅱ. fopen_s()..

C언어 이론 12. 파일처리 (기본, 스트림, 고수준의 파일 입출력 함수들)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 파일처리 기본 ① '파일'이란 '프로그램을 처리하는데 사용되는 입출력 장치에 적용되는 논리적 개념'이다. ② '파일'은 '디스크에 정보가 저장되는 단위'이며 고유의 이름을 가진다. ③ C언어는 파일 입출력 방식으로 고수준과 저수준 두가지를 지원한다. 둘의 차이점은 다음과 같다. 고수준 저수준 버퍼 사용 사용 메모리로 직접 읽어들임 입출력 대상 스트림 파일 핸들 속도 느리다. 빠르다. 문자 단위 입출력 가능 가능하지만 비효율적이다. 세밀한 조작 어렵다. 가능하다. 난이도 비교적 쉽다. 조금 어렵다. ④ 두 방식의 가장 큰 차이점은 버퍼의 사용 유무이며 나머지는 이에 따라 파생되는 특성들이다. ..

10장 상관없는 하위문제 추출하기.

PART Ⅲ. 코드 재작성하기 10장. 상관없는 하위문제 추출하기 - 큰 흐름과 관계가 적은 하위 문제를 적극적으로 발견해서 추출하라. 1. 주어진 함수나 코드 블록을 보고, 스스로에게 질문하라. "상위수준에서 본 이 코드의 목적은 무엇인가?" 2. 코드의 모든 줄에 질문을 던져라. "이 코드는 직접적으로 코드가 해결하기 위한 목적을 위해서 존재하는가? 혹은 그 목적을 위해서 필요하긴 하지만 그 자체와 직접적으로 상관없는 하위문제를 해결하는가?" 3. 만약 본래 목적과 직접적으로 관련되지 않은 하위문제를 해결하는 코드의 분량이 상당히 많으면, 이를 추출해서 별도의 함수로 만들어라. - 이렇게 추출된 코드는 자신이 호출되는 이유를 알 필요가 없어야 한다. __1. 소개를 위한 예: findClosestLo..

C언어 문자열 관련 예제

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일.#include #include #include char* StringToAttach(const char* str1, const char* str2); int main() { char data[] = "K,G,C,A, game academy -33-"; size_t iDataSize = strlen(data) + 1; char *str1 = (char*)malloc(sizeof(char) * iDataSize); char str2[30]; { printf("========= 문자열 복사 ===========\n"); strcpy_s(str1, iDataSize, data); strncpy_s(str2, d..

C언어 함수 예제

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일. #include #include #include #include int Compute(int* iValueX, int* iValueY); void ComputeArray(int* iList, int n); char* StringToUpper(const char* strList); int main() { int iX = 10; int iY = 20; int iArr[] = { 10,20,0,40,50,60 }; printf("iX + iY : %d \n", Compute(&iX, &iY)); printf("iX : %d, iY : %d \n", iX, iY); int iMaxCnt = sizeof(iArr..

반응형