20250902

Jaemyeong Lee·2025년 9월 3일
0

로드맵

목록 보기
2/3

계획

Rookiss

  • 변수 기초

얌얌코딩

  • 변수, cout, debug 연습 문제

혼자 공부하는 C언어

  • 전처리 지시자

변수란?

  • 데이터를 저장하기 위한 메모리 공간
  • 프로그래밍 언어는 메모리 주소를 변수명으로 추상화 하여 접근
  • 변수는 데이터를 저장, 읽기, 수정 기능을 가짐
  • 코드의 가독성, 재사용성, 유지보수 성을 높임

변수와 메모리 구조의 관계

  • C++에서 프로그램 실행 시 메모리는 4가지 영역으로 나뉨
    메모리 영역설명
    Code (Text)프로그램의 기계어 명령어가 저장되는 영역
    Data초기화된 전역 변수와 static 변수들이 저장되는 영역
    Heap동적 메모리 할당 시 사용하는 공간 (new 사용 시)
    Stack지역 변수 및 함수 호출 정보가 저장되는 LIFO 구조의 메모리 공간
  • 메모리 영역은 변수의 수명, 접근 범위, 저장위치등에 직접적인 영향을 준다.

CPU와 RAM의 관계

  • CPU는 데이터를 연산(처리)하는 역할
  • RAM은 데이터를 저장하는 공간
  • 변수는 RAM에 존재하고, CPU는 해당 변수 공간의 주소를 참조하여 연산을 수행한다.
  • 프로그램(특히 게임)은 CPU와 RAM의 끊임없는 협업

CODE

#include <iostream>
using namespace std;

// cpu - ram - ssd
// ram : 데이터 저장 용도로 사용
// - code(text)
// - data
// - heap
// - stack

// 프로그램은 데이터와 로직으로 이루어짐

// 코드를 어떻게 묘사할 것인가
// 데이터를 가공하고 진행시키는 것만 잘하면 게임을 잘 만들 수 있음

// 내 캐릭터의 hp를 만들어서 관리
// 1. 공간을 확보
// 2. 공간 설정 후 데이터를 넣어줌
// 어떻게 공간을 확보해서 사용할까
// 사용하는 램 공간에도 주소값이 정해져 있음
// 다 알 필요는 없고
// 언어에서 제공하는 문법으로 코드만 만들어 주면됨
/// 따라서 변수를 알아야함

// 변수란?
// 일종의 상자
// 상자의 이름을 붙여줄 수 있음
// 변수로 메모리의 장소를 임대할 수 있음
// 메모리 장소에서 변수에 저장한 값을 꺼내올 수 있음
// 변수라는 상자의 개념을 알면 간접적으로 메모리를 사용할 수 있음
// 변수는 어떤 위치에 있느냐에따라서 code, data, heap, stack 영역으로 나뉨

/* 주석 문법 */
// 주석 문법

// 변수 문법
// 타입 이름;
// - 변수 이름은 영어로 짓는다
// - 숫자는 앞에 올 수 없다.
// ; 세미콜론은 문장 마지막을 의미함 없으면 문법 에러

// 데이터 타입은 무슨 의미냐
// 우선 컴퓨터는 0,1의 전기신호 밖에 읽지 못함
// 따라서 사용자가 어떤 타입을 저장할 것인지 명시해 줘야함
// 어떤 숫자인지 예) int -> 정수
// 타입의 크기
// char     1byte
// short    2byte
// int      4byte
// __int64  8byte

// signed vs unsigned 
// - signed     부호 있음
// - unsigned   부호 없음

// 범위를 초과
// - 오버플로우 문제 생김

int hp; // 메모리 공간을 할당받고 이름을 hp로 매핑하여 사용하겠다라는 의미
        // 정수로 받겠다는 의미

//int hp = 50; // 초기값과 동시에 초기화

int maxHp; // 컨벤션 스타일 여러가지가 있다. 회사에서 사용하는 컨벤션 참고 사용

//int str;        // 4바이트 공간 확보
//int dex;        // 4바이트 공간 확보
//short lawful;   // 2바이트 공간 확보

// 램은 단순하게 데이터 저장하는데 활용 되는것
// 실질적인 어떤것인가 하는 명령을 하는 부분은 CPU가 함

int main()
{
    // 메인함수 C++에서 시작하는 부분
    // 여기서 코드 작업을 한다.
    // hp에 값 대입
    //hp = 50;    // =는 같다의 의미가 아닌 오른쪽에 있는 상수를 변수에 대입한다는 의미
                // 초기값을 한번에 주는 방법이 있음

    // maxHp 초기화
    maxHp = 200;

    // 변수에 담긴 값을 불러오는 방법
    //hp;// 불러오면 읽어옴
    
    // hp에 maxHp를 넣어줌
    hp = maxHp;
    // 출력
    cout << hp;
}

연습 문제

문제 1

#include <iostream>

using namespace std;

int main()
{

		cout << "HELLO WORLD";

		return 0;

}
  • 풀이
#include <iostream>

using namespace std;

int main()
{

		cout << "HELLO WORLD";

		return 0;

}

문제 2

📌 문제 설명

다음과 같이 출력하는 프로그램을 작성하세요:

출력 예시

@@@@
main()
std::cout << “@@@@”;
  • 풀이
int main()
{

	cout << "@@@@" << endl;
	cout << "main()" << endl;
	cout << "std::cout << “@@@@”;" << endl;

	return 0;

}

문제 3

📌 문제 설명

다음과 같이 출력하는 프로그램을 작성하세요:

출력 예시

123###456
  • 풀이
int main()
{

	cout << "123###456" << endl;

	return 0;

}

문제 4

📌 문제 설명

다음과 같이 출력하는 프로그램을 작성하세요.
(주의: #### 사이에는 띄어쓰기 3칸이 들어갑니다)

출력 예시

CODING
##   ##
std::cout “CODING”;
std::cout << std::endl;
std::cout << “##   ##”;
  • 풀이
int main()
{

	cout << "CODING" << endl;
	cout << "##   ##" << endl;
	cout << "std::cout “CODING”;" << endl;
	cout << "std::cout << std::endl;" << endl;
	cout << "std::cout << “##   ##”;" << endl;

	return 0;

}

문제 5

📌 문제 설명

다음과 같이 출력하는 프로그램을 작성하세요.

출력 예시

5 4 3 2 1 GO!
  • 풀이
int main()
{

	cout << "5 4 3 2 1 GO!" << endl;

	return 0;

}

문제 6

📌 문제 설명

  • 변수를 하나 선언하세요.
  • 해당 변수에 5를 저장하세요.
  • 변수 값을 출력하세요.

출력 예시

5
  • 풀이
int main()
{

	int a = 5;
	cout << a << endl;

	return 0;

}

문제 7

📌 문제 설명

  • 변수 t를 선언하고 5를 저장하세요.
  • 아래와 같이 계산된 결과를 출력하세요.

출력 예시

t에서 1씩 증가=5 6 7
t에서 2씩 감소=5 3 1
  • 풀이
int main()
{

	int t = 5;
	cout << "t에서 1씩 증가 = " << t << " " << t + 1 << " " << t + 1 + 1 << endl;
	cout << "t에서 2씩 감소 = " << t << " " << t - 2 << " " << t - 2 - 2 << endl;

	return 0;

}

문제 8

📌 문제 설명

  • 변수 a, b, c 3개를 선언하세요.
  • 각각 아래 값으로 초기화 하세요:
    • a = 5
    • b = -1
    • c = 2
  • 출력 예시와 같이 정확히 띄어쓰기를 맞춰서 출력하세요.

출력 예시

a, b, c 값은 각각 a는 5, b는 -1, c는 2 입니다
  • 풀이
int main()
{
    a = 5;
    int b = -1;
    int c = 2;

    cout << "a, b, c 갑은 각각 a는" << a << ", b는 " << b << " c는 " << c << " 입니다" << endl;

	return 0;
}

문제 9

📌 문제 설명

  • 변수 ab 를 선언하세요.
  • a 에는 7, b 에는 2 를 저장하세요.
  • 두 변수의 합과 차를 아래 출력 예시처럼 출력하세요.

출력 예시

a+b=9
a-b=5
  • 풀이
int main()
{
	a = 7;
    b = 2;
    cout << "a+b=" << a + b<< endl;
    cout << "a+b=" << a - b<< endl;

	return 0;
}

문제 10

📌 문제 설명

  • 변수 kg 를 선언하세요.
  • k 에는 8, g 에는 4 를 저장하세요.
  • 두 변수를 곱한 값과 나눈 값을 아래 출력 예시처럼 출력하세요.

출력 예시

8*4=32
8/4=2
  • 풀이
int main()
{
	int k = 8;
  	int g = 4;

  	cout << k << "*" << g << "=" << k * g << endl;
  	cout << k << "/" << g << "=" << k / g << endl;

	return 0;
}

문제 11

📌 문제 설명

  • 변수 a, b, c, d 를 선언하세요.
  • 각각 변수에 아래 값을 저장하세요:
    • a = 3
    • b = 5
    • c = 3
    • d = 4
  • 수식 ((a + b) * c) / d 의 결과를 출력하세요.

출력 예시

6
  • 풀이
int main()
{
	a = 3;
    b = 5;
    c = 3;
    int d = 4;
    cout <<"((a+b)*c)/d = "<< ((a + b) * c) / d << endl;

	return 0;
}

문제 12

📌 문제 설명

  • 변수 a 를 선언하세요.
  • 변수 a8을 저장하세요.
  • a 를 5번 곱한 값 (a의 5제곱)을 출력하세요.

출력 예시

32768
  • 풀이
int main()
{
	cout << "문제12" << endl;
	a = 8;
	cout << a * a * a * a * a << endl;

	return 0;
}

문제 13

📌 문제 설명

  • Visual Studio에서 트레이스(한 줄씩 실행)를 연습합니다.
  • 변수 a 의 값이 실행 도중 어떻게 변하는지 직접 확인합니다.
  • F10 키를 눌러 한 줄씩 실행합니다.
    조사식(Watches) 에 변수 a 를 등록합니다.
    매 줄 실행할 때마다 a의 값이 어떻게 변하는지 확인합니다.
    *트레이스가 끝나면 Shift + F5 를 눌러 종료합니다.
  • 풀이
#include <iostream>

using namespace std;

int main()

{

		int a;
		a = 8;

		cout << a;
		a = a + 1;

		a++;
		a = 3;
		a = a + 1;
		a++;

		cout << "a값은 : " << a << endl;
		a = a + 1;
		a++;
		cout << "마지막 a값은 : " << a << endl;
		return 0;
}

문제 14

📌 문제 설명

  • 변수 a 를 선언하세요.
  • a8을 저장하세요.
  • a = a + 1a++ 을 적절히 이용하여 a12로 만드세요.
  • 최종 결과를 출력하세요.

출력 예시

12
  • 풀이
int main()
{
	  a = 8;
    a++;
    a = a + 1;
    a++;
    a++;

    cout << a << endl;
    cout << endl;

	return 0;
}
profile
李家네_공부방

0개의 댓글