실무자를 위한 C 언어 100제
강병익 지음 / 정보문화사 / 2023년 3월
평점 :
장바구니담기




지은이 강병익

전자공학 박사

건양대 의료IT공학과 교수

30년 이상 C, C++, C#, 알고리즘 강의 중..

현재 스마트헬스케어와 IoT분야에 관심을 두고 있다.

이 책은 C언어 초보자를 위한 책이 아니라 C프로그램의 고수가 되기 위한 내용을 담고 있다고 머리말에서 밝히고 있다.

초중급책은 몇 권 보유하고 있지만, 이렇게 시작부터 중급인 책은 처음이다.

1장에서 '배열과 포인터의 활용'이 나온다.

요즘 내가 골머리 썩고 있는 바로 그 배열과 포인터!!

배열은 데이터 저장의 가장 기본적인 자료구조이다.

처리 속도가 빠르고 효율적인 자료 구조이다.

그 배열이 왜 그렇게 알다가도 모르겠는지..

우선 각 주제마다 학습내용과 힌트 내용을 안내한다.

처음에 배열을 사용한 예제들이 나온다.

내가 가진 책들은 주요 행만 설명하는데 반해 이 책은 대부분 코드의 행마다 설명을 하고 있다.

저자는 매우 친절하신 분인듯..

다음으로 나오는 포인터 연산자!!

두둥!~

나도 여기서 고통 받고 있다.

배열까지는 어찌 어찌 되는데 포인터에서 1차 멘붕 상태가 된다.

그래서 C#, 자바, 파이썬 등의 최신 언어에는 포인터가 없다고 한다!

그러나 이렇게 어려운 포인터의 개념을 이해하면 프로그래머에게 큰 능력을 주는 기능이라고 한다.

int x =10.y=20;

int z[3] =1,2,3};

int *p; //정수형 포인터입니다

P=&x; //p는 x의 주소를 갖습니다.

Y=*p; // y는 p의 주소에 저장된 값, 즉 x를 갖게 됩니다. (y=x;)

*p=*p+y; //p주소에 있는 값, 즉 x의 값은 20이 됩니다. (x=x+y;)

p=&z[0]; //p는 2[0]의 주소를 갖게 됩니다.

*p=30; // p 주소에 있는 값, 즉 2[0]의 값이 30이 됩니다.

// z[0]=30; 과 같습니다.

포인터에 관한 대략의 개념이다.

볼 때는 아는데 문제를 풀려고 하면 헷갈린다. 몹시도..

이렇게 헷갈리는 개념들을 실제 프로그램 소스를 다양하게 변형해서 알려준다.

그리고 많은 시험에서 단골 출제되는 정렬 알고리즘!!

정렬의 결과는 같지만 프로그램으로 구현되는 정렬의 과정은 다르다.

결과는 같으나 프로그램에 따라 시간복잡도가 달라진다.

그리고 2차 멘붕은 구조체에서 온다.

책에 나온 소스는 다행히도 내가 이해할 수 있을 정도이다.

다음으로 나오는 연결리스트에서 다시 한 번 멘붕에 빠진다.

연결 리스트에서 추가, 삭제는 너무 헷갈리는 프로그램이다.

그리고 앞으로 내가 다시 공부하게 될 내용들이다.

이러한 프로그램들은 프로그래머들이 익혀두면 널리 쓰일 기본적인 프로그램이라 할 수 있다.

프로그램 코드를 제공하고 있어 직접 작성할 필요는 없다.

특히, 내가 작성한 프로그램이 여러번의 디버깅을 거쳐 정상적으로 수행이 되는 경험은 꽤 좋은 기분이다.

나의 짧은 프로그래밍 경험으로 그러한 경험을 하기엔 힘들지만,

잘 짜인 코드를 보고 의미를 이해하는 것 까지는 할 수 있을 정도로 친절하게 설명이 되어 있다.

초보는 아니지만 또 고수도 아닌 나에게 몹시도 도움이 될 내용들이다.

이 책 한권으로 나의 C 언어 실력이 일취 월장 될 것으로 예상된다!

다시 배열부터 차근 차근 C 프로그래밍 공부 시작!~

※ 도서를 출판사로부터 무상제공받아 주관적으로 작성한 서평입니다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo