한 눈에 끝내는 C언어 기초
    • 01
      1강 시작하기에 앞서
    • 강의 대상
      프로그래밍이란?
      C 언어란?
      C 언어 표준
      실습 환경 구축 - 구름IDE
      C 언어 맛보기 - 반복문
      C 언어 맛보기 - 조건문
    • 02
      2강 Hello World!
    • 강의 목표
      기본 구조
      printf로 출력
      이스케이프 시퀀스
      요약 & 정리
    • 03
      3강 간단한 데이터 다루기
    • 변수란?
      자료형이란?
      정수형 변수 출력
      실수형 변수 출력
      입력 받기
      상수
      요약 & 정리
    • 04
      4강 연산자와 수식
    • 기본 연산자
      증감 연산자
      비교 연산자
      논리 연산자
      복합 대입 연산자
      비트 연산자
      비트 이동 연산자
      요약 & 정리 문제
    • 05
      5강 반복문
    • 반복문이란?
      반복문 - for
      반복문 - while
      반복문 - do while
      누적 계산기
      요약 & 정리
    • 06
      6강 배열
    • 배열 만들기
      배열의 주소
      배열의 크기 구하기
      sizeof 복습 문제
      요약 & 정리
    • 07
      7강 문자열
    • 문자열 출력과 입력
      문자열의 길이 구하기
      요약 & 정리
    • 08
      8강 중간평가
    • C 언어 중간 평가
      1번 문제
      2번 문제
      3번 문제
      4번 문제
      5번 문제
      6번 문제
      7번 문제
      8번 문제
      9번 문제
      10번 문제
    • 09
      9강 이중 반복문
    • 이중 반복문 따라해보기
      직각 삼각형 출력하기
      역삼각형 출력하기
      for 문의 다양한 조건
      피라미드 출력하기
      정리 문제
    • 10
      10강 이차원 배열
    • 이차원 배열 만들기
      이차원 배열 입력과 출력
      정리 문제
    • 11
      11강 조건문
    • 조건문이란?
      홀짝 판별하기
      두 가지 조건 동시에 판별하기
      break와 continue
      switch문
      정리 문제
    • 12
      12강 조건문 응용
    • 배열의 홀짝 판별
      가장 작은 수
      소수 구하기
      정리 문제
    • 13
      13강 숫자 정렬하기
    • 두 변수의 값 바꾸기
      버블 정렬
      삽입 정렬
      정리 문제
    • 14
      14강 함수
    • 함수란?
      함수의 형태
      함수 연습
      전역변수와 지역변수
      정리 문제
    • 15
      15강 포인터
    • 포인터란?
      참조 연산자 *
      Call by value & Call by reference
      포인터로 위치 변경
      포인터 연산과 배열
      포인터로 버블 정렬 함수 만들기
      상수 포인터
      이중 포인터와 포인터 배열
      정리 문제
    • 16
      16강 구조체
    • 구조체란?
      typedef를 이용한 구조체 선언
      구조체 배열
      구조체 포인터
      구조체와 함수
      구조체 실습
    • 17
      17강 주사위 게임 만들어보기
    • 다른 라이브러리 파일
      난수(랜덤) 만들기
      주사위 게임 소개
      주사위 게임 만들기 (상)
      주사위 게임 만들기 (중)
      주사위 게임 만들기 (하)
      마무리
    • 18
      18강 기말평가
    • C 언어 기말평가
      1번 문제
      2번 문제
      3번 문제
      4번 문제
      5번 문제
      6번 문제
      7번 문제
      8번 문제
      9번 문제
      10번 문제
      강의 최종 마무리
    C 언어란?
    undefined undefined
    C 언어란?
    default

    C 언어의 유래


    C 언어는 도대체 어떻게 만들어졌는가? 간단한 유래에 대해서 짚고 넘어갑시다. 1971년에 벨연구소의 데니스 리치가 개발한 프로그래밍 언어입니다. 이렇게 오래된 C 언어가 왜 "스테디셀러"일까요? 최근에 나온 쉽고 편리한 프로그래밍 언어도 많고, C 언어보다 배우기에 훨씬 재미있을 수 있습니다. 그럼에도 불구하고 C 언어인 이유는 "왜 지금도 C 언어가 쓰이고 있을까"라는 질문의 답을 알면 이해할 수 있습니다. 이유를 알기 위해서는 다시 과거로 돌아가 볼까요?

    C 언어는 운영체제의 어머니라고 할 수 있는 UNIX 운영 체제를 보다 쉽게 개발하기 위해 만들어졌습니다. 지금은 WINDOWS, MAC OS 등 다양한 운영체제가 존재하지만, 과거 UNIX는 "독보적"이라고 할 수 있을 정도로 편리하고 효율적인 표준 운영체제로 자리 잡았습니다. 기존의 UNIX 운영체제는 "어셈블리 언어"라는 low-level 언어¹로 작성되었습니다. 어셈블리 언어는 컴퓨터 CPU 구조에 변화가 생길 때마다 매번 같은 프로그램을 서로 다른 어셈블리어로 작성해야 하는 문제점이 있었기 때문에 프로그래밍을 하는데 있어서 어떤 개발자가 봐도 이해하고 수정할 수 있는 고급 프로그래밍 언어의 필요성이 점점 증가했습니다. 그 결과 C 언어가 탄생하게 되었고, 어셈블리 언어로 작성된 대부분의 코드는 이후 C언어로 재작성되었습니다. 

    "그럼 지금은 사용하지 않나요?" 라고 묻는다면 그렇지 않습니다. 여전히 UNIX는 다양한 곳에서 사용되고 있는데요, 예를 들어 스마트폰에서 가장 기본이 되는 운영체제는 UNIX를 기반으로 만들어졌습니다. 그리고 UNIX의 기반이 되는 언어는 C언어죠.

    1. low-level 언어란 사람보다 컴퓨터에 더 가까운 언어를 말합니다. 반대로 사람에 더 가까운 언어를 high-level 언어, 고급 언어라고 말합니다.


    C 언어를 왜 배우나요?


    C 언어는 정말 많은 장점을 가지고 있습니다. 고급 언어에 속하지만 하드웨어를 직접 제어할 수 있고, 프로그래밍할 때 받는 제한이 거의 없습니다. 이러한 장점은 때에 따라 단점이 될 수 있지만, C 언어의 목적을 생각하면 이해가 가는 특징입니다. 강력한 장점이 있다면 단점도 있겠죠? 다른 프로그래밍 언어와 마찬가지로 C 언어 또한 프로그래머를 위한 언어지만, C 언어는 이제 막 프로그래밍을 배우기 시작한 초보가 아닌, 이미 프로그래밍에 익숙한 전문 프로그래머에게 좀 더 편리한 언어입니다. C 언어를 본격적으로 활용하여 프로그램을 개발하려면 컴퓨터에 대한 풍부한 이해와 숙련도가 있어야 하기 때문입니다. 그런 의미에서 처음 프로그래밍을 시작하는 사람들에게 C 언어는 어렵고 재미없기 때문에 그다지 좋은 언어가 아닐 수도 있습니다. 앞서 말했듯 지금은 다양한 프로그래밍 언어가 있고, C 언어보다 재미있는 언어도 많으니까요.

    그럼에도 불구하고 많은 사람들이 C 언어를 첫 프로그래밍 언어로 선택하는 이유는 C 언어가 오래되었기 때문입니다. Java, C#, Objective-C 등 C 언어를 기반으로 만들어진 언어가 정말 많습니다. 이런 언어들을 C-like Language라고 하며, 이 언어들은 C 언어를 익히고 나면 매우 쉽게 익힐 수 있습니다. 또한 C 언어는 일반적으로 컴퓨터 혹은 시스템 자체를 개발하는데 주로 사용하기에, 프로그래밍에 대해서 이해하고 동작 구조를 알기에 매우 적합한 언어라 말할 수 있습니다.

    이번 기회에 C 언어로 프로그래밍에 익숙해지신 뒤, 목적에 맞는 C-like Language를 찾는 것을 추천드립니다.

    Q&A