U E D R , A S I H C RSS

새싹교실/2011/데미안반

1. 참여자 명단

3/163/233/303/314/74/275/45/115/185/256/8
강소현 O O O O O O O O O O O
박성국 O O O O O O O O X O O
준영 O O O O O O O O O O

2. 수업

2.1. 1회차(3/16)

  • 수업시간 - 10:00 ~ 12:00

2.1.1. 수업내용

  • C언어의 역사
  • C언어의 장&단점
  • 프로그램 완성과정
  • 실습

/* Hello.c */
#include <stdio.h>
int main(void) 
{
  printf("Hello, World!\n");
  return 0;
}

2.1.2. QnA

  • 선형대수학을 배우는 유?
    • ApplicationDB그래픽스네트워크
      컴공 core자료구조알고리즘
      수학선형대수학산수학수치해석
      으로 위쪽으로 갈 수록 상위개념라 합니다. 선형대수학 때 배운 내용의 일부가 수치해석(3-1학기)에 들어있습니다. 그리고 그래픽스(4-1학기) 수업에서 수치해석을 전제로 수업을 합니다. 수업시간에는 선형대수학을 포기하라했었는데, C라브러리로 그래픽을 만드는 식의 컴퓨터 그래픽스 수업에 관심 있으신 분은 절대 포기하지 마세요 ㅎㅎ
  • 텅 빈 공간에 ; 를 해도 오류 없 실행되는 유?
    • ; 는 문장의 끝을 나타내므로, printf("Hello World"); 처럼 어디까지 내용 있다 나타내는 것처럼 빈 공간도 빈 공간 그대로 인식 되지 않았나 싶어요.
  • C언어의 단점 중 low-level적 특성으로 프로그래밍을 하는데 많은 주의를 요한다 했는데, 실제로 잘못 사용한 사례는?
    • 나중에 포인터를 사용하는 실습을 하다 보면 많은 깨달음을 얻을 수 있지 않을까 싶습니다...
  • printf를 왜 제일 처음 배우나요?
    • 아무래도 성과가 바로바로 눈에 보게 출력하여 확인할 수 있는 함수다 보니, 초보자가 바로 해하기 어려움에도 불구하고 처음에 배우게 되는 듯 합니다.
  • C언어 전 B언어 였는데 A언어도 있나요?
    • A언어 : ALGOL을 말합니다. 고급 프로그래밍 언어(어셈블리나 기계어를 저급 프로그래밍 언어라고 합니다)로 각광받던 포트란ForTran에 대항하기 위해 유럽을 중심으로 개발된 프로그래밍 언어입니다. ALGOL은 Algorithm Language의 약자로서, 름 그대로 알고리즘 연구개발을 위해 만들어졌습니다. 하지만 ALGOL은 특정한 프로그래밍 언어를 지칭하기 보다는 C언어나 파스칼과 같 구조화된 프로그래밍 언어를 지칭하는 말(ALGOL-like programming language)로 쓰입니다. 출처 링크! 클릭하세요:)
  • 기계어로 번역된 파일 .obj 파일인데 왜 상한 영어들로 되어있나요?
    • 메모장으로 열어서 글 깨졌어요 ㅠㅠ 연결프로그램을 Visual Studio로 하면 번역 정상적으로 되어있을거에요. 숫자가 010100 하면 너무 길어서 16진수로 표현 되어있는듯 합니다.

2.1.3. 후기

  • 준영 - C언어의 기초적인 내용에 대해 다시 배울 수 있었습니다. 생각나는거로는 %d가 생각나네요.
    아직 어렵지만 열심히 배우도록 하겠습니다. 소현누나 고마워요.
  • 강소현 - 열성적으로 질문을 해주어서 좋았습니다. A언어도 있는지의 여부를 물었었는데 저는 몰랐었는데 실제로 존재하더라구요 ㅎㅎ 가벼운 내용라도 의문 드는 사항라면 언제든지 위키나 문자로 질문해주면 최대한 답변을 달도록 노력하겠습니다. 다음 시간에는 전에 실습했던 것의 복습과 scanf 후로 나갈 예정입니다. PPT 준비에 디자인도 없 급하게 만든 티가 났었는데, 다음 시간에는 조금 더 준비를 해가겠습니다:)
  • 성국 - 수업 C프로그래밍 강의에서 해 안되었던 부분을 해 할 수 있게 도와졌어요^^ 앞으로도 모르는것 많 알려주세요~.

2.2. 2회차(3/23)

  • 수업시간 : 10:00 ~ 12:00

2.2.1. 수업내용

  • 입, 출력 함수 - printf, scanf
  • redirection
  • 연산자
    • 산술연산자 사용 예


#include <stdio.h> //printf 함수 사용
int main(void)
{
  int val1 = 4;
  int val2 = 2;

  printf("두 수의 덧셈: %d\n", val1+val2);
  printf("두 수의 뺄셈: %d\n", val1-val2);

  return 0;
  • 기타 대입 연산자 사용 예

#include <assert.h> //assert 함수 사용
int main(void)
{
  int val1 = 4, val2 = 2;
  val1 += 3;
  val2 *= 2;
  assert(val1 == 7); //val1 7인 경우 정상 종료, 아닌 경우 오류 출력
  assert(val2 == 4); //val2 4인 경우 정상 종료, 아닌 경우 오류 출력

  return 0;
}
  • 증가, 감소 연산자 사용 예

#include <assert.h> //assert 함수 사용
int main(void)
{
  int val = 10;

  assert(val++ == 10); //val++한 값 10과 같으면 정상작동. 아니면 오류 출력
  assert(++val == 12); //++val한 값 12과 같으면 정상작동. 아니면 오류 출력

  return 0;
}
  • 관계 연산자 사용 예

#include <assert.h> //assert 함수 사용
int main(void)
{
  int val1 = 10;
  int val2 = 12;

  assert(val1 <= val2); //val2값 val1값보다 크거나 같으면 정상작동. 아니면 오류 출력

  return 0;
}
  • 논리 연산자 사용 예

#include <assert.h> //assert 함수 사용
int main(void)
{
  int val1 = 10;
  int val2 = 12;

  assert(val1 < val2 && val2 == 12); //val2값 val1값보다 크고, val2값 12와 같으면 정상작동. 아니면 오류 출력
  assert(val1 > val2 || val2 != 11); //val2값 val1값보다 크거나, val2값 11 아니면 정상작동. 아니면 오류 출력

  return 0;
}

2.2.2. 과제

  • 산술 연산자 사용 예에서 val1과 val2를 곱셈, 나눗셈, 나머지를 구하는 것을 추가하여 출력해보자.
  • 기타 대입 연산자 사용 예에서 assert(val1 == 7); 를 assert(val1 != 7); 로 바꾸어 실행해보기.
  • 기타 대입 연산자 사용 예에서 -= , /= , %= 한 결과를 assert(val1 == 7); 와 같 assert함수 안에 넣어 확인하시오.
  • 증가 감소 연산자 사용 예에서 감소연산자를 사용한 예를 추가해보자.
  • 관계 연산자 사용 예에서 >= , != 가 사용되는 사례를 만들어보자(변수 val3 만들어서).
  • 실수(float)를 2개 입력받아(scanf), 앞서 받은 값 뒤의 값보다 크면 정상작동, 아니면 오류를 출력하도록 해보자(assert)

2.2.3. 과제제출


#include <stdio.h>

int main()
{
	int val1 = 4;
	int val2 = 2;
   
	printf ("%d\n",val1*val2);
	
	system("pause");

	return 0;
}
#include <stdio.h>

int main()
{
	int val1 = 4;
	int val2 = 2;

	printf ("%d\n", val1/val2);

	system("pause");

	return 0;
}
#include <stdio.h>

int main()
{
	int val1 = 3;
	int val2 = 2;

	printf("%d\n", val1%val2);

	system("pause");

	return 0;

}
#include <assert.h>

int main()
{
	int val1 = 4, val2 = 2;
	val1 += 3;
	val2 *= 2;
	assert(val1 != 7);//printf 도 안쓰고 값을 출력할 수 있다니 assert의 정체가 궁금 하네요.
	assert(val2 != 4);//수업시간에 자세히 알려주세요~
//음 그리고 거 실행하면 에러가 나는데 값 7과4 맞으니까 에러 안뜨지 안나요???
	return 0;
}
#include <assert.h>

int main()
{
	int val1 = 10, val2 = 8;
	val1 -= 3;
	val2 /= 2;
	assert(val1 != 7);
	assert(val2 != 4);

	return 0; //것도 오류 아닌거 같은데 오류가 나네요 (수업시간때 잘못된것좀 지적해 주세요)
}
#include <assert.h>

int main()
{
	int val1 = 4, val2 = 2;
	val1 %= 3;
	val2 %= 2;
	assert(val1 != 1);
	assert(val2 != 0);

	return 0; // 것도 오류가;;
}
#include <assert.h>
int main()
{
	int val = 15;

	assert(--val == 14);
	assert(val-- == 14);

	system("pause");

	return 0;
}
#include <assert.h>

int main()
{
	int val1 = 13;
	int val2 = 12;
	int val3 = 13;

	assert(val1 >= val2);
	assert(val1 != val3);

	return 0; //게 왜 오류가 뜨는지 알 수 없네요 ;; 그리고 main() 괄호 안에 void 넣든 안넣든
	//별상관 없는것 같은데 왜 void를 쓰죠???
}
#include <assert.h>

int main()
{
	float val1,val2;

	scanf("%d %d", &val1, &val2);

	assert(val1 < val2 && val2 == 12);
	assert(val1 < val2 || val1 != 11);

	return 0; //아 것도 오류가 안나야 되는데 오류가 나네요 음 근본적인 무언가가 틀린거 같아요.
	// 그리고 float란 실수를 정의해 주는건가요???
	// 경우엔 int를 안 써주는게 맞나요???
}

2.2.4. QnA

  • assert 문에서 오류가 난 유?

#include <assert.h>
int main()
{
	int val1 = 10, val2 = 8;
	val1 -= 3;
	val2 /= 2;
	assert(val1 != 7);
	assert(val2 != 4);

	return 0;
}
  • assert는 강하게 주장하다라는 의미로 위와 같은 경우 val1 7 아니다! val2가 4가 아니다! 라고 주장한다는 의미입니다. 하지만 val1값은 7고, val2의 값은 4니까 에러창을 띄워 주장 잘못됐다고 알려주는 거에요. 전체적으로 의문사항은 assert문보다는 !=의 의미를 잘 몰라서 그런 듯 합니다. == 는 같다, !=는 아니다라는 의미의 관계연산자입니다.
  • int main(void) 안에 void를 넣든 안넣든 상관없는 유?
    • 원래는 원칙상으로 void라고 명시해서 매개변수를 사용하지 않고 비어있다!!고 알려야하지만, 아무것도 안 쓰는 것도 비어있다는 의미로 허용해서 그렇습니다.

2.2.5. 후기

  • 성국 - 오늘 다양한 연산자에 대해 배우고 printf 와 scanf 에 대해 잘 해 할 수 있었어요. 감사합니다.^^
  • 준영 - 수업시간에 해가 잘안가던 printf랑 scanf를 배울 수 있어서 유익한 시간었습니다. 기타 연산자도 배울 수 있었습니다.감사합니다.
  • 강소현 - 4피에서 수업 없는 줄 알고 괜히 동했다가 다시 6피로 동하는 번거로운 일을 했었는데, 앞으로는 얌전히 6피에서만 수업을 해야겠어요. 수요일 11시부터 12시까지 딱 새싹 시간에 다른 수업 있는 줄 몰랐었어요 ㅠㅠ printf와 scanf에서 시간을 많 투자해서, 급하게 연산자를 쭉쭉- 설명하고 끝내느라 기억에 남지 않을 것 같습니다. 따라서 연산자에 관한 간단한 과제를 내어 익히도록 하겠습니다.(?!) 준비를 잘 해와야하는데, 계속 부족한 강의라고만 하는 것은 겸손 아니라 그냥 자기비하란 생각 문득 들었습니다. 그 동안 푸념을 들어주어 미안했고, 앞으로는 그런 일 없도록 할 것입니다.

2.3. 3회차(3/30)

  • 수업시간 - 11:00 ~ 12:00

2.3.1. 수업내용

  • #define 란?
    • 실행파일의 생성순서
    • 전처리기
    • 심볼릭(Symbolic) 상수
  • 터 저장을 위한 변수
    • 변수란?
    • 변수 선언 시 주의사항
    • 자료형

자세한 내용은 PPT에 있습니다:)

2.3.2. QnA

  • 2의 보수는 뭐고, 왜 사용하나요?
    • 2의 보수에 2의 보수에 대한 설명 있습니다. 왜 0000 0010 의 음수 형태를 1000 0010 으로 하지 않고, 2의 보수 형태인 1111 1110 을 사용했냐! 건 컴퓨터가 음수와 양수를 용한 계산을 편리하게 하기 위해 그런듯합니다. 2-2를 우리야 바로 0라고 계산할 수 있지만, 컴퓨터는 2+(-2)형태로 바꿔서 0000 0010 과 1111 1110을 더해 0000 0000 나오게 합니다. 컴퓨터에서 가산기를 사용하여 뺄셈을 하기 위해 음수의 표현으로 자주 사용된다라고 사전에 나오네요ㅠㅠㅋ

2.3.3. 후기

  • 성국 - 오늘은 전산처리기와 자료형에 대해서 배웠습니다. 자세히 몰랐던 #include<stdio.h> 등 어떤 역활을 하는지
알 수 있었어요. 또 int, char 등의 의미와 역활에 대해 알 수 있었습니다. 오늘 전산처리기와 자료형에 대해 배웠으니 다음은 본격적으로 프로그램을 짜는것을 배우겠다.^^
  • 준영 - 오늘 심볼릭 상수를 배웠습니다. const랑 define을 배웠어요. 먼지는 모르겠지만 나중에 암기하도록 하겠습니다.
그리고 자료형의 실수형/정수형 등등의 표현법을 배웠습니다. 평소 취약하던 부분었는데 오늘 해결될 수 있었습니다.
변수의 선언과 초기화시 유의할점도 알 수 있어서 유익했습니다. 무엇보다 앞으로 자주 쓰는 자료형인
char, int, float, double의 서식문자를 암기하도록 노력하겠습니다.
  • 강소현 - 1시간 늦췄지만, 학교 수업 전에 새싹 교실을 하는 것 부담 되는 듯 합니다. 내일 오후에 수업을 하면서 다시 시간을 정할 계획입니다. 오늘 배운 전처리기와 변수, 데터 타입을 끝으로 론 위주의 수업은 거의 없을 거에요! 앞으로 그 동안 배웠던 기본적인 것을 활용하여 열심히 실습을 해봅시다ㅋㅋ

2.4. 4회차(3/31)

  • 수업시간 - 18:00 ~ 19:00

2.4.1. 수업내용

  • 반복문
    • while

#include <stdio.h>
int main()
{
  int i = 1;
  while(i<=10)
  {
    printf("%d번째 출력\n",i);
    i++;
  }
  return 0;
}
  • do~while

#include <stdio.h>
int main()
{
  int i = 1;
  do
  {
    printf("%d번째 출력\n",i);
    i++;
  }while(i<=10);
  return 0;
}
  • for

#include <stdio.h>
int main()
{
  int i;
  for(i=1; i<=10; i++)
  {
    printf("%d번째 출력\n",i);
  }
  return 0;
}
  • 중첩 반복문
    • for

#include <stdio.h>
int main()
{
  int i, j;
  for(i=0; i<2; i++)
  {
     printf("j for문 실행 전 i값=%d\n",i);
     for(j=0; j<3; j++)
     {
        printf("여기는 안쪽 for문! j=%d\n",j);
     }
     printf("j for문 실행 후 i값=%d\n",i);
  }
  return 0;
}

2.4.2. 후기

  • 성국 - 오늘은 printf 를 쓰지 않고 for 과 while or do while을 사용하여 어떻게 문장을 반복하는지에 대하여 자세히 배웠다. 해가 차근차근 잘되어서 좋은 수업 었다.
  • 준영 - 반복문을 배웠습니다. for문과 while, do while 을 배웠는데 다 비슷한 문법 같습니다.
while을 중첩하는 방법도 배웠는데 매우 복잡한것 같습니다.
매우 유익한 시간었어요. 감사합니다.
  • 강소현 - 반복문은 괜찮지만, 중첩을 하면서 안드로메다로 간 듯 합니다. 다음 시간에 다시 중첩을 해보도록 하겠습니다. 좀 더 쉽게 설명할 방법 없을까 고민되네요 @ㅁ@;; 그리고...준영가 콩나물 잘 못먹는다는 의견을 무시하고 콩불을 먹으러 가서 죄송합니다ㅠㅠ 소수의 의견을 묵살하지 마세요!하면서도 가길래 ㅋㅋ 아...성국는 매운 거 잘 못 먹는 줄 몰랐고..저는 또 늦게 먹었다고 속쓰리고 ㅋㅋㅋㅋㅋㅋㅋ 래서 의견은 존중해줘야 하는 거였군요!!(?!) 앞으로는 모두의 의견을 종합하여 해결봐야겠어요 ㅠㅠㅠㅠㅋ

2.5. 5회차(4/7)

  • 수업시간 - 18:30 ~ 20:30

2.5.1. 수업내용

  • if, else if, else
  • switch, break, continue
  • if, switch, while 활용 사례

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int choice=0;//int형 변수 선언 및 초기화
	char day;//char형 변수 선언
	while(1)
	{
		printf("아침 기상\n");
		printf("성국는 아침으로(1:밥 2:김치 3:두부 4:삼겹살 0:다먹음) ");
		do
		{
			scanf("%d",&choice);//정수형 숫자 입력 받음
			switch(choice)
			{
			case 1:
				printf("밥, ");
				break;
			case 2:
				printf("김치, ");
				break;
			case 3:
				printf("두부, ");
				break;
			case 4:
				printf("삼겹살, ");
				break;
			case 0:
				printf("을(를) 먹었다.\n");
				break;
			default:
				printf("물, ");
				break;
			}
		}while(choice != 0);

		printf("그리고 학교에 갔다.\n");
		printf("수업을 대충 듣다 빠져나와서 성국는(1:당구장 2:PC방 3:술집) ");
		scanf("%d",&choice);//정수형 숫자를 입력받음
		switch(choice)
		{
		case 1:
			printf("당구장을 갔다.");
			break;
		case 2:
			printf("PC방을 갔다.");
			break;
		case 3:
			printf("술집을 갔다.");
			break;
		default:
			printf("어딜 가려하였으나 그냥 다시 수업을 하러 갔다.");
			break;
		}

		printf("다 끝나고 하숙집에 돌아가 저녁을 먹고 잤다.\n");
		printf("다음 날 평일었나?(y:yes n:no) ");
		fflush(stdin);//입력버퍼를 비워준다. '\n'도 문자로 인식하니까.
		scanf("%c",&day);//'%c'는 문자를 입력받음.
		if(day == 'n')
		{
			printf("주말니 집으로 내려갔다.\n");
			break;
		}
		system("pause");//일시정지
		system("cls");//clear screen
	}
}
  • 별찍기 예시

#include <stdio.h>
int main()
{
	int i,j,h;
	for(i=1;i<=10;i++)//10번 출력
	{
		for(j=1;j<=i;j++)//별 갯수
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

2.5.2. 과제

  • h를 입력받아 별을 출력하세요.
(ex)h=5일 때 출력 형태.
*****
****
***
**
*
  • h를 입력받아 O을 출력하세요.
(ex)h=5일 때 출력 형태.
    O
   OO
  OOO
 OOOO
OOOOO

2.5.3. 과제제출


#include <stdio.h>

int main()
{
	int i,j;

	for(i=1;i<=5;i++)
	{
		for(j=5;i<=j;j--)
			printf("*");
		printf("\n");
	}
	return 0;
}
#include<stdio.h>

int main()
{
	int i,j,h;

	scanf("%d",&h);

	for(i=0;i<h;i++)
	{
		for(j=1;h-i>j;j++) 
			printf(" ");
		for(j=0;i>=j;j++)
			printf("o");
		
	printf("\n");
	}
	return 0;
}//한글 ㅇ를 치니까 피라미드가 나오던데요 ㅇㅅㅇ 건 어떤 현상인지 ㅋ?

2.5.4. QnA

  • 한글 ㅇ를 치니까 피라미드가 나옵니다.
    • 한글 ㅇ가 칸 수를 많 차지해서 그렇습니다.

2.5.5. 후기

  • 성국 - 오늘은 if를 활용하는 방법에 대해서 자세히 배웠어요^^ 그리고 if와 비슷한 switch를 용하여 다양한 경우를 출력해 보는것 또한 배웠어요:)
  • 준영 - 제 본격적으로 줄 수가 많아지니 흥미가 생깁니다. if에 대해 자세히 배울 수 있었습니다.
유익한 시간었습니다.
  • 강소현 - if,for,while,switch를 배우고, 실습을 병행하였습니다. 구구단에서 홀수만 출력하는 경우 i+=2 를 하거나, continue를 활용하는 사례도 시행해보았습니다. 다음 주는 시험 일주일 전인 관계로 수업을 휴강하겠습니다. 시험 끝나고 봐요~ㅁ~

2.6. 6회차(4/27)

  • 수업시간 - 10:00 ~ 11:30

2.6.1. 수업내용

  • rand()를 용해서 up-down 게임 만들기

#include <stdio.h>
#include <stdlib.h> //srand, rand
#include <time.h> //time
int main()
{
	int num, i;
	srand((unsigned)time(NULL));  
	printf("%u\n",(unsigned)time(NULL));
	for(i=0; i<10;i++){
		num=rand()%5;
		printf("%d ",num);
	}
	return 0;
}

2.6.2. 실습


#include <stdio.h>
#include <stdlib.h> //srand, rand
#include <time.h> //time
int main()
{
	int num,i,min=0,max=99;
	srand((unsigned)time(NULL));
	num=rand()%100;

	
	while(1){
		scanf("%d",&i);
		if(num>i){
			printf("up\n");
			if(min<i){
				min=i;
				}
			printf("%d에서 %d 사\n",min,max);	
		}else if(num<i){		
			printf("down\n");
			if(max>i){
				max=i;
				}
			printf("%d에서 %d 사\n",min,max);
		}else break;
	}
	

	return 0;

}


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

int main()
{
	int n,a,min=0,max=99;

	srand((unsigned)time(NULL));
	n = rand()%100;
	

	while(1)
	{
		scanf("%d",&a);
		if(a<n){
			if(a>min) min=a;
			printf("up (%d<n<%d)\n",min,max); 
		}
		else if(a>n){
			if(max>a) max=a;
			printf("down (%d<n<%d)\n",min,max);
		}
		else
			break;
	
	}
	return 0;
}


2.6.3. 과제

  • 두 개의 1~9 사의 정수를 입력받아 구구단 문제 푸는 게임을 만드세요.
    • 출력 예시

3 * 5 => // 13 입력(내가 입력한 값)
틀렸습니다.
3 * 5 => // 15 입력(내가 입력한 값)
맞았습니다.
그만하시겠습니까?(y: yes, n: no) => n
7 * 9 => // 63 입력(내가 입력한 값)
맞았습니다.
그만하시겠습니까?(y: yes, n: no) => y

2.6.4. 과제제출


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
	int a,b,c,i;
	srand((unsigned)time(NULL));
	while(1){a=(rand()%9)+1;
	b=(rand()%9)+1;
	printf("%d*%d=",a,b);

	while(1){
		scanf("%d",&i);
		if(i==a*b) break;
		else printf("틀렸음\n");
	}
	printf("잘했어요.\n");
	printf("그만하시겠습니까?(0:quit 1:continue)\n");
	scanf("%d",&c);
	if(c==0) break;
	else system("cls");
	}
	return 0;
}

* 성국
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
	int n,m,a;
	char d,y='y';

	srand((unsigned)time(NULL));
	
	
	while(1)
	{
		n = rand()%9+1;
		m = rand()%9+1;	
		
		while(1)
		{
		printf("%d*%d=?",n,m);
		scanf("%d",&a);
		
		if(n*m==a) 
		{
			printf("%d*%d => // %d\n맞았습니다\n그만하시겠습니까?(y: yes, n: no)",n,m,a);
			fflush(stdin);
			scanf("%c",&d);

			if(d==y) 
			{
				printf(" => y\n"); 
				exit(0);
		    }
			else printf(" => n\n");
			break;
		}
		else
		{
			printf("%d*%d => // %d 입력(내가 입력한 값)\n틀렸습니다.)",n,m,a);
		}
		}
	}
	
	return 0;
}

2.6.5. 후기

  • 성국 - ^srand 와 rand를 배워 랜덤값을 만드는 방법을 배웠고 그것으로 up down 게임을 만드는 유익한 시간었습니다.^
  • 준영 - rand와 srand를 배우고 그동안 배웠던 반복문과 조건문을 활용해 간단한 게임을 만들어보았습니다. 문장 조금 길어져서 복잡했어요.
  • 강소현 - while, if, break, continue 등 예전에 배웠던 것들을 게임을 통해 복습을 하는 시간을 가졌습니다.

2.7. 7회차(5/4)

  • 수업시간 - 10:30 ~ 12:30

2.7.1. 수업내용

  • 함수
    • 타입 4 가지
  • variable
    • global, local, static, register
  • call by value

2.7.2. 후기

  • 성국 - ^오늘은 함수에 대해서 자세히 배우고 그에 필요한 지식인 지역변수 전역변수 static변수에 대해 자세히 배웠습니다.^ 하나하나 배우면서 C언어어에 대한 자신감을 가졌습니다. 특히 Recursive function에 대해 정확한 해를 통하여 활용할 수 있게 되었습니다. 항상 스펀지같 쏙쏙 머리속에 들어오는 수업 감사합니다.
  • 준영 - 수업시간에 제대로 집중을 못해서 잘 못들은 부분을 자세히 배울 수 있어서 다행었습니다. 재귀함수랑 변수의 유형을 자세히 배웠습니다. 앞으로도 더 많은 걸 배우고 싶어요.
  • 강소현 - 함수의 형태를 반환형 있는 지의 여부와 매개변수가 있는 지의 여부에 따른 4 가지를 실습하여 차를 알아보았습니다. 그리고 재귀함수에 대한 진도도 나갔으나, 아무래도 그냥 함수 한번 호출하고 끝낼 때보다 해가 잘 가지 않는 듯 합니다. 다음 시간에 한번 더 복습할 예정입니다. 재귀함수로 만드는 factorial나 gcd 같은 것을 점화식을 설명하고 보여주면 좀 더 해가 쉽지 않을까 싶었습니다.

2.8. 8회차(5/11)

  • 수업시간 - 11:00 ~ 12:00

2.8.1. 수업내용

  • 재귀함수 복습
  • 봉봉 교수님 hw2 문제 풀

2.8.2. 후기

  • 강소현 - 한 시간은 정말 금방 가네요. 근데 왜 학교 수업 들을 때는 그리 길었던거지!? 재귀함수를 사용할 경우 항상! 빠져나올 수 있는 조건을 걸어야 한다는 것을 복습했습니다. 뭔가 도미노 원칙 어쩌구 하긴 했지만 정확한 게 아니라 비슷하다-고 했던거에요. 정확한 건 3학년 알고리즘 시간에 divide&conquer을 배우면...<< 간단히 설명하자면 한번에 풀기 힘드니까 나눠서 풀자는 내용입니다.
  • 성국 -
  • 준영 -

2.9. 9회차(5/18)

  • 수업시간 - 10:00 ~ 11:00

2.9.1. 수업내용

  • Function Call Stack
    • 함수 호출 시, stack에 돌아올 주소를 넣어두고 함수가 종료되면 stack에서 빼와서 돌아간다. LIFO(Last In First Out)의 순으로..
  • 배열
    • 상의 변수를 동시에 선언하는 효과
    • 많은 양의 데터를 일괄적 처리할 때 유용하다
  • 1차원 배열
    • 배열 길: 배열을 구성하는 변수의 개수
    • 배열 요소 자료형: 배열을 구성하는 변수의 자료형
    • 배열 름: 배열에 접근할 때 사용되는
  • 문자열 변수
    • 문자열은 널(null) 문자를 끝에 지닌다.
    • 널(null) 문자: ‘\0’ (아스키코드 값으로 0)
    • 널(null) 문자를 지녀야 하는
      • 문자열의 끝을 표현하기 위해서
      • 쓰레기 값과 실제 문자열의 경계를 나타내기 위해
      • Printf함수는 널 문자를 통해서 출력의 범위를 결정 짓는다.

2.9.2. 실습

  • 실습(2): 문자열을 입력 받는다. 입력 받은 문자열을 구성하고 있는 문자 중에서 아스키코드 값 가장 큰 문자를 찾아서 출력하는 프로그램을 구현해보자.

#include <stdio.h>

int main()
{
	char array[20],max;
	int i;
	scanf("%s", &array);
	max=array[0];
	for(i=0;i<20;i++){
		if(array[i+1]>array[i]) max=array[i+1];
		if(array[i]==NULL) break;
						
	}
	printf("%c", max);

	return 0;
}

2.9.3. 후기

  • 강소현 - 배열 쉬워서 그런가(?) 예상외로 금방 수업 끝났습니다. 다음 시간에는 시간 조절을 더 잘 해야겠습니다.
  • 성국 -
  • 준영 - 수업 시간에 배열을 제대로 집중을 안해서 몰랐는데 오늘 배열 무엇인지 알게 되었습니다. 무엇보다 제가 실습2를 직접 풀어서 정말 의미있었던 새싹교실었습니다.

2.10. 10회차(5/25)

  • 수업시간 - 10:30 ~ 11:30

2.10.1. 수업 내용

  • 다차원 배열

2.10.2. 후기

  • 성국 - 배열에 대해 평소 개념과 실습 적었는데 오늘 개념도 자세히 배우고 실습도 충분히 한 시간었어요. :) 또한 과제도 하면서 더욱 자세히 해 할 수 있었습니다.!!! 그리고 오늘 수업중 다같 나가서 루카스 옷도 받아온 정말 유익한 시간었습니다. ㅋㅋ
    • 음 음 여러 모로 유익했지 ~ㅁ~ㅋㅋ 40분나 기다렸지만 만족스러움!ㅋㅋ -강소현
  • 강소현 - 다차원 배열의 선언 및 초기화와 2차원 배열을 용한 행렬 계산을 실습항였습니다. 후에 sort와 search 부분도 나가려 하였으나...올 해는 꼭 티셔츠를 받고 말겠다!라는 의욕으로 함께 줄 서서 기다렸습니다 /ㅁ/ 아 줄 안끊겨서 다행에요ㅎㅎ

2.11. 11회차(6/8)

  • 수업시간 - 10:30 ~ 12:00

2.11.1. 수업 내용

  • 포인터
  • 문자열 조금?

2.11.2. 후기

  • 강소현 - 후의 내용은... 배우고 싶은 사람에 한해 방학 때 하기로 했습니다.진도를 너무 느리게 나가면 안되겠구나하고 느낀.. ;ㅅ; 작년에는 3번 수업으로 포인터까지 나갔는데, 올해는.. 대상 다르기는 하지만, 조절을 잘 못하기도 했네요. ㅠㅠ

  • 위키 정리가 매우 알차네요!! 그런데 한편으론 렇게 정리하려면 위키에 적는 것 새싹교실 선생님에게 너무 부담스럽지 않을까 싶은 걱정도 듭니다. 즐겁게 정리하고 있다면 정말 좋은 일지만 혹시 너무 부담스럽다면 덜 꼼꼼히 적어도 괜찮을 것 같아요~ - 김수경
    • 네ㅎㅎ 제 슬슬 시험 다가오니까 실습 위주로 나가면서 적당히 하려구요 ㅋㅋㅋ - 강소현


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