프로그램 24

[C언어]24. 가장 기초적인 자료구조, 배열에 대하여 알아보자 -1- ( 배열이란 )

안녕하십니까. 리습입니다. 컴퓨터가 어떤 작업을 하기 위해선 작업공간인 '변수'가 필요했고 C언어에서 이러한 변수를 만드는 방법은' double a '와 같이 변수의 형태와 이름을 적어주는 것이였습니다. 그런데 이 방법은 매우 편리하고 단순해서 좋아보이지만 한가지 약점이 있습니다. 여러개의 공간을 만들기 힘들다는 것이죠. 예를 들어 한 학교 전체학생의 점수를 저장하고 계산을 하기 위한 프로그램을 만들다고 합시다. 그렇다면 우선 변수의 공간이 학교 학생 만큼 필요할 것입니다. 선언해보도록 하죠. 코드 char a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15; char b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,..

[C언어]23. 변수의 특별한 성질들 -4- ( 레지스터 변수 )

안녕하십니까. 리습입니다. 변수의 특별한 성질들을 알아보고 있습니다. 그 마지막으로 레지스터 변수라는 것을 알아보겠습니다. 레지스터 변수 컴퓨터의 내부 CPU 에는 레지스터라고 하는 cpu의 기억 공간이 있습니다. CPU가 직접적으로 어떤 일을 처리하기 위해서는 이 레지스터라는 곳에 데이터를 넣고 처리하게 되죠. 그래서 속도가 매우 빠릅니다. 일반적인 메모리 공간을 사용할 때와는 비교할 수 없을 정도로 빠르죠. 이런 레지스터 공간을 이용하여 변수를 선언할 때도 키워드를 사용하시면 됩니다. 그 키워드는 register 입니다. C언어 표준에서는 레지스터 변수를 선언할 경우 레지스러에 변수공간을 차지하도록 하였지만 레지스터의 특징상 "공간이 충부하지 않고 여러가지 다른 참조가 많이 일어나기 때문에" 정말 고..

[C언어]22. 변수의 특별한 성질들 -3- ( 정적 변수 , static )

안녕하십니까. 리습입니다. 지역변수와 전역변수를 알아보았고 전역변수를 외부 모듈에서 접근하는 방법도 알아보았습니다. 그런데 간혹 특이한 것이 필요할 때가 있습니다.접근은 지역변수처럼 특정 위치에서만 접근을 가능하도록 하여 안정성을 확보함과 동시에 전역변수처럼 항상 존재하는 그런 변수 말입니다. 이런 두 변수의 장점만을 취한 변수가 존재합니다. 바로 '정적 변수'입니다. 정적 변수 static variable 정적변수가 어떤 것인지 설명하기 전에 정적변수가 필요한 예시를 먼저 소개하도록 하겠습니다. 그래야 이해하기도 싶고 말이죠. 특정 함수가 존재하는데 이 함수가 몇번 사용되었는지 알고 싶다고 해봅시다. 함수내부에 변수를 선언하긴 해야하는데, 지역변수는 그 지역이 사라짐과 동시에 같이 사라지기 때문에 사용..

[C언어]21. 변수의 특별한 성질들 -2- ( 전역변수로의 외부 모듈 접근 )

안녕하십니까. 리습입니다. 전역변수라는 것은 어떤 모듈 내에서 모든 함수들이 접근을 할수 있는 변수 였기 때문에 매우 편리한 변수였습니다. 때문에 함수끼리 데이터를 교환할때 전역변수를 통해서 할수도 있었죠.( 물론 함수간의 데이터 교환은 직접적으로 매개변수를 주는것이 더 좋지만 말입니다.) 그럼 한번 이런 전역변수를 확장시켜 보도록 하겠습니다. 특정 모듈이 아닌 프로그램을 구성하는 모든 모듈에서 한 전역변수에 접근할수 있도록 만들어 보도록 하겠습니다. 그럴때 우리는 지정자(Specifier) 라는 것을 사용합니다. 변수의 특징을 결정하는 지정자. 지정자는 변수의 맨 앞에 붙어서 그 변수의 성격을 정해주는 키워드 입니다. 원칙적으로 함수내에 지역변수를 선언할때에는 auto int a 이런식으로 작성을 해야..

[C언어]20. 변수의 특별한 성질들 -1- ( 지역변수와 전역변수 )

안녕하십니까. 리습입니다. 지금까지 우리가 프로그램을 만들어보면서 변수 선언에 대하여 큰 신경을 쓰지 않았습니다. for 문 의 내부에도 변수를 신경없이 썼으며 이름 또한 i , j , a , b 등을 사용하였습니다. 하지만 조금만 더 큰 프로그램을 만들때에는 변수에 대해서도 여려가지를 신경써야합니다. 그 첫번째로써 지역변수와 전역변수에 대하여 알아보도록 하겠습니다. 변수의 선언 위치 변수를 선언할 수 있는 위치는 크게 두곳입니다. 함수의 내부와 외부입니다. 그림으로 한번 보도록 하겠습니다. a 라는 변수는 특정 함수가 아닌 외부에 선언되었고 b라는 변수는 main 함수 내부에 선언되었습니다. a와 같이 선언되어있는 경우 전체에 대하여 변수로써 선언되었다고 하여 전역 변수 라고 하며 , b와 같이 선언되..

[C언어]19.#include 가 어떻게 작동하는가. (#include , #의 의미 )

안녕하십니까. 리습입니다. 지금까지 우리는 많은 것을 배웠습니다. C언어 문법에 대하여 지금까지 배운것만으로도 많은 프로그램을 '구현' 할 수 있습니다. (물론 굉장히 어려운 부분이 많을 겁니다만....) 우리가 지금까지 배운 기본기로 예시 프로그램을 한번 보도록 하겠습니다. 코드 #include int sum ( int a , int b ); int main( void ) { printf("두숫자는 1 과 10 이며 이 두숫자를 더하면 %d 입니다.\n", sum(a, b)); } int sum ( int a , int b ){ return a+b;} 결과 두숫자는 1 과 10 이며 이 두 숫자를 더하면 11 입니다. 지금까지 배운것들로 이 코드는 손쉽게 해석 되실 겁니다. 단 맨 위에 #include..

[C언어]17. 변수의 계산방법, 연산자에 대하여 알아보자. -5- ( 연산자 우선순위 )

안녕하십니까. 리습입니다. 지금까지 다양한 연산자를 알아보았습니다. 또한 연산자는 공구와도 같다 라고 말씀드렸습니다. 그런데 여러가지 연산자를 한거번에 쓸경우 사용한 사람과 컴파일러가 다르게 이해할 수도 있습니다. 예를 들어 우리가 2 * 3 + 1 이라고 입력하였을 때 컴파일러는 2 와 3을 곱한후 다음에 1을 더할 것입니다. 하지만 우리의 의도가 3과 1을 더한후 2를 곱하는 것이였다면 우리가 원하는 결과 값을 얻지 못하게 되는 것이지요. 이렇게 컴파일러가 우선적으로 처리하는 연산자의 순서가 있습니다.그것을 연산자 우선순위라고 합니다. 연산자 우선순위 우리가 곱하기를 더하기보다 먼저 계산하고 생각하는 것 처럼 프로그램에서도 연산자에대한 우선순위가 존재합니다. 이 연산자의 순서는 우리가 알고있는 수학적..

[C언어]16. 변수의 계산방법, 연산자에 대하여 알아보자. -4- ( 삼항연산자, 조건연산자 )

안녕하십니까. 리습입니다. 이제 연산자에 대한 것도 마지막입니다. 마지막으로 삼항연산자에 대하여 알아보도록 하겠습니다. 삼항연산자는 연산을 하는데 3개의 항이 필요하다고 해서 붙여진 이름입니다. 또한 많은 종류가 존재하지도 않습니다. 조건연산자 ( ? : ) 조건 연산자는 특정 조건에 대하여 맞는지 틀린지 판독을 한후 그 값을 내보내주는 연산자입니다. 조건식을 쓴후 ? 를 한후에 맞을경우 : 앞의것을 보내주고, 틀릴경우 : 뒤의 것을 보내주는 것입니다. ? : 우리가 질문 하는 것처럼 직관적으로 ? 를 쓰기 때문에 매우 보기에도 좋습니다. 간단한 조건문에는 if문을 쓰는것보다 조건연산자를 쓰는것이 보기 좋을때도 많습니다. ( 절대값을 return 하는 구문이다. 매우 직관적이고 읽기 좋다. ) 연산자는 ..

[C언어]14. 변수의 계산방법, 연산자에 대하여 알아보자. -2- ( 단항연산자 )

안녕하십니까. 리습입니다. 이제 연산자에 대하여 상세하게 알아보도록 하겠습니다. 우선 단항연산자입니다. 단항연산자는 하나의 요소만을 가지고 특정한 작업을 하도록 하는 연산기호 입니다. 즉 단항연산자가 영향을 주는 대상은 단 한가지 라는 것입니다. 그럼 단항연산자를 하나하나 알아보도록 하겠습니다. 이중 아직 우리가 배우지 않은 부분은 간단하게 개념만 설명하도록 하겠습니다. 부호연산자 ( + - ) 부호연산자는 변수를 양의 값을 가질지 음의값을 가질지 결정해주는 연산자입니다. 이렇게 말로 써놓으면 어렵지만 우리는 이미 흔하게 사용하고 있습니다. 변수 A 에 음의 값 -1 을 넣기 위해서 우리는 1의 앞에 - 표시를 해주었습니다. 이것과 마찬가지입니다. 부호연산자를 사용하기 위해선 앞에 -를 넣어주기만 하면되..

[C언어]13. 변수의 계산방법, 연산자에 대하여 알아보자. -1- ( 연산자의 종류 )

안녕하십니까. 리습입니다. 지금까지는 논리의 전개방식, 화면에 데이터 출력, 데이터 입력받기 등을 알아보았습니다. 그런데 이렇게 단순히 데이터를 입력받고 화면에 출력하기 뿐만 아니라 컴퓨터가 할 수 있는 일은 더 많습니다. 그래서 이젠 컴퓨터에게 색다른 일을 시키는 법을 배워보도록 하겠습니다. 바로 연산자 입니다. 연산자라고 말하니 어려워 보입니다. 뭐지? 라고 의문을 가질수도 있으실겁니다. 그럼 한번 우리가 일상적으로 하는 돈계산을 예로 생각해보죠 . 1,200 원 짜리 아이스크림 3개를 사먹는데 저한텐 만원짜리가 하나 있습니다. 이때 거스름돈은 얼마일까요? 바로 계산이 가능하시죠? 10000 - (3 X 1200) 입니다. 이때 우리가 사용한 ' - ', ' X ' 가 연산자 입니다. 어떤 계산을 하..