본문 바로가기

전체 글

(15)
Framework 프레임워크(Framework, 뼈대) 프로그램의 동작 순서를 정의하는 것 기본적으로 입력 - 처리 - 출력 순서를 반복하며 사용자가 종료라는 요청을 보내기 전까지 무한 반복한다 main()에 모든것을 작성하지 않는것은 관리 단위가 너무 커지기 때문이다 코드를 분석할 때 살펴야 할게 너무 많아지면(ex. 분기문도 많아지고 if안에 if 안에 if , if...등) 현재 어떤 상황인지 파악이 어려워진다 그래서 모듈화 라는것을 하는데 모듈화(Modulation) 레고 블럭을 조립해서 하나의 결과물을 만드는 것처럼 사람이 구분 할 수 있는 단위나 시스템 단위로 구분하기도 하고 더 잘게 함수 단위로 나눠 분석하는것 C언어는 절차지향 프로그래밍(Procedural programming)이며 Procedure = F..
1장 컴퓨터 내부의 언어 체계 프로그래머는 컴퓨터에게 명령을 내리는 일을 하며, 컴퓨터가 사람의 말을 알아듣지 못하기 때문에 사람이 컴퓨터의 말(기계어)를 배워야 한다. 기계어는 인공적인 발명품이며 문자 언어만 사용한다 문자 언어 : 기호를 나열한 것 문자 언어의 세가지 구성요소 기호가 들어갈 상자 상자에 들어갈 기호 상자의 순서 자연어에서는 이 상자를 문자(character)라고 부르고컴퓨터에서는 비트(beat)라고 부른다 비트(beat) : 2진수(binary) + 숫자(digit) 의 합성어 비트는 2진법을 사용하며 비트상자에 두가지 기호중 하나만 담을 수 있다 비트의 사용법 중 하나는 참(true)과 거짓(false)으로 표현하는 것인데 다른 비트들이 표현하는 내용으로부터 새로운 비트를 만들어내는 동작을 논리 연산(logic ..
게임 실행 루프, 백 버퍼 만들기 -주의- 틀린부분 많을 수 있음 Main.c app_init 의 값이 false 일때 문구 출력 후 종료 -> app_init에는 프로그램의 초기값들이 들어있다 if 문에 걸리지 않았다면(true) app_run의 값을 반환 -> app_run에는 프로그램을 가동시키는 내용이 들어있다 app_init과 app_run은 app.h와 app.c에 정의되어있다 main은 짧게 구성하는것이 좋음. app.h 헤더파일 사용 이유 헤더파일에 선언 해놓으면 매번 재 선언 할 필요없이 헤더파일만 부르면 되기 때문이다 app.c app_init에서 초기값으로 renderer_init이 false면 app_init 또한 false가 반환되게끔 함 -> main에 false가 반환되어 프로그램이 정상적으로 실행되지 않게된다..
5/6 함수 호출 규칙, 빌드 함수 호출 규칙 호출자 함수(Caller)가 피호출자 함수(Callee)를 호출하는 과정에서 매개변수를 전달하는 순서 및 매개변수가 사용한 메모리 관리 방법등에 관한 규칙 (인자(매개변수)를 어떻게 전달할 것이며 반환값을 어떻게 돌려줄 것인가?) 대표적으로 __cdecl , __stdcall , __fastcall 이 있다 함수의 반환 자료형과 이름 사이에 명시하며 생략이 가능하고 생략 할 경우 함수 호출 규칙은 __cdecl이다 int __cdecl main(void) 동적 : 프로그램 실행 중에 정적 : 프로그램 실행 전에 정적은 이미 얼마나 메모리를 사용 해야 할 지 알고 있다 stack은 함수가 사용하는 영역 bp(base pointer) : 함수 stack의 시작지점 sp(stack pointe..
4/26 반복문과 배열 배열 배열! 반복문 특정 구간을 반복하게 하는 구문. for , while , do-while 이 있다 for : 반복 횟수가 정해져 있을 때 while : 반복 횟수가 정해져 있지 않을 때 do-while : 조건식 평가가 나중에 일어나야 할 때 더하기 사이클 먼저 배열 같은 성질의 여러 데이터를 한 번에 다루기 위한 것
4/25 C언어 기본 개념, 객체, 분기문(조건문) 식별자(Idenrifier) C프로그램에서 여러 요소를 구분하는데 사용하는 이름. 최대한 구체적으로 작성하여야 한다 - 숫자로 시작할 수 없다 - 대소문자를 구분한다 - 키워드를 사용할 수 없다 식별자는 선언될 때 범위(Scope)를 가지며, 네 개의 이름 공간(Name Space) 중 하나에 속하며 연결(Linkage)을 가질 수도 있다 범위(Scope) : 블록 범위, 파일 범위, 함수 범위, 함수 프로토타입 범위 이름 공간(Name Space) : 레이블 이름 공간, 태그 이름 공간, 멤버 이름 공간, 일반 이름 공간 선언 식별자는 선언을 통해 프로그램에게 알려지며 선언을 통해 식별자의 의미와 속성을 지정해줄 수 있다 특히 식별자에 대한 모든 정보를 제공하는 선언을 정의(Definition)라 한다..
4/21 컴퓨터 동작 원리 현대의 컴퓨터는 크게 3가지 메모리 , IO (입력과 출력) , CPU(중앙 처리 장치) 로 나눌 수 있으며 이 장치들은 BUS를 통해 연결된다 메모리 데이터를 저장하는 공간이며 비트로 저장된다 비트에 저장되는 방식을 엔디안(endian) 이라고 하는데 빅 엔디안(big endian)과 리틀 엔디안(little endian)이 있으며 작은 단위를 어디에 먼저 쓸 것인가의 차이이다 IO(입력과 출력) 우리가 컴퓨터에게 정보를 보내는 것 = 입력 컴퓨터가 우리에게 정보를 보여주는것 = 출력 컴퓨터의 주변에 위치하기때문에 주변장치라 부름 CPU(중앙 처리 장치) 크게 산술 논리 장치 , 레지스터(register) , 제어장치 로 나뉜다 산술 논리 장치는 연산을 수행하는 장치이며 피연산자와 연산코드 또는 명령코..
4/19 Git 명령어 내가 작업한 작업물과 원격 저장소의 작업물이 일치 하지 않을때 그냥 push는 진행되지 않기때문에 git fetch로 원격저장소의 커밋을 가져온뒤 rebase를(또는 merge) 하여 합친 뒤 다시 push로 보내야 한다 git pull --rebase 또는 git pull (이 상태는 merge) 원격저장소의 main이 잠겨있을경우 branch를 만들어 작업을 해서 올린다 1. 원격 명령어 원격 저장소에 있는 것을 로컬로 불러오는 데 특정 위치를 지정할 수 있고, 반대로도 할 수 있다 git push - 로컬 커밋을 원격저장소로 업데이트 및 원격저장소의 브랜치를 업데이트 git pull - fetch & merge fetch - 브랜치 이름 colon ref..