Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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
관리 메뉴

프랙티스만이 살길. 프랙티스만이 살길.

2. C언어 본문

Computer science/CS50

2. C언어

gaussian-goodman
  • C언어
    • C언어는 오래되고 전통적인 순수 텍스트 기반의 언어이다.
    #include <stdio.h>int main(void)
    {
        printf("hello, world\\n");
    }
    
    • int main(void)는 시작한다의 의미를 가지고있고, 뒤에 {}중괄호에 코드를 작성한다.
    • stdio.h는 “stdio.h”라는 이름의 파일안에 printf라는 함수를 찾아서 접근 할 수 있도록 해준다.
    • C언어로 작성한 코드를 “name.c”로 저장해야한다.
  • 컴파일러
    • 위 처럼 작성된 코드를 **“소스코드”**라고 부른다. 이를 2진수로 작성된 **“머신코드”**로 변환하면 컴퓨터가 이해할 수 있다. 이 작업을 컴파일러라는 프로그램이 수행해준다.
    • clang은 코드를 컴파일하는 프로그램의 이름이다. 터미널에 clang name.c라는 명령어를 사용하여 컴파일할 수 있다.

  • C언어에서 변수지정 형식 지정자.
    • C는 아주 오래된 언어이기 때문에 입력하는 데이터의 종류를 아주 정확히 명시해주어야한다. 문자열 형식 지정자 string을 적고 뒤에 변수명을 적어준다.
#include <cs50.h>
#include <stdio.h>

int main(void)
{
	string answer = get_string("What's your name?\\n.");
	printf("Hello I'm %s\\n", answer);
}
  • if문
if (x<y)
{
	printf("x is less than y\\n");
}
else if (x>y)
{
	printf("x is greater than y\\n");
}
else (x==y)
{
	printf("x is equl than y\\n");
}

if, else, else if 뒤에는 세미콜론(;)이 붙지 않은 것을 볼 수 있는데, 보통 조건과 같은 것들의 끝에는 세미콜론을 붙이지 않는다.

  • for문
for (int i = 0; i <50; i++)
{
	printf("hello, world\\n");
}

for ( ) 안에 각각 (변수 초기화; 변수 조건; 변수 증가) 삽입

  • 데이터 타입
    • bool: 불리언 표현, (예) True, False, 1, 0, yes, no
    • char: 문자 하나 (예) 'a', 'Z', '?'
    • string: 문자열
    • int: 특정 크기 또는 특정 비트까지의 정수 (예) 5, 28, -3, 0
    • long: 더 큰 크기의 정수
    • float: 부동소수점을 갖는 실수 (예) 3.14, 0.0, -28.56
    • double: 부동소수점을 포함한 더 큰 실수
  • 형식 지정자
    • %c : char
    • %f : float, double
    • %i : int
    • %li : long
    • %s : string
  • 기타 연산자 및 주석
    • +: 더하기
    • : 빼기
    • : 곱하기
    • /: 나누기
    • %: 나머지
    • &&: 그리고
    • ||: 또는
    • //: 주석
  • 사용자정의함수
#include <stdio.h>

void cough(void)
{
    printf("cough\\n")
}

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

cough함수를 정의 했지만, 이런식으로 함수가 많아진다면 중요한 main 함수가 밑으로 내려가게 된다. 그러나 main 함수를 cough 함수 위로 올리면 에러가 발생한다. main함수에 cough함수를 사용해버렸기 때문.

#include <stdio.h>

void cough(void);

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

void cough(void)
{
    printf("cough\\n");
}

void cough(void)를 세미콜론과 함께 위로 올려 문제를 해결할 수 있다. 컴퓨터가 cough함수를 전부 본 적은 없어도 이름은 본적이 있으니 main 함수에 나올 때까지 코드를 계속 읽도록 하는 것이다.

#include <cs50.h>
#include <stdio.h>

int get_positive_int(void);

int main(void)
{
    int i = get_positive_int();
    printf("%i\\n", i);
}

int get_positive_int(void)
{
    int n;
    do
    {
        n = get_int("Positive Integer: ");
    }
    while (n < 1);
    return n;
}
  • int 함수(char)와 같은 함수에서 앞의 int는 출력되는 값의 타입이고, 괄호안의 char는 입력되는 값의 타입이다. 입력이나 출력이 필요없다면 void라고 적으면된다.
  • 위 코드에서 int n; 은 컴퓨터에게 n이라는 변수를 달라는 요청이다. 어떤 값이 저장될지 아직 모르겠으니 일단 적어놓는 것.
  • do-while은 기존의 while에서 수행문앞에 do가 붙어 while의 조건문 보다 위로 올라가있는 형태이다. do를 사용하므로써 조건문이 거짓이라도 한번은 수행하게 해준다.
  • 컴퓨터는 RAM(랜덤 액세스 메모리)이라는 물리적 저장장치를 포함있다. 우리가 작성한 프로그램은 구동 중에 RAM에 저장되는데, RAM은 유한한 크기의 비트만 저장할 수 있기 때문에 때때로 부정확한 결과를 내기도 한다.

'Computer science > CS50' 카테고리의 다른 글

5. 메모리 주소  (0) 2023.07.05
4. 알고리즘  (0) 2023.07.05
3. 배열  (0) 2023.07.05
1. 컴퓨팅 사고  (0) 2023.07.05
0. 들어가며  (0) 2023.07.05