U E D R , A S I H C RSS

새싹�실/2012/주먹밥



1. 참여� 명단


학번 �름
06 김준�
12 한�표
12 용�훈
12 박�건

2. 수업진행 �황

�름 3/21 3/28 4/3,4보강 4/5 4/11 4/16
김준� O O O O O O
한�표 O O O X O X
용�훈 O O X O X O
박�건 O O X O X O

3. 목표

  • 김준ì„� : 기존 기íš�í–ˆë�˜ 커리í�˜ëŸ¼ 프로ì �트 결과물 3ê°œ ì�´ìƒ�. 그리고 C언어ì�˜ 파ì�¼ìž…출력 ë°� 네트워í�¬ 프로그래ë°�까지 가르치겠다. 그외 ìž¡ì‹�ì�€ +@

  • ë°•ë�„ê±´ : 컴퓨터ì—� 관한 여러가지 ìž¡ ì§€ì‹� + 프로그램 사용법 습ë“�, 네트워í�¬ 프로그래ë°�, 게임 만들어보기.
  • ìš©ìƒ�훈 : 기본ì �ì�¸ c언어와 안드로ì�´ë“œ,ì•„ì�´í�° 어플ì�„ 만들기 프로그래ë°� 사용법 습ë“�.
  • 한ì›�표 : 다양한 컴퓨터 프로그램ì—� ì�µìˆ™í•´ì§€ê³  커리í�˜ëŸ¼ì�„ 열심히 ë”°ë�¼ê°€ê² ë‹¤.

4. 강� 정보


4.1. 강� 진행 사진



  • 머리 모양ì�€ 신경쓰지 맙시다 - 김준ì„�
  • 맨 왼쪽ë€í„° ë°•ë�„ê±´, 김준ì„�, 한ì›�표, ìš©ìƒ�훈 입니다.

4.2. 1회차(2012/3/21)



  • ê°œì�¸ì �ì�¸ 얘기 ë°� 수준 íƒ�색
  • Linuxì—�서 GCC를 사용한 컴파ì�¼ 시범
  • Wiki작성 법 ë°� 회고 작성법 ë…¼ì�˜
  • 진로 íƒ�색(?)

4.2.1. 회고


  • 한ì›�표 : 새싹êµ�실 첫 수업ì�´ì—ˆë‹¤. ë°•ë�„ê±´, ìš©ìƒ�훈ì�´ë�¼ëŠ” ë�™ê¸°ë“¤ê³¼ ê°™ì�´ 하게ë�˜ì—ˆëŠ”ë�° 앞으로 친해졌으면 좋곘다. 처ì�Œì—�는 새싹êµ�실ì�„ 하는 ì�´ìœ ì™€, 진행방ì‹� 등ì—� 대해 선배님께 설명ì�„ 들었다. 그리고 wiwkiì—� 가입해서 앞으로 우리가 새싹êµ�실ì—�서 배운것, ëŠ�낀것ì�„ ì§�ì ‘ 편집할 수 있다는 것ì�´ 좋았다. ê·¸ 후ì—� Virtual Boxë�¼ëŠ” 것으로. Hello Worldë�¼ëŠ” 프로그램ì�„ 짯는ë�° 새로운 환경ì�„ ë³¼ 수 있어서 좋았지만 한편으로는 처ì�Œë³´ëŠ” 환경ì�´ë�¼ 어색한 ê°�ì�´ 있었다. 그리고 어플 프로그램ì�„ 보여주셨는ë�°. 친구들ì�€ ì�´í•´í•˜ëŠ”ê²ƒ ê°™ì�€ë�° 나만 잘 못하는 것 같았다.
  • ìš©ìƒ�훈 : 오늘 경험했ë�˜ ì�¼ì�€ 새싹êµ�실ì�€ "어떻게 ë�œë‹¤"ë�¼ê³  설명하는 시간ì�´ì—ˆë‹¤. 처ì�Œì—� 새싹êµ�실ì—� 들어가면 무지 어색할 것 가았는ë�° 그렇지 않았다. 컴퓨터 3대를 앞ì—�ë‘�ê³  wikiì—� 한해서 처ì�Œ ì�´ì•¼ê¸°ë¥¼ 들었다. ìƒ�소한것ì�´ì–´ì„œ ë§Žì�´ 신기하셨다. 그리고 버츄얼 박스 받고 리눅스 환경를 처ì�Œë³´ì•˜ë‹¤. 재미있ì�„것 같다. 그리고 가장 신기한 ì�¼ì�€ 고등학êµ� 선배님ì�¸ 박성현 선배님ì�„ 뵙는ë�° 너무 신기 하였다. 먼저 ì�¸ì‚¬ë¥¼ 드렸어야 했는ë�°.. ì�¸ì‚¬ë“œë¦¬ê³  전화번호ë�„ 알려드렸다. 신기한 하루였다.

  • ë°•ë�„ê±´ : 캡스톤설계실(208-216)ì—�서 김준ì„� 선배님과, 한ì›�표, ìš©ìƒ�훈 ë�™ê¸°ë“¤ê³¼ ê°™ì�´ 3ì›” 21ì�¼ PM6시ì—� gcc, Linux, android example, wiki작성법 등ì�„ 배웠다. 나랑 비슷해보ì�´ëŠ” 친구가 있어서 ê°™ì�´ 프로ì �트 í•  수 있ì�„것 같다.

  • 김준ì„� :ìš©ìƒ�훈, 한ì›�표, ë°•ë�„ê±´ì�„ ì�´ë�Œê³  새싹ì�„ 캡실ì—�서 진행해보았다. 우리반ì�˜ ì§•í�¬ìŠ¤ëŠ” ë��나지 않았다. ê¼­ 걸러내ë�„ 기본ì�„ 아는 친구들ì�´ 아무것ë�„ 모르는것처럼 들어와. 여튼, 그래ë�„ 새로 새싹ì�„ 가르칠수 있고 좀 알고 있는 í•™ìƒ�들ì�´ 들어와서 좋다. ê°•ì�˜ë¥¼ 다ì�Œì‹œê°„ì—� íŒ�íŒ�나가ë�„ ë� ê²ƒ 같다. 2주차ì—� 대해 코딩하는것ì�´ë‚˜ 앞으로ì�˜ 진로ì—� 대해 물어보았고 현재 ì „ì²´ì �ì�¸ ì§„ë�„나 수준ì�„ ê°„ì ‘ì �으로 알 수 있게 ë�œê²ƒì�´ 가장 í�° 성과다.

4.3. 2회차(2012/3/28)


4.3.1. 강� 진행 사진


4.3.2. �육 내용


  • 장소 시간 : 6층 PC실ì—�서 6시ì—� 실습ì�„ í•´ë´„

    새싹�실/2012/새싹�실강사�육/2주차
    새싹�실/2011/무전취�/레벨4

  • 2주차 유ì�¸ë¬¼ êµ�육

  • ì�´ì†Œë�¼ 때리기 게임ì�„ Linux gedit를 사용해 코딩ì�„ 시켜봄.

    • 한글 ë�„어쓰기ì—� 문제가 발견ë�˜ê³  코딩 ë�„어쓰기ì—� 대한 중요성ì�„ 알지 못하는것ì�„ 알게ë�¨ - 김준ì„�

  • 디버깅하는 방법ì�„ 앞ì—�서 ì§�ì ‘ 보여줌. 몇번째 ë�¼ì�¸ì—� 몇번쨰가 잘못ë�œ ë�¼ì�¸ì�´ë�¼ê³  나오죠? ì�´ê±¸í†µí•´ ì›�표와, ìƒ�훈ì�´ì�˜ 디버깅ì�„ ê³ ì³�주었습니다. ë�„어쓰기 잘하고 괄호 잘닫으ë�¼ê³ .

  • 예약어 -> 예약어는 Cì�˜ 시스템ì—�서 미리 ì„ ì �해놓ì�€ 단어를 ì�˜ë¯¸í•©ë‹ˆë‹¤. ì�´ê²ƒì�„ 변수명ì�´ë‚˜ 함수명으로 ì“°ë©´ 안ë�©ë‹ˆë‹¤.


  • printf(), scanf()어떻게 쓰는지 알죠?


  • int, char, float, long, double 변수는 무슨 표현ì�„ 위해 만들어졌는지 알려주었습니다. 정수, 문ìž�, 실수. 알죠?


  • #define 선언문ì�˜ 사용법ì—� 대해 알려주었습니다. #define으로 매í�¬ë¡œë¥¼ 선언해놓으면 편하게 ì„ ì–¸ 단어를 만들ì�Œìœ¼ë¡œ 쓸수있지용? ê·¸ ì�‘ìš©ì—� 대해서는 다ì�Œì—� 기회가 ë�˜ë©´ 알려주겠습니다.


  • í—¤ë�” 파ì�¼ë“¤ì—�는 ë­�ê°€ 들어가는지 한번 알아보았습니다. math.hì—�는 수학ì—� 관련ë�œ 함수. time.hì—�는 시간 제어ì—� 관련ë�¨ 함수를 사용했죠 .srand(time(NULL))ì�´ 왜 ì“°ì�´ëŠ” 지는 ì•„ì§� 안알려주었답니다.

  • if문, switch()case: default:}, for, while문ì�˜ ìƒ�김새와 존재 목ì �ì—� 대해서 알려주었습니다. ë§�그대로 프로그램ì�˜ 중복ì�„ 없애고 사용ìž�ì�˜ í��름ì�„ 좀 ë�” 편하게 코딩할수 있ë�„ë¡� 만들어진 예약어들입니다. ì•„ switch case문ì—�서 break를 안가르쳤네요 :(

  • 과제로 나오는 ACM 문제를 풀어보았습니다

4.3.3. 코 딩


  • 한ì›�표 - 세 정수 정렬하기


#include<stdio.h>
int main() {

int a,b,c,d;
scanf("%d %d %d",&a,&b,&c);

if(a>b) {
	d=b;
	b=a;
	a=d;
}
if(b>c) {
	d=c;
	c=b;
	b=d;
}
if(a>b) {
	d=b;
	b=a;
	a=d;
}
printf("%d %d %d",a,b,c);

return 0;

}

  • ë°•ë�„ê±´ - 윤년구하기


#include <stdio.h>

int main(void)
{
	int num;

	printf("Input integer.");
	scanf("%d", &num);

	if(num % 400 == 0)
		printf("Leap");
	else if((num % 4 == 0) || (num & 100 != 0))
		printf("Leap");
	else
		printf("Normal");

	return 0;
}

  • ìš©ìƒ�훈 - 세 정수 정렬하기


#include<stdio.h>
int main()
{
	int a,b,c;
	int d;

	scanf("%d %d %d",&a,&b,&c);

	if(a>b)
	{	
		d=b;
		b=a;
		a=d;
	}
	if(b>c)
	{	d=c;
		c=b;
		b=d;
	}
	if(a>b)
	{
		d=b;
		b=a;
		a=d;
	}
	
	if(a==b || a==c || b==c )
	{
		printf("Impossible");
	}
	else printf("%d %d %d",a,b,c);

	return 0;
}		

4.3.4. 2주차 과제

  • 한ì›�표 -윤년 íŒ�단하기

#include<stdio.h>
int main(void)
{
	unsigned int y;
	scanf("%u",&y);
	if(y%400==0) {
		printf("Leap\n");
		return 0;
	}
	if(y%100==0) {
		printf("Normal\n");
		return 0;
	}
	if(y%4==0){
		printf("Leap\n");
        }
        printf("Normal\n");
	return 0;
}





  • ìš©ìƒ�훈 - 윤년íŒ�단하기

#include<stdio.h>

int main()
{
 long long n;
 bool t = 0; 

 scanf("%lld",&n);
 
 if(n%4==0)
 {
  t = 1;
  if(n%100 == 0)
  {
   t = 0;
   if(n%400 == 0)
   { 
    t = 1; 
   }     
  }
 }
 if(t)
 { 
  printf("Leap");
 }
 else
 {
  printf("Normal");
 }
 return 0;
}

4.4. 3주차(4/3, 4/4 한�표 보강)


  • ê°œì�¸ì •ë³´ 털기 Ice Breaking

4.4.1. ICE breaking


  • ë°•ë�„ê±´ - 게임했습니다. 카트ë�¼ì�´ë�” 했습니다. 1주ì�¼ ë‚´ë‚´. 프로그래ë°�했습니다. map editor만드는거 굉장히 노가다ì—�ìš”. 빡ì³�ìš”. í•™êµ�수업ì�€ 선대가 매우 ì§œì¦�나요. C는 할만해요. êµ�수님ì�´ í›…í›… 지나가는ë�° ì „ ìƒ�관없ì�Œ. 나 좀 짱임. 고등학êµ� 친구들과 만나서 막창고기 먹ì�Œ. ë�¼ì§€ ë�˜ê² ì�Œ.

  • ìš©ìƒ�훈 - 과제ì—� 치여살ì�Œ. í•™êµ� ì§œì¦�남. 고등학êµ� 친구 ì‚´ì§� 만나고. 주ë§�ì—�는 MT를 빠지고 할머니 ëŒ�ì—� 갔습니다. 참잘했어요. 그리고 가족들 외ì‹�했었ì�Œ. 과제했ì�Œ. 소설ì�´ë‚˜ ìž�기계발서 ì�½ëŠ”ê±° 좋아해서 그거 ì�½ê³ . ìš´ë�™í–ˆìŠµë‹ˆë‹¤. 매ì�¼. 달리기. 웨ì�´íЏë�„ 하고 삽니다. ì „ ê±´ê°•í•´ 질꺼ì—�ìš” 뿌잉뿌잉 *^^*

  • 김준ì„� - ì•„ì�´íŒ¨ë“œ 개발ì�„ 하는ë�° ë�°ë“œë�¼ì�¸ì�€ 지났어. 그래서 êµ�수님께 사과메ì�¼ì�„ 보냈어. 그리고 캡스톤 설계실ì—�서 새로운 프로ì �트를 제안ì�„ 받습니다. ì›�래 댄스스í�¬ì¸  ë�™ì•„리를 하고 있는ë�° 발레를 배우게 ë�¬ì�Œ. 수요ì�¼ë§ˆë‹¤ ìš´ë�™ê³¼ ê±´ê°• ì¡°êµ�활ë�™ì�„ 하고 있고 목요ì�¼ì�€ êµ�수님 애를 ë´�줌. ì–´ì œ ì§€ì�¸ì¤‘ì—� ìƒ�당한 ë„ì�´ 있어서 밤새서 지켜주고 한빛 리ë�”스ì—�서 ë�…후ê°�쓰는거 í–ˆì�Œ. 휴학ìƒ�ì�¸ë�° í•™êµ�ì—� 24시간 있고 ì˜�ì–´í•™ì›� 10시ì—� ì�¼ì–´ë‚˜ëŠ”ê±° 너무 힘듬. 난 아침ì—� 못ì�¼ì–´ë‚˜~ 그리고 새싹 강사들 êµ�육하는 ê±° 4타임 너무 귀찮ì�Œ=ã…‚= 강사가 못알아 먹어!!!! ë­� 여튼 ì›�표ë�„ 와서 4시간 와서 ë°°ìš°ê³  ê°”ì�Œ. ì�¼ì£¼ì�¼ì�´ ë€ì¡±í•¨. 시간ì�„ 대출해줘!

4.4.2. 사진

4.4.3.1. 한�표 보강 수업(2012/4/3, 4/4)

  • 변수타입 - C언어는 고급언어ì�´ë‹¤. 왜ëƒ�. 사람ì�´ 쓰기 좋게 만들기때문ì�´ë‹¤. 편하게 만들어주는 것중 하나가 변수 타입ì�´ë‹¤. int는 정수, char는 문ìž�, float는 실수. ì°¸ 편하지 않ì�€ê°€? 사람ì�„ 위해 만들어진것ì�´ë‹¤. 언제까지 0ê³¼ 1로 대화할í…�ê°€?

  • if문

   int a = 5;
   if(a >3){
      printf("a가 3보다 �니다.\n");
   }
   else printf("아니면 �고.\n");
  • for문

   for(1번,2번,4번){
       3번들;
   }

   for(i = 0;i<5;i++){
   }

  • while문

    a = 5;
    while(a>3){
        a--;
    }
    printf("%d",a);


  • ì—°ì‚°ìž� 집단 +-*/% ||&& != == <= >= ~^&| ++i i++
    • +-*/% 사칙연산 ë°� 나머지
    • || && 논리 ì—°ì‚° : ||는 한쪽만 ì°¸ì�´ì–´ë�„ ì°¸ì�„ 뱉어냄 &&는 양쪽ì�´ ì°¸ì�´ì–´ì•¼ì§€ ì°¸ì�„ 뱉어냄
    • != == <= >= 비êµ� ì—°ì‚°ìž� : 설명 ìƒ�ëžµ
    • ~^&| 비트 ì—°ì‚°ìž� : char 예제로 1byte -> 8bit ~ì�€ 0ê³¼ 1ì�„ 바꾸는것 ^는 같으면 ê±°ì§“ 다르면 ì°¸ &는 양쪽ì�´ 1ì�´ì–´ì•¼ì§€ 1 |는 한쪽만 1ì�´ì–´ë�„ 1로 서로 계산함.
    • 괄호 ()를 치면 우선순위가 바뀌는건 당연지사
    • ++i 와 i++는 i = i +1;ê³¼ 같지만 다른 명령문과 ê°™ì�´ 실행ë� ë•Œ 다른결과를 ë³´ì—¬ì¤�니다.

  • 함수 : 사용ìž�ì�˜ í–‰ë�™ì�„ ì�´ë¦„으로 ì¶”ìƒ�화해서 계ì†� 쓰는 반복ì�„ 줄여준다.
  • 변수가 저장ë�˜ëŠ”ê³³ : 변수는 메모리ì—� 저장ë�˜ëŠ”ë�° int는 4byte 저장공간ì—� 저장ë�œë‹¤ 그리고 그것ì�˜ 보관장소는 ì–´ë–¤ 주소값(address)를 가진다.
  • í�¬ì�¸í„° : í�¬ì�¸í„°ë³€ìˆ˜ëŠ” 32bit 버전 컴파ì�¼ëŸ¬ì—�서 4byte 64bit 버전 컴파ì�¼ëŸ¬ì—�서 8byteì�˜ í�¬ê¸°ë¥¼ 가집니다. 어떤타입ì�´ë“  ë§�ì�´ì£  (void *), (int *), (float *) 모ë‘� ë§�ì�´ì—�ìš”. int *a는 4byte를 할당받고 aì—�는 주소값(address)ì�„ 가지게 ë�©ë‹ˆë‹¤. í�¬ì�¸í„° (*)를 ë¶™ì�´ê²Œ ë�˜ë©´ ê·¸ 해당 주소가 가르키는 ê°’ì�„ 찾아가게 ë�˜ì£ . int형 ê°’ë§�ì�´ì—�ìš” 그러니까 4byteë§Œ 찾아오겠죠?
  • 함수가 사용ë� ë–„ C는 기본ì �으로 Call-by-value를 사용합니다. í•­ìƒ� 값복사를 통해 변수ì�˜ 값들ì�„ 전달하죠.
  • Call-by-value, Call-by-reference 예제


#include<stdio.h>

void swap(int a, int b){
   int temp;
   temp = a;
   a = b;
   b = temp;
}

void swap2(int *a, int *b){
   int temp;
   temp = *a;
   *a = *b;
   *b = *temp;
}

int main(){
   int i=3,j=5;

   swap(i,j);
   printf("%d %d\n",i,j);
   swap2(&i,&j);
   printf("%d %d\n",i,j);
   return 0;
}

  • 위와 ê°™ì�´ 함수 ì¶”ìƒ�í™”ì�˜ 완성형ì�€ Call-by-reference를 ì�´ìš©í•œ 전달입니다. 잊지마세요!
  • 함수ì�˜ ì¶”ìƒ�화와 ë�”불어 중요한건 함수ì�˜ 목ì �ì—� 따른 ì�´ë¦„짓기(naming)입니다. 함수 ì�´ë¦„ì�„ ë³´ê³  ìš©ë�„를 파악할 수 있어야ë�˜ìš”!
  • ë°°ì—´(array)는 ê°™ì�€ 타입ì�„ 한꺼번ì—� 관리하게 í•´ì¤�니다 int a[10];ì�´ë�¼í•˜ë©´ a는 int형 10개가 ìƒ�겨있고 0~9까지ì�˜ ì�¸ë�±ìФ(index)를 지니죠.
    • aì�´ë¦„ì—�는 첫번째 주소가 들어가있습니다. scanf("%d",a); 는 ì�´ ë°°ì—´ì�˜ 첫번째 a[0] ì�„ 가리키게 ë�˜ì£ .
    • ë°°ì—´ì�˜ a[2] 는 ì�´ê²ƒê³¼ 같습니다 *(a+2)

  • 구조체와 typedef
    • 구조체는 사용ìž�ê°€ 타입ì�„ ì •ì�˜í•´ì„œ 변수처럼 쓸수 있게 만들어주는것 입니다!
    • typedef는 typedef ì •ì�˜í• ê²ƒ ì�´ë¦„; 형ì‹�으로 ì •ì�˜í•˜ì—¬ ì§„ì§œ 타입처럼 간단하게 쓰는ê²�니다.

///typedef를 쓴경우
typedef struct _CALORIE{
	char name[40];
	float value;
}CALORIE;

CALORIE myfood;

�름과 실수형 값� 가진 CALORIE�는 타입� 만든 예제

  • 구조체와 함수 - 구조체ë�„ 다른변수와 마찬가지로 Call-by-value와 Call-by-referenceë°©ì‹�으로 넘기게 ë�©ë‹ˆë‹¤.

 valuefunc(myfood);
 referencefunc(&myfood);

  • í�¬ì�¸í„°ì™€ 함수와 구조체
    • 구조체는 ì�¸ìŠ¤í„´ìŠ¤ê°€ 주소값 참조형ì�¼ë•Œì™€ ì�¼ë°˜ 선언시 다른 모양으로 ë€ë¦…니다.

CALORIE a;
CALORIE *b = &a;

scanf("%s, %f",a.name,&(a.value)); //a.name� 입력과 a.value� 입력� 다른것� 주�! �건 배열과 �반변수와� 차���서 설명했습니다.
printf("%s %.2f\n",a.name,a.value); //그냥 불러오기
printf("%s %.2f\n",b->name,b->value); //->참조형으로 불러오기

  • 코드 ë„ì„�


///pcal� �� 40개가 들어갈수 있는 구조체 배열� 주소값� 넘겨받는다고 정�합시다.
///num� ��� 들어가있는 갯수를 뜻합니다.
float calcalc(CALORIE *pcal, int num){
	char name[40];
	float gram = 0;
	float totalcal = 0.0;
	int i;
	printf("-- �품명 �람 -------------\n");
	for(i = 0; i<num;i++) //갯수만� 출력합니다
		printf("%s\t", (pcal+i)->name); //�름�. 출력합니다
	printf("\n----------------------------------------\n");
	while(1){
		printf("�품명(end를 입력하면 계산합니다.) : ");
		scanf("%s", name);
		if(strcmp(name, "end") == 0)
			break;
		printf("그램 수 : ");
		scanf("%f", & gram);
		for(i=0;i<num;i++){
			if(strcmp(name, (pcal+i)->name) == 0){
				totalcal += (pcal+i)->value * gram /100.0;
				break;
			}
		}
	}
	return totalcal;
}	

4.4.3.2. 박�건 용�훈 수업(2012/4/8)


  • 한ì›�표 수업과 ê°™ì�Œ
  • 둘다 잘알고 있어서 ê°œë…�ì �ì�¸ ë€ë„ì�„ 설명하고 지나ê°�
  • 함수형 í�¬ì�¸í„° 설명 - 함수ì�˜ ì�´ë¦„ì—�는 주소값ì�„ 가지고 있어서 í�¬ì�¸í„°ë¡œ 제어할 수 있다.
  • 함수는 변수가 남아ë�„ 실행ì�´ ë�œë‹¤?

#include<stdio.h>

int func(){
   return 0;
}

int main(){
   printf("%d\n",func(1,2,3,4)); 
   return 0;
}

  • ë°•ë�„ê±´ê³¼ ìš©ìƒ�훈 멘붕하는거 ë´„

4.4.3.3. 박�건 �율 학습


  • 게임ì�„ 만들때 ì�´ë¯¸ì§€ë¥¼ 그린다. 200개가 넘는 그림ì�„ 어떻게 제어할 것ì�¸ê°€ë¥¼ 논함.
    • C++ì�´ë�¼ë©´ ì�´ë¯¸ì§€ë¥¼ 그리는 ê°�체를 Templete로 만들어서 paint()함수ì—� 그래픽 *를 넘겨서 ìž�기가 알아서 그리게하는것ì�´ 좋다. listì—� 넣고 for문만 ë�Œë¦¬ë©´ ë��나니까

  • Threadì—� 간한 간단한 설명

4.5.1. 한�표 보강

  • 파ì�¼ 입출력ì�´ 왜 필요한가 설명함

  • ìš´ì˜� 체제와 메모리(파ì�¼ í�¬í•¨)ì�˜ 관계를 설명
    • ìš´ì˜�체제는 파ì�¼ 시스템ì�„ 관리합니다. 관련해서 ì�´ë²ˆì—� 가르ì³�주는것ì�€ *(í�¬ì�¸í„°:Pointer)관련해서 FILE 구조를 메모리 참조를 통해서 하는것ì�„ 알려주게 ë�˜ì—ˆìŠµë‹ˆë‹¤. 파ì�¼(File)ì�€ 메모리주소로ë€í„° 시작ë�˜ê³  ìš´ì˜�체제를 ì�´ë¥¼ 관리하기 때문ì—� Cì—�서 ì§€ì›�하는 ë�¼ì�´ë¸ŒëŸ¬ë¦¬ë¥¼ 통해 ìš´ì˜�체제로 ë€í„° 파ì�¼ì�„ 관리하는 정보를 가진 FILE 구조체를 불러오게 ë�©ë‹ˆë‹¤. 그래서 우리는 *를 통해 주소값ì�„ ë”°ë�¼ê°€ì„œ FILE구조체로 ê·¸ 정보를 얻어오게 ë�˜ì£ . Good Good!
    • 기본 파ì�¼ 구조체ì—�는 대략 ì�´ëŸ°ì •ë³´ê°€ 들어가게 ë�©ë‹ˆë‹¤. 파ì�¼ 경로, ì�´ë¦„, í�¬ê¸°, 현재 얼마나 ì�½ì—ˆëŠ”ì§€. ìž�세한 사항ì�€ http://winapi.co.kr/clec/cpp2/17-2-1.htm ì—� 들어가면 있답니다.
    • 절대 경로와 ìƒ�대경로. '절대 경로'는 ìš´ì˜�ì²´ì œ 기준으로 ìš´ì˜�체제가 ì ¤ 세ë€ë¡œ 나눠주는 드ë�¼ì�´ë¸Œë¥¼ 비유해서 설명해주었습니다. ìš´ì˜�ì²´ì œ 기준으로 C:\\Desktop\test.txt 를 ê°™ì�€ í�´ë�” 프로그램으로 불러와봅시다. 잘불러와지네요? 하지만 C:\\Desktop\오리\test.txt 로 ì € txt파ì�¼ê³¼ 프로그램ì�„ 옮기면 실행ì�´ ë� ê¹Œìš”? 안ë�˜ì£ ? ê°™ì�€ í�´ë�”ì—� 있는ë�°ë�„. 그럼 어떻게 해야할까요? 그래서 ìƒ�대경로 ë�¼ëŠ”ê²ƒì�´ 나왔습니다. .\test.txt ë©´ ê°™ì�€ í�´ë�”ì—� 있는 test파ì�¼ì�„ 찾고. ..\test.txt 는 바로 위 ìƒ�위í�´ë�”를 찾습니다. 다른í�´ë�”는 어떻게 하나고요? .\오리\test.txt 로 설정하면ë�˜ì£ . ìƒ�대 경로는 해당 실행파ì�¼ 기준으로 파ì�¼ 위치를 ì¶”ì � 하는것ì�´ëž�니다.
    • 예제를 통해 파ì�¼ 입출력 스트림ì�„ 표현해주었지요.
    • stdin, stout. 표준 입출력ì�„ ì§€ì›�해주는 스트림입니다. fprintf와 printê°€ 똑같ì�´ ì“°ì�¼ìˆ˜ 있는 예제를 보여주었죠.

#include <stdio.h>

int main(){
   int a;
   fprintf(stdout,"%d",5);
   printf("%d",5);
   fscanf(stdin,"%d",&a);
   scanf("%d",&a);

   return 0;
}


  • 리다ì�´ë ‰ì…˜ > 표시는 현재 출력ì�„ 다른곳으로 ë�Œë¦´ë•Œ 쓴다고 했죠. 현재 ì�´ test.exe파ì�¼ì�„ 실행시키면 5를 출력한다고 합니다
    윈�우� CMD�서 �파�� 리다�렉션� 통해 test.txt로 출력� 시켜보겠습니다

 test.exe > test.txt
를 하면 test.txt �는 5가 들어가게�니다.

  • 한ì›�표 과제
    Gitì�„ ê³µë€í•´ì„œ Repository를 만들고 Readme파ì�¼ì�„ 올려서 다ì�Œì£¼ì—� 보여주기.

4.5.2. 용�훈, 박�건


  • 한ì›�표와 ê°™ì�Œ.
  • ë‘�명ì�˜ 목표ì—� 대해 얘기함.
  • ìš©ìƒ�훈ì�€ iOS개발ì�„ í•´ë³´ê³  싶다고함. 경험시켜주기 위해 고한종 ì¡°ì�¸.
  • ë°•ë�„ê±´ì�˜ 프로그램 ë´�줌.
    • Scrollì�„ 옮길때 ë°±ë„률ì�´ 잘못ë�˜ì—ˆëŠ”ë�° %를 ì�¨ì„œ 제대로 ìž‘ë�™í•˜ì§€ 않ì�Œ
    • ë°±ë„률 ê³µì‹� (x/최대값) * 100 ì�„ 했는ë�° 안ë�¨. ì›�ì�¸ì�€ int로 ë�˜ì–´ 0ì�´ ìž�꾸 리턴ë�˜ì„œ 그랬ì�Œ. 그래서 (float)(x/최대값) * 100ì�„ ì§‘ì–´ë„£ì�Œ.

4.6. 5주차(2012/4/18)

 

4.6.1. 박�건, 용�훈 참�


  • 질문 : ìš©ìƒ�훈 -> ì œ ì�¸ìƒ�ì—� 대해 알고 ì‹¶ì–´ìš”. ìž�ì‹ ê°�ë�„ 없는것 같고요.
    • 답변 : 지금ì�€ 알수 없지만 ë§Žì�€ê²ƒì�„ 경험해 보았으면 좋겠습니다. 지금 ì�´ê²ƒì�´ 아니ë�¼ë©´ 지금 달려나갈길ì—� 대해 신경쓰고 ìž�ì‹ ê°�ì�„ 가졌으면 좋겠습니다. 순ìž�ì�˜ 성악설과 ì›�효대사ì�˜ 해골바가지를 예를 들면서 ìž�ì‹ ì�˜ 마ì�Œì�€ ë§�그대로 마ì�Œë¨¹ê¸°ì—� 달렸다고 ë§�했죠. 위선ì�˜ 한ìž� ì •ì�˜ëŠ” 僞善! 하지만 ê±°ì§“ 위(僞)는 단순히 ìž�ì‹ ì�˜ ì•…(惡)ì�„ 위해 ì†�ì�¸ë‹¤ëŠ” ê°œë…�ì�´ 아닙니다. 사람ì�´ 사람ì�„ 위해 ê±°ì§“ì�„ 행하며 사람ì�˜ 마ì�Œìœ¼ë¡œ ì•…(惡)ì�„ 다스려 ì„ (å–„)ì—� 넣는것ì�„ ë§�하게 ë�©ë‹ˆë‹¤. 위선ì�„ 단순히 거짓으로 ìƒ�ê°�하지 ë§�란 얘기. 그래서 사람간ì�˜ 예절ì�´ë‚˜ 규율 법칙ì�˜ 기반ì�´ ìƒ�기게 ë�¬ì£ (ì�´ 얘기는 주제ì—�서 벗어난 딴얘기 입니다). 몸ì�´ 먼저ëƒ� 마ì�Œì�´ 먼저ëƒ�를 정하지 마세요. ìš°ì„  í•´ë³´ë©´ ìž�연스럽게 ë”°ë�¼ì˜¤ê²Œ ë�˜ê¸°ë�„한답니다. 필요하다면 Just do it! 하지만 ì�´ê²Œ í•­ìƒ� 옳ì�€ê±´ 아니죠. ì„ íƒ�ì�€ ìž�유. 능력치ì�˜ 오ê°�형ë�„ 보여주었죠. 다른사람ì�´ 가지지 못한 장ì �ì�„ 당신ì�€ 가지고 있습니다. Whatever! 힘들때는 ìƒ�담하는것ë�„ 좋고 시간ì�„ 죽여보는것ë�„ 한방법입니다. í•­ìƒ� 당신ì�´ 중요한거죠.

  • 질문 : ë°•ë�„ê±´ -> OOP란 무엇ì�¸ê°€ìš”?
    • 답변 : ê°�ì²´ 지향 프로그래ë°�(Object Oriented Programming)입니다. 프로그래ë°� 설계 기법ì�´ì£ . ì „ì—�ë�„ 얘기했듯ì�´ 프로그래ë°� 설계 기법ì�€ 프로그래머ì�˜ 설계를 ë�„와 코드ì�˜ 반복ì�„ 줄ì�´ê³  유지보수성ì�„ 늘리는ë�° 있습니다. 하지만 ìƒ�산성ì�´ 있는 프로그래머가 ë�˜ê³ ì‹¶ë‹¤ë©´ API를 ì“°ê³  알고리즘ì�„ 병행해서 ê³µë€í•´ì•¼ ë�œë‹¤ëŠ”ê²ƒì�„ 알리고 싶습니다. 그리고 단순히 Class를 쓰는것과는 다른기법입니다. ê°�ì²´ 지향ì �으로 설계ë�œ C++ì�´ë‚˜ Javaì—�서 Class를 쓰기때문ì—� Class를 쓰는것ì�´ ê°�체지향으로 알고있는 사람들ì�´ 많습니다. 그건... 아니죠. 절차지향 프로그래ë°�ê³¼ 다른ì �ì�€ 차차 가르ì³� 드리겠습니다. Cì—�서 Class란 ê°œë…�ì�´ 설계ìƒ�으로 발전했는지 알려드렸습니다. 함수 í�¬ì�¸í„°ì™€ 구조체였죠. 그게 ì›�형입니다.

  • 질문 : ë°•ë�„ê±´, ìš©ìƒ�훈 -> 저급 언어는 왜 필요한가요?
    • 답변 : 플래시 프로그래머가 1억개가 넘는 ë°°ì—´ì�„ 선언하는 미친짓ì�„ 한다고 해봅시다. ì�´ 사람ì�´ 1억개가 넘는 ë°°ì—´ì�„ 선언하고 ë�Œë¦¬ë©´ 컴퓨터가 ê°�당ì�„ 할수 있ì�„까요? ì�´ê²Œ 왜 뻗는지 ì�´í•´ë¥¼ 못하죠? 여러ë„ë�„ 마찬가집니다. 지금 C는 저급언어ì—� 조금 가까운 편ì�´ë�¼ 메모리 관리가 ë³´ì�´ì§€ë§Œ 스í�¬ë¦½íŠ¸ë§Œ 개발해본 개발ìž�나 방금 ë§�한 플래시 프로그래머는 ì�´í•´ë¥¼ 못하죠. 메모리ì�˜ 효율ì �ì�¸ 관리와 최ì �화를 위해 필요하다고 간단하게 요약할수 있겠네요.

  • 질문 : ë°•ë�„ê±´, ìš©ìƒ�훈 -> 플래시 프로그램ì�€ 왜 쉬운가요?
    • 답변 : Windows API를 ì�¨ë³¸ë‹¤ë©´ ì�´í•´í•˜ê² ì§€ë§Œ 윈ë�„ìš°ì°½ ë�„우는ë�° 30줄ì�´ 넘는 코드가 필요하죠? 한줄로 보여드립니다. javascriptì—�서 alert(5)를치면? ë”± 뜨죠? ì°¸~~ 쉽죠?



  • SVNì�„ 설치시킴
    • SVN ê±°ë¶�ì�´ë¥¼ ì�´ìš©í•˜ì—¬ http://nforge.zeropage.org/svn/coordinateedit ì—� 코드를 올리는것ì�„ 올려놓ì�Œ. ë�„ê±´ì�´ 프로그램ì�„ 그곳ì—� 올려놓고. ê³ ì³�서 올려놓ì�Œ. 받는건 숙제!!! 신남.

  • ë°•ë�„ê±´ 프로그램 ë´�줌
    • for문ì�„ 사용하여 ì�´ë¯¸ì§€ë¥¼ 그리는ë�° for문안ì—�서 for문ì�„ 탈출하는 조건으로 걸어놓ì�Œ. 그래서 ì�´ë¯¸ì§€ ìž�ì²´ê°€ 안그려ì§�.
    • if문으로 ì�´ìš©í•˜ì—¬ ê°’ì�´ 0 밑으로 내려가면 0으로 초기화를 시키면 잘 그려ì§�. ì�´ë²ˆì—�ë�„ 성공!

4.7. 5월 23�


  • ë�„ê±´ì�´ì™€ 함께하는 ìž�바스í�¬ë¦½íЏ 웹 게임만들기! 거지같어.

4.7.1. 수업 내용



<html>
<head>
<script language = "javascript">

left = 10;

function key(){
	var image=document.getElementById("demo");
	image.style.position="absolute";
	
	alert(left);
	left += 1;
	image.style.left = left; //왜 �미지�서 left를 바로 뽑아내지 않�면. left가 문�열로 ���나 보기대문�다.
	//image.style.left=(left+1)+'px';
	//var l=document.getElementById("demo").style.left += 1;
	
}
	
</script>

</head>

<body onKeyDown='key();'>

<img src = "1.jpg" id="demo" top = 10 left = 10>


</body>
</html>

4.7.2. 다�시간


  • 타ì�´ë¨¸ì™€ ì—°ë�™í•´ì„œ ì�´ë¯¸ì§€ê°€ ìž�ë�™ìœ¼ë¡œ ì�¼ì •시간ë�™ì•ˆ ì�´ë�™í•˜ëŠ” javascript를 작성

4.7.3. �금�


  • ì�´ë¯¸ì§€ë¥¼ ì�¼ë€ë§Œ 출력가능한지

4.8. 5월 24�


  • ìƒ�훈ì�´ì™€ 함께하는 새싹êµ�실

4.8.1. 수업내용


�바 <-> Objective - C?

고민중

�바 스�립트 -> 

	- �바를 배워� �는것 같고.

	- �바�서 Web View를 추천합니다.

Cê³µë€ë¥¼ 심ë�„있게하고싶다.

 -> Opensource 뒤지기 프로�트

소스를 보면 안는� �� 안��

 -> 다 외울 필요는 없다. 레�런스를 만들어�.

오늘 �금한거

Sort 신난다.

	- Bubble Sort
	- Quick Sort를 배우고 싶다. 소스를 찾아서 짜보고
		-> 다�시간� 가져와.
#include<algorithm.h>

quicksort( );


  • Javascript 실행해보기
    • 메모장으로 Html파ì�¼ì�„ 만듬 -> 안ì—� 소스를 ë„£ì�Œ
  • Javascript 학습ì�€ http://www.w3schools.com/js/default.asp ì—�서 해주세요.


<html>
<body>

<script type="text/javascript">
	document.write("<p>My first paragraph</p>");
</script>
</body>
</html>

4.8.2. 과제


  • Quick Sort 짜보기
  • APM 깔아오기
  • JavaScript 해보기

4.9. 5월 31�


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void main() {
	int i,j,Input;
	int temp;
	int count = 0;
	int a[10] = {0,};
	srand(time(NULL));
	printf("초기 ��터\n");
	
	/*
	for(i=0;i<10;i++) { // 숫� 10개 랜� �성
		a[i] = rand()%10+1;
		printf("%3d", a[i]);
	}
	*/
	do{
		temp = rand()%10+1;
		for(i = 0;i<10;i++){
			if(a[i] == temp){
				temp = rand()%10+1;
				i = -1;
			}
		}

		a[count++] = temp;

	}while(count != 10);
	for(i = 0;i<10;i++)
		printf("%d ",a[i]);


	
	puts("\n---------------------------------");


	/*
	for(i=0;i<10;i++)
	{
		for(j=0;j<9;j++)
		{
			if(a[j]>a[j+1])
			{
				temp = a[j];
				a[j] = a[j+1];
				a[j+1] = temp;
			}
		}
	}버블소트
	*/
	/*
	for(i=0;i<10;i++)
	{
		for(j=i+1;j<10;j++)
		{
			if(a[i]>a[j])
			{
				temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}
		}
	}선� 소트
	*/

	for(i=0;i<10;i++) { // 결과 출력
		printf("%3d", a[i]);
	}
	puts("");
	
}
  • 과제 : APM 깔아오기, 소트(버블, ì„ íƒ�) 5개짜리 ë°°ì—´ 예제를 만들고 ì†�으로 정렬해오기.


#include<stdio.h>

int factorial(int n){
	if(n == 1) return 1;
	return n * factorial(n-1);
}

int summary(int n){
	if(n == 1) return 1;
	return n + summary(n-1);
}


int main(){
	
	int i,j,sum = 0, fact =1;
	int input = 5;

	for(i = 1; i <= input;i++){
		sum += i;
		fact *= i;
	}

	printf("sum : %d, fact : %d\n",sum,fact);

	sum = 0 ; fact =1;

	fact = factorial(input);
	sum = summary(input);

	printf("sum : %d, fact : %d\n",sum,fact);

	

	return 0;
}
  • 숙제 : ì†�으로 ì�¨ì˜¤ê¸°.

4.10. 6월 1�


  • ë°•ë�„ê±´ Part
    • 복습

<html>
<head>
<script language = "javascript">

left = 10;
imagename = 1;

function key(){
	var image=document.getElementById("demo");
	image.style.position="absolute";

	if(imagename == 4){
		imagename = 1;
	}	
	alert(left);
	left += 1;
	
	image.src = imagename + '.jpg';
	imagename = imagename + 1;
	image.style.left = left;
	//image.style.left=(left+1)+'px';
	//var l=document.getElementById("demo").style.left += 1;
	
}
	
</script>

</head>

<body onKeyDown='key();'>

<img src = "1.jpg" id="demo" top = 10 left = 10>


</body>
</html>

  • ì�´ë¯¸ì§€ 변경ë�˜ëŠ” 기능 추가.

  • Javascript게임ì�€ Tiny Farm? ë†�장 게임ì�„ 만들ë�„ë¡� í•´ë³´ìž�.
    • ìš°ì„  저장 기능 없는거 -> ìš°ì„  ë¹¼ìž�. 서버 ??? 미쳤ëƒ�. 쿠키?? ì•„ 힘들어. 패스
      �건�� 작� �장

  • -> 위ì—�서 ë´�야함.
    -> keyword : javascript image resize crop
    -> http://charism.tistory.com/44
    -> �미지 레�어 : http://www.jsmadeeasy.com/javascripts/Images/img_layer/img_layer.htm

    -> 시작� 합니다.
    -> 작물� 키우는 공간� 5 by 5 좌표 설정
    -> 누르면 작물� ��니다.
    -> 대마, 양귀비, 마리화나
    -> 작물들� 시간� 따� ��납니다. => Timer를 �용.

    -> 좌표를 �릭하면. jAVASCRIPT �체가 �겨서 시간� 따� �미지가 변해.

    -> 투명� 예제 : http://findfun.tistory.com/348
    -> 특정 색 투명처리 : http://jpjmjh.blogspot.kr/2010/02/ie6-png-투명처리-하기.html

4.11. 6월 7�

4.11.1. 검사

  • 숙제 미í�¡ => 앞으로 알고리즘 하면 ì†�으로 ë°°ì—´ì�´ 변하는것ì�„ ì�¨ì˜¬ê²ƒ. 해온건 잘했ì�Œ.
  • APM 설치완료 => 블로그 ë³´ê³ . 사용법 ì�µížˆê¸°. APM_SETUPí�´ë�”ì—� htdocsí�´ë�”ì—� index.html 건들고 오기.

4.11.2. 수업


  • prime 넘버 찾는 알고리즘 구하기.
    //�바 코드
    public class MyTest {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		///prime 넘버는 1과 �신� 제외하고 나눠지지 않는 수. 
    		int count = 0;
    		boolean flag = false;
    		
    		for(int i = 2; i< 1000; i++){
    			
    			flag = true;
    			for(int j = 2; j<i; j++){
    				if( (i % j) == 0) flag = false;
    			}
    			
    			if(flag == true){
    				System.out.println(i + "is prime Number!");
    				count++;
    			}
    			
    		}
    		System.out.println("Count : " + count);
    		
    	}
    
    }
    

4.11.3. 숙제


  • APM_SETUPí�´ë�”ì—� htdocsí�´ë�”ì—� index.htmlì�„ 하기. http://www.w3schools.com/js/default.asp 가서 javascript예제 index.htmlì—� 작성하고 ë�Œì•„가는것 확ì�¸.


5. 6월 13�

5.1. 용�훈

  • 함수í�¬ì�¸í„° 질문 : int *compare(int a, int b), function callì—� ì�˜í•œ stack(FILO : first in last out)ì�˜ ë‚´ë€ ë³€í™”. int형 í�¬ì�¸í„°ëŠ” int형으로 반환해야지?
  • Class얘기
  • 시험기간 : http://cau.ac.kr/~bongbong/c12/ 가서 final examì�„ 준비해ë�¼
  • 스í�¬ë¦½íЏ 언어가 나오는 ì�´ìœ  c언어 asam
  • http://www.ted.com/talks/view/lang/ko//id/799 우리가 게임ì�„ 해야하는ì�´ìœ .

5.2. 박�건

  • 홈페ì�´ì§€ë¥¼ 만들고 관리하려면 ë­�ë€í„° 배워야 하나요? HTMLë€í„° -> 서버사ì�´ë“œê¹Œì§€ 마ì�¸ë“œ ë§µì�„ 그려주기로 í–ˆì�Œ.
  • DIV태그안ì—� 문ìž�를 넣고 x,y좌표ì—� 출력시키는 함수를 짜고싶다.


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:47
Processing time 1.0582 sec