C++ 입문 1일차

하는·2024년 10월 2일
1

C++ 입문 챌린지

목록 보기
1/5

챌린지로 C++기초 챌린지를 내맘대로 시작한다. 왜 챌린지냐? 챌린지라고 명해야 더 의지가 솟기 때문.
이직한 회사에서 c++로 배포하는데 전혀 모른다. ^__^ 해보자꼬~

1일차

변수와 데이터 타입

int: 정수를 저장할 때 사용해. 예를 들어, 5, -10 같은 값.
float: 소수점이 있는 실수를 저장할 때 사용해. 예를 들어, 3.14, -0.5 같은 값.
double: float보다 더 큰 범위의 실수를 저장할 수 있어.
char: 문자 하나를 저장할 때 사용해. 예를 들어, 'a', 'B'.
bool: 참(true) 또는 거짓(false)을 저장하는 불리언 타입이야.
string: 문자열을 저장할 때 사용해. (문자열은 특별히 #include 을 추가해야 사용 가능해.)

변수 선언 예시

int age = 16; // 정수형 변수
float height = 170.5; // 실수형 변수
char initial = 'A'; // 문자형 변수
bool isStudent = true; // 불리언 변수

연습 문제

  1. 나이와 키를 입력받아 화면에 출력
  2. 두 개의 정수를 입력받아서 더한 결과를 출력
#include <iostream>

int main() {
    int age;
    float height;  // 키는 실수로 받을 수 있어서 float 사용

    // 나이 입력받기
    std::cout << "Enter your age: ";
    std::cin >> age;

    // 키 입력받기
    std::cout << "Enter your height: ";
    std::cin >> height;

    // 나이와 키 출력
    std::cout << "Your age is " << age << " and your height is " << height << std::endl;

    // 나이와 키를 더한 값 출력
    std::cout << "Age plus height is " << age + height << std::endl;

    return 0;  // 프로그램이 정상적으로 끝났음을 알림
}

조건문

if (조건) {
    // 조건이 참일 때 실행되는 코드
} else if (다른 조건) {
    // 첫 번째 조건이 거짓이고, 두 번째 조건이 참일 때 실행되는 코드
} else {
    // 모든 조건이 거짓일 때 실행되는 코드
}
  
//예시
  
int age;
std::cout << "Enter your age: ";
std::cin >> age;

if (age >= 18) {
    std::cout << "You are an adult." << std::endl;
} else if (age >= 13) {
    std::cout << "You are a teenager." << std::endl;
} else {
    std::cout << "You are a child." << std::endl;
}

반복문 (for, while)

//for
for (초기값; 조건; 증감) {
    // 조건이 참일 동안 반복되는 코드
}
// 예시
for (int i = 0; i < 5; i++) {
    std::cout << "Iteration: " << i << std::endl;
}
//while
while (조건) {
    // 조건이 참일 동안 반복되는 코드
}
int i = 0;
while (i < 5) {
    std::cout << "Iteration: " << i << std::endl;
    i++;
}

연습문제

  1. 사용자로부터 숫자를 입력받고, 그 숫자가 짝수인지 홀수인지 출력
  2. for 문을 사용해서 1부터 10까지의 숫자를 출력
    으악 안함...

함수

함수의 기본 구조

반환형 함수이름(매개변수 목록) {
    // 함수가 수행할 코드
    return 반환값;
}

반환형: 함수가 어떤 종류의 값을 반환할지를 명시. 예를 들어, int면 정수형 값을 반환하고, void면 반환값이 없다는 뜻.
함수 이름: 함수의 이름으로, 호출할 때 사용할 수 있음.
매개변수: 함수에 넘겨주는 입력값(인자).
반환값: 함수가 실행 후 반환하는 값. 반환형이 void인 경우 반환값이 필요 없음.

// 예시
int add(int a, int b) {
    return a + b;
}
// 함수 사용 예시
#include <iostream>

// 두 정수를 더하는 함수
int add(int a, int b) {
    return a + b;
}

int main() {
    int x = 5;
    int y = 10;

    // add 함수를 호출해서 결과 출력
    int result = add(x, y);
    std::cout << "The sum is: " << result << std::endl;

    return 0;
}

연습 문제

사용자로부터 두 개의 숫자를 입력받고, 그 숫자의 곱을 계산하는 함수를 만들어보자.

#include <iostream>

// 두 정수를 곱하는 함수
int multiply(int a, int b) {
    return a * b;
}

int main() {
    int x, y;
    
    // 첫 번째 숫자 입력
    std::cout << "Enter num1: ";
    std::cin >> x;

    // 두 번째 숫자 입력
    std::cout << "Enter num2: ";
    std::cin >> y;
    
    // 곱셈 함수 호출
    int result = multiply(x, y);
    std::cout << "The multiplication result is: " << result << std::endl;
    
    return 0;
}

배열(Array)

int numbers[5];  // 크기가 5인 정수형 배열 선언
  
numbers[0] = 10;  // 첫 번째 요소에 10 저장
numbers[1] = 20;  // 두 번째 요소에 20 저장

int numbers[5] = {10, 20, 30, 40, 50};  // 크기가 5인 배열 선언과 동시에 값 초기화

std::cout << numbers[0];  // 첫 번째 요소 출력 (값은 10)

// 배열과 for 반복문  
#include <iostream>

int main() {
    int numbers[5] = {10, 20, 30, 40, 50};

    // 배열의 각 요소 출력
    for (int i = 0; i < 5; i++) {
        std::cout << "Element " << i << ": " << numbers[i] << std::endl;
    }

    return 0;
}
//배열과 함수 함께 사용
                                                                       #include <iostream>

// 배열 요소들의 합을 계산하는 함수
int sumArray(int arr[], int size) {
    int sum = 0;
    for (int i = 0; i < size; i++) {
        sum += arr[i];
    }
    return sum;
}

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};

    // 배열의 합 계산
    int result = sumArray(numbers, 5);
    std::cout << "Sum of array elements: " << result << std::endl;

    return 0;
}

연습문제

  1. 배열의 각 요소를 2배로 만들어 출력하는 프로그램을 만들어보자.
  2. 최대값을 찾는 함수를 작성해보자.
// 1.
#include <iostream>

// 배열 요소를 두 배로 만드는 함수
void multiArray(int arr[], int len) {
    for (int i = 0; i < len; i++) {
        arr[i] = 2 * arr[i];
    }
}

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};
        // 배열의 크기를 std::size로 구함
    int len = std::size(numbers);

    // 배열의 요소를 두 배로 만듦
    multiArray(numbers, len);

    // 두 배로 변환된 배열 출력
    std::cout << "Array elements multiplied by 2: ";
    for (int i = 0; i < len; i++) {
        std::cout << numbers[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}
// 2.
#include <iostream>

// 배열에서 최대값을 찾는 함수
int findMax(int arr[], int len) {
    int max = arr[0];  // 첫 번째 요소를 초기값으로 설정
    for (int i = 1; i < len; i++) {  // 두 번째 요소부터 비교 시작
        if (max < arr[i]) {
            max = arr[i];
        }
    }
    return max;
}

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};
        // 배열의 크기를 std::size로 구함
    int len = std::size(numbers);

    // 배열의 최대값 찾기
    int result = findMax(numbers, len);
    std::cout << "Max of array elements: " << result << std::endl;

    return 0;
}
  
# include <iostream>

int main() {
    int age;
    float height;
    
    // 나이 입력받기
    std::cout << "enter age:";
    std::cin >> age;
    
    // 키 입력받기
    std::cout << "enter height:";
    std::cin >> height;
    
    // 나이와 키 출력
    std::cout <<"Your age is " <<age <<" and your height is " << height << std::endl;
    // 나이와 키 더한 값 출력
    std::cout <<"age plus height is "<< age+height <<std::endl;
    
    return 0;
}

포인터(Pointer)

  • 포인터: 메모리 주소를 저장하는 변수.
    즉, 어떤 변수의 값을 저장하는 대신 그 변수의 메모리 주소를 저장한다.
  • 포인터 선언: int* ptr;
  • 포인터는 특정 변수의 주소를 가리키고, 이를 통해 그 변수의 값을 간접적으로 참조할 수 있다.
int a = 10;
int* ptr = &a;  // a의 주소를 ptr에 저장
std::cout << *ptr << std::endl;  // ptr이 가리키는 a의 값을 출력

2. 포인터와 배열

  • 배열의 이름은 첫 번째 요소의 주소를 가리키는 포인터처럼 동작.
  • 배열을 포인터를 사용해 접근할 수 있다:
    int arr[5] = {1, 2, 3, 4, 5};
    int* ptr = arr;  // 배열의 첫 번째 요소 주소를 포인터에 저장
    std::cout << *(ptr + 1) << std::endl;  // 포인터를 이용해 두 번째 요소 출력

3. 포인터의 역참조 (Dereferencing)

  • 역참조란?
    포인터를 사용해서 변수가 가리키는 값을 참조하는 것.
    역참조는 * 연산자를 사용해서 이루어진다:
    int* ptr = &a;
    std::cout << *ptr << std::endl;  // 포인터가 가리키는 변수의 값 출력

4. 포인터와 반복문

  • 포인터와 반복문을 결합하여 배열의 요소들을 처리할 수 있다. 예를 들어, 포인터를 사용해서 배열의 각 요소에 접근할 수 있다:
    for (int i = 0; i < 5; i++) {
        std::cout << *(ptr + i) << std::endl;  // 포인터를 이용해 배열의 각 요소 출력
    }

오늘의 연습 문제:

  1. 정수형 변수를 선언하고 포인터를 사용해 그 값을 출력.
  2. 배열을 선언하고, 포인터를 사용해 배열의 각 요소를 출력.
// 1.
#include <iostream>

int main() {
    int a = 9;             // 변수 a 선언 및 초기화
    int* ptrA = &a;        // 변수 a의 주소를 ptrA에 저장

    std::cout << *ptrA << std::endl;  // ptrA가 가리키는 값 출력 (a의 값: 9) 
    return 0;
}  
// 2.
#include <iostream>

int main() {
   int arr[5] = {1, 2, 3, 4, 5};
   int* ptr = arr;  // 배열의 첫 번째 요소의 주소를 포인터에 저장

    for (int i = 0; i < 5; i++) {
        std::cout << *(ptr + i) << std::endl;  // 포인터로 배열 요소에 접근하여 출력
    }
}
profile
천천히 꾸준히 취미처럼 냐미😋

0개의 댓글