๐ฑ๐ ํ๋ก๊ทธ๋๋ฐ ์๋ก ๐ฑ๐
์๊ณ ๋ฆฌ์ฆ์ ์ธ ์ฌ๊ณ
ํ๋ก๊ทธ๋๋ฐ์์ ์๊ณ ๋ฆฌ์ฆ์ ๋ง์น ์๋ฆฌํ ๋ ๋ ์ํผ์ ๊ฐ์ ์ญํ ์ ํ๋ค. ์๊ณ ๋ฆฌ์ฆ ์ฌ๊ณ ๋ฅผ ํ๋ค๋ ๊ฒ์ [1] ์ปดํจํฐ๊ฐ ์ดํด ๊ฐ๋ฅํ ํํ๋ก ํํํ๊ณ , [2] ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํฌ๊ดํ๋๋ก ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ๋ค๋ ๊ฒ์ด๋ค.
๋ณธ ๋ ธ์ด๋ง ์ํคํ ์ฒ
์ปดํจํฐ๋ ๋ณธ ๋ ธ์ด๋ง ์ํคํ ์ฒ๋ฅผ ๋ฐ๋ผ์ ๋์์ธ๋๋ค. ๋ณธ ๋ ธ์ด๋ง ์ํคํ ์ฒ๋ ์กด ํฐ ๋ ธ์ด๋ง(1903~1957, ํ๊ฐ๋ฆฌ ์ถ์ ์ํ์)์ด ์ค๊ณํ ๊ฒ์ผ๋ก, Stored Program concept๋ผ๊ณ ํ๋ค. Stored Program Concept๋ ์ปดํจํฐ ๋ด๋ถ์ ๊ธฐ์ต ์ฅ์น๋ฅผ ๊ฐ์ถ๊ณ (๋ฉ๋ชจ๋ฆฌ) ๊ณ์ฐ์ ์์๋ฅผ ๋ถํธํํ์ฌ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ (CPU), ํด๋ ํ ํ์ ์คํํ๋ ๊ฒ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ก ํ๋ค. ์ด๋ ์ฒซ๋ฒ์งธ ๋จ๊ณ๋ Fetch : CPU ๋ด๋ถ๋ก ๋ช ๋ น์ด๊ฐ ์ด๋ํจ(I/O), ๋๋ฒ์งธ ๋จ๊ณ๋ Decode : ๋ช ๋ น์ด ํด์(Control Unit), ๋ง์ง๋ง ๋จ๊ณ๋ Execution : Arithmetic Logic Unit์ด๋ค.
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
์ฌ๋์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ฐํ๊ณ , ์ปดํจํฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํํ๋ค. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ํตํด ์ฌ๋์ ๋ ผ๋ฆฌ๋ฅผ ์ปดํจํฐ๊ฐ ์คํ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๋ฐ๊ฟ ์ ์๋ค. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์๋ ์์ค์ด ์๋ค. High-Level Languages, Assembly Languages, Machine Languages๋ก ๋๋๋ค.
ํ๋ก๊ทธ๋๋ฐ์ ์ ํ๋ ๋ฒ
1. ์ง์ ํ๋ค.
2. ์ฐ์ตํ๋ค.
๐ฑ๐ C ์ธ์ด ๐ฑ๐
๊ฐ์
๋ณธ ๊ฐ์์์ ๋ค๋ฃจ๋ C์ธ์ด๋ 1970๋ ๋์ ๊ฐ๋ฐ๋ ์ธ์ด๋ก Unix์์ ๊ฐ๋ฐ๋์๋ค. C๋ ์๊ณ , ์ด๋์ฑ ์์ผ๋ฉฐ, ๊ฐ๋ ฅํ ํน์ง์ ๊ฐ์ง๊ณ ์์ด ๋๋ฆฌ ์ฌ์ฉ๋๋ค. C๋ C++๊ณผ Java์ ๊ธฐ์ด๊ฐ ๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ๋ฒ์ด ๋ค์ ๋ณต์กํ๊ณ , array ๋์ ์ฒดํฌํด์ฃผ์ง ์์ผ๋ฉฐ, ๊ธฐํธ๊ฐ ์ค์์ ์ผ๋ก ์ฌ์ฉ๋๋ค๋ ๋จ์ ์ด ์๋ค.
ํน์ง
(๋ง์ง๋ง ์ฌ๋ผ์ด๋๋)
๐ฑ๐ Hello World! ๐ฑ๐
๊ธฐ๋ณธ ์คํ
file ์์ฑ > Compile > Linking > Debugging > Run
ํ๋ก๊ทธ๋จ ์ถ๋ ฅ
#include <stdio.h>
int main(void){
printf("From sea to shining C\n");
return 0;
}
์ปดํ์ผ
์์ค ํ์ผ('.c')๋ฅผ objective file('.o')๋ก ๋ฐ๊พผ๋ค. ์ด๋ objective file์ด๋, ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ํํ์ ๊ฐ์ง ํ์ผ์ ๋งํ๋ค.
๋งํน Linking
๋งํน์ Objective file์ ์คํ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ๋งํ๋ค.
(objective file) sea.o, sea.obj
(executable program) sea.out, sea.exe
์คํ
./sea๋ก ์คํ
๐ฑ๐ ์์ 1 ๐ฑ๐
#include <stdio.h>
int main(void){
int miles, yards;
float kilometers;
miles = 26;
yards = 385;
kilometers = 1.609 * (miles + yards / 1760.0);
printf("\nA marathon is %f kilometers.\n\n", kilometers);
return 0;
}
* assignment statement *
variable = expression;์ ํํ๋ก variable์ expression์ ํ ๋นํ๋ค.
* expression *
์ฐ๋ณ์ ์ค๋ ๋ด์ฉ. ์์, ๋ณ์, ์ฐ์ฐ์์ ๊ฒฐํฉํ ์/๋ณ์ ๋ฑ
* conversion rule *
7/2 == 3 // int / int = int
7.0/2 == 3.5 // double / int = double
* format *
conversion specification์ด ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค.
๐ฑ๐ ์์ 2 ๐ฑ๐
#include <stdio.h>
int main(void){
int score1, score2, score3, avg;
int num_score;
score1 = 87;score2=93;score3=100;
num_score = 3;
avg = (score1+score2+score3) / num_score;
printf("Average score: %d\n", avg);
return 0;
}
* conversion rule *
๋ง์ฝ์, score1, score2, score3, avg์ (float)score1, (float)score2, (float)score3, (float)avg๋ก ๋ฐ๊พธ๋ฉด,
๊ฒฐ๊ณผ๊ฐ ์์ ํ ๋ฌ๋ผ์ง๋ค.
๐ฑ๐ Flow of Control ์ ์ด ํ๋ฆ ๐ฑ๐
Alternative actions : ์ ํ
if ๋ฌธ
#include <stdio.h>
int main(void){
int a = 1;b=3;
if (b==3){
a=5;
}
printf("%d", a);
return 0;
}
if else
#include <stdio.h>
int main(void){
int cnt = 1;
int a, b, c;
if (cnt==0){
a = 2;b=3; c=5;
}
else{
a=-2;
b=-3;
c=-5;
}
return 0;
}
loop : ๋ฐ๋ณต
while statement
#include <stdio.h>
int main(void){
int i=1, sum = 0;
while (i<=5){
sum += i;
++i;
}
printf("sum = %d\n", sum);
return 0;
}
for statement
#include <stdio.h>
int main(void){
int i=1, sum = 0;
for (i=1;i<=5;++i)){
sum += i;
}
printf("sum = %d\n", sum);
return 0;
}
Function
'Computer Science > C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
C์ธ์ด 6๊ฐ | Arrays, Pointers, and Strings | ์ค์! (0) | 2021.12.16 |
---|---|
C์ธ์ด 4๊ฐ | Flow of Control | ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ, ์์ฐจ ๊ตฌ์กฐ (0) | 2021.12.16 |
C์ธ์ด 3๊ฐ | ๋ฐ์ดํฐ ํ์ | char, int(short, long,unsigned), float, typedef (0) | 2021.12.16 |
C์ธ์ด 2๊ฐ | ์ดํ ์์์ ์ฐ์ฐ์ Lexical Elements & Operators (0) | 2021.12.15 |
[6.27] C์ธ์ด ๋ณต์ต + ์์ต (0) | 2021.06.27 |