Notice
Recent Posts
Recent Comments
Link
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Development Log

[CS50] C언어 - 사용자 정의 함수, do-while, 중첩 루프 본문

성장 여행기/CS50

[CS50] C언어 - 사용자 정의 함수, do-while, 중첩 루프

gu-su 2022. 3. 25. 03:41

사용자 정의함수 

  • 사용자가 직접 작성해서 사용하는 함수이다.
  • 함수의 형식은 main()에서 호출하기 전에 정의되어 있거나 혹은 프로토타입을 먼저 선언해줘야 한다.
출력종류 함수이름(입력종류 변수이름){}

//예시
int get_positive_int(void){}
void cough(int n){}

 

함수 작성 방법1

void function(){ // 함수 헤더
	// 동작
}

int main(void){
	function(); // 함수 호출
}

함수 작성 방법2

void function(); // 함수 프로토타입 선언

int main(void){
	function(); // 함수 호출
}

void function(){ // 함수 헤더
	// 동작
}

 

예시 : cough 함수 만들기

코드1

#include <stdio.h>

void cough(int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("cough\n");
    }
}

int main(void)
{
    cough(3);
}

문제점 : 함수가 1개가 아닌 여러개일 경우 main 함수는 아래로 내려간다. 

방법 : main 함수를 올리고 그 외의 함수를 아래로 내린다. (코드2)

 

코드2

#include <stdio.h>

int main(void)
{
    cough(3);
}

void cough(int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("cough\n");
    }
}

문제점 : C는 오래되었고 시킨대로만 행동하기 때문에 cough라는 함수가 있을거라고 생각하지 못해 에러가 발생한다.

방법 : cough 함수를 먼저 정의해 마치 이전에 cough를 봤던 것처럼 C를 속인다. (코드3)

 

코드3

#include <stdio.h>

void cough(int n);

int main(void)
{
    cough(3);
}

void cough(int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("cough\n");
    }
}

=> 코드3코드1과 코드2의 문제점들을 해결할 수 있다.

 

do-while문

  • 무조건 한 번은 먼저 수행을 한 뒤에 조건을 확인한다. (while문과 차이점)
do{
	//동작
}while(조건);

 

중첩 루프

  • 반복문 안에 반복문이 들어가는 형태를 말한다.
for (int i = 0; i < n; i++) // 바깥쪽 루프 : 세로 처리 코드
{
    for (int j = 0; j < n; j++) // 안쪽 루프 : 가로 처리 코드
    {
       // 코드
    }
    // 코드
}

 

think about

1) 사용자 정의 함수를 사용하는 것의 장점은 무엇일까요?

더보기

- main() 함수가 간결해진다. 

- 반복되는 코드를 줄일 수 있다.

- 수정이 용이하다.

- 함수의 이름을 통해 해당 함수의 구현 코드를 보지 않아도 기능을 추측할 수 있다. (함수의 이름을 잘 정했을 경우)

 

David J. Malan의 강의

 

모두를 위한 컴퓨터 과학 (CS50 2019)

부스트코스 무료 강의

www.boostcourse.org

 

'성장 여행기 > CS50' 카테고리의 다른 글

[CS50] 배열 - 컴파일링  (0) 2022.03.25
[CS50] C언어 - 하드웨어의 한계  (0) 2022.03.25
[CS50] C언어 - 조건문과 루프  (0) 2022.03.25
[CS50] C언어 - 문자열  (0) 2022.03.24
[CS50] C언어 - 기초  (0) 2022.03.24