안녕하세요, C 프로그래밍 언어 열번째 강의입니다.

오늘은 Chapter 9에서 배운 연산자를 실습하겠습니다.

이번 시간만큼은 직접 코드를 작성하고, 컴파일 해보시길 바랍니다. 반드시!



일단 위의 코드를 그대로 본인의 비주얼 스튜디오에 작성해보세요.

작성이 완료되셨나요? 이제 한 줄 한 줄 해석해보겠습니다.


가장 먼저 Chapter 7에서 배운 변수 선언을 대입 연산자를 이용해 변수 초기화와 동시에 했습니다.

변수 x에는 7이 대입되었고, 변수 y에는 4가 대입되었습니다.


그리고 Chapter 6에서 배운 printf 함수입니다. 잠깐 복습 겸 우리가 작성한 첫번째 printf 함수를 살펴볼까요.

첫 번째 전달인자는 겹따옴표 ""안의 내용입니다. 이 전달인자는 실제 화면에 출력하고자 하는 내용입니다.

그 중 %d은 서식 지정자이며, ""안에서 첫번째로 나타난 서식 지정자 %d는 printf 함수의 두 번째 전달인자를 해당 위치에 출력하겠다는 의미입니다.

그리고 ""안에서 두번째로 나타난 서식 지정자 %d는 printf 함수의 세 번째 전달인자를 해당 위치에 출력하겠다는 의미입니다.

마찬가지로 ""안에서 마지막으로 나타난 서식 지정자 %d는 printf 함수의 네 번째 전달인자를 해당 위치에 출력하겠다는 의미입니다.

그리고 ""안에서 /n은 줄바꿈을 의미합니다. 이에 대해서는 추후에 다시 언급하겠습니다.

지금은 ""안에 \n을 넣는다면 줄바꿈이 된다고 이해하시면 충분합니다.


일단 슬라이드의 코드를 직접 작성하고 컴파일 (ctrl+F5)를 해볼까요.



컴파일 결과가 출력되었습니다.

첫번째 printf 함수는 덧셈 연산자입니다. 마지막 전달인자에서 x+y가 계산이 되고, 세번째 서식 지정자 위치에서 해당 값이 출력이 되었습니다.

7+4=11이 정상적으로 출력되었습니다.

뺄셈, 곱셈 연산자도 정상적으로 출력되었습니다.

하지만 네번째 printf 함수에서는 무엇이 출력이 되었나요?

실제 7/4는 1.75입니다. 하지만 모종의 이유로 소수점 이하는 생략된채 1만 출력이 되었습니다.

이는 변수의 자료형, 서식 지정자와 연관이 있으며, 조만간 설명해드리겠습니다.

마지막 연산자는 나머지 연산자입니다.

나머지 연산자는 말 그대로 나눗셈을 하고 나머지를 계산하여 출력합니다.

7/4를 계산하였을 때, 7=4*1+3, 즉 몫은 1이며 나머지는 3으로 계산할 수 있습니다.

따라서 3을 정상 출력하였습니다.


이때, 코드를 다시한번 보실까요? 마지막 printf 함수에 "%d%%%d=%d\n"라고 작성하였습니다.

%가 과도하게 많죠? printf 함수의 ""안에서 %를 마주치면 뭔가 특별한 것이 있을 것이라고 컴파일러는 판단합니다.

이로인해 %d가 문자 그대로의 %d가 아닌 서식 지정자로 인식이 됩니다.

하지만 문자 그대로의 %를 입력하고 싶다면, %%을 작성하시면 실제 출력화면에서는 %만 출력됩니다.

이러한 과정도 추후에 다시 설명하겠습니다. 지금은 연산자 실습시간이죠.



일단 위의 코드를 그대로 본인의 비주얼 스튜디오에 작성해보세요.

작성이 완료되셨나요? 이제 한 줄 한 줄 해석해보겠습니다.



후위 증감 연산자와 전위 증감 연산자는 주의깊게 사용해야합니다.


후위 증가 연산자의 경우, 모든 계산이 끝나고 다음 줄로 넘어갈 때 계산이 이루어집니다.

예를 들어, 현재 x=7이라고 변수 선언과 동시에 초기화를 하였습니다.

이를 후위 증가 연산자를 이용해, printf("%d\n", x++);라고 작성하였습니다.

이 때, x는 증가하지 않은채 수식이 진행됩니다. x는 그대로 숫자 7인 채로 진행됩니다.

따라서 printf 함수가 끝날 때까지도 x는 7이며 실제 컴파일 화면에서도 7을 출력합니다.

하지만 printf 함수가 끝나고 다음 줄로 넘어갈때 후위 증가 연산자는 작동합니다.

이 순간에 후위 증가 연산자가 x를 1 증가시켜 x=7+1=8로 만듭니다.

그렇기때문에 두번째 printf("%d\n", x)에서 x는 8이 되어 있었고, 실제 컴파일 화면에서도 8이 출력됩니다.


하지만 전위 증가 연산자의 경우는 다릅니다.

전위 증가 연산자의 경우 후위 증가 연산자와 달리 가장 우선적으로 변수를 1 증가시킵니다.

따라서 세번째 printf 함수에서 x는 8이였지만, 전위 증가 연산자로 인하여 곧바로 x=8+1=9가 되었고, 컴파일 화면에서 9가 출력됩니다.

그리고 이미 연산이 끝났기 때문에 세번째 printf 함수가 끝나도 변수 x는 변동이 없습니다.


이와 마찬가지로 후위, 전위 감소 연산자도 진행됩니다.

작성한 코드와 컴파일 화면을 잘 비교하며 공부해보세요.




비교 연산자 부분입니다. 

일단 위의 코드를 그대로 본인의 비주얼 스튜디오에 작성해보세요.

작성이 완료되셨나요? 이제 한 줄 한 줄 해석해보겠습니다.



지난 시간에도 말씀드렸이 비교 연산자의 결과값은 참(1) 혹은 거짓(0)입니다.

x=7이고 y=4입니다.

첫번째 수식 7==4(7과 4는 같다)라는 수식은 거짓입니다. 따라서 거짓(0)을 반환하고 실제 컴파일 화면도 0을 출력합니다.

두번째 수식 7!=4(7과 4는 다르다)라는 수식은 참입니다. 따라서 참(1)을 반환합니다.

세번째 수식 7>4(7은 4보다 크다)라는 수식은 참입니다. 따라서 참(1)을 반환합니다.

네번째 수식 7<4(7은 4보다 작다)라는 수식은 거짓입니다. 따라서 거짓(0)을 반환합니다.



논리 연산자 부분입니다. 

일단 위의 코드를 그대로 본인의 비주얼 스튜디오에 작성해보세요.

작성이 완료되셨나요? 이제 한 줄 한 줄 해석해보겠습니다.



x = 1, 즉 논리 연산자 입장에서는 참을 뜻합니다.

y = 0, 즉 논리 연산자 입장에서는 거짓을 뜻합니다.

첫번째 수식 !x(x의 반대)는 참의 반대인 거짓(0)입니다.

두번째 수식 x&&y(x와 y 모두 참이다)는 y가 거짓이기 때문에, 거짓(0)입니다.

세번째 수식 x||y(x 혹은 y 중 최소 하나는 참이다)는 x가 참이기 때문에, 참(1)입니다. 



복합 할당 연산자 부분입니다. 

일단 위의 코드를 그대로 본인의 비주얼 스튜디오에 작성해보세요.

작성이 완료되셨나요? 이제 한 줄 한 줄 해석해보겠습니다.



복합 할당 연산자는 대입 연산자와 다른 연산자가 합쳐진 연산자입니다.

지난  시간에 설명했듯이 연산과 동시에 대입을 합니다.

첫번째 printf 함수를 보면 가장 초기 x값을 출력합니다. 숫자 7입니다.

덧셈 할당 연산자를 실행합니다.

x += y를 풀어 설명하자면, x와 y를 더하고, 그 결과값을 다시 x에 대입한다는 말과 같습니다.

따라서 x는 7이고 y는 4이기때문에 7+4=11이 다시 x에 대입되어 x=11이 됩니다.

그렇기에 두번째 printf 함수의 변수 x 출력값이 11이 됩니다.


마찬가지로 x -= y를 풀어 설명하자면, x와 y를 빼고, 그 결과값을 다시 x에 대입한다는 말과 같습니다.

따라서 x는 현재 11이고 y는 4이기때문에 11-4=7이 다시 x에 대입되어 x=7이 됩니다.

그렇기에 세번째 printf 함수의 변수 x 출력값이 7이 됩니다.



다시 x *= y를 풀어 설명하자면, x와 y를 곱하고, 그 결과값을 다시 x에 대입한다는 말과 같습니다.

따라서 x는 현재 7이고 y는 4이기때문에 7*4=28이 다시 x에 대입되어 x=28이 됩니다.

그렇기에 세번째 printf 함수의 변수 x 출력값이 28이 됩니다.


이런 식으로 /=와 %= 를 유추할 수 있습니다.


오늘 실습은 여기까지 마무리 짓겠습니다.
반드시 직접 손으로 코드를 작성해보고 컴파일 해보시는 시간을 가지시길 바랍니다.


'Computer Science > C' 카테고리의 다른 글

Chapter 12. 진법  (0) 2018.04.24
Chapter 11. 연산자 우선순위  (0) 2018.04.19
Chapter 9. 연산자  (0) 2018.04.13
Chapter 8. 변수의 자료형  (0) 2018.04.12
Chapter 7. 변수의 선언  (0) 2018.04.12


안녕하세요, C 프로그래밍 언어 아홉번재 강의입니다.

오늘은 연산자에 대해 간단히 알아보겠습니다.

지난 시간은 변수의 선언에 대해 알아봤습니다.

그 과정에서 대입 연산자라는 것이 쓰였는데, 그 자세한 내용입니다.



연산자는 크게 '산술 연산자', '비교 연산자', '논리 연산자', '비트 연산자', '복합 할당 연산자', '멤버와 포인터 연산자', 그리고 기타로 나눌수 있습니다.

여기서 멤버와 포인터 연산자는 추후 포인터 강의때 설명하도록 하겠습니다.

마찬가지로 아직은 쓰일 일이 없는 비트 연산자도 추후에 다루도록 하겠습니다.



산술 연산자는 매우 기초적인 계산을 담당하고 있습니다.

지난 시간에도 배웠던 대입 연산자란 b를 a에 대입(치환)한다는 의미입니다.

덧셈 연산자란 a와 b를 더하는 연산자,

뺄셈 연산자란 a에서 b를 빼는 연산자,

곱셈 연산자란 a와 b를 곱하는 연산자입니다.



나눗셈 연산자란 a를 b로 나누는 연산자,

나머지 연산자란 a를 b로 나누고 그 나머지 값을 구하는 연산자입니다.


그리고 가장 중요한 증가 연산자와 감소 연산자가 있습니다.

증가 연산자는 다시 두가지로 나뉘는데, 전위 증가 연산자후위 증가 연산자가 있습니다.

두 연산자 모두 a에 더하기 1을 하겠다는 의미이지만,

앞에 위치한 전위 증가 연산자는 다른 수식과 함께 쓰일 경우 가장 우선순위로 a에 1을 더합니다.

하지만 뒤에 위치한 후위 증가 연산자는 다른 수식과 함께 쓰일 경우 모든 연산자가 끝나고 마지막에 a에 1을 더합니다.


감소 연산자 또한 증가 연산자와 마찬가지로 전위와 후위로 나뉘며, 용도는 같습니다.


전위와 후위에 대해 헷갈리시나요? 다음 강의에서 실습을 통해 다시 알아보겠습니다.



비교 연산자는 수식의 조건이 만족하면 숫자 1을 반환합니다.

만약 수식의 조건이 만족되지 않으면 숫자 0을 반환합니다.

같음 비교 연산자를 이용하여 예를 들어보겠습니다.

컴퓨터는 5==6 이라는 수식을 만나게 된다면 ==을 기준으로 양쪽의 두 식을 비교하는 비교 연산자임을 알게 됩니다.

실제로 두 식을 비교하여 ==이 맞는지 틀린지 확인을 합니다.

위 예제 5==6는 당연히 틀린 수식임으로 컴퓨터는 숫자 0을 반환합니다.

반대로 6==4+2와 같이 수식이 맞다면 컴퓨터는 숫자 1을 반환합니다.

같지 않음 비교 연산자를 살펴보겠습니다.

5!=4는 무엇을 반환할까요?

한국어로 천천히 해석해본다면, '5와 4는 같지 않다'라는 말과 같습니다. 즉 올바른 수식이며 숫자 1을 반환합니다.



비교 연산자는 어렵지 않겠습니다.

수식이 만족하면 숫자 1을 반환하고, 수식이 만족하지 않으면 숫자 0을 반환한다는 점을 유의해주세요.



비교 연산자와 비슷한 논리 연산자입니다.

논리 연산자를 설명하기 이전에 프로그래밍의 참(True)와 거짓(False)에 대해 설명하겠습니다.

앞서 배운 비교 연산자를 생각해볼까요.

5==3은 참일까요 거짓일까요?

네, 이 수식은 거짓(False)입니다. 그렇다면 컴퓨터는 어떤 값을 반환했을까요?

위에서 설명해드렸듯이 컴퓨터는 0을 반환합니다.

프로그래밍에서 거짓(False)은 숫자 0으로 표현을 합니다.

그렇다면 참(True)은 숫자 1로 표현하는 것일까요?

절반은 맞고 절반은 틀립니다.

프로그래밍에서 참(True), 거짓(False)을 이야기할 때, 숫자 0은 거짓을 뜻합니다.

그리고 그 나머지 모든 숫자는 참을 뜻합니다. 그 중 가장 대표적인 숫자가 1입니다.


이해 가셨나요?


그럼 논리 연산자로 돌아오겠습니다.

논리 연산자는 숫자를 참과 거짓 정보로 생각하셔야합니다.

논리적 NOT 연산자는 a가 거짓일 경우, 참을 반환합니다.

만약 a가 참일 경우, 거짓을 반환합니다.


논리적 AND 연산자는 a와 b가 모두 참이여야만, 참을 반환합니다.

그 외의 모든 경우는 거짓을 반환합니다.


논리적 OR 연산자는 a와 b 중 하나만 참이여도, 참을 반환합니다.

하지만 그 외의 모든 경우는 거짓을 반환합니다. 




비트 연산자에 대해서는 추후에 다루도록 하겠습니다.



비트 연산자에 대해서는 추후에 다루도록 하겠습니다.



복합 할당 연산자는 대입연산자와 나머지 연산자들이 합쳐진 연산자입니다.

쉽게 생각하여 연산과 동시에 대입을 할 수 있습니다.

덧셈 할당 연산자는 a에 b를 더한 값, a+b를 즉시 a에 대입하겠다는 표현입니다.

뺄셈 할당 연산자는 a에서 b를 뺀 값, a-b를 즉시 a에 대입하겠다는 표현입니다.


나머지도 같은 방식으로 진행됩니다.



나머지도 같은 방식으로 진행됩니다.


좀더 구체적인 설명과 예시는 바로 다음시간에 이어서 하겠습니다.





'Computer Science > C' 카테고리의 다른 글

Chapter 11. 연산자 우선순위  (0) 2018.04.19
Chapter 10. 연산자 실습  (0) 2018.04.18
Chapter 8. 변수의 자료형  (0) 2018.04.12
Chapter 7. 변수의 선언  (0) 2018.04.12
Chapter 6_1. 과제  (0) 2018.04.05


안녕하세요, C 프로그래밍 언어 여덟번째 강의입니다.

오늘은 지난 시간에 소개하다가 넘어간 자료형에 대해 아주 짤막한 소개를 하겠습니다.

자료형(Data Type) 이야기만 두 장의 챕터가 필요하기 때문에 추후에 반드시 설명하겠습니다.



변수를 선언하기 위한 자료형은 크게 두가지로 나뉩니다.


정수형 변수란 말 그대로 정수(Integer)를 저장 혹은 처리하기 위한 변수입니다.

예를 들어, 숫자 15, 20, -15와 같은 숫자를 처리하기 적합한 변수입니다.


실수형 변수란 실수를 저장 혹은 처리하기 위한 변수입니다.

예를 들어, 숫자 3.131592, -2.44, 912.42와 같은 소수점이하가 존재하는 숫자를 처리하기 적합한 변수입니다.



이러한 정수형, 실수형 변수를 구분해서 선언하기 위해서는 각기 다른 자료형을 이용해야합니다.


정수형 변수를 선언하기 위한 자료형은 char, short, int, long과 같은 자료형이 있습니다.

지난 시간에 사용한 자료형은 int 자료형이였습니다.


실수형 변수를 선언하기 위한 자료형은 float, double과 같은 자료형이 있습니다.


각각 상황에 따라 알맞은 자료형을 선택하면 됩니다.

자료형의 차이점에 대해서는 추후에 반드시 설명해야할 때가 있습니다.

그 때 다시 각각의 차이점에 대해서 정확히 설명하고 알맞은 사용시기를 알려드리겠습니다. 



한번 실습 프로그래밍을 해볼까요.

일단 배껴쓰기를 해보세요.

쓰다보면 지난 Chpater 7에서 배운 변수의 선언과 초기화를 복습할 수 있습니다.

Chapter 6에서 배운 printf 함수의 전달인자와 서식 지정자를 한번더 확인할 수 있습니다.

printf 함수는 아직 덜 이해가 가셔도 좋습니다. 어떠한 모양을 하고 있는지 확인해주시길 바랍니다.



'ctrl + F5'를 눌러주시면 위와같이 결과 화면이 뜹니다.

변수의 값을 임의로 바꾸어가며 숙달해보세요.


'Computer Science > C' 카테고리의 다른 글

Chapter 10. 연산자 실습  (0) 2018.04.18
Chapter 9. 연산자  (0) 2018.04.13
Chapter 7. 변수의 선언  (0) 2018.04.12
Chapter 6_1. 과제  (0) 2018.04.05
Chapter 6. printf 함수  (0) 2018.04.05


안녕하세요, C 프로그래밍 언어 일곱번째 강의입니다.

Chapter 4와 6의 어려운 이론을 헤쳐나오셨나요?

절반 이상 이해를 못하셨어도 무방합니다.

자꾸 같은 단어를 앞으로 마주하게 될테고요. 금방 익숙해질겁니다.

힘내세요, 곧 스스로 코드를 작성하실 겁니다.


오늘은 프로그래밍의 기초 중 기초 변수에 대해 설명하겠습니다.

변수에 대한 개념은 어려운 편이 아니니 80% 이상은 이해하고 넘어가주시길 바랍니다.



컴퓨터 프로그래밍에서의 변수의 사전적 정의 입니다.

한자풀이를 해보자면 변할 변(變)과 셀 수(數)가 만나 만들어진 단어입니다.

쉽게 설명하자면 '언제든 변할 수 있는 값'이라고 이해하시길 바랍니다.

계속 슬라이드를 넘어가 볼까요.

 


단어 자체를 분석하지 말고, 실제로 어떤곳에 쓰이는 단어인지 살펴보겠습니다.

만약에 제가 컴퓨터를 통하여 "513 + 857" 을 계산하고자 합니다.


컴퓨터는 필연적으로 이 계산을 하기 위해서는 숫자 "513"과 숫자 "857"을 어딘가에 각각 저장을 해야합니다.

그곳이 메모리라는 곳이며, 메모리에 "513"을 저장할 수 있는 공간을 만들어 냅니다.


메모리 공간이란 숫자 "513"이 거주하고는 방(Room)이라고 생각하세요.

마찬가지로 숫자 "857"이 거주하고 있는 방도 만들어냅니다.

그리고 각 방에 이름을 붙여줍니다. "스위트룸", "비지니스룸" ...


이 때, 이러한 이름 혹은 그 방 자체를 가리켜 변수라고 부릅니다.

그리고 실제로 513+857를 하기위해서는 변수를 이용해 그 방을 찾아가 그곳에 있는 값들을 호출해서 덧셈을 합니다.


어렵나요? 반복적으로 다시 설명드립니다.



실제로 C언어에서 변수를 선언해보겠습니다.


int라는 것은 많은 자료형(Data type)중 하나이며, 정수형을 나타낸다고 간단히 설명하겠습니다.

물론 금방 다시 자세히 설명 드리겠습니다.


결론부터 말씀드리자면, int num 이란 "정수(Integer)를 저장하기 위한 공간(방)을 만들 것이고, 그 공간(방) 이름을 num이라고 정하겠다"라는 의미입니다.

즉 선언을 한것입니다.


이해가셨나요?

여러분은 호텔의 주인이며, 정수 형태의 손님을 받기위한 방을 만들었고, 그 방 이름은 num이라고 작명한 것입니다.

자, 방을 만들었으면 손님을 들여보내야겠죠?



변수를 초기화한다는 의미는 비어있는 메모리 공간에 처음으로 실제 값을 대입한다는 뜻입니다.

변수를 num이라는 이름으로 선언을 하였기때문에, 앞으로 이 변수를 num이라고 부르시면, 작성하시면 됩니다.

'num = 5;' 를 살펴볼까요.

'num'은 저희가 정한 변수의 이름이였습니다.

'='이란 대입 연산자입니다. 보통 수학에서는 등위(Equality)표시였지만 C언어에서는 오른쪽에 있는 값을 왼쪽에 대입을 하겠다는 의미입니다.

즉 '=' 오른쪽에 있는 숫자 "5"를 왼쪽의 변수 'num'에게 대입을 하겠다는 대입 연산자입니다.


여러분은 호텔의 주인이며, num이라는 방을 만들었습니다.

이 방은 특별히 정수 형태의 손님을 받기로 하였으니, 정수 "5"라는 손님을 num 방에 넣어주었습니다.


그러면 확인해 볼까요?

Chapter 6에서 공부하였던 printf 함수를 이용하여 확인할 수 있습니다.

num 이라는 변수는 int 형태의 변수이기 때문에 서식 지정자 %d를 이용하여 확인 가능합니다.

함께 시도하는건 이후 슬라이드에서 한꺼번에 하겠습니다.



위에서는 변수의 선언과 초기화를 각각 하였습니다.

하지만 슬라이드와 같이 선언과 초기화를 동시에 할 수도 있습니다.


정수(Integer)를 저장하기 위한 공간을 만들고 그 이름을 num이라고 정하고, 대입 연산자 '='를 통해 '10'이라는 값을 공간 안에 넣었습니다.

참 쉽죠?



한번에 여러 변수를 선언할 수도 있습니다.

쉼표(,)를 이용하였습니다.

물론 초기화도 한번에 여러 변수를 할 수 있습니다.



자, 이제 진짜 실습을 해보실까요?

변수 2개는 선언만 해보시고, 변수 1개는 선언과 초기화를 동시에 해보세요.

그리고 앞에서 선언하였던 변수에 값을 넣어보시고, printf 함수를 이용하여 출력해보세요.



변수의 이름을 짓는것도 참 까다롭답니다.

사실 프로그래밍에서 가장 힘든 작업은 작명입니다.

앞으로 매우 많은 변수를 사용하게 될 것이고, 그 변수마다 이름을 붙여주어야합니다.

그 변수들은 계속해서 사용되기 때문에 각각 특성에 맞는 이름을 붙여주어야합니다.


나이와 관련된 값을 저장하고 싶으시면 Age 혹은 age 혹은 AGE 등등 여러가지 사용자가 원하는 형태가 있겠죠?

이전부터 쓰이던 규칙을 살펴보겠습니다.

우선 변수의 이름은 알파벳, 숫자, 언더바(_) 밖에 사용하지 못합니다.

또한 AGE와 age는 엄연히 다른 변수 이름입니다.

C언어에서는 변수이름을 123num 과 같이 숫자로 시작할 수 없습니다.

My age 와 같이 공백이 들어갈 수 없습니다.


앞으로 예시로 주어지는 소스코드들의 변수 이름을 보면서 대략적으로 많이 사용하는 변수 이름을 익혀보세요.



단, Visual Studio 2017은 한글 변수이름을 완벽하게 지원합니다!

하지만 권장하지 않습니다. 프로그래밍 언어 C는 모든 나라의 사용자, 개발자가 공유하며 사용하는 언어입니다.

한국 사람만 알아볼 수 있는 변수이름을 이용하지말고, 영어로 변수 이름을 만드는것을 익혀봅시다.



'Computer Science > C' 카테고리의 다른 글

Chapter 9. 연산자  (0) 2018.04.13
Chapter 8. 변수의 자료형  (0) 2018.04.12
Chapter 6_1. 과제  (0) 2018.04.05
Chapter 6. printf 함수  (0) 2018.04.05
Chapter 5. 주석 달기  (0) 2018.04.05


안녕하세요, C 프로그래밍 언어 여섯번째 강의의 과제입니다.

오늘은 여섯번째 강의에서 배운 것을 복습해보겠습니다.


printf 함수를 세 번 이용하여, 아래와 같은 출력화면을 만들어보세요.

지정 서식자 %d와, 숫자 (2, 20160405, 1234567)를 이용하세요.



# 과제의 정답은 다른 게시판에 업로드 하겠습니다.

'Computer Science > C' 카테고리의 다른 글

Chapter 8. 변수의 자료형  (0) 2018.04.12
Chapter 7. 변수의 선언  (0) 2018.04.12
Chapter 6. printf 함수  (0) 2018.04.05
Chapter 5. 주석 달기  (0) 2018.04.05
Chapter 4_1. 과제  (0) 2018.04.05


안녕하세요. C 프로그래밍 언어 여섯번째 강의입니다.

오늘은 Chapter 4에서 잠깐 다루었던 printf 함수를 조금더 깊이 살펴보겠습니다.


오늘도 내용을 100% 이해하실 필요는 없습니다.

어떠한 단어가 사용되지는, 실제 결과값은 무엇인지만 생각해보는 시간이 되세요.



지난 시간에 이어, Hello.c 소스파일을 열어서 위와 같이 코드를 작성해봅시다.



'ctr+F5' 이용해 실행시킨다면 위와 같은 결과화면이 보입니다.

분명 printf 함수에 %d를 입력하였으나, 전혀 다른 출력물이 보이네요.

왜 그럴까요?



서식 지정자란 컴퓨터에게 데이터를 어떠한 형식으로 출력할 것인가 알려주는 역할을 합니다.

엄연히 정확한 정의는 아니지만, printf 함수에서 이해를 돕기 위한 정의입니다.

자세한 정의는 추후에 다시 하도록 하겠습니다.


일단 여러가지 서식 지정자가 있으며, 각각 다른 출력 형태를 의미하는 것을 알아둡시다.

그 중 %d란 부호가 있는 정수 데이터를 출력할 때 쓰이는 서식 지정자입니다.



전달인자란 함수를 호출할 때 전달되는 실제 값들입니다.

함수의 정의를 기억하시나요. 입력값과 출력값이 존재하였습니다.

여기서 입력값은 항상 하나일 필요는 없습니다.

함수가 어떤 식으로 정의가 되었느냐에 따라 입력값은 두 개 이상일 수 있습니다.

실제로 입력되어 함수로 전달되는 값들을 우리는 전달인자라 부릅니다. 



이제 위에서 우리가 만들었던 소스 코드를 다시 살펴보겠습니다.

가장 첫 번째 printf 함수입니다.

""를 이용하여 printf 함수에게 하나의 전달인자를 전달하였습니다.

printf 함수는 자신이 받은 첫 번째 전달인자를 해석하고 결과화면에 출력합니다.

이것은 헤더함수 'stdio.h'에서 정의된 printf 함수의 약속입니다.



두 번째 printf 함수입니다.

""를 이용하여 printf 함수에게 첫 번째 전달인자를 전달하였습니다.

printf 함수는 자신이 받은 첫 번째 전달인자를 해석합니다.

 


이 때 printf 함수는 첫 번재 전달인자에 %d라는 서식 지정자가 있다는 것을 알게 됩니다.

그렇다면 printf 함수는 자신에게 정해진 약속에 따라, 두 번째 전달인자를 찾습니다.

두 번째 전달인자는 첫 번째 전달인자 뒤 쉼표(,) 다음에 나타나기로 약속되어 있습니다.

따라서 printf 함수는 서식 지정자를 해석하고 두 번째 전달인자를 해당 자리에 넣어 결과화면에 출력합니다.



세 번째 printf 함수입니다.

""를 이용하여 printf 함수에게 첫 번째 전달인자를 전달하였습니다.

printf 함수는 자신이 받은 첫 번째 전달인자를 해석합니다.



이 때 printf 함수는 첫 번재 전달인자에 %d라는 두 개의 서식 지정자가 있다는 것을 알게 됩니다.

그렇다면 printf 함수는 자신에게 정해진 약속에 따라, 두 번째 전달인자를 찾습니다.

두 번째 전달인자는 첫 번째 전달인자 뒤 쉼표(,) 다음에 나타나기로 약속되어 있습니다.

따라서 printf 함수는 첫 번째 서식 지정자를 해석하고 두 번째 전달인자를 해당 자리에 넣어 결과화면에 출력합니다.

마찬가지로 printf 함수는 두 번째 서식 지정자를 해석하고 세 번째 전달인자를 해당 자리에 넣어 결과화면에 출력합니다. 


printf 함수에 대한 이해가 어느정도 되었나요?

갑작스레 서식 지정자와 전달인자에 대해 새롭게 나와 당황하셨나요.

괜찮습니다.


모두 100% 이해하실 필요가 없습니다.

다른 단어들과 함께 천천히 공부해 나가신다면 점점 그 의미를 또렷하게 아시게 될겁니다.

읽어보만 보시지말고 직접 손수 코드를 작성해보시고 결과물을 확인해보세요!

'Computer Science > C' 카테고리의 다른 글

Chapter 7. 변수의 선언  (0) 2018.04.12
Chapter 6_1. 과제  (0) 2018.04.05
Chapter 5. 주석 달기  (0) 2018.04.05
Chapter 4_1. 과제  (0) 2018.04.05
Chapter 4. Hello, C world ! 살펴보기  (0) 2018.04.03



안녕하세요, C 프로그래밍 언어 다섯번째 강의입니다.

오늘은 프로그래밍에 직접적인 영향을 주지 않지만, 반드시 필요한 주석에 대해 알아보겠습니다.



주석이란 코멘트라고도 불립니다.

주석은 프로그램 작성자가 직접 소스 코드에 대한 설명을 메모하는 것입니다.

이는 제 3자가 소스 코드를 더 쉽게 이해할 수 있게 만드는 것이 주 목적입니다.

이뿐만 아니라 재밌게도 시간이 조금만 지나도 자기 자신이 만들었던 소스 코드도 그 의도를 잊어먹기 쉽습니다.

시간이 지나 미래의 자신에게 자신이 만든 소스 코드를 설명하는 것도 목적 중 하나입니다.



C언어에서 주석을 다는 방법은 크게 두 가지로 나뉩니다.

한 줄 주석은 //으로 시작하여, 작성자가 엔터(Enter)를 입력할 때까지를 주석으로 인식하고 컴파일러는 // 뒷 문자열을 무시합니다.

여러 줄 주석은 /*으로 시작하여, */이 나올때까지를 주석으로 인식하고 컴파일러는 그 가운데 모든 문자열을 무시합니다.



이전까지 말들었던 Hello.c에 주석처리를 해봅시다.

주석을 달때에는 가능한 자세하게 세밀하게 쓰는것이 좋습니다.


다시 한번 주석에 대한 중요성을 말씀드리고, 오늘 강의는 여기까지입니다.


'Computer Science > C' 카테고리의 다른 글

Chapter 6_1. 과제  (0) 2018.04.05
Chapter 6. printf 함수  (0) 2018.04.05
Chapter 4_1. 과제  (0) 2018.04.05
Chapter 4. Hello, C world ! 살펴보기  (0) 2018.04.03
Chapter 3. 프로젝트 생성하기  (0) 2018.04.02


안녕하세요, C 프로그래밍 언어 네번째 강의의 과제입니다.

오늘은 네번째 강의에서 배운 것을 복습해보겠습니다.


printf 함수를 한번만 이용하여, 아래와 같은 출력화면을 만들어보세요.

그리고, 자신의 이름과 전화번호, 주소를 printf 함수를 세번 이용하여 나타내어 보세요.



# 과제의 정답은 다른 게시판에 업로드 하겠습니다.

'Computer Science > C' 카테고리의 다른 글

Chapter 6. printf 함수  (0) 2018.04.05
Chapter 5. 주석 달기  (0) 2018.04.05
Chapter 4. Hello, C world ! 살펴보기  (0) 2018.04.03
Chapter 3. 프로젝트 생성하기  (0) 2018.04.02
Chapter 2. IDE 설치하기  (0) 2018.04.01


안녕하세요, C 프로그래밍 언어 네번째 강의입니다.

오늘은 세번째 강의에서 실행보았던 Hello.c 파일을 살펴보겠습니다.

프로그래밍 언어를 학습하기 위해서는 기본적인 용어들을 알아야하는데요.

이번 시간에는 기본 용어에 대한 간략한 소개를 하겠습니다.


물론 어떤 단어를 설명하기 위해, 또다른 어려운 단어를 사용해야할 때가 있습니다.

그럴때에는 이해를 못하여도 좋습니다.

이번 강의는 '프로그램은 이런 구성이구나'까지만 생각해도 좋습니다.



지난 시간에 작성을 완료했던 Hello.c 소스 파일입니다.



프로그래밍은 함수에서 시작해서 함수로 끝납니다.

크고 복잡한 문제를 해결하기 위해서는 수많은 작은 함수들을 이용해야합니다.

기본적으로 사람은 완벽한 천재가 아니기 때문에, 복잡한 문제를 하나의 함수로 해결하지 못합니다.

그렇기에 "Divide and Conquer"라는 말이 프로그래밍의 기초가 되었습니다.


해결하고자하는 문제를 수많은 함수로 쪼개여 문제를 풀어나갑니다.


함수란 중고등학교 수학 시간에 배웠듯이, x라는 입력(Input)이 주어지고 일련의 과정을 거쳐 y라는 출력(Output)이 생성됩니다.

물론 프로그래밍에서의 함수에는 입력과 출력이 존재하지 않을 수 있지만, 우선 기본적인 이해도를 위해 설명하겠습니다.


함수란 음료수 자판기와 같습니다. 자판기에 동전을 넣으면, 우리는 볼수 없지만 자판기 내부에서 여러가지 과정을 거쳐 결국 우리가 원하는 음료수를 내보냅니다.

따라서 우리는 얼마나 자판기, 즉 함수를 이용하느냐는 프로그램을 잘 구현하는가에 대한 문제와 이어집니다.



Hello.c 소스 파일을 살펴볼까요.

'int main(void)'를 찾으셨나요?

여기서 'main'이란 함수의 이름을 나타내고, 이 함수를 'main함수'라고 부를 수 있습니다.

함수이름 앞에 존재하는 것은 해당 함수의 출력형태입니다.

'main함수'의 출력형태는 'int'라는 것입니다.

지금은 'int'가 무엇인지 아직 알 필요가 없습니다.

그리고 함수이름 뒤 소괄호 안에 있는 것이 입력형태입니다.

'main함수'의 입력형태는 'void'라는 것입니다.

물론 'void'가 무엇인지 아직 알 필요가 없습니다.


어렵지요? 다음 슬라이드 보겠습니다.



함수를 구성하는 요소, 출력형태, 함수이름, 입력형태 이외에 마지막으로 함수의 몸체가 있습니다.

'{', '}'와 같은 중괄호는 함수 몸체의 시작과 끝을 나타냅니다.


**함수는 출력형태 함수이름(입력형태) 함수의 몸체로 구성되어 있습니다.

함수의 몸체는 반드시 중괄호 '{', '}'로 시작과 끝을 나타냅니다. **



함수의 몸체 내부를 살펴보겠습니다.

C언어에서는 각 문장의 마지막은 세미클론 ';'으로 끝나야합니다.

한 행이 끝났음을 나타냅니다.

반드시 한 문장이 끝났다면, 곧바로 엔터(Enter)가 아닌 세미클론을 작성하시고 줄바꿈을 하세요.



다시 Hello.c 소스파일을 들여다보시면, main함수 상단에 #include <stdio.h>라는 문장이 있습니다.

이것이 바로 헤더파일인데요. #include라는 것은 뒤에 나오는 헤더파일을 불러오겠다고 선언을 하는 것입니다.

그렇다면 헤더파일이란 무엇일까요?



간단하게, 헤더파일이란 컴파일러(Visual Studio)가 자주 사용되는 기본적인 함수들을 모아둔 소스파일이라고 생각하시면 됩니다.

우리는 프로그래밍을 쉽게 하기 위해서 미리 만들어진 함수를 헤더파일을 불러와 사용하는 것입니다.



연 이어서, main함수의 몸체를 살펴볼까요?

printf("Hello, C world ! \n"); 라는 문장이 있네요.

'printf'도 위에서 설명하였던 함수의 일종입니다.

하지만 우리는 'printf'라는 함수를 만들지 않았는데 어떻게 사용했을까요.



'printf'와 같은 함수를 우리는 표준함수라고 부릅니다.

다시 언급하면, 기본적으로 제공되는 함수 중 하나입니다.

그렇다면 이 함수는 도대체 어디서 왔을까요?



'printf' 함수를 오른쪽 클릭해보세요.

그리고 '정의로 이동(G)'를 선택하세요.

새로운 소스파일 생겼습니다.

우측 상단을 보시면 stdio.h라는 소스파일이 뜨고 printf라는 함수가 보입니다.


방금 전에 설명했던 헤더파일이 생각나시나요?

우리는 Hello.c 소스파일 가장 처음에 #include <stdio.h>라는 헤더파일 선언을 통해 컴파일러에서 기본적으로 제공하는 헤더파일, 'stdio.h'를 불러왔습니다.

그리고 우리가 새롭게 정의한 함수 main함수 몸체에 'printf'라는 표준함수를 사용하였습니다.

'printf'라는 표준함수는 'stdio.h'에서 이미 정의된 함수였습니다.

따라서 우리는 'printf'라는 함수를 직접 정의하지 않고도 사용할 수 있었습니다.


당연하게도, 헤더파일 선언을 하지 않았다면 우리는 'printf'라는 함수를 사용하지 못했을겁니다.


다시 Hello.c 소스파일로 돌아가기 위해 좌측 상단의 'Hello.c'를 눌러주세요. 



앞으로 자주 사용하게될 'printf' 함수를 살펴보겠습니다.

출력(print)와 함수(function)의 복합어인 'printf'는 말 그대로 문자를 출력하는 함수입니다.

'printf' 함수 뒤의 소괄호 안에 ""안에 자신이 원하는 글귀를 넣으면 출력이 가능합니다.



만약 '\n' 대신에 'n'을 넣는다면 어떻게 될까요?

그렇다면 출력은 'Hello, C world ! n'이 되겠죠.

""안에 자신이 원하는 수식을 넣기 위해서는 역슬래시(\)를 넣어야합니다.

'\n' 은 'printf' 함수 내에서 줄바꿈을 의미합니다.

우리는 이러한 문장 내 명령어를 이스케이프 시퀀스라고 명합니다.



마지막으로 main함수 몸체의 'return 0'에 관한 이야기 입니다.

우리는 이를 반환문이라고 말하는데, 이와 관련한 이야기는 추후에 다시 말씀드리겠습니다.


아직은 배워야할 단어들과 문법이 많습니다.

모든 단어가 개별적으로 존재하는 것이 아니라, 얼기설기 얽혀있습니다.

따라서 특정 단어만 이해할 수 없고, 포괄적인 이해가 필요하기 때문에 시간이 걸릴 수 있습니다.


하지만 반복으로 보다보면 눈에 익게 되면서 자연스레 단어의 의미를 체감하시게 될 것입니다.


오늘 강의 중에 많은 부분 이해 못하셨을거라고 예상합니다.

하지만 몇 강의가 지난다면 오늘 나온 설명뿐만 아니라 더 깊은 이해도를 가질 것이라고 예상 또한 합니다.


오늘 이론 부분은 수고많으셨습니다.


'Computer Science > C' 카테고리의 다른 글

Chapter 5. 주석 달기  (0) 2018.04.05
Chapter 4_1. 과제  (0) 2018.04.05
Chapter 3. 프로젝트 생성하기  (0) 2018.04.02
Chapter 2. IDE 설치하기  (0) 2018.04.01
Chapter 1. C 언어란  (0) 2018.03.31

논문작성

https://ko.sharelatex.com/

웹컴파일러

https://ideone.com/

'Computer Science > Note' 카테고리의 다른 글

정보 보안 저널 및 학회  (0) 2018.03.30
정보 보안 추천 도서  (0) 2018.03.30

+ Recent posts