CS지식

TIL 정리_39

ran4 2022. 3. 26. 20:38

https://www.boostcourse.org/cs112

 

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

부스트코스 무료 강의

www.boostcourse.org

부스트코스 모두를 위한 컴퓨터과학을 듣고 개인적으로 정리한 내용

 

 

 

알고리즘

알고리즘을 이용하면 일일이 찾을 것을 나누고 나눠서 간단하게 찾을 수 있다

 

input > algorithms > output

알고리즘이란 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열이다.

 

C언어

#include (studio.h)

int main(void) {
printf(“hello world\n”);

->C로 작성한 코드는 파일이름.c”로 저장해야 한다. //확장자 “.c”는 C로 작성된 코드라는 의미

 

source > 컴파일 > machine code (01)

 

$ clang hello.c //clang - 컴파일 코드

$ = 프롬프트

\n 줄바꿈 코드

$ clang o hello.hello.c 

ls-리스트 -> 현재 폴더나 디렉토리에 있는 파일의 리스트를 알려준다 

문자열은 “ ” 붙이기

printf = 출력 형식지정자 % %s 문자열 출력 \n 줄바꿈

hello -> 머신코드 hello.c -> 소스코드

 

 

printf(“hello, %s\n”, answer);

//\n이 쌍따옴표 밖에 존재한다면 에러가 난다 

$make string

make는 일반적인 명령어이며 클라우드 기반 환경에 저장된다

print(“x is less than y\n”); 조건뒤에는 세미콜론 x 함수가 있으면 세미콜론을 붙인다 

 

 

get_문자열 : %li = long

int main(void) {

int age = get_int(“What’s your age?\n”);

printf(“You are at least %i days old.\n, age*365);

}

 

홀짝구하기

n % 2 == 0;

printf(“even\n”);

n % 2 == 1;

printf(“odd\n”);

 

*참고) #include<cs50.h>는 무엇일까?

CS50 수업을 위해 만들어진 라이브러리

라이브러리는 여러 함수들을 모아둔 것이라고 볼 수 있다

좀 더 쉽게 코딩을 짤 수 있게 CS50 라이브러리 안에 여러 함수(get_int, get_double, get_float 등등)를 만들었다

 

 

int main(void)

int 출력의 종류

void cough(void)

void 입력의 종류

 

사용자 정의 함수를 사용하는 것의 장점 : 

코드의 복잡도를 줄여준다 (중복코드를 줄여줌)

 

int main(void) {

float x = get_float(“x:”);

float y = get_float(“y:”);

printf(“x/y = %.50f\n”+x/y); //%.50d\n

저장공간에 한계가 있으므로 공간 이상의 값이 나오면 아무숫자나 출력한다

->오버플로우 

더 큰 저장공간 확보하여 오버플로우를 방지해야한다

-> 설계할 때 사용되는 데이터의 범위를 미리 파악하고 타입을 선언하고,

타입을 초기화 하면서 사용한다

 

 

컴파일링

소스코드를 머신코드로 바꾼다

프로그램이 컴파일 될 때 많은 과정을 걸친다

컴파일의 전체 과정은 전처리->컴파일->어셈블->링크 네 단계로 나눠진다 

 

 

전처리(preprocessing)

전처리기에 의해 수행되며 #으로 시작하는 C언어의 소스코드는 전처리기에 실질적인 컴파일이 이루어지기 전에 무언가를 실행하라고 알려준다.

예를 들어 #include는 전처리기에 다른 파일의 내용을 포함시키라고 알려준다

 

컴파일(Compile)

전처리한 소스 코드를 생성하고 나면 컴파일러라고 불리는 프로그램은 C코드를 어셈블리어라는 저수준 프로그래밍 언어로 컴파일한다

->전처리한 소스 코드를 어셈블리 코드로 변환시키는 단계이다

**어셈블리 : C보다 연산의 종류가 훨씬 적지만, 여러 연산들이 함께 사용되면 C에서 할 수 있는 모든 것들을 수행할 수 있다

 

어셈블(Assemble)

컴퓨터의 중앙처리장치가 프로그램을 수행할 수 있는 명령어 형태인 연속된 01로 바꿔주는 작업이다

어셈블러라는 프로그램이 수행하며 소스코드에서 오브젝트 코드로 컴파일 되어야 할 파일이 한개일 경우 컴파일은 이 단계에서 끝난다 

 

링크(Link)

프로그램이 (math.hcs50.h와 같은 라이브러리를 포함해) 여러 개의 파일로 이루어져 있어 하나의 오브젝트 파일로 합쳐져야 한다면 링크라는 컴파일의 마지막 단계가 필요하다

여러 개의 다른 오브젝트 코드 파일을 실행 가능한 하나의 오브젝트 코드 파일로 합쳐준다 

 

 

버그 : 우리가 의도치 않은 실수를 말한다

help50 cs50이 제공하는 에러 체크 컴파일러 에러메세지를 읽기 힘들 때 사용한다

debug50 디버깅. 프로그램을 단계별로 실행

 

check50 : 코드의 정확도를 분석

style50 : 코드를 더 보기좋게 만든다(가이드)

'CS지식' 카테고리의 다른 글

TIL 정리_61  (0) 2022.04.17
TIL 정리_42  (0) 2022.03.29
TIL 정리_41  (0) 2022.03.28
TIL 정리_40  (0) 2022.03.27