U E D R , A S I H C RSS

새싹교실/2015/의사양반/0403 (rev. 1.21)

새싹교실/2015/의사양반/0403



1. 참여자 명단


의사 장용운 11학번 미시행
환자 천준현 15학번 미시행
최지혁 미시행
박인서 미시행

2. 수업

2.1. 진행

1. 장소 : 6층 학회실
2. 시간 : 15시 ~ 17시

2.2. 내용

6강. 맛있는 함수 만들기
  • 함수의 정체
    ○ 함수 호출 스택
    ○ 재귀 함수
  • 함수의 형태
    ○ 파라미터
    ○ return 키워드와 리턴값
    ○ 함수의 기능적 구분
  • 함수 정의하기
  • 변수의 스코프
    ○ 전역 변수
  • pre-declaration
  • main 함수에 파라미터 전달하기
  • 디폴트 파라미터

☆추가
  • 2차원 배열 기초

실습
  • 온도 변환 함수 만들기
    ○ 손코딩
  • 재귀 함수로 Factorial 연산하기
  • Quick sort

3. 코드

3.1. 예제1


4. 숙제

1. 이 페이지에 후기 작성하기!
2. 오늘 공부한 개념 수업 페이지에 정리하기!
3. 테스트 예고 둘 중 하나 출제됨. 미리 알아보면 좋겠죠?
○ Breadth-First Search
○ Depth-First Search
4. 용어 조사하기
○ Stack
○ Queue
○ Tree
○ Set
○ Map
○ Linked List

5. 후기

  • 후기 작성 요령 : 후기는 F4(ThreeFs + Future Action Plan)에 맞게 작성해주세요.
    • Facts, Feelings, Findings, Future Action Plan. 즉, 사실, 느낀 점, 깨달은 점, 앞으로의 계획.

  • 오늘은 함수 만드는 법을 처음으로 배웠습니다. 이제 슬슬 내용들이 복잡해지는 것 같아 앞으로가 큰일인 것 같습니다. 하지만 열심히 공부하여 극복해내겠습니다. - 천준현

  • 함수와 관련된 내용을 배우고 실습했습니다. 함수를 열심히 해야겠다는 것을 느꼈습니다. 테스트가 곧 다가오니 열심히 공부해야 겠다고 생각하였습니다.-박인서



6. 숙제 제출

6.1. 천준현

별찍기 1번
#include <stdio.h>

int main(void){
	int i, j;
	char c;
	c = '*';
	
	for (i = 0; i < 5; i++){
		for (j = 0; j < 11; j++){			
			if (j <= i) printf("%c", c);
			else if (j < i + 6) printf(" ");
			else printf("%c", c);							
		}
		printf("\n");
	}
	return 0;
}


별찍기 2번
#include <stdio.h>

int main(void){
	int i, j;
	char c;
	c = '*';
	for (i = 0; i < 7; i++){
		if (i % 2 == 0) {
			for (j = 1; j < 18; j++){
				if (j % 4 == 1) printf("%c", c);
				else printf(" ");
			}
		}
		else {
			for (j = 1; j < 18; j++){
				if (j % 2 == 1) printf(" ");
				else printf("%c", c);
			}
		} printf("\n");
			
	}
	return 0;
}


별찍기 3번
#include <stdio.h>

int main(void){
	int i, j, a, b;
	char c;
	c = '*';
	a = 0;
	b = 3;
	for (i = 0; i < 9; i++){
		if (i < 5){
			for (j = 0; j < 9; j++){
				if (j <= a) printf("%c", c);				
				else if (j >= 8 - a) printf("%c", c);
				else printf(" ");								
			}
			a++;
		}
		else {
			for (j = 0; j < 9; j++){
				if (j > b){
					if (j < 8 - b) printf(" ");
					else printf("%c", c);
				}
				else printf("%c", c);
				
			}
			b--;
		} printf("\n");
	}
	return 0;
} 

#용어정리
 -Stack :
 스택(stack)은 모든 원소들의 삽입(insert)과 삭제(delete)가 리스트의 한쪽 끝에서만 수행되는 제한 조건을 가지는 선형 자료 구조(linear data structure)로서, 삽입과 삭제가 일어나는 리스트의 끝을 top이라 하고, 다른 한쪽 끝을 bottom이라 한다.
 -Queue :
 리스트의 한쪽 끝에서만 삽입과 삭제가 일어나는 스택과는 달리 리스트의 한쪽 끝에서는 원소들이 삭제되고 반대쪽 끝에서는 원소들의 삽입만 가능하게 만든 순서화된 리스트. 가장 먼저 리스트에 삽입된 원소가 가장 먼저 삭제되므로 선입 선출(先入先出)인 FIFO(first in first out) 리스트라고 한다.
 -Tree :
 나무가 하나의 뿌리(root)에서 줄기(trunk)가 나와 가지(branch)로 나누어지는 것처럼, 어떤 하나의 집합(레코드나 디렉토리 등)으로부터 하위 레벨(lower level)로 가지가 나오는 집합 관계를 갖는 계층 구조(hierarchic structure)를 말한다. 부분적으로도 결코 루트를 형성하는 경우는 없다. 따라서 처음에 가지가 나오기 시작되고 있는 집합으로부터 차례대로 「가지」를 더듬어가면 목적의 집합을 찾을 수 있다.
 -Set :
(1) 동사로서는 데이터 처리를 행하는 장치로 여러 가지 수치를 주거나 스위치를 ON, OFF시키거나 하여 지정된 상태로 하는 것. 주로 두 가지 값을 취하는 장치에 있어서 그 어느 쪽 상태를 지정하는 것. 리셋(reset)과 대비된다. 능동적인 상태와 비능동적인 상태의 두 가지 상태를 갖는 장치에서는 보통 능동적인 상태로 하는 의미를 갖는다. 예를 들면 셋업(set up)이란 장치나 시스템 등을 어떤 목적을 위해 동작시켰을 때 그것이 동작할 때까지의 준비를 행하여 동작 가능함을 표시한다. 셋업하기 위한 순서를 나타낸 표를 셋업 다이어그램(set up diagram), 셋업에 필요한 시간을 셋업 타임(set up time)이라 한다. 또 계수기(counter)나 레지스터(register)에 수치를 대입하거나 RAM(random access memory)의 하나하나의 메모리 셀(memory cell)에 전하(電荷)를 주거나 전하를 제어하거나 하여「0」과「1」어느 쪽이든 상태를 설정하고, 그것에 의해 정보를 축적하도록 하는 동작도 세트라고 한다.
(2) 명사로서는 하나 이상의 공통적인 성질을 갖는 것의 「집합」 이나 「모임」을 나타낸다. 이 세트가 더욱 작은 부분적인 집합으로 나누어질 때 이 부분 집합을 서브셋(subset)이라고 한다. 예를 들어 a, b, c…, z는 알파벳이라는 하나의 세트이다.
(3) 집합:주어진 하나 이상의 공통적인 성질을 갖는 유한 개 또는 무한 개의 어느 종류의 대상, 물건 또는 개념.
(4) 설정하다(변수에 대해서):변수에 값을 할당하는 것. 특히 파라미터에 값을 할당하는 것.
⑸ 세트하다(계수기를):① 계수기를 지정된 수에 대응하는 상태로 하는 것. ② 데이터 처리 기구 전체 또는 일부를 지정된 상태로 하는 것.
 -Map :
⑴ 데이터 처리에서 한조의 데이터 세트로부터 다른 데이터 세트로의 변환을 위한 관계를 밝히는 것. 또는 그 대응을 나타내기 위한 표.
⑵ 기억 장치 사용 방법을 명확히 한 리스트.
⑶ 다른 집합 중의 양 또는 값 사이에 정해진 대응을 갖는 값의 집합을 확정하는 것. 예를 들면, 수학적 함수를 평가하는 것. 즉, 직접 관계하는 독립 변수의 값에 대하여 종속 변수의 값을 확정하는 것이다.
 -Linked List :
 이것은 각 노드를 유용한 저장 공간에 그 위치에 상관없이 저장시키고, 각 노드의 관련성을 노드에 보관하여 1차원 배열 관계를 유지하도록 함으로써 중간 노드의 삽입, 제거를 손쉽게 할 수 있는 리스트로 각 노드는 링크(또는 포인터) 부분을 가지며, 그 노드와 관련 있는 다음 노드의 주소를 그 값으로 가진다. 다시 말하면 선형 리스트의 노드 배열이 어드레스와 일치하지 않고 기억 공간에 독립적으로 이루어진 리스트를 말한다.

6.2. 최지혁


<이론>






<숙제>
  • 별찍기 1번
#include<stdio.h>
int main()
{
int i;
for (i = 0; i < 9; i++)
{
if ( i % 2 == 0)
{
int j = 4;
for (int t = i/2 ;(j - t) < ( 15 - t); j ++)
{
if ( (j-t)/5 == 0 || (j-t)/5 == 2 )
{
printf("*");
}
else
{
printf(" ");
}
}
}
else
{
printf("\n");
}
}
return 0;
}

  • 별찍기 2번


#include<stdio.h>
int main()
{
int i;
int j = 1;

for (i = 1; i < 14; i++)
if (i % 2 == 1)
{
if (i % 4 == 1)
{
j = 1;
for (; j <= 17; j++)
{
if (j % 4 == 1)
{
printf("*");
}
else
{
printf(" ");
}
}
}
else if (i % 4 == 3)
{
j = 1;
for (; j <= 17; j++)
{
if (j % 2 == 0)
{
printf("*");
}
else
{
printf(" ");
}
}
}
else
{
break;
}
}
else
{
printf(" \n");
}
return 0;
}

  • 별찍기 3번
#include<stdio.h>
int main()
{
for (int i = 0; i < 19; i++)
{
if (i % 2 == 0)
{
for (int j = 0; j < 9; j++)
{
if ( i<= 11 )
{
if (i / 2 > j || j >= 9 - i/2)
printf("*");
else
printf(" ");
}
else
{
if ( 8-j >= i/2 || j >= i/2 )
printf("*");
else
printf(" ");
}
}
printf("\n");
}
else
{
printf("\n");
}
}
return 0;
}

6.3. 박인서

  • 내용 정리

<함수 사용법>
int->리턴 타입,반환형 main->함수이름(main함수 부터 실행)(인자(parameter,argumet)-받을인자를 ,로 구분)
{
	return 0;->함수의 종료
}->함수 블록
<함수의 종류>
리턴X(void)
인자X(인자가 없어도 소괄호를 닫아야됨)
둘다X
모두O
<함수의 정의>
함수를 정의하려면 main함수 위에 하거나 main함수 아래에 할땐 따로 정의해야됨(prototype 정의)
  • 별찍기 & 알파벳찍기

<1번>
#include <stdio.h>

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

int main()
{
	int i,j,k;
	for(i=1;i<=7;i++)
	{
		if(i%2==0)
		{
			for(j=0;j<8;j++)
			{
				printf(" ");
				printf("*");
			}
		}
		else
		{
			for(j=0;j<4;j++)
			{
				printf("*");
				for(k=0;k<3;k++) printf(" ");
			}
			printf("*");
		}
		printf("\n");
	}
	return 0;
}
<3번>
#include <stdio.h>

int main()
{
	int a=1,b=0,i,j;
	for(i=1;i<=9;i++)
	{
		if(a==5)
		{
			for(j=0;j<9;j++) printf("*");
			printf("\n");
			b=1;
		}
		else
		{
			for(j=0;j<a;j++) printf("*");
			for(j=0;j<9-(2*a);j++) printf(" ");
			for(j=0;j<a;j++) printf("*");
			printf("\n");
		}
		if(b==1) a--;
		else a++;
	}
	return 0;
}
<알파벳>
#include <stdio.h>

int main()
{
	char a,b;
	int aa,bb,i,j;
	scanf("%c%c",&a,&b);
	aa=(int)a;
	bb=(int)b;
	for(i=aa;i<=bb;i++)
	{
		for(j=aa;j<=i;j++)
		{
			printf("%c",(char)j);
		}
		printf("\n");
	}
	return 0;
}
  • 용어 정리
    ○ Stack : 나중에 들어간 데이터가 처음에 나오게되는(Last In First out) 선형 자료 구조
    ○ Queue : 처음에 들어간 데이터가 처음에 나오게되는(First In First out) 선형 자료 구조
    ○ Tree : 나무처럼 어떤 하나의 집합으로부터 하위 레벨로 가지가 나오는 집합 관계를 갖는 계층 구조로 사이클이 만들어지지 않음.
    ○ Set : 어떤 조건에 따라 결정되는 요소의 모임
    ○ Map : 집합 요소 사이의 대응을 붙인 것 혹은 대응표인 것을 말함.
    ○ Linked List : 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다.



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