과연 이 글을 보면서 C를 공부할 사람이 있을지는 모르겠는데(이미 다들 알거나 애초에 이 서브를 안 올 거 같긴 한데) 서브가 너무 죽은 거 같아서 이거라도 써봄... 제목에 써둔 것처럼 야매 강의기 때문에 책이나 강의에 비해 뒤지는 게 있을 수 있다는 점은 미리 양해를 구하겠음 혹시라도 잘못된 내용이 있다면 댓글로 남겨주길 바람 사실 각 잡고 쓰면 분량은 엄청나게 늘릴 수 있지만 그런 게 필요한 사람들은 이미 책이나 강의로 공부를 했으리라 생각하기에 분량은 간략할 것 같음 그래도 구색은 갖춰야 하니 어느 정도 도입부도 있긴 할 거임
사람이 의사소통을 할 때 제일 많이 사용하는 것은 바로 언어임 생각, 기록, 대화 등등 언어는 인간의 고등한 활동을 논할 때 결코 빠지지 않는 중요한 요소임 이것은 컴퓨터도 마찬가지라 컴퓨터의 언어인 기계어를 사용해 대화할 필요가 있음 외국인과 대화하기 위해 외국어를 배우는 것과 같은 논리임 그러나 이 기계어는 사람에게는 외계어 수준이라 마치 우리가 번역기를 쓴다거나 일본어에서 한자를 읽는 법을 모르는 사람을 위해 후리가나를 사용하는 것처럼 기계어를 대신할 수 있는 다양한 언어들이 등장했는데 기계어에 가까우면서도 인간이 쓰기 좋은 언어가 바로 C언어임 특히 C언어 전에는 어떤 CPU를 사용하냐에 따라 같은 언어를 사용해도 코드를 다르게 작성해야 하는 경우가 잦았기에 C언어의 등장은 당시로서는 엄청난 혁신이라고 할 수 있겠음 물론 C언어와 같이 여러 언어들이 등장했다고 해서 기계어가 무의미한 것은 아님 우리가 작성할 C언어 코드 파일들은 결국 기계어 파일로 번역(컴파일) 될 것이기 때문임
이러한 컴파일 작업을 수행하는 프로그램을 컴파일러라고 부르고 컴파일러와 같이 개발에 필요한 여러 도구(프로그램)들을 모아둔 것을 통합 개발 환경(이하 IDE, Integrated Development Environment)이라 부름 IDE에는 여러 종류가 있지만 우리는 Visual Studio를 이용하도록 하겠음 아래의 링크에서 다운 받으면 되고, 무료로(커뮤니티 버전) 사용할 수 있음
https://visualstudio.microsoft.com/ko/
설치 과정은 대부분 그냥 따라가면 되는데 도중에 워크로드에서 'C++을 사용한 데스크탑 개발'을 선택하여 다운로드 하는 것을 권장함 필요하다면 다른 것도 더 설치하면 되는데 잘 읽어 보거나 검색해보길 바람
설치를 다 마쳤다면 적당한 곳에 코드를 저장할 폴더를 하나 만들어 두고 Visual Studio를 켠 후, 새 프로젝트 만들기 - 빈 프로젝트 - 만들기를 눌러 프로젝트를 생성하면 됨 솔루션은 현재로선 별로 중요한 내용은 아니니 넘어가겠음
프로젝트를 생성하면 거의 빈 화면과 우측에 솔루션 탐색기가 보일 텐데 '소스 파일'을 우클릭하고 추가 - 새 항목을 클릭한 후 확장자를 cpp에서 c로 바꾸고 '추가'를 클릭하면 됨
이제 상단 창에서 프로젝트 - (프로젝트명) 속성 - C/C++ - 전처리기 - 전처리기 정의 - 편집에 들어간 후
_CRT_SECURE_NO_WARNINGS를 입력하도록 하겠음 이게 필요한 이유는 후술하겠음
자 이제 사전 준비는 모두 끝났고 아래의 코드를 한 번 따라 쳐보길 바람
#include <stdio.h>
int main() {
printf("Hello, world!");
return 0;
}
실행했을 때 콘솔 창에 Hello, world!가 떴다면 환경 설정을 무사히 마친 것임
이제 코드 각각이 무엇을 의미하는지 간단히 해설하겠음
#include는 포함한다는 단어 뜻처럼 외부에서 기능을 가져오는 것임 라이브러리, 헤더 파일 따위를 가져올 수 있음
<stdio.h>는 ST an D ard I nput and O utput, 즉 표준 입출력 라이브러리임
int main() {}은 실행될 코드의 영역을 지정해줌 따라서 이 영역 외부에 있는 기능을 가져다 쓸 수는 있어도 이 영역 외부에 있는 코드는 실행되지 않음
printf()는 큰 따옴표 내부에 있는 문자열을 출력하는 역할을 함
마지막으로 return 0;은 main 함수에서 0을 반환한다는 것인데, 프로그램이 무사히 종료되었다고 알려주는 것임 다만 현재에 와서는 return 0;을 작성할 필요는 없음
정보량이 많아 혼란스러울 수 있지만 일단 좀 익숙해질 필요가 있음 당장 명칭을 외우지는 못해도 글을 계속 보면서 익숙해질 수밖에 없음 외국어를 배울 때 명사의 성별, 가정법, 접속법 같이 처음 듣는 용어들이 나오지만 계속 하다보면 익숙해지는 것처럼 이런 단어들도 듣다 보면 익숙해짐
이런 이유로 이후에 배울 개념들을 미리 얘기 좀 해두자면
말 그대로 변하는 수임 다만 문자나 문자열과 같은 것도 변수로 분류되는데, 전부 숫자로 변환되어 저장되기 때문임 값이나 정보를 저장할 때 사용함
수학에서의 함수처럼 매개 변수(parameter)를 받아 처리 과정을 거쳐 하나의 값을 반환하는 역할을 하지만 매개 변수를 받지 않거나, 값을 반환하지 않을 수 있음
간단히 말하면 ;이나 {} 따위로 구분되는 코드의 일부분임 실행될 수 있는 코드의 최소 단위라 생각하면 됨 이 문장은 ;으로 끝나는 단일문과 {}로 묶이는 복합문으로 구분되기도 하며, 후술할 연산자(operator)와 피연산자(operand)가 쓰인 문장을 수식(expression)이라고 부름
연산자는 변수의 값을 조작하거나 값들을 가지고 값을 반환하는 역할을 하는데, 설명이 추상적이니 일단 연산을 수행할 때 사용하는 기호 정도로 하고 넘어가겠음 연산에는 산술 연산(보통 계산, 연산, 산수 하면 떠올리는 것), 대입 연산, 논리 연산(and, or, not), 관계 연산(대소 관계), 비트 연산이 있음 연산자가 값을 받거나 조작하는 대상을 피연산자라 부름
일단 용어는 이쯤하고 이제 입력으로 넘어가겠음
우선 다음과 같이 코드를 쳐보겠음
#include <stdio.h>
int main() {
int a;
scanf("%d", &a);
printf("a is %d",a);
return 0;
}
여기서 int a;는 a라는 int(정수)형 변수를 선언하는 역할을 함
그 후 a의 값을 입력받고 a is 00이라고 출력하는 코드임
실행해보면 알겠지만, scanf는 변수에 값을 입력받는 함수임
그리고 아까 _CRT_SECURE_NO_WARNINGS를 친 이유도 scanf 때문인데, 간단히 말하면 보안상 취약해서 그럼 그래서 대체 함수가 있긴 한데 잘 안 씀
왜 a에 &를 붙이는지는 나중에 포인터를 배우면 알 수 있는데, 간단히 설명하자면 &는 변수의 값이 저장되는 주소(메모리 주소)를 반환하는 연산자여서 입력값을 a의 주소로 찾아가 수정하기 위해 필요한 것임
%d의 d는 decimal(10진수)의 약자로 10진수형 정수, 대개 int형 변수를 입출력하기 위해 사용함
아직 뭐 그렇게 대단한 걸 배우진 않았으니 간단한 문제로 하겠음
정수형 변수 2개에 각각 값을 입력받아 a is 00, b is 00과 같이 출력하는 코드를 작성하라 단, a, b를 모두 입력받은 후에 한 번에 출력할 것
꼭 따로 남기지 않더라도 직접 해보길 바람
