[CS50] 2.C언어

뿌링클 치즈맛·2023년 3월 28일

CS50

목록 보기
2/2
post-thumbnail

애증의 C언어

1.C 기초

#include <stdio.h> // “stdio.h”라는 이름의 파일을 찾아
				  //“printf” 함수에 접근할 수 있도록 해줌

int main(void) //시작한다는 의미
{
   printf("hello, world\n"); //hello world를 출력,\n은 줄바꿈    
}


소스코드: 위와 같이 사용자가 작성한 코드. 머신코드로 변환해야 컴퓨터가 이해할 수 있다.
컴파일러: 머신코드로 변환해주는 프로그램


2.문자열

실습1

생각해보기
replit으로 하다가 cs50.h가 안 불러와져서 결국 샌박으로 감


3.조건문과 루프

//실습2
  
#include <stdio.h>
#include <cs50.h>

int main (void){
    int x=1;//x라는 정수형의 변수는 0의 값을 가짐
    int y=2;
    // 조건문
    if (x>y){
        printf("x>y\n");
    }
    else if (x<y){
        printf("x<y\n");}
    else{
        printf("x==y\n");
    }
    // 반복문
    int counter=0;
    while(counter<3){
        printf("hello world\n");
        counter++;
    }
    for (int c=0; c<10;c++){
        printf("개발공부는 재미있다!\n");
    }
}       
                                                         

생각해보기까지 한번에 끝!


4.자료형, 형식 지정자, 연산자

데이터 타입
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: 부동소수점을 포함한 더 큰 실수

CS50내 라이브러리의 함수는 생략!

형식 지정자

%c : char
%f : float, double
%i : int
%li : long
%s : string

기타 연산자 및 주석
+: 더하기
-: 빼기
*: 곱하기
/: 나누기
%: 나머지
&&: 그리고
||: 또는
//: 주석

실습3
실습4
실습5


5. 사용자 정의 함수, 중첩 루프

#include <stdio.h>
#include <cs50.h>
void cough(void);//prototype

int main (void)
{
    cough();
}

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

위 코드에서 void cough(void)는 int main 아래에 있는 cough 함수를 C가 읽지 못해 이름만 있는 cough라는 함수를 먼저 보여줌
void

#include <stdio.h>

void cough(int n);

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

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

void는 get_int,get_string처럼 값을 반환하지 않음 (input()으로 이해하면 되려나?)

int get_positive_int(void) 에서 int는 출력값의 종류(get_positive_int)를 의미하고,괄호 안의 단어(void)는 입력의 종류를 뜻함 입출력이 없다면 void를 적어주면 된다.

생각해보기) 사용자 정의 함수를 사용하면 가독성이 높아지고 코드가 더 간결해진다.


6. 하드웨어의 한계

RAM(Random Access Memory)이라는 물리적 저장장치에는 우리가 작성한 프로그램이 저장되는데, 유한한 크기의 비트만 저장할 수 있기에 때때로 부정확한 결과를 내기도 한다.

1/10을 소수점 50번째 자리까지 출력하게 하면 0.10000000149011611938476562500000000000000000000000 라는 숫자가 나온다.
정확한 결과는 0.1이지만, float에 저장 가능한 비트 수가 유한하기 때문에 다소 부정확한 결과를 내게 되는 것이다.

생각해보기)오버플로우 전에 보잉787처럼 재부팅/초기화 하거나 자동으로 변수를 초기화하는 알고리즘을 만든다.

profile
뿌링클 치즈맛

0개의 댓글