3주차: 세 살 코딩버릇을 여든까지 - 배열, 포인터, 어드레스, 함수, Call-by-value, Call-by-reference, 구조체 - 이번 시간에 이건 꼭 해야 돼! (이거 궁서체다 강사 진지하다) 1. Wiki에 Ice breaking 및 진행 상황 정리. 2. Koistudy.net 과제 확인 및 빠른 복습 후 수업 진행 3. 코딩 Keyword 설명 4. 구글 협업 문서 만들어보기 1. 보기 좋은 코드의 중요성? 코딩을 하다 보면 자신의 코드를 다시 한번 점검해야 하는 경우가 꼭 생깁니다. 하지만 항상 문제가 생기죠. 이게 main문의 괄호(curly bracket : {} ) 인지 for문의 {} 인지 헷갈릴 때가 있죠? 이번 시간 이후에 한번 검색해보세요. 코딩 띄어쓰기, 괄호를 어떻게 붙여야 하는지에 대해서 말입니다. 꼭! 잊지 마세요. 중요하답니다. 유지보수가 어렵게 코딩 하는 방법(이렇게 하진 맙시다) 15페이지까지. http://www.hanb.co.kr/events/eventview.html?event_id=freebook 2. 코딩 실습 {{{ #include #include typedef struct _CALORIE{ char name[40]; float value; }CALORIE; int calregist(CALORIE *, int); float calcalc(CALORIE *, int); int main(){ CALORIE cal[500] = { {"쌀류", 150.0}, {"짜장면", 57.1}, {"국수",133.3}, {"우동",100.0}, {"소면",133.3}, {"식빵", 250.0}}; int cal_num = 6; int mode =0; printf("칼로리 계산기\n"); while(1){ printf("등록은 1, 계산은 2, 종료는 0을 입력하세요 : "); scanf("%d", &mode); if(mode == 0) break; else if(mode == 1) cal_num = calregist(cal, cal_num); else if(mode == 2) printf("총칼로리 : %6.2fkcal\n\n", calcalc(cal, cal_num)); } return 0; } int calregist(CALORIE *pcal, int num){ printf("식품명을 입력하세요 : "); scanf("%s", (pcal+num)->name); printf("그 식품의 칼로리를 입력하세요[kcal/100g] : "); scanf("%f", &(pcal+num)->value); printf("등록되었습니다.\n\n"); return num+1; } float calcalc(CALORIE *pcal, int num){ char name[40]; float gram = 0; float totalcal = 0.0; int i; printf("-- 식품명 일람 -------------\n"); for(i = 0; iname); printf("\n----------------------------------------\n"); while(1){ printf("식품명(end를 입력하면 계산합니다.) : "); scanf("%s", name); if(strcmp(name, "end") == 0) break; printf("그램 수 : "); scanf("%f", & gram); for(i=0;iname) == 0){ totalcal += (pcal+i)->value * gram /100.0; break; } } } return totalcal; } }}} 3. 코딩 KeyWord (선생님들께 질문해보세요) 3.1 함수(function)는 뭐고. 왜 생겼는가? 쓰면 좋은 점은? 함수의 범위(Scope)란? 3.2 같은 타입(Type)의 변수를 한꺼번에 관리해주는 배열(array)란? 3.3 메모리 주소(address)와 변수의 메모리 할당. 그리고 *포인터 (pointer) 3.4 Call-by-value, Call-by-reference.? 무엇이 다른가? 3.5 자기자신을 부르는 재귀 함수? 3.6 난 나만의 Type을 만들겠어 구조체(struct)와 typedef! . 모르는 것이 생겼을 때 C Library reference Guide http://www.acm.uiuc.edu/webmonkeys/book/c_guide/ WinAPI http://winapi.co.kr/ 를 찾아보시는 것을 항상 추천 드립니다. 4. 과제 컴퓨터 공학을 다니면서 우리와 관련된 것을 알아보는 것은 당연하겠죠? 컴퓨터 관련 자유주제에 대해 조사해오세요~! 구글 협업문서로 조를 이루어 해봅시다. 강사의 계정에 구글 협업 문서 만들기 -> 학생들의 계정 공유 등록 까지 마쳐봅시다. ---- [새싹교실/2012/새싹교실강사교육]