#define PUZZLE_KEY 076 잘 사용하진 않음, 디버깅 시 데이터 확인이 힘듬

 

const int PUZZLE_KEY = 076; 디버깅 시 데이터 확인이 용의해서 대체제로 사용됨

 

 

열거체(Enumeration)

정수만 들어가고 배열 형식임, 값을 따로 안넣을 시 0부터 시작해서 순차적으로 데이터가 들어감 1 , 2 .. 이런식 중간 숫자를 바꿀 시 똑같이 순차적으로 들어감 100 101 .. 이런식임

상수이므로 코드에 상수값을 정리해서 관리하기 편해보임

enum EAnim(생략가능) { kIdle, kAttack, kJump } ;

 

전역변수(Global-Variables or Global-Value)

전역에서 불러와서 사용 할 수 있는 변수 메인 밖에 적는다

int g_iGlobalValue = 0; 지역변수와 변수명이 겹칠 시 지역변수 우선

 

변수(Variables)

지역변수(Local_Variables or Local-Value) - {} 중괄호 한해서 살아있는 변수

 

상수(Constant) - 선언 후 다른곳에서 식을 수정할 수 없는 변수

const int constValue = PUZZLE_KEY;

 

리터럴 상수(Literal Constant)

777, "Kim"

 

형변환(Type-Casting or Type-Conveting)

(자료형)변수 - 자료 손실이 날 시 형변환으로 자료형을 바꿔줘야한다. 이걸 명시적 형변환이라고 한다.

#include <stdio.h>

void LocalValue();
​
void GlobalValueFirst ();
void GlobalValueSecond();
​
void StaticValue();

int main() {

LocalValue();
GlobalValueFirst();
GlobalValueSecond();
​
StaticValue();
StaticValue();
StaticValue();

const int constValue = PUZZLE_KEY;

printf("kIdle : %d\n", kIdle);

return 0;
}

 

tip. 주석(//) 실제 사용 시는 주의해야할 사항 일때 주로 사용, 하지만 이런 규칙이 회사 내규에 따라 달라질수 있음.

 

함수(Function) 의 사용 순서

 

함수명은 기능을 관통하는 이름으로 지어야함 대게 중요함 조금 길더라도

동사 + 주어 + 추가 사항 기본 베이스로 이름을 지어야하고 모든 기능을 표기해야함.

 

함수의 선언(Function Declaration)

   반환형 함수명(매개변수); 함수 선언 식

ex) void PrintFuncMessage(void);

 

함수의 정의

void Foo() { 주로 예제로 사용하는 부분인데 왜 Foo인지는 모름

참고자료 : 왜 예제의 함수명이나 변수명은 foo와 bar를 사용할까

위에 선언식 후 중괄호 안에 이 함수가 할 기능을 적으면 됨

void PrintFuncMessage() {

printf(Func is Function\n")

}

 

함수 호출 (Function Call)

함수를 호출 시 함수에 매개변수가 있을 시 사용할 변수를 매개변수에 대입해줘야함.

   ㄴ매개변수가 정확하게 무엇인지 헷갈려 참고 자료 매개변수(parameter)와 인수(argument)

PrintFuncMessage(); 함수를 호출하는 부분 / 실질적 함수를 사용하는 부분

함수 좋은점 / 재활용이 가능 (정의 해논걸 간단하게 호출로 계속 사용가능하는 뜻)

 

 

#include <stdio.h>

int Sum(int _lhs,int _rhs);   // 함수는 전역
// 자료형 함수명(자료형 _변수명)
float Div(float _lhs, float _rhs);

// 혹은 선언과 정의를 같이 할 수 있다. 하지만 가독성이 좋지 않음
// ex)
// int Sum(int _lhs, int _rhs) {
// retun _lhs + _rhs;
// }

int main() {
	int lhs  = 5;
	int rhs =  3;
	int result = Sum(lhs, rhs);
	// Sum 함수를 사용
    
    float div = Div(7, 2);
	// Div 함수를 사용
    
return 0;
}

예외처리 (Exception) 

float Div (float _lhs, float _rhs) {

if (_rhs == 0.0f) { 0은 나눌수없으므로 예외처리를 한다

_rhs = 1.0f;

printf("Exception] _rhs is Zero\n"); 메세지까지 해주면 더 좋다

}

return _lhs / _rhs;

}

 

Hp 구현

 

#include <stdio.h>

int main() {
const int 변수 = 값;	// 절대값, 밑에서 값을 바꿔도 오류가 뜨며 바뀌지 않음


const int maxHp = 10;	// 최대 생명력 고정

int hp = 5;	// 현재 생명력

const int DMG_MIN = 0; // 최소 공격력 고정

const int DMG_MAX = 5; // 최대 공격력 고정

​

while (1) { // 조건식이 true 일 경우 실행

  if (hp > 0) { // hp가 0 보다 크면 트루일 경우 실행 아닐 경우 else문으로

     for (int i = 0; i < maxHP; ++i) // for문

           (i < hp) ? printf("■") : printf("□"); //조건 ? true : false; (식)

     }

printf("(%d)\n", hp); // 위 조건으로 HP바 만듬

} else { // 죽음

  printf("You Die\n"); // 메세지

  break; // 루프 탈출
  
}

int inputDmg = 0; // 데미지 변수 초기화

printf("Input Damge : "); // 데미지 입력 하라고 출력

scanf_s("%d", &inputDmg); // 서순 주위    입력하면 밑에서

if (inputDmg < DMG_MIN) inputDmg = DMG_MIN;     

else if (inputDmg > DMG_MAX) inputDmg = DMG_MAX; // 최소값 최대값 검사 후 

​

hp -= inputDmg; // hp에서 inputDmg를 감소 hp 감소 

system("@cla||clear");
}
return 0;
}

 

 

'수업 일기장' 카테고리의 다른 글

수업 일기장 #변수  (0) 2021.01.16
수업 일기장 #함수  (0) 2021.01.16
수업 일기장 #피라미드 만들기  (0) 2021.01.15
수업 일기장 #반복문 활용 및 const  (0) 2021.01.15
수업 일기장 #반복문  (0) 2021.01.15

해봤는데 반복문 식만 알고 응용은 아직 힘든것 같다

결국 검색으로 해결했다. 검색으로 해결 후 해설 후 나중에 다른 방법으로 쌓는 법을 알아봐야겠다.

변수 생성 시 규칙 참고자료 : 명명 규칙

// STAR_MIN const 상수 이름 구문을 _로 구분

 

직각 삼각형 식

#inculd <stdio.h>


int main() {

const int STAR_MAX = 5;

// 별 최대 갯수 변수 설정(변경하지 않음으로 고정

​

for(int star = 0; star < STAR_MAX; star++) {

// True시 명령문 실행 (처음 별 갯수 0개 설정-별 갯수가 최대 갯수만큼 찰때까지 반복

for(int starMin = 0; starMin <= star; starMin++) {

// 이중 for문으로 별을 삼각형 모양으로 만들어줌
// 처음 별 갯수 변수 생성-최소 별 갯수보다 스타가 크거나 같으면 명령문 실행 최소 별 갯수가 커지면 스타 갯수보다
// 더 커지면 루프 탈출
printf("*");
}
printf("\n);
}
return 0;
}

 

역 삼각형 식

#include <stdio.h>

int main() {

const int STAR_MAX = 5;


for (int star = 0; star < STAR_MAX; star++) {

// 별 초기 갯수 변수 생성 - 설정한 갯수에서 최대값 까지 ++

for (int starNow = 0; starNow < (STAR_MAX - star); starNow++) {

// starNow 변수 생성 - starNow 점수 < STAR_MAX - star - 조건이 맞을때 마다 * 생성 후 조건이 안 맞을 시 루프

printf("*");

0 1 2 3 '4 < 4'

// 이때 탈출 탈출하면서 *을 찍고 나가므로 ***** 가 된다.

}

printf("\n");

// 루프 탈출 후 줄 바꿈

}

return 0;

}

 

 

피라미드 식

 

#include <stdio.h>

int main() {

int starMax = 5; // 변수생성

for (int star = 0; star < starMax; star++) {

// 반복 - 스타가 5(starMax)보다 커질때까지


for (int starMin = starMax - 1; starMin > star; starMin--) {

// starMin은 4 반복 starMin(4) > star(1)일때까지 starMin - 1


printf(" ");

// 피라미드 빈공간(스페이스) 만들기

}

for (int starMin = 0; starMin <2*star+1; starMin++) {

// starMin(0)< 2*star(0)+1 / 반복시 starMin(0)+1 증감

printf("*");

// 루프 탈출 시 띄우고 다시 위 반복하면
// 피라미드가 쌓임
}
printf("\n");
}
return 0;
}

 

피라미드 복습

 

#include <stdio.h>

int main() {
	const int starMax = 5;
	for (int starCounter = 0; starCounter < starMax; starCounter++) { 
			// 커지면서 카운터
		for (int spccounter = starMax - 1; spccounter > starCounter; spccounter--) { 
			// 작아지면서 띄우기
			printf(" ");
		}
		for (int counter = 0; counter < (2*starCounter)+1; counter++) { 
			// 처음만 * 찍고 배수로 증가 처음 증가를 2*0으로 해서 반복시에도 처음은 하나만 나오도록 함
			printf("*");
		}
		printf("\n");
	}
	return 0;
}	

'수업 일기장' 카테고리의 다른 글

수업 일기장 #함수  (0) 2021.01.16
수업 일기장 #반복문 활용 및 const  (0) 2021.01.16
수업 일기장 #반복문 활용 및 const  (0) 2021.01.15
수업 일기장 #반복문  (0) 2021.01.15
수업 일기장 #조건문  (0) 2021.01.15

#include <stdio.h>

int main () {

return 0;

}

/////////

const int 변수 = 값; // 절대값, 밑에서 값을 바꿔도 오류가 뜨며 바뀌지 않음

const int MAX_HP = 10; // 최대 생명력 고정

int hp = 5; // 현재 생명력

const int DMG_MIN = 0; // 최소 공격력 고정

const int DMG_MAX = 5; // 최대 공격력 고정

​

while (1) { // 조건식이 true 일 경우 실행

if (hp > 0) { // hp가 0 보다 크면 트루일 경우 실행 아닐 경우 else문으로

for (int i = 0; i < maxHP; ++i) // for문

(i < hp) ? printf("■") : printf("□"); // 조건 ? true : false;

}

printf("(%d)\n", hp); // 위 조건으로 HP바 만듬

} else { // Hp가 0일 때

printf("You Die\n"); // 메세지

break; // 루프 탈출

}

​

int inputDmg = 0; // 데미지 변수 초기화

printf("Input Damge : "); // 데미지 입력 하라고 출력

scanf_s("%d", &inputDmg); // 서순 주위 입력하면 밑에서

if (inputDmg < DMG_MIN) inputDmg = DMG_MIN;

else if (inputDmg > DMG_MAX) inputDmg = DMG_MAX; // 최소값 최대값 검사 후

​

hp -= inputDmg; // hp에서 inputDmg를 감소 hp 감소

system("@cla||clear");

}

return 0;

}

​

'수업 일기장' 카테고리의 다른 글

수업 일기장 #반복문 활용 및 const  (0) 2021.01.16
수업 일기장 #피라미드 만들기  (0) 2021.01.15
수업 일기장 #반복문  (0) 2021.01.15
수업 일기장 #조건문  (0) 2021.01.15
수업 일기장 #자료형  (0) 2021.01.15

#include <stdio.h>

int main() {

return 0;

}

for문

for 초기문; 조건문; 증감문;

for ( i = 0; i < 10; i++)

순으로 작성함 조건문은 스킵가능하며 for문 안에 if (조건) break;로

루프 탈출 가능

printf(출력할 문구);

루프 시 실행할 명령어를 안에 모두 적는다.

}

이중 , 삼중 for문도 가능하나 삼중까지는 CPU 과부하로 인해 거의 사용하지 않으며 왠만하면 2중으로 풀어서 사용하는게 좋다.

단항연산자 : --, ++ (증감, 증가)

++i , i++ 앞에 달리냐 뒤에 달리냐에 따라 처리하는 방법도 다름

후증가연산자 i++ 출력 후 증가 처리함

선증가연산자 ++i 증가 후 출력함(데이터를 덮어씌우므로 조금 더 빠름)

while문

whil(조건) {

명령문;

증감문;

}

식으로 사용한다.

do ~ while문 do문을 반드시 한번 실행한 후 반복문을 실행,

특이사항으로 반복이 실행하기전 무조건 do문 부분을 한번 실행한다.

do {

명령문;

} while (조건) ;

조건이 false일때 루프 탈출

참고자료 : Web Club :: 반복문(for문, while문, do-while문) (tistory.com)

'수업 일기장' 카테고리의 다른 글

수업 일기장 #피라미드 만들기  (0) 2021.01.15
수업 일기장 #반복문 활용 및 const  (0) 2021.01.15
수업 일기장 #조건문  (0) 2021.01.15
수업 일기장 #자료형  (0) 2021.01.15
수업 일기장 #Hello World  (0) 2021.01.15

조건문(Condition), 분기문(Branch)

변수는 만드는 즉시 초기화를 해줘 쓰레기값이 입력되는걸 막자

아직 정해져있지 않는 값이라도 해도 0이라는 값을 입력해주자

if문

if (조건) - 조건이 참(Ture)이면 아래 내용을 실행한다.

{} 중괄호가 없을 시 한줄까지만 표시

논리연산 : Ture(참), False(거짓) , 프로그래밍에선 거짓(0) 나머진 참

비교연산자 : == 같으면, != 다르면, <, >, <=, >= !:부정

if (hp >= 1 && hp<= 29) { // hp란 변수가 1보다 크거나 같고 29보다 작거나 같으면

printf("피 부족\n"); // 피 부족이라는 내용을 출력

} else { // 그외

printf("死\n"); // 死 출력

}

 

논리연산자(AND, OR, XOR..) (&&, ll , .. )

우선 순위 && > ll 소괄호 구분 필수

if문 간단 구조

if ~ else if ~ else

Swtich문

int num = 0; -변수-

switch (num) { -값-

case 0: -조건-

printf("num is 0\n); -실행-

break; -조건이 맞을 시 {} 중괄호를 벗어남-

case 1: -이후 반복-

printf("num is 1\n);

break;

default: -찾는 조건이 없을 시-

printf("num is %d\n", num);

break;

}

int num = 0; // 변수(조건에 쓰일 변수)

switch (num) { // 조건(찾아야할 조건)

case 0: // 조건(검사할 조건)

printf("num is 0\n); // 실행(검사 후 맞는 조건 일 시 실행)

break; // 조건이 맞을 시 } 중괄호를 벗어남

case 1: // 반복

printf("num is 1\n);

break;

default: // 마지막까지 찾는 조건이 없을 시

printf("num is %d\n", num);

break;

}

if와 swtich문 차이점

Swtich문은 조건에 변수 사용이 불가능하고 정수 사용 가능

그럼으로 간단하고 조건이 명확한 경우 switch문을 사용 그외 if문을 사용

Tip.

프로그래밍 타법 정리

헝가리안법 - 변수 이름 앞에 자료형을 표기

낙타법 - 변수 구문마다 대문자 사용

ex) int iHealMax = 100;

int fHealMax = 100.0f;

뱀법 - 다 소문자 사용 띄우기마다 _를 사용

ex)float heal_max = 100.0f;

int heal_max = 100;

'수업 일기장' 카테고리의 다른 글

수업 일기장 #피라미드 만들기  (0) 2021.01.15
수업 일기장 #반복문 활용 및 const  (0) 2021.01.15
수업 일기장 #반복문  (0) 2021.01.15
수업 일기장 #자료형  (0) 2021.01.15
수업 일기장 #Hello World  (0) 2021.01.15

'=' 복사 대입 연산자

자료형 변수 = 대입할 값

char c = 'a';

아스키 코드로 변환 하여 메모리에 기록 함

1Byte

short s = 3;

int 메모리 반임 자주 사용 안함

2Byte

int i = 30;

integer(정수), 연산이 제일 빠름 이유는 CPU 단위에 기준으로 int 값이 정해지기 때문

4Byte

long l = 300;

int보다 큼 메모리는 동일한데 이유는 예전에는 차이났는데 비트 체제가 바끼면서 같아짐 말그대로

int 쓰지 잘 안씀

4Byte

long long ll = 3000;

int 메모리 두배 사용

8Byte

float f =3.14f;

Floating-Point, 부동소수점 f붙이고 해야 데이터 손실이 안남 이유는 f를 안 붙일 시 더블의 메모리인 8Byte를 잡고 남은 4Byte는 손실남

4Byte

double d = 3.14;

Duble Precision Floating-Point 두배정밀도 부동소수점

8Byte

sizeof - 데이터 크기를 반환하는 명령어

자료형의 특징

Ascii Table (0~127, 128가지) A:65 a:97 위 c 변수에 입력되어있는 char 자료형은 메모리에 97이라는 숫자로 입력되어있다.

128 64 32 16 8 4 2 1 - 2진법

0 0 0 0 0 0 0 0 - 컴퓨터 표기법

음수의 표현

컴퓨터 계산 원래 계산

00000101 5

+ 10000101 -5

----------------- -----

10001010 0

-10 틀린 답이 나옴

그래서 2진법 계산은 2의 보수법을 사용

2의 보수법 *보수:반대되는 값

00000101 => 5

11111010 => 1의 보수법 (반대 값)

11111011 => +1 2의 보수법 (+1)

00000101

11111011

--------------

00000000 으로 0이란 답이 나옴 맨앞 1은 Memory Overflow로 메모리를 벗어난 숫자는 버려짐

-----

실수의 표현

정밀도가 높을 수록 실수를 길게 표현 가능

3 . 14 입력한 실수

부호(+-) l 정수부(m) l 실수부

ㅣ00000000ㅣ00000011ㅣ00000000ㅣ0001110ㅣ 실제 메모리에 들어가있는 실수

+-(1.m) * 2^e-127 - 컴퓨터의 실수 표현 수식

 

#include 

int main() {
float sum = 0.0f;

for (int i = 0; i < 1000; i++) {

sum += 0.001f;
}
return 0;
}

출력 시 0.999991 실제 답 : 1 이 차이를 부동소수점 오차라고 한다.

연산자(Operator)

사칙 연산

+, -, *, / 더하기 빼기 곱하기 나누기순으로 속도가 빠르다.

ex) /2 => *0.5 곱하기 더 빠름

연산자 우선 순위

*/% > +- 답이 다르면 안되니 () 소괄호로 구분하여 묶어준다.

복합 연산자

+= , -=, *=, /=

ex) iResult *= 2; 풀이 ) iResult = iResult *2;

자료형의 승격

float iDiv = 5 / 2 ; 계산 시 소숫점이 날라감

이유 : int값으로 저장되었다가 불러와 계산하여 int값인 값이 나오며 그 답을 다시 float 값으로 바꿔 표기해서

float fDiv = 5.0f / 2.0f 이런식으로 계산해야하지만

float fDiv = 5.0f / 2 이렇게 계산하여도 답은 같다.

이유: 정밀도가 높은것에 따라서 정밀도가 떨어지는 자료형쪽이 승격한다.

이걸 자료형의 승격이라고 한다.

% : 나머지 연산자 (정수만 가능)

iResult = 8%3;

'수업 일기장' 카테고리의 다른 글

수업 일기장 #피라미드 만들기  (0) 2021.01.15
수업 일기장 #반복문 활용 및 const  (0) 2021.01.15
수업 일기장 #반복문  (0) 2021.01.15
수업 일기장 #조건문  (0) 2021.01.15
수업 일기장 #Hello World  (0) 2021.01.15

비주얼 스튜디오 설치 - c++ 게임 체크 , C++ 설치 체크 - 빈 솔루션 - ctrl + Shift + A (새항목 단축키) C++ 파일 .cpp를 .c로 수정 c언어를 사용하기 때문에

줄 번호 표기 방법 : 도구 - 옵션 , 텍스트 편집기 - 언어 선택 - 줄 번호

코드 실행 : Ctrl + F5 (저장도 같이해줌)

빌드 : Ctrl + Shift + B

문장 이해

#~ : 전처리기(Pre-Processing) 무엇을 하기 전에 처리할 일이 있다.

참고자료: [C언어기초] 전처리기란? (tistory.com)

#~ : 뒤에오는 명령어를 의미하는것 같음

<> : C또는 C++가 설치되어 있는 경로 (현재 코드에선 stdio.h라는 이름, 파일 경로)

stdio : Standard Input/Output (표준 입력/출력) (이번 코드에서 전처리기가 미리 실행해야하는 파일 이름)

.h : Header File (확장명)

 

#include <stido.h>	// 전처리기가 stdio.h라는 파일을 불러옴

void main() {	// int main()을 넣어야함
printf("Hello, World!\n");	// 출력
return 0;
}

'수업 일기장' 카테고리의 다른 글

수업 일기장 #피라미드 만들기  (0) 2021.01.15
수업 일기장 #반복문 활용 및 const  (0) 2021.01.15
수업 일기장 #반복문  (0) 2021.01.15
수업 일기장 #조건문  (0) 2021.01.15
수업 일기장 #자료형  (0) 2021.01.15

+ Recent posts