한 눈에 끝내는 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번 문제
      강의 최종 마무리
    프로그래밍이란?
    01 1강 시작하기에 앞서
    프로그래밍이란?
    default

    프로그래밍(Programming)이란 프로그램을 만드는 행위, 간단히 개발이라고 말해도 좋습니다.  그리고 프로그래머(Programmer)는 프로그래밍하는, 즉 프로그램(Program)을 만드는 사람입니다. 프로그래머와 프로그래밍에 공통으로 사용되는 단어, 프로그램이란 무엇일까요? 프로그램은 우리 주변에서 충분히 찾아볼 수 있습니다. 지금 세상에서 프로그래밍과 관련되지 않은 것들을 찾아보는 게 더 어려울 정도입니다. 컴퓨터 게임, 온라인 메신저, SNS뿐만 아니라 일상 생활에서 사용하고 있는 생활 가전 제품에도 프로그램이 탑재되어 있습니다. 프로그램은 특정 목적을 위해 컴퓨터에 내리는 명령의 집합으로 목적을 무엇으로 삼느냐에 따라서 전혀 다른 종류의 프로그램이 될 수 있습니다. 예를 들어 컴퓨터 게임은 여러 사람이 이야기할 수 있는 채팅 기능, 몬스터를 때리는 공격 기능, 사람들과 물건을 사고 팔 수 있는 거래 기능 등 다양한 기능을 가지고 있는 복합프로그램인 반면, 냉장고는 사람이 설정한대로 냉장고 내의 온도를 설정하는 비교적 단순한 프로그램이 내장되어 있습니다. (요즘 점점 가전 제품도 기능이 많아지고 있지만 필수 기능을 위주로 든 예시입니다.)

    이제 프로그램이 무엇인지, 프로그래머가 어떤 사람인지, 프로그래밍이 어떤 것인지 간단하게나마 이해가 되시나요?


    프로그래밍... 어렵지 않나요?


    프로그래밍(Programming)이라는 단어를 들었을 때, 어렵고 난해한 것이라고 대부분의 사람들이 생각합니다. 프로그래밍은 어려운게 맞습니다. 처음 프로그래밍을 시작한다면  프로그래밍에 대한 감을 잡기까지 적지 않은 시간이 걸리기에 더욱 쉽지 않습니다. 그 이유는 우리가 컴퓨터에 대해 이해하고 있지 않기 때문입니다. 게임을 즐기거나 램(RAM), 하드디스크, 그래픽카드 같은 컴퓨터 부품이 어떤게 좋은지 관심을 가져본 적은 있으나 정작 우리는 컴퓨터에 대해 이해하고 있는 것이 매우 적습니다.

    인터넷에 돌아다니는 유머 글 하나를 예시로 들어볼까요? 

    개발자 : 여보 나 지금 퇴근했어. 집에 가는 길에 마트 들를 건데 뭐 사다줄까?
    아내 : 우유 두 개 사와.
    개발자 : 그리고?
    아내 : 만약 마트에 달걀이 있으면 여섯 개 사다 줘.
    귀가한 개발자, 아내에게 우유 6개를 건넨다.
    아내 : 왜 이렇게 우유를 많이 샀어?
    개발자 : 마트에 달걀이 있길래.

    일반적으로 생각하면 개발자의 행동이 잘 이해가 되지 않습니다. 대부분의 여러분이 생각했듯이 아내의 의도는 우유 2개 그리고 달걀이 있을 경우 달걀 6개를 구매해오라는 것이었지만, 실제로 개발자가 아내에게 건내준 건 우유 6개 뿐이었습니다. 전자(우유 2, 달걀 6)는 사람이 일을 처리하여 얻은 결과고, 후자(우유 6)는 컴퓨터가 일을 처리하여 얻은 결과입니다.

    default

    그렇다면 왜 컴퓨터와 위의 개발자는 여섯 개의 우유를 구매했을까요? 사람은 어느 정도 융통성이 있어 상황에 맞춰 행동하지만, 컴퓨터는 융통성 없이 주어진 명령대로만 행동합니다. 컴퓨터처럼 행동하는 이 개발자가 알맞게 물품을 사오게 하려면 "만약 마트에 달걀이 있으면 여섯 개 사다 줘"가 아니라 "만약 마트에 달걀이 있다면 달걀 여섯 개를 사다줘"라고 말했어야 합니다. 참 사소하지만 컴퓨터에게는 매우 중요한 문제입니다. 이렇듯 프로그래밍에 익숙해지려면 명령을 내렸을 때 컴퓨터가 일을 처리하는 방식과 사람이 일을 처리하는 방식의 차이점에 대해 이해해야 합니다. 윗 글을 개발자가 아닌 사람들이 본다면 조금 의문을 품을 수도 있지만, 개발자라면 단번에 이해하고 납득했을 것입니다. 컴퓨터와 같은 행동 방식에 대해 잘 이해하고 있고 익숙하기 때문이죠.

    다시 한 번 원점으로 돌아와서 "프로그래밍이 어렵지 않나요?"라는 질문에 답해보겠습니다. 프로그래밍은 천재들만 할 수 있다든지, 특출난 재능이 있어야 한다든지 그런 거창한 것이 아닙니다. 프로그래밍이란 결국 컴퓨터가 행동하는 방식을 이해하고 컴퓨터가 알아 들을 수 있도록 명확한 명령을 작성해주는 것 뿐입니다. 윗 글을 이해할 수만 있다면 프로그래밍을 시작하는 데 그것만으로도 충분합니다. 

    default


    왜 프로그래밍을 배워야 하나요?


    왜 프로그래밍을 배워야 할까요? 재밌는 게임을 만들기 위해? 세계적인 서비스를 만들기 위해? 그런 것들도 하나의 답이 될 수 있겠지만, 저는 사고하는 법을 배울 수 있기 때문에 프로그래밍을 배워야 한다고 생각합니다. 프로그래밍은 주어진 문제를 효율적으로, 체계적으로, 창의적으로 해결할 사고력와 판단력을 길러줍니다. 문제에 다양한 관점에서 접근할 수 있게 되고, 생각의 폭을 넓혀주죠. 프로그래밍을 통해서 세상을 보는 눈이 달라질지도 모릅니다. 프로그래밍을 배우기 이전과 이후로 생각의 경계가 나눠질 정도로 말이죠.

    컴퓨터 없는 일상을 생각조차 못 할 지금의 세상에서 컴퓨터가 어떻게 움직이는지 알고, 이해하고, 그에 맞는 사고를 기르는 것은 몇 번을 강조해도 모자라지 않습니다. 당신의 꿈이 프로그래머가 아니더라도, 프로그래밍은 당신의 꿈을 현실로 만드는 데에 힘을 보태주리라 생각합니다. 아이디어가 있다면 그 아이디어를 구체적으로 실현시켜주는 가장 빠른 방법은 프로그래밍이니까요.

    프로그래밍을 왜 배워야 한다고 묻는다면, 자신의 꿈을, 미래를 위해서라고 자신있게 대답하세요!


    프로그래밍으로 할 수 있는 것에는 무엇이 있나요?


    머리 속으로 생각하고 있는 대부분의 것들을 구현할 수 있습니다. 게임, 메신저나 SNS뿐만 아니라 다양한 웹 사이트도 만들 수 있습니다. 스마트폰의 어플도 만들 수 있겠지요. 

    물론 이 강의를 통해 C언어를 배우고 난 뒤 당장 저런 대단한 결과물을 만들 수는 없을 겁니다. 사실 이 강의를 끝날 때까지 흰 배경과 까만 글씨 혹은 까만 배경과 알록달록한 글씨만 보시게 될 거에요. 웹 프로그래밍은 자바스크립트나 html/css 등을 배워야 하고, 게임을 만드려면 C++이나 unity를 알아야 합니다. 안드로이드 앱은 자바나 코틀린, IOS 앱은 스위프트나 Objective-c를 이용해야 하고요.

    하지만 이 강의를 통해 C언어를 배우며 컴퓨팅적 사고력을 키운다면, 강의가 끝난 후 다른 프로그래밍 언어를 배우더라도 훨씬 쉽게 접근할 수 있습니다. 그렇게 프로그래밍에 한발짝씩 다가간다면 여러분들이 원하는 프로그램을 만드는 것도 그렇게 먼 미래는 아닐 것입니다.

    질문하기