프로그래밍/C언어 14

Yoda Condition 이란 방어코딩의 종류에 대해 알아보자!!

우리가 보통 C언어에서 if( 변수 == 상수 ) 이런 방식으로 많이 써왔는데 C 언어를 만든 개발자는 굉장히 똑똑한 사람이기에 자질구레한 실수를 하지 않는 사람이었나보다. if( val = literal) 이런 식으로 = 하나를 빼도 컴파일에러가 나지 않는다. 이것은 향후 런타임 에러를 초래한다. 이 방식을 if ( literal == val ) 이러한 방식으로 자리를 바꾸어 쓰는것이다. 이렇게 사용하면, if ( literal = val ) 이렇게 = 하나가 빠지면 에러를 나타낸다. C언어는 이제 무조건 요다 컨디션을 통한 방어코딩을 하자!!

3강. 반복문

반복문이 뭐냐. Hi~ 를 3번 출력할거야. 그럼 printf 함수를 3번 써도 같습니다. 하지만 프로그램 코드는 라인수를 적게 하며 효율이 높은 코딩이 좋은 코딩습관이므로. 반복문을 사용합니다. 반복문은 3가지가 존재합니다. while(탈출조건) { } do { }while(탈출 조건); 단. while, do~while은 반복문 스코프내에 증감문이 있어야 합니다. 그리고 탈출조건이 참 중요합니다. 조건문이라고 하는데 반복루프가 무한루프에 빠지지 않기 하기 위한 탈출 조건 = 조건문 입니다. while 과 do ~ while 의 차이점은 조건문의 위치에 따라 while은 시작부터 조건을 검사하여 불일치 하면 실행을 하지 않고 넘어 갈 수도 있습니다. do~while은 무조건 한 번은 실행을 합니다. 그..

2강. C언어 입문기

C언어라는 것을 입문하기 위해 Tool이 필요로 합니다. 컴파일러라는 녀석이 필요로 하죠. 컴파일러에 관한 지식은 전문적으로 배워야 하기에 다루지 않고 그런 것이 있다는 겉핡기로 지나가도록 할게요 ^^ Tool은 바로 자주 사용하는 비주얼스튜디오를 기본으로 할게요. 비주얼 스튜디오는 대학교를 다니시는 학생이시면 드림스파크에서 학교 웹메일로 인증을 받으시면 거의 대부분의 정품 Tool을 사용하실 수 있습니다. 만약 그렇지 못하다 하시면 Dev C++ 이라는 프로그램을 사용하셔야 합니다. https://www.dreamspark.com/ 드림스파크 주소입니다. 프로그램을 설치해주시고 이제 프로그래밍을 하시면 됩니다. 어떻게 하느냐? 비주얼 스튜디오를 실행시키고 file -> New project 를 가셔도 ..

1강. C언어 네 이놈.

일단 컴퓨터공학을 전공하는 사람으로서 C언어는 대학 커리큘럼상 처음 만나는 프로그래밍 언어입니다. 그렇지만 처음 만난다고 해서 가장 쉬운 언어는 아닙니다. 오히려 어려운 언어에 속하죠. 다만, 왜 이런 교과과정인지는 모르지만 이해는 합니다. 즉, 프로그래밍은 쉬운 것이 아니다. 어렵다. 이 길을 가고 싶느냐? 라고 묻는건지도 모르죠? ^^ 저도 프로그래밍을 정말 완전히 체험 한 것은 아니지만 틈틈히 제가 만드는 것들. 나누고자. 제가 또 기억하고자. 하는 이유로 공유를 하려고 합니다. C언어는 어려운 언어다. 이 것 기억하고 출발하죠?

1.5.2 Count Chracters 2st version

loop를 for - loop를 쓰고 변수를 double형으로 쓴다. code #include /*****count chracters in input; 2st version *****/ int main() { double nc; for( nc = 0; getchar() != EOF ; ++nc ) ; printf("%0.f\n", nc); return 0; } %f 를 쓰는 것은 float , double형변수가 출력 format으로 쓰고 .0은 decimal point의 fraction part만 취한다는 의미로 0은 소수점 0번째이므로 소수점을 버리겠다 이런 의미다. 다른건 for loop body는 사실 비어있다. null statement라고 한다. 반복해서 nc 값을 올리긴 하지만 body에서 ..

1.5.2 Count Chracters

code #include /*****count chracters in input; 1st version *****/ int main() { long nc; nc = 0; while( getchar() != EOF ) { ++nc; printf("%ld\n", nc); } return 0; } 새로운 연산자가 등장 했다.! 단항연산자라고 불리는 ++ 연산자이다. 의미는 + 1을 하라는 뜻이고 , ++nc , nc++ 연산자 위치에 따라서 약간의 차이를 가지고 있는데 그것 다음 장에서 알아본다!! 그리고 nc = nc + 1 보다 간결한 표현이다. counting 해주는 변수를 int형 대신 long으로 선언했다. long integer는 최소한 32bit로 되어있다. 같은 사이즈이지만 , int형은 16b..

1.5.1 File Copying 2nd version

source code #include /* copy input to output; 2nd version */ int main() { int c; while( (c = getchar() ) != EOF ) { putchar(c); } return 0; } 첫번째 version 보다 더 간결한 code 입니다. 첫 번째 version은 loop 전에 미리 한번의 입력을 받고 loop 안에서 입력을 반복적으로 받는데요. 이것을 바꿔서 저렇게 표현합니다. code 중복이 사라진거죠?^^ 즉 C언어로도 강력한 중복 제거를 할 수 있는 거네요 ..ㅎㅎ 새롭게 또 하나 알았습니다. while문에서는 문자를 c에 할당된 문자를 얻습니다. 그리고 그것이 end of file을 의미 하는지 검사를 합니다. 그것이 만약 아..