본문 바로가기

C++ (learncpp)/C++ Basics

1.1 — Statements and the structure of a program

Chapter introduction

 

이 C++ 학습서의 첫 번째 기본 장에 오신 것을 환영합니다!

이 장에서는 모든 C++ 프로그램에 필수적인 여러 주제를 먼저 살펴보겠습니다. 다루어야 할 주제가 상당히 많기 때문에 대부분은 상당히 얕은 수준에서 다룰 것입니다. 이 장의 목표는 기본적인 C++ 프로그램이 어떻게 구성되는지 이해하는 데 도움이 되는 것입니다. 이 장이 끝나면 간단한 프로그램을 작성할 수 있습니다.

다음 장에서 우리는 이러한 주제의 대부분을 다시 방문하여 더 자세히 살펴볼 것입니다. 우리는 또한 이것들을 기반으로 하는 새로운 개념을 소개할 것입니다.

수업 시간을 관리하기 쉽게 유지하기 위해 주제를 여러 후속 수업으로 나눌 수 있습니다. 어떤 중요한 개념이 한 단원에서 다루지 않았다고 생각되면 다음 단원에서 다룰 가능성이 있습니다.

 

Statements

컴퓨터 프로그램은 컴퓨터에게 수행할 작업을 지시하는 일련의 명령입니다. 명령문은 프로그램이 일부 작업을 수행하도록 하는 명령 유형입니다.

 

명령문은 C++ 프로그램에서 가장 일반적인 유형의 명령입니다. 이는 C++ 언어에서 가장 작은 독립 계산 단위이기 때문입니다. 그런 면에서 그들은 문장이 자연어에서 하는 것과 매우 유사하게 행동합니다. 아이디어를 다른 사람에게 전달하고 싶을 때 일반적으로 문장으로 쓰거나 말합니다(무작위 단어나 음절이 아님). C++에서 프로그램이 무언가를 하도록 하려면 일반적으로 명령문을 작성합니다.

C++의 대부분(전부는 아님) 문은 세미콜론으로 끝납니다. 세미콜론으로 끝나는 줄이 보인다면 아마도 명령문일 것입니다.

C++와 같은 고급 언어에서는 단일 명령문이 여러 기계어 명령어로 컴파일될 수 있습니다.

 

고급 독자용 (For Advanced Readers)

C++에는 다양한 종류의 명령문이 있습니다.

1. 선언문 - Declaration statements
2. 점프문 - Jump statements
3. 표현문 - Expression statements
4. 복합문 - Compound statements
5. 선택문(조건부) - Selection statements (conditionals)
6. 반복문(루프) - Iteration statements (loops)
7. Try Blocks

이 튜토리얼 시리즈를 마치면 이 모든 것이 무엇인지 이해하게 될 것입니다.

 

Functions and the main function

 

C++에서 문은 일반적으로 함수라는 단위로 그룹화됩니다. 함수는 순차적으로(위에서 아래로) 실행되는 명령문의 모음입니다. 자신만의 프로그램을 작성하는 방법을 배우면 원하는 방식으로 자신만의 함수를 만들고 명령문을 혼합하고 일치시킬 수 있습니다(향후 수업에서 방법을 보여줍니다).

 

규칙 (Rule)

모든 C++ 프로그램에는 main(모두 소문자)이라는 특수 함수가 있어야 합니다. 프로그램이 실행되면 main 내부의 명령문이 순차적으로 실행됩니다.

 

프로그램은 일반적으로 main 함수 내부의 마지막 문이 실행될 때 종료(실행 완료)됩니다(프로그램이 일부 상황에서 조기에 중단되거나 나중에 일부 정리가 수행될 수 있음).

함수는 일반적으로 특정 작업을 수행하도록 작성됩니다. 예를 들어, "max"라는 이름의 함수에는 두 숫자 중 어느 것이 더 큰지 알아내는 명령문이 포함될 수 있습니다. "calculateGrade"라는 함수는 일련의 시험 점수에서 학생의 성적을 계산할 수 있습니다. 함수는 프로그램에서 가장 일반적으로 사용되는 구성 도구이기 때문에 곧 함수에 대해 더 많이 이야기할 것입니다.

 

저자의 메모 (Author’s note)

함수에 대해 논의할 때 함수 이름 끝에 한 쌍의 괄호를 추가하는 것은 상당히 일반적인 속기입니다. 예를 들어, main() 또는 doSomething()이라는 용어가 표시되는 경우 이는 각각 main 또는 doSomething이라는 함수의 축약형입니다. 이렇게 하면 매번 "함수"라는 단어를 쓰지 않고도 다른 종류의 객체(예: 변수)와 함수를 구분하는 데 도움이 됩니다.

 

Hello World 해부! (Dissecting Hello world!)

이제 명령문과 함수가 무엇인지 간단히 이해했으므로 "Hello world" 프로그램으로 돌아가서 각 행이 수행하는 작업을 더 자세히 살펴보겠습니다.

 

#include <iostream>

int main()
{
   std::cout << "Hello world!";
   return 0;
}

 

1행은 전처리기 지시문이라고 하는 특수한 유형의 행입니다. 이 전처리기 지시문은 콘솔에서/로 텍스트를 읽고 쓸 수 있게 해주는 C++ 표준 라이브러리의 일부인 iostream 라이브러리의 내용을 사용하고자 함을 나타냅니다. 5행에서 std::cout를 사용하려면 이 행이 필요합니다. 이 행을 제외하면 5행에서 컴파일 오류가 발생합니다. 그렇지 않으면 컴파일러가 std::cout가 무엇인지 알지 못하기 때문입니다.

2행은 비어 있으며 컴파일러에서 무시됩니다. 이 줄은 사람이 프로그램을 더 쉽게 읽을 수 있도록 돕기 위해서만 존재합니다(#include 전처리기 지시문과 프로그램의 후속 부분을 분리하여).

3행은 컴파일러에게 main이라는 함수를 작성(정의)할 것이라고 알려줍니다. 위에서 배운 것처럼 모든 C++ 프로그램에는 주 기능이 있어야 하며 그렇지 않으면 연결에 실패합니다.

4행과 7행은 컴파일러에게 주 함수의 일부인 행을 알려줍니다. 4행의 여는 중괄호와 7행의 닫는 중괄호 사이의 모든 것은 주 함수의 일부로 간주됩니다. 이것을 함수 본체라고 합니다.

5행은 main 함수 내의 첫 번째 명령문이며 프로그램을 실행할 때 실행할 첫 번째 명령문입니다. std::cout("문자 출력"의 약자)와 << 연산자를 사용하면 출력할 콘솔에 문자나 숫자를 보낼 수 있습니다. 이 경우 콘솔에 출력될 "Hello world!"라는 텍스트를 보냅니다. 이 명령문은 프로그램의 가시적 출력을 생성합니다.

6행은 return 문입니다. 실행 가능한 프로그램의 실행이 완료되면 프로그램은 성공적으로 실행되었는지 여부를 나타내기 위해 운영 체제에 값을 다시 보냅니다. 이 특정 반환 문은 운영 체제에 0 값을 반환합니다. 이는 "모든 것이 정상입니다!"를 의미합니다. 이것은 실행되는 프로그램의 마지막 명령문입니다.

 

우리가 작성하는 모든 프로그램은 이 일반 템플릿 또는 변형을 따릅니다.

 

저자의 메모 (Author's Note)

위 설명의 일부(또는 전체)가 혼란스럽다면 이 시점에서 예상할 수 있습니다. 이것은 단지 빠른 개요를 제공하기 위한 것이었습니다. 이어지는 수업에서는 위의 모든 주제에 대해 많은 추가 설명과 예를 살펴봅니다.

 

이 프로그램을 직접 컴파일하고 실행할 수 있으며 콘솔에 다음을 출력하는 것을 볼 수 있습니다.

 

Hello world!

 

이 프로그램을 컴파일하거나 실행하는 데 문제가 발생하면 단원 0.8 -- 몇 가지 일반적인 C++ 문제를 확인하십시오.

 

구문 및 구문 오류 (Syntax and syntax errors)

영어에서 문장은 학교에서 영어 시간에 배웠을 특정 문법 규칙에 따라 구성됩니다. 예를 들어, 일반 문장은 마침표로 끝납니다. 언어에서 문장이 구성되는 방식을 제어하는 규칙을 구문이라고 합니다. 마침표를 잊어버리고 두 문장을 함께 실행하면 영어 구문을 위반하는 것입니다.

C++에도 구문이 있습니다. 유효한 것으로 간주되기 위해 프로그램을 구성하는 방법에 대한 규칙입니다. 프로그램을 컴파일할 때 컴파일러는 프로그램이 C++ 언어의 기본 구문을 따르도록 해야 합니다. 규칙을 위반하면 프로그램을 컴파일하려고 할 때 컴파일러에서 불평하고 구문 오류가 발생합니다.

다음과 같이 "Hello world" 프로그램의 5행에서 세미콜론을 생략하면 어떻게 되는지 봅시다.

 

#include <iostream>

int main()
{
   std::cout << "Hello world!"
   return 0;
}

 

이 잘못된 형식의 프로그램을 직접 컴파일하십시오.

Visual Studio는 다음 오류를 생성합니다(컴파일러가 다른 문구로 오류 메시지를 생성할 수 있음).

 

c:\vcprojects\test1.cpp(6): error C2143: syntax error : missing ';' before 'return'

 

이것은 6행에 구문 오류가 있음을 알려줍니다. 컴파일러는 return 문 앞에 세미콜론을 기대했지만 찾지 못했습니다. 컴파일러는 구문 오류가 발생했을 때 컴파일 중인 코드 줄을 알려 주지만 실제로는 이전 줄에 누락되었을 수 있습니다. 이 경우 오류는 실제로 5행의 끝에 있습니다(컴파일러는 6행까지 문제를 발견하지 못했습니다).

구문 오류는 프로그램을 작성할 때 일반적입니다. 다행스럽게도 컴파일러가 일반적으로 바로 지적해 주기 때문에 일반적으로 쉽게 찾고 수정할 수 있습니다. 모든 구문 오류가 해결된 후에만 프로그램 컴파일이 완료됩니다.


"Hello world" 프로그램에서 문자 또는 전체 행을 삭제하여 생성되는 다양한 종류의 오류를 확인할 수 있습니다. 줄 5의 끝에서 누락된 세미콜론을 복원한 다음 줄 1, 3 또는 4를 삭제하고 어떤 일이 발생하는지 확인합니다.

 

reference : https://www.learncpp.com/cpp-tutorial/statements-and-the-structure-of-a-program/