[KOCW 한국산업기술대학교 박정민 교수님] C 프로그래밍 2강

MinWoo Park·2021년 8월 19일
0

KOCW

목록 보기
2/19
post-thumbnail

Part2 C언어의 기본구조(1)


2.1 C언어의 기본구조

Step1 - 주석(Comment)

  • 메모의 기능
  • 컴파일러는 주석의 내용을 무시

코딩을 하면서 주석을 수없이 사용해왔는데 왜 실행에 영향을 끼치지 않는지 생각을 못했다.
그냥 당연하게 받아들였다.
그 이유는 컴파일러가 주석의 내용을 무시하여 기계어로 변환하지 않기 때문이다.

Step2 - 전처리기와 헤더파일

#include<stdio.h>
  • 1. 전처리기(preprocessor) - #: 컴파일을 수행하기 전에 먼저 처리하는 기호
  • 2. includ: '포함하다'라는 뜻을 가지며, 전처리를 지시
  • 3. 헤더파일(HEADER File): 확장자 .h를 가지는 파일
    - stdio 의미: Standard Input Output (표준 입력 출력)
    • stdio.h 의미: 표준 입력 출력 함수들을 가지고 있는 헤더 파일(*.h, 확장자가 .h로 끝나는 파일, vscode에서 c를 확장 설치 시 생성되는 헤더 파일)

위의 코드를 자연어로 표현하자면
"전처리기야, 표준 입력 출력 함수들을 포함하는 작업을 해줘." 라는 의미가 된다.

표준 입력 장치 키보드로 부터 입력받는 함수, 표준 출력 장치 모니터로 출력하는 함수를 포함하기 위한 작업.

Step3 - main() 함수

    1. main() 함수의 호출종료는 누가 결정하는가?
      - 운영체제에 의해서 맨 처음 호출되고 맨 나중에 종료
    1. 표준 라이브러리 함수(printf(), scanf(), ...)와 헤더 파일은 프로그래밍을 편하게 한다.
    1. 세미콜론(;)은 문장의 끝을 의미하는 마침표와 같은 존재
      c언어에서는 세미콜론 없으면 syntax error 발생
    1. return은 반환과 종료의 의미를 갖는다.
      아래 main함수의 경우 return 0;의 의미는 "운영체제에게 0을 반환하고 main()함수를 종료해라." 라는 뜻.
      return문에 값이 없으면 반환할 것이 없고 함수를 그냥 종료하라는 뜻

참고로 한 프로젝트에는 main함수는 하나여야 함.

int main(void)
{
	printf("Hello C world \n);
    return 0;

int: 출력 형태 main: 함수 이름 (void): 입력 형태
{: 함수의 시작
	함수의 기능
}: 함수의 종료

여기서 int란 integer(정수), void는 빈 공간, 인자가 없다는 것을 의미한다.


2.2 Hello C world

위에서 작성한 코드를 마지막으로 정리

#include <stdio.h> // 전처리가 하는 부분
int main(void) // 운영체제가 호출
{ // 함수 시작
    printf("Hello C world"); // 모니터에 출력

    return 0; // 운영체제에게 값 반환 후, main() 종료
} // 함수 종료

2.3 모니터에 데이터 출력 - printf() 함수

특수 문자

#include<stdio.h>
int main(void) 
{
    printf("Hello C world \n");
    return 0;
}

위의 코드에서 \n과 같은 것을 특수 문자라 하고 뜻은 new line, 개행이다.

사용할 법만 특수 문자는

  • \n: new line
  • \t: tap
  • \\: \
  • \': '
  • \": "

서식 문자(서식화된 문자, formatted)

printf()함수: Print Formatted, 서식화된 의미

숫자 출력 하기

  • %d: Decimal, 10진수 정수(양수, 음수)
  • %i: Integer, 10진수 정수(양수, 음수)
  • %x: Hexadecimal, 16진수 정수(양수만)
  • %o: Octal, 8진수 정수(양수만)
  • %f: float, 10진수 실수(양수, 음수), 6자리까지
  • %lf: long float, 10진수 실수(양수, 음수), 6자리 이상까지 가능

문자와 문자열 출력하기

  • %c: character, 한 글자를 뜻함. 작은 따옴표('')
  • %s: string, 여러 글자를 뜻함. 큰 따옴표("")

10진수 정수(양수)

  • %u: unsinged, 양수는 부호가 붙지 않으니 unsigned
    %d의 경우 음수~양수의 범위를 갖고, %u는 음수의 범위를 양수쪽으로 가져와서 %d보다 표현할 수 있는 범위가 2배로 크다.

기타 실수 표기법

  • %e: exponent, e 지수 표기법
  • %E: exponent, E 지수 표기법
  • %g: 소수점 이하 자리수에 따라 %f, %e 둘중 하나를 선택
    6자리 이하이면 %f, 초과면 %e
  • %G: 위와 같으나 대문자 표기법 사용

2.4 키보드로부터 데이터 입력받기 - scanf() 함수

scanf() 함수

  • 키보드로 데이터를 입력하는 함수
  • stdio.h 헤더 파일이 필요
  • Scan에 Formatted에서 scan에 f를 추가하여 만든 함수 (입력 서식 필요)

scanf() 함수의 기본 구조

  • 입력 서식 문자
  • 변수 (데이터를 저장하는 임시 공간)
scanf("%d", &a); 코드가 있다면 첫  번째 인자가 입력 서식 문자, 두 번째 인자가 변수이다.

위의 코드를 해석하자면
1. 키보드로부터 데이터를 입력 서식 문자 %d 형식으로 입력받는다.
2. 입력받은 데이터를 변수 a에 저장한다.(반드시 변수 앞에 &를 붙인다)
&변수는 변수의 메모리 주소를 의미함.
즉 입력받은 값을 해당 변수의 메모리 주소에 저장하라는 의미
자세한 내용은 다음 장 변수에서 배움


Reference
강의: 박정민, 『C 프로그래밍』, KOCW 한국산업기술대학교, 2강
교재: 박정민, 『열혈강의 C 언어 본색 명강의가 일으키는 C 언어 기적』, 프리렉 (2011), p24-57.

profile
물음표를 느낌표로 바꾸는 순간을 사랑하는 개발자입니다.

0개의 댓글