[[TableOfContents]] = 새싹êµì‹¤/startLine = * 모임시간 : 가변 * 가르치는 사람 : 서민관 * 배우는 사람 : 박환í¬, ì´ì„±í›ˆ, 최재현, 서민관 = 수업 = == 1회차-환í¬, 성훈 (2012-03-21) == === 수업내용 === * ì „ì²´ì ì¸ ìˆ˜ì—… ì¼ì •. * wiki 사용법. * 0ê³¼ 1으로 어떻게 글ìžë¥¼ 표현하는가(ASCII code). * 컴파ì¼ëŸ¬ê°€ 하는 ì¼. * ë³€ìˆ˜ì˜ ê°œë…ê³¼ 타입. * ìž…, ì¶œë ¥ 함수(printf, scanf)와 테스트 함수(assert). * 왜 테스트 함수를 ì¨ì•¼ 하는가. === ê³¼ì œ === * 변수 ì„ ì–¸ê³¼ 사칙연산만 한 시ì ì—서 ì–´ë–¤ ê³¼ì œë¥¼ 내야 í• ì§€ 딱히 ë– ì˜¤ë¥´ëŠ” ê²ƒì´ ì—†ì–´ì„œ ì´ë²ˆì—는 패스. === 후기 === * 처ìŒì´ë¼ 간단하게 í•˜ë ¤ê³ ë³€ìˆ˜ì™€ ì—°ì‚°ì— ëŒ€í•´ì„œë§Œ ë§ì„ 했는ë°, 간단하게 í•˜ë ¤ê³ í•˜ë‹ˆê¹Œ 너무 ë‚´ìš©ì´ ê°„ë‹¨í•´ì ¸ì„œ ë”ì§€ 모르는 사ì´ì— ë‚´ìš©ì´ ë‹¤ ëë‚˜ë²„ë ¸ìŠµë‹ˆë‹¤. ê·¸ë ‡ë‹¤ê³ ìž˜ í–ˆëŠëƒê³ 하면 ê·¸ê²ƒë„ ë”±ížˆ 아닌 ëŠë‚Œì´ë„¤ìš”. 앞으로는 실습 위주로 하면서 조금 ë” ìžì„¸í•˜ê²Œ ì§„í–‰ì„ í•´ì•¼ 하지 않ì„까 싶습니다. ê²½ìš°ì— ë”°ë¼ì„œëŠ” ì™„ì „ížˆ 다른 ë°©ë²•ì„ ì¨ì•¼ í• ì§€ë„ ëª¨ë¥´ê² ì§€ë§Œ... ì–´ì¨Œë“ ì•„ëŠ” 것과 가르치는 ê²ƒì€ ë‹¤ë¥´ë‹¤ëŠ” ê²ƒì„ ìƒˆì‚¼ ëŠë‚€ 시간ì´ì—ˆìŠµë‹ˆë‹¤. - [서민관] * 매주가 ê¸°ë‹¤ë ¤ì ¸ì„œ 좋네요 ã…‹ã…‹ã…‹ã…‹ã…‹ - ì´ì„±í›ˆ * 앞으로가 기대대요 ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ - ë°•í™˜í¬ == 1회차-재현 (2012-03-22) == === 수업내용 === * ì „ì²´ì ì¸ ìˆ˜ì—… ì¼ì •. * 재현ì´ê°€ ê¸°ì¡´ì— ì•„ëŠ” 부분들(변수, ì œì–´ë¬¸) 확ì¸. * ì •í™•í•˜ê²Œ 알지 못 하는 부분들(함수, call by value, call by reference, 구조체, í¬ì¸í„°) === ê³¼ì œ === * ì¼ë‹¨ 재현ì´ê°€ ê¸°ì¡´ì— C를 ì–´ëŠ ì •ë„ ê³µë¶€í–ˆëŠ”ì§€ë¥¼ 확ì¸í•˜ê¸° 위한 시간ì´ë¼ 따로 ê³¼ì œë¥¼ 준비하지 못 í–ˆìŒ. === 후기 === * 서민관 - 간단하게 재현ì´ê°€ C문법 ì•Œê³ ìžˆëŠ” 부분 알아보기, 함수 만들어보기, ì „ì²´ì ì¸ ê³„íš ì„¤ëª…, gcc 사용법. ì¼ë‹¨ ì œì–´ë¬¸ê³¼ 간단한 함수 ë¬¸ë²•ê¹Œì§€ë„ ì•Œê³ ìžˆëŠ” 것 같다. ì–´ì œ ì¼ë„ 있어서 ê¸´ìž¥ì„ ë§Žì´ í–ˆëŠ”ë° ê·¸ëž˜ë„ ìƒê°ë³´ë‹¤ ì–´ë µì§€ëŠ” 않았다. 앞으로는 좀 ë” ì˜ˆì œë“±ì„ ì¤€ë¹„í•´ì•¼ê² ë‹¤. * 최재현 - 아는 범위를 확ì¸í•˜ê³ ì•žìœ¼ë¡œì˜ ë°©í–¥ì— ëŒ€í•´ 얘기 했습니다. 다ìŒì—는 모르는 ê²ƒë“¤ì— ëŒ€í•´ ë°°ìš°ê³ ì•„ëŠ” ê²ƒì€ í™•ì‹¤ížˆ ë°°ì›Œì•¼ê² ìŠµë‹ˆë‹¤. == 2회차-í™˜í¬ (2012-03-26) == === 수업내용 === * 1회차 ë‚´ìš©ì˜ ë³µìŠµ. * ì œì–´ë¬¸ì˜ ì˜ì˜. * ì œì–´ë¬¸(조건문, 반복문)ì˜ ë¬¸ë²•ê³¼ 몇몇 주ì˜í•´ì•¼ ë 부분들(switchë¬¸ì˜ break 사용, 반복문ì—ì„œì˜ ì¢…ë£Œ ì¡°ê±´ 등). * 간단한 ì œì–´ë¬¸ 실습. === ê³¼ì œ === * ì¤‘ì²©ëœ ë°˜ë³µë¬¸ìœ¼ë¡œ 별 ì°ê¸° - ìƒë‹¹ížˆ 특ì´í•˜ê²Œ ë°˜ë³µë¬¸ì„ ì‚¬ìš©í–ˆë‹¤. ìƒê°ì´ 좀 좋ì€ë“¯ -_- {{{ int main() { int num1 , num2 = 1, num3, num4 = 2; printf("ë³„ì„ ìœ„í•´ì„œ 숫ìžë¥¼ ìž…ë ¥í•´ì£¼ì„¸ìš”\n"); scanf("%d", &num1); num3 = num1 - 1; while(num2 <= num1){ while(num3 < num1){ printf("*"); num3++; } printf("\n"); num3 = num3 - num4; num2 = num2 + 1; num4++; } return 0; } }}} * 윤년 ë‹¬ë ¥ === 후기 === * ë°•í™˜í¬ - ì˜¤ëŠ˜ì€ ì œì–´ë¬¸ì— ëŒ€í•œ ë‚´ìš©ì„ ë°°ì› ê³ ëŠë‚Œì€ 마ìŒì´ íŽ¸í•˜ì˜€ê³ ì œì–´ë¬¸ì—는 ì´ëŸ¬í•œ 종류가 ìžˆë‹¤ëŠ”ê²ƒì„ ì•Œì•˜ê³ ì•žìœ¼ë¡œ ë¬¸ë²•ì„ ì¢€ë” ìµí˜€ì•¼ê² ë‹¤ëŠ”ê²ƒì„ ìƒê°í–ˆìŠµë‹ˆë‹¤. * 서민관 - ì œì–´ë¬¸ì˜ ì‚¬ìš©ì— ëŒ€í•œ 수업(if문법, switch.. for...) 몇몇 ì œì–´ë¬¸ì—서 주ì˜í•´ì•¼ í• ì 들(switchì—ì„œì˜ break, ë°˜ë³µë¬¸ì˜ ì¢…ë£Œì¡°ê±´ë“±..) ê·¸ë¦¬ê³ ì¤‘ê°„ì¤‘ê°„ì— ì‰¬ë©´ì„œ 환í¬ê°€ 약간 ê´€ì‹¬ì„ ë³´ì¸ ë¶€ë¶„ë“¤ì— ëŒ€í•´ì„œ 설명(윈ë„ìš° 프로그래ë°, python, 다른 c함수들) ì €ë²ˆì— ìƒê°ë³´ë‹¤ ì§„í–‰ì´ ë§¤ë„럽지 않아서 ì´ë²ˆì—ë„ ì§„í–‰ì— ëŒ€í•œ ê±±ì •ì„ í–ˆëŠ”ë° 1:1ì´ë¼ 그런지 비êµì ì§„í–‰ì´ íŽ¸í–ˆë‹¤. ê·¸ë¦¬ê³ í™˜í¬ê°€ ìƒê°ë³´ë‹¤ 다양한 ë¶€ë¶„ì— ê´€ì‹¬ì„ ê°€ì§€ê³ ì§ˆë¬¸ì„ í•˜ëŠ” 것 같아서 보기 좋았다. ìƒˆë‚´ê¸°ë“¤ì´ C를 배우기가 꽤 힘들지 않ì„까 í–ˆëŠ”ë° ì˜ì™¸ë¡œ if문ì´ë‚˜ for문ì—서 ë¬¸ë²•ì˜ ì´í•´ê°€ ë¹ ë¥¸ 것 같아서 좀 놀ëžë‹¤. printf, scanf나 기타 헷갈리기 쉬운 cì˜ ê¸°ë³¸ë¬¸ë²•ì„ ìž˜ ì•Œê³ ìžˆì–´ì„œ 간단한 ì‹¤ìŠµì„ í•˜ê¸°ì— íŽ¸í–ˆë‹¤. == 3회차-í™˜í¬ (2012-3-28) == === 수업내용 === * ë°°ì—´ì˜ ì‚¬ìš©ë²•. * í•¨ìˆ˜ì˜ ì—í• ê³¼ ì¸ìž/리턴 íƒ€ìž…ì— ë”°ë¥¸ í•¨ìˆ˜ì˜ ì¢…ë¥˜. * í•¨ìˆ˜ì˜ ì‚¬ìš©. * 간단한 ì˜ˆì œ. * swap 함수를 통해서 알아본 현재 시ì ì—서 í•¨ìˆ˜ì˜ ë¬¸ì œ. === ê³¼ì œ === * 숫ìžë¥¼ 세 ê°œ 받아서 ì •ë ¬í•˜ê¸°. === 후기 === * 간단한 ì´ì „ 시간(if문, 반복문)ì˜ ë³µìŠµê³¼ ë°°ì—´ì˜ ì‚¬ìš©ì— ëŒ€í•´ 알아보았다. ê·¸ë¦¬ê³ ì´ë²ˆ ì‹œê°„ì— ì£¼ë¡œ 한 ë‚´ìš©ì€ í•¨ìˆ˜ê°€ 왜 필요한지와 함수를 만드는 법, 함수를 사용하는 법 등ì´ì—ˆë‹¤. ê°œì¸ì 으로는 함수를 꽤 중요하게 ìƒê°í•˜ëŠ” ë§Œí¼ í•¨ìˆ˜ì˜ í•„ìš”ì„±ì„ ìž˜ ìºì¹˜í•´ 줬으면 ì¢‹ê² ë‹¤. ê·¸ë¦¬ê³ ìƒˆì‚¼ 드는 ìƒê°ì´ì§€ë§Œ 환í¬ì˜ ì§ˆë¬¸ì´ ì¤‘ìš”í•œ ë¶€ë¶„ì„ ìž˜ 찌른다는 ìƒê°ì´ ë“ ë‹¤. 별다른 ì–¸ê¸‰ë„ ì—†ì—ˆëŠ”ë° í•¨ìˆ˜ ë‚´ì—서 ë³€ìˆ˜ì˜ scope나 함수 ë‚´ë¶€ì˜ ì´ë¦„ 겹침 ë“±ì— ëŒ€í•œ ì§ˆë¬¸ì´ ìžˆì—ˆë‹¤. ê·¸ë¦¬ê³ ì¤‘ê°„ì— í•¨ìˆ˜ ì‚¬ìš©ì˜ ì˜ˆì œë¡œ printfë¬¸ì„ ì•½ê°„ ì´ìƒí•˜ê²Œ ì“´ 코드를 ë³´ì—¬ì¤¬ëŠ”ë° ì˜ì™¸ë¡œ ê°ì„ 잘 ìž¡ì€ ê²ƒ 같았다. 현재 ì§„í–‰ìƒí™©ìœ¼ë¡œëŠ” 다ìŒì— í¬ì¸í„°ë¥¼ 다뤄야 í• í…ë° í•¨ìˆ˜ë¥¼ 쓰는 ê²ƒì„ ì¡°ê¸ˆ ë” ì—°ìŠµì„ ì‹œí‚¬ì§€ 바로 í¬ì¸í„°ë¥¼ 나갈지 ê³ ë¯¼ì´ë‹¤. 당장 í¬ì¸í„°ë¥¼ 했다가 ì–´ë ¤ì›Œí•˜ì§€ 않ì„까 ëª¨ë¥´ê² ë‹¤. - [서민관] * ê²½í—˜í–ˆë˜ ê²ƒ - ë°°ì—´, ë°°ì—´ì„ ì“¸ 때 ìžì£¼í•˜ëŠ” 실수 - 함수란? í•¨ìˆ˜ì˜ ì •ì˜, 만드는 ì˜ˆì œ - 숫ìžë¥¼ 받아 í° ìˆ˜ëŒ€ë¡œ ì •ë ¬ - í•´ë´ì•¼ í• ê²ƒ ......? - [박환í¬] == 3회차-성훈, 재현 (2012-3-28) == === 수업내용 === * 재현, 성훈ì´ì˜ í•¨ìˆ˜ì— ëŒ€í•œ ì§€ì‹ í™•ì¸. * swap 함수를 ë§Œë“¤ì–´ë³´ê³ ë¬¸ì œì 확ì¸. * í¬ì¸í„°ì˜ ê°œë…, 프로그램 실행시 ë©”ëª¨ë¦¬ì˜ êµ¬ì¡°. * malloc 함수를 ì´ìš©í•œ 메모리 í• ë‹¹. * ë°°ì—´ê³¼ í¬ì¸í„°ì˜ 관계. === ê³¼ì œ === === 후기 === * 처ìŒì— 간단하게 재현, 성훈ì´ì˜ í•¨ìˆ˜ì— ëŒ€í•œ ì§€ì‹ì„ 확ì¸í–ˆë‹¤. ê·¸ í›„ì— swap 함수를 만들어 ë³´ê³ ì‹¤í–‰ì‹œì˜ ë¬¸ì œì ì— ëŒ€í•´ì„œ ì´ì•¼ê¸°ë¥¼ 했다. 함수가 ì‹¤ì œë¡œ ì¸ìžë¥¼ 그대로 ì „ë‹¬í•˜ì§€ ì•Šê³ ê°’ì„ ë³µì‚¬í•œë‹¤ëŠ” ê²ƒì„ ì´ì•¼ê¸° 한 í›„ì— í¬ì¸í„°ì— 대한 ì´ì•¼ê¸°ë¡œ 들어갔다. ê°œì¸ì 으로 ìƒˆì‹¹ì„ ì‹œìž‘í•˜ê¸° ì „ì— ê°€ìž¥ ê³ ë¯¼í–ˆë˜ ë¶€ë¶„ì´ í¬ì¸í„°ë¥¼ ì–´ë–¤ 타ì´ë°ì— 넣는가였는ë°, ì•„ë¬´ëž˜ë„ call-by-valueì˜ ë¬¸ì œì ì— ëŒ€í•´ì„œ ì´ì•¼ê¸°ë¥¼ 하면서 í¬ì¸í„°ë¥¼ 꺼내는 ê²ƒì´ ê°€ìž¥ 효과ì ì´ì§€ 않ì„까 싶다. ê·¸ 후ì—는 주로 ê·¸ë¦¼ì„ í†µí•´ì„œ 프로그램 실행시 메모리 구조가 어떻게 ë˜ëŠ”ì§€ì— ëŒ€í•´ì„œ ì„¤ëª…ì„ í•˜ê³ í¬ì¸í„° 변수를 통해 ì£¼ì†Œê°’ì„ ë„˜ê¸°ëŠ” 방법(call-by-reference)ì„ ì´ì•¼ê¸°í–ˆë‹¤. ê·¸ë¦¬ê³ mallocì„ ì´ìš©í•´ì„œ 메모리를 í• ë‹¹í•˜ëŠ” 것과 ë°°ì—´ê³¼ í¬ì¸í„°ì˜ ê´€ê³„ì— ëŒ€í•´ì„œë„ ë‹¤ë£¨ì—ˆë‹¤. ê°œì¸ì ì¸ ëŠë‚Œìœ¼ë¡œëŠ” 재현ì´ëŠ” 약간 í‘œí˜„ì´ ì†Œê·¹ì ì¸ ê²ƒ 같아서 ì •í™•ížˆ ì–´ëŠ ì •ë„ ë‚´ìš©ì„ ì´í•´í–ˆëŠ”ì§€ 알기가 ì–´ë ¤ìš´ ëŠë‚Œì´ 있다. 최대한 메모리 구조를 그림으로 알기 쉽게 í‘œí˜„í–ˆë‹¤ê³ ìƒê°í•˜ëŠ”ë°, ê·¸ëž˜ë„ ì •í™•í•œ ì´í•´ë„를 알기 위해서는 ì—°ìŠµë¬¸ì œ ë“±ì´ í•„ìš”í•˜ì§€ 않ì„까 싶다. 성훈ì´ëŠ” C언어 ìžì²´ 외ì—ë„ ì´ëŸ°ì €ëŸ° 부분ì—서 ì§ˆë¬¸ì´ ë§Žì•˜ëŠ”ë° ì•„ë¬´ëž˜ë„ C언어 아래 ë¶€ë¶„ìª½ì— í¥ë¯¸ê°€ 좀 있는 것 같다. ê·¸ë¦¬ê³ ì•„ë¬´ëž˜ë„ ì˜ˆì œë¥¼ 좀 ë” êµ¬í•´ì•¼ 하지 않ì„까 하는 ìƒê°ì´ ë“ ë‹¤. - [서민관] * í¬ì¸í„°ì˜ 기초와 í¬ì¸í„°ë¥¼ ì´ìš©í•œ swap 함수 구현, ê°’ 변환. ê·¸ë¦¬ê³ mallocì˜ í˜•íƒœ 기초와 좀 ë” ì‰½ê²Œ 쓰는 법 ìµíž˜. 다ìŒì—” mallocì„ ì´ìš©í•œ ì‘용프로그램 êµ¬í˜„ì„ í•´ë³´ê³ ì‹¶ë‹¤. - [최재현] * í¬ì¸í„°ì˜ ì •ì˜, í¬ì¸í„° ë³€ìˆ˜ì˜ ì •ì˜, malloc 함수, fflush() 함수, getchar() 함수, ë©”ëª¨ë¦¬ì˜ heapê³¼ stack ì˜ì—, (int)a와 *(*(int a))ì˜ ì°¨ì´, í¬ì¸í„°ì˜ OS별 í¬ê¸°(DWORD í¬ê¸°ë¥¼ ë”°ë¼ê°„다. 32bit/64bit), í•´ë´ì•¼ í• ê²ƒ - 디버깅, 가변ì¸ìží•¨ìˆ˜ 조사, 복습. - [ì´ì„±í›ˆ] == 4회차-í™˜í¬ (2012-4-2) == === 수업내용 === * swap í•¨ìˆ˜ì— ëŒ€í•´ì„œ 복습. * í•¨ìˆ˜ì˜ í˜¸ì¶œê³¼ ê°’ 복사(call-by-value). * í¬ì¸í„°ì˜ ê°œë…, 프로그램 실행시 ë©”ëª¨ë¦¬ì˜ êµ¬ì¡°. * 추가ì 으로 환í¬ì˜ ì§ˆë¬¸ë“¤ì— ëŒ€í•œ 대답과 기타. === ê³¼ì œ === * ê°œì¸ì 으로 현재 시ì ì—서 ê³¼ì œë¥¼ 낸다면 Cì˜ ë¬¸ë²•ì„ ìµížˆê¸° 위한 ê³¼ì œë¥¼ ì¤€ë¹„í• ê²ƒ ê°™ì€ë° 환í¬ê°€ 현재 시ì ì—서 C ë¬¸ë²•ì„ ë‚˜ë¦„ëŒ€ë¡œ 잘 쓰는 ë§Œí¼ ê·¸ë ‡ê²Œê¹Œì§€ 무리해서 ê³¼ì œë¥¼ 낼 필요는 없지 않ì„까 싶다. 사실 ì–¸ì œì¯¤ë¶€í„° ì–´ë–¤ ê³¼ì œë“¤ì„ ë‚´ì•¼ í• ì§€ ì •í™•ížˆ ê°ì´ 안 잡히는 ê²ƒë„ ìžˆì§€ë§Œ... - [서민관] === 후기 === * ì €ë²ˆì‹œê°„ì— í–ˆë˜ swap í•¨ìˆ˜ì— ëŒ€í•´ì„œ 간단하게 ë³µìŠµì„ í•˜ê³ swap í•¨ìˆ˜ì˜ ë¬¸ì œì ì— ëŒ€í•´ì„œ 짚어보았다. ê·¸ë¦¬ê³ í¬ì¸í„°ì˜ ê°œë…ê³¼ 함수ì—서 í¬ì¸í„°ë¥¼ 사용하는 방법 순으로 ì§„í–‰ì„ í•´ 나갔다. 새삼 ëŠë¼ëŠ” 거지만 call-by-valueì˜ ë¬¸ì œì ì„ ì²˜ë¦¬í•˜ê¸° 위해서 í¬ì¸í„°ë¥¼ ë“¤ê³ ë‚˜ì˜¤ëŠ” ê²ƒì´ ê°€ìž¥ ì§ì ‘ì 으로 í¬ì¸í„°ì˜ í•„ìš”ì„±ì„ ëŠë¼ê²Œ ë˜ëŠ” 것 같다. ê·¸ë¦¬ê³ ê°œë…ì˜ ì„¤ëª…ì„ í•˜ê¸°ì—ë„ íŽ¸í•œ 것 ê°™ê³ . ê·¸ 후ì—는 í¬ì¸í„°ì— 대한 ë¶€ë¶„ì´ ì¼ë‹¨ë½ë˜ê³ 성훈ì´ë‚˜ 재현ì´ì²˜ëŸ¼ mallocì´ë‚˜ 추가ì ì¸ ë¶€ë¶„ì„ ì§„í–‰í• ì˜ˆì •ì´ì—ˆëŠ”ë° í™˜í¬ê°€ í•¨ìˆ˜ì˜ ì‚¬ìš©ì— ëŒ€í•´ì„œ ì§ˆë¬¸ì„ ì¢€ í•´ ì˜¤ê³ ê·¸ 외ì—ë„ ì•½ê°„ 다른 ë¶€ë¶„ì„ ë‹¤ë£¨ë‹¤ 보니 ì§„ë„ê°€ 약간 늦어졌다. ê·¸ëž˜ë„ í¬ì¸í„°ì—서는 ì´í•´ê°€ 가장 ì¤‘ìš”í•˜ë‹¤ê³ ìƒê°í•˜ëŠ” ë§Œí¼ ì¡°ê¸ˆ 천천히 나가는 ê²ƒë„ ê´œì°®ë‹¤ê³ ë³¸ë‹¤. ê·¸ë¦¬ê³ ì•žìœ¼ë¡œì˜ ëª©í‘œëŠ” ì¼ë‹¨ 처ìŒì— 잡아둔 목표까지 무사히 완주하는 것ì´ë‹¤. ì›ëž˜ 첫 ì§„ë„ ì˜ˆì •ì— ë‹¤ì–‘í•œ ê²ƒë“¤ì´ ë‹´ê²¨ìžˆëŠ” ë§Œí¼ ëª©í‘œë§Œ ì´ë£¨ì–´ë„ 충분히 ê´œì°®ì€ C ì‹¤ë ¥ì´ ê¸¸ëŸ¬ì§€ì§€ 않ì„까 싶다. - [서민관] * í¬ì¸í„°ì— 대한 대략ì ì¸ ê°œë… - 복잡하지만 숙달ë˜ë©´ 나아질듯 합니다. ì•½ê°„ì˜ ìž¡ì§€ì‹. 메모리 구조 + 주소 - 변수 ì„ ì–¸ì‹œ ê·¸ ë³€ìˆ˜ì˜ ì£¼ì†Œ + ê°’ì˜ ì´ì•¼ê¸°...ì¸ë° 그림으로 설명해주셔서 쉽게 ì´í•´í–ˆìŠµë‹ˆë‹¤. - [박환í¬] == 4회차-성훈 (2012-4-3) == === 수업내용 === === 후기 === í¬ì¸í„°ì— 대해 잘 ë°°ì› ë„¤ìš” ã…Ž í¬ì¸í„°ë³€ìˆ˜ê°€ 가지는 ê°’ê³¼ *, &ì—°ì‚°ìžì˜ ì‚¬ìš©ë²•ì„ ìž˜(ì€ ìµí˜”ëŠ”ë° ì•„ì§ë„ ê¸´ê°€ë¯¼ê°€í•˜ê³ ..) ë°°ì› êµ¬ìš”.. mallocê³¼ fflush í•¨ìˆ˜ì— ëŒ€í•´ 다시 ì •í™•í•˜ê²Œ ì§šì„ ìˆ˜ 있어서 좋았구요 특히 heapê³¼ stackì— ëŒ€í•œ ê¹Šì€ ì´í•´ë¥¼ í• ìˆ˜ 있었네요. ê·¸ëž˜ë„ ì—시 ê°œë…ë§Œ 충실한 ìƒíƒœë¼ 좀 ë§Žì€ ì˜ˆì œë¥¼ 다뤄볼 수 있었으면 ì¢‹ê² ë„¤ìš” ê·¸ë¦¬ê³ ë°‘ì˜ ê³¼ì œ... ì´ì¤‘ í¬ì¸í„°ë¼ë‰°ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ã…‹ - [ì´ì„±í›ˆ] === ê³¼ì œ === * ë°°ì—´ 받아서 뒤집기 - ë°°ì—´ì˜ ì£¼ì†Œê°’ì„ ì¸ìžë¡œ 받아서 뒤집는 함수. {{{ // 함수 ì„ ì–¸ void reverseArr(int **arr, int arrLen); // 함수 사용시 int arr[10]; reverseArr(&arr, 10); }}} == 5회차-í™˜í¬ (2012-4-4) == === 수업내용 === * í¬ì¸í„° 변수와 malloc 함수. * ë°°ì—´ê³¼ í¬ì¸í„°ì˜ 관계. * í¬ì¸í„° 변수를 ì¸ìžë¡œ 받는 함수. === 후기 === * í¬ì¸í„° ë³€ìˆ˜ì— ê°’ì„ ì£¼ì–´ 초기화 í•˜ë ¤ë©´ 어떻게 해야 하는가(malloc í•¨ìˆ˜ì˜ ì‚¬ìš©)와 메모리 í•´ì œ(free 함수)ì— ëŒ€í•œ ì´ì•¼ê¸°ë¥¼ 했다. ê·¸ë¦¬ê³ ë°°ì—´ê³¼ í¬ì¸í„°ì— 대한 ì´ì•¼ê¸°ë¥¼ 했는ë°, ë°°ì—´ë„ ê²°êµ ì—°ì†ëœ 메모리를 잡는다는 ì ì—서 í¬ì¸í„°ì™€ ê°™ê³ ê°’ì˜ ì°¸ì¡°ë„ í¬ì¸í„° 변수와 ë˜‘ê°™ì´ í• ìˆ˜ 있다는 ê²ƒì„ ë‹¤ë¤˜ë‹¤. ê·¸ 후ì—는 í¬ì¸í„° 변수(ë°°ì—´)를 ì¸ìžë¡œ 받는 함수를 만드는 ë²•ì„ ë°°ìš°ê³ , ë°°ì—´ì„ ì¸ìžë¡œ ë°›ì„ ë•ŒëŠ” 반드시 길ì´ë¥¼ 관리해줘야 한다는 ì´ì•¼ê¸°ë¥¼ 했다. - [서민관] * malloc 함수 = íž™ì— ë°°ë‹¹ë˜ëŠ” 메모리, 변수 íƒ€ìž…ì— ë”°ë¼ í• ë‹¹ëœ ê°’ì— ë”°ë¼ ìƒê¸°ëŠ” 메모리(변수?) Pointer와 ë°°ì—´ = ë‘˜ì€ ê²°êµ ê°™ë‹¤. ë°°ì—´(í¬ì¸í„°)ì„ ì¸ìžë¡œ 받는 함수 = 주소값, 거울 | 거울 ì˜¤ëŠ˜ì€ ë‹¤ì†Œ íž˜ë“ ê°œë…들ì´ì—ˆìŠµë‹ˆë‹¤. - [박환í¬] == 5회차-성훈 (2012-4-5) == === 수업내용 === * í¬ì¸í„° ë³€ìˆ˜ì— ëŒ€í•´ 리뷰. * êµ¬ì¡°ì²´ì˜ ì˜ë¯¸, êµ¬ì¡°ì²´ì˜ ë¬¸ë²•(struct 키워드, .ì—°ì‚°ìž, typedef 키워드). * 구조체를 ì¸ìžë¡œ 받는 함수와 구조체 í¬ì¸í„°(changeAge()함수를 통해서 ì ‘ê·¼í•¨). * ì´ì¤‘ í¬ì¸í„°. === 후기 === * í¬ì¸í„° 2회차. í¬ì¸í„° ë³€ìˆ˜ì— ëŒ€í•´ì„œ ìž ê¹ ë¦¬ë·°ë¥¼ í•˜ê³ ê·¸ í›„ì— êµ¬ì¡°ì²´ì™€ typedefì— ëŒ€í•´ì„œ 다루었다. ê·¸ë¦¬ê³ êµ¬ì¡°ì²´ë¥¼ ì¸ìžë¡œ 받는 í•¨ìˆ˜ì— ëŒ€í•´ì„œë„ ë‹¤ë£¨ì—ˆë‹¤. ê·¸ í›„ì— typedef int* SOMETHINGì´ë¼ëŠ” í‘œí˜„ì„ ì¨ì„œ ì´ì¤‘ í¬ì¸í„°ì— 대해서 ì´ì•¼ê¸°ë¥¼ í•´ 봤는ë°, ì´ìª½ì€ ì—시 약간 난ì´ë„ê°€ 있는 것 같다. 특히 int **twoDimì—서 twoDim[0]ì— ë‹¤ì‹œ mallocì„ í•´ 줘야 한다는 ë¶€ë¶„ì´ ì–´ë ¤ìš´ 것 같다. 차근차근 í•´ë³´ìž. ê°œì¸ì 으로 성훈ì´ê°€ 가르친 ë¶€ë¶„ë“¤ì„ ìž˜ ë”°ë¼ì˜¤ë ¤ê³ 한다는 ê²ƒì„ (*s).ageì—서 ëŠê¼ˆë‹¤. ->ì—°ì‚°ìžê°€ ì•„ë‹ˆë¼ *ì—°ì‚°ìž í›„ì— .ì—°ì‚°ìžë¡œ ë‚´ìš©ë¬¼ì„ ì°¸ì¡°í•œë‹¤ëŠ” ê²ƒì€ ë‚˜ë¦„ëŒ€ë¡œ ë©”ëª¨ë¦¬ì˜ êµ¬ì¡°ë¥¼ ìƒê°í•˜ë ¤ê³ ì• ë¥¼ ì¼ë‹¤ëŠ” 얘기다. 좀 ê³ ë§ˆì› ë‹¤. - [서민관] * í¬ì¸í„° 변수와 ì´ì¤‘ í¬ì¸í„°, êµ¬ì¡°ì²´ì— ëŒ€í•´ 알게 ë˜ì—ˆê³ , ìžì‹ ì´ ë§Œë“ í—¤ë”는 "#"로 ì „ì²˜ë¦¬í•¨ì„ ì•Œì•˜ë‹¤. ë˜í•œ typedefì— ëŒ€í•´ì„œë„ ìµí˜”다. ※ ê°ìƒ. * 함수까지 ë…í•™í•˜ëŠ”ë° 1달ì´ì—ˆë‹¤. 당연히 혼ìží•˜ëŠ” 거니까 ë†ë–™ì´ì¹˜ë©´ì„œ 했지만... ê·¸ë ‡ê¸°ì— ëˆ„êµ°ê°€ì˜ ê°€ë¥´ì¹¨ì„ ë°›ìœ¼ë©´ì„œ 해보니 무지막지한 ì†ë„로 C를 ì •ë³µí• ìˆ˜ 있게 ëœ ê²ƒ 같다. ì´ëŸ° ê¸°íšŒì— ê·¸ì € ê°ã…‹ì‚¬ã…‹í•˜ë‹¤. - [ì´ì„±í›ˆ] == 4회차-재현 (2012-4-5) == === 수업내용 === * í¬ì¸í„° 변수와 malloc 함수. * 구조체, 구조체 í¬ì¸í„°, typedef 키워드. * 구조체를 ì¸ìžë¡œ 받는 함수. === 후기 === * êµ¬ì¡°ì²´ì— ì´ˆì ì„ ë§žì¶°ì„œ ì§„ë„를 나갔다. ì›ëž˜ 목표는 성훈ì´ëž‘ ê°™ì€ ì •ë„(ì´ì¤‘ í¬ì¸í„°)까지 나가는 것ì´ì—ˆëŠ”ë°, ì‹œê°„ì´ ì•½ê°„ 모ìžëžë‹¤. 사실 다중 í¬ì¸í„°ì— 대해서는 한 번쯤 ë” ë‹¤ë£¨ì–´ì•¼ì§€ 싶으니까 다ìŒì— ì• ë“¤ì„ ë‹¤ 모아서 좀 ë” ìžì„¸ížˆ 다루는 ì‹œê°„ì„ ë§ˆë ¨í• ìƒê°ì´ë‹¤. - [서민관] * ì˜¤ëŠ˜ì€ ë™ì í• ë‹¹(malloc)ê³¼ 구조체, 구조체 í¬ì¸í„°, typedefì— ëŒ€í•´ ê°œë…ì •ë¦¬ë¥¼ í•˜ê³ ê·¸ì— ëŒ€í•œ 간단한 ì˜ˆì œì™€ 메모리 ê·¸ë¦¼ì„ í†µí•´ì„œ 쉽게 ì ‘ê·¼ì„ í–ˆë‹¤. ë˜, 구조체와 구조체 í¬ì¸í„°ì˜ ì ‘ê·¼ ë°©ë²•ì— ëŒ€í•´ ìˆ™ì§€í•˜ê³ í•¨ìˆ˜ì— ëŒ€í•´ ìžì„¸ížˆ 다뤄서 ë§Žì€ ì´í•´ë¥¼ 했다. 다ìŒì—” ë‹¤ì°¨ì› ë°°ì—´ê³¼ í¬ì¸í„°ë¥¼ í•´ë³´ê³ ê·¸ì— ëŒ€í•œ ì´í•´ë¥¼ 해야 í• ê²ƒ 같다. - [최재현] == 6회차-í™˜í¬ (2012-4-9) + 7회차-í™˜í¬ (2012-4-9) == === 수업내용 === * 구조체 문법. * 왜 구조체를 ì¨ì•¼ 하는가. * ì¶”ìƒí™”ì˜ ì¸¡ë©´ì—서 보는 타입과 ì—°ì‚°(operation). * 구조체를 ì¸ìžë¡œ 받는 함수. * fopen() 함수 ë“±ì— ëŒ€í•œ 간단한 언급. === 후기 === * ì‹œí—˜ê¸°ê°„ì— í™˜í¬ í›„ê¸°ë¥¼ ì ì–´ë‘” 종ì´ë¥¼ íŒŒì¼ ì§¸ë¡œ ìžƒì–´ë²„ë ¸ìŠµë‹ˆë‹¤. ã… ã… ã… ã… ã… ã… ã… ã… ã… ã… * ì •ëª¨ ì „ì— ë‘ ì‹œê°„, ì •ëª¨ ëë‚˜ê³ ë‘ ì‹œê°„ì´ ê±¸ë¦° ì •ë§ ê¸´ 새싹ì´ì—ˆìŠµë‹ˆë‹¤. ;;;; ì²˜ìŒ ê³„íšìœ¼ë¡œëŠ” 재현ì´ë‚˜ 성훈ì´ëž‘ 비슷하게 구조체 문법과 ì‚¬ìš©ì— ëŒ€í•´ì„œ 간단하게 다룰 ìƒê°ì´ì—ˆëŠ”ë° í™˜í¬ê°€ 왜 구조체가 í•„ìš”í•œì§€ì— ëŒ€í•œ ì´ì•¼ê¸°ë¥¼ 하면서 ì´ì•¼ê¸°ê°€ ë§Žì´ ë‹¤ë¥¸ 방향으로 í˜ëŸ¬ê°”네요. ì¼ë‹¨ 구조체가 필요한 ì´ìœ 를 ì¶”ìƒí™”ì˜ ê´€ì ì—서 ì¶”ìƒí™” 한 타입(구조체)ê³¼ íƒ€ìž…ì— ê´€í•œ ì—°ì‚°(함수)ì„ ì œê³µí•˜ê¸° 위해서ë¼ê³ ë§ì„ í–ˆëŠ”ë° ê·¸ëž˜ë„ ì§ì ‘ í”¼ë¶€ì— ì™€ 닿았ì„ì§€ 어떨지는 좀 ê±±ì •ìž…ë‹ˆë‹¤. ì—시 ì´ëŸ° ë¶€ë¶„ì€ ì§ì ‘ì 으로 ê²½í—˜ì„ í•´ ë³´ì§€ 않으면 안 ë 것 같네요. 한 시스템(ë„서관 관리 프로그램ì´ë‚˜ ì€í–‰ 시스템 등)ì„ ìž¬í˜„ì´, 성훈ì´ëž‘ ì…‹ì´ì„œ 쪼개서 만들어 보게 하거나 하는 게 좀 괜찮지 않ì„까 싶습니다. ë‚˜ì¤‘ì— ì‹œì¼œë´ì•¼ì§€. - [서민관] == 8회차 (2012-5-1) - 성훈, í™˜í¬ == === 수업내용 === * 함수와 구조체 문법 복습. * í”„ë¡œê·¸ëž˜ë° íŒ¨ëŸ¬ë‹¤ìž„ - 함수형 프로그래ë°. * í”„ë¡œê·¸ëž¨ì„ ì˜ë¯¸ë‹¨ìœ„(함수)로 쪼개기. * ì˜ì‚¬ì½”드 ì 기. * 함수 만들기 실습(isPrime, isPalindromePrime 등). === 후기 === * ê²½í—˜í–ˆë˜ ì¼ : 함수를 만드는 ì´ìœ . ìŠˆë„ ì½”ë“œì˜ íŽ¸ë¦¬ì„±. í¬ì¸í„°ì™€ 구조체 복습. í•´ ë´ì•¼ í• ê²ƒ : reverse(number) ì •ì˜ - 수 ë°°ì—´ì„ ë’¤ì§‘ëŠ” 함수 ì¢‹ì•˜ë˜ ì : 시험 ë•Œë¬¸ì— í¬...미...í–ˆë˜ ê¸°ì–µì´ ë˜ì‚´ì•„서 ì¢‹ì•˜ê³ , í•¨ìˆ˜ì— ëŒ€í•œ ì´í•´ë„ê°€ 높아진 듯해서 좋았다. ì˜¤ëŠ˜ì€ CìŠ¤ëŸ¬ì›€ì´ ë§Žì´ ëŠê»´ì ¸ì„œ í¡ì¡±í•˜ë‹¤. 컴공다운 걸 해서 ë³´ëžŒì´ ëŠê»´ì§„다. - [ì´ì„±í›ˆ] * 함수와 구조체 ë¬¸ë²•ì— ëŒ€í•œ 복습과 '함수형 프로그래ë°'ì— ëŒ€í•´ì„œ 다루었다. ë³µìŠµì€ ì‹œí—˜ì´ ëë‚˜ê³ ìžŠì–´ë²„ë ¸ì„ í…Œë‹ˆê¹Œ 한 것ì´ê³ 중요한 ê²ƒì€ ë’¤ìª½ì—서 í–ˆë˜ í•¨ìˆ˜í˜• í”„ë¡œê·¸ëž˜ë° ë¶€ë¶„ì´ë‹¤. ì „ì²´ì ì¸ ë‚´ìš©ì€ í”„ë¡œê·¸ëž¨ì„ ì˜ë¯¸ë‹¨ìœ„(함수)로 쪼개는 ì˜ì‚¬ì½”드를 ì ê³ í•¨ìˆ˜ì˜ ê»ë°ê¸°ë¥¼ ë§Œë“ í›„ì— ë‚´ìš©ë¬¼ì„ ì±„ì›Œ 나가는 ë°©ì‹ì´ì—ˆë‹¤. ê°œì¸ì 으로 ë‚´ 새싹ì—서 ê¼ ë‹¤ë£¨ê³ ì‹¶ì—ˆë˜ ë‚´ìš©ì˜ ì ˆë°˜ì— í•´ë‹¹í•˜ëŠ” 부분ì´ë¼ ê³ ë¯¼ì„ ë§Žì´ í–ˆëŠ”ë°, ê·¸ëž˜ë„ ì „í•˜ê¸°ëŠ” 잘 ì „í•œ 것 같다. 다ìŒìœ¼ë¡œëŠ” 가르ì³ì•¼ í• ë‚˜ë¨¸ì§€ ì ˆë°˜ì¸ ì„¤ê³„ì— ëŒ€í•œ ì‹¤ìŠµì„ ì¢€ í•´ ë´ì•¼ í• ê²ƒ 같다. - [서민관] === ê³¼ì œ === * 아래와 ê°™ì€ í•¨ìˆ˜ë¥¼ ë§Œë“니다. * ê¼ reverse 함수 하나로 만들 필요는 없습니다. 오늘 í–ˆë˜ ë‚´ìš©ì„ ìƒê°í•˜ë©´ì„œ 함수를 만드는 ë„ì¤‘ì— ìžì‹ ì´ í•„ìš”í•˜ë‹¤ê³ ìƒê°í•˜ëŠ” ë¶€ë¶„ì€ ì¶”ê°€ì 으로 함수를 만들어서 ì¨ë„ 좋습니다. ì˜¤ížˆë ¤ 좀 ë” ìž‘ì€ í•¨ìˆ˜ë“¤ë¡œ 나누는 íŽ¸ì„ ì¶”ì²œí•©ë‹ˆë‹¤. {{{ // ì •ìˆ˜ë¥¼ ì¸ìžë¡œ 주면 숫ìžë¥¼ 뒤집어서 ëŒë ¤ì¤€ë‹¤. // 123ì„ ë„£ìœ¼ë©´ 321ì„ ë¦¬í„´. 100ì„ ë„£ìœ¼ë©´ 1ì„ ë¦¬í„´. 120ì„ ë„£ìœ¼ë©´ 21ì„ ë¦¬í„´. int reverse(int number); }}} == 9회차(2012-5-9) - 성훈, í™˜í¬ == === 수업내용 === * callback, event drivenê³¼ ê´€ë ¨ëœ ê°„ë‹¨í•œ ì´ì•¼ê¸°. * 문ìžì—´(char *)ì— ëŒ€í•œ ì´ì•¼ê¸°. * 문ìžì—´ì„ 다루기 위한 함수들(str...). * winapi.co.kr === 후기 === * Callback(winapi ì´ì•¼ê¸°í•˜ë©´ì„œ) + winapi.co.kr 문ìžì—´ê³¼ ê´€ë ¨ëœ í•¨ìˆ˜ 5가지. + 실습. ì˜¤ëŠ˜ì€ í•¨ìˆ˜ë¥¼ ë´ì„œ 그냥 ì•„... ê·¸ë ‡êµ¬ë‚˜ 그런 ëŠë‚Œ. 배운다는 것 보다는 ì•”ê¸°ì— ê°€ê¹Œìš´ ëŠë‚Œì´ì—ˆë‹¤. - [박환í¬] * 문ìžì—´ê³¼ ê´€ë ¨ëœ ìœ ìš©í•œ 함수들과 CallBackì˜ ê°œë…ê³¼ 구조체 í™œìš©ì„ ë°°ì› ë‹¤. ì–´ë ¤ìš´ ëŠë‚Œì´ 들기는 하지만 ì•„ì§ë„ í•´ ë³¼ ë§Œ 하다. ì ì C언어가 function ìœ„ì£¼ì˜ í”„ë¡œê·¸ëž˜ë°ì´ë¼ëŠ” 걸 ë” ê¹Šì´ ì´í•´í•˜ê²Œ ëœë‹¤. 구조체 ì˜ˆì œê°€ 좀 있으면 ì¢‹ê² ë‹¤. - [ì´ì„±í›ˆ] * ì „ì²´ì 으로 문ìžì—´ê³¼ 문ìžì—´ì„ 다루는 í•¨ìˆ˜ë§Œì— ì´ˆì ì„ ë§žì¶°ì„œ ìˆ˜ì—…ì„ ì§„í–‰í–ˆìŠµë‹ˆë‹¤. ê·¸ëŸ°ë° ì•„ë¬´ëž˜ë„ ì²« ì‹œê°„ì— ëª»ì§€ 않게 ì§„í–‰ì´ ëŠ˜ì–´ì¡Œë˜ ì‹œê°„ì´ ì•„ë‹ˆì—ˆë‚˜ 싶습니다. 사실 문ìžì—´ í•¨ìˆ˜ë“¤ì€ ë‹¨ìˆœ í•¨ìˆ˜ë‹ˆë§Œí¼ ì¸ìžë“¤ì„ ë³´ê³ ì“°ëŠ” ê²ƒì— ìµìˆ™í•˜ë‹¤ë©´ ì•Œì•„ì„œë„ ë³´ê³ ì“¸ 수준ì´ê¸´ 한ë°, ê·¸ëž˜ë„ ë‹¤ë“¤ 그런 ê²ƒì„ ì°¾ì•„ì„œ ì¨ ë³´ê±°ë‚˜ 한 ê²½í—˜ì´ ë³„ë¡œ 없는 ë§Œí¼ í•œ 번쯤 그런 í•¨ìˆ˜ë“¤ì„ ì°¾ì•„ì„œ 쓰는 ì‹œê°„ì„ ê°€ì§€ëŠ” ê²ƒë„ ë‚˜ì˜ì§€ 않지 않ì„까 ì‹¶ì—ˆëŠ”ë° ìƒê°ë³´ë‹¤ 좀 ì§„í–‰ì´ ëŠ˜ì–´ì¡Œêµ°ìš”. 단순히 설명만 ì´ì–´ì¡Œê¸° 때문ì¸ê°€. ê·¸ëž˜ë„ ì´ë²ˆ ì‹œê°„ì— êµ³ì´ ë¬¸ìžì—´ê³¼ ê´€ë ¨ 함수를 다룬 ê²ƒì€ C언어ì—서 문ìžì—´ì„ 단순한 charì˜ *ê°€ 아닌 í•˜ë‚˜ì˜ íƒ€ìž…ìœ¼ë¡œ ë³´ê³ ê·¸ì™€ ê´€ë ¨ëœ ì—°ì‚°(함수)ì„ ì œê³µí–ˆë‹¤ëŠ” ê²ƒì„ í•œ 번쯤 ìƒê°í•´ë´¤ìœ¼ë©´ 합니다. - [서민관] === ê³¼ì œ - ìº˜ë¦°ë” ë§Œë“¤ê¸° === * Calender.h íŒŒì¼ - 만들어야 í• í•¨ìˆ˜ë“¤. ë” ëŠ˜ë ¤ë„ ìƒê´€ 없습니다. {{{ // 한 ë‹¬ì˜ ë‹¬ë ¥ì„ ì¶œë ¥í•˜ëŠ” 함수입니다. void printCalender(int nameOfDay, int year, int month); // ë‹¬ì˜ ì²« ë‚ ì˜ ìš”ì¼(nameOfDay)ê³¼ 마지막 ë‚ ì˜ ìˆ˜ë¥¼ 받아서 1~endDayOfMonth까지 ì¶œë ¥í•©ë‹ˆë‹¤. void printDate(int nameOfDay, int endDayOfMonth); // ë‹¬ì˜ 1ì¼ ì•žì˜ ë¶€ë¶„ì— ë¹ˆ ìš”ì¼ ìˆ˜ë§Œí¼ íƒ('\t')ì„ ë„£ìŠµë‹ˆë‹¤. void printFirstTab(int nameOfDay); // ë‹¬ë ¥ 첫 머리 부분(ì›”, ë…„ë„, 한 줄, ìš”ì¼ í‘œì‹œ)ì„ ì¶œë ¥í•©ë‹ˆë‹¤. void printHeader(int year, int month); // ë‹¤ìŒ ë‹¬ì˜ ì²« ë‚ ì˜ ìš”ì¼ì„ 반환합니다. int calculateNameOfNextMonthFirstDay(int nameOfDay, int year, int month); // 해당 ë‹¬ì˜ ë§ˆì§€ë§‰ ë‚ ì˜ ìš”ì¼ì„ 반환합니다. int calculateNameOfLastDay(int nameOfDay, int year, int month); // 윤달 ì²´í¬. bool isLeapYear(int year); // ê° ë‹¬ì˜ ë§ˆì§€ë§‰ ë‚ ìˆ˜ë¥¼ 반환합니다. // 단순한 switch-case문으로 ì´ë£¨ì–´ì ¸ 있으며, 2ì›”ì— ëŒ€í•´ì„œëŠ” 윤달 ì²´í¬ë¥¼ 합니다. int endDayOfMonth(int year, int month); // ê° ìš”ì¼ì˜ 숫ìžë¥¼ 받아서 문ìžì—´ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤. (ex. 0-"Sun", 1-"Mon" ...) // 단순한 switch-case문으로 ì´ë£¨ì–´ì ¸ 있습니다. char *printMonthName(int i); }}} * main.cpp íŒŒì¼ {{{ #include <stdio.h> #include "Calender.h" int main(int argc, char *args[]) { // year와 ìš”ì¼(nameOfDay)ì„ ìž…ë ¥ë°›ëŠ” 부분. int year = 0, nameOfDay = 0; printf("Enter the year : "); scanf("%d", &year); printf("Enter the name of day(0:sun ~ 6:sat) : "); scanf("%d", &nameOfDay); // 1~12ì›”ì„ ì¶œë ¥í•˜ëŠ” 부분. for ( int month = 1; month <= 12; month++ ) { printCalender(nameOfDay, year, month); nameOfDay = calculateNameOfNextMonthFirstDay(nameOfDay, year, month); } return 0; } }}} * sample output - 1월부터 12월까지. ì¶œë ¥ì„ ì˜ˆì˜ê²Œ í•˜ê³ ì‹¶ìœ¼ë©´ íƒ('\t')ì„ ì“°ë©´ ë©ë‹ˆë‹¤. {{{ January, 2012 ------------------------------------------------- Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 }}} [Calendar ì„±í›ˆì´ ì½”ë“œ] [Calendar í™˜í¬ ì½”ë“œ] === 기타 === * 왜 strcat(str1, str2)를 한 í›„ì— str1ì„ í”„ë¦°íŠ¸í–ˆëŠ”ë° ì´ìƒí•œ ì¶œë ¥ì´ ë‚˜ì˜¤ëŠ”ê°€. People p;와 strcatì˜ ì‚¬ìš©ì— ë¬¸ì œê°€ 있습니다. p를 초기화(People p = {0};) 하지 ì•Šê³ ì‚¬ìš©í•˜ë©´ p.nameì´ ì“°ë ˆê¸° 값으로 채워지는 것 같습니다. 그래서 strcatì„ ì‚¬ìš©í•˜ë©´ p.nameì˜ ë’·ë¶€ë¶„(p.name[99]ì˜ ë’·ë¶€ë¶„)ì— "í™ê¸¸ë™" ë‚´ìš©ì´ ë¶™ìŠµë‹ˆë‹¤. ì´ëŸ° ìƒí™©ì„ 피하기 위해서는 처ìŒì— p를 초기화 í•˜ê³ ì‚¬ìš©í•˜ê±°ë‚˜ memset(p.name, 0, sizeof(char)*100);ì„ í•˜ëŠ” ë°©ë²•ì´ ìžˆìŠµë‹ˆë‹¤. {{{ #include <stdio.h> #include <string.h> typedef struct People{ char gender; int age; char name[100]; char real_name[100]; } People; int main() { char str1[100] = "abc"; char str2[100] = "aaa"; People p; strcat(p.name, "í™ê¸¸ë™"); strcat(str1, str2); printf("%s", str1); getchar(); return 0; } }}} == 10회차(2012-5-22) - 성훈, í™˜í¬ == === 수업내용 === * ì˜ˆì œë¥¼ 조금 ë” ë‹¤ë£¨ì–´ 봤으면 하는 얘기와 구조체를 ì¨ ë³´ê³ ì‹¶ë‹¤ëŠ” 얘기가 있어서 아예 구조체를 쓸 만한 ì˜ˆì œë¥¼ 만들어 봤습니다. * ì „ì²´ì 으로 ì œëŒ€ë¡œ 완성하는 í”„ë¡œê·¸ëž¨ì„ ë§Œë“¤ì–´ 본다는 ì ì— ì˜ì˜ê°€ ìžˆì„ ê²ƒ 같습니다. ê·¸ë¦¬ê³ addAccount()와 deleteAccount()는 ì´ ì´í›„ ìˆ˜ì—…ì„ ìœ„í•œ í•˜ë‚˜ì˜ í¬ì¸íŠ¸ê°€ ë 것입니다. Account.h {{{ #include <stdio.h> typedef struct Account { char *name; int money; } Account; typedef struct AccountArray { struct Account **accounts; int currentAccountNumber; int maxLength; // ë°°ì—´ì„ ì‚¬ìš©í• ë•ŒëŠ” 길ì´ë¥¼ 관리하는 구조체를 만들어서 ì“°ë©´ 편하다. } AccountArray; Account *createAccount(char *name); // Accountì— ê¹”ë”하게 ì´ë¦„ì„ í• ë‹¹í•˜ê¸° 위해서는 문ìžì—´ 함수가 í•„ìš”í• ê²ƒì´ë‹¤. AccountArray *createAccountArray(int maxLength); void addAccount(AccountArray *accountArray, char *name); bool isFull(AccountArray *accountArray); // ë°°ì—´ì´ ë‹¤ 차면 어떻게 하면 좋ì„까?????? AccountArray *extendArray(AccountArray *before); // 다 ì°¬ ë°°ì—´ì€ ìƒˆë¡œ í™•ìž¥ì„ í•´ 주어야 합니다. void deleteAccount(AccountArray *accountArray, char *name); // ë°°ì—´ì˜ ì¤‘ê°„ ì›ì†Œ ì‚ì œ? ì¤‘ê°„ì— êµ¬ë©ë§Œ 뻥 뚫어ë‘ë©´ ë˜ë‚˜? void deposit(AccountArray *accountArray, char *name, int money); // accountArray ë‚´ë¶€ì—서 ì´ë¦„으로 비êµí• 필요가 ìžˆê² ì§€. void withdraw(AccountArray *accountArray, char *name, int money); void addAccountMenu(); void deleteAccountMenu(); void depositMenu(); void withdrawMenu(); }}} main.cpp {{{ #include <stdio.h> #include "Account.h" int main(int argc, char *argv[]) { int select = 0; // 추가ì ì¸ ë³€ìˆ˜ë“¤ì´ í•„ìš”í• ê²ƒìœ¼ë¡œ 예ìƒ. while ( true ) { printf("select menu : "); printf("1: 계좌 추가\n"); printf("2: 계좌 ì‚ì œ\n"); printf("3: 입금\n"); printf("4: 출금\n"); scanf("%d", &select); switch ( select ) { case 1: addAccountMenu(); break; case 2: deleteAccountMenu(); break; case 3: depositMenu(); break; case 4: withdrawMenu(); break; default: break; } } return 0; } }}} === 후기 === == 11회차(2012-5-23) - 성훈, í™˜í¬ == === 수업내용 === {{{////////////////////////////////////// 기본 타입, 기본 타입 + í¬ì¸í„° char a; // aì˜ íƒ€ìž…? 1. ë©”ëª¨ë¦¬ì— a ê·¸ë ¤ë³´ê¸°. a = ?? // ì ì ˆí•œ 값으로 초기화 í•´ 보기. int b; // bì˜ íƒ€ìž…? 1. ë©”ëª¨ë¦¬ì— b ê·¸ë ¤ë³´ê¸°. b = ?? // ì ì ˆí•œ 값으로 초기화 í•´ 보기. char c[10]; // cì˜ íƒ€ìž…?, 1. ì„ ì–¸ê³¼ ë™ì‹œì— 0으로 초기화 í•´ 보기., 2. ë°˜ë³µë¬¸ì„ ì´ìš©í•´ì„œ ì›ì†Œë§ˆë‹¤ 초기화 í•´ 보기., 3. c[0]ì˜ íƒ€ìž…? char *d; // dì˜ íƒ€ìž…? char 10ê°œ ë¶„ëŸ‰ì˜ ë°°ì—´ë¡œ ì„ ì–¸ê³¼ ë™ì‹œì— 초기화 í•´ 보기. // c와 d를 ê°ê° ë©”ëª¨ë¦¬ì— ê·¸ë ¤ë³´ê¸°. 중요. ??? // []를 ì´ìš©í•´ì„œ cì˜ ì„¸ 번째 ì›ì†Œì— ì ‘ê·¼í•´ 보기. ??? // 가능한 방법으로 dì˜ ì„¸ 번째 ì›ì†Œì— ì ‘ê·¼í•´ 보기. ??? // 가능한 방법으로 cì˜ ì„¸ 번째 ì›ì†Œì— ì ‘ê·¼í•´ 보기. // array[0] == *(array + 0) ë°°ì—´ì´ë‚˜ í¬ì¸í„°ë‚˜ 해당 ì£¼ì†Œì— ëŒ€í•œ ì ‘ê·¼ì´ë¼ëŠ” ì ì—서는 ë™ì¼í•˜ê²Œ ì ‘ê·¼í• ìˆ˜ 있다. //////////////////////////////////////// ì‚¬ìš©ìž ì •ì˜ íƒ€ìž…, ì‚¬ìš©ìž ì •ì˜ íƒ€ìž… + í¬ì¸í„° Person p; // pì˜ íƒ€ìž…? 1. ë©”ëª¨ë¦¬ì— pì˜ ëª¨ì–‘ ê·¸ë ¤ë³´ê¸°. ??? // pì˜ ë‚´ìš©ë¬¼ì— ì ‘ê·¼í•´ë³´ê¸°. Person pArr[10]; // pArrì˜ íƒ€ìž…? 1. ë©”ëª¨ë¦¬ì— pArrì˜ ëª¨ì–‘ ê·¸ë ¤ë³´ê¸°. ??? // pArrì˜ 0번째 ë‚´ìš©ë¬¼ì— ì ‘ê·¼í•´ë³´ê¸° Person *p2; // p2ì˜ íƒ€ìž…? 1. ë©”ëª¨ë¦¬ì— p2ì˜ ëª¨ì–‘ ê·¸ë ¤ë³´ê¸°. ??? // p2 초기화 í•´ 보기. ??? // p2ì˜ ë‚´ìš©ë¬¼ì— ì ‘ê·¼í•´ë³´ê¸°. Person *ppa[10] // ppaì˜ íƒ€ìž…? 1. ë©”ëª¨ë¦¬ì— ppaì˜ ëª¨ì–‘ ê·¸ë ¤ë³´ê¸°., 2. ppa[0]ì˜ íƒ€ìž…? 3. ppa[0] 초기화 í•´ 보기. 4. ppa[0]ì˜ ë‚´ìš©ë¬¼ì— ì ‘ê·¼í•´ 보기. Person **ppb // ppbì˜ íƒ€ìž…? 1. ë©”ëª¨ë¦¬ì— ppbì˜ ëª¨ì–‘ ê·¸ë ¤ë³´ê¸°., 2. ppb[0]ì˜ íƒ€ìž…? 3. ppb[0] 초기화 í•´ 보기., 4. ppb[0]ì˜ ë‚´ìš©ë¬¼ì— ì ‘ê·¼í•´ 보기. }}} === 후기 === == 12회차(2012-7-19) == === 수업내용 === * AccountArray와 ê´€ë ¨ëœ í•¨ìˆ˜ë“¤ 만들기. * 왜 createAccount(char *name)ì€ Accountì˜ *를 반환하는가. {{{ Account makeAccount(char *name) { Account account; account.money = 0; account.name = (char *)malloc(sizeof(char) * (strlen(name)+1)); strcpy(account.name, name); return account; } void addMoney(Account account, int money) { account.money += money; } }}} 그냥 Account를 반환하게 ë§Œë“ ë‹¤ìŒ í•¨ìˆ˜ë“¤ì„ ì¨ ë³´ë©´ ì°¨ì´ë¥¼ 알 수 있습니다. Account를 그냥 넘겨주게 ë˜ë©´ call-by-value로 Accountì˜ ë³µì‚¬ë³¸ì„ ê°€ì§€ê³ money를 ì¦ê°€ì‹œí‚¤ê¸° ë•Œë¬¸ì— ì›ë³¸ Accountì—는 아무런 변화가 없습니다. * extendArray ë“±ì˜ í•¨ìˆ˜ ì‚¬ìš©ì˜ ë¶ˆíŽ¸í•¨. == 13회차(2012-7-20) == === 수업내용 === * 시간복잡ë„. * LinkedList ê°œë…. * ArrayList(Array)와 LinkedListì˜ ë¹„êµ. {{{ LinkedList *createList(); deleteList(LinkedList *linkedList); bool isFull(LinkedList *linkedList); addElement(LinkedList *linkedList, Element element); removeElement(LinkedList *linkedList, Element element); getElement(LinkedList *linkedList, Element element); clearList(LinkedList *linkedList); lengthOf(LinkedList *linkedList); }}} ------------------------- [새싹êµì‹¤/2012]