공지사항2009/08/15 10:19

저의 강좌는 '맑은 고딕' 체에 최적화 되어 있습니다. 컴퓨터에 맑은 고딕체가 설치되지 않은 분들은 아래의 링크를 클릭하셔서 설치 하시기 바랍니다. (만약 맑은 고딕체가 무엇인지 모르신다면 여기를 클릭하여 한 번 봐보세요)
Windows XP (Vista 와 Win 7, Ubuntu Linux 에는 기본으로 깔려 있습니다.)
http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=c55a8c2b-b451-4d1f-87f3-690f78342ae8
참고로 윈도우즈 정품 인증이 안되어 다운로드가 불가능한 분들은 아래 링크에서 다운 받으세요.
http://qwef.egloos.com/582254

안녕하세요 여러분. 씹어 먹는 C 언어를 연재하고 있는 Psi 입니다. 강좌는 지속적으로 추가될 예정입니다. 참고로, 이전 강좌와 다음 강좌의 기간은 아래의 함수 식에 의해 정의됩니다.


더보기


  아마, 소스 코드가 난해한 사람들이 있으리라 생각됩니다. 제가 강좌를 가리키고자 하는 사람들 (즉, 生 NEWBIE ) 의 경우는 100% 모르 겠지요. 하지만 제가 강좌를 마무리 짓고 강좌를 끝낼 즈음에는 이 강좌를 충실히 보신 모든 분들이 쉽게 이해할 수 있는 코드가 되겠지요.

  제 강좌는 저 만의 머리에서 나온 것이 아니라 제가 참고했던 무수히 많은 책 + 인터넷 (잡) 지식 + 인터넷 강좌 + ...  를 짬뽕해서 나온 것이므로 한 번쯤 C 언어를 배워본 사람들도 강좌를 보시는 것이 좋을 법 합니다.

  C 언어를 공부하면서 반드시 지켜야 할 수칙

강좌를 한 번 다 읽었다면 내가 뭘 배웠는지 머리속으로 그려본다.

만약 위 과정이 잘 되지 않는다면 다시 한 번 강좌를 읽는다. 만약 강좌가 이해가 안되면 혼자서 낑낑 거리지 말고 (물론 이러한 자세도 중요하지만) 거침없이 댓글을 올리면 48 시간 대기 중인 Psi 가 댓글을 달아준다. 다만 잘 모르겠는 부분은 정확히 지적해 주면 좋다.

물론 강좌가 이상하다면 거침없이 댓글을 날려야 한다. 가끔씩 필자도 오타(!)를 내거나 오개념(설마....) 을 올릴 수 도 있다.


강좌에 나오는 소스 코드들은 모두 '손' 으로 직접 쓴다. Ctrl + C 는 절대 금물. 다만, 소스 코드를 아무리 그대로 배꼈는데도 불구하고 이상한 오류가 나는 경우는 그냥 복사해도 좋다. 하지만 그 오류가 무엇인지 알아내는 것이 더욱 중요하다.

강좌를 따라 프로그램을 만들면 자기 멋대로 수정하는 버릇(?) 을 가져야 한다.

자기가 만든 '아무리 이상한' 프로그램이라도 자부심을 갖고 인터넷에 올려보자.

현재까지 나온 강좌들의 목록 입니다.

1. C 언어가 뭐야?
C 언어를 배우기 위한 기본적인 프로그램을 설치한다.

2 - 1. C 언어 본격 맛보기
Hello, World! 를 만들고 이에 대한 설명

2 - 2. 주석(Comment)에 대한 이해
주석에 대해 자세히 파헤친다.

2 - 3. 수를 표현하는 방법(기수법)
십진법, 이진법, 16 진법에 친숙해 지고 컴퓨터 메모리의 단위(비트, 바이트, 워드, 더블워드)를 안다.

3. 변수가 뭐지?
변수(정수형, 실수형) 가 무엇인지 배우고, 기수법에 대해 알아본다

4. 계산하리
C 언어의 연산자(사칙연산, 쉬프트, 비트 연산자) 들에 대해 알아본다.

5. 문자 입력 받기
문자 데이터에 저장, scanf 의 이용

6. 만약에...(if 문)
if 문에 대해 알아본다. (물론 if-else 도..) 

7. 뱅글 뱅글 (for, while)
반복문(loop) 에 대해 알아본다.

8. 우분투 리눅스에서 C 프로그래밍 하기
우분투 리눅스에서 GCC 의 설치, GCC 를 이용한 프로그래밍, 초보적 vi 사용법을 배운다

9. 만약에.. 2탄 (switch 문)
switch 문 사용하기, switch 문은 if 문과 내부적으로 무엇이 다를까?

10. 연예인 캐스팅(?) (C 언어에서의 형 변환)
형변환(캐스팅) 하기, 부동 소수점 방식의 원리와 이해, 비트와 바이트에 대해 알아본다.

11 - 1. C 언어의 아파트 (배열), 상수
C 언어의 배열(Array) 의 대한 기본적 내용과, 상수에 대해 알아본다.

11 - 2. C 언어의 아파트2 (고차원의 배열)
2 차원 배열에 대한 이해와 메모리 상의 형태, 그리고 3차 이상의 배열에 대해 알아본다.

12 - 1. 포인터는 영희이다! (포인터)
포인터에 대해 기초를 완벽히 다져준다! * 와 & 연산자의 이해

12 - 2. 포인터는 영희이다 2! (포인터)
상수 포인터, 포인터의 덧셈과 뺄셈, 배열과 포인터와의 관계, [] 연산자를 알아본다!

12 - 3. 포인터는 영희이다 3! (포인터)
배열 포인터 (1 차원, 2 차원 등등), 포인터 배열, 더블 포인터에 대해 알아본다!

13 - 1. 마술 상자 함수(function)
함수의 필요성, 함수의 정의, 함수의 리턴값, 함수의 인자, main 함수에 대해 알아본다!

13 - 2. 마술 상자 함수 2 (function)
포인터 형태의 인자, 배열을 인자로 받기, 함수의 원형에 대해 알아본다!

13 - 3. 마술 상자 함수 3 (function)
더블포인터 인자, 2차원 배열 인자, 상수 인자, 함수 포인터에 대해 알아본다.

13 - 4. 마술 상자 함수 (생각해볼 문제에 대한 아이디어)
13 - 3 강의의 마지막 생각해볼 문제들은 정말로 중요한 것입니다. 이 강의에서는 이들에 대해 다루고 있습니다.

14. 컴퓨터의 머리로 따라가보자 - 디버깅(debugging)
C 프로그래밍에 관련은 없지만 컴퓨터 프로그래밍을 한다면 매우매우 중요한 것이 바로 디버깅이 아닐까 싶습니다.

15 - 1. 일로 와봐, 문자열(string)
C 프로그래밍에서 중요한 부분인 문자열에 관해 알아본다.

15 - 2. 일로와봐, 문자열(string) - 버퍼에 관한 이해
입력 버퍼(stdin) 에 대한 이해와 고질적은 scanf 문제의 발생 원인과 해결책에 대해 알아본다.

15 - 3. 일로와봐, 문자열(string) - 문자열 지지고 볶기 & 리터럴
문자열 리터럴(literal) 에 관한 이해 및 문자열을 이용한 여러가지 작업들에 대해 알아본다.

15 - 4. 일로와봐, 문자열(string) - 도서 관리 프로젝트
도서 관리 프로젝트를 만들며 문자열을 다루고, 함수를 이용한 프로그래밍에 친근해진다.

16 - 1. 모아모아 구조체(struct)
구조체에 대한 기본 개념 정의 및 이해, 구조체 포인터 및 -> 연산자에 대한 설명

16 - 2. 모아 모아 구조체(struct) - 구조체 인자로 가진 함수
구조체 포인터에 대한 확실한 이해, 구조체 포인터 인자로 받는 함수, 구조체의 대입에 대해 알아본다

16 - 3. 구조체와 친구들(공용체(union), 열거형(enum))
구조체의 나머지 잡다한 기능들에 대한 이해, 공용체, 열거형에 대해 알아본다.

17. 변수의 생존 조건 및 데이터 세그먼트의 구조
여러가지 형식의 변수(지역, 전역, 정적) 에 대해 알고 데이터 세그먼트의 구조를 파악한다.

18 - 1. 파일 뽀개기 (헤더파일과 #include, 모듈화 프로그래밍 )
하나의 소스파일에서 탈피해 여러가지 파일들로 나누어 모듈화 프로그래밍을 하고 헤더파일과 #include 를 이해한다.

18 - 2. 파일 뽀개기 (# 친구들, 라이브러리 )
여러가지 전처리기 명령(#include, #define, #ifdef, #endif, #else) 에 대해 알고, 표준 C 라이브러리를 사용한다.


19. main 함수의 인자, 텅 빈 void 형
void 형 포인터, 함수에 대해 알고, main 함수의 인자 (argc, argv) , 그리고 포인터 배열에 대해 이해한다.

20 - 1. 동동동 메모리 동적 할당(Dynamic Memory Allocation)
malloc 함수에 대한 이해, 1 차원 및 2 차원 배열 (정확히 말하면 2 차원 배열과는 다르다)  메모리 동적 할당.

20 - 2. 메모리 동적 할당 + 메모리 갖고 놀기
구조체의 동적 할당, 노드(Node) 의 이해, 메모리 처리 관련 함수 (memmove, memcmp, memcpy) 의 이해

21. 매크로 함수, 인라인 함수
매크로 함수(macro function) 와 인라인 함수(inline function) 에 대해 이해한다.

22. C 언어의 잡다한 키워드들 (typedef, volatile, #pragma)
typedef, volatile, #pragma 키워드에 대해 알아보고, 특히 #pragma pack 과 #pragma once 에 대해서도 알아본다.

23 - 1. 파일 하고 이야기 하기 (파일 입출력에 대한 기본적 이해)
파일 입출력과 스트림이 무엇인지 알고 fopen, fgets, fputs, fgetchar, 파일 위치 지정자, fseek 함수에 대해 알아본다.

23 - 2. 파일 하고 이야기 하기 (파일 입출력)
파일 위치 지정자와 fopen 의 자세한 사용법("r+", "w+", "a", "a+") 에 대해 이해하고 fscanf, fprintf 함수를 다루며 도서 관리 프로그램에 입출력 기능을 추가해본다

23 - 3. 파일 하고 이야기 하기 (파일 입출력 - 마무리)
지난 도서 관리 프로그램의 마무리 이다.

24. 더 빠르게 실행되는 코드를 위하여 (C 코드 최적화)
더 훌륭한 코드를 위해서 C 언어에서 코드를 최적화 할 수 있는 여러가지 기법들을 살펴본다.

25. 강좌를 마치며






저작자 표시

티스토리 툴바