C 언어
[C 언어 기초] 13. 읽기 쉬운 프로그램을 작성하는 방법
[C 언어 기초] 13. 읽기 쉬운 프로그램을 작성하는 방법
2016.12.31읽기 쉬운 프로그램을 작성하는 방법프로그램은 읽기 쉽게 만드는 것이 좋습니다. 프로그램을 읽기 쉽게 만들면 이해하기가 쉽고, 수정하거나 변경하는 것도 수월해집니다. 또한, 그 프로그램이 무슨 일을 하는지 자신의 개념을 명료화하는 데 도움을 줍니다.가독성을 높이는 방법에는 두 가지가 있는데, 의미를 한눈에 알아볼 수 있는 식별자를 사용하는 것과 주석을 붙이는 것입니다. 이 두 가지 행동은 상호보완적이라 변수의 이름을 width라 한다면, 그 변수가 폭(width)을 의미한다고 주석을 붙일 필요는 없을 것입니다. 그러나 변수 이름을 animal_3과 같이 정했다면, 그 변수가 어떤 행동을 하는지 설명할 필요가 있을 것입니다.또 다른 방법은 서로 다른 기능을 수행하는 섹션들을 빈 라인을 사용해서 구분하는 것입..
[C 언어 기초] 12. 프로그램의 기본적인 구조
[C 언어 기초] 12. 프로그램의 기본적인 구조
2016.12.30프로그램의 기본적인 구조프로그램의 예제를 살펴보면서 C 프로그램의 몇 가지 규칙에 대해 알아보았습니다.프로그램은 하나 또는 그 이상의 함수들로 구성되며, 그중 하나는 반드시 main()으로 이름을 정해야 합니다.함수는 헤더와 몸체로 구성되며, 함수 헤더는 그 함수가 리턴하는 데이터의 타입과 전달되는 데이터의 타입, 그리고 함수의 이름으로 구성됩니다. 괄호를 보고 함수라는 것을 알 수 있으며, 괄호 안은 비어있을 수도 있습니다. 중괄호({})로 둘러싸인 몸체는 C 언어의 문장들로 구성되며, 각각의 문장은 세미콜론(;)으로 끝납니다.예제 2.1에서는 사용할 변수를 선언하는 선언문과 변수에 값을 대입하는 대입문이 있습니다. 그다음에 각각 printf() 함수를 호출하는 3개의 출력문이 있습니다. 마지막으로 m..
[C 언어 기초] 11. 예제 2.1 다시 살펴보기
[C 언어 기초] 11. 예제 2.1 다시 살펴보기
2016.12.29예제 2.1 다시 살펴보기앞에서 예제 2.1을 대략 살펴봤으니, 이번에는 프로그램의 각 라인을 보면서 더 자세히 들여다보는 것을 목표로 할 것입니다. #include 지시자와 헤더 파일 #include 이것이 프로그램의 첫 번째 라인입니다. #include 는 #include 라인이 적힌 그 위치에 stdio.h 파일의 전체 내용을 불러옵니다. 공통으로 사용하는 파일이 있을 때 include로 그 파일을 불러온다면 상당히 편리하게 작성할 수 있습니다.#include 문은 C의 전처리기 지시자입니다. 일반적으로 C 컴파일러는 컴파일하기 전에 몇 가지 작업을 미리 실행하는데 이 작업을 전처리(preprocessor)라 합니다.stdio.h 파일에는 입력 함수와 출력 함수에 대한 정보가 들어있으며, 이것을 호..
[C 언어 기초] 10. 간단한 C 언어 예제
[C 언어 기초] 10. 간단한 C 언어 예제
2016.12.28간단한 C 언어 예제C 언어로 만들어진 프로그램은 다소 특이한 모습을 하고 있고, 이상한 기호들이 여기저기서 사용됩니다. 하지만, 이 강좌를 읽어 나가다 보면 이런 C의 특이한 모습과 기호들도 점차 낯설지 않고 친숙해질 것입니다. 또는 C에서 파생된 많은 언어에 이미 익숙하다면 C 소스가 편하게 느껴질 것입니다.간단한 C 예제 프로그램을 하나 살펴봅시다. 예제 2.1에 있는 이 프로그램을 통해서 C 프로그래밍의 기본적인 특징들을 설명하겠습니다.예제 2.1 - first.c 프로그램#include int main(void) { /* 이 프로그램은 간단한 출력문입니다. */ int num; num = 1; printf("안녕 "); printf("세상! \n"); printf("num에는 %d이 저장되어 있..
[C 언어 기초] 9. GNU 컴파일러 컬렉션과 LLVM 프로젝트
[C 언어 기초] 9. GNU 컴파일러 컬렉션과 LLVM 프로젝트
2016.12.27GNU 컴파일러 컬렉션과 LLVM 프로젝트1987년에 시작된 GNU(GNU is Not Unix)는 Unix 형식의 무료 소프트웨어를 수없이 많이 개발해 온 대규모 협회 프로젝트입니다. GNU의 산출물 중 하나가 GNU 컴파일러 컬렉션(GNU Compiler Collection) 즉, GCC입니다. 여기에는 C 컴파일러도 포함되어 있으며, 변화하는 C 표준을 따라잡기 위해 계속해서 노력하고 있습니다. GCC는 각종 하드웨어 플랫폼과 Unix, Linux, Windows 등 다양한 운영체제에서 사용할 수 있으며, gcc 명령으로 실행합니다. 또한, gcc를 사용하는 많은 시스템이 cc 명령을 gcc의 별칭(alias) 명령으로 사용합니다.LLVM 프로젝트는 일리노이 대학에서 2000년 연구 프로젝트로 시작..
[C 언어 기초] 8. 프로그램 제작 과정
[C 언어 기초] 8. 프로그램 제작 과정
2016.12.26프로그램 제작 과정사용하는 컴퓨터의 환경에 따라 프로그램을 만드는 과정이 달라집니다. C는 이식성이 있어서 Unix, Linux, MS-DOS, Windows, Macintosh OS 등의 환경에서 사용될 수 있습니다.먼저, 공통적인 C 언어의 몇 가지 요소를 살펴봅시다. C 프로그램이 실행되기까지의 과정을 꼭 알아둬야 하는 것은 아니지만, 이것은 기초지식이며, 또한 C 프로그램을 만들기 위해 왜 이런 절차를 거치는지 그 이유를 이해하는 것에 도움이 됩니다.C 언어 파일은 텍스트 파일로 저장해야 하며, 이 파일은 .c로 끝나야 합니다(예를 들면 first.c, second.c) 마침표(.) 앞부분을 기본명이라 하고, 마침표 뒷부분을 확장자라 합니다. 그러므로 위에서 first는 기본명이고 c는 확장자이며..
[C 언어 기초] 7. C를 활용하는 일곱 단계
[C 언어 기초] 7. C를 활용하는 일곱 단계
2016.12.25C를 활용하는 일곱 단계지금까지 설명했듯이, C 언어는 컴파일하는 언어입니다. 만약 다른 컴파일 언어를 사용해본 경험이 있다면, C 프로그램을 활용하는 방법에 금방 적응할 수 있습니다. 하지만 인터프리터 언어만 알고 있거나, VB와 같은 그래픽 지향의 언어만 알고 있다면, 혹은 프로그래밍에 대한 지식이 전혀 없다면, 컴파일하는 방법을 배워야 합니다. 먼저 프로그래밍의 전체적인 윤곽을 설명하기 위해 C 프로그램을 작성하는 일곱 단계로 나누어서 설명하려 합니다.1단계 : 프로그램의 목적 정의 먼저, 어떤 프로그램을 만들 것인지 결정해야 합니다. 프로그램이 요구하는 정보, 수행할 계산 및 조작, 사용자에게 제공할 정보 등에 대해 생각해야 합니다. 이 계획 단계에서는 C 언어와 같은 컴퓨터 언어가 아닌 우리가 ..
[C 언어 기초] 6. C 언어 표준
[C 언어 기초] 6. C 언어 표준
2016.12.24C 언어 표준가장 이상적인 것은 우리가 C 프로그램을 작성했을 때, 그 프로그램이 특정 하드웨어를 사용하는 프로그램이 아닌 이상 모든 C 컴파일러에서 동작하는 것입니다. 이것을 실현하기 위해서는 서로 다른 여러 C 컴파일러들이 같은 하나의 규칙을 사용해야 합니다.처음 C 언어에 대한 마땅한 표준이 없던 시절, Brain Kernighan과 Dennis Ritchie가 저술한 "The C Programming Language"의 초판이 C 언어의 표준으로 자연스레 받아들여졌습니다. 그 표준을 K&R C 또는 Classic C라고 부릅니다. 그 책의 부록으로 실려 있는 "C Reference Manual"이 C 컴파일러들에 대해 가이드 역할을 했지만, 이 부록에는 C 언어만 정의하고 C 라이브러리에 대해서는..
==과 =의 오타를 피하는 방법
==과 =의 오타를 피하는 방법
2016.12.23==과 =의 오타를 피하는 방법다음과 같은 소스코드가 있다고 해봅시다.if (num == 10) printf("num은 10입니다. \n");cs만약, 이 코드를 잘못입력해서 if (num = 10)과 같이 입력을 했을 때 문법적으로는 틀린 것이 없으므로 문법 오류가 발생하지 않아서 발견하기가 상당히 어려운 언어가 됩니다.하지만, if (10 == num)으로 순서만 바꾸면 문법적으로는 아무런 이상이 없으며, ==를 잘 못 입력해서 =으로 입력했을 시 if (10 = num)이 되어서 문법 오류가 발생하므로 논리에러를 잡아내는 데 유용합니다.
[C 언어 기초] 5. 고급 레벨 언어와 컴파일러
[C 언어 기초] 5. 고급 레벨 언어와 컴파일러
2016.12.23고급 레벨 언어와 컴파일러C와 같은 고수준의 언어는 여러 가지 방법으로 프로그램을 단순화시켰습니다. 1. 명령을 수치 코드로 나타낼 필요가 없습니다. 2. 사용하는 명령들이 사람들이 사용하는 언어에 더 가깝습니다.CPU에 명령을 내릴 때 위와 같은 절차를 신경 쓸 필요 없이 추상적인 수준에서 원하는 것을 표현할 수 있습니다. 예를 들면, 두 수를 더하는 것을 다음과 같이 표현할 수 있습니다.total = num1 + num2;cs이와 같은 코드는 어떤 일을 하는지 쉽게 예측할 수 있습니다. 하지만, 수치 코드로 적힌 기계어 코드는 무슨 일을 하는 코드인지 이해하기가 쉽지 않습니다.하지만, 컴퓨터는 위와 같은 명령을 이해할 수 없습니다. 이것을 해결하기 위해 사용되는 것이 컴파일러(compiler)인데, ..
임시변수 없이 swap 구현하기
임시변수 없이 swap 구현하기
2016.12.22임시변수 없이 swap 구현하기먼저 이 방법을 알려주는 것은, 이 것이 위험하기 때문에 지양해야 한다는 것을 알리기 위함입니다.먼저, 그 방법을 소개해보면 #define SWAP(x, y) {(x)^=(y)^=(x)^=(y);} 이와 같은 매크로가 정의되어 있다고 해봅시다.int main() { int x = 10; int y = 20; printf("X = %d, Y = %d", x, y); x ^= y ^= x ^= y; //SWAP(x, y); printf("X = %d, Y = %d", x, y); return 0;}Colored by Color Scriptercs위의 코드와 같이 매크로가 풀리게 될 텐데, 이것을 하나씩 뜯어보면 제일 위의 것부터 x ^= y; -> x = x ^ y; 그러면 x..
[C 언어 기초] 4. 컴퓨터의 동작 방법
[C 언어 기초] 4. 컴퓨터의 동작 방법
2016.12.22컴퓨터의 동작 방법C 언어로 프로그램을 작성하는 방법을 배우기 전에, 컴퓨터가 어떻게 동작하는지 조금 알아두는 것이 좋습니다. 이 지식은 C 프로그램을 작성하는 것뿐만 아니라, 작성한 프로그램을 실행시킬 때 어떤 일이 일어나는지까지 이해하는 데 도움을 줍니다.컴퓨터는 여러 가지 다양한 요소로 구성되어 있습니다. ▶ CPU는 컴퓨터가 하는 일의 대부분을 처리합니다. ▶ RAM은 프로그램과 파일들을 담는 저장공간의 역할을 합니다. ▶ 하드디스크 장치는 컴퓨터 전원이 꺼져 있을 때도 프로그램과 파일들을 기억합니다. ▶ 키보드, 마우스 등과 같은 주변 장치는 컴퓨터와 사용자가 의사소통하는 장치입니다.프로그램을 제어하는 CPU CPU가 하는 일은 생각보다 단순합니다. 메모리에서 명령을 하나 가져와서 실행한 뒤, ..