C 이론(2)

Hi Beck·2023년 4월 13일

TIL-Language(C & C++)

목록 보기
3/34

프로그래밍 기초

1.디지털 : 0과1로 표시가 되는 것,모든 데이터를 숫자로 표시가 가능하고 데이터를 다루는데 숫자를 사용한다.

아날로그 : 숫자로 표현할 수 없고 연속적인 값으로 데이터를 표시함
(필름생각하면될듯)
테이프와 같은 아날로그 매체에 데이터를 저장
아날로그는 뭔가 매체가 있어야됨(mp3는 디지털임)

현대사회에서 목소리는 디지털 !

2.컴퓨터의 계산 능력
컴퓨터가 계산이 빠른 이유 : 전자 회로를 이용하여 계산하기 때문
전자회로 계산 즉 컴퓨터는 이진수를 사용한다.왜 이진수를 쓰냐하면
전자회로로 나타내기 쉬운게 이진수기 때문(전기가 끊기면 0 전기가 흐르면 1)이런 0과 1이 닫히고 열리기하는 조각들이 컴퓨터 안에 무수히 많이 들어 있고 이걸로 작동

(사람은 10진수)

진수 = 한 칸에 몇 개의 숫자를 쓸 수 있느냐
한 자리칸이 있다고 하면 거기에 들어갈 수 있는 한자리 숫자의 갯수에 따라 진수가 정해짐.그럼 10은 못들어감
이진수 : 한 칸에 들어갈 수 있는 숫자가 2개인거임
십진수 : 한 칸에 들어갈 수 있는 숫자가 10개임
(한칸에 한자리 숫자인 0~9까지가 들어갈 수 있으니깐)
팔진수 : 0~7까지 들어감

근데 16진수도 있음.근데 10은 못들어간다고했자나
이건 숫자10부터 숫자를 a로 바꾼거임(a b c d e f)
0123456789abcdef

우리가 십진수를 쓴다하면 이걸 컴퓨터가 쓰는 이진수로 변환시키는 계산법을 알고 있어야한다.

십진수 -> 이진수로 바꾸기
2로 나누어(여기서 N진수의 N으로 나누는거여서 2로 나눔) 몫과 나머지
구해서 표현하는 방법

이진수 -> 십진수로 바꾸기

3.비트와바이트
비트(bit) : 이진수의 하나의 자릿수를 의미함
= 우리가 컴퓨터로부터 빌려오는 메모리공간의 한 칸
= 이진수 하나를 담을 수 있는 공간(위 그림에서 네모칸)
이 네모칸은 메모리의 최소단위다.

바이트(Byte) : 비트가 8개 모이면 바이트

4.게산기와 컴퓨터는 안쪽에서 이진수로 계산을 하고 있다는 공통점이 있으며 차이점은 컴퓨터는 추가로 우리에게 보여주기위한 화면을 위해 십진수로 변환시켜주는 기능까지 있는 것

5.하드웨어와 소프트웨어의 차이
하드웨어는 우리눈에 보이는 장비들(마우스)
소프트웨어는 하드웨어를 조작할 수 있는 프로그램(마우스의 커서가 움직이는 것)

사용자가 별도로 프로그램을 설치해야되는 이유는 프로그램이 어디에서든지 동일한 기능을 제공해야하기때문,컴퓨터를 범용적으로 사용하기 위해,배포만 하면 다양한 작업 가능

개발환경 = IDE(통합개발환경,비쥬얼스튜디오 같은 것)같은 툴을 의미 이 IDE 안에 컴파일러가 들어있음.

프로그램이란 컴퓨터에게 우리가 하고자 하는 작업에 대한 명령서를 전달해주는 역할을 하는 애다.

6.프로그래밍 언어의 분류
ㄱ.기계어
ㄴ.어셈블리어 : 기계어보단 좀더 사람말에 가까운 언어로 바꿔주는애이다.
컴파일보다 전 과정에서 컴퓨터의 뇌같은곳에서 이런 변환을 한번씩 해줌
(어셈블러가)
ㄷ.고급언어

7.프로그램 개발 과정
ㄱ. 요구사항 분석
ㄴ. 알고리즘의 개발
알고리즘 = 프로그램을 어떻게 짤 지에 대해서 간략하게 정리해놓은 설명서(예로들어 빵 레시피 순서가 있는것처럼 컴퓨터도 순서에 따라 코딩해야됨) = 알고리즘을 짠다.
ㄷ. 코딩
ㄹ. 컴파일과 링크
컴파일 = 코딩한 것을 컴파일러가 기계어로 바꾸는 과정
= 소스프로그램을 목적프로그램으로 변환하는 작업
목적프로그램 = 오브젝트 파일 = 소스파일(.cpp파일)을 기계어로 바꿔서 파일로 변환한게 오브젝트 파일 = 덩어리 =기계어의 집합

링크 = 컴파일된 목적 프로그램을 라이브러리와 연결하여 실행 프로그램을 (exe파일)작성하는 것
= 완성도가 높아질수록 프로그래밍한 코드가 많이 생기면 컴파일이 되고 덩어리가 되는데 이 덩어리를 '목적 프로그램''오브젝트 파일'이라고 한다.이 오브젝트 파일들을 하나로 묶어주어 프로그램이 잘 동작되도록 하는게 링크다.
(코드가 자동으로 연결되는게 아니라 링크란 작업을 해줘야되는것임)
= 라이브러리 : 프로그래머들이 많이 사용되는 기능을 미리 작성해 놓은 것(라이브러리는 파일들이 있어 이걸 프로젝트 폴더 안에 넣는 식임
-> 이게 곧 플러그인이다. #include stdio.h이 그 기능
-> 홈페이지나 마이크로소프트에서 다운 받아서 씀
= 링커 : 링크를 수행하는 프로그램
ㅁ. 실행과 디버깅
디버깅 = 우리가 프로그램을 작동시키면 돌아가는데 어느 부분이 어느 코드가 작동되는지는 모른다.근데 개발자는 코드로 첫줄부터 실행되는 코드들에 명령을 내려 알 수 있다.(2번째줄,5번째줄 이런식으로 범위를 정하거나 한줄씩 실행)이런식으로 에러를 찾아내는 작업을 디버깅이라고함.
= 소스에 존재하는 오류를 잡아내는 것
ㅂ. 유지보수
오류 혹은 추가로 만들어야될 상황이 있을때 그걸 해주는 작업

로더는 실행파일을 더블클릭하면 로더란 애가 실행시켜주는 것

8.비쥬얼스튜디오를 쓰는 이유
용량이 크지만 다른회사 IDE는 비주류임
언리얼엔진은 기본적을 비쥬얼스튜디오를 쓴다.
버전은 최소 2019가 좋다

9.빌드란 과정이 있음(비쥬얼 스튜디오 상단에 버튼이 있음)
빌드 = 컴파일과 링크를 해라
즉,내가 실행파일을 만들고 싶으면 얘한테 실행파일 지어달라고 말하는거임
코드 다치고 빌드를 누르는건데
성공 시 = 빌드 성공 메세지
실패 시 = 빌드 에러

10.#include<stdio.h>
#include = 내가 다른 소스코드를 이 소스코드에다가 추가시키겠다
<stdio.h> = standard inputoutput 표준입력(타자)과출력(화면에나오는것) 즉 내가 출력하기위한 코드들 그리고 라이브러리가 이 코드 안에 들어있음 / 입력,출력 외에도 기본적인 기능의 함수들이 저 안에 많이 들어가있음.

여기에서 다른 소스 코드를 추가시키면 특징이 내가 그 소스 코드를 볼 수 있음.라이브러리로 추가를 하면 코드를 못봄(이미 빌드를 해서 하나의 프로그램이 된 애여서 컴파일돼서 기계어 작업이 돼서 우리가 못읽음)

라이브러리와 실행파일은 같은 것인가? = 아니다 라이브러리는 단독으로 실행 못함.코드에 올라올때 기능을 할 수 있는 것임

.h의 h는 해더파일(소스파일의 요약본)을 뜻한다.근데 .cpp가 안들어가고 왜 .h가 들어갔냐면 우리가 비쥬얼 스튜디오에서 프로젝트를 만들면 .h확장자의 해더파일이 만들어진 것을 확인할 수 있는데 소스파일에서 해더파일을 넣은 이유는 소스파일은 요약본을 필요로 한다! 요약본을 넣어주면 여기있는 기능을 쓸 수 있는 것임.요약본에서 .cpp파일에게 "나는 이런 함수들을 가지고 있어.필요하면 빌려써"이거임 즉 소스파일에서 해더파일만 추가해주면 내가 a라는 함수를 쓰고싶을때 해더파일이 알려준다.그 함수를 가지고있는지 없는지
가지고 있다면 실행될때는 소스 코드가 해더 요약본을 보고 실제 cpp파일을 들어가서 그 코드를 실행시켜줌

목차같은 느낌으로 이해하면 되는데 목차를 보면 각 내용이 뭔지는 알 수 있긴하지만 자세한 내용은 보지 못한다.프로그래밍에서 해더파일은 다른 많은 소스코드들을 다 가져올 순 없으니 목차만 가져온 것처럼 보면됨 그럼 목차만 보면
일부 필요한 내용이 있다면 그걸 본 소스 코드에 쓰는 것 그러면 빌드할때 비쥬얼스튜디오가 목차에 있는 내용을 썻구나 인지하고 해더파일이 그 기능이 있는 소스코드파일에 들어가 실행을 시킨다.

11.printf("HelloWorld!")
=C언어의 출력함수
=화면에다가 출력한다.
=이건 '문자',"문자열" 할때 쓰는것(숫자는 다름)

12.메인함수의 괄호에 오는 void(=빈칸으로 둘거야)
이건 있든 없든 매게변수는 상관없음
근데
함수 좌측에 반환값이 있는데 만약 반환을 하고싶지않으면 반환값 자리에 반드시 void라고 써줘야한다.(왜냐면 함수는 반환형이 있어야하니깐 매게변수와 달리 얘는 무조건)

다시보는 함수의 구조 : 반환형 + 함수이름 + 매게변수

profile
Emotional realizer

0개의 댓글