[C++ 기본문법] 3. 삼항연산자(ternary operator)부터 반복문(while, for)까지

2023. 5. 2. 12:45· C++
목차
  1. < 12. Ternary operator >
  2. < 13. Logical operator >
  3. < 14. Useful String Methods in C++ >
  4. < 15. While loops>
  5. < 16. Do-While loops >
  6. < 17. For loops >
  7. < 18. Break & Continue >
  8. < 19. Nested loops > 
반응형

230501
230501 TIL

 

※ 본 포스팅은 유튜브 C++ Full Course 강의를 기반으로 제가 직접 정리한 C++ 기본 문법에 대한 글입니다.


서론을 잠깐 말하자면, C++에 대해 배운 것을 까먹지 않기 위해 블로그에 정리하는 것입니다. 기본적으로 다른 프로그래밍 언어를 다룬 적이 있기 때문에 강의 영상을 보고 제가 제 마음대로 빼거나 추가하면서 정리할 예정입니다. 최대한 틀린 부분이 있지 않게 적겠지만 혹시 잘못된 부분이 있으면 알려주세요!

 

거의 한 달 만에 글을 쓰네요.. 정처기 실기 때문에 블로그 할 시간이 없었어요ㅠㅠ


 

< 12. Ternary operator >

Ternary operation = replacement to an if/else statement

condition ? expression1 : expression2;
// condition이 true 이면 expression1을 false면 expression2를 실행

Ternary operation은 한국어로는 '삼항연산자'로 피연산자를 세 개나 가지는 조건 연산자이다.

위 코드가 기본 형식이다. 

int main()
{
int grade = 50;
grade >= 60 ? std::cout << "You pass!" : std::cout << "You fail!";
int number = 8;
number % 2 == 1 ? std::cout << "ODD" : std::cout << "EVEN";
bool hungry = true;
// hungry ? std::cout << "You are hungry" : std::cout << "You are FULL";
std::cout << (hungry ? "You are hungry" : "You are FULL"); //위와 같은 문장 다른 방식
return 0;
}

삼항연산자의 예시들이다. 조건?식1:식2 형식으로 작성할 수 있고, std::cout 뒤에 위 코드와 같이 삼항연산자를 이용한 식을 적을 수도 있다.

 

기존 if문보다 더욱 간결하게 표현할 수 있다 (다만 그만큼 제약적인 부분은 존재)

 

< 13. Logical operator >

int main()
{
int temp;
bool sunny = true;
std::cout << "Enter the temperature: ";
std::cin >> temp;
if(temp <= 0 || temp >= 30){
std::cout << "The temperature is bad!\n";
}
else{
std::cout << "The temperature is good!\n";
}
if(!sunny){
std::cout << "It is cloudy outside!";
}
else{
std::cout << "It is sunny outside!";
}
return 0;
}

논리연산자는 대표적으로 세 가지가 있다.

&& = 두 조건 모두 true일 때 결과도 true (and)

||  = 두 조건 중 하나라도 true이면 결과도 true (or)

!   = 해당 피연산자의 logical state를 반대로 바꿈 (not)

 

위 코드를 통해 예시를 확인할 수 있다. 

(temp <= 0 || temp >= 30)은 !(temp > 0 && temp < 30)으로 변경할 수 있다.

조건문 속 다양한 조건들을 디테일하게 설정할 때 자주 사용할 수 있다.

 

< 14. Useful String Methods in C++ >

#include <iostream>
int main()
{
std::string name;
std::cout << "Enter your name: ";
std::getline(std::cin, name);
// 1. length() method
if(name.length() > 12){
std::cout << "Your name can't be over 12 characters.\n";
}
else{
std::cout << "Welcome" << name << '\n';
}
// 2. empty() method
if(name.empty()){
std::cout << "You didn't enter your name\n";
}
else{
std::cout << "HELLO " << name << '\n';
}

C++ 에는 문자열을 다룰 때 다양한 method들을 이용할 수 있다.

위에서 length( ) method 는 해당 문자열의 글자수를 반환해 주는 메서드이다. 

 

empty( ) method 는 해당 문자열이 비어있는지 아닌지를 확인해 준다. boolean형식으로 결과를 반환한다.

 

// 3. clear() method
name.clear();
std::cout << "Hi" << name;
// 4. append() method
name.append("@gmail.com");
std::cout << "Your username is now " << name << '\n';
// 5. at() method
std::cout << name.at(0);

clear( ) method는 문자열을 말 그대로 clear 하게 만들어 준다. 그렇기에 실제로 clear( )을 쓴 후 empty( )를 사용해 보면 true값이 나온다. 

 

append( ) method는 괄호 안의 스트링을 현재 스트링에 추가하는 것이다. 예를 들면 name이 chaewon이라면 위의 코드를 돌렸을 때 chaewon@gmail.com이라는 결과가 나온다.

 

at( ) method는 괄호 안에 인덱스를 넣어서 해당 포지션의 character가 무엇인지 알려준다. 예를 들어 위의 name예시에서 name.at(2)이면 3번째 글자인 a를 반환한다. 코드와 같이 0번이라면 c가 출력된다.

 

// 6. insert( ) method
name.insert(0, "@");
std::cout << name;
// 7. find() method
std::cout << name.find(' ');
// 8. erase() method
name.erase(0, 8);
std::cout << name;

insert( ) method는 두 개의 argument가 필요하다. 인덱스랑 그 인덱스에 삽입할 문자열이 필요로 하다. 위의 코드와 같은 경우 0번 자리에 @를 넣는 것으로 원래 name이 chaewon이었다면 @chawon이 된다. 여기서 주의할 점은 insert 한다고 해서 0번 글자가 사라지는 게 아니라 뒤로 밀린다는 점을 유의해야 한다.

 

find( ) method는 문자열 내에서 괄호 안의 문자의 포지션을 알려준다. 위 코드는 문자열 내에 공백을 찾는 것이다. 반환되는 값은 인덱스 번호이다.

 

erase( ) method는 두 개의 argument가 필요하다. 시작 인덱스와 끝 인덱스가 필요하다. (여기서 끝 인덱스는 실제로 erase 대상으로 포함되지 않는다.) 예를 들어 name.erase(0,3) 일 경우, name 이 chaewon이라고 했을 때 결과값은 ewon이 된다.

 

더 알고 싶은 문자열 관련 methods가 있다면, https://cplusplus.com/reference/string/string/ 를 참고하면 다양한 methods를 확인할 수 있다.

 

< 15. While loops>

#include <iostream>
int main()
{
std::string name;
while(name.empty()){
std::cout << "Enter your name : ";
std::getline(std::cin, name);
}
std::cout << "Hello " << name << '\n';
return 0;
}

While 반복문은 괄호 안의 조건이 true 상태라면, {} 블록 코드를 반복 실행한다.

 

코드 예시를 보면 name이라는 변수를 선언했으나 할당하지 않은 채로 while문 조건으로 들어갔기 때문에 true상태가 되어 {} 코드를 실행하게 된다. 그리고 {}코드 내에서 name을 적을 경우, 더 이상 empty상태가 아니기에 while문을 빠져나올 수 있다. 반대로 계속 이름을 비어있는 상태로 두면 while문의 {}블록을 계속해서 반복 실행하게 된다.

 

< 16. Do-While loops >

int main()
{
int number;
do{
std::cout << "Enter a positive #: ";
std::cin >> number;
}while(number < 0);
std::cout << "The # is: " << number;
return 0;
}

do-while 반복문은 while문과 다르게 조건의 true/false 상관없이 {}블록 코드를 무조건 한번 실행한 후 이후 반복을 while조건으로 판단한다.

 

위 코드 또한 do 블록 코드를 한번 무조건 실행하고 number가 음수인 경우에만 다시 반복하고 음수가 아닌 경우는 반복문을 빠져나온다. 

 

< 17. For loops >

#include <iostream>
int main()
{
for(int i = 10; i >=0; i-=2){
std::cout << i << '\n';
}
std::cout << "HAPPY NEW YEAR!!\n";
return 0;
}
/* 결과
10
8
6
4
2
0
HAPPY NEW YEAR
*/

for 문은 조건에 맞게 반복하는 반복문이다. 위 코드를 보면 우선 i 가 10이고 i >= 0 이 true일 때까지 반복한다는 뜻이다. 세 번째 조건인 i-=2 는 한 번 돌때마다 i = i-2를 한다는 뜻이다.그렇게 i가 0보다 작아지면 반복문을 빠져나온다.

즉, 해당 코드에서는 i가 10 8 6 4 2 0 까지 결과로 출력하고 "HAPPY NEW YEAR"이 출력된다.

 

< 18. Break & Continue >

int main()
{
for(int i = 1; i <= 20; i++){
if(i==13){
break;
}
std::cout << i << '\n';
}
return 0;
}
/* 결과
1
2
3
4
.
.
.
11
12
*/

break는 해당 반복문을 빠져나오는 명령어이다. 그렇기에 1부터 12까지만 출력되고 13은 출력명령어 앞에 break이 있기에 아예 반복문을 빠져나오면서 끝이난다.

 

int main()
{
for(int i = 1; i <= 20; i++){
if(i==13){
continue;
}
std::cout << i << '\n';
}
return 0;
}
/* 결과
1
2
.
.
10
11
12
14
15
.
.
19
20
*/

continue는 해당하는 반복을 한번 건너뛰는 것이다. 그렇기에 1부터 12까지 출력 후, 13일때 한번만 건너뛰고 다시 14부터 20까지 출력한다

 

< 19. Nested loops > 

int main()
{
for(int i = 1; i <= 3; i++){
for(int j = 1; j <= 10; j++){
std::cout << j << ' ';
}
std::cout << '\n';
}
return 0;
}
/* 결과
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
*/

말 그대로 중첩된 반복문이다. i가 1일때 j는 1~10까지 반복한 후 다시 i가 2일때 하는 식으로 돌아간다. 

위의 코드와 해당 결과를 확인하면 이해하기 쉽다.


 

강의는 Bro Code라는 유튜버의 총 6시간 분량의 강의입니다. 영상에서 나눠져 있는 챕터 제목을 기준으로 작성할 예정입니다. 다만 영어강의라는 점이 좀 걸리는데..한국어 강의를 찾다가 컴팩트 하면서 제가 지루하지 않고 잘 배울 수 있는 영상을 못 찾아서 영어강의를 듣게 되었습니다. 혹시 이 블로그를 보시고 들을 생각을 가진 분이 계시다면 영어자막도 있고 어색하지만 자동번역되는 한글자막도 있으니 너무 겁먹지 마시고 들어보길 바랍니다:)

 

해당 강의 영상은 아래에 걸어두겠습니다. 혹시 틀린 부분이나 추가해주고 싶은 부분이 있으면 알려주세요.

 

<이전글>

2023.03.26 - [TIL/C++] - [C++ 기본문법] #2 산술 연산자(arithmetic operator)부터 조건문(if, switch)까지

2023.03.21 - [TIL/C++] - [C++ 기본문법] #1 HelloWorld부터 Typedef까지

 

 

 

 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)
  1. < 12. Ternary operator >
  2. < 13. Logical operator >
  3. < 14. Useful String Methods in C++ >
  4. < 15. While loops>
  5. < 16. Do-While loops >
  6. < 17. For loops >
  7. < 18. Break & Continue >
  8. < 19. Nested loops > 
'C++' 카테고리의 다른 글
  • [C++ 기본문법] 4. 함수(function)부터 변수범위(variable scope)까지
  • [C++ 기본문법] 2. 산술 연산자(arithmetic operator)부터 조건문(if, switch)까지
  • [C++ 기본문법] 1. HelloWorld부터 Typedef까지
chae_on
chae_on
iOS 주니어 개발자 블로그
chae_on's devlogiOS 주니어 개발자 블로그
chae_on
chae_on's devlog
chae_on
전체
오늘
어제
  • 분류 전체보기 (23)
    • iOS (3)
    • Swift (6)
    • C++ (4)
    • Algorithm (2)
    • Others (8)
      • Daily Life (1)
      • 자격증 (2)
      • SeSAC (5)

블로그 메뉴

  • 홈
  • 태그

인기 글

최근 글

반응형

태그

  • ios
  • SeSAC
  • 정처기
  • 정보처리기사
  • c++
  • til
  • 자격증
  • cpp
  • 회고
  • Swift
hELLO · Designed By 정상우.v4.2.0
chae_on
[C++ 기본문법] 3. 삼항연산자(ternary operator)부터 반복문(while, for)까지
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.