Love Every Moment
〔CS50 / C언어〕 조건문(if), 루프(for/while), 사용자 정의 함수 본문
1. C언어 기초
(1) printf() : 뒤에 나오는 문장을 출력하는 역할을 하며 쌍따옴표 " " 안에 문장을 작성해야함
(2) 세미콜론(;) : 함수를 작성하고나서 마지막에 붙여주어야 함
(3) clang : 소스코드(hello.c)를 머신코드(a.out)로 변환시켜주는 컴파일러 명령어
* make : clang 보다 간단하게 머신코드 파일을 만들어주는 명령어
* 위의 사진처럼 clang animal.c -lcs50 보다 쉽게 머신코드 파일 animal 을 만들어준다
(4) ./ : 머신코드 파일을 실행하는 역할
2. 문자열(string)
(1) get_string() : 스크래치에서의 ask 함수와 같은 역할을 하며 사용자의 답변을 왼쪽의 변수에 저장한다
string animal = get_string("What's your favourite animal?\n")
animal 이라는 변수의 종류가 문자열이라는 것을 알려주기 위해 string 을 앞에 작성한다
get_string() 함수를 통해 얻은 데이터를 animal 이라는 변수에 저장한다
(2) % : 위에서 사용자의 답변을 저장한 변수값을 보여주는 형식지정자(place holder)
예시에서는 animal 이라는 변수에 저장된 값이 문자열(string) 이었기 때문에 %s 가 된다
콤마(,) 뒤에는 animal 을 작성해줌으로써 %s 자리에 들어갈 변수가 정확히 무엇인지 알려준다
*** 두번째 사진처럼 문장 안에 ,animal 을 포함하면 오류가 생기니 꼭 " " 문장을 마치고 작성해주자
3. 조건문(if)과 루프(while, for)
(1) if 조건문
if ( ) {}
else if () {}
else if () {}
...
else {}
위와 같은 형식으로 작성할 수 있고 조건이 적은 경우 if 단독 혹은 if 와 else 만으로도 작성 가능하다.
*** if (n % 2 == 0) 에서 == 는 일치 연산자라고 불리며 할당 연산자인 = 와 헷갈리지 않도록 하자
*** % 는 뒤에 따라오는 숫자로 나누었을 때의 나머지를 구하라는 의미
(2) while 루프
while () 의 형식으로 사용되며 괄호 안에 있는 조건이 참이면 계속 반복하여 명령을 수행한다.
while (true) 라고 입력할 시에는 영원히 명령어를 반복한다.
(3) for 루프
for (변수 초기화; 변수 조건; 변수 증가) 의 형식으로 사용되며 특정 횟수 명령어 수행 시에 편리한 루프이다.
for (int i = 0; i<10; i++) 라고 작성하면 변수 i 의 초기값은 0, i 가 10 미만일 때, 매회 i 에 1을 더해준다는 의미이다.
4. 사용자 정의 함수
(1) 반환값이 없는 함수
void 함수명 (void) 의 형식으로 작성하며 새로운 함수를 정의함으로써 더욱 간단한 코드를 작성할 수 있게 해준다.
void cough(void) 의 형식으로 함수를 정의하면 명령어 cough() 가 사용 가능하고
void cough(int n) 의 형식으로 함수를 정의하면 명령어 cough(1) cough(5) 이런 식으로 사용이 가능하다.
괄호 안의 void 는 입출력이 없는 상태를 의미하므로 cough() 가 명령어가 되는 것이다.
*** int main(void) 이전에 함수를 정의해주어야 사용자 정의 함수가 있다는 것을 인식할 수 있는데, 새로 추가할 함수가 많으면 보기에 좋지 않으므로 void cough(void); 를 맨앞에 한번 더 작성하고 실제 함수 정의는 아래에 작성한다
(2) 반환값이 있는 함수
int 함수명 (void) 의 형식으로 작성하며 형식지정자가 다를 경우 string, char 등도 작성 가능하다.
사용자가 어떤 값을 저장할지 아직 모르기 때문에 int n; 은 현재 변수 n 이 쓰레기 값(garbage value)을 가지는 것을 의미하며 나중에 사용자가 답변한 값이 변수 n 에 저장된다.
5. 중첩 루프
마리오 게임처럼 화면에 여러 개의 이미지를 가로 세로로 여러개 출력하고 싶을 때에 사용한다.
do...while 함수에서 먼저 사용자가 원하는 사이즈가 무엇인지 알아내는데 만약 n 이 1보다 작으면 # 을 출력하는 것이 불가능하므로 while 조건문에 n<1 을 작성하여 사용자가 1 이상의 답변을 할 때 까지 질문하게 한다.
for 루프 (i) 안에 또 다른 for 루프 (j) 를 작성하면 for(j) → for(i) → for(j) → for(i) → ... 이런 식으로 내부 for루프 실행 후에 외부 for 루프 실행을 하는 세트를 n 번 반복하게 된다.
※ 네이버 부스트 코스 모두를 위한 컴퓨터 과학(CS50) 강의를 참고하여 작성하였습니다.
컴퓨터 코딩 프로그래밍
'PROGRAMMING::LANGUAGE > C' 카테고리의 다른 글
〔CS50 / C언어〕자료구조: 메모리 할당, 연결 리스트, 해시 테이블, 트라이, 스택, 큐, 딕셔너리 (0) | 2021.02.26 |
---|---|
〔CS50 / C언어〕메모리: 포인터, 문자열, 메모리 할당과 해제, 파일 쓰고 읽기 (0) | 2021.02.16 |
〔CS50 / C언어〕알고리즘: 선형·이진 검색, 버블·선택·병합 정렬, 재귀 함수 (0) | 2021.02.02 |
〔CS50 / C언어〕배열: 컴파일링, 디버깅, 문자열, 명령행 인자 (0) | 2021.01.20 |
〔CS50 / C언어〕 네이버 부스트코스 코칭 스터디 2기; 컴퓨팅 사고(Computational Thinking) (0) | 2021.01.15 |