C 이론(1)

Hi Beck·2023년 4월 11일

TIL-Language(C & C++)

목록 보기
2/34

교육 정리

1.개념
C언어 : 프로그래밍 언어의 일종으로 근대에서 많이 쓰이는 언어로 자바,파이썬같은 언어들이 파생된 근본적인 느낌의 언어이다.

프로그래밍 언어를 만들어내는 사람은 곧 언어학자이고(0과1의 기계어를 명령어에 다 매칭시킨 작업),우리는 그냥 외국어 배우는 것처럼 컴퓨터와 커뮤니케이션하기위해 프로그래밍언어를 배우는 것

c++ : C언어에서 파생된 언어(확장된 것이여서 c언어부터 공부하는게 정석)

처음에 비쥬얼코드 스튜디오(=ID라고 말함,언리얼은 비쥬얼스튜디오 2019 많이씀)로 만들면 구성은 프로젝트 하나와 cpp 파일을 포함한 소스로 구성되면된다.

비쥬얼스튜디오코드 실행 창에서 새 프로젝트로 만들기 -> 빈 프로젝트 -> 소스 파일에서 마우스 우클릭 추가 새항목 -> 비쥬얼 c++로 생성
(소스코드 = 코드)

우측 살펴보기
ㄱ.솔루션
우측 오른쪽 상단에 있는 솔루션의 뜻은 '프로젝트의 집합'이라고 생각하면됨

ㄴ.프로젝트
프로젝트 = 하나의 프로그램을 뜻함

ㄷ.소스파일.CPP
C++의 기본 확장자를 의미함.(옆에 마크가 +2개, C언어의 확장자는 .C로 옆에 c가 표시되어있음) C언어를 C++에선 쓸 수 있지만 c++언어를 c언어에선 못 쓸 수 있다.(더 발전된 것들이 안됨)

이 소스파일에 우리는 앞으로 코딩(프로그래밍언어를 소스파일에 입력하는 행위 = 외국인에게 메일쓰는 것 연상 = 컴퓨터에게 명령을 하기위해서 명령서를 써주는 것)을 하는 것 / 코드 파일을 컴파일, 링크, 빌드의 과정을 거쳐 프로그램으로 만들어주는 것임

컴파일( 기계어와 프로그래밍 언어 간 서로 바꿔주는 작업 )

ㄹ.헤더 파일
소스파일 요약본 = 요약본을 헤더파일로 뺀다.

ㅁ.리소스 파일
프로그램에서 쓸 UI요소나 이미지,동영상 등 끌고 가져오는 파일들

2.코딩해보기

C언어의 기본 구조

실행하는법
로컬 윈도우즈 디버거(Ctrl + F5)

구조 형태

#include<stdio.h>란걸 쓰고

아래와 같은 메인함수 코드를 치고
함수의반환값 + 함수의이름 + (함수의 매게변수)
{
return 0;
}

위의 리턴값을 치는게 기본 구조다 그리고 그 메인함수 안에서 프로그래밍을 하면 됨

이런 구성으로 되어있음 여기서 #include<studio.h>를 제외한 반환값 함수명 괄호 중괄호 리턴의 구조는 함수의 구조이다.
함수는 어떠한 기능(=FUNCTION, =METHOD)을 하게끔 프로그래밍해주는 코드다.함수의 존재 의의는 어떤 기능을 우리가 일일히 코드칠 수 없으니 묶어서 만들어준 것이다.

왜 리턴 옆에 0을 대입하게 되어있냐? 이건 메인 함수에선 리턴값이 0으로 고정되어있다고 보면됨

//(=주석기능 =컴퓨터가 아닌 사용자만 볼 수 있는 글)

메인 함수
=함수 중에서 가장 중요한 함수.프로그램이 실행되면 무조건 불려지는 함수로 실행이되면 메인함수의 첫번째 줄부터 실행이 되게끔 되어있음
그래서 우리는 메인 함수안에다가 프로그래밍을 하는 것임
그리고 여러 함수와 변수들을 정의해서 메인 함수 안에다가 끌고 와서 작업하는 것

매게변수
보통 함수 중엔 MOVE처럼 N칸 만큼 이동하는 함수가 있는데 이 n이 매게변수임 그래서 이 무브 함수를 메인 코드 안에 MOVE(N)이란 이름으로 가져와서 간단하게 쓰는 것! = 코딩은 메인 함수 안에 한다.!

함수의 반환값
MOVE로 따지자면 내가 지금 몇 칸 이동했는지 확인하고싶어.내가 지금 어디에 있는지 알고싶다. 이때 우리는 RETURN이라는 코드를 쳐줘야된다.즉 저 자리에 있는 INT는 반환값의 자료형(=데이터타입)이 구조상으로 들어가는 것이고 매게변수 n값을 받아 실질적인 값을 확인하고싶으면 밑에 return n;값을 써줘야 됨 이 반환된 값은 메인 함수에서 써줄 수가 있음.

컴퓨터와 의사소통의 목적 : 프로그램이란건 컴퓨터가 본인의 저장공간(0과1로 이뤄진 C드라이브)에 있는 메모리를 대여받는 것이다.그러면 개발자는 그 빌린 공간 안에 0과1을 써서 유의미한 값들을 저장하는 것.그 유의미한 값을 저장,전달하면서 프로그램이 돌아가고 우리가 쓰는 것
EX) 디스코드처럼 상대방 목소리가 들리면 그걸 저장하고 인터페이스에서 관련 요소들이 동작하고 사용자한테 전달되고 이런 것들

-> 프로그래밍은 변수와 함수의 집합이다!

프로그래밍언어에서 =는 등호의 의미가 아니다.
(==이걸로 써줘야지 같다는 느낌)
오른쪽에 있는값을 왼쪽에 넣어줘라라는 대입의 의미가 있다.

;세미콜론은 C언어 C++언어에서의 마침표이고 이걸 끝날때 꼭 써줘야됨

변수(=변하는 수)
함수 구조에서 왼쪽에는 대입을 받는 애 즉, 오른쪽을 저장할 수 있는 애임
int num = 0;
여기서 NUM을 변수라 하는데 NUM이 뭐냐면 이 0이란 숫자를 저장할 수 있는 메모리 공간이라고 생각하면됨.메모리를 어떻게 활용하는지에 따라 기능이 정해지는 환경에서 내가 'int num'이라고 선언하는 순간 컴퓨터에서 메모리를 빌려오는 것임.왜냐면 0이란 숫자를 저장해야되니깐
(메모리를 상자라고 생각하자.컴퓨터는 무수히 많은 상자를 가지고 있고 우리가 그 상자를 빌려오는 것)

int A;는 정수를 넣을 수 있는 상자를 빌려오는 것을 의미
정수를 양파라고 가정한다면
A = 1; -> 양파 1개를 상자에 넣어라
A = 4; -> 양파 4개를 상자에 넣어라
A = 10; -> 양파 10개를 상자에 넣어라

여기서 int는 뭐냐? (여기서 함수 구조의 INT랑 햇갈리지말자)
변수는 자료형 + 변수명 = 데이터값의 구조로 여기서는 자료형의 정수형을 뜻하는 INT임(종류 : 정수형,실수형 등등)

정수형 : -30 -2 0 1 5 90등

변수명은 사용자가 임의로 정할 수 있음.내가 메모리를 빌려올건데 내가 그걸 식별할 수 있을 정도로 이름을 설정해주겠다.

다시 int num = 0;로 돌아오면 이 뜻은 '나는 정수형 NUM변수박스에 0을 넣겠다'고 컴퓨터에 말하는 것(=선언) 그러면 이제 NUM은 0인 것

밑에 NUM = 3;이라고 쳤다고 가정
이때 얘는 자료형이 없다.이 코드는 정수형 NUM변수에 3을 넣겠다는 뜻
코드 생긴게 다른데 이게 어떻게 가능하냐면 그것은 int num = 0;는
'정수형 NUM이라는 변수를 정의한 후에 0을 넣겠다'라는 뜻으로 봐야됨
선언(정의)한 후에는 내가 이 변수명을 가지고 메모리에 접근하는게 가능
이미 얘는 정수형이란 것을 정의하니깐 다음줄에는 생략이 가능함.
(여기서 선언 혹은 정의는 내가 컴퓨터에서 메모리를 빌려오는 순간을 이야기한다.그니깐 정수형은 고정 조건이 됨)

변수명은 중복될 수 없음(중복된 변수가 있으면 사용자는 그 중에 어디에서 메모리를 빌렸는지 어디에 값을 대입했는지 알 수가 없음)
변수명은 보통 객체 + 기능명으로 정의함 EX) CARSPEED

이 변수들은 계속 변하고 활용이 될 것이다.(변수의 데이터들은 합치는게 아니라 덮어쓰이는 식임)

상수(Constant)
상수는 글이나 숫자같은 것들! 변하지않고 그 자체인 것( 0=30 X / 속도,힘,높이는 변수)

상수의 종류
a.숫자상수
정수 상수 : 음수 0 양수
실수 상수 : 소수
b.문자상수
문자 상수(character) : 알파벳, 특수문자 등
문자열 상수(string)
:문장( 완결된 내용을 나타내는 최소의 단위.대한민국도문장 )
c.논리상수
참 상수 : true 또는 0이 아닌 수
거짓 상수 : false 또는 0

만약 int num = 0;하고 달리 대입을 하지않고 자료형하고 변수만 정의하고 세미콜론을 찍어서 Float fnum;이라는 코드를 끝내서 정의만 했다고하면 이것만 봤을때 여기에는 0이 들어가있을 것 같지만 초기화의 값으로 무의미한 값이 들어가있음(=컴퓨터에서 설정해놓은 이상한 값)
그래서 우리는 의미있는 것을 만들기 때문에 반드시 꼭 대입을 해줘야된다!
-> 선언만 해주는 건 없다 -> 대입해주는 것은 선언코드 밑에 써도되는데 다만 밑에 써줄때는 대부분 그냥 Float fnum = 0.0; 해서 의미있는 데이터를 넣어주기 하기전에 초기화를 시켜준다.
(초기화 = 선언하면서 값을 넣어주는 작업 )

  • 여기서 초기화를 안시켜주고 바로 필요한 값을 넣을 수도 있지만 필요한 값이 당장 없을 수도 있음. (예시로 사용자입력에 따라 달라지는 값은 나중에 정함) 그런데 초기화 시켜주는 이유는 무의미한 값이 코드에 있으면 실제로 변수에 무의미한 값이 들어있을때 그 안에 있는값을 사용하려고하면 문제가 생겨서 이런 상황을 막고자 셋팅을 시켜주는 것
profile
Emotional realizer

0개의 댓글