๊ตญ๋น์ง์ D+05
- ์ฐ์ฐ, ์กฐ๊ฑด๋ฌธ -
์ฐ์ฐ
์ฐ๋ฆฌ๊ฐ ์ํ์์ ์๊ณ ์๋ ์ฐ์ฐ์ ์๋ฏธ๋ ์ง๋ฌธ์ ๋ํ ๋ต์ ๊ตฌํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ณ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ปดํจํฐ์์์ ์ฐ์ฐ์ ๋ฌด์์ ์๋ฏธํ ๊น?
์ปดํจํฐ์์ ์ฐ์ฐ์ ์ปดํจํฐ ๋ช ๋ น์ด ๋์๋ฐฉ์์ด๋ผ๊ณ ์ค๋ช ํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๋ช ๋ น๊ณผ ์ฒ๋ฆฌํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋์ง์ด ๋ด๋๊ฒ์ ์๋ฏธํ๋ค.
์ปดํจํฐ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ผ๋ ๋ช ๋ น์ด ์ฃผ์ด์ก์๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๊ฒ ๋๋์ง ์์๋ณด์.
๋ช ๋ น Instruction์ Opcode์ Operand ๋ํํธ๋ก ๋๋์ด์ ธ ์๋ค.
Opcode๋ Operation code๋ก ๋ช ๋ น์ด ์ค์ ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง์ ๋ํ ๋ช ๋ น์ฝ๋๋ฅผ ๋ํ๋ด๋ฉฐ, Operand๋ ํผ์ฐ์ฐ์๋ก Opcode๊ฐ ์ฐ์ฐํ ๋์๋ค์ ๋ํ๋ธ๋ค.
์ด๋์ Operand๋ 1๊ฐ๊ฐ ๋ ์๋ ์๊ณ ์ต๋ 4๊ฐ๊น์ง๋ ๋ค์ด๊ฐ ์ ์๋ค.
์๋ฅผ๋ค์ด์ ์ค๋ช ์ ํด๋ณด์๋ฉด ์ฌ๊ธฐ ํด๋น์์ ๋ณ์ a์ ๋ด๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
a์์ ๊ฐ์ ๊ณผ์ ์ ์ค๋ช ํด๋ณด์๋ฉด, ์ฐ๋ฆฌ๋ Instruction์์ Opcode์์๋ ๋ํ๋ค๋ ๋ช ๋ น์ฝ๋๋ฅผ ๋ฃ์ด์ฃผ๊ณ ๋จผ์ 4์ 5๋ผ๋ ๋ฐ์ดํฐ๋ฅผ Operand์์ ๋ฃ์ด์ CPU์๊ฒ๋๊ฒจ์ฃผ๊ฒ ๋๋ค.
๊ทธ๋ ๊ฒ ๋๋ฉด CPU๋ ๋ฐ์ดํฐ๊ฐ์ ๊ธฐ์ตํ๊ธฐ ์ํด ๋ ์ง์คํฐ์์ ๋ฃ์ด์ฃผ๊ณ OP-code๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ALU(์ฐ์ฐ์ฅ์น)์์ ๋ฐ์ดํฐ ๊ฐ์ ๋ํ๋ ๋ช ๋ น์ ํตํด์ 9๋ผ๋ ๊ฒฐ๊ณผ๊ฐ์ ๋ค์ ๋ ์งํฐ ์์ ๋ด์์ฃผ๊ฒ๋๋ค.
๊ทธ ์ดํ์ intํ์ธ(4byte) a๋ฅผ ๋ฐ์ดํฐํ์ ์ ๋ง๊ฒ ํฌ๊ธฐ๋ฅผ ๋ง๋ค์ด ์ค ๋ค์ 9๋ผ๋ ๋ฐ์ดํฐ๊ฐ์ ๋ฃ์ด์ฃผ๊ฒ ๋๋ค.
์ด๋ ๊ฒ ๋๋๊ฒ์ด ์๋๋ผ ๊ธฐ์กด a๊ฐ์ 10์ ๋ํด์ฃผ๋ ๊ณผ์ ์ ์ถ๊ฐ๋ก ํด์ค์ผ ํ๋๋ฐ ์ด๋ ์ฐ๋ฆฌ๋ ๋ ์ง์คํฐ ์์ ์ด๋ฏธ a์ ๊ฐ 9๋ผ๋ ๊ฐ์ ๊ฐ์ง๊ณ ์๊ธฐ์ 10๋ง ๋ช ๋ น์ ํตํด ๋ ์ง์คํฐ์ ๋ฃ์ด์ค ๋ค์์ ๋ค์ ์ฐ์ฐ์ฅ์น๋ฅผ ํตํด ์ป์ด๋ธ ๊ฐ์ ๋ ์ง์คํฐ์ ๊ฐ์ ๋ฃ์ ํ ๋ฒ์ค๋ฅผ ํ๊ณ ๋ ๋ค์์ ๋ฉ๋ชจ๋ฆฌ์์ ์๋ a๋ฅผ ์ฐพ์ ๊ฐ์ ๋ค์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ ๊ฒ์ด๋ค.
์ฐ์ฐ์ ์ข ๋ฅ
์ฐ์ฐ์ ์ข ๋ฅ๋ ๋ ๋ค์ํ ๊ฒ๋ค์ด ์๊ฒ ์ง๋ง ์ฐ๋ฆฌ๊ฐ ๋น์ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋๋จธ์ง๋ ๊ฒ์์ ํตํด์ ์ฐจ์ฐจ ์์๊ฐ๋ณด๋๋ก ํ์.
์ฐ์ฐ์ ์ฐ์ ์์
๊ฐ์ฌ๋๊ป์ ์ฐ์ฐ์์ ์ฐ์ ์์๋ฅผ ๊ณ ๋ คํด์ผ ์ดํด๋๋ ์ฝ๋๋ฅผ ํผํด์ ๊ดํธ๋ฅผ ํตํด ์ฐ์ ์์๋ฅผ ์ค์ ํด ๊ฐ๋ ์ฑ(readability)์ ๋์ด๋ ๊ฒ์ด ์ฐ์ฐ์ ์ฐ์ ์์๋ฅผ ๋ง๋๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ค์ํ๋ค๊ณ ๋ง์ํ์ จ๊ธฐ์ ์ฐ์ฐ์ ์ฐ์ ์์์ ๋ํ ๋ด์ฉ์ ํจ์คํ๋ค.
์กฐ๊ฑด๋ฌธ
์ฐ๋ฆฌ๊ฐ ์์๋ณธ ์กฐ๊ฑด๋ฌธ์ if๋ฌธ๊ณผ switch๋ฌธ์ด ์๋ค.
์ํฉ์ ์๊ด์์ด ์กฐ๊ฑด๋ฌธ์ด ํ์ํ๋ฉด ์ด๋ค๊ฒ์ ์ฐ๋ ์๊ด์ ์์ง๋ง if๋ฌธ ๊ฐ์ ๊ฒฝ์ฐ์๋ ํน์ ๋ฒ์๋ฅผ ํํํด์ผํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ฉฐ, switch๋ฌธ์ ํน์ ๊ฐ์ ํํํด์ผํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ด์์ด๋ฉด ์ด๋ฌํ ์กฐ๊ฑด์ ๋ฐ๋ผ์ ์ฌ์ฉํด ์ฃผ๋ ๊ฒ์ด ์ข ๋ ํธํ ๊ฒ์ด๋ค.
• ์กฐ๊ฑด๋ฌธ - if๋ฌธ
// ์กฐ๊ฑด๋ฌธ - if๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
//#1. if
// ์กฐ๊ฑด์์ ํด๋น๋๋ค๋ฉด ์คํ๋ฌธ์ ์คํ์ํค๊ณ ๋์
if(์กฐ๊ฑด์) {
์คํ๋ฌธ;
์คํ๋ฌธ;
...
}
//#2. if-else
// ์กฐ๊ฑด์์ ํด๋น๋๋ค๋ฉด ์คํ๋ฌธ1์ ์คํ์ํค๊ณ ,
// ๊ทธ๋ ์ง ์์ผ๋ฉด ์คํ๋ฌธ2๋ฅผ ์คํ์ํค๊ณ ๋์
if(์กฐ๊ฑด์) {
์คํ๋ฌธ1;
}
else {
์คํ๋ฌธ2;
}
//#3. if-else if - else
// ์กฐ๊ฑด์์ ํด๋น๋๋ค๋ฉด ์คํ๋ฌธ1์ ์คํ์ํค๊ณ ,
// ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์ ์กฐ๊ฑด์์ ํด๋นํ๋ ๊ณณ์ ์ฐพ์ ์คํ๋ฌธ์ ์คํ์ํค๊ณ ,
// ๊ทธ์ด๋์๋ ๋ง์กฑํ์ง ์๋๋ค๋ฉด else๋ฌธ์ ์๋ ์คํ๋ฌธ์ ์คํ์ํค๊ณ ๋์
if(์กฐ๊ฑด์) {
์คํ๋ฌธ1;
}
else if(์กฐ๊ฑด์1) {
์คํ๋ฌธ;
}
else if(์กฐ๊ฑด์2) {
...
}
else {
์คํ๋ฌธ;
}
.
์กฐ๊ฑด๋ฌธ์ if, else, else if ๊ฐ ์๋๋ฐ ์ด๋์ else if์ else๋ ํ์์์ ๊ฒฝ์ฐ ์๋ตํ ์ ์์ผ๋ฉฐ, else if๊ฐ์ ๊ฒฝ์ฐ๋ ์กฐ๊ฑด์ ๋ง๊ฒ ์ฌ๋ฌ๊ฐ ์ฌ์ฉํด๋ ๋๋ค.
• ์กฐ๊ฑด๋ฌธ - switch ๋ฌธ
// ์กฐ๊ฑด๋ฌธ - switch๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
//#1. case๋ณ๋ก break๋ฌธ์ ์ฌ์ฉํ๋ค.
// ๋ณ์๊ฐ์ด ๊ฐ1์ด๋ผ๋ฉด ์คํ๋ฌธ1๋๋ฆฌ๊ณ break๋ง๋๋ฉด ์กฐ๊ฑด๋ฌธ์์๋์
// ๋ณ์๊ฐ์ด ์ด๋์๋ ์์ผ๋ฉด default๋ฌธ์ ์๋ ์คํ๋ฌธ ๋๋ฆฌ๊ณ break๋ง๋๋ฉด ์กฐ๊ฑด๋ฌธ๋์
switch(๋ณ์){
case ๊ฐ1:
์คํ๋ฌธ1;
break;
case ๊ฐ2:
์คํ๋ฌธ2;
break;
default:
์คํ๋ฌธ3;
break;
}
//#2. case๋ฅผ ๋ฌถ์ ๋ค์ break๋ฌธ์ ์ฌ์ฉํ๋ค.
// ๋ณ์๊ฐ์ด ๊ฐ1์ด๊ฑฐ๋ ๊ฐ2์ด๋ฉด ์คํ๋ฌธ1๋๋ฆฌ๊ณ break๋ง๋๋ฉด ์กฐ๊ฑด๋ฌธ๋์
// ๋ณ์๊ฐ์ด ์ด๋์๋ ์์ผ๋ฉด default๋ฌธ์ ์๋ ์คํ๋ฌธ ๋๋ฆฌ๊ณ break๋ง๋๋ฉด ์กฐ๊ฑด๋ฌธ๋์
switch(๋ณ์){
case ๊ฐ1:
case ๊ฐ2:
์คํ๋ฌธ1;
break;
case ๊ฐ3:
์คํ๋ฌธ2;
break;
default:
์คํ๋ฌธ4;
break;
}
switch๋ฌธ์์ ์ค์ํ๊ฑด ๊ฐ case๋ง๋ค ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ ๊ฒฝ์ฐ ๊ฐ ์คํ๋ฌธ์ ์์ฑํ๊ณ ๋ฐ๋ก break๋ฅผ ์ ๋ ฅํด์ฃผ์ด์ผ ํ๋ค๋ ๊ฒ์ด๊ณ , ๋ง์ฝ ์ฌ๋ฌ๊ฐ์ case๊ฐ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ธฐ๋ฅผ ์ํ๋ค๋ฉด case๋ฅผ ๋ฌถ์ด์ ๊ฐ์ ์คํ๋ฌธ์ด ๋์ค๊ฒ ์ค์ ํ๊ณ ๊ทธ๋ค์์ break๋ฅผ ๊ฑธ์ด์ค์ผ ํ๋ค.
์ฝ๋๋ฅผ ์ ์์ฑํ๋ ๋ฐฉ๋ฒ
โ ์์์ ์ผ๋ก ๊ตฌํํ ๊ฒ
→ ์ ๋ฌด์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋๋ง์ ์ ๋ฐํ ์ฝ๋๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ค์์ ์ฝ๋๋ฅผ ํ์ธํด์ผํ๋ ์ฌ๋์๊ฒ๋ ๋ฌธ์ ๊ฐ ๋ ์ ์์ผ๋ ๋์ ์๋ฃจ์ ์ด ๋๊ตฐ๊ฐ์๊ฒ ํ๋ผ๋ธ๋ผ์ด ๋ ์ ์๋ค๋ ์ ์ ๋ช ์ฌํ์.
โก ๋ฌธ์ ์ ์ ์๋์ด์๋ ๊ฐ์ ์์๋ก ๋ณ๊ฒฝํ์ง ๋ง๊ฒ
→ ์๋ฅผ๋ค์ด ๋ง์ฝ 20์ธ๋ถํฐ 30์ธ๊น์ง๋ผ๊ณ ํ๋ ํํ์ 20์ธ ์ด์ 30์ธ ์ดํ๊ฐ ์๋๋ผ 20์ธ ์ด์ 31์ธ๋ฏธ๋ง์ด๋ผ๊ณ ํํํ์๋ ํ๋ฆฐ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง๋ ์๊ฒ ์ง๋ง ๋ค๋ฅธ์ฌ๋์ด ๋์ ์ฝ๋๋ฅผ ๋ณด์์๋ ๊ฐ๋ ์ฑ์ด ์ข์ง ์์ ๋ฟ๋๋ฌ ์ ๋ขฐ์ฑ์ ์์ด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ ์๋ ๋ฌธ์ ๋ด์์ ๊ฐ์ ํ์ฉํ๋๋ก ํ์.
โข ์์ง์ ์ ์ฌ์ฉํ์
→ ์กฐ๊ฑด๋ฌผ์ ํํํ ๋ ์ฝ๋๋ก ๋ฐ๋ก ์์ฑํ๊ธฐ ์ ์ ์์ง์ ์ผ๋ก ์กฐ๊ฑด์ ํํํด๋ดค์๋ ๋จผ์ ๋์ ๋ ผ๋ฆฌ์ ๋ชจ์์ด ์๋์ง์ ๋ํด ์ ์ ์์ผ๋ฉฐ, ์ ์๋ ๋ฌธ์ ์ ๋ํ ๋ ผ๋ฆฌ์ ์ธ ๋ชจ์์ด ์๋์ง ์๋์ง์ ๋ํด์๋ ํ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ผญ ์์ง์ ์ ๊ทธ๋ฆฌ๋๋ก ํ์.
'์๋ > ๊ตญ๋น์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+06] ์กฐ๊ฑด๋ฌธ & ๋ฐ๋ณต๋ฌธ ์์ (0) | 2022.09.27 |
---|---|
[D+06] ๋ณต์ต ๋ฐ ๋ฐ๋ณต๋ฌธ (0) | 2022.09.26 |
[D+04] JVM๊ณผ JAVA์ ๊ตฌ์ฑ์์ (0) | 2022.09.22 |
[D+03] ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด (์ปดํ์ผ vs ์ธํฐํ๋ฆฟ) (0) | 2022.09.22 |
[D+03] Flow Chart ๋ฐ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ (0) | 2022.09.21 |
๋๊ธ