โป ๋ณธ ํฌ์คํ ์ ์ ํ๋ธ 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.21 - [TIL/C++] - [C++ ๊ธฐ๋ณธ๋ฌธ๋ฒ] #1 HelloWorld๋ถํฐ Typedef๊น์ง