오늘은 친구가 와서 간단히 이야기좀 하고 강의를 들어 왔습니다.

 

=======================================    1    =====================================

( 19:05 ~ 19:55 )

개발 환경을 구축하기 위해서 컴파일러 및 개발 툴을 준비하였습니다. 지난 강의였던 C++ 고급 강의에서 사용한 Code::Bloack을 다운로드하여 설치하도록 하셨습니다. 이번 강의에서는 네트워크 연결이 원활하게 되지 않아서인지 Website에 방문해서 다운로드를 받아 설치를 유도하셨습니다.

지난 수업에서 받아둔 파일로 설치를 진행하였습니다.

Code::blocks은 컴파일러를 포함한 버전과 아닌 버전이 있으며 기존에 컴퓨터에 컴파일러가 설치되어있다면 그 컴파일러를 활용하여 개발을 할 수 있습니다. 이번 강의에선 컴파일러를 포함한 버전으로 설치를 진행하였습니다.

간단한 Test로 어느책에서도 어느 C기초 강의에서도 어떤 다른 언어에서도 처음으로 개발을 하면서 프로그래밍을 하는 예의바른 프로그램을 작성 해 보았습니다. Hello를 출력하는 프로그램을 작성하였고 정상적으로 컴파일 및 수행이 되는것을 확인하였습니다.

 

그리고 어제 예고하였던 38페이지의 프로그램을 작성 후 테스트 해 보았습니다.

 

 

그리고 수업을 진행하시다가 가변인자로 함수를 만드는 것을 설명을 해 주셨고 설명을 한 후에도 수강생들의 반응이 다 이해하지 못하는 분위기라 추가로 예제를 하나 만들어 보았습니다. 더하기를 수행하는 함수인데 더하는 값의 개수를 몇개를 하여도 동작을 할 수 있도록 만드는 것이 목적입니다.

 

exam03.c

 

 위의 코드를 작성하였으며 수행 결과는 아래와 같습니다.

 

=======================================    2    =====================================

( 20:10 ~ 20:57 )

혹시 이상한 부분을 찾으셨나요?

 

위의 코드에서 찾으셨을 수도 있고 보다 더 정확하게 눈에 보이는 수행 결과를 보면 값이 이상합니다. 정상적인 덧샘을 하지 않은 결과고 한가지 결과만 보면 명확하게 추리를 할 수 없지만 2가지의 결과를 비교하여 보면 2가지 결과값은 가장 마지막 값이 더해지지 않은 값입니다. 반복문을 보니 조건을 1~n까지 돌리기 위해서 조건을 주어야 하는데 제가 실수로 등호 기호를 빼먹었습니다.

그냥 실수 일 뿐 읽고계시는 분을 테스트하려는 의도는 없었지만 좋은 시험이 되었으리라 생각합니다.

정상적인 코드와 수행화면도 첨부 해 봅니다.

 

 

 

그리고 배열 포인터에 대한 예제를 하나 작성 해 보았습니다. 우선 코드를 보고 수행될 결과를 예상 해 본 후 직접 작성하여 수행을 한 값과 비교를 하는것을 목적으로 진행하였습니다.

 

exam04.c

책 43쪽

배열의 주소값을 갖는 포인터라는 제목으로 포인터에 배열의 주소값을 갖도록 하게 만들어 선형의 메모리에 2차원 배열로 표현을 하여 표 처럼 생각하고 프로그래밍을 할 수도 있는 것 같습니다. 이 부분은 저에게는 조금 버거운 것 같습니다.

 

 

문자열 포인터에 대하여...

const keyword를 사용하면 보다 원활하게 값 수정을 못하게 하여 Compile시 Error를 발생시키는 방법이 있습니다.

 

=======================================    3    =====================================

( 21:08 ~ 21:52 )

 

void형 포인터

 

배열의 단점은 고정크기인 것과 한가지 타입의 자료만을 갖는 것입니다.

하지만 Heap을 사용하면 동적할당을 사용할 수 있어서 유용합니다. 링크드 리스트를 만들어 heap을 사용 할 수도 있습니다. 링크드 리스트를 만들면 필요할 때마다 (동적으로) 생성하는 것이 가능하다는 것입니다. 연속된 메모리 할당이 일어나는 것이 아니기 때문에 할당받은 모든 주소를 알고 있어야(저장해야) 합니다.

exam05.c 링크드 리스트를 만들어보기!

C++ 지난주 수업시간에도 해 보았던 것이기 때문에 크게 무리없이 진행을 할 수 있었던 것 같습니다.

 

 위의 코드또한 한가지 문제점이 있습니다만 직접 작성을 하다 보시면 충분히 찾으실 수 있을것입니다.

 

완성된 코드는 아래와 같습니다. 할당된 메모리를 해제하는 부분에 있어서 주석처리 된 아래 부분은 강사님께서 작성해주신 모범답안과 같은 코드입니다. 참고 해 주시기 바랍니다.

 

 

+ Recent posts