Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Yejom's Dev Log

[C++ 입문] 2. loop, function, array 본문

Smart Factory Bootcamp

[C++ 입문] 2. loop, function, array

Yejom 2024. 4. 24. 15:49

 

  • 반복문 (loop)
 
  • for 문
// fOR 문

int main() {

	std::cout << "(1) 5단 출력\n----5단----\n";

	for (int i = 1; i < 10; i++) {
    	std::cout << "5 * " << i << " = " << 5 * i  << std::endl;
	}

	std::cout << "(2) 1 ~ 9단 출력\n";

	for (int j = 1; j < 10; j++) {
		std::cout << "----" << j << "단----\n";
		
	for (int k = 1; k < 10; k++) {
        std::cout << j << " * " << k << " = " << j * k << std::endl;

		}	}   }
 
 
  • while 문
// while 문

int main() {

	int num = 10000;
	int sum = 0;

	cout << "사용자가 입력한 숫자 더하기\n";
	
	while (num != 0) {

		cout << "\n숫자를 입력하세요 (0 : exit) : ";
		cin >> num;

		sum += num;

	}
	cout << "\n사용자가 입력한 수의 합은 : " << sum << endl;

	return 0;
}

 

※ 종료 조건을 만족시키지 않으면 무한 루프에 빠질 위험이 있음.

 

  • do - while 문
// do-while 문

// 0, 1 출력
int main() {
	int x = 0;
	do {
		cout << x << endl;
		x++;
	} while (x == 1);
}
// 0 만 출력
int main() {
	int x = 0;
	do {
		cout << x << endl;
		x++;
	} while (x == 2);
}
do-while 루프의 문(statement)은 항상 적어도 한번 실행.

조건이 true이면 실행 경로가 do-while 루프의 맨 위로 돌아가서 다시 실행.

 

  • 별(*) 찍기 예제
// 1)
int main() {

	int rep;
	int j = 0;
	
	cout << "Input : ";
	cin >> rep;
	cout << endl << "Output : " << endl;
	
	string star = "";

	for (int i = 1; i <= rep; i++) {
		star += "*";
		cout << star << endl;
	}
	return 0;
}

// 2)
int main() {

	int rep;
	int j = 0;

	cout << "Input : ";
	cin >> rep;
	cout << endl << "Output : " << endl;

	for (int i = 1; i <= rep; i++) {
		
		while (j != i) {
			cout << "*";
			j++;
		}

		j = 0;
		cout << endl;
	}
	return 0;
}

 
  • 함수 (function)

- 이름 작성기능 분배가 중요함.

ex) IntSum 이랑 IntSumAndPrint 의 기능은 달라야 함.

 

- 리턴하는 값에 따라 함수의 자료형 결정

#include <iostream>

using namespace std;

int GetTen()
{
    //GetFive(); //깊이 두 단계 들어가진 것.
    return 10;
}

int IntSum(int n1, int n2)
{
    return n1 + n2;
}

void PrintSomething(string message)
{
    cout << message << endl;
}

int main()
{
    // cin >> num1 >> num2; 
    // 두 개 동시에 입력받을 수 있음.

    int ten = GetTen(); // ten = 10;
    int result = IntSum(4, 7); // 4 + 7
    // int result = PrintHi(); // 리턴되는 값이 없어서 가져올 것도 없다.
    PrintSomething("Neuron");
}

  • 배열 (array)
	// 배열의 선언
	string fruit[3];

	// 배열의 초기화
	fruit[0] = "apple";
	fruit[1] = "banana";
	fruit[2] = "orange";

	// 배열의 선언 & 초기화
	string fruit[] = { "apple", "banana", "orange" };

 

void main()
{	int intArray[5] = { 6, 7, 8, 9, 10 };
	int arraySize = sizeof(intArray) / sizeof(intArray[0]);

	// # 1) for-each: 배열의 모든 요소를 처음부터 끝까지 탐색
	for (int num : intArray) // 인덱스 0번부터, 1씩 증가
	{
		cout << num << endl;
	}

	// # 2
	for (int i = 0; i < arraySize; i++)
	{
		cout << intArray[i] << endl;
	}
    }
    /* 1)과 동일하게 작동함.
    int target_min = 2; // 인덱스 번호 최소값
	int target_max = 4; // 인덱스 번호 최대값
	int loop_count = 0;
    
    if (loop_count > target_min && loop_count < target_max)
		{
			cout << num << endl;
			loop_count++;
		}*/

 

☆ for 문에서 sizeof(array) / sizeof(array[0]) 사용하는 이유?

: 배열의 갯수를 정해두지 않고 선언하는 경우에 유용함.

 

int col = sizeof(pyo[0]) / sizeof(pyo[0][0]); // 2차원 배열 가로크기 구하기, 가로 한 줄의 크기를 요소의 크기로 나눠줌
int row = sizeof(pyo) / sizeof(pyo[0]);    // 2차원 배열 세로크기 구하기, 배열이 차지하는 전체 공간을 가로 한 줄의 크기로 나눠줌

 


  • 실습

https://github.com/YejeongKang/240424/tree/main/240424

 

240424/240424 at main · YejeongKang/240424

Contribute to YejeongKang/240424 development by creating an account on GitHub.

github.com

 


  • # define
// 전처리기에서 작동됨.
// 소스코드 이전에 실행되는 것들
#include <iostream>
#include <string>

#define ROW_SIZE 5
#define COL_SIZE 4
// 소스코드의 ROW_SIZE와 COL_SIZE 변수를 모두 정의해둔 숫자로 바꿔줌.
// 편리하고, 변수가 상징적인 의미를 갖게 함.

  • 코드 설계
  1. 데이터 정의
  2. 입력단
  3. 입력 판별
  4. 입력 처리

이렇게 설계, 작성해서 남이 봐도 이해할 수 있는 코드를 작성해주는 것이 좋음.


 

개발을 하는 중에는 F5(디버그 모드)로 확인하는 것이 좋다.

디버그 모드 (왼쪽에 브레이크 포인트 생성)

 


 

  • github에 코드 올렸는데 한글이 깨진다면? ╚(•⌂•)╝
요로케 해결 ^___^ << 갑자기 단체 오류나서 리더님이 알려주셨다  👍