'프로그래밍 언어'에 해당되는 글 5건

  1. 2012.05.21 C <18>. 연결리스트 (Linked list) - 자료구조(1)
  2. 2012.05.11 C <14>. 배열 (4)
  3. 2011.12.14 C <7>. 조건문(2) switch (6)
  4. 2011.12.11 C <6>. 조건문(1), if, else (6)
  5. 2011.11.29 Objective C <2>. 주석(Comment) (1)

오늘의 주제

1. 연결 리스트 (Linked list)


열 여덟 번째 시간입니다.^^

지난 번에 동적 할당에 대하여 알아보았습니다~
오늘은 동적 할당과 구조체를 알고 계셔야 이해할 수 있습니다.ㅎ

2012/05/16 - [C] - C <16>. 구조체

2012/05/18 - [C] - C <17>. 동적할당

자. 오늘 내용은 난이도가 쪼깨 있습니다~
처음 보시는 분들은 다섯 번은 봐야 이해가 될랑 말랑 하실거예요..ㅎㅎ
물론 C의 문법은 아닙니다만(사실 C의 중요한 문법은 거의 끝났다고 봐야겠죠?), 자료구조 공부하심에 있어서 도움이 되실거예요~
정말 중요한 것이니 몇 번을 보고, 다른 싸이트를 검색하고, 직접 계속 둘러보면서 꼭 몸으로 익히도록 하세요~!

자 험난한 여정을 함께 즐겨 볼까요?ㅎ
스따뚜~~~~~~~~~~~~


# 연결리스트

연결리스트 입니다.
이녀석은 언뜻 보면 배열과 비슷합니다.
하지만 동작 방식과 생성 방식은 크게 다르죠~

배열은 메모리 상에서 다닥다닥 서로 붙어있기 때문에 접근하기 용이 합니다. 하지만 우리가 마음대로 개수를 늘렸다 줄였다 할 수가 없지요.

그래서 우리는 연결 리스트라는 녀석을 고안해 냅니다. 쭈욱 늘어선 녀석들을 자유롭게 추가/삭제 할 수 있게 된 겁니다~

하지만, 기본적으로 C에서 주어진 자료형이 아닌, 우리가 직접 스스로 만들어야 하는 어려움이 있습니다.

코드의 양이 적지 않습니다~

잘 따라오세요^^ 물론 역시나 상세한 설명은 주석으로 남깁니다.

헤더 파일입니다.  (yagom.h)
연결리스트의 원소가 될 구조체를 처음에 선언 해 두었구요.
연결리스트 관리를 위한 함수들을 선언해 주었습니다.


구현 파일입니다. (yagom.c)
메인 함수를 구현합니다.


그 후에 헤더에 선언해 놓았던 함수들을 메인함수 아래쪽에 차례대로 작성해 줍니다.


그리고 실행을 해 볼까요?


자 이런식으로 우리는 연결리스트를 배열처럼 사용 할 수 있습니다.

어떤가요? 연결리스트라는 녀석, 비록 복잡하고 속도는 느리지만 용도에 따라 적절히 사용한다면 정말 매력적이 녀석이 됩니다^^*

그럼 다음에 또 뵈어요~^^*

by yagom

twitter : @yagomsoft

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   


↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓ 



저작자 표시 비영리 변경 금지
신고

'C' 카테고리의 다른 글

C <20>. enum  (4) 2012.05.24
C <18>. 연결리스트 (Linked list) - 자료구조(1)  (0) 2012.05.21
C <17>. 동적할당  (2) 2012.05.18
C <16>. 구조체  (2) 2012.05.16
C <15>. 전처리자  (0) 2012.05.14
C <14>. 배열  (4) 2012.05.11
Posted by yagom

C <14>. 배열

C 2012.05.11 12:30

오늘의 주제

1. 배열 


열 네번째 시간입니다.^^

지난 번에는 변수의 범위에 대하여 알아보았습니다.
감이 조금 오실지는 잘 모르겠습니다^^;
혹여나 부족한 부분이 있다면 말씀해 주세요 ㅎ
이번에는 또 하나 중요한 개념인 배열에 대하여 알아보도록 하겠습니다.

출발!!!!

자, 시작전에 추천 한 방 어떠세요?ㅎ



# 배열이란?

자, 배열이란 무엇일까요?

配列
 
나눌 배, 벌일 열.

사전에는
"동일한 성격의 데이터를 관리하기 쉽도록 하나로 묶는 ."
이라고 정의되어 있네요 ㅎ

자, 쉽게 한 번 알아봅시다.



위에는 제가 발로그린 배열의 개념도 입니다.

위의 정의에서 보듯이 배열은 같은 종류의 데이터를 줄세워 놓은 녀석을 말합니다.

그림에서 보듯이 배열은 같은 크기의 상자들이 쭈욱 붙어서 늘어서 있습니다. 
 
배열의 선언방법은

자료형 배열이름[배열크기];

입니다.

초기화 방법은 여러가지가 있습니다만 

5개의 배열에 하나씩 넣어주려면 위의 그림처럼 초기화 해 줄 수 있구요,

int arr[100] = { 0, };

으로 초기화하면 모든 원소의 값이 0으로 초기화 됩니다.

배열의 index는 0부터 시작합니다.

위의 그림에도 보듯이 5칸 배열을 선언을 해 주었는데

index는 0부터 시작을 하므로 index값이 0으로 시작하여 4로 끝나게 되지요.

위의 그림에서 

rgIntArray[0]에는 1이, rgIntArray[1]에는 3이... 이런식으로 들어가 있을 겁니다.

그래서 맨 첫칸의 자료를 변경하거나 읽어오려면 rgIntArray[0] 라고 하면 변수처럼 사용이 가능한 것입니다.

개념이 조금 잡히시나요?

배열은 단지 같은 유형의 데이터를 쭈욱 늘어놓은 것이라고 생각하시면 되겠습니다.^^


# 배열과 포인터
 

여기서 배열의 비밀을 하나 말씀드리려 합니다.

배열을 사용하게되면 같은 유형의 자료들을 모아놓고 쓸 수 있는 편한점이 있지만 이 외에도 좋은 점이 있습니다.

배열 자체를 포인터로 접근이 가능하다는 점입니다.

포인터에 대해서 잘 모르시겠다구요?

지난 포스팅을 참고해 주세요...^^

2012/03/23 - [C] - C <10>. 포인터 (1)개념잡기
2012/03/27 - [C] - C <11>. 포인터 (2)간단실습

'배열을 포인터로 사용이 가능하다고???'

무슨 말일까요?



자. 배열에서 각각의 자료를 불러오거나 저장할 때

배열명[index]로 변수처럼 사용한다고 말씀드렸죠?

그런데 만약에 함수(2012/04/02 - [C] - C <12>. 함수)를 사용할 때, 인자로 배열을 넘겨야 할 때...

이녀석들을 하나하나 다 넘길 수가 없겠죠?

그래서 인자를 넘길때는 해당 자료형의 포인터값으로 넘어가게 됩니다.

그래서 함수 안에서 이 배열 통채를 사용 할 수 있게 됩니다.

배열의 원소들은 메모리 안에서 위에 그림처럼 다닥다닥 붙어있게 됩니다.

그렇기 때문에 배열의 첫머리의 주소만 알면 그 다음녀석, 그 다다음 녀석도 메모리상의 어느 위치에 있는지 쉽게 알 수 있게되는거죠.

이해가 되시려나요? +_+

그래서 그림처럼 rgIntArray 라고 변수처럼 사용하면 이녀석은 배열의 첫 번째 원소를 가리키는 포인터값입니다.

그녀석에 +1을 해주면 그 다음칸 녀석의 주소를 가리키게 되는 것입니다. 그런식으로 rgIntArray+2면 rgIntArray의 주소값이 겠죠?

이해가 안되면 실습으로 궁금증을 풀어봅시다..ㅎㅎ

# 실습해보기 

자세한 코드 설명은 주석에 달려있으므로 참고하시기 바랍니다~!
yagom.h 파일에는

#include <stdio.h>
#include <stdlib.h>

만 작성되어 있습니다.



자, 실행 결과입니다.
자신의 실행결과와 일치하나요?ㅎ


여기까지 배열에 관하여 간단히 알아보았습니다.

문자 배열 ( char[] )는 문자열로 사용이 가능합니다.

printf와 같은 함수에서 %s로 문자열 출력이 가능하지요.

대신 문자열의 맨 마지막은 null (\0)으로 끝나야 합니다.

2차원, 다차원 배열도 있지만 그것도 어렵게 생각하실 필요가 없습니다.

쉽게 쉽게 생각해 보세요~

따로 포스팅할 필요를 잘 못느껴서 하진 않지만,

누군가 요청해 주시면 다차원 배열에 대해서도 한 번 알아보도록 하겠습니다~^^&


자, 그럼 여기서 생길만한 의문점..!!

Q : 배열을 생성해 놓고 배열의 크기나 종류를 변경 할 수는 없나요?
A : 네, 불가능 합니다. 그렇기 때문에 동적할당이라는 녀석을 사용하게 되는데, 추후에 포스팅 할 예정입니다.

다른 의문점이 또 있다면 댓글 주세요..^^

또 필요한 것이 있다면 말씀해 주세요 ㅎ

by yagom

twitter : @yagomsoft

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   


↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓ 



저작자 표시 비영리 변경 금지
신고

'C' 카테고리의 다른 글

C <16>. 구조체  (2) 2012.05.16
C <15>. 전처리자  (0) 2012.05.14
C <14>. 배열  (4) 2012.05.11
C <13>. 변수의 범위  (0) 2012.04.05
C <12>. 함수  (4) 2012.04.02
C <11>. 포인터 (2)간단실습  (0) 2012.03.27
Posted by yagom

C <7>. 조건문(2) switch

C 2011.12.14 13:40

오늘의 주제

1. switch문 사용해 보기

일곱 번째 시간입니다.^^

지난 번에는 if 조건문에 대해 알아보았습니다.
이번에는 또다른 조건문인 switch문에 대해 알아보도록 할게요 ㅎ

스따뚜~~~~~~~~~~~~


# switch

자, 일단 만들어 봅시다. 지난번 if문 할 때 만들어 놓았던 프로젝트를 열어 봅시다.
이번에는 switchNumbers() 라는 함수를 만들거예요.
빨간네모를 따라 코드를 작성해 봅시다.ㅎㅎ


위의 코드의 실행 결과 화면입니다.


switch문의 작성법은 이렇습니다.

switch(대상 변수)
{
    case 
정수 혹은 문자 :
           실행할 명령문
           break;
    case 
정수 혹은 문자 :
           실행할 명령문
           break;
    case 정수 혹은 문자 :
           실행할 명령문
           break;
    default :
           실행할 명령문
           break;  
}


자, switch문은 주로 정수형의 변수가 어느 특정 조건을 만족하는지 검사할 때 쓰입니다.

if문과 다른 점은 크거나 작다에 대한 비교를 하기 보다는, 딱 어떤 변수가 어떤 수일때 실행. 을 목표로 하는 조건문입니다.

눈치 채신 분들도 계시겠지만, case 안에 해당되는 수가 없으면 default에 있는 명령어를 실행합니다.

그리고 모든 case아래에 break 명령어가 있는 것이 보이실 텐데요, break문이 없으면 아래에 있는 모든 것들을 다 실행하라는 의미로 받아들여집니다.

한 번 break 없애고 실행해 보세요 ㅎㅎㅎ 어떤 참사하 일어나는지..^^

위의 코드에서는 i가 어떤 수인지 알아보는 코드가 되겠네요.

i가 5 또는 10 또는 17 중에 하나에 해당되면 거기에 맞는 명령이 실행될테구요, 만약 해당되는 것이 없으면 default에 있는 것을 실행합니다.

if조건문과 switch조건문의 특징을 잘 숙지하시고 알앚게 효율적으로 사용하시면 될 것 같습니다^^

사실 if문 보다 switch문의 사용법이나 규제가 좀 더 까다롭지만, if - else if - else if - else...를 한없이 늘어놓는 것 보다 훨씬 간편하게 사용하실 수도 있습니다.

즉, 때에 따라 적절히 ^^


by yagom

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   


↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? ^~^ 사랑합니다~ ↓↓↓
저작자 표시 비영리 변경 금지
신고

'C' 카테고리의 다른 글

C <9>. 반복문(2) do-while  (7) 2012.02.06
C <8>. 조건문(3) 3항 연산자  (7) 2012.01.28
C <7>. 조건문(2) switch  (6) 2011.12.14
C <6>. 조건문(1), if, else  (6) 2011.12.11
C <5>. 반복문(1), 단항 연산자  (2) 2011.12.08
C <4>. 실수 표현 방법  (2) 2011.12.04
Posted by yagom

C <6>. 조건문(1), if, else

C 2011.12.11 12:25

오늘의 주제

1. if문 사용해 보기 

여섯 번째 시간입니다.^^

지난 번에는 반복문과 단항연산자에 대해 알아보았습니다.
연습은 잘 하고 계신지요?
정말 중요한 것이니 몇 번을 보고, 다른 싸이트를 검색하고, 직접 계속 둘러보면서 꼭 몸으로 익히도록 하세요~!

자 그럼 오늘은 조건문 중에서도 if문에 대해 알아보도록 할게요^^
스따뚜~~~~~~~~~~~~


# if, else

조건문에 해당하는 녀석들은 몇몇 있습니다만, 오늘은 if와 else를 사용하는 if문에 대해 조금 알아보도록 할게요 ㅎㅎ

자 프로젝트 하나 만들어 주시고~


이쁘게 코드를 작성해 봅시다 ㅎㅎㅎ


실행 결과입니다.


동작에 대해서는 대충 눈치 채셨지요?ㅎㅎㅎ
너무나 쉽습니다~

그런데 처음 보는 녀석이 있죠~

main함수 밖에 나가있는 녀석들이 생겼네요 ㅋㅋㅋ
이 녀석들을 우리는 '함수'라고 부릅니다. 함수는 나중에 더 많이 다루겠지만, 지금은 아~ 그런 녀석이구나 하고 아시면 됩니다.
다음 시간에도 이 함수라는 녀석을 하나 더 만들어 볼거지만요, 지금 단계에서는 별거 없습니다 ^^

똑같은 일을 하는 녀석들을 매번 복사 붙여넣기 하면 귀찮고 코드도 길어지잖아요 ㅎㅎㅎ
그래서 우리가 원하는 일을 해 줄 녀석들을 미리 만들어 놓고 필요할때 너 이거해! 이렇게 시키는게 함수예요~
아... 뭐 일단 대충 이렇게 알아두시구요 ㅎㅎ
코트를 지긋이 바라보시면 어떻게 만들고 쓰는지 감이 좀 오실거예요 ㅎㅎㅎ

if-else문을 사용하는 방법은

if (조건)
{
      조건이 성립하면 실행한 후 아래 else if 나 else를 무시하고 그 아래로 이동
}

else if(조건)
{
     만약에 위에서 조건이 맞지 않았다면 실행 후 아래 있는 것 무시하고 if문 탈출
}
 
else
{
     위의 조건들이 모두 충족되지 않았을 때 실행
}


이렇게 사용하게 되는데요 if는 if 단독적으로 사용할 수도 있고, 위에 처럼 else if 또는 else와 짝을 이뤄 사용할 수도 있습니다.

즉, if는 혼자만 존재할 수도 있습니다.

....
if(조건)
{
   실행 코드
}
...
이런식으로 작성해도 무방합니다.

하지만 else if나 else는 위에 if가 존재해야지만 사용할 수 있죠^^ 상식적으로도 그게 맞겠죠?ㅎㅎㅎ

또한 if문 안의 실행할 내용이 한 줄 뿐이라면

if (조건)  실행할 한 줄

이런식으로 작성해도 무관합니다만, 코드의 가독성을 위해서 대괄호 {}를 이용하여 표시해 주는 것이 더 바람직 합니다^^

또, 위에서 보면 조건 중에 i == j 와 같은 녀석이 있는데요, i = j 라고 표현하면 j의 값을 i에 복사하라는 의미이기 때문에 i == j 라고 표현하여 i가 j와 같은가에 대한 조건을 만들어 주는 것입니다.

참고로, i = j 는 대입연산자라고 부릅니다.

이정도로 설명이 되었을런지는 모르겠습니다.

잘 이해가 되지 않는 부분은 댓글로 질문 주세요^^

by yagom

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   


↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? ^~^ 사랑합니다~ ↓↓↓
저작자 표시 비영리 변경 금지
신고

'C' 카테고리의 다른 글

C <8>. 조건문(3) 3항 연산자  (7) 2012.01.28
C <7>. 조건문(2) switch  (6) 2011.12.14
C <6>. 조건문(1), if, else  (6) 2011.12.11
C <5>. 반복문(1), 단항 연산자  (2) 2011.12.08
C <4>. 실수 표현 방법  (2) 2011.12.04
C <3>. 변수. Variable  (4) 2011.12.02
Posted by yagom


오늘의 주제


1. 코드에 주석쓰기

두 번째 시간입니다.

안녕하세요! 야곰입니다.ㅎㅎ


# 주석

주석이 무엇인가 궁금하시죠?ㅎ
다른 블로그나 책에서 한 챕터를 잡고 주석을 설명하는 경우는 거의 없습니다만..
주석은 생각 외로 굉장히 중요한 역할을 하며, 프로그래밍의 첫 습관을 들일때 매우 중요한 녀석이라고 생각합니다. 물론 실무에서도 굉장히 중요합니다.
그래서 주석은 한 챕터로 잡고 설명하려 합니다!!
오늘 포스팅은 짧습니다만, 꼭 기억해 두셔야 할 포스팅입니다^^*

주석.. 코멘트.. 같은 말입니다!
주석은 코드에 아무런 영향을 미치지 않지만, 이 코드가 어떤 코드인지, 무슨 역할을 하는 것인지에 대한 설명을 적어놓는 메모 같은 것입니다.

그런데 이게 왜 중요하냐구요?
정말 간단한 프로그램이라면 굳이 필요 없을지도 모르지만, 나중에 백줄, 천줄, 만줄 ... 길어지는 프로그램이라면 내가 짜 놓고도 이 부분이 어떤 부분이었는지 기억하지 못하는 경우가 허다합니다 ㅋㅋㅋ
나는 기억력이 좋아서 아닐거라구요?
훗...!절대 그렇지 않습니다!
십수년 프로그래밍 한 고수분들도 꼭 적어두는 것이 주석입니다.
정말 코드 짜기도 바빠 죽겠는데 그런거 적을 시간이 어디있냐구요?
그래도 해야 합니다!!
나중에 현업에 가서 협업을 할때에도 굉장히 중요합니다.
내가 짜놓은 코드는 내가 해석하기 쉬울지 몰라도 다른 사람이 같이 일하면서 내 코드를 볼 때, 이해가 가지 않으면 일이 그만큼 늦어지고 심지어는 프로젝트가 망가지기도 하니까요.
제가 여기서 중요하다고 백만번 말해도 모자랄 만큼, 주석을 다는 것은 정말 중요한 습관입니다.
처음부터 주석을 다는 습관을 들여 놓으셔야지 나중에 후회하지 않고, 힘도 덜 드실것을 저는 장담합니다!!

이렇게 말하니까 주석 다는 것이 정말 어려운 것 같지만, 사실은 정말 간단합니다!
한 번 보시죠 ㅎㅎ

자... 화면에 보이는 저 녹색 글씨들 보이시죠? 저것들이 모두 주석입니다.
프로그램을 실행시켰을 때는 전혀 티가 나지 않지만, 작업하는 프로그래머는 보게 되는 저것이 주석입니다.
컴파일 할때 컴파일러가 주석은 모두 제외하고 컴파일 하게 됩니다.


위의 코드 실행 결과 화면입니다.
녹색으로 주석처리된 녀석들은 화면에 나오지 않죠???
코드 해석이 어려우시면 지난번 포스팅을 다시 한 번 보고 오세요^^


자... 조금 수정해서 보여드릴게요~!
어떻게 뭐가 달라졌는지 비교해 가면서 보세요^^


 결과 화면입니다~!

 
로그에 찍힌겁 보시면 깨알같은 팁도 있죠?ㅎㅎㅎ
여기에 직접 쓰지 않을테니 한 번 사용해 보세요^^ 


중요한 주석 처리하는 방법은 간단합니다!


// 주석......
이런식으로 주석을 작성하게 되면 한 줄이 주석처리 됩니다.
즉, 한 줄을 자신이 쓰고 싶은 말들을 써놓을 수 있죠.


또한, 
/* 주석...
여러줄
쓸 수 있는
주석... */ 


이런식으로 처리를 하게 되면 여러줄을 주석처리 할 수 있습니다.

참 쉽죠잉!?

위에 예시로 작성한 코드에서는 주석을 위나 아래에 달아놓았는데, 코드 바로 옆에 붙여 써도 무방합니다~
무슨말인지 잘 이해가 안가시면 직접 해보세요 ㅎㅎ
다시 한 번 말씀드리지만, 컴퓨터 안고장납니다잉 ㅋㅋ 폭발 안합니다잉 ㅋㅋㅋ
주석 다는 스타일을 같이 협업하는 사람끼리 정하거나, 자신만의 스타일로 작성해도 됩니다. 딱히 정해진 틀은 없어요^^ 

앞으로 제가 포스팅을 할 때 마다 주석을 일일히 달며 하지는 못할 거예요.
하지만, 여러분은 제 포스팅을 보며 공부 하실때마다 코드에 꼭 주석을 달아주세요!!
부탁드립니다~!
이것은 정말 중요한 습관임을 다시 말씀드립니다!
그래서 일부러 한 챕터를 내서 포스팅을 한거예요~

그럼 긴 잔소리는 여기까지만 하고 다음 번에 뵙도록 해요^^*

뿅!


by yagom

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기  


↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? ^~^ 사랑합니다~ ↓↓↓
저작자 표시 비영리 변경 금지
신고
Posted by yagom


티스토리 툴바