๐Ÿ‘ฉโ€๐Ÿ’ปTIL4 C : ๋ฌธ์ž์—ด, ์กฐ๊ฑด๋ฌธ, ๋ฃจํ”„

Lilyยท2021๋…„ 5์›” 18์ผ
0

Today I Learned

๋ชฉ๋ก ๋ณด๊ธฐ
4/30
post-custom-banner

C์–ธ์–ด์˜ ๋ฌธ์ž์—ด, ์กฐ๊ฑด๋ฌธ, ๋ฃจํ”„์— ๋Œ€ํ•ด ๋ณต์Šตํ•ด๋ณด์ž.

์ง€๋‚œ ์‹œ๊ฐ„ "Hello, world"๋ฅผ printfํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ถœ๋ ฅํ•ด๋ณด์•˜๋‹ค. ์˜ค๋Š˜์€ ๋” ๋‚˜์•„๊ฐ€, ์ด๋ฆ„์„ ๋ฌป๋Š” ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์„ ๋ฐ›์•„ ์ธ์‚ฌ๋ฅผ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž! ๊ทธ๋ฆฌ๊ณ  ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฃจํ”„ ์ž‘์„ฑ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ๋‹ค.

๐Ÿ’—String (๋ฌธ์ž์—ด)

string์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ๋‹จ์–ด๋‚˜ ๊ตฌ์ ˆ, ๋ฌธ์žฅ์„ ๋ถ€๋ฅด๋Š” ๋‹จ์–ด์ด๋‹ค. ""(ํฐ๋”ฐ์˜ดํ‘œ)์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ํ•œ๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ž๋ฅผ ๋‹ค string์ด๋ผ๊ณ  ํ•œ๋‹ค.

๐Ÿ’—get_string

scratch์—์„œ askํ•จ์ˆ˜์™€ ๊ฐ€์žฅ ์œ ์‚ฌํ•œ ํ•จ์ˆ˜๋Š” get_stringํ•จ์ˆ˜์ด๋‹ค.

string answer = get_string("what's your name?\n");

C์–ธ์–ด์—์„œ =(๋“ฑํ˜ธ)๋Š” ํ• ๋‹น์—ฐ์‚ฐ์ž๋กœ, ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๊ฒƒ์„ ์™ผ์ชฝ์— ์ง€์ •ํ•˜๋Š”๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ๊ฐ€๋Š” ํ™”์‚ดํ‘œ๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋˜๊ฒ ๋‹ค. โฌ…

answer๋Š” ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์œผ๋กœ, ์ž„์˜๋กœ ๋„ค์ด๋ฐ ๊ฐ€๋Šฅํ•˜๋‹ค. C์—์„œ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜๋ฅผ ๊ผญ ์ •ํ™•ํ•˜๊ฒŒ ๋ณ€์ˆ˜ ์•ž์— ๋ช…์‹œํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ answer๋ผ๋Š” ๋ณ€์ˆ˜๋Š” ์ด๋ฆ„์„ ๋ฐ›์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— string์œผ๋กœ ์ง€์ •ํ•ด์ฃผ์—ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜, string์„ ํ˜•์‹์ง€์ •์ž๋ผ ํ•œ๋‹ค.

์œ„ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ๋ฐ˜ํ™˜ ๋ฐ›์€ ๊ฐ’์„ answer๋ผ๋Š” ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ฒŒ๋œ๋‹ค. ์ด์ œ ๋ฐ˜ํ™˜ ๋ฐ›์€ ๊ฐ’์„ printf๋กœ ์ถœ๋ ฅํ•ด๋ณด์ž.

printf("Hello, %s\n",answer);

๋ฐ˜ํ™˜๋ฐ›์€ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” % + ํ˜•์‹์ง€์ •์ž๋ฅผ ์ž‘์„ฑํ•ด์ฃผ๊ณ  ,(์ฝค๋งˆ)์™€ ๋ณ€์ˆ˜๋ช…์„ ๊ฐ™์ด ์ž…๋ ฅํ•œ๋‹ค. ์œ„ ํ•จ์ˆ˜์—์„œ๋Š” ๋ณ€์ˆ˜์˜ ํ˜•์‹์ง€์ •์ž string์˜ s๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ , ๋ณ€์ˆ˜๋ช… answer๋ฅผ ์ž…๋ ฅํ–ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด ํ•จ์ˆ˜๋ฅผ compileํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋œฌ๋‹คใ… ใ…  string์ด๋ผ๋Š” ๋ฌธ์ž์—ด ํ˜•์‹๊ณผ get_string์ด๋žŒ ํ•จ์ˆ˜๊ฐ€ <stdio.h>์—๋Š” ํฌํ•จ๋˜์–ด์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๐Ÿ’— cs50ํŒŒ์ผ ์—ฐ๊ฒฐํ•˜๊ธฐ์™€ make ๋ช…๋ น์–ด

string๊ณผ get_string์— ๋Œ€ํ•œ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ๋Š”cs50.h๋ฅผ ์—ฐ๊ฒฐํ•ด ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์ž.

#include <cs50.h>

1) ์šฐ์„  ์†Œ์Šค์ฝ”๋“œ์—์„œ <cs50.h>๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ , 2) ํ„ฐ๋ฏธ๋„์ฐฝ์—์„œ ์ปดํŒŒ์ผ์‹œ -lcs50๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

-ใ…ฃ์€ Link๋ผ๋Š” ์˜๋ฏธ๋ฅผ ์ง€๋‹Œ ์ธ์ž์— ํŒŒ์ผ๋ช…์ธ "cs50"์„ ํ•ฉ์นœ ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ปดํŒŒ์ผ์‹œ cs50ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„์™€ ๊ฐ™์€ ๋ช…๋ น์–ด ๋Œ€์‹  make๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์“ฐ๋ฉด ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.


ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์„ฑ๊ณต!

๐Ÿ’— ์ •์ˆ˜ ๋ณ€์ˆ˜ ์„ ์–ธ

counter๋ผ๋Š” ๋ณ€์ˆ˜์— ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๋ ค๋ฉด, ์šฐ์„  ๋ณ€์ˆ˜์•ž์— ๋ฐ์ดํ„ฐ ์ข…๋ฅ˜ "์ •์ˆ˜"๋ฅผ ๋ช…์‹œํ•ด์ค˜์•ผ ํ•œ๋‹ค. int๋Š” integer(์ •์ˆ˜)๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.

int counter = 0;

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด counter๋ผ๋Š” ๋ณ€์ˆ˜์— 0์„ ์ €์žฅ(์ดˆ๊ธฐํ™”)ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’— ๋ณ€์ˆ˜์˜ ๊ฐ’ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๊ธฐ

counter = counter + 1;

=๋Š” ํ• ๋‹น์—ฐ์‚ฐ์ž๋กœ, ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค. ๋”ฐ๋ผ์„œ, ์˜ค๋ฅธ์ชฝ counter์— 1์„ ๋”ํ•œ ๊ฐ’์„ ์™ผ์ชฝ counter์— ์ €์žฅํ•œ๋‹ค๋Š” ๋œป์ด ๋œ๋‹ค. โ€ป์ด๋ฏธ ์•ž ์ค„์—์„œ ๋ณ€์ˆ˜๊ฐ€ ์ •์ˆ˜๋ผ ์„ ์–ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜•์‹์ง€์ •์ž(int)๋ฅผ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹คโ€ป

์•„๋ž˜์˜ ๋‘ ๋ฐฉ๋ฒ•๋„ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋™์ผํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

counter += 1;
counter++;

๐Ÿ’— ์กฐ๊ฑด๋ฌธ

if ( x < y ){
   printf("x is less than y");
}

if์˜ ()์•ˆ์—๋Š” ์กฐ๊ฑด์ด ๋“ค์–ด๊ฐ€๊ณ , { }์•ˆ์—๋Š” ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ ์ˆ˜ํ–‰ํ•˜๊ณ ์žํ•˜๋Š” ์ž‘์—…์ด ๋“ค์–ด๊ฐ„๋‹ค.

else ์™€ else if๋ฅผ ์ด์šฉํ•ด, ์ฒซ๋ฒˆ์งธ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ๊ฒฝ์šฐ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

  • ์กฐ๊ฑด์ด 2๊ฐœ ์ผ ๊ฒฝ์šฐ
if ( x < y ){
   printf("x is less than y");
}
else ( x > y ){
   printf("x is greater than y");
}
   
  • ์กฐ๊ฑด์ด 3๊ฐœ ์ด์ƒ์ผ ๊ฒฝ์šฐ
if ( x < y ){
   printf("x is less than y");
}
else if ( x > y ){
   printf("x is greater than y");
}
else if ( x == y){
   printf("x is equal to y");
}

๋‘ ๊ฐ’์ด ๊ฐ™๋‹ค, ์ผ์น˜ํ•œ๋‹ค๋Š” ==(์ผ์น˜ ์—ฐ์‚ฐ์ž)๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์œ„ ์ฝ”๋“œ์—์„œ 1) x < y 2) x > y ๋ผ๋Š” ๋‘ ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ผ ๊ฒฝ์šฐ, ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” x = y๋ผ๋Š” ์กฐ๊ฑด ํ•˜๋‚˜ ๋ฐ–์— ์—†๋‹ค. ๋”ฐ๋ผ์„œ else๋ผ๋Š” ์ฝ”๋“œ๋กœ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋” ์ข‹์€ ์ฝ”๋“œ
if ( x < y ){
   printf("x is less than y");
}
else if ( x > y ){
   printf("x is greater than y");
}
else {
   printf("x is equal to y");
}

์ด์™€ ๊ฐ™์ด ์ตœ๋Œ€ํ•œ๐ŸŒŸ๋” ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๐ŸŒŸ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ๋” ์ ์€ ๋ฉ”๋ชจ๋ฆฌ์™€ CPU๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค!

๐Ÿ’— ๋ฃจํ”„(๋ฐ˜๋ณต๋ฌธ)

while ( ){

}

while๋’ค ()์•ˆ์— ์กฐ๊ฑด์„ ์ž‘์„ฑํ•˜๊ณ , {}์•ˆ์— ์กฐ๊ฑด์ด ๋งŒ์กฑํ•  ์‹œ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

  • ์˜์›ํžˆ ๋ฐ˜๋ณต
while (true){
      printf("hello, world");
}

์ž‘์—…์„ ์˜์›ํžˆ ๋ฐ˜๋ณตํ•˜๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์กฐ๊ฑด์„ ํ•ญ์ƒ ์ฐธ์ธ true๋กœ ์ž‘์„ฑํ•œ๋‹ค.

  • nํšŒ๋งŒํผ ๋ฐ˜๋ณต
int i = 0;
while ( i  < n ){
      printf("hello, world");
      i = i + 1;
}
  • nํšŒ๋งŒํผ ๋ฐ˜๋ณต (for๋ฌธ ์‚ฌ์šฉ)
for ( int i = 0; i < n; i =i + 1; ){
      printf("hello, world");
}

for๋ฌธ์„ ์‚ฌ์šฉํ•ด ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. for(๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”; ๋ณ€์ˆ˜ ์กฐ๊ฑด; ๋ณ€์ˆ˜ ์ฆ๊ฐ€)์˜ ํ˜•์‹์„ ๋”ฐ๋ผ ์ž‘์„ฑํ•œ๋‹ค.

profile
i๐ŸŽS ๊ฐœ๋ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€