[AI_CS] C (programming language)

JJangnaa·2023년 8월 11일
0

1. C 기초

  • 학습목표: C로 "hello, word" 를 출력하는 프로그램을 만들 수 있다.
  • 핵심단어: stdio.h, clang, 컴파일러

- #include <stdio.h> 하지 않으면 printf() 함수 사용 X

- 컴파일러

- $ clang: 코드를 컴파일 해줌

  • 실행시 a.out 파일 생성 (머신코드)
  • ./a.out : 현재 디렉토리에 있는 a.out 실행

- 파일 내용 수정 후 ./a.out 실행시 변경 전 내용 출력 (컴파일 하지 않았기 때문)

- $ clang 뒤에는 파일명만 적을 수 있는 것이 아닌 명령행 인자를 추가할 수 있음

  • ex) $ clang -o hello hello.c
  • $ ls → a.out* hello* hello.c '*' 표시는 머신코드라는 뜻(≒실행가능)
    ⨁ 이 외: rm, mkdir, rmdir 등
10진법2진법Description
20100*4 + 1*2 + 0*1
30110*4 + 1*2 + 1*1
41001*4 + 0*2 + 0*1
810001*8 + 0*4 + 0*2 + 0*1


2. 문자열

  • 학습목표: C로 문자열을 가진 변수를 선언 및 출력하는 프로그램을 만들 수 있다.
  • 핵심단어: 형식지정자, string, make

1) 형식지정자

  • %s, %i, %d 등 형태

⨁ #include 하는 과정
: clang 을 통해 컴파일, 이는 컴퓨터가 include 하려는 파일을 사용자의 소스코드에 추가하고 명령어로 연결을 시켜 두 코드가 한 프로그램으로 실행될 수 있도록 함
ex) $ clang -o string string.c -lcs50

2) make

바로 위 설명에서 clang 을 사용하여 컴파일하는 과정보다 보다 간단하다.

ex) $ make string make 뒤에는 프로그램 이름 인자만 입력해야 함

위 예시를 실행하게 된다면 string.c 파일을 찾고 string 이름으로 머신코드를 output 한다(string*).



3. 조건문과 루프

  • 학습목표: 조건문과 루프를 C로 작성할 수 있다.
  • 핵심단어: int, if, while, for

- ⊜: 할당 연산자

- type 선언은 한번만

- 구문설탕: 새로운 기능 추가X, 기존 기능을 더욱 보기 좋고 간결하게 활용할 수 있도록 해준다는 뜻

- c에서는 true 첫글자 소문자 가능 (Python은 True)

- for 구문: 인자 세개 (Java와 동일, 형태: (변수선언, boolean, 변수증감))



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

  • 학습목표
    - 다양한 데이터 타입과 형식지정자를 나타내는 방법을 학습한다.
    - 다양한 연산자를 이용하여 조건문을 표현하는 방법을 학습한다.
  • 핵심단어: char, long, float, double, %, &&, ||

- cd (경로 설정), pwd (경로 확인)



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

  • 학습목표: 사용자 정의 함수와 중첩루프를 작성할 수 있다.
  • 핵심단어: 사용자 정의 함수, 중첩루프

- void (return 값 X) 선언하는 등 생성

- 위에서 아래로 왼쪽에서 오른쪽으로 순차적으로 작동하기 때문에 main을 사용자 정의 함수보다 아래에 둔다면 error 발생.
-- ⨁ main 위에 선언한다면 가능 ex) void cough(void);

- do-while 루프: boolean → 수행



6. 하드웨어의 한계

  • 학습목표: 메모리 용량이 프로그램의 구동에 미치는 영향을 설명할 수 있다.
  • 핵심단어: 메모리, 오버플로우

1) RAM

  • 모든 프로그램이 실행 중 (열려있는 동안) 저장되는 곳
  • 컴퓨터가 여러 일들을 한번에 할 때 기억하기 위해 사용되는 것
  • 하드웨어로 성능은 유한함

2) overflow

-- 메모리 저장공간이 유한하다면 컴퓨터는 특정 지점에서 한계에 부딪힌다. float 은 32bit 를 사용하고 double은 64bit 를 사용하므로 보다 정확한 계산이 가능하지만 이 또한 완벽하지 않다. 왜냐하면 결국 저장할 수 있는 정보는 유한하기 때문이다.

-- 따라서 컴퓨터는 계산할 수 있는 값들 중 원하는 값과 가장 가까운 값을 저장한다. ex) 1 나누기 10을 한다면 0.1(1/10)에 가까운 값을 저장

-- overflow를 예시와 함께 설명한다면, 10진법인 세자리 숫자가 있을 때 1을 더하다보면 999가 되고 일 때 1을 더해주면 1,000 이ehlsek. 하지만 세자리 까지의 숫자만 저장할 수 있는 메모리 공간이라면 000만 남게 된다. 2진법도 같음

-- 이 설명은 Y2K보잉 787 사례를 안다면 더 쉽게 이해할 수 있다.

profile
귀여운게 좋아

0개의 댓글