๐ ํด๋น ๊ธ์์๋ '์คํฌ๋์น'ํ๋ก๊ทธ๋จ์ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํฉ๋๋ค!
int main(void){}
When (Green flag) clicked๋ int main(void){} ์ ๋์ผํ๋ค.
printf("hello world");
say hello, world์ ๋ธ๋ก๊ณผ ๋์ผํ ์ญํ ์ ํ๋ค. hello world๋ฅผ ์ถ๋ ฅํด์ค๋ค.
#include <stdio.h>
stdio.h๋ผ๋ ํ์ผ์ ์ฐพ์ printf ํจ์์ ์ ๊ทผํ ์ ์๋๋ก ๋์์ค๋ค.
์ฆ, stdio.h๋ผ๋ ํ์ผ์ ๋ถ๋ฌ์จ๋ค๊ณ (์ฐธ์กฐ) ํด์ํ๋ฉด ์ฝ๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ญํ ์ ํ๋ค.
๊ธ์,๋จ์ด,๋ฌธ์ฅ์ "" ์์ ๋ฃ์ด์ค๋ค.
๋ฌธ์ฅ์ ๋์๋ ์ธ๋ฏธ์ฝ๋ก (;)์ ๋ถ์ฌ์ค๋ค.
printf("hello world\n"); ์์ \n์ ์ค๋ฐ๊ฟ(enter)์ญํ ์ ํ๋ค. terminal์์ ์ค๋ฐ๊ฟ์ ํด์ฃผ์ด ๊ฐ๋ ์ฑ์ ๋์ธ๋ค.
์๋จ์ ์์ฑํ ์ฝ๋๋ฅผ '์์ค์ฝ๋' ๋ผ๊ณ ํ๊ณ ์ด ์ฝ๋๋ฅผ 2์ง์๋ก ๋ณํํ๋ฉด ์ด๋ฅผ '๋จธ์ ์ฝ๋' ๋ผ๊ณ ๋งํ๋ค.
์ฐ๋ฆฌ๋ '์์ค์ฝ๋'๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ '๋จธ์ ์ฝ๋'๋ก ๋ณํ, ์ฆ ์ปดํ์ผํด์ผ ํ๋ค.
ํฐ๋ฏธ๋์ฐฝ์ $๊ธฐํธ ์์ clang hello.c ๋ผ๊ณ ์ ๋ ฅํ๋ฉด ์ปดํ์ผ์ด ๋๋ค.
clang์ ์ปดํ์ผ๋ฌ๋ก hello.c ๋ผ๋ ํ์ผ์ ์ฝ๋๋ฅผ ์ปดํ์ผ ํ๋ค๋ ์๋ฏธ์ด๋ค.
๊ทธ ๊ฒฐ๊ณผ a.out์ด๋ผ๋ ๋จธ์ ์ฝ๋ ํ์ผ์ด ์์ฑ๋๋ค.
./a.out ๋ช
๋ น์ด๋ฅผ ํฐ๋ฏธ๋์ฐฝ์ ์
๋ ฅํ๋ฉด ์คํ๋๋ค.
์ฌ๊ธฐ์ ask๋ get_string๊ณผ ์ ์ฌํ๋ค.
get_string ํจ์๊ฐ ์ฌ์ฉ์์ ์ด๋ฆ์ ๋ฐํํ๋ฉด answer ๋ณ์์ ์ ์ฅ๋๋ค.
string = ๋จ์ด๋ ๊ตฌ์ , ๋ฌธ์ฅ
string์ ์ด์ฉํด ๋ฐ์ดํฐ์ ์ข ๋ฅ๋ฅผ ๋ช ์ํ๊ณ ์ด๋ฅผ ํตํด ๋ณ์๊ฐ ์ง์ ๋๋ค.
์ด๊ฒ์ ํ์ ์ง์ ์๋ผ๊ณ ํ๋ค.
๋ณ์๋ช ์ ์์๋ก ์ ํด๋ ๊ด์ฐฎ๋ค.
โ ํ ๋น ์ฐ์ฐ์
ํ๋ก๊ทธ๋๋ฐ์์ ๋ปํ๋ '=' ๋ ์ค๋ฅธ์ชฝ์ ์๋ ๊ฒ์ ์ผ์ชฝ์ ์ง์ ํ๋ค๋ ๋ป
'==' ๋ ๊ฐ๋ค๋ผ๋ ํํ์ด๋ค.
printf("hello, %s\n", answer);
๋ณ์ answer์ ๋ด๊ธด ๋ด์ฉ์ด ์ถ๋ ฅ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ %๋ฅผ ์ด์ฉํ๊ณ string์ s๋ฅผ ๋ถ์ฌ %s๋ฅผ ์ ๋ ฅํ๋ฉด string์ธ ์ธ์๋ฅผ ๋ฐ๋๋ค๋ ๊ฒ์ด๋ค.
""(์๋ฐ์ดํ) ๋ค์ ์ ๋ ฅ๋ answer์ ํด๋น ๋ณ์๋ฅผ ์ฌ์ฉํ๋ค๋ ๋ป์ด๋ค.
get_string ํจ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด
#include <cs50.h> ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ถ๋ฌ์์ผ ์ฌ์ฉํ ์ ์๋ค. (์ปดํ์ผ ๊ฐ๋ฅ)
์ด์ ์ปดํ์ผ์ ํด๋ณด๋ ค๋ฉด?
$ clang -o string string.c -lcs50
-o string ์ string.c ๋ฅผ string.out ์ด๋ผ๋ ๋จธ์ ์ฝ๋๋ก ์ ์ฅํ๋๋ก ํ๋ค. ์ฆ string์ด๋ผ๋ ์ด๋ฆ์ ๋จธ์ ์ฝ๋ ํ์ผ๋ก ์ ์ฅํ๋ผ๋ ๋ป
-lcs50์ โlinkโ๋ผ๋ ์ฐ๊ฒฐ์ ์๋ฏธํ๊ณ -l ์ธ์์ ์ฐ๋ฆฌ๊ฐ ์ถ๊ฐ๋ก ํฌํจํ โcs50โ ํ์ผ์ ํฉ์น ๊ฒ์ด๋ค. ์ด๋ฅผ ํตํด ์ปดํ์ผ์ cs50 ํ์ผ์ ์ฐ๊ฒฐํ๋๋ก ์๋ ค์ค ์ ์๋ค.
๋ ์ฝ๋๊ฐ ํ ํ๋ก๊ทธ๋จ์ผ๋ก ์คํ๋ ์ ์๋๋ก ํ๋ค.
๋ ์ฝ๊ฒ, $make string
make๋ฅผ ์ฐ๋ฉด ์ ๊ธด ๋ฌธ์ฅ์ ํฐ๋ฏธ๋์ฐฝ์ ์
๋ ฅํ์ง ์๊ณ make๋ง ์ด์ฉํด์ ์ปดํ์ผ ํ ์ ์๋ค.
counter += 1; ํน์ counter++;๋ก ํํํ ์ ์๋ค.
์กฐ๊ฑด๊ฐ์ ๊ฒ๋ค์ ๋์๋ ์ธ๋ฏธ์ฝ๋ก ๋ถ์ด์ง ์์
if๋ฌธ์ ํตํด ์กฐ๊ฑด๋ฌธ์ ์์ฑํ ์ ์๋๋ฐ if ์ ๊ดํธ ์์ ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ boolean ํจ์๋ฅผ ๋์ถํด๋ด์ด ์กฐ๊ฑด์ ๋ฐ์ ธ ๊ฐ์ ์ถ๋ ฅํ๋ค.
boolean์ด๋ ์ฐธ๊ณผ ๊ฑฐ์ง, true or false
์ฒ์ if๋ฌธ์ ํด๋น ์กฐ๊ฑด์ด true๋ผ๋ฉด ์๋์ํค๊ณ ๊ทธ๊ฒ ์๋๋ผ๋ฉด ๋ฐ์์ค else ํน์ else if๋ฅผ ์ฝ์ด ์ถ๋ ฅํ๋ค.
๋ฐ๋ณต๋ฌธ์ while๊ณผ for๋ฌธ์ด ์กด์ฌํ๋ค.
hello, world๋ฅผ 50๋ฒ ๋ฐ๋ณตํ์ฌ ์ถ๋ ฅํ๊ณ ์ถ๋ค๋ฉด while ์กฐ๊ฑด์ ๋ณ์ i < 50์ ์ฃผ๋ฉด ๋๋ค.
i๊ฐ ๊ณ์ 0์ด๋ฉด ๊ณ์ ๋ฌดํ๋๋ก ์ถ๋ ฅ๋ ๊ฒ์ด๊ธฐ์ 50๋ฒ์ ์กฐ๊ฑด์ ๊ฑธ์ด๋๋ ค๋ฉด i=i+1;์ ์
๋ ฅํด์ฃผ์ด์ผ ํ๋ค.
i๊ฐ 0๋ถํฐ ์นด์ดํ
๋๋ฏ๋ก i < 50์ ํ๋ฉด 0~49๊น์ง ์นด์ดํ
๋์ด ์ด 50๋ฒ ์ถ๋ ฅ๋๋ค.
while๋ฌธ๋ณด๋ค ๋ ๋์์ธ์ ์ผ๋ก ํจ์จ์ฑ ์๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ค๋ฉด for๋ฌธ์ ์์ฑํ๋ ๊ฒ์ด ์ข๋ค.
์ ์๊ฐ(int)์ธ ๋ณ์ i์ 0์ ๋ด์์ฃผ๊ณ i๊ฐ 50๋ณด๋ค ์๋ค๋ฉด ํด๋น ์ฝ๋๋ฅผ ์ถ๋ ฅํ๋ค.
์ถ๋ ฅํ ๋ค์ i=i+1์ ํด์ฃผ๊ณ (์ถ๋ ฅ๋ ๊ฐ์ด true์ด๋ฏ๋ก) ๋ค์ i<50;์ ๋น๊ตํด์ฃผ๊ณ printf๋ฅผ ํตํด ์ถ๋ ฅํด์ค๋ค.
์ด ๊ณผ์ ์ด ๋ฐ๋ณต๋๋ค. i๊ฐ 50๋ณด๋ค ์์๋๊น์ง.
printf("Your total is %.2f \n", price*1.0625);
%f์์ f ์์ ์ํ๋ ์์์ ์๋ฆฌ์๋ฅผ ๋ฃ์ผ๋ฉด ๋๋ค.
price๊ฐ 100์ด๋ผ๊ณ ํ๋ค๋ฉด %.2f๋ฅผ ์
๋ ฅํ๋ฉด 106.25๊ฐ ์ถ๋ ฅ๋๋ค.
// ์ฃผ์์
๋๋ค.
#include <stdio.h>
void cough(int n);
int main(void)
{
cough(3);
}
void cough(int n)
{
for (int i = 0; i < n; i++)
{
printf("cough\n");
}
}
ํจ์ void (int n)์ ํจ์๊ฐ ์ ๋ ฅ๊ฐ์ ๋ฐ์์ int ํ์์ n์ด๋ผ๋ ๋ณ์์ ์ ์ฅ
์ปดํจํฐ๋ ์์์๋ถํฐ ์ฝ์ผ๋๊น ์ง์ ํ ํจ์๊ฐ main(void)๋ณด๋ค ์๋์ ์์ผ๋ฉด main(void)์์ '์ผ, void cough(int n) ํจ์ ์๋๋ฐ?' ๋ผ๊ณ ์๋ฌ๊ฐ ๋ฌ๋ค
๊ทธ๋ฐ๋ฐ ๋์์ธ์ ์ผ๋ก ํจ์จ์ ์ผ๋ก ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์์ฑํ๊ธฐ ์ํด์๋ main(void)๊ฐ ์ฒ์ ํ์ผ์ ์ด์์๋ ๊ฐ์ฅ ์๋จ์ ์์ด์ผ ๊ฐ๋
์ฑ์ด ์ข๋ค.
ํ๋ก์ ํธ ํ๋ฉด์ ํจ์๋ฅผ ๋ง์ด ์์ฑํ ํ
๋ฐ ๊ทธ ๋ชจ๋ ๊ฒ ์๋จ์ ์์ผ๋ฉด (์ฌ๋์ด)์ฝ๊ธฐ ํ๋ค๋ค.
๊ทธ๋์ ํจ์๋ ๊ฐ์ฅ ํ๋จ์ ๋๊ณ ๋์ main(void)์์ ์ฝ์ ์ ์๋๋ก ๋จผ์ ์๋จ์ ์ ์ํด์ฃผ๋ฉด ์ปดํจํฐ๊ฐ ์ฝ์ ์ ์๋ค.
#include <cs50.h>
#include <stdio.h>
int get_positive_int(void);
int main(void)
{
int i = get_positive_int();
printf("%i\n", i);
}
int get_positive_int(void)
{
int n;
do
{
n = get_int("Positive Integer: ");
}
while (n < 1);
return n;
}
do{ }while()์ ์กฐ๊ฑด๊ณผ ์๊ด์์ด ์ต์ํ ํ ๋ฒ์ { }์์ ๋ด์ฉ์ ์คํํ ์ ์๋ค.
while(n<1); ์ด ์ฐธ์ผ๋ ๋ค์์ ์ํํ๋ผ๋ ๋ป
๋ง์ฝ n์ด 1๋ณด๋ค ์๋ค๋ฉด ๊ณ์ํด์ ์ง๋ฌธ์ ๋ฐ๋ณต
while์ ๋จ๋ ์ผ๋ก ์ฌ์ฉํ๋ฉด while์ ์กฐ๊ฑด์ด ์ฐธ์ด์ด์ผ๋ง ์ํํ์ง๋ง do-while์ do์์ ๋ฌด์กฐ๊ฑด ํ ๋ฒ์ ๋จผ์ ์ํํ๊ฒ ํด์ค๋ค.
int get_positive_int(void) โ
int get_positive_int(void)๋ ๊ดํธ ์์ void๋ก ์
๋ ฅ์ ๋ฐ์ง ์๋๋ค.
๊ดํธ ์์ ์๋ฌด๊ฒ๋ ๋ฃ์ ํ์๊ฐ ์์ด์ ์๋ฌด ์์ ์ ์๋ฅผ ๋ฐ์ผ๋ฉด ๋๋ค.
๊ทธ๋ฌ๋ cs50๋ผ์ด๋ธ๋ฌ๋ฆฌ์ get_string ๊ฐ์ ํจ์์ฒ๋ผ ๊ฐ์ ๋ฐ์ ๋ณ์์ ์ ์ฅํ์ฌ ๋ฐํํ๊ฒ ํ๊ณ ์ถ์ด ํจ์ ์์ void๋์ int(์ถ๋ ฅ ์ข
๋ฅ)๋ฅผ ์ฌ์ฉํ๋ค.
int๋ ์ถ๋ ฅ์ ์ข ๋ฅ | (void)๋ ์ ๋ ฅ์ ์ข ๋ฅ
์ฐธ๊ณ : get_positive_int๋ผ๋ ํจ์๋ cs50์ ์๋ ํจ์์ด๋ค.
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int n;
do
{
n = get_int("Size: ");
}
while (n < 1);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("#");
}
printf("\n");
}
}