C의 반복문과 중첩반복

박상록(Sangrok Park)·2020년 11월 9일
0

Computer Science Basic

목록 보기
5/13
post-thumbnail

똑같은 실행을 여러번 하려면?

어쩌면 이렇게 그냥 여러번 써줄 수 도 있고,
어쩌면 아래와 같이 반복문을 써 줄 수도 있다.

소스코드

#include <stdio.h>

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

둘 다 결과는 같다.

원하는 함수 만들기

#include <stdio.h>

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

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

void입력 => 원하는 함수명 입력 => ()안에 void입력.

int main(void)에서 함수 이름 앞에 int는 함수의 입력값의 data type, void위치는 함수의 입력값의 data type. void는 안 받겠다는 뜻.

여기서 중요한 것 또 하나.

맨 아래 main함수에서는 cough(3)으로 위에 어딘가에 정의해놓은 함수를 실행하는 데, 이것이 바로 추상화(Abstraction.)

Abstraction
추상화. 간단히, 복잡한 기능은 어디 숨겨두고 간단한 기능만 빼와서 쓰는 것. 객체지향 공부하면서 배웠지...

그런데, 함수를 아래와 같이 순서를 살짝 비틀면 실행을 할까?

실행하지 않는다.

오류화면

implicit declaration 즉 선언하지 않은 함수를 쓰고 있다고. 당연히 실행먼저하고, 선언을 나중에 하니 컴퓨터가 이해할 수 없는 것.

코드를 위에서 아래로 읽기 때문

생각해보니 int main(void) {} fuction은 내가 실행시킨 적이 없는데, 파일을 실행하자마자 바로 실행하네. 뭔가 자바스크립트의 Promise의 인스턴스, Class의 Constructor와 비슷하구만.

해결법. 그냥 아래 선언된 함수 이름만 복사해서 맨 위에 붙이면 됨(깜짝!!)

함수가 매개변수를 받게끔 만드는 것을 "parameterized"됐다고 하는구나..

do while..

do
{
 // 일단 먼저 실행
}

while(n < 1); // n < 1일때 까지. 
return n;

일단 먼저 실행 후 n의값이 1일때까지 반복.

중첩루프로(2D loop) 벽돌쌓기

"게임이든 어디든 반복되는 것들을 본다면, 2D이든, 가로, 세로 1차원이든 상관없이 이것들은, C나 다른 언어들에서 몇 줄로 줄여질 수 있는 코드를 나타낸 것 뿐." 이라는 교수님의 말씀.

바로 이런 것들처럼.

항상 느끼는 것이지만, 자바스크립트를 쓰면서 그 원리들이 어디서 나왔다 살펴볼 수 있어서 좋은 것 같다.

출처 : [부스트코스] 모두를 위한 컴퓨터 과학 (CS50 2019) (https://www.edwith.org/boostcourse-cs-050)

profile
한 줌의 소금과 같이 되고 싶은 개발자

0개의 댓글