C++ 기본 문법

C++Beginner
지금 연습하기

소개

이 랩에서는 C++ 프로그램의 기본적인 구조를 배우고, 기본적인 구문 요소를 탐구하며, 실행 과정을 이해하게 됩니다. 이 실습 경험은 초보자를 위해 설계되었으며, WebIDE 환경을 사용하여 C++ 코드를 작성하고 이해하는 데 필요한 탄탄한 기반을 제공할 것입니다.

첫 번째 C++ 프로그램 설정

간단한 C++ 프로그램을 생성하고 검토하여 시작해 보겠습니다. 이를 통해 C++ 프로그램의 기본 구조와 구성 요소를 이해할 수 있습니다.

  1. WebIDE 에서 왼쪽 측에 파일 탐색기가 표시됩니다. 파일 탐색기 영역을 마우스 오른쪽 버튼으로 클릭하고 "새 파일"을 선택합니다.
  2. 새 파일의 이름을 hello.cpp로 지정하고 Enter 키를 누릅니다.
  3. 새 파일이 편집기에서 열립니다. 열리지 않으면 파일 탐색기에서 hello.cpp를 두 번 클릭하여 엽니다.
  4. 편집기에서 다음 C++ 코드를 입력합니다.
#include <iostream>
using namespace std;

int main() {
    cout << "Hello, C++!" << endl;
    return 0;
}

C++ code editor screenshot

이 코드를 분석해 보겠습니다.

  1. #include <iostream>: 이것은 입/출력 스트림 라이브러리를 포함하는 전처리기 지시문입니다. C++ 에게 입출력 작업을 위한 도구를 사용하겠다는 의미입니다.
  2. using namespace std;: 이 줄은 std:: 접두사 없이 표준 라이브러리의 요소를 사용할 수 있도록 합니다. "표준 도구 세트를 사용할 때마다 출처를 지정하지 않고 사용하겠다"는 의미입니다.
  3. int main() { ... }: 이것은 프로그램 실행이 시작되는 main 함수입니다. 모든 C++ 프로그램은 main 함수를 가져야 합니다. main 앞의 int는 이 함수가 정수 값을 반환한다는 것을 나타냅니다.
  4. cout << "Hello, C++!" << endl;: 이 줄은 텍스트 "Hello, C++"를 콘솔에 출력합니다. cout는 출력을 위해 사용되고, <<는 출력 연산자이며, endl은 텍스트 뒤에 새 줄을 추가합니다.
  5. return 0;: 이것은 프로그램이 성공적으로 실행되었음을 나타냅니다. 0 의 반환 값은 일반적으로 모든 것이 예상대로 진행되었음을 알리는 데 사용됩니다.

이제 프로그램을 컴파일하고 실행해 보겠습니다.

  1. WebIDE 에서 터미널 또는 콘솔 패널을 찾습니다. 보이지 않으면 열어야 할 수 있습니다 (일반적으로 "터미널" 또는 "보기" 메뉴 아래에 "새 터미널"과 같은 옵션이 있습니다).

  2. 터미널에서 올바른 디렉토리에 있는지 확인합니다. pwd 명령을 사용하여 현재 디렉토리를 확인하고, 필요한 경우 cd를 사용하여 탐색할 수 있습니다.

  3. 프로그램을 컴파일하려면 터미널에 다음 명령을 입력합니다.

    g++ -o hello hello.cpp
    
  4. 컴파일된 프로그램을 실행하려면 다음을 입력합니다.

    ./hello
    

Hello, C++! 출력을 볼 수 있습니다.

Terminal showing program output

오류가 발생하면 오타가 있는지 코드를 다시 확인하십시오. C++ 는 대소문자를 구분하므로 coutCout 또는 COUT와 다릅니다.

변수 및 데이터 타입 이해

이 단계에서는 C++ 의 변수와 기본 데이터 유형을 살펴보겠습니다. 변수는 프로그램에서 데이터를 저장하는 데 사용되며, 다양한 데이터 유형을 이해하는 것은 효율적인 프로그래밍에 매우 중요합니다.

  1. WebIDE 에서 variables.cpp라는 새 파일을 만듭니다. 파일 탐색기에서 마우스 오른쪽 버튼을 클릭하고 "새 파일"을 선택하여 이 작업을 수행할 수 있습니다.
  2. 편집기에서 variables.cpp를 열고 다음 코드를 입력합니다.
#include <iostream>
#include <string>
using namespace std;

int main() {
    // Integer variable
    int age = 25;

    // Floating-point variable
    float height = 1.75;

    // Character variable
    char grade = 'A';

    // Boolean variable
    bool isStudent = true;

    // String variable (C++ string class)
    string name = "Alice";

    cout << "Name: " << name << endl;
    cout << "Age: " << age << " years" << endl;
    cout << "Height: " << height << " meters" << endl;
    cout << "Grade: " << grade << endl;
    cout << "Is a student: " << (isStudent ? "Yes" : "No") << endl;

    return 0;
}

사용된 다양한 데이터 유형을 분석해 보겠습니다.

  1. int: 정수에 사용됩니다. 예제에서 age는 정수입니다.
  2. float: 소수점에 사용됩니다. height에 사용합니다. 더 많은 정밀도를 제공하지만 더 많은 메모리를 사용하는 double도 있습니다.
  3. char: 단일 문자에 사용됩니다. grade 변수는 char 입니다.
  4. bool: true/false 값에 사용됩니다. isStudent는 부울 변수입니다.
  5. string: 텍스트에 사용됩니다. 이 유형을 사용하기 위해 맨 위에 <string>을 포함한다는 점에 유의하십시오.

이 프로그램은 다양한 유형의 변수를 선언하고 cout를 사용하여 출력하는 방법을 보여줍니다.

cout << "Is a student: " << (isStudent ? "Yes" : "No") << endl; 줄을 주목하십시오. 이 줄은 if-else 문에 대한 축약형인 삼항 연산자 ?:를 사용합니다. 이는 "isStudent 가 true 이면 'Yes'를 출력하고, 그렇지 않으면 'No'를 출력하라"는 의미입니다.

프로그램을 컴파일하고 실행하려면:

  1. WebIDE 의 터미널 패널에서 올바른 디렉토리에 있는지 확인합니다.

  2. 다음 명령으로 프로그램을 컴파일합니다.

    g++ -o variables variables.cpp
    
  3. 다음 명령으로 프로그램을 실행합니다.

    ./variables
    

오류가 발생하면 오타를 확인하십시오. 흔한 실수로는 문장의 끝에 세미콜론을 잊거나 따옴표를 잘못 사용하는 경우가 있습니다.

제어 구조 - If 문 및 루프

제어 구조를 사용하면 프로그램의 흐름을 제어할 수 있습니다. 동적이고 반응적인 프로그램을 만드는 데 필수적인 if 문과 루프를 살펴보겠습니다.

  1. WebIDE 에서 control.cpp라는 새 파일을 만듭니다.
  2. 편집기에서 control.cpp를 열고 다음 코드를 입력합니다.
#include <iostream>
using namespace std;

int main() {
    int number;
    cout << "Enter a number: ";
    cin >> number;

    // If statement
    if (number > 0) {
        cout << "The number is positive." << endl;
    } else if (number < 0) {
        cout << "The number is negative." << endl;
    } else {
        cout << "The number is zero." << endl;
    }

    // For loop
    cout << "Counting from 1 to 5:" << endl;
    for (int i = 1; i <= 5; i++) {
        cout << i << " ";
    }
    cout << endl;

    // While loop
    int count = 5;
    cout << "Countdown:" << endl;
    while (count > 0) {
        cout << count << " ";
        count--;
    }
    cout << endl;

    return 0;
}

사용된 제어 구조를 분석해 보겠습니다.

  1. If-Else 문: 이것은 프로그램이 결정을 내릴 수 있도록 합니다. 구조는 다음과 같습니다.

    if (condition) {
        // code to execute if condition is true
    } else if (another condition) {
        // code to execute if this condition is true
    } else {
        // code to execute if no conditions are true
    }
    
  2. For 루프: 코드 블록을 몇 번 반복할지 알고 있을 때 사용됩니다. 구조는 다음과 같습니다.

    for (initialization; condition; update) {
        // code to repeat
    }
    

    예제에서 int i = 1은 루프 변수를 초기화하고, i <= 5는 루프를 계속하기 위한 조건이며, i++는 각 반복 후에 루프 변수를 업데이트합니다.

  3. While 루프: 조건이 true 인 동안 코드 블록을 반복하려는 경우 사용됩니다. 구조는 다음과 같습니다.

    while (condition) {
        // code to repeat
    }
    

    예제에서 루프는 count > 0인 동안 계속됩니다.

프로그램을 컴파일하고 실행하려면:

  1. WebIDE 의 터미널 패널에서 올바른 디렉토리에 있는지 확인합니다.

  2. 다음 명령으로 프로그램을 컴파일합니다.

    g++ -o control control.cpp
    
  3. 다음 명령으로 프로그램을 실행합니다.

    ./control
    

프로그램을 실행하면 숫자를 입력하라는 메시지가 표시됩니다. if 문이 어떻게 작동하는지 확인하려면 다른 숫자 (양수, 음수, 0) 를 입력해 보십시오. 그런 다음 프로그램은 입력에 관계없이 for 루프와 while 루프를 보여줍니다.

오류가 발생하면 세미콜론 누락, 괄호 불일치 또는 변수 이름의 오타와 같은 일반적인 문제를 확인하십시오.

C++ 의 함수

함수는 특정 작업을 수행하는 코드 블록입니다. 코드를 구성하고 재사용 가능하며 이해하기 쉽게 만드는 데 도움이 됩니다. 함수 사용법을 보여주는 프로그램을 만들어 보겠습니다.

  1. WebIDE 에서 functions.cpp라는 새 파일을 만듭니다.
  2. 편집기에서 functions.cpp를 열고 다음 코드를 입력합니다.
#include <iostream>
using namespace std;

// Function to calculate the square of a number
int square(int num) {
    return num * num;
}

// Function to check if a number is even
bool isEven(int num) {
    return num % 2 == 0;
}

// Function with default parameter
void greet(string name = "Guest") {
    cout << "Hello, " << name << "!" << endl;
}

int main() {
    int number = 7;

    cout << "Square of " << number << " is: " << square(number) << endl;

    if (isEven(number)) {
        cout << number << " is even." << endl;
    } else {
        cout << number << " is odd." << endl;
    }

    greet();  // Uses default parameter
    greet("Alice");  // Provides a name

    return 0;
}

이 프로그램의 구성 요소를 분석해 보겠습니다.

  1. 함수 정의: 함수는 반환 유형, 이름 및 매개변수 (있는 경우) 로 정의됩니다. 예를 들어:

    int square(int num) {
        return num * num;
    }
    

    이 함수는 정수 num을 받아 제곱하고 결과를 반환합니다.

  2. 부울 반환이 있는 함수:

    bool isEven(int num) {
        return num % 2 == 0;
    }
    

    이 함수는 숫자가 짝수이면 true를 반환하고, 그렇지 않으면 false를 반환합니다. % 연산자는 나눗셈의 나머지를 제공합니다.

  3. 기본 매개변수가 있는 함수:

    void greet(string name = "Guest") {
        cout << "Hello, " << name << "!" << endl;
    }
    

    이 함수에는 기본 매개변수가 있습니다. 함수를 호출할 때 인수가 제공되지 않으면 "Guest"를 사용합니다.

  4. 함수 호출: main() 함수에서 이러한 함수를 호출하고 반환 값을 사용하는 방법을 보여줍니다.

프로그램을 컴파일하고 실행하려면:

  1. WebIDE 의 터미널 패널에서 올바른 디렉토리에 있는지 확인합니다.

  2. 다음 명령으로 프로그램을 컴파일합니다.

    g++ -o functions functions.cpp
    
  3. 다음 명령으로 프로그램을 실행합니다.

    ./functions
    

이 프로그램은 함수를 사용하여 코드를 관리 가능하고 재사용 가능한 조각으로 구성하는 방법을 보여줍니다. 오류가 발생하면 오타, 세미콜론 누락 또는 괄호 불일치를 확인하십시오. 또한 함수를 호출할 때 올바른 함수 이름을 사용하고 있는지 확인하십시오.

기본적인 입출력 연산

이 마지막 단계에서는 C++ 에서 다양한 입력 및 출력 연산을 보여주는 프로그램을 만들 것입니다. 입력 및 출력을 통해 사용자와 상호 작용하는 방법을 이해하는 것은 대화형 프로그램을 만드는 데 매우 중요합니다.

  1. WebIDE 에서 io_operations.cpp라는 새 파일을 만듭니다.
  2. 편집기에서 io_operations.cpp를 열고 다음 코드를 입력합니다.
#include <iostream>
#include <iomanip>  // For setprecision
#include <string>   // For string operations
using namespace std;

int main() {
    string name;
    int age;
    double height;

    // Input operations
    cout << "Enter your name: ";
    getline(cin, name);  // Reads a full line, including spaces

    cout << "Enter your age: ";
    cin >> age;

    cout << "Enter your height in meters: ";
    cin >> height;

    // Output operations
    cout << "\n--- Your Information ---\n";
    cout << "Name: " << name << endl;
    cout << "Age: " << age << " years" << endl;

    // Setting precision for floating-point output
    cout << fixed << setprecision(2);
    cout << "Height: " << height << " meters" << endl;

    // Using width and fill for formatted output
    cout << "\nFormatted Age Display:\n";
    cout << setw(10) << setfill('.') << left << "Age" << setw(5) << right << age << endl;

    return 0;
}

이 프로그램의 주요 구성 요소를 분석해 보겠습니다.

  1. 추가 헤더:

    • #include <iomanip>: 이 헤더는 setprecisionsetw와 같은 입/출력 조작자를 제공합니다.
    • #include <string>: 이 헤더는 문자열 연산에 사용되지만, <iostream>과 함께 암시적으로 포함되는 경우가 많습니다.
  2. 입력 연산:

    • getline(cin, name): 공백을 포함하여 전체 입력 줄을 읽습니다. 이름이나 문장을 읽는 데 유용합니다.
    • cin >> age: age 변수에 단일 값을 읽습니다. >> 연산자는 입력에 사용됩니다.
  3. 출력 연산:

    • cout << "Text" << variable << endl: 이것은 기본 출력 연산입니다. << 연산자는 출력에 사용됩니다.
    • endl: 줄 바꿈을 추가하고 출력 버퍼를 플러시합니다.
  4. 출력 형식 지정:

    • cout << fixed << setprecision(2): 부동 소수점 숫자의 출력을 항상 소수점 2 자리까지 표시하도록 설정합니다.
    • setw(10): 다음 출력 필드의 너비를 10 자로 설정합니다.
    • setfill('.'): 필드의 빈 공간에 채우기 문자를 '.'로 설정합니다.
    • leftright: 필드 내에서 출력의 정렬을 설정합니다.

프로그램을 컴파일하고 실행하려면:

  1. WebIDE 의 터미널 패널에서 올바른 디렉토리에 있는지 확인합니다.

  2. 다음 명령으로 프로그램을 컴파일합니다.

    g++ -o io_operations io_operations.cpp
    
  3. 다음 명령으로 프로그램을 실행합니다.

    ./io_operations
    

프로그램을 실행하면 이름, 나이 및 키를 입력하라는 메시지가 표시됩니다. 이 정보를 입력하면 프로그램에서 형식이 지정된 방식으로 다시 표시합니다.

주의해야 할 일반적인 문제:

  • 프로그램이 이름 입력을 건너뛰는 경우 입력 버퍼에 줄 바꿈 문자가 남아 있기 때문일 수 있습니다. 이를 수정하려면 getline(cin, name); 앞에 cin.ignore();를 추가할 수 있습니다.
  • 나이와 키에 유효한 숫자를 입력해야 합니다. 숫자가 아닌 값을 입력하면 예기치 않은 동작이 발생할 수 있습니다.

이 프로그램은 공백이 있는 문자열을 포함하여 다양한 유형의 입력을 처리하고 가독성을 높이기 위해 출력을 형식화하는 방법을 보여줍니다. 이러한 기술은 사용자 친화적이고 대화형 C++ 프로그램을 만드는 데 필수적입니다.

요약

이 랩에서는 WebIDE 환경을 사용하여 C++ 프로그래밍의 기본 개념에 대한 실질적인 경험을 얻었습니다. 다음을 배웠습니다.

  1. WebIDE 에서 기본 C++ 프로그램을 만들고, 컴파일하고, 실행하는 방법.
  2. C++ 에서 변수와 다양한 데이터 유형의 사용.
  3. if 문 및 루프와 같은 제어 구조를 구현하는 방법.
  4. 코드를 구성하고 재사용하기 위한 함수의 생성 및 사용.
  5. 출력 형식 지정을 포함한 기본 입력 및 출력 연산.

이러한 개념은 C++ 프로그래밍의 기초를 형성하며, 더 고급 주제로 나아갈 때 필수적입니다. 기억하세요, 프로그래밍에서는 연습이 중요합니다. 학습을 강화하기 위해 이러한 프로그램을 수정하거나 새로운 프로그램을 만들어 보세요. 실험하고 실수를 두려워하지 마세요. 디버깅은 개발해야 할 중요한 기술입니다.

C++ 여정을 계속 진행하면서 객체 지향 프로그래밍, 템플릿, 표준 라이브러리 사용과 같은 언어의 더 고급 기능을 발견하게 될 것입니다. 계속 탐구하고 즐거운 코딩 되세요!

C++ 개발에 WebIDE 를 사용하는 것은 특히 초보자에게 매우 편리할 수 있습니다. 일관된 환경을 제공하고 많은 설정 문제를 제거합니다. 그러나 진행하면서 더 고급 기능과 더 빠른 컴파일 시간을 위해 Visual Studio, CLion 또는 Code::Blocks 와 같은 로컬 개발 환경 및 IDE 를 탐색할 수 있습니다.