씨랭아이티

반응형

녕하세요! 리듬입니다!


이번 글에서는 2차원배열에 대해서 배워보도록 할게요!


2차원 배열은 배열의 배열이라고 할 수 있겠네요.


배열은 변수들을 모아놓은거였잖아요?


그 모아놓은거의 모임 이라고 하면 되려나요!


int a[3][4];


위와 같은 형태로 쓰이는데요.


간단히 보면 int형 자료형을 4개를 모아놓은게 3개가 있는거에요.


int a[3][4]={1,2,3,4,

      5,6,7,8,

                9,10,11,12};


보통 위처럼 값을 넣어주는데요.


위처럼 적으면 보기가 편합니다.



int a[3][4]={1,2,3,4,

      5,6,7,8,

                9,10,11,12};



위에 예를 그림이랑 같이 보시면 이해가 쉬우실거에요.


(0,0) 이라고 되어있는게 인덱스인데요! 위에 그림도 4x3형태이고


위에 배열에 값을 넣어줬을 때 형태도 4x3형태로 적어줬잖아요!


그래서 보시면 (2,3)인덱스에 있는 값은 12가 되는거에요.


저게 보기좋으려고 좌표형식으로 적었는데요. 


값에 접근할때에는 a[2][3] 이런식으로 접근하는거에요!


밑에 예를 들어볼게요.







보시면 for문이 2개죠? 이중for문이라고 하는데 겉에 있는 for문 i는 크게 도는 반복문이구요.


안에 있는 for문 j는 그 크게 도는 반복문 안에서 반복을 하는거에요.


음 i가 0부터 2까지 반복을 하는데요. i가 0일때 j는 0부터 3까지 반복을 하구요!


다시 i가 1 증가해서 1일때 j는 다시 0부터 3까지 반복합니다.


그리고 다시 i가 1증가해서 2일때 j는 또 다시 0부터 3까지 반복하는 형태에요.


그래서 a[0][0]부터 a[2][3]까지 하나하나 다 출력이 되는거에요.


아무튼 저러한 형태가 2차원 배열인데요!


int a[3][4] = { {1,2,3,4},

  {5,6,7,8},

{9,10,11,12} };



위 같은 형태도 됩니다!






위처럼 4개가 들어갈 자리에 2개가 들어가면


빈곳엔 0이 들어갑니다.







내용이 알차지못하네요ㅠㅠ 점점..


무엇보다 이 다음을 이어갈 수가 있을지 모르겠네요..실력이 부족하다보니..


할 수 있는대로 짜내서 이어갈 수 있으면 계속 써야겠네요..




수고하셨습니다!


:) 









반응형

015.C언어 배열!?

C언어2017. 2. 23. 14:27
반응형

녕하세요! 리듬입니다.


이번 글에서는 배열에 대해 배워볼게요!


배열이 무엇일까요!


배열은 변수들의 집합이에요. 


같은 데이터 타입을 가진 변수들이에요.


int형 배열을 선언했으면 int형 변수들을 모아놓은거죠.


배열은 같은 데이터 타입을 가진 변수들이 여러개 필요할때 사용해요.


만약에 int형 변수를 30개가 필요하다~라고 한다면


int a1, a2, a3, a4, ..., a10, a50;


이런식이겠죠? 너무 많아요...


이럴때 배열을 써봅시다. 어떻게 되느냐!


int a[50];


위처럼 사용합니다!


코드 길이가 엄청 짧아졌죠? 그래서 가독성도 좋아지죠!


배열이름이 a 인 int 자료형에 50개의 값을 넣을 수 있는거에요.


[50]에서 대괄호 안에 들어가는 값을 index 인덱스라고 하는데요.


각 배열 인덱스 값은 0부터 시작해요.


그래서 인덱스 0부터 49까지 50개를 넣을 수 있습니다.


int a[5]={10,20,30,40,50};


이런식으로도 선언하는데요!


저 값들이 각 인덱스에 들어있는거에요. 순서대로!


인덱스 0부터 시작한다고 했죠? 그러니까 a[0]에는 10이 들어있는거구요.


a[1]에는 20 이렇게 순서대로 들어가있는거에요.


예를 보여드릴게요!





저희가 배웠던 for문도 같이 써봤습니다. 기억들 나시죠?!


보시면 i는 0부터 증가하구요. a[i]에 a[0]부터 a[4]까지 들어갈거에요.


아까 말했듯이 인덱스는 0부터입니다. 그래서 a[0]을 출력했을 때


10이 출력이 되는거에요. 아시겠죠!


다른 예를 보여드릴게요~




위 예는 각 배열 인덱스에 입력받는거에요.


for문이 반복되면서 a[0]부터 a[4]까지 값을 입력받는거죠!


밑에 코드는 이제 다들 아시지요?


그리고 예가 또 있습니다.





문자열인데요! 엄청 간단해보이네요.


위와 같이 사용합니다.


char 자료형에는 문자 하나에 작은따옴표로 감싸서 변수에 넣어주는데요.


char a='a';


이런식으로요!


문자열을 넣고 싶을땐 배열을 선언해주면 됩니다.


문자 5개를 넣고 싶으면 배열 6개가 필요합니다.




왜냐하면 위 그림처럼 맨 끝에는 널문자가 들어가요.


널문자는 "끝"을 의미합니다.


만약 배열 array[20]을 선언했는데


tistory라는 문자열만 넣었어요. 그러면 문자열의 끝은 y가 되어야 하는데


array[19]가 될 수 있죠. 컴파일러가 그렇게 생각할 수 있다는거에요.


그래서 문자열 마지막에는 널문자가 들어갑니다.




이렇게 해서 배열에 대해 알아보았습니다.


이번 글에서 배운 배열은 1차원 배열이었어요.


다음 글은 2차원 배열입니다.


제가 글을 쓰고서 쓴 글을 보면 참 설명 못하는거 같네요..  :(


점점 개념들이 설명하기 어려워져서 그런지...............!


시간이 많이 걸리더라도 정확하게 써야할 것 같습니다!


다음 글에서 뵈요!


수고하셨습니다!


:)















반응형

반응형

녕하세요! 리듬입니다.


저번글에서 반복문 for문을 알아봤었죠.


반복문이 또 있다고 했었습니다. 바로 while문이죠!


바로 배워봅시다~


먼저 기본문법을 먼저 보자면..!



while(조건){


반복실행문


증감식


}


위와 같은 형식입니다.


while바로 옆에 조건을 써주고, 조건에 맞으면 반복해서 실행해줍니다.


그리고 조건에 맞지 않으면 while문에서 나가게 되구요.


증감식은 while문 안에 쓰기도하고 안쓰기도 합니다.


초기화해줄 변수는 while문 위에서 초기화해줘야 합니다.


이건 for문에서도 마찬가지에요.


반복문 안에서 초기화해주면 초기화도 반복이 됩니다..!


일단 예를 먼저 봅시다!






증가시킬 i는 위에서 선언과 동시에 0으로 초기화시켜줬구요.


while 옆에 조건은 'i가 100보다 작거나 같다' 라고 되어있죠?


그러니까 i는 100까지만 증가가 될거에요.


그렇게 반복이 되면서 sum에 sum+i가 들어가게 됩니다!


이거는 for문이랑 같아서 이해가 쉬우실거에요.


그러면 위에서 말한것처럼  반복문안에서 sum을 0으로 초기화시켜볼게요.


어떻게 나올거 같나요?






100이 나옵니다.


반복이 되는동안 계속 0으로 초기화를 해주기때문에 더해도 더해도


반복이 0으로 시작하는거에요.


그래서 마지막으로 더한값인 100이 나오게 된거죵!


이건 for문에서도 마찬가지입니다!


저 조건을 이용해서 무한루프에 빠지게 할 수도 있겠죠?


for문에서도 그랬던 것처럼요!


조건에 만족만 하면 계속 반복하게 되잖아요. while문 옆에 조건에


참, 그러니까 true값이 들어가게 되면 조건에 맞게돼요.


거짓이 들어가면 조건에 맞지않게 되구요.


저희가 배운 내용이죠? 0 이외의 숫자는 참이다. 라고 배웠습니다.


기억하시죠!? 그런데 보통 1을 넣어줍니다. 2나 3 다른숫자도 돼요.


예를 봅시다!








위를 보시면 조건에 1이 들어가있지요!


그래서 printf랑 scanf가 계속해서 출력이 되고 있습니다.


만약 어떤 값을 입력받았을 때 while문에 빠져나가고 싶다!


싶을땐 조건을 이용해주면 됩니다.


만약 1004을 입력받으면 반복문이 끝나게 만들고 싶으면


a!=1004 이렇게 해주면 됩니다. != 다들 기억하시죠?


다르다는 뜻입니다. ==의 반대구요.


조건에 맞으면 반복이니까 1003을 입력하면 조건에 맞게 되죠?


반대로 1004를 입력하면 조건에 맞지 않게 됩니다. 같아지니까요~


다음으로 넘어가볼게요!!! 바로 do while문인데요.


while문이랑 비슷해요. 먼저 기본문법부터 보겠습니다.



do{


반복실행문


}while(조건);


이렇게 됩니다.


일단 while문이랑 다른점은 while이 뒤로갔다는거겠죠? 이건 뭐..


가장 크게 다른점을 알려드릴게요.


do while문은 맨처음 반복문이 실행될때 일단은 한번


실행합니다. 조건을 안보구요!


그러니까 for문이나 while문은 만약 조건이 안맞으면


실행이 되지않고 넘어가게 되잖아요?


그런데 do while문은 일단 한번은 실행을 하고 봅니다. 무식한 놈이에요.


예를 보여드릴게요.




위는 while문이구요, 밑에는 do while문이에요.


조건은 같은데 결과가 다르죠?


do while문은 일단 한번은 실행하고 봅니다!


그리고 do while문은 조건문 뒤에 세미콜론이 와요. ; 이거요!


여기까지 반복문 while문과 do while문에 대해 알아보았습니다.


이번 글은 여기서 마치구요!


다음 글에서 뵙겠습니다 여러분~


수고하셨습니다!


:)





반응형

'C언어' 카테고리의 다른 글

016.C언어 2차원배열!?  (0) 2017.03.07
015.C언어 배열!?  (0) 2017.02.23
013.C언어 반복문(for문)  (0) 2017.02.15
012.C언어 조건연산자?누구냐 넌..  (0) 2017.02.09
011.C언어 조건문에는 무엇이 있나?(switch)  (0) 2017.02.08

반응형

녕하세요! 리듬입니다. 


이번글에서 배울 내용은요! 반복문인 for문입니다!


for문 말고도 while문도 있는데요. while문은 다음글에서 배우도록 하고,


for문을 먼저 배워봅시다.


기본 문법을 먼저 보면



for(초기값; 조건식; 증감식){

반복실행문

}



런식으로 되어있습니다.


초기값은 몇부터 시작할 건지 초기화시켜주구요.


조건식은 말그대로 조건이에요.앞에서 배운 것처럼 조건에 만족하면 반복해서 실행하고,


만족하지않으면 for문을 종료합니다.


증감식은 반복시 증가인지 감소인지 몇만큼 증가하고 감소할지 써주는거에요.


뭐가 뭔지 모르겠을땐 역시 예를 봐야겠죠?!!







위에 for문을 보시면 i=0 이라고 해줬습니다. i의 초기값을 0으로 하겠다. 이런 뜻이겠죠?


다음은 i<10 이라는 조건문이 나와요. i가 10보다 작다. 작으면 참이 되는겁니다.


i++ 이거는 i가 1씩 증가한다. 라는 뜻이 되겠구요!


출력된 결과를 보시면 '0번째 i입니다' 부터해서 '9번째 i입니다' 까지 출력이 됬습니다.


초기값 0부터 i가 1씩 증가해서 반복이 된거에요.


9번째에서 멈춘이유는 i가 10이 됬을때 조건식에 맞지않기때문에 for문에서 나오게 된거죠.


그러면 for(i=9;i<10;i++) 이렇게 하면 어떻게 나올까요?







초기값이 9로 시작을 하고 조건에 맞아서 한번 출력이 됩니다. 다음 1이 증가하면 10이 되죠??


그럼 조건에 맞지않아서 for문을 나오게 됩니다.


초기값과 조건식,증감식 서로 달라지면 다른 결과가 나오게 돼요.


아래 보시면 증감식이 i--라서 i가 1씩 감소가 되는걸 보실 수 있습니다.







이러한 반복문이 왜 있을까요?


아주 간단한 예를 들어보면 1부터 10까지 더한다고 칩시다. 아주 적은 숫자라서


쉬워보이죠!







위처럼 할 수 있겠죠? 변수를 선언해서 변수안에 더한값을 넣는다던지,


출력문에 바로 연산하는 방법이 있을거에요.


근데 이게 1부터 1000까지 더해야 한다고하면 어떻게 할까요?...


위처럼 쓴다면 1+2+3+4+....99+100+101....+500+...999+1000 !!! 이렇게 써야할거에요.


위같은 고생을 덜기 위해 반복문을 사용합니다.







위처럼 for문을 사용해주면 어마무시하게 길어질 뻔한 코드가 간단해지죠!


위 코드를 보자면,


i의 초기값이 0이구요. 이런 식에선 초기값이 1이여도 상관없겠죠? 0이면 더하나마나니까요.


조건문은 ' i가 1001보다 작다. ' 이기때문에 1000까지 실행이 될겁니다. i가 1001이 되면 조건에 맞지 않게 되니까요!


 다음은  i가 1씩 증가하게 되는거죠.


그래서 i가 0일때 sum=sum+0이 되서 sum에는 0이란 값이 들어있고,


1이 증가해서 조건문을 검사하고, sum=0+1이 되서 sum에는 1이 들어가고


이런식으로 계속 반복이 되는거에요. 조건이 맞지 않을때까지!


for문안에 printf를 넣게되면 출력문도 반복되서 출력됩니다.

 

for문안에 scanf를 넣으면?


밑에 보실게요!







변수들은 옆에 설명이 되어있구요. 처음에 숫자 몇개 입력할 것인지 출력이 되구요.


10이라고 숫자를 입력합니다.


for문을 보시면 조건문에 i<=number라고 되어있습니다. number는 입력할 숫자의 갯수에요.


그래서 i<=10 이 되는거죠. i의 초기값은 1이고 1씩 증가합니다.


반복이 되면서 숫자를 입력하게 되어있죠. 더할 숫자는 num에 입력됩니다.


그래서 반복이 되면서 sum에 더한값들이 들어가고 i가 11이 되면 조건을 만족하지못하기 때문에 for문에서 나옵니다.


for문에서 나오려면 조건을 만족하지 못해야 나오게 되잖아요? 


근데 조건을 계속해서 만족한다면 어떻게 될까요!


계속 실행되겠죠..!






이런 상황입니다. 조건문에는 'i가 a보다 작다' 면 만족하는거에요.


i가 a보다 커야 for문에서 빠져나갈 수 있는건데 i가 계속해서 감소하고 있죠. 그러면 계속 실행되는거죠..!


무한루프에서 빠져나갈 수 있는데 if와 break를 사용하면 됩니다.


if문은 조건문이고, break는 저번 switch문 할때 나왔었죠?


break를 만나면 switch문을 빠져나왔습니다.


이번에도 마찬가지에요! if문을 만족하면 break를 만나서 빠져나오게 되요.







코드가 if문과 break만 추가가 되었습니다. 그 결과 6번 입력하니 종료가 됐죠.


i가 0부터 감소하면서 -5가 되었을 때 if문 조건에 만족해서 break를 만난거에요.


정말정말 간단하죠!





여기까지 해서 반복문인 for문에 대해서 배웠구요!


다음 글은 while문 배워보도록 할게요~!!!!!



수고하셨습니다!


:)





반응형

반응형

녕하세요! 리듬입니다. 


저번글에서 조건문! if와 switch문까지 알아봤었습니다!


이번글에서 배울 내용은요! 제목에서도 보았듯이 조건연산자입니다!


얘는 또 무엇을 하는 친구일까요..


기본 문법을 먼저 보면


(조건) ? 참일때의 명령 : 거짓일때의 명령


그냥 보면 뭔가 굉장히 난해해보이죠..


앞에 조건이 있고 조건이 참이면 물음표 바로뒤에 있는 명령이 실행이 되는거구요,


조건이 거짓이면 콜론 물음표 뒤 명령은 건너뛰고 콜론 뒤에 있는 명령이 실행되는 형태에요.


총 세개의 항을 이용해서 연산을 해서 삼항연산자로 불리기도 해요.


예을 보시겠습니다!







위에 보시면 a는 10, b는 20이에요. b가 a보다 큰거죠!


조건에 a가 b보다 크다. 라고 넣어줬죠.


조건이 참이라면 물음표 뒤가 출력이 되고 거짓이면 콜론 뒤가 출력이 되는 형태입니다!


그리고 조건이 거짓이기 때문에 콜론 뒤 명령이 실행되서 출력이 된거죠!


어렵지 않죠!?


한개 더 볼까요?







a에는 10이란 값이 들어있구요.


조건에 보시면 a가 5보다 크다 라고 들어있죠.


그러면! 조건이 참이 됩니다. 참이 되면 물음표 뒤에 있는 명령이 실행되는거죠!


맨 앞에 보시면 b = 으로 시작을 하죠 그래서 1이란 값이 b로 대입이 됩니다.


그래서 b를 출력문으로 출력을 하게 되면 1이 출력이 됩니다!


어렵지 않죠!!






이번 글은 여기서 마치도록 하겠습니다!


다음 글에서 뵈요~!


수고하셨습니다!


:)


반응형

반응형

녕하세요! 리듬입니다~


저번 글에서 알아봤던 조건문 if에 이어서 이번 글도 조건문입니다~


이번엔 switch라는 조건문이에요.


일단 저번 글에서 봤던 if문 먼저 다시 보겠습니다.







숫자 1을 입력을 하면 첫번째 if문의 조건이 참이 되서 


"전원이 켜집니다"라는 출력문이 실행이 되고


2를 입력하면 첫번째 if문을 넘어가서 else if의 조건을 확인하겠죠!


또 다른 번호를 누르면 조건이 안맞아서 else로 가서 출력문을 실행하게되죠..!


이게 저번 글에서 배웠던 if문이었습니다.


switch문도 위에 내용과 똑같이 만들 수 가 있는데요!


먼저 기본 문법을 먼저 보면


int number;

     

     switch(number){

case 1:

   실행문;

   break;

case 2:

   실행문;

   break;

case 3:

   실행문;

   break;

default:

   실행문;

}


위같은 형식인데요.


바로 예를 먼저 보겠습니다.







똑같이 동작하는걸 보실 수 있는데요!


int형으로 num이라고 변수를 선언하고 거기에 값을 입력받습니다.


그리고 switch(num) 이렇게 있죠! num이 조건이에요.


그리고 밑에 case문이 나오는데 입력한 num과 case 옆에있는 정수와 비교를 해서 같으면


조건이 맞게 되는거고 아니면 밑으로 내려가게 되는거에요.


변수인 num이있는 자리에는 정수데이터타입인 변수들만 와야합니다.


int,char,short,long 이렇게 있습니다.


char는 문자데이터지만 컴퓨터는 숫자로 처리하기 때문에 컴퓨터는 숫자로 받는것과 같아요.


case 옆에는 상수만 올 수 있습니다. 변하지않는 수만 올 수 있어요.


num>0 같이 관계연산은 올 수 없습니다.


자 그러면 입력한 값이 1과 같으면 case 1에 있는 실행문이 실행이 되겠죠?


그런데 그 밑에 break는 무엇이냐! 하면 


break를 만나게되면 그 아래부터는 실행되지않고 switch문을 빠져나가게 되요.


만약 1을 입력했는데 break가 없으면 1의 실행문이 실행되고 2와 default도 다 실행되버립니다.


밑에 처럼요!





그리고 default는 if문에서 본 else랑 같다고 보시면 됩니다.


위에서 조건이 아무것도 맞는게 없으면 실행이 되는거죠.


밑에는 문자를 입력받는 예에요.








정수랑 크게 다를게 없죠?


case 옆에만 신경써주시면 될 것 같아요. 작은따옴표를 쓰셔야합니다.


큰따옴표를 쓰시면 에러나요!



여기까지 switch에 대해서 알아봤습니다!


다음 글에서 뵙겠습니다. 수고하셨습니다!


:)






반응형

반응형

녕하세요! 리듬입니다!


이번 글에서는요! 조건문에 대해 알아보려고 합니다!


조건문이 무엇이냐..!


조건이 뭔지는 다들 아시죠?


'무언가 하기 위해 조건이 필요하다!'


조건이 있으면 무언가를 할 수 있다는거죠.


조건문에는 if, switch 이렇게 있는데요.


if문을 먼저 알아볼거에요.


if의 영어 사전적의미는 '만약 ~라면' 입니다.



기본 문법은요.


if(조건){

조건이 참일때 실행문

}


이렇게 됩니다.


밑에 보시면!







비밀번호를 입력하라고 출력이 되서 비밀번호를 입력합니다.


486을 입력했더니 맞다고 나오네요. 


그리고 486486을 입력하니까 맞지않다고 나옵니다.


if문에 조건을 보시면 pw==486 이렇게 되있죠? 그러니까 pw가 486이랑 같으면!


밑에 printf문을 실행해라! 이런 말이 되는거죠.


그리고 그 다음에 또 if문이 있어서 조건을 보게됩니다.


이번엔 조건이 pw!=486이죠. pw가 486가 같지않다면!


밑에 printf문을 실행해라! 이렇게 됩니다.






다음을 보시면요!


결과를 보시면 똑같습니다. 달라진게 뭐냐하면 12행에 보시면 else가 추가되었습니다.


if는 조건을 만족하면 실행되구요, else는 if문의 조건을 만족하지않으면 실행됩니다.


그러니깐! if를 먼저 보고 조건이 맞지않다! 하면 else로 가는거에요.


else는 그냥 조건없이 위에 if의 조건이 맞지않으면 실행되는겁니다.







또 다른 예입니다. 보시면 이제 아시겠죠!?


처음 if문의 조건은 0보다 커야해요.


0보다 큰 숫자를 입력하면 조건에 맞기때문에 if문이 실행됩니다.


0보다 큰수가 아닌 숫자를 입력하면 맨 처음 if문 조건에 맞지않기 때문에


 else로 넘어갑니다. else를 실행하려고 보니 또 if가 있죠?


그러면 또 if문 조건을 봅니다. 조건이 0과 같으면 실행이 되죠.


만약 또 if문의 조건과 맞지않으면 밑에 있는 else를 실행하게 되는거죠!


마지막 else는 0보다 크거나 같은걸 제외한 나머지인 음수가 되겠죠?


근데 위같은 경우가 많아지면 코드보기가 복잡해지죠..중괄호가 많아지니까요.


그래서 아래와 같이 쓸 수 있습니다.






실행되는 건 위와 같아요.


else와 if가 합쳐진 것 뿐입니다.


코드가 짧아서 체감이 별로 안되지만 코드가 길어지면 위처럼 쓰는게


훨씬 깔끔해보일거에요.





논리곱연산자 저번글에서 배웠습니다! (논리연산자 보러가시려면 클릭하세요!<)


양쪽이 다 참이면 참이다 참이면 1, 거짓이면 0이다! 라고 배웠었죠?


조건을 보시면  num>=10&&num<50 이렇게 있습니다.


num>=10 이게 참이고 num<50 이것도 참이면 조건에 맞게 되는거죠.


위처럼 25를 입력하면 10보다 크거나 같고 50보다는 작으니까 조건에 맞게 됩니다.


50을 입력하면 if문의 조건에는 안맞는거죠!


10보다는 큰게 맞지만 50보다 작은게 아니니까 조건에 맞지 않게 됩니다!

 

또 다음 예를 볼까요?







논리합연산자입니다. (논리연산자 보러가시려면 클릭하세요!<)


둘중 하나가 참이면 참이 되는거죠!


수학점수가 80점이상이거나 영어점수가 90점이상이면 조건에 맞게 되는겁니다.


수학점수가 65점인데 영어점수가 90점이면 


둘중 하나인 영어점수가 참이기때문에 참이 됩니다.


어렵지않죠?!


여기까지 조건문 if에 대해 배워봤습니다.


다음 글에서는 switch에 대해서 배워볼게요!


수고하셨습니다!


:)


























반응형

반응형

녕하세요! 리듬입니다!


이번 글에서는 앞서 소개했던 9개중 마지막 3개의 연산자인


증감연산자, 캐스트연산자, 부호연산자에 대해서 알아보겠습니다.


먼저 증감 연산자인데요.




위에 보시면 증감연산자는 ++,-- 이렇게 사용합니다. ++는 1을 증가시키라는 뜻인데요.


그런데 앞에있는것과 뒤에있는게 있죠. 전위연산과 후위연산이라고 부릅니다.


a를 보시면 ++가 뒤에있죠. 첫번째 출력했을땐 10입니다. 그 다음에 출력했을때 11이 되죠!


b를 보시면 ++가 앞에 있습니다. 첫번째 출력했을때부터 11이죠.


그 말은!


++가 앞에 붙으면 ++연산을 먼저 하고 printf가 실행이 되고, ++가 뒤에 붙으면 printf가 실행된 후에 ++연산이 되는거에요.


이해가 가시나요!?


--도 같습니다.


--가 앞에 있으면 --연산을 먼저 하는거고, --가 뒤에 있으면 printf가 먼저 실행이 되는거에요.


다음은 캐스트 연산자입니다.


형변환 연산자라고도 하는데요.


피연산자의 값을 원하는 자료형으로 바꿔줍니다.







형변환은 위와 같은 경우에 사용해요.


a나누기b를 했는데 원하는 값이 안나오죠!


a와 b는 int형이라서 a나누기b를 하면 값이 int형으로 나오기때문에 원하는 값이 안나옵니다.


그래서 형변환을 해줘야해요.







위처럼 a나누기b할때 괄호안에 원하는 자료형을 넣어주면 됩니다.


그러면 a와 b가 double형으로 변환이 되서 연산이 되는거죠.


그런데 이렇게 변환을 한다고 해서 a와 b가 완전히 double형으로 변환되는게 아닙니다.


값을 복사해서 형태를 바꾸는 것이기 때문이죠!


마지막으로 부호 연산자입니다!


이거는 정말정말 쉬운 누구나 다 아는거에요! 너무 쉽습니다.







설명이 필요없을 정도로 쉽죠?


a는 양수인걸 보이기 위해 +를 붙인 형태고, b는 음수인걸 보이기 위해 -를 붙인 형태죠.


c는 양수인 a에 -를 붙혔습니다. d는 음수인 b에 -를 붙혔구요.


그럼 값이 어떻게 될지는 다 아시죠?!


여러분들 수고하셨습니다!


2월이 됐습니다. 2017년 된지 얼마 안된것 같은데 벌써 한달이 지났어요.


시간이 점점 빨리가고 있는 것 같네요.. 날씨도 내일부터 좀 풀린다고 합니다!


아무튼! 다음글에서 뵙겠습니다!


:)















반응형

반응형

녕하십니까~ 리듬입니다.


저번 글에 이어서 이번 글에서도 연산자 이어가볼게요!


먼저 산술 연산자입니다.


산술 연산자는 우리 모두 다 아는거에요.


+ 더하기 - 빼기 * 곱하기 / 나누기 % 나머지


나누기는 a=5/2;하면 2


나머지는 a=5%2;하면 1


간단하죠!


바로 다음으로 관계 연산자!


관계연산자도 쉽습니다. 이것도 다들 아실거에요.


==, !=, >, <, >=, <=


==은 '같다'라는 의미고 같으면 참인거에요. 같지않으면 거짓이구요.


!=는 반대로' 다르다'라는 의미고 다르면 참인거에요. 같다면 거짓입니다.


a>b라고 하면 'a는 b보다 크다'라는 의미고 크면 참인거에요. 작으면 거짓.


a<b는 반대로 'a는 b보다 작다'라는 의미고 작으면 참인게 되겠죠? 크면 거짓.


a>=b는 'a는 b보다 크거나 같다'라는 의미고 크거나 같으면 참입니다.


a<=b는 'a는 b보다 작거나 같다'라는 의미고 작거나 같으면 참입니다.


참이면 1, 거짓이면 0이에요.


밑에 보시면 딱 아실겁니다~










다음은 논리 연산자입니다.

논리 연산자에는 논리곱(AND),논리합(OR),논리부정(NOT)이 있어요.

논리곱 연산자는 &&, 논리합 연산자는 ||, 논리부정 연산자는 ! 이렇게 쓰이는데 하나씩 볼게요.

먼저 논리곱. A&&B 이렇게 썼을 때! A와B 둘다 1이면 1인거에요.

저번 글에서 비트 연산이랑 같아요.

그리고 참이면 1,거짓이면 0이라고 위에서 말씀드렸죠!

값이 0이외의 숫자면 참입니다.







논리곱은 둘다 1이면 1이라고 했죠?


a&&b는 b가 0이기 때문에 0이 나왔습니다.


a&&c는 a와 b 둘다 참이라서 두 값 모두 1이죠. 그래서 1이 나왔죠.


b&&d는 b와 d 둘다 0이기 때문에 0이 나왔습니다.


어렵지 않죠?


다음은 논리합 연산자인데요.


A||B 이렇게 썼을 때 A와 B 둘중 하나가 1이면 1입니다.







위에 보면 a는 참, b는 거짓이죠 둘중 하나만 참이면 1이기 때문에 1이 나왔습니다.


a||c는 a와 c 둘 다 참이기 때문에 당연히 1이구요.


b와d는 둘다 거짓이기때문에 0이 나왔죠.


마지막으로 논리부정 연산자입니다.


!a 이렇게 썼을 때 a가 참이면 거짓, 거짓이면 참이에요.


반대로 나오는거죠.






a가 참이라서 반대로 거짓 0이 나왔구요


b는 0이라서 반대로 참인 1이 나왔습니다.


어려운 건 없죠!?


이번 글은 여기서 마치구요! 다음 글에서 이어가도록 하겠습니다!


수고하셨습니다!


새해 복 많이 받으세요 여러분!


:) 





반응형

반응형

녕하세요~ 리듬입니다.


저번 글에서는 입력함수와 주석에 대해서 알아봤습니다.


이번 글에서는 연산자에 대해 알아볼게요.


연산자가 뭔지는 다들 아시죠?


기본적으로 + - * / 이런것들..


연산자 종류가 여러가지가 있는데요. 어떤 것들이 있는지 먼저 보면..


대입 연산자, 복합대입 연산자비트 연산자산술 연산자관계 연산자, 논리 연산자, 증감 연산자, 캐스트 연산자, 부호 연산자


많습니다..


이번 글에서는 대입 연산자, 복합대입 연산자, 비트 연산자 이렇게 3개 먼저 알아보고


다음 글에서 3개, 그 다음 글에서 3개 이렇게 배워봅시다.


대입 연산자는요 = 이거이거 뭔지 다들 아시죠??


a=10; a와 10이 같다가 아니고 '10을 a에 대입한다'는 뜻입니다.


쉽죠!?


다음은 복합대입 연산자 볼게요.


+=, -=, *=, /=, %=, &=, |=, ^=, >>=, <<=


음..얘네가 무슨 뜻이냐면요. a+=1; 이거랑 a=a+1; 이거랑 같은 뜻입니다.


a+1을 a에 대입하는거죠.


이것도 쉽죠!?


a+=1;

a=a+1; 

 a-=1;

a=a-1; 

 a*=1;

a=a*1; 

 a/=1;

 a=a/1;

 a%=1;

 a=a%1;

 a&=1;

 a=a&1;

 a|=1;

 a=a|1;

 a^=1;

 a=a^1;

 a>>=1;

 a=a>>1;

 a<<=1;

 a=a<<1;




위에 & , | , ^ , >> , << 얘네는 비트연산자에요.


컴퓨터는 모든 정보들을 이진수로 처리를 하죠??


10진수 5를 2진수로 바꾸면 0000 0101 이런식으로 바꾸는데 저 자릿수 하나하나를 비트라고 생각하시면 됩니다.


c언어



10진수를 2진수를 바꾸려면 2로 나누시면 됩니다.  7을 2로 계속 나누시면 위처럼 나와요~ 0111이 되는겁니다.


일단 & 연산은요 둘다 1이면 1이에요~ 


a=5;이고 a&=1; 이라고 하면 5는 0101, 1은 0001입니다.


0101과 0001을 각 자리수를 비교했을때 양쪽 다 1이면 1인거에요.


그러면 0001이 나오죠?? a에 1이 들어가는겁니다.. 설명이 좀 복잡해보이네요..


밑에 보시면 이해가 되실거에요.



& 비트연산 (AND)

  0110 0111(103)

 0001 1001(25)

0000 0001(1)





다음은 | 연산인데요. 둘 중 하나가 1이면 1이에요.


a=6; a|=8;이면 6은 0110, 8은 1000이죠?


둘 중 하나가 1일때 1이되면 1110이 되는거에요. 그러면 14가 나옵니다. 이해가 되시나요..?



 | 비트연산 (OR)

0000 0110(6)

0000 1000(8)

0000 1110(14)





다음은 ^ 연산인데요. 둘이 다르면 1 같으면 0이에요.


a=26; a^=12;이면 26은 0001 1010, 12은 0001 0110이죠.


밑에 보시면 이해가 가실거에요.


위 아래 비교했을 때 다른 부분을 빨간색으로 표시한거에요.


빨간색만 1이 됐죠?



 ^ 비트연산 (XOR)

 0001 1010(26)

 0000 1100(12)

 0001 0110(22)





다음은 >>,<< 연산이에요. 쉬프트 연산자라고도 합니다.


a=26,a>>=1; 이 연산은 비트를 1만큼 이동시키는 거에요.


밑에 보시면 오른쪽으로 비트 1칸씩 이동됐죠? 그러니까 1과0을 오른쪽으로 옮기는겁니다.


a=26,a<<=1; 이것도 마찬가지입니다. 왼쪽으로 이동시키는거에요.


오른쪽으로 이동한건 1/2가 되고 왼쪽으로 이동한건 2배가 됩니다..



>> 비트연산 

 << 비트연산

0001 1010(26)

0001 1010(26)

0000 1101(13)

0011 0100(52)






그리고 비트연산자에 ~ 연산도 있어요.


0을 1로,1을 0으로 바꿔줍니다.


a=1;


res= ~a;



 ~ 비트연산

 0000 0000 0000 0001

 1111 1111 1111 1110





자 이번 글은 여기서 마치고 다음 글에서 이어가도록 하겠습니다.


수고하셨습니다.


:)
















반응형

반응형

녕하세요! 리듬입니다.


이번글은 입력함수에요.


아! 배워보기전에~ 제가 작성하는 내용들은 C언어에서 기본들만 가지고 하고있습니다.


저는 깊숙히 파고드는 내용까지는 작성을 안하려고해요~


그러니까 혹시나 배운내용들에 대해서 더 깊은 내용을 배우고싶으시면 제가 작성한 글들은 기초로 참고하시고


다른분들 강좌를 보시면서 배우시면 되겠습니다!


시작해보겠습니다~


저번글에서 출력함수인 printf에 대해서 배웠습니다.


int a=25;


printf("%d\n",a);


이런식으로 적으면 화면에 결과를 출력해줍니다.


이번엔 입력함수인데요 scanf를 배워보겠습니다.


scanf는 사용자로부터 값을 입력받아서 대입하는 입력함수에요.


기본 형식은 이렇습니다.


int a;


scanf(%d",&a);


int형 변수 a를 선언하고, 변수 a에 정수를 입력받아서 대입한다는 뜻입니다.


%d는 10진수를 입력받는거구요~


printf함수랑 형식은 비슷하죠? 다만 뒤에 변수부분에 &가 붙었다는게 다른점입니다.


&는 앰퍼센트라고 불리는 주소연산자입니다.


이 부분에 대해서는 나중에 더 자세히 나올거에요~


일단 알아두시면 됩니다. scanf를 쓸땐 &가 붙는구나~


그런데 scanf를 쓰고 ctrl + f5를 하셨을때 




이런 경고가 뜨시는 분들도 계실거에요.


이런 분들은 맨 윗부분에 #pragma warning(disable:4996) 이걸 추가해주시거나


scanf 대신 scanf_s를 써주셔야합니다.


보안문제때문에 그렇다고 하네요..


한번 해봅시다~





잘 따라 쓰셨다면 커서가 깜빡거릴거에요.







그리고 입력을 해주시면 값이 출력됩니다.


실수 입력도 똑같습니다.







%.2lf는 소수점 둘째자리까지 출력해라 이런뜻입니다.



이번엔 문자열입니다. 여기서는 scanf 뒷부분에 &가 안붙어요~


배열이름이 배열의 시작주소이기 때문인데..이 부분도 나중에 배워보도록합시다!





안녕하세요 리듬입니다 라고 입력을 했더니..


안녕하세요만 출력되고 리듬입니다부분은 출력되지않았습니다.


왜냐하면 scanf는 공백을 인식못합니다. 그래서 문자열 입력함수로는 적절치못합니다. 그래서..!





입력함수에는 gets 함수라는 친구가 있는데요!


공백부분까지 인식하는걸 볼 수 있습니다. 엔터를 치기 전까지 데이터를 인식합니다.


그래서 줄단위로 입력할 때 더 편리합니다.


출력함수에도 printf말고 puts라는 친구가 있습니다..


puts도 printf랑 다를게 별로 없는데요.


puts함수에는 \n을 넣지않아도 줄바꿈이 자동으로 됩니다.


그리고 %d,%s같은 형식지정자를 사용할 수 없습니다.


자 이제 이번 글의 마지막입니다.


주석인데요. 먼저 보겠습니다.




엄청 간단히 보시면 초록색으로 되있는 부분이 주석입니다.


컴파일에 영향을 주지않습니다. 주석방법은 


//내용


간단하죠??


슬래시2개로 한 주석은 한줄만 주석처리됩니다.


여러줄 주석하려면 위에 보시다시피 /* 로 시작해서 */로 끝내면 됩니다.


주석을 하는 이유는 프로그래밍을 하다가 규모가 커지게 되면 그 코드를 짠 사람도 알아보기가 힘들어집니다.


어마어마하게 길어지거든요.


그리고 또 다른이유는 작성한 코드를 다른사람이 볼 수 있기 때문에 배려라고도 할 수 있습니다.


작업을 여러명이서 같이 하게 될 수 있는데 코드설명없이 줄줄이 써간다면


다른사람이 보게됬을때 못알아볼 수 있겠죠..


이번 글은 여기까지입니다!


다음 글에서는 연산자에 대해서 배워볼게요~


수고하셨습니다!


 :)













 

 


 


반응형

반응형

녕하세요! 리듬입니다~ 


이번 글에서는 출력함수에 대해 알아볼게요~


#include<stdio.h>


int main()

{


int a;


a=25;


printf("%d\n",a);


return 0;


}

저번 글에서 작성했던 코드에요.


출력함수를 배우기 전에


#include<stdio.h>라는 문장이 있죠?


standard/out이라는 라이브러리 헤더파일입니다.


자세한건 나중에 배우겠지만 표준 입출력 함수들을 포함하는 헤더파일이에요.


저게 있어야 입출력 함수를 쓸 수 있어요.


그리고 그 밑에는 int main() 이 있습니다.


뒤에 중괄호가 붙고 그 안에 코드를 써넣는 형태가 됩니다~


그러면  위에서 아래로 순차적으로 진행이 됩니다.


함수는 처리를 완료하고 그 처리한 결과를 돌려줘야하는데 돌려줘야하는 값의 형태가


무엇인지를 나타내는 부분이 'int' 부분입니다.


()안에는 매개변수가 들어갑니다.


()안에 아무것도 없으면 매개변수가 없다는 뜻이죠


매개변수는 함수를 호출할 때 필요한 데이터를 추가적으로 전달하기 위한 변수입니다.




밑에 return 0;가 있죠


return 0;은 '0이라는 값을 리턴해라'라는 뜻입니다. 운영체제로 반환합니다.


return은 함수 어떤 곳에서든 위치할 수가 있는데, return이 실행되면 그 함수는 실행이 종료가 됩니다.


return 0;은 보통 프로그램이 정상종료됬음을 의미합니다.


그리고 하나의 명령이 종료가 되면 마지막부분에 세미콜론(;)을 붙여줘야 합니다.


int a; 처럼요~



자~ 이제 출력 함수를 배워봅시다.


printf("문자열입력");



기본 형식은 이렇습니다.


입력해봅시다. 입력 후 Ctrl + F5 !










문자열입력이라고 출력이 됬습니다.


그런데 계속하려면 아무 키나 누르십시오라는 글이 옆에 붙어나오네요. 밑으로 내려보죠.


간단합니다. 문자열입력옆에 \n만 넣어주시면 됩니다. 


printf("문자열입력\n"); 이런식으로요~ 


\문자는 보통 백스페이스옆에 있을거에요. 


저는 노트북인데 스페이스옆에 있네요. 불편합니다..


출력해봅시다.








줄바꿈이 되서 출력이 됐습니다.


\n 같은 애들이 여러개가 있는데 제어문자(이스케이프 시퀀스)라고 부릅니다.


 제어 문자 이름

표기 

의미 

 줄바꿈

\n 

커서를 다음 줄 시작위치로 옮김 

 수평탭

\t 

탭 위치로 커서를 옮김 

 null문자

\0 

문자열의 끝을 표시 

캐리지 리턴 

\r 

 커서를 현재 라인의 시작위치로 옮김

 경고음

\a 

"삐"하는 경고음 발생 

 백스페이스

\b

커서를 현재 위치에서 한글자 뒤로 옮김 

 큰따옴표

\" 

큰따옴표 출력 

 작은따옴표

\' 

작은따옴표 출력 







제어문자 다 사용해서 출력해봅시다.







문자열입력1은 \n으로 줄바꿈해준거죠~


문자열입력2에는 사이에 \t를 넣었더니 tap간격만큼 벌어졌습니다.


문자열입력3에는 사이에 \r 캐리지리턴을 넣었더니 그 라인에 앞쪽으로 커서가 이동했죠 입력3만 출력이 됩니다.


문자열입력4에는 \a가 있는데 경고음이 한번 발생합니다.


문자열입력5에는 \b가 있죠 백스페이스입니다. 력이 지워지고 출력됐구요.


문자열입력6과 7에는 \"와 \'가 있어서 큰따옴표와 작은따옴표가 출력이 됐습니다.


이 글을 보시는 분들도 한번씩 해보세요~


다음은 형식지정자 배워볼게요.




#include<stdio.h>


int main()

{


int a;


a=25;


printf("%d\n",a);


return 0;


}


위에 있던 예입니다.


a라는 변수에 25라는 값을 넣었는데 이 값을 출력을 하려고 


printf("a"); 이렇게 하면 a가 출력이 됩니다.


위에 보시면 %d가 있죠? 이 친구가 형식지정자입니다.


여러가지가 있는데 오늘은 아주 간단히 4가지만 알아봅시다.


 문자(의미)

타입 

출력형식 

 %d(decimal)

int,short 

 10진수

 %f(float)

double 

고정 소수점 

 %c(character)

char 

문자 

%s(string) 

문자열 



바로 예를 들어볼게요.




감이 좀 잡히시나요?


a라는 변수는 int형이기 때문에 %d를 써줬고 b라는 변수는 double형이여서 %f를 써줬죠


%.2f는 소수점 둘째자리까지 출력하라는 의미에요.


밑에처럼 %5d 이렇게 써주시면 5칸 확보하고 오른쪽으로 정렬해서 출력합니다.


%-5d는 5칸 확보하고 왼쪽으로 정렬해서 출력합니다.






이번 글은 여기에서 마치고 다음 글은 입력함수입니다!


수고하셨습니다~


:)



반응형

반응형

녕하세요~ 리듬입니다!


저번글에는 처음으로 코드작성을 해보았죠


이번글에서 본격적으로 시작해보려합니다.천천히요..


제목에 써있듯이 변수자료형에 대해 알아보려고 합니다!


C언어는 절차지향적인 프로그래밍언어 라는 특징을 가지고있습니다.


절차지향적이 무엇인가!


소스코드를 작성을 하죠??


그 작성한 소스코드가 위에서부터 아래로 차례대로 실행이 되는 것을 말합니다.


그래서 소스코드 맨위쪽에 필요한 변수들을 미리 선언해놓아야 합니다.


이 점때문에 다른 언어들보다 속도면에서 빠르다는 장점을 보인다고 합니다.


이제 다시 와서 변수는 무엇일까요


변수는 데이터를 저장할 수 있는 방의 이름이라고 생각하시면 됩니다.


메모리 상의 저장공간입니다.


변수를 선언한다고 하는데요.


선언을 하게되면 변수를 생성하게 됩니다. 방이 생기는거죠.


변수는 '정수형 변수''실수형 변수'로 나뉩니다.


정수형 변수에는 char형, int형, long형 변수가 있고,


실수형 변수에는 float형, double형이 있습니다.


변수의 형식을 나타내는 char, int, float, double 이러한 것들을 '자료형'이나 '데이터 타입'이라고 합니다.


변수는 자료형에 따라 크기가 달라지게됩니다.


자료형은 다양한 변수나 함수의 형식을 선언하는데 사용이 됩니다.



▶자료형


데이터 종류

자료형

크기

문자형

부호

있음

char

1byte

부호

있음

unsigned char

1byte

정수형

부호

있음

short

2byte

int

4byte

long

4byte

부호

없음

unsigned short

2byte

unsigned int

4byte

unsigned long

4byte

실수형

float

4byte

double

8byte


표에 보이는 것처럼 자료형에 따라 크기가 달라집니다.


변수를 선언할때는 규칙이 있습니다.


1. 알파벳 대소문자,숫자 언더바(_)로 선언이 가능합니다.


2. 변수의 이름은 첫 글자로 숫자를 사용할 수 없습니다.


3. 키워드도 변수의 이름으로  사용할 수 없습니다.( 키워드는 int나 char,return 등등 미리 지정되있는 단어)


4. 변수의 이름에 공백을 포함할 수 없습니다.


5. 대소문자를 구분합니다.



변수를 선언하는 방법은


int a;


이런식으로 이루어지는데요. 앞에 int는 타입,a는 이름입니다.


그러니까 자료형은 int형이고 이름이 a인 방을 만든겁니다.


그리고 a에 값을 주려면


a=25;


a와 25가 같다는 의미가 아니라


25를 a에 대입한다는 의미가 됩니다.


그래서 a라는 방에 25라는 값이 들어가게 되는거에요.


그리고~


초기화라는 단어가 있어요.


변수에 처음 값을 넣어주는 걸 뜻합니다.


위에 문장을 예로 들면 a 변수에 25로 초기화해준겁니다.


선언과 동시에 초기화할 수 도 있습니다.


int a=25;


이런식으로요~


밑에 문장을 입력하시고 Ctrl+F5를 눌러주면 값이 출력이 됩니다.









변수와 자료형에 대해 간단히 알아보았습니다.


다음 글에서는 입출력함수에 대해 알아볼게요! 


수고하셨습니다!


:)







반응형

반응형

하세요~ 리듬입니다!


이전 글에서는 비주얼 스튜디오 2015 설치까지 했었습니다.


이번 글에서는 소스코드 작성을 해보려고 합니다.





비주얼 스튜디오 2015를 실행 시켜줍니다.









이전 글에서 만들어놓은 프로젝트를 실행시키기위해 빨간색박스를 따라갑니다.









그리고 Project1 폴더로 들어간 후 'Project1.sln'을 열어줍니다.









그리고 밑에 보이시는 것처럼 작성해줍니다.









그리고 나서 Ctrl+F5를 눌러주면 


밑에 창이 뜰거에요~ 예를 눌러줍니다.





눌러주시면 무언가 떴다가 사라지고


밑에 출력창에 이런글만 뜨죠









이 문제를 해결하기 위하여 


프로젝트 탭에 속성으로 들어가줍니다!









들어가시면 밑에 창이 뜰거에요.


링커옆에 화살표를 클릭하시고 시스템을 눌러줍니다.


하위 시스템 오른쪽에 화살표를 눌러주시고 콘솔 선택해줍니다.


적용 후 확인!









그리고 나서 다시 한번 Ctrl+F5를 눌러주시면!


밑에 처럼 뜨게 될거에요.









이렇게해서 첫코딩 첫걸음이 시작되었네요.


이번 글은 여기서 마치도록 하고 다음 글부터 차근차근 하나하나 배워가보도록 합시다!


:)



반응형

반응형

녕하세요. 리듬입니다!!


첫글에 이어서 이번 글은 비주얼 스튜디오 2015 설치하는 법입니다.


먼저 https://www.visualstudio.com/ko/downloads/ 이곳으로 들어가셔서


무료 다운로드를 눌러줍니다.





다운로드가 완료되면




실행시켜줍시다.




빨간색박스만 따라오시면 됩니다.








또 다음을 눌러주시면








설치버튼이 나옵니다.클릭~해주시면








이렇게 진행됩니다.


좀 오래걸립니다..


그리고 기다림끝에!








설치가 완료되었습니다!









아이디가 있으면 로그인


없으시면 나중에 로그인







순서대로 해주시고 시작을 눌러줍니다.








그리고 새 프로젝트를 눌러줍니다.








빈 프로젝트를 눌러주시고 확인을 눌러주세요.








이렇게 해서 프로젝트 만들기까지 끝났습니다.








소스 파일에 오른쪽 클릭하시고 빨간색박스 따라가시면 됩니다.








C++파일(.cpp)는 선택이 되어있죠?


파일이름을 임의로 test.c로 해주고 추가해줍니다.


이렇게해서 비주얼 스튜디오 2015 설치 실행 완료입니다.






수고하셨습니다! 


:) 




반응형