โป ๋ณธ ํฌ์คํ ์ ์ ํ๋ธ C++ Full Course ๊ฐ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ๊ฐ ์ง์ ์ ๋ฆฌํ C++ ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ๋ํ ๊ธ์ ๋๋ค.
์๋ก ์ ์ ๊น ๋งํ์๋ฉด, C++์ ๋ํด ๋ฐฐ์ด ๊ฒ์ ๊น๋จน์ง ์๊ธฐ ์ํด ๋ธ๋ก๊ทธ์ ์ ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ค๋ฃฌ ์ ์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์์์ ๋ณด๊ณ ์ ๊ฐ ์ ๋ง์๋๋ก ๋นผ๊ฑฐ๋ ์ถ๊ฐํ๋ฉด์ ์ ๋ฆฌํ ์์ ์ ๋๋ค. ์ต๋ํ ํ๋ฆฐ ๋ถ๋ถ์ด ์์ง ์๊ฒ ์ ๊ฒ ์ง๋ง ํน์ ์๋ชป๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์!
< 6. Arithmetic operators >
#include <iostream>
int main() {
int students = 20;
students = students + 1;
students += 1;
students++;
students = students - 1;
students -= 1;
students--;
students = students * 2;
students *= 2;
students = students / 2;
students /= 2;
students /= 3;
//์ด ๊ฒฝ์ฐ students ๊ฐ int ์ด๊ธฐ ๋๋ฌธ์ 6๋ผ๋ ๊ฐ์ด ๋์ด ๋ง์ฝ double ๋ก ๋ฐ๊พธ๋ฉด ์์์ ๊น์ง ๋์ด
int remainder = students % 3;
// modulus operator(๋๋จธ์ง ์ฐ์ฐ์)
std::cout << remainder;
return 0;
}
Arithmetic operators = return the result of a specific arithmetic operation
์ฝ๊ฒ ๋งํด์ +, -, *, / ๊ฐ์ ๊ฒ๋ค์ด๋ฉฐ, ์ฐ์ ์ฐ์ฐ์๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
1๋ง ๋ํ๊ฑฐ๋ ๋บ ๋๋ ++ ๋๋ -- ๋ก ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ค.
๋๋์ ์ ๊ฒฝ์ฐ int์ด๋ฉด ์์์ ์ด ์ ์ญ๋๊ณ double๋ก ๋ฐ๊ฟ์ผ ์์์ ๊น์ง ๋์ฌ ์ ์๋ค.
% ๋ modulus operator๋ก ๋๋จธ์ง ์ฐ์ฐ์์ด๋ค. ๋ง ๊ทธ๋๋ก ๋๋๊ณ ๋จ์ ๋๋จธ์ง ๊ฐ์ ๊ฒฐ๊ณผ๋ก ๋ณด์ฌ์ค๋ค.
< 7. Type conversion>
#include<iostream>
int main() {
double x = (int) 3.14;
std::cout << x;
std::cout << (char) 100;
//explicit cast -> ์์คํค ์ฝ๋๋ก d๊ฐ ๋์ด
int correct = 8;
int questions = 10;
double score = correct/(double)questions * 100;
//explicitly cast ํ์ง ์์ผ๋ฉด truncate๋๊ฐ์ง๊ณ ์ถ๋ ฅ๊ฐ์ด 0%๊ฐ ๋จ -> double ๋ก ๋ณํ์ํค๊ธฐ
std::cout << score << "%";
return 0;
}
Type conversion์ด๋ ๊ฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ ํ์ ์ผ๋ก ๋ณํ์ํค๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ implicit type conversion๊ณผ explicit type conversion์ผ๋ก ๋๋ ์ ์๋๋ฐ,
implicit์ ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ๋ณํํด ์ฃผ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๊ณ ,
explicit์ ๊ฐ ์์ ์ง์ ๋ช ์ํด์ค์ผ๋ก์จ ๋ณํ์ํค๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋ค.
์ ์ฝ๋์ ๋์์๋ ์์๋ฅผ ๋ณด์๋ฉด,
x๋ double๋ก ์ ์ธ๋์์ง๋ง, value์ธ 3.14 ์์ (int)๋ฅผ ๋ถ์ฌ ๋ช ์์ ์ผ๋ก ๋ณํ์ํค๋ฉด,
x๋ฅผ ์ถ๋ ฅํ์ ๋ ์์์ ์ด ์ ์ญ๋ 3์ด๋ผ๋ Integer๊ฐ ๋์จ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก 100์ด๋ผ๋ ์ซ์ ์์ (char)์ด๋ผ๋ ๋ณํ์ ๋ช ์ํ๋ฉด, ์์คํค์ฝ๋์์ 100์ ํด๋นํ๋ d๊ฐ ๋์จ๋ค.
๋๋์ ์ ํ ๋ ์ฃผ์ํด์ผํ๋๋ฐ, 8๊ณผ 10์ ๋ ๋ค ์ ์๋ก ์ ์ธํ๊ธฐ์ ํ์ ์ ๋ณํ์์ผ์ฃผ์ง ์์ผ๋ฉด,
0.8 * 100 ์ด ์๋ 0 * 100 ์ด ๋์ด 0์ด๋ผ๋ ๊ฒฐ๊ณผ๊ฐ์ด ๋์จ๋ค.
์ด๋ ๋ถ๋ชจ๊ฐ ์์ (double)์ด๋ผ๊ณ ํ์ ์ ๋ณํ์์ผ์ฃผ๋ฉด ์ ๋๋ก ๋ ๊ฐ์ ๋์ถํ ์ ์๋ค.
< 8. User input >
#include <iostream>
//cout << (insertion operator)
//cin >> (extraction operator)
int main()
{
std::string name;
int age;
std::cout << "What's your age? : ";
std::cin >> age;
std::cout << "What's your full name?: ";
// std::cin >> name;
std::getline(std::cin >> std::ws, name);
std::cout << "Hello " << name << '\n';
std::cout << "You are " << age << " years old" << '\n';
return 0;
}
๊ธฐ๋ณธ์ ์ผ๋ก ์ถ๋ ฅ์ ํ ๋ std::cout์ ์ฐ๋ ๊ฒ์ฒ๋ผ ์ ๋ ฅ์ ํ ๋๋ std::cin์ ์ฌ์ฉํ๋ค.
ํ์ดํ ๋ฐฉํฅ๋ ๋ฐ๋๊ธฐ ๋๋ฌธ์ ์ฃผ์๊ฐ ํ์ํ๋ค.
๋ค๋ง string์ ์ ๋ ฅํ ๋ (์๋ฅผ ๋ค์ด Full Name ์ ๋ ฅํ๊ณ ์ถ์ ๋) space๊ฐ ๋ค์ด๊ฐ๋ค๋ฉด std::cin์ space๋ค์์ ์ธ์ํ์ง ๋ชปํ๋ค. ์ด๋ ์ธ ์ ์๋ ๊ฒ getline์ด๋ค.
๊ธฐ๋ณธ ๊ตฌ์กฐ๋ ์๋์ฝ๋์ ๊ฐ๋ค.
std::getline(std::cin, name);
ํ์ง๋ง ์ ์ฝ๋์ฒ๋ผ ์ด๋ฆ์ ๋จผ์ ์ ๋ ฅํ๊ณ ๋์ด๋ฅผ ์ ๋ ฅํ๋ ๊ฒ ์๋๋ผ ๋์ด-์ด๋ฆ ์์ผ๋ก ์ ๋ ฅํ๋ฉด ๋์ด๋ฅผ ์ ๋ ฅ ํ ์๋์ผ๋ก ๋น space๊ฐ ์ด๋ฆ ์ ๋ ฅ์นธ์ ๋ค์ด๊ฐ ๋ฒ๋ฆฐ๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ถ๊ฐํด์ผ ํ๋ ๊ฒ์ด std::ws ์ด๋ค.
std::getline(std::cin >> std::ws, name);
std::ws ์ญํ : eliminate any new line characters or any white spaces before any user input
์ด๋ ๊ฒ ํ๋ฉด, ์ ์์ ์ผ๋ก full name์ ์ถ๋ ฅํ ์ ์๋ค.
< 9. Useful math related functions >
#include <iostream>
#include <cmath>
int main()
{
double x =3.99;
double y =4;
double z;
z = std::max(x, y);
z = std::min(x, y);
z = pow(2, 3); // z = 2**3
z = sqrt(9); // z = 3
z = abs(-3); // z = 3 ์ ๋๊ฐ
z = round(x); // x๊ฐ 3.14์ผ ๋ z = 3 ๋ฐ์ฌ๋ฆผ
z = ceil(x); // x๊ฐ 3.14์ผ ๋ z = 4 ์ฌ๋ฆผ
z = floor(x); // x๊ฐ 3.99์ผ ๋ z = 3 ๋ด๋ฆผ
std::cout << z;
return 0;
}
cmath๋ผ๋ ํค๋ ํ์ผ์ ์ถ๊ฐํ๋ฉด ๋ ๋ค์ํ ์ํ ๊ด๋ จ ํจ์๋ค์ ์ฌ์ฉํ ์ ์๋ค.
๋ฑํ ์ถ๊ฐ๋ก ์ค๋ช ํ ๋ถ๋ถ์ ์๋ ๊ฒ ๊ฐ๋ค.
๋ ์๊ณ ์ถ์ ํจ์๊ฐ ์์ ๊ฒฝ์ฐ, http://www.cplusplus.com/reference/cmath ๋ฅผ ์ฐธ๊ณ ํ๋ฉด math function์ ๋ํด ์์ธํ ์ค๋ช ๋์ด ์๋ค.
< 10. If statements >
#include <iostream>
int main()
{
int age;
std::cout << "Enter your age : ";
std::cin >> age;
if(age >= 18 && age < 100){
std::cout << "Welcome to the site!";
} // ( )์์ด ์ฌ์ค์ด๋ฉด { } ์์ ๋ฌธ์ฅ์ ์ํํจ
else if(age < 0){
std::cout << "You haven't been born yet!";
} // if๊ฐ ๊ฑฐ์ง์ด๋ฉด ๊ทธ๋ค์ else if ํ๋จ ->์ฐธ์ด๋ฉด else if {}๋ฌธ์ฅ ์ํ /๊ฑฐ์ง์ด๋ฉด else ๋ฌธ์ฅ ์ํ
else if(age >= 100){
std::cout << "You are too old to enter this site!";
}
else{
std::cout << "You are not old enough to enter!";
} //else ๋ฌธ์ ์ถ๊ฐํ๋ฉด ( ) ์์ด ๊ฑฐ์ง์ผ ๋ ์ํ ํ ๋์์ ์ ์ ์ ์์.
return 0;
}
if ๋ฌธ์ ๊ดํธ ์์ ์กฐ๊ฑด์ด true์ด๋ฉด, {} ๋ธ๋ก ์ฝ๋๋ฅผ ์คํํ๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์คํํ์ง ์๋๋ค.
if(์กฐ๊ฑด){
code1
}
else if(์กฐ๊ฑด){
code2
}
else{
code3
}
if๋ง ์์ ์๋ ์๊ณ if, else๋ง ์์ ์๋ ์์ง๋ง ๊ตฌ์ฑ์์๋ฅผ ๋ค ์ ์๋ฉด ์์ ๊ฐ์ ์ ์๋ค.
์ฌ๊ธฐ์ else if๋ ์ฌ๋ฌ ๊ฐ๋ก ๊ตฌ์ฑํ ์ ์๋ค.
์ฃผ์ํ ์ ์ ์์์ true ์กฐ๊ฑด์ ์ถฉ์กฑํด์ code๋ฅผ ์คํํ๋ฉด ๋ค์ else if์ ์กฐ๊ฑด์ ์ถฉ์กฑํด๋ else if ์์ code๋ ์คํ๋์ง ์๋๋ค.
if(age >= 18){
std::cout << "Welcome to the site!";
} // ( )์์ด ์ฌ์ค์ด๋ฉด { } ์์ ๋ฌธ์ฅ์ ์ํํจ
else if(age >= 100){
std::cout << "You are too old to enter this site!";
}
else{
std::cout << "You are not old enough to enter!";
}
์ฒซ ๋ฒ์งธ ์ฝ๋๋ฅผ ์กฐ๊ธ ๋ณํํด์ ๊ฐ๋จํ ์์๋ฅผ ๋ง๋ค์๋ค. ๋งจ ์ฒ์ if์ ์กฐ๊ฑด๋ฌธ์ 18์ด ์ด์์ด๋ค. ๋ค์ else if๋ ์กฐ๊ฑด์ด 100์ด ์ด์์ด๋ค. ์ด๋ด ๊ฒฝ์ฐ if์กฐ๊ฑด๋ ์ฐธ์ด๊ณ else if์กฐ๊ฑด๋ ์ฐธ์ด๊ธฐ์ ์์ ์์๋ if ์กฐ๊ฑด์ ํด๋นํ๋ code๋ฅผ ์คํํ๊ฒ ๋๋ค.
์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์กฐ๊ฑด์ ์ค๋ณต์ด ์๋์ง ํ์ธํด ๋ณผ ํ์๊ฐ ์๋ค.
< 11. Switches >
#include <iostream>
int main()
{
int month;
std::cout << "Enter the month(1-12): ";
std::cin >> month;
switch(month){
case 1:
std::cout << "January";
break;
case 2:
std::cout << "February";
break;
case 3:
std::cout << "March";
break;
.
.
.
case 10:
std::cout << "October";
break;
case 11:
std::cout << "November";
break;
case 12:
std::cout << "December";
break;
default:
std::cout << "Please enter in only numbers (1-12)";
}
return 0;
}
switch๋ ์๋ง์ else if๋ฅผ ์ ์ด์ผ ํ ๋ ๋์ฒดํ ์ ์๋ ์กฐ๊ฑด๋ฌธ์ด๋ค.
์์ ๊ฐ์ด ์ซ์ 1-12๊น์ง ๋ช ์์ธ์ง๋ฅผ ์์๋ด์ผ ํ ๋ else if๋ ์ผ์ผ์ด (month==1) ์ด๋ฐ ์์ผ๋ก ์กฐ๊ฑด์ ์ ์ด์ผ ํ๋ค๋ฉด, switch๋ case๋ก ๋ ๊ฐ๊ฒฐํ๊ฒ ์ ์ ์ ์๋ค.
๋ง์ง๋ง์ default case๋ฅผ ์ ๋๋ฐ, ๋ชจ๋ case๊ฐ ์๋ ๊ฒฝ์ฐ default ์ฝ๋๋ฅผ ์คํํ๊ฒ ๋๋ค.
์ฃผ์ํ ์ ์, ๋ง์ฝ ์ซ์๊ฐ 3์ด์ด์ case 3์ ์คํํ ๋ break๋ฌธ์ ๋ชจ๋ case์ ์ ์ด์ฃผ์ง ์์ผ๋ฉด 3๋ถํฐ 12, default case๊น์ง ์ถ๋ ฅ๋๊ฒ ๋๋ค. switch case๋ฅผ ์ ์ ๋ break๋ฌธ์ ๊ผญ ๊น๋จน์ง ๋ง๊ณ ์ ์ด์ผ ํ๋ค.
๊ฐ์๋ Bro Code๋ผ๋ ์ ํ๋ฒ์ ์ด 6์๊ฐ ๋ถ๋์ ๊ฐ์์ ๋๋ค. ์์์์ ๋๋ ์ ธ ์๋ ์ฑํฐ ์ ๋ชฉ์ ๊ธฐ์ค์ผ๋ก ์์ฑํ ์์ ์ ๋๋ค. ๋ค๋ง ์์ด๊ฐ์๋ผ๋ ์ ์ด ์ข ๊ฑธ๋ฆฌ๋๋ฐ..ํ๊ตญ์ด ๊ฐ์๋ฅผ ์ฐพ๋ค๊ฐ ์ปดํฉํธ ํ๋ฉด์ ์ ๊ฐ ์ง๋ฃจํ์ง ์๊ณ ์ ๋ฐฐ์ธ ์ ์๋ ์์์ ๋ชป ์ฐพ์์ ์์ด๊ฐ์๋ฅผ ๋ฃ๊ฒ ๋์์ต๋๋ค. ํน์ ์ด ๋ธ๋ก๊ทธ๋ฅผ ๋ณด์๊ณ ๋ค์ ์๊ฐ์ ๊ฐ์ง ๋ถ์ด ๊ณ์๋ค๋ฉด ์์ด์๋ง๋ ์๊ณ ์ด์ํ์ง๋ง ์๋๋ฒ์ญ๋๋ ํ๊ธ์๋ง๋ ์์ผ๋ ๋๋ฌด ๊ฒ๋จน์ง ๋ง์๊ณ ๋ค์ด๋ณด๊ธธ ๋ฐ๋๋๋ค:)
ํด๋น ๊ฐ์ ์์์ ์๋์ ๊ฑธ์ด๋๊ฒ ์ต๋๋ค. ํน์ ํ๋ฆฐ ๋ถ๋ถ์ด๋ ์ถ๊ฐํด์ฃผ๊ณ ์ถ์ ๋ถ๋ถ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์.
<์ด์ ๊ธ>
2023.03.21 - [TIL/C++] - [C++ ๊ธฐ๋ณธ๋ฌธ๋ฒ] #1 HelloWorld๋ถํฐ Typedef๊น์ง