C/기초 20

반복 함수와 재귀함수

반복 함수는 단순히 while혹은 for 문법을 이용하여 특정한 처리를 반복하는 방식으로 문제를 해결하는 함수이다. 반면에 재귀 함수는 자신의 내부에서 자기 자신을 스스로 호출함으로써 재귀적으로 문제를 해결하는 함수이다. 재귀 함수는 경우에 따라서는아주 간결하고 직관적인 코드로 문제를 해결할 수 있게 해주지만 때에 따라서는 심각한 비효율성을 낳을 수 있기 때문에 알고리즘을 작성할 떄 유의할 필요가 있다. #ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif #include // 숫자 피라미드 출력하기 (반복함수를 이용해서 숫자 피라미드를 출력한다.) // 반복함수같은 경우에는 오직 for 문과 while문으로 구성이 된다. int print(int a) { i..

C/기초 2019.07.25

사용자 정의 함수

정해진 특정한 기능을 수행하는 모듈을 의미하며 함수를 적절히 활용하면 하나의 문제를 잘게 분해할 수 있다. 예를들어 이진 탐색 트리는 삽입, 삭제, 순회 등 다양한 함수의 집합으로 구성된다. 만약 사용자 정의 함수가 없다면 오직 메인 함수에서 모든 알고리즘을 처리해야 하는데 이는 작업의 효율성을 저하시킬 수 있다. 또한 함수는 각각의 모듈로서 쉽게 수정되고 보완될 수 있다는 장점이 있다. (즉 매인함수의 크기를 줄여주고 특정한 함수를 분해해서 나중에 합친다. 매인함수가 짧고 다른함수가 많을수록 더욱 더 잘 짜여진 프로그램이라고 할 수 있다. 더 가독성이 좋은 프로그램이라고 할 수 있다.) #ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif #include /..

C/기초 2019.07.25

기본 입출력 추가 설명

- 가끔 버퍼가 프로그램 동작을 방해한다. C언어에서는 간단하게 getchar()함수로 버퍼의 공백 문자를 받아 낼 수 있다. - 주석은 일단 최대한 많이 작성하는 습관을 들여라. 주석은 컴파일 단계에서 제거되기에 프로그램의 크기와는 상관 없기 때문이다. - scanf()함수를 사용할 때 변수 이름 앞에 &를 붙여야 한다. - 형식 지정자를 %c로 하면 엔터(ENTER)로 하나의 공백 문자로서 입력 받을 수 있다.

C/기초 2019.07.25

기본 입출력

#include 이곳 스탠다드인풋아웃풋 해드업 파일안에는 전부 이미 입출력함수가 들어가 있는 상황이기 때문에 따로 import를 하지 않아도 된다. C언어에서는 기본 입출력 함수를 이용하여 사용자와 상호작용 할 수 있다. 대표적으로 scanf("%d", &x)라는 x라는 정수에 사용자에게 입력받은 값을 삽입한다는 의미의 코드이다. 다만 사용자로부터 입력 받을 자료혀엥 따라서 %d, %c, %f, %lf 등의 다양한 문법을 사용해야 한다는것에 유의해야 한다. 그리고 반면에 프로그램에서 사용자에게 메세지를 출력할 때는 가장 대표적으로 printf();를 이용한다. 물론 이들은 텍스트 기반의 입출력이며 나중에 GUI를 배우게 되면 사용자에게 글자 뿐만 아니라 이미지도 보여줄 수 있다. #ifdef _MSC_V..

C/기초 2019.07.25

자료형 (char, int && 8진수, 10진수, 16진수)

우리에게 보여지는것은 글자 하나지만, 실질적으로는 char도 숫자로 구성되어있다. #include int main(void) { char x = 65; printf("%c",x); return 0; } 이렇게 하면 출력값은 숫자가 아니라 a로 나오게 된다. 왜냐하면 내부적으로 65는 a라는 뜻을 가지고 있기 때문이다. 즉 아스키코드이기 때문이다. #include int main(void) { int x = 65; printf("%c",x); return 0; } 놀랍게도 int형으로 명령을 해도 a라고 출력이 된다! 그리고 char에서 int형으로 출력하는것도 가능하다. #include int main(void) { int x = 65; printf("%c \n",x); char y = 65; print..

C/기초 2019.07.23

오버플로우

#include #include int main(void) { int x = INT_MAX; printf("int형의 최대값 x는 %d 입니다.\n", x); printf("int형의 오버플로우를 봅시다. 만약 1이라도 더한다면 %d처럼 됩니다.",x+1); return 0; } 출력하게 되었을때는 -2억정도의 숫자가 나온다. 이것이 오버플로우 현상인데, 숫자의 한개치를 뛰어넘으면 제일 낮은 값으로 출력하게 되는 현상을 말한다. 또한 #include를 넣지않으면 int형의 최대치 숫자인 INT_MAX를 출력하지 못한다.

C/기초 2019.07.10

메모리크기 알려주기(sizeof(x))

#include int main(void) { int x = 5; printf("%d",x); printf("변수 x의 메모리크기는 %d입니다.",sizeof(x)); return 0; } 현재 %d에 들어갈 내용은 sizeof(x)인 건데 이것의 뜻은 현재들어가있는 메모리의 크기는 얼마나 되는지 알려주는것이다. 현재 x가 int형이기 때문에 4가나온다. 왜냐하면 어떠한 int변수이건간에 무조건 4bite만큼 크기를 차지하게 된다. cf. float은 실수형이긴 하지만 소수점의 범위를 크게 표현하지못한다. 크기가 4bite이기떄문에 소수점을 길게 쓰면 00이라고 출력되는 것을 볼 수 있을것이다. 아무의미없는 쓰레기값이 된것을 보게 되는 것이다. double은 float보다 더 넓은 범위의 실수형을 표현할..

C/기초 2019.07.10

C++ 기본내용

#include int main(void) { printf("hello World!"); return 0; } #include은 라이브러리를 추가하는 부분이다. printf를 바로 사용할 수 있는것이 아니고 이러한 라이브러리를 추가해야지 사용을 할 수 있다. #include 는 standard input.output.headup이라는 뜻이며 printf나 scanf처럼 메세지를 입력받거나 출력하는 하나의 기본 라이브러리이다. return 0; 는 하나의 함수가 종료될때 반환되는 값을 지정을 0으로 한것이다. 내가 만든 메인함수는 반환형 함수가 int이기 때문이다. 즉 메인함수를 실행하고 종료할때 반환값을 int로 하겠다라는 뜻이다. 0으로 반환하면서 프로그램을 종료하겠다는 뜻이다. hello World!..

C/기초 2019.07.10