¡ºÇÁ·Î±×·¡¹Ö ¾ð¾î °­ÁÂ-C,C++,VC °­Á (go PROG)¡» 1591¹ø Á¦ ¸ñ:[°­ÁÂ] Æ÷ÀÎÅÍ ½ºÅ͵ð [6/8] -½Å°æÈ£ ¿Ã¸°ÀÌ:ÆÄÀÌ»ç¶û(½Å°æÈ£ ) 00/01/26 23:59 ÀÐÀ½:419 °ü·ÃÀÚ·á ¾øÀ½ ----------------------------------------------------------------------------- ¡º¹è¿òÅÍ-°­Á (go SSCS)¡» 31¹ø Á¦ ¸ñ:[°­ÁÂ] Æ÷ÀÎÅÍ ½ºÅ͵ð [6/8] -½Å°æÈ£ ¿Ã¸°ÀÌ:ÆÄÀÌ»ç¶û(½Å°æÈ£ ) 00/01/23 23:36 ÀÐÀ½: 4 °ü·ÃÀÚ·á ¾øÀ½ ----------------------------------------------------------------------------- ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ ¡á Æ÷ÀÎÅÍ ½ºÅ͵ð [6] ¡á ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ [990219 ÆÄÀÌ»ç¶û] ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ ¡á 6. ±¸Á¶Ã¼, ÇÔ¼ö, ÆÄÀÏ°ú Æ÷ÀÎÅÍ ¡á ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ ¢Ä ±¸Á¶Ã¼¿Í Æ÷ÀÎÅÍ ¾Æ½Ã´Ù½ÃÇÇ ±¸Á¶Ã¼´Â ¿©·¯°³ÀÇ ÀÚ·áÇüÀ» Çϳª·Î ¹­¾î³õÀº ÅëÇÕ ÀÚ·áÇüÀÇ ÇÏ ³ª ÀÔ´Ï´Ù. ±¸Á¶Ã¼ ¿ª½Ã ÀÚ·áÇüÀ̱⠶§¹®¿¡ Æ÷ÀÎÅÍ »ç¿ë¿¡ À־µµ ÀÏ¹Ý ÀÚ ·áÇüÀ» ´Ù·ç´Â °Í°ú ´Ù¸¦ °ÍÀÌ ¾ø½À´Ï´Ù. ´Ü ±¸Á¶Ã¼´Â ÀϹÝÀûÀ¸·Î Å©±â°¡ Å© ±â ¶§¹®¿¡ ÀÏ¹Ý ÀÚ·áÇü¿¡¼­ ÈçÈ÷ »ç¿ëµÇ´Â call by value ´ë½Å¿¡ Æ÷ÀÎÅ͸¦ »ç ¿ëÇÑ call by reference°¡ ÁÖ·Î »ç¿ë µË´Ï´Ù. ÇÔ¼öÀÇ ÀÎÀÚ·Î ±¸Á¶Ã¼¸¦ ³Ñ±ä´Ù °í ÇÒ¶§ ±¸Á¶Ã¼ Àüü°¡ ÀÎÀÚ¿¡ º¹»çµÇ±â ¶§¹®¿¡ ½Ã°£°ú °ø°£ »ç¿ëÀÌ ¸ðµÎ ºñ È¿À²ÀûÀÌ µÇ±â ¶§¹®ÀÌÁö¿ä. ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¸À» °¡Áö°í Á¢±ÙÀ» ÇÏ´Â °ÍÀÌ ÈÎ ¾À È¿À²ÀûÀÓÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ¿ì¸®°¡ ¹è¿­ÀÇ ¿ä¼Ò¿¡ Á¢±ÙÇÒ ¶§ [] ¿¬»êÀÚ¸¦ »ç¿ëÇϵíÀÌ ±¸Á¶Ã¼ÀÇ ¿ä¼Ò¿¡ Á¢±ÙÀ» ÇÒ·Á¸é Dot(.) ¿¬»êÀÚ¸¦ »ç¿ëÇÏÁö¿ä. ÇÏÁö¸¸ Dot ¿¬»êÀÚ´Â ±¸Á¶Ã¼ÀÇ ÀνºÅϽºÈ­µÈ º¯¼ö¿¡¼­¸¸ »ç¿ëÀÌ °¡´ÉÇÏ°í, ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ÅëÇØ Á¢±ÙÇÏ°í ÀÚ ÇÒ¶§´Â -> ¿¬»êÀÚ¸¦ »ç¿ë ÇÕ´Ï´Ù. ¸ðµÎ ¾Æ½ÃÁö¿ä? ^^ typedef struct grade_t { int number; int grade; }; void swap_grade(grade_t *student1, grade_t *student2) { grade_t temp; temp.number = student1->number; temp.grade = student1->grade; student1->number = student2->number; student1->grade = student2->grade; student2->number = temp.number; student2->grade = temp.grade; } void main(void) { grade_t st1 = { 1, 100 }; grade_t st2 = { 2, 80 }; swap_grade(&st1, &st2); // ... } ¢Ä ÇÔ¼ö Æ÷ÀÎÅÍ ÇÔ¼ö´Â ÄÄÆÄÀÏ ÇÒ¶§ ÄÄÇ»ÅÍ°¡ ¾Ë¾Æ µéÀ» ¼ö ÀÖ´Â ±â°è¾î Äڵ尡 µÇ°í ¿ì¸® ´Â ÈçÈ÷ ÀÌ°ÍÀ» ¸ñÀû ÄÚµå¶ó°í ºÎ¸¨´Ï´Ù. ¿ì¸®°¡ ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§ ÀÌ·± ¸ñÀû ÄÚµå´Â ¸Þ¸ð¸®¿¡ ¿Ã¶ó°¡¼­ ½ÇÇàÀÌ µÇ°Ô µÇ´Â °ÅÁö¿ä. Áï ÇÔ¼öµµ ¸Þ¸ð¸® ¿¡ ÀûÀçµÇ±â ¶§¹®¿¡ ±× ¸Þ¸ð¸® ¹øÁö°¡ ÀÖ´Â °ÍÀÌÁö¿ä. ´ç¿¬È÷ ±× ÁÖ¼Ò¸¦ °¡¸® Å°´Â Æ÷ÀÎÅ͵µ ¸¸µé ¼ö°¡ ÀÖ´Â °Ì´Ï´Ù. ÇÔ¼ö Æ÷ÀÎÅÍ´Â Å©±â°¡ 4¹ÙÀÌÆ®ÀÌ°í ´ëºÎºÐÀÇ ¼Ó¼ºµµ ÀÏ¹Ý Æ÷ÀÎÅÍ¿Í µ¿ÀÏÇÏ Áö¸¸ ¼±¾ðÇÒ ¶§ ¸¹ÀÌ ´Þ¶óÁö´Â °ÍÀ» ¾Æ½Ç °Ì´Ï´Ù. (½ÃÇè¿¡µµ ³ª¿Ô¾úÁö¿ä ^^) void *func_ptr(void); void (*func_ptr)(void); À§ µÎ ¼±¾ðÀÇ Â÷ÀÌÁ¡À» ¾Æ½ÃÁÒ? ù¹ø° ¼±¾ðÀº ¸®ÅÏ°ªÀÌ void *ÀÌ°í ÀÎÀÚ°¡ ÇÊ¿ä¾ø´Â ÇÔ¼ö func_ptrÀ» ¼±¾ðÇÑ °Ì´Ï´Ù. µÎ¹ø° ¼±¾ðÀÌ ¹Ù·Î ÇÔ¼ö Æ÷ÀÎÅÍÀÇ ¼±¾ðÀÌÁö¿ä. ¸®ÅÏ°ªµµ ¾ø°í ÀÎÀÚµµ ÇÊ¿ä¾ø´Â ÇÔ¼ö¸¦ °¡¸®Å³ ¼ö ÀÖ´Â ÇÔ¼ö Æ÷ ÀÎÅÍ func_ptrÀÇ ¼±¾ð ÀÔ´Ï´Ù. ÀÌ·¸°Ô ÇÔ¼ö Æ÷ÀÎÅÍ´Â ÀÏ¹Ý ÇÔ¼ö¸¦ ¼±¾ðÇÏ´Â °Í°ú ºñ½ÁÇÏ°Ô Ç쵂 À̸§°ú Æ÷ ÀÎÅÍ ¼±¾ð(*) ¾ÕµÚ¿¡ °ýÈ£¸¦ ºÙ¿©ÁÖ¾î¾ß ÇÑ´Ù´Â °ÅÁö¿ä. ±×·¯¸é ÇÔ¼ö Æ÷ÀÎÅÍ ´Â ¾îµð¿¡ ¾µ±î¿ä? ´ÙÀ½°ú °°Àº ÇÔ¼öµéÀÌ ÀÖ´Ù°í ÇսôÙ. void putstring_moniter(char *str); void putstring_printer(char *str); À§ÀÇ ÇÔ¼ö´Â strÀ» ¸ð´ÏÅÍ·Î Ãâ·ÂÇÏ´Â ÇÔ¼ö, ¾Æ·¡ÀÇ ÇÔ¼ö´Â strÀ» ÇÁ¸°ÅÍ·Î Ãâ·ÂÇÏ´Â ÇÔ¼ö¶ó°í °¡Á¤ÇÏÁö¿ä. À§ÀÇ ÇÔ¼öµéÀ» °¡¸®Å³ ¼ö ÀÖ´Â ÇÔ¼ö Æ÷ÀÎÅ͸¦ ¸¸µé¾î º¾½Ã´Ù. void (*putstring_ptr)(char *str) = NULL; // ÃʱⰪÀ» NULL·Î ÇÕ´Ï´Ù void set_moniter(void) { putstring_ptr = putstring_moniter; } void set_printer(void) { putstring_ptr = putstring_printer; } set_moniter ÇÔ¼ö´Â putstring_ptrÀ» putstring_moniter·Î ¼¼ÆÃÇÏ°í ¾Æ·¡ÀÇ set_printer ÇÔ¼ö´Â putstring_ptrÀ» putstring_printer·Î ¼¼ÆÃÇÏÁö¿ä. Ãʱ⠰ªÀ» NULL·Î ÇÑ ÀÌÀ¯´Â ÇÔ¼ö Æ÷ÀÎÅ͵µ ÀÏÁ¾ÀÇ º¯¼öÀ̱⠶§¹®¿¡ ÃʱâÈ­°¡ µÇÁö ¾ÊÀ¸¸é ¾²·¹±â°ªÀÌ µé¾î°¡ ÀÖÀ» ¼öµµ Àֱ⠶§¹®ÀÌÁö¿ä. ¾²·¹±â °ªÀÌ µé¾î°¡´Â °Ô ¹«½¼ »ó°üÀ̳İí¿ä? Á¶±Ý ÈÄ¿¡ ¼³¸íÇÏÁö¿ä. ´ÙÀ½ Äڵ带 º¸¼¼¿ä. void putstring(char *str) { if (putstring_ptr != NULL) (*putstring_ptr)(str); } ÀÌ·¸½À´Ï´Ù. ¾î¶§¿ä? º°·Î ¾È ¾î·ÆÁö¿ä? ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇØ º¸ÁÒ. set_moniter(); putstring("ÀÌ°Ç ¸ð´ÏÅÍ¿¡ Ãâ·Â µË´Ï´Ù"); set_printer(); putstring("ÀÌ°Ç ÇÁ¸°ÅÍ¿¡ Ãâ·Â µË´Ï´Ù"); À§ÀÇ putstring ÇÔ¼ö¿¡¼­ (*putstring_ptr)(str)Àº putstring_ptr(str)ó·³ (*...)¸¦ »©°í »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. C¿¡¼­´Â ¸ðµç ÇÔ¼ö°¡ »ç½Ç»óÀº ±× Æ÷ÀÎ Å͸¦ ÅëÇØ »ç¿ëµÇ±â ¶§¹®ÀÌÁö¿ä. (±×·¡¼­ Æ÷ÀÎÅÍ¿¡ ÇÔ¼ö¸¦ ´ëÀÔÇÒ ¶§µµ µû·Î & ¿¬»êÀÚ¸¦ »ç¿ëÇÏÁö ¾ÊÁö¿ä) ±×·±µ¥ ¸¸¾à set_... ÇÔ¼ö¸¦ ºÎ¸£Áö ¾Ê°í ÷ºÎÅÍ ±×³É putstring ÇÔ¼ö¸¦ ºÒ ·¶´Ù°í ÇսôÙ. putstring ÇÔ¼ö¿¡¼­´Â putstring_ptrÀÌ NULLÀÎÁö ºñ±³¸¦ ÇÏÁö ¿ä. ³×, ±×·¸½À´Ï´Ù. putstring_ptrÀÌ NULL À϶§´Â ¾Æ¹«·± ÇÔ¼öµµ Æ÷ÀÎÅÍ¿¡ ¿¬°áµÇÁö ¾Ê¾ÒÀ½À» ¶æÇÏ´Â °ÅÁö¿ä. ÀÌ°ÍÀ» ±¸ºÐÇϱâ À§Çؼ­ ÇÔ¼ö Æ÷ÀÎÅ͸¦ ¼± ¾ðÇÒ ¶§´Â ´ëºÎºÐÀÇ °æ¿ì ÃʱⰪÀ» NULL·Î ÇØ ÁÖ¾î¾ß ÇÏ´Â °ÅÁö¿ä. ÀÌ·¸µí ÇÔ¼ö Æ÷ÀÎÅÍ´Â ÈçÈ÷ ¿©·¯°³ÀÇ ´ë»ó¿¡ °øÅëµÇ´Â ±â´ÉÀÌ Àû¿ëµÉ ¶§ È¿ À²ÀÌ ±Ø´ëÈ­ µÇ°ï ÇÕ´Ï´Ù. ¸¸¾à À§ÀÇ ¿¹Á¦¸¦ int dest¶ó´Â º¯¼ö¸¦ µÎ°í ¸ð´Ï ÅÍ¿¡ Ãâ·ÂÇÏ°íÀÚ Çϸé dest¿¡ 1À», ÇÁ¸°ÅÍ¿¡ Ãâ·ÂÇÏ°íÀÚ Çϸé dest¿¡ 2¸¦ ´ë ÀÔÇÏ¿© putstring ÇÔ¼ö¿¡¼­ dest °ªÀ» °Ë»çÇØ putstring_moniter ÇÔ¼ö¸¦ ºÎ¸¦ °ÍÀÎÁö putstring_printer ÇÔ¼ö¸¦ ºÎ¸¦ °ÍÀÎÁö¸¦ ÆǺ°Çϵµ·Ï ÇÑ´Ù¸é, ÇÔ¼ö°¡ ¸Å¿ì ¸¹ÀÌ ºÒ¸±¶§´Â ºñ±³Çϴµ¥ ÇÊ¿äÇÑ ½Ã°£µµ ¸¸¸¸Ä¡ ¾Ê°Ô µÉ °ÍÀÔ´Ï´Ù. ÀÌÁ¦ ÇÔ¼ö Æ÷ÀÎÅ͸¦ ¹è¿­·Î ¸¸µé¾î º¾½Ã´Ù. ´ÙÀ½°ú °°Àº ¼¼°³ÀÇ ¸Þ´º°¡ ÀÖ ´Ù°í °¡Á¤ÇÏÁö¿ä. void menu1(void) { printf("1¹ø ¸Þ´º ÀÔ´Ï´Ù"); } void menu2(void) { printf("2¹ø ¸Þ´º ÀÔ´Ï´Ù"); } void menu3(void) { printf("3¹ø ¸Þ´º ÀÔ´Ï´Ù"); } À̵éÀ» ÇÔ¼ö Æ÷ÀÎÅ͸¦ ´ãÀ» ¼ö ÀÖ´Â Å©±â 3ÀÇ ¹è¿­¿¡ ³Ö¾î º¾½Ã´Ù. (À̸§À» ºÙÀÌÀÚ¸é ÇÔ¼ö Æ÷ÀÎÅÍ ¹è¿­ Á¤µµ°¡ µÉ±î¿ä?) typedef void (*menu_ptr)(void); menu_ptr menu[] = { menu1, menu2, menu3 }; void main() { ... // number¿¡ ¸Þ´º ¹øÈ£¸¦ ÀÔ·Â ¹Þ´Â´Ù (1-3) menu[number-1](); }; menu[÷ÀÚ](ÀÎÀÚ)¿Í °°Àº ¹æ¹ýÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ°Ô µÇÁö¿ä. ¹è¿­ÀÇ »ç¿ë¹ý °ú Å©°Ô ´Ù¸£Áö ¾Ê½À´Ï´Ù. ¢Ä ÆÄÀÏ Æ÷ÀÎÅÍ ¾Æ½Ã´Ù½ÃÇÇ C¿¡¼­ ÆÄÀÏÀ» ´Ù·ê ¶§´Â ±¸Á¶Ã¼ º¯¼öÀÇ Æ÷ÀÎÅ͸¦ »ç¿ë ÇÕ´Ï´Ù. FILE *fp; FILEÀº ÄÄÆÄÀÏ·¯¸¦ ¸¸µç »ç¶÷µéÀÌ Á¤ÀÇÇÑ ±¸Á¶Ã¼À̸ç Æ÷ÀÎÅÍ·Î ¼±¾ðÇØ ÆÄÀÏ À» ³ªÅ¸³»´Â Æ÷ÀÎÅÍ·Î »ç¿ë µË´Ï´Ù. ÀÌó·³ ¼±¾ðÀÌ µÇ¾úÀ» ¶§±îÁö´Â ´ç¿¬ÇÏ°Ô µµ ¾Æ¹«·± ¸Þ¸ð¸®´Â ÇÒ´çµÇÁö ¾ÊÀºÃ¤ ´ÜÁö fp¿¡ 4¹ÙÀÌÆ®ÀÇ Æ÷ÀÎÅÍ ¿µ¿ªÀÌ ÇÒ ´çµÇÁö¿ä. ÀÌÁ¦ ÆÄÀÏÀ» ¿±´Ï´Ù. fp = fopen("ÆÄÀϸí", "¿­±â¸ðµå"); fopen ÇÔ¼ö´Â ÆÄÀÏ¸í¿¡ ÁÖ¾îÁø ÆÄÀÏÀ» ¿­±â¸ðµå·Î ¿­¾î FILE ±¸Á¶Ã¼¸¦ »õ·Î ÇÒ´çÇØ ¿­¸° ÆÄÀÏ¿¡ °ü·ÃµÈ Á¤º¸µéÀ» ³ÖÀº ÈÄ ±× Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÏ°Ô µÇ´Â °Í ÀÌÁö¿ä. ´ÙÀ½°ú °°´Ù°í º¸¸é µË´Ï´Ù. FILE *fopen(char *filename, char *openmode) { FILE *temp; temp = (FILE *)malloc(sizeof(FILE)); // ... filenameÀ» openmode¿¡ µû¶ó ¿¬´Ù // ... temp ±¸Á¶Ã¼ º¯¼ö¿¡ ¿­¸° ÆÄÀÏÀÇ Á¤º¸¸¦ ³Ö´Â´Ù return temp; } ÀÌÁ¦ºÎÅÍ´Â ÀÌ·¸°Ô ÇÒ´çµÈ Æ÷ÀÎÅÍ fp¸¦ °¡Áö°í ÆÄÀÏ¿¡ Á¢±ÙÀ» ÇÏ°Ô µÇ´Â °Í ÀÌÁö¿ä. ÀÚ¼¼ÇÑ ³»¿ëÀº C ÀÔ¹®¼­ÀÇ ÆÄÀÏ ´Ù·ç±â¿¡ ´ëÇÑ ³»¿ëÀ» Âü°íÇÏ½Ã°í¡¦ ÆÄÀÏÀ» ´Ù »ç¿ëÇÑ ÈÄ¿¡´Â ´Ý¾Æ¾ß°ÚÁö¿ä? fclose(fp); fclose ÇÔ¼ö´Â ³»ºÎÀûÀ¸·Î fp¿¡ ÇØ´çÇÏ´Â ÆÄÀÏÀ» ´ÝÀº ÈÄ¿¡ free ÇÔ¼ö·Î fp ¿¡ ÇÒ´çµÈ FILE ±¸Á¶Ã¼ ¸¸Å­ÀÇ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇØ ÁÖ´Â °Ì´Ï´Ù. ¿ì¸®°¡ µû·Î ÇÒ ´çÇϰųª ÇØÁ¦ÇÒ ÇÊ¿ä´Â ¾ø´Â °ÍÀÌÁö¿ä. ÀÌÀü¿¡µµ ¸»¾¸ µå·È´Âµ¥ ´ÙÀ½ÀÇ ¿¹Á¦¸¦ Çѹø º¸¼¼¿ä. void open_files(FILE *fp1, FILE *fp2) { fp1 = fopen("...", "..."); fp2 = fopen("...", "..."); } void main(void) { FILE *fp1, *fp2; open_files(fp1, fp2); // ... } À§ÀÇ ¿¹Á¦°¡ Á¦´ë·Î µÇ¾ú´Ù°í »ý°¢ÇϽô ºÐÀº ÀÌÁ¦ ¾È °è½Ã°ÚÁö¿ä? main ÇÔ ¼öÀÇ fp1, fp2¿Í open_filesÀÇ fp1, fp2´Â ÀüÇô º°°³ ÀÔ´Ï´Ù. open_files ¿¡¼­ »õ·ÎÀÌ ¼±¾ðµÈ fp1, fp2´Â ÇÔ¼ö ½ºÄÚÇÁ¸¦ °¡Áö¹Ç·Î open_files ÇÔ¼ö°¡ ³¡³ª°Ô µÇ¸é ¾ø¾îÁöÁö¿ä. main ÇÔ¼öÀÇ fp1, fp2´Â ¿©ÀüÈ÷ ¾²·¹±â°ªÀ» °¡Áö°í ÀÖÀ» »Ó ÀÔ´Ï´Ù. ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ ¢Ä ¿©Å±îÁö Áß¿¡ °¡Àå ªÀº ½ºÅ͵ð ½Ã°£À̾ú³×¿ä. ¸Ó ´Ùµé ¾Æ½Ã´Â °ÍÀ̾úÀ» Å×´Ï °£´ÜÈ÷ ¼Ò°³¸¸ Çß½À´Ï´Ù. ´ÙÀ½ ½Ã°£¿¡´Â ¸µÅ©µå ¸®½ºÆ®¸¦ ±¸ÇöÇØ º¸ µµ·Ï ÇÏÁö¿ä. ÀÌ»Û ¸»¸¸ ¾²´Â ¼¼»óÀ» ¸¸µé°í ½ÍÀº ÆÄÀÌ°¡¡¦ ^^; ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬