[[TableOfContents]] = 수업 ë‚´ìš© = ê³¼ì œ 리뷰를 하며 아스키코드와 버í¼ë¥¼ 설명했습니다. ê·¸ëŸ¬ê³ ë‚˜ì„œ ì´ë¡ ì„ ê°€ë¥´ì³¤ìŠµë‹ˆë‹¤. == 아스키 코드 == 0ê³¼ 1로 ë™ìž‘하는 컴퓨터ì—게 ëª¨ë“ ê²ƒì€ {{{{color:red}'''숫ìž'''}}}로 통합니다. 문ìžë„ '''숫ìž''', ì†Œë¦¬ë„ '''숫ìž''', ê·¸ë¦¼ë„ '''숫ìž'''로 취급해서 ë‹¤ë£¨ì£ . ê·¸ëŸ°ë° ìš°ë¦¬ëŠ” ì´ë¯¸ printf와 scanf를 통해서 문ìžë¥¼ ìž…ë ¥ë°›ê³ ì¶œë ¥ë°›ê³ ìžˆìŠµë‹ˆë‹¤. 숫ìžë§Œì„ ì•Œê³ ìžˆëŠ” 컴퓨터가 어떻게 문ìžë¥¼ 다룰 수 있는 걸까요? ë‹µì€ ê°„ë‹¨í•©ë‹ˆë‹¤. ë¬¸ìž í•˜ë‚˜ë§ˆë‹¤ 숫ìžë¥¼ 하나씩 매ì¹í•˜ëŠ”ê±°ì£ . ìˆ«ìž 97ì€ ë¬¸ìž aì´ë‹¤, ë¼ê³ 약ì†ì„ 하는 ê²ë‹ˆë‹¤. 그런 약ì†ì´ 모여서 아스키 í…Œì´ë¸”ì´ ë§Œë“¤ì–´ì¡ŒìŠµë‹ˆë‹¤. attachment:ascii_table.png?width=300&height=520 printf("%c", 숫ìž)ì—서 '숫ìž' ìžë¦¬ì— 위 í…Œì´ë¸”ì— ìžˆëŠ” 숫ìžë¥¼ 하나씩 넣어보세요. ê·¸ 숫ìžì— 해당ë˜ëŠ” 문ìžê°€ ì¶œë ¥ë 것입니다. 아스키 ì½”ë“œì˜ ìˆ«ìžëŠ” 0부터 127까지입니다. 그래서 우리가 문ìžë¥¼ ì¶œë ¥í• ë•Œ, 0~127ì„ ë²—ì–´ë‚˜ëŠ” 수를 넣게 ë˜ë©´ ë¬¸ì œê°€ ìƒê¸°ê²Œ ë˜ì§€ìš”(ë¬¼ë¡ ì € 범위ì—서 í™•ìž¥ëœ í™•ìž¥í˜• 아스키 코드가 있긴 하지만, 그건 지금 얘기하지는 ì•Šê² ìŠµë‹ˆë‹¤). == 문ìžì—´ ìž…ì¶œë ¥ == {{{ char name[100]; scanf("%s", name); }}} stringì„ ìž…ë ¥ë°›ì„ ë•ŒëŠ” 변수 ì•žì— '&'ê°€ 붙지 않습니다. ì§€ê¸ˆì€ ìš”ì •ë„ë§Œ 알아ë‘세요. == ë¬¸ìž ìž…ë ¥ë°›ê¸°ëŠ” 까다ë¡ë‹¤! ë²„í¼ ì•Œì•„ë³´ê¸° == ê³¼ì œ ì½”ë“œì˜ ì¼ë¶€ë¥¼ ê°€ì ¸ì™€ë´¤ìŠµë‹ˆë‹¤. {{{ printf("첫 번째 ë¬¸ìž ìž…ë ¥í•˜ì„¸ìš” : "); scanf("%c", &ch1); printf("ë‘ ë²ˆì§¸ ë¬¸ìž ìž…ë ¥í•˜ì„¸ìš” : "); scanf("%c", &ch2); printf("세 번째 ë¬¸ìž ìž…ë ¥í•˜ì„¸ìš” : "); scanf("%c", &ch3); }}} ë¬¸ìž ì„¸ 개를 ìž…ë ¥ë°›ì•„ ch1, ch2, ch3 ë³€ìˆ˜ì— ë„£ê³ ìžˆìŠµë‹ˆë‹¤. 하지만 ì´ëŒ€ë¡œëŠ” ë¬¸ìž ì„¸ 개가 ì •ìƒì 으로 ìž…ë ¥ë˜ì§€ 않습니다. 바로 ë²„í¼ ë•Œë¬¸ì¸ë°ìš”, scanf는 ìž…ë ¥ì„ ë²„í¼ì— ì €ìž¥í•©ë‹ˆë‹¤. 그래서 사용ìžê°€ ì´ë ‡ê²Œ ìž…ë ¥ì„ í•˜ë©´, {{{ 첫 번째 ë¬¸ìž ìž…ë ¥í•˜ì„¸ìš” : a ë‘ ë²ˆì§¸ ë¬¸ìž ìž…ë ¥í•˜ì„¸ìš” : b 세 번째 ë¬¸ìž ìž…ë ¥í•˜ì„¸ìš” : c }}} 버í¼ëŠ” 요런 ìƒíƒœê°€ ë˜ì§€ìš”. attachment:buffer1.png?width=480&height=220 a, b, cê°€ 나란히 들어가 있는 ê²ƒì´ ì•„ë‹ˆë¼ ì‚¬ì´ì‚¬ì´ì— 엔터(\n)ê°€ 들어간 ê²ƒì„ ë³¼ 수 있습니다. a를 ìž…ë ¥í•˜ê³ ëˆ„ë¥¸ 엔터, b를 ìž…ë ¥í•˜ê³ ëˆ„ë¥¸ 엔터가 다 들어간 것ì´ì§€ìš”. 그래서 변수 ch2ì—는 bê°€ ì•„ë‹ˆë¼ "a를 ìž…ë ¥í•˜ê³ ëˆ„ë¥¸ 엔터"ê°€ 들어가는 것입니다. attachment:buffer2.png?width=480&height=220 ì´ ë¬¸ì œë¥¼ 어떻게 해결해야 í• ê¹Œìš”? í , 엔터를 받아서 어디다 ë˜ì ¸ 버리면 ë˜ì§€ 않ì„까요? attachment:buffer3_v2.png?width=480&height=220 {{{{color:red}'''getchar()'''}}}함수는 ë¬¸ìž í•˜ë‚˜ë¥¼ 받는 함수입니다. ì´ í•¨ìˆ˜ë¥¼ ì´ìš©í•´ì„œ 엔터를 받으면, ch2ì—는 bê°€ 들어가게 ë˜ê² ì£ . getchar()를 추가해서 다시 코드를 작성해 볼까요? {{{ printf("첫 번째 ë¬¸ìž ìž…ë ¥í•˜ì„¸ìš” : "); scanf("%c", &ch1); // a ë°›ê³ , getchar(); // 엔터 받아오기 printf("ë‘ ë²ˆì§¸ ë¬¸ìž ìž…ë ¥í•˜ì„¸ìš” : "); scanf("%c", &ch2); // b ë°›ê³ , getchar(); // 엔터 받아오기 printf("세 번째 ë¬¸ìž ìž…ë ¥í•˜ì„¸ìš” : "); scanf("%c", &ch3); }}} ì´ë ‡ê²Œ ë¬¸ì œê°€ í•´ê²°ë©ë‹ˆë‹¤. ê²°ë¡ : {{{{color:blue}'''문ìžë‚˜ 문ìžì—´ ìž…ë ¥ì„ ë°›ì„ ë•ŒëŠ” ê·¸ê²ƒì´ í•ìƒ ë²„í¼ì— 들어간다는 ê²ƒì„ ê¸°ì–µí•˜ì„¸ìš”!'''}}} == 반복문 for문 == ì½”ë”©ì„ í•˜ë‹¤ë³´ë©´ 중복ë˜ëŠ” ë¶€ë¶„ë“¤ì´ ì°¸ 많습니다. 예를 들어 êµ¬êµ¬ë‹¨ì„ ì¶œë ¥í•˜ëŠ” í”„ë¡œê·¸ëž¨ì„ ë§Œë“ ë‹¤ê³ í•˜ë©´, {{{ printf("구구단 2ë‹¨ì„ ì™¸ìž!\n"); printf("%d * %d = %d\n", 2, 2, 2*2); printf("%d * %d = %d\n", 2, 3, 2*3); printf("%d * %d = %d\n", 2, 4, 2*4); printf("%d * %d = %d\n", 2, 5, 2*5); printf("%d * %d = %d\n", 2, 6, 2*6); ..... ..... }}} ì´ë ‡ê²Œ ì¼ì¼ì´ 타ì´í•‘ì„ í•˜ê¸°ì—는 너무나 ê·€ì°®ì£ . ê·¸ 때 ë°˜ë³µë¬¸ì„ ì“°ë©´ 코드가 아주 심플해집니다. {{{ int i; printf("구구단 2ë‹¨ì„ ì™¸ìž!\n"); for( i=2 ; i<=9 ; i++){ printf("%d * %d = %d\n", 2, i, 2*i); } }}} Cì—서 ë°˜ë³µë¬¸ì€ ë‘ ê°€ì§€ê°€ 있는ë°, ë¨¼ì € forë¬¸ì„ ë°°ì›Œë³´ê² ìŠµë‹ˆë‹¤. forë¬¸ì€ ë§¤ìš° 간단합니다. {{{ for(){ ë°˜ë³µí• ë‚´ìš©; } }}} 그냥 for ì ìœ¼ì‹œê³ ì•ˆì— ë°˜ë³µí• ë‚´ìš©ì„ ë„£ìœ¼ë©´ ë©ë‹ˆë‹¤. 하지만 ì¸ìƒì€ 그리 만만하지 ì•Šì£ .. 여기ì—는 사실 '''ì œì–´ 변수'''ë¼ëŠ” 게 들어갑니다. 그림ì—서 iê°€ ì œì–´ë³€ìˆ˜ì˜ˆìš”. attachment:for1.png?width=470&height=200 다시 구구단 코드를 ë³´ê² ìŠµë‹ˆë‹¤. printf("%d * %d = %d\n", 2, {{{{color:red}2}}}, 2*{{{{color:red}2}}}); printf("%d * %d = %d\n", 2, {{{{color:red}3}}}, 2*{{{{color:red}3}}}); printf("%d * %d = %d\n", 2, {{{{color:red}4}}}, 2*{{{{color:red}4}}}); printf("%d * %d = %d\n", 2, {{{{color:red}5}}}, 2*{{{{color:red}5}}}); printf("%d * %d = %d\n", 2, {{{{color:red}6}}}, 2*{{{{color:red}6}}}); ëª¨ë“ ì¤„ì´ ê°™ì€ ë“¯ 하지만 ë”± ë‘ êµ°ë° ë³€í•˜ëŠ” ë¶€ë¶„ì´ ìžˆì£ ? ì´ë ‡ê²Œ ìœ ì¼í•˜ê²Œ 변화하는 ë¶€ë¶„ì„ í•´ê²°í•˜ëŠ” ê²ƒì´ i입니다. 맨 처ìŒì— iì— 2를 ë„£ê³ , 1씩 ì¦ê°€ì‹œí‚¤ë©´ì„œ 9ê°€ ë 때까지 êµ¬êµ¬ë‹¨ì„ ì¶œë ¥í•˜ëŠ” ê±°ì£ . forë¬¸ì˜ ì‹¤í–‰ 순서는 ì´ë ‡ê²Œ ë©ë‹ˆë‹¤. attachment:for2.png?width=470&height=200 초기화는 맨 처ìŒì— '''한 번만''' ì§„í–‰ë˜ê³ , ê·¸ 뒤부터는 '''조건검사->내용실행->ì¦ê°€'''ê°€ ê³„ì† ë°˜ë³µë©ë‹ˆë‹¤. 그러다가 ì¡°ê±´ì´ ë§žì§€ 않게 ë˜ë©´(iê°€ 10ì´ ë˜ë©´) ë°˜ë³µë¬¸ì„ ë¹ ì ¸ë‚˜ì˜¤ê²Œ ë˜ì£ . 실행 순서를 잘 ìµí˜€ë†“으세요. ê·¸ëŸ°ë° ë°˜ë³µí• ë‚´ìš©ì— ë˜ forë¬¸ì„ ë„£ê²Œ ë˜ë©´ 어떻게 ë 까요? 2중 forë¬¸ì´ ë©ë‹ˆë‹¤. {{{ for(){ for(){ } } }}} 2중 for문ì—ì„œì˜ ì‹¤í–‰ íë¦„ì„ ìž˜ 알아ë‘세요. //ë„ì‹í™”는 다ìŒì—.. = ê³¼ì œ 소개 = êµìˆ˜ë‹˜ì´ Cì˜ ìžìž˜í•œ 문법보다는 ì†ì½”ë”©ì„ ì¢‹ì•„í•˜ì‹œëŠ” ë¶„ì´ë¼, 실습 위주로 ê°€ë ¤í•©ë‹ˆë‹¤. ë¬¸ì œë¥¼ ë³´ê³ ë‚˜ì„œ, ìƒê° ì—†ì´ ë°”ë¡œ í‚¤ë³´ë“œì— ì†ì„ 얹지 ë§ì•„주세요. 반드시 ì†ìœ¼ë¡œ 한 줄ì´ë¼ë„ '''설계를 í•´ë³´ê³ ''' ì½”ë”©ì„ í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤. == ê³¼ì œ1 : 별ì°ê¸° Lv.1 == 사용ìžë¡œë¶€í„° ìˆ«ìž Nì„ ìž…ë ¥ 받아, 다ìŒê³¼ ê°™ì´ ë³„ì„ ì°ìœ¼ì„¸ìš© attachment:star_lv.1.png?width=250&height=300 == ê³¼ì œ2 : 별ì°ê¸° Lv.2 == 사용ìžë¡œë¶€í„° ìˆ«ìž Nì„ ìž…ë ¥ 받아, 다ìŒê³¼ ê°™ì´ ë³„ì„ ì°ìœ¼ì„¸ìš© attachment:star_lv.2.png?width=250&height=300 == ì„ íƒê³¼ì œ : 별ì°ê¸° Lv.3 == 짜잔! attachment:star_lv.3.png?width=600&height=320 한 번 í•´ë³´ë©´ ìƒê°ë³´ë‹¤ ì–´ë µì§€ 않다는 걸 ëŠë‚„거예요. = ê³¼ì œ ì œì¶œ = == 현지 == {{{ ì—¬ê¸°ì— ì½”ë“œ 붙여넣기 }}} == 혜민 == {{{ ì—¬ê¸°ì— ì½”ë“œ 붙여넣기 }}} == ìœ ì§„ == {{{ ì—¬ê¸°ì— ì½”ë“œ 붙여넣기 }}} = 후기 = [ì´ì§€ìˆ˜|물 주는 사람] ì‹œê°„ì´ ì´‰ë°•í•´ì„œ 빨리빨리 넘어가ëŠë¼ê³ 좀 ì–´ë µê²Œ 가르친 것 같습니다. ìƒˆì‹¹ë“¤ì´ ì¢€ íž˜ë“¤ì—ˆì„ ê²ƒ ê°™ì•„ìš”ã… ë‹¤ìŒì—” 좀 ë” ì²œì²œížˆ, 쉽게 ê°€ë ¤ê³ í•©ë‹ˆë‹¤. ìƒˆì‹¹ë“¤ì´ ë„ˆë¬´ 잘 ë“¤ì–´ì£¼ê³ ì˜ˆë»ì„œ(?) 가르치는 게 ì¦ê±°ì›Œìš”♥ ìš°íž› ìƒˆì‹¹ë“¤ì´ ë˜‘ë˜‘í•´ì„œ ì§ˆë¬¸ë„ ë§Žì´ í•©ë‹ˆë‹¤. 허허 [ì´í˜„ì§€] ìž…ë ¥í•˜ê¸° ì „ì— ìŠ¤íŽ˜ì´ìŠ¤ë°” 한 번 ëˆ„ë¥´ê³ ì‹œìž‘í•´ì£¼ì„¸ìš”!! ì´ê±°ë§ê³ , ìš”ë ‡ê²Œ [김혜민] [ìœ ì§„]