눈으로 하는 코딩이 아닌! 직접 타이핑하는 코딩은 실력 향상에 엄청난 도움이 됩니다.




안녕하세요! 정선생이예요. 오늘은 조건문에 대해서 알아볼거예요.


조건문에 들어가기에 앞서 조건이 무엇인지를 알아봐야겠죠?

조건은 Condition 이라고도 표현을 하구요.

보통 조건에 대한 결과값은 참(True)과 거짓(False)이 나와요.

조건이라는 것 자체는 비교를 한다고 생각하면 되겠죠? 같은지, 다른지, 이상인지, 이하인지, ... 등등

x ( ) y 에 대해서 ( ) 에는 다음과 같은 값들이 들어갈 수 있어요.(써드린게 끝은 아니고 더 있어요)

  1.     <        x가 y보다 작다

  2.     >        x가 y보다 크다

  3.    <=       x가 y보다 작거나 같다.

  4.    >=       x가 y보다 크거나 같다.

  5.     !=       x가 y랑 같지 않다.


이 외에도 몇 가지 더 있답니다. 그러나 이 게시글에서 다루지는 않을거라서 넘어가도록하죠!


조건에 대해서 이해를 하셨다면 조건문으로 넘어가보죠.


조건문의 종류에는 크게 두 가지가 있어요. if와 switch.

if는 만약~라면 이라는 뜻을 가지고 있어요. 사용법은 if(조건){ ... }이예요.

if(10<30) 이라고 작성이 되어있으면 10이 30 미만이면~ 인거겠죠?

조금 더 깊게 가볼까요

int x = 10;
if(x < 30){
    printf("x가 30 미만입니다.\n");
}

정수형 변수 x에 10을 대입해놓고 조건 비교를 하네요

x(현재 10)이 30보다 작습니까? 이 조건이 참(True)이라면 "    x가 30 미만입니다.    " 가 출력이 되겠죠?

조금 더 생각보면 이런 생각을 하게 되요. 조건이 거짓이 되면 30 이상이라는 출력 구문을 만들고 싶다..

이런 생각 들어야해요!!!! 

이럴 때 쓰이는 구문은 if ~ else 구문이예요.

if(조건) { ... }

else { ... }


if에서 쓰이는 else는 '그게 아니면'으로 해석하면 이해하기 쉬워져요

if(조건){ ...1 } // 만약 조건이 참이면 ...1 을 실행하고

else{ ...2 } // 그게 아니면 ...2 를 실행한다.


어때요? 쉽죠? ㅎㅎ


여기에서 또 추가가 될 수 있어요. if문의 최종판??

if(조건){ ...1 }

else if(조건){ ...2}

else{ ... }


어느정도 추리가 가능하시겠죠?!

if(조건) -> 만약 조건이 참이면 1을 실행하고

else if(조건2) -> 그게 아니면서 만약 조건2가 참이면 2를 실행하고

else -> 그것도 아니면 3을 실행한다.


else if(조건)는 여러개가 들어갈 수 있어요. if ~ else if ~ else if ~ ... ~ else ~


아래 코드를 보시고 이해하실 수 있으면 됩니다!!

int x = 10;
if(x < 30){
    printf("x가 30 미만입니다.\n");
}
else if(x < 20){
    printf("x가 20 미만입니다.\n");
}
else{
    printf("x가 30보다 크거나 같습니다.\n");
} 


다음으로 switch 문이 있어요

switch(?){
  case 1:
    ...
    break;
  case 2:
    ...
    break;
  case 3:
    ...
    break;
  ...
  default:
    ...
    break;
}

가 기본 구문이예요. 한 줄씩 해석해봅시다.

switch(?)

왜 ? 로 표시를 했냐면 여기에는 변수 하나가 들어가거든요. 문자형 변수(char)나 정수형 변수(int)가 대표적이예요. 이 외에는 넣어본 기억이 저는 없네요. :(

아까 if문의 예시에서의 변수 x를 넣는다고 가정하고 쭉 설명 드릴게요.

switch(x)가 되겠네요


결국 switch문은 x 변수를 사용해서 case에 맞게 실행을 하겠다. 라는 소리예요

case ?: ... break;

여기에서 사용한 ?는 조건이 들어가요. 보통은 단일 문자, 숫자예요.

일정 범위(<30)는 들어갈 수 없어요! case <30: 이 안된다는 얘기입니다! 문자열의 경우도 들어갈 수 없어요. case == "Jeong"; 도 안됩니다!

이어서 말씀드리면 변수 x가 1이면 case 1: ~ 을 실행하는거예요.


처음보는게 있네요? break;

이 명령어는 지금 하고 있는 블록구문( {, } )을 빠져나간다. 라는 뜻이예요.

[현재는 switch(){ ... break; ... } 이렇게 되어있죠? switch()블록에 쌓여있으니까 이 switch() 구문을 빠져나간다. 라는 소리가 되요.]



프로그램 진행 순서예요! 이해 되셨나요?! :)



자 그렇다면 다시 돌아와서

x가 3이면 case 3: 을 실행해요

case로 작성이 안되어있는 숫자는 default: 구문이 실행이되요. 

x가 4였다면 default로 이동을 하는거죠.

default는 모든 case를 작성하고 맨 마지막에 작성해요. 프로그램의 진행 순서는 순차처리 방식이라고해서 위에서 아래로 이동을 합니다.

그래서 default case에서는 break; 를 생략해도 된답니다! :) default가 마지막에 써있기 때문이예요.



조건문에 대한 설명은 여기서 마치도록 할게요. 다음의 문제를 한 번 풀어보세요~!


 문제 :

정선생은 현재 3과목 점수의 평균을 이용하여 등급을 확인해보고 싶어한다. 다음의 프로그램을 작성하라.

평균이 90점 이상이면 "A", 80점 이상이면 "B", 70점 이상이면 "C", 그 외에는 "F"로 작성한다.


 입력 :

C언어 점수는? 90

JAVA 점수는? 70

HTML 점수는? 90


 출력 :

평균 점수는 83입니다.

따라서 등급은 B입니다.


쌤요!!!! 평균은 실수형인데 어떻게 할까요? 

=> 정수형으로 출력하시면 됩니다. 실수형 타입을 설정 안하셔도 되요. ^^ 데이터 타입에 집중하라는 문제가 아니예요!!!


예시는 다음과 같아요


 문제 :

키보드로 하나의 소문자를 입력 받아서 다음과 같은 출력을 할 수 있도록 한다.

a를 입력하였을 경우 apple, b를 입력하였을 경우 banana, c를 입력하였다면 cherry, 그 외에는 Undefined 를 출력하라.

switch 문을 이용하여 작성한다.

 입력 :

 하나의 문자 입력 : c

 출력 : 

 c로 시작하는 과일 : cherry

 입력 : 

 하나의 문자 입력 : z

 출력 : 

 z로 시작하는 과일 : Undefined


문자 하나를 비교할때는 case 'a': 로 하면 됩니다.

if문에서도 마찬가지예요 if(x == 'a') 이렇게 조건을 걸면 x가 'a'이면~ 이 됩니다. :)





오늘 준비한 내용은 여기까지 입니다. 조건문.. 어떻게보면 쉽고 어떻게보면 어려운 부분이예요~ 조건문만 확실하게 이해하시면 다음에 나올 반복문, 함수 등등 쉽게 다가올겁니다. 화이팅입니다 여러분 ^^7





게시글을 보시다가 궁금한 내용, 이게 맞나? 하는 내용, 이건 틀렸어!하는 내용들은 과감하게 댓글 달아주시면 감사하겠습니다.


이론적인 내용에 대한 궁금증은 검색을 통해 궁금증을 해결하는 것이 좋아요!!

실습적인 내용에 대한 궁금증은 최대한 생각을 해보고 검색을 하는 것이 좋아요!!

'Programming > C' 카테고리의 다른 글

[C] 함수  (0) 2018.05.15
[C] 반복문  (0) 2018.05.06
[C] 변수와 형식지정자  (0) 2018.04.30
[C] 기본 입/출력  (0) 2018.04.24
[C] 기본 구조  (0) 2018.04.19


눈으로 하는 코딩이 아닌! 직접 타이핑하는 코딩은 실력 향상에 엄청난 도움이 됩니다.




안녕하세요! 정선생이예요. 오늘은 변수에 대해서 알아볼까해요. 이전 게시글(이동)에서 아~~주 간단하게 정수형 변수를 선언하는 법을 배웠어요.


다시 한 번 더 설명하자면, 변수란 변하는 수를 뜻하는거예요. 앞서 써본 [    int a    ]를 정수형 변수 a라고 하죠.

변수 선언에는 주의점이 있고, 형식지정자라는게 같이 붙어있어요. 자료형이라고도 하구요. 보통은 자료형이라고 표현을 합니다.

  • 문자형 char
  • 정수형 short, int, long
  • 실수형 float, double
종류를 싹다 써드린 것은 아니고 자주 쓰이는 것을 알려드리는거예요.

정수형과 실수형에는 한 개가 아닌 여러개가 있네요. 메모리에서 차지하는 공간(바이트 수)이 차이점이죠.
차지하는 공간이 클수록 당연히 그 만큼 더 큰 수, 더 세밀한 수를 표현 할 수 있겠죠?

우리는 방금 6개의 형식 지정자를 배웠어요.

그렇다면 변수 선언은 다음과 같이 할 수 있어요.

  • char c;         // 문자형 변수 c 선언
  • short s;        // short 정수형 변수 s 선언
  • int i;            // int 정수형 변수 i 선언
  • long l;         // long 정수형 변수 l 선언
  • float f;         // float 실수형 변수 f 선언
  • double d;    // double 실수형 변수 d 선언
위와 같이 선언을 할 수 있네요. 그렇지만 변수명에는 정말 중요한 제한사항이 있어요.
  1. 다음 키워드는 변수명으로 사용할 수 없다.
  2.  for

    short 

    union 

    inline 

    auto 

    do 

    goto 

    signed 

    unsigned 

    break 

    double 

    if 

    sizeof 

    void 

    case 

    elase 

    int 

    static 

    volatile 

    char 

    enum 

    long 

    struct 

    while 

    const 

    extern 

    register 

    switch 

    continue 

    float 

    return 

    typedef 

    default 

     

     

     

    시작부터 해서는 안될게 많네요.. 그렇지만 이미 우리가 알고 있는 short, void, int, double, long, char, ... 등등 요런건 우리가 다른 의미로 사용하고 있는 것이죠? 이런 부분은 키워드라고해요. 다시말해서 이미 그 기능적 의미가 정해져 있는 c언어의 문법을 구성하는 단어들을 가리켜서 키워드(keyword)라고 해요. 이는 프로그래머가 다른 용도로 사용할 수 없도록 제한되어 있어요. 그래서 변수명으로는 사용 할 수 없답니다.


  3. 공백은 사용이 안된다.
  4. [     int a        b;    ] 이렇게는 사용이 안된다는 소리예요. 대신에 _(언더바)를 사용해서 공백을 표현하죠.
    [     int prime_number;     ]  이런 방식으로^^

  5. 첫 글자에 숫자는 사용해서는 안된다.
  6. [     int 3ab;     ] 이렇게도 사용해서는 안된다는거예요. 첫글자는 무조건 숫자가 아닌 다른 글자!

  7. 대소문자를 구별한다.
  8. [     int abc;     int ABC;    ] 두 개의 변수는 다른 변수예요!!!

  9. 특수문자 사용을 자제하는 것이 좋다.
  10. [     int a@b;   ] 등등. 컴파일러마다 오류가 되고 안되고.. 여튼 사용은 자제하는 것이 좋습니다!
추가적으로 변수명은 전체 코드에서 이 변수가 어떤걸 하는 변수인지 이해하기 쉽게끔 선언해주시는게 좋아요 ^^

자 이제 다음과 같은 코드를 확인해보죠.


#include <stdio.h>

int main() {
	char a;
	short b;
	int c;
	long d;
	float e;
	double f;

	printf("char => %d\n", sizeof(a));
	printf("short => %d\n", sizeof(b));
	printf("int => %d\n", sizeof(c));
	printf("long => %d\n", sizeof(d));
	printf("float => %d\n", sizeof(e));
	printf("double => %d\n", sizeof(f));

	return 0;
}


위와 같은 코드의 결과값은 아래와 '비슷하게' 나올거예요.

왜 '비슷하게' 냐고 했냐면.. 메모리에 얹어지는 사이즈는 시스템마다 다르기때문이예요.



위 코드를 통해 하나를 더 알아낸 키워드가 있어요. sizeof() 라는 것.

sizeof(데이터 타입)이 기본인데, 변수를 집어넣으면 그 변수가 차지하고 있는 바이트 수를 출력해줘요.

만약 형식지정자(데이터 타입이라고 많이 표현해요)를 집어넣게되면 그 데이터 타입의 바이트 수를 출력해줘요.

만약 sizeof(int)를 하면 4가 나와요. int는 4바이트(32비트)이거든요. 

이 부분은 현시점으로는 자세하게 다루지는 않을거예요. 만약 추후에 다루게 될 일이 있으면 문제로 다루게 될 것 같네요 :)



이번에 준비한 내용은 여기까지이고 위의 코드만 직접 타이핑해서 컴파일까지해보는게 이번 게시글의 문제네요ㅎㅎ 모두 고생하셨습니다. ^^7


------------------------------------------------------ 다음의 내용은 18.05.07에 추가된 내용 ------------------------------------------------------


변수의 초기화 라는 것이 있어요. 변수는 어떠한 값을 가지고 있어야 변수로서의 의미를 가질 수 있겠죠?


int a; 라고 하는 것은 우리가 정수형 변수 a를 선언한다. 라고 표현을 하고


int a = 10;  


int a;

a = 10;


위와 같은 것을 변수의 초기화. 라고 해요. 정수형 변수 a를 선언하고, 변수가 가지고 있는 값은 10으로 한다. 이런 뜻이겠죠?

변수는 초기화 값을 정해주지 않으면 이상한 값을 가지고 있어요. 흔히 '쓰레기값' 이라고 해요.

우리는 변수를 꼭 초기화를 해주고 사용을 해야 원하는 값을 얻을 수 있어요.


다음의 코드를 타이핑해서 컴파일을 해보세요. 차이점을 알게 됩니다!

#include <stdio.h>

int main() {
	int a;
	int b = 10;
	printf("a => %d\n", a);
	printf("b => %d\n", b);
	return 0;
}


------------------------------------------------------ 다음의 내용은 18.05.14에 추가된 내용 ------------------------------------------------------


제가 변수만 설명을 드렸고 해당 자료형들의 출력법을 안 알려드렸네요.. 죄송합니다 ( _ _ )


문자의 표현 방식은 다음과 같아요

#include <stdio.h>

int main() {
        char c;
        scanf("%c", &c);
        printf("입력받은 문자는 %c입니다. 아스키 코드로는 %d입니다.\n", c, c);
	return 0;
}

문자는 %c를 이용하고 %d로 출력을하면 아스키 코드 값이 나오네요. %d가 아닌 다른 것도 사용이 가능해요.


정수 표현 방법은 다음과 같아요.

#include <stdio.h>

int main() {
        int a, b, c;
        a = 10;
        b = 0x0A;
        c = 012;
        printf("a => %d", a);
        printf("b => %x or %d", b, b);
        printf("c => %o or %d", c, c);
	return 0;
}

변수의 초기화에서 0x 로 시작하면 16진수를, 0 으로 시작하면 8진수를 저장해요. 각각의 출력은 %x (%X)와 %o 입니다.


실수 표현 방법은 다음과 같아요

#include <stdio.h>

int main() {
        float a;
        double b;
        scanf("%f", &a);
        scanf("%lf", &b);
        printf("a => %f\n", a);
        printf("b => %lf\n", b);
        printf("a => %.2f\n", a);
        printf("b => %.2lf\n", b);
	return 0;
}

float형과 double형은 표현 범위의 차이가 있어요.(바이트 수가 다른 것부터 알 수가 있죠.)

float형은 %f로. double형은 %lf로 표현을 하네요. 각각의 출력과 소숫점을 절삭해버리는 부분까지 확인해보세요 ㅎ


다음은 서식문자(%?)에 대한 종류예요.


 서식문자

출력 대상(자료형) 

출력 형태 

%d 

char, short, int

부호 있는 10진 정수 

%ld 

long 

부호 있는 10진 정수 

%lld 

long long 

부호 있는 10진 정수 

%u 

unsigned int 

부호 없는 10진 정수 

%o 

unsigned int 

부호 없는 8진수 정수 

%x 

unsigned int 

부호 없는 16진 정수 

%f 

float, double 

10진수 방식의 부동소숫점 실수 

%lf 

float, double 

10진수 방식의 부동소숫점 실수 

%e, %E 

float, double 

e 또는 E 방식의 부동소숫점 실수 

 %g, %G

float, double 

값에 따라 %f와 %e 사이에서 선택 

%c 

char, short, int 

값에 대응하는 문자 

%s 

char * 

문자열 

%p 

void * 

포인터의 주소 값


상당히 많은데 이 중에서 짚고 넘어갈 것은 unsigned int 자료형이예요.

이는 음수를 제외한 0~int size*2 입니다. 즉, 4byte int형은 -2,147,483,648~+2,147,483,647 까지가 범위인데,

-2,147,483,648~-1 까지를 표시 안하고 양수로만 표현하겠다.. 즉, 0~(2,147,483,647 + 2,147,483,648) 까지 표시하겠다. 이런 얘기예요.

보편적인 크기일 뿐이예요. :)

원래는 signed int를 사용해도 되고 int를 사용해도 되요. 결국 의미는 같아요. 대부분은 signed를 생략하죠.


%s, %p는 추후에 다룰 내용이라 아~ 이런게 있구나 ^^ 라고만 알고계세요!! ㅎㅎ






게시글을 보시다가 궁금한 내용, 이게 맞나? 하는 내용, 이건 틀렸어!하는 내용들은 과감하게 댓글 달아주시면 감사하겠습니다.


이론적인 내용에 대한 궁금증은 검색을 통해 궁금증을 해결하는 것이 좋아요!!

실습적인 내용에 대한 궁금증은 최대한 생각을 해보고 검색을 하는 것이 좋아요!!

'Programming > C' 카테고리의 다른 글

[C] 함수  (0) 2018.05.15
[C] 반복문  (0) 2018.05.06
[C] 조건문  (0) 2018.05.04
[C] 기본 입/출력  (0) 2018.04.24
[C] 기본 구조  (0) 2018.04.19



눈으로 하는 코딩이 아닌! 직접 타이핑하는 코딩은 실력 향상에 엄청난 도움이 됩니다.




안녕하세요! 정선생이예요. 오늘은 기본 입/출력에 대해서 알아볼건데요.

기본 출력 함수는 printf()를 사용한다고 이전 게시글(이동)에서 배웠어요. 기억 나시나요?^^

기본 입/출력에 대한 소개를 시작할게요.


C에서 기본적인 입/출력을 하려면 파일 상단에 하나를 꼭 적어줘야해요.

저번 [기본 구조]에서도 말씀드렸듯이 #include <stdio.h> 를 꼭!!!!!! 적어줘야합니다

이 헤더 파일에 대해서는 자세히 설명을 안드렸는데요. 추후 함수를 사용하게 될 때 알려드릴게요. 궁금하신 분은 미리 구글링!!!


기본 출력 함수로는 printf() 함수가 있어요.

예시로 보여드리면 다음과 같아요


printf("Hello World!\n");
printf("1+2 = %d", 1+2);

첫 번째 줄은 저번 게시글에서 보여드렸어요! 기억해내셔야합니다!!!!!! ㅎㅎ

\n "이스케이프 시퀀스" 라고 해요.

두 번째 방법은 %? 를 사용하는 "형식 지정자" 라고 해요.

%d10진수 정수를 표현해준다. 라고만 기억하고계세요. 추후 게시글에서 지정자만 따로 골라내서 설명해드릴거예요! :0

두 번째 줄을 이어서 보면 printf("~~~~", 1+2); 이런 방식으로 되어있네요. 

%d 에다가 1+2를 넣어라(대입해라) 라는 소리예요. 잘 모르겠죠? 다음 사진을 한 번 봐볼게요.


1+2는 첫 번째 %d에, 4+5는 두 번째 %d에 대입이 되는 것을 이해하시기만 하면됩니다. 순서대로 형식 지정자에 대입된다. 라고 이해하고 계시면 되요.

그리고 파란색 표시가 된 , 부분도 주의깊게 봐주시구요.


다음으로는 입력 함수인데요.

기본 입력 함수로는 scanf() 함수가 있어요.

scanf()함수는 > 변수 <라고 하는 것이 필요해요. 입력을 받은 것을 저장해줘야하니까요.

예시는 다음과 같아요.


int a;
scanf("%d", &a);

int a;

integer(정수)형 값을 저장하는 'a'라는 이름을 가진 변수를 생성한다. 라는 뜻이예요. 

정수 값을 저장하는 변수인데, 이름이 a다. 보통은 읽히는대로 인트 a 라고 불러요. 

정수말고 다른 것들도 있어요. 이건 다음 형식 지정자를 설명해드릴 때 같이 설명드릴거예요.

scanf("%d', &a);

printf() 함수를 이해하셨다면 어느정도 이해가 되실겁니다. scanf() 함수는 입력을 받는 함수, %d는 정수형 타입의 형식 지정자.

정수를 입력받는구나. 라고 어느정도 감이 오시면되요. 그런데 그 입력 받는걸 어디다 넣느냐? a에다가 넣는다.. 이런 뜻이죠

정리 => 정수 1개를(%d가 한 개니까요) 입력 받은 것을 a에다가 저장해라.


"쌤!! &a는 뭐예요? "

=> 이건 좀 깊은 내용이예요. 추~~~~~후에 알려드릴 포인터 부분에서 자세하게 설명을 해드릴꺼예요. 일단은 무조건적으로 & 를 붙인다고 생각하세요!!


기본적인 입출력 함수의 예를 알려드렸어요


그렇다면 아래와 같은 프로그램을 만들어볼까요?







이번 게시글에서 준비한 내용은 여기까지예요. 고생하셨구요. 그럼 이만! ^^7





게시글을 보시다가 궁금한 내용, 이게 맞나? 하는 내용, 이건 틀렸어!하는 내용들은 과감하게 댓글 달아주시면 감사하겠습니다.


이론적인 내용에 대한 궁금증은 검색을 통해 궁금증을 해결하는 것이 좋아요!!

실습적인 내용에 대한 궁금증은 최대한 생각을 해보고 검색을 하는 것이 좋아요!!

'Programming > C' 카테고리의 다른 글

[C] 함수  (0) 2018.05.15
[C] 반복문  (0) 2018.05.06
[C] 조건문  (0) 2018.05.04
[C] 변수와 형식지정자  (0) 2018.04.30
[C] 기본 구조  (0) 2018.04.19



눈으로 하는 코딩이 아닌! 직접 타이핑하는 코딩은 실력 향상에 엄청난 도움이 됩니다.




안녕하세요! 정선생이예요. 정신없던 한주여서 게시글을 많이 못 올렸네요. 죄송합니다. ( __ )


전반적으로 C나 JAVA는 이후에 배우게 될 조건문이나 반복문의 구조가 비슷합니다. 그래서 C와 JAVA가 겹치는 부분이 많을거예요.


특히나 문제로 나오는 것들은 C를 위한 문제, JAVA를 위한 문제. 나눠서 문제를 제시해드리지는 않을 예정이예요.


Programming 카테고리는 실무적인 것을 배우는게 아니고 기초를 잡아드리기 위함이예요. :)


그럼 기본 구조에 대한 설명을 시작할게요!


C의 기본 구조는 다음과 같아요.


#include <stdio.h>
int main(void){
    printf("Hello World!\n"); // 이건 주석!
    return 0;
}

많은 분들이 프로그래밍을 입문하면 이와 비슷한 코드를 보게되요. Hello World! 를 출력하는 코드를요.


기본적인 구조의 필요이유를 알아봅시다.


#include <stdio.h>

include 는 포함한다. 라는 뜻을 가지고 있어요. stdio는 STanDard Input Output 의 줄임말이예요. c의 표준 입출력을 담당하는 파일이라고 생각하시면 됩니다. 우리가 추후에 쓰게될 printf() 함수나 scanf()함수는 꼭 #include <stdio.h>가 되어있어야합니다 :0 

그리고 보통의 std는 Standard의 줄임말임을 기억하고 계시면 편해요. 


int main(void){ ... }

우리가 흔히 말하는 main함수예요. "아 main함수의 구조가 저렇다면,, 무슨 뜻인지는 모르겠지만 int라는걸 쓰고 함수명을 써주고 괄호 열고 void라는걸 쓰고 괄호 닫고 중괄호 열고 작업을 지시하는 명령어를 쓰고 중괄호를 닫으면 이게 함수의 구조가 되겠구나?! " 라고 생각하셨나요?!!! 엄청 주절주절 쓰기만 했는데, 일단 main함수의 기본 작성법은 알아두셔야합니다!! int main(void){  }가 기본적인 main함수의 구실을 한다는 것.

( 보통은 int main()을 많이 씁니다. void main()을 사용하기도 해요. 추후에 설명드릴게요. )

고놈의 main함수 main함수.. 이게 뭐냐면.. 프로그램을 실행시키면 가장 먼저 실행되는 함수예요.  2012버전 이후로는 t_main()을 대신해서 쓰기도 하던데 이건 제가 더 알아보고 알려드리도록할게요!! :)

"쌤 그러면 (void)는 뭔가요?!"

void란 공허, 아무것도 없는. 이런 뜻으로 사용이되요. void. 즉 아무것도 없다. 라는 뜻인데 보통 우리가 수학에서 함수를 작성할 때는 f(x) = 2x + 1 이런식으로 작성을 하는데, f(x) 이 부분에 집중을 해보시면 x에 어떤 값을 넣을 수 있다. 가 되죠? 그런데 이게 void래. 아무 것도 없대.. 넣을 수 있는 값이 없다. 이렇게 이해하고 계시면 될 것 같아요. 너무 깊게 파고들면 안되요 지금은ㅠㅠ

아차차 그리고 (void)는 ()로 생략해서 쓸수도 있어요. int main()이나 int main(void)나 같은 표현이예요.


printf("Hello World!\n");

앞으로 우리가 사용하게 될 명령어나 변수들은 100에 99는 마지막에 세미콜론( ; )을 !!!!!꼭!!!!! 붙여야해요. 

그렇다면 printf라는 함수가 무엇이냐?!. print 라는 뜻 자체가 출력하다. 라는 뜻을 가지고 있어요. 말그대로 출력을 해주는 명령어와 같은 존재인거예요.

"아. 출력을 해주는 함수가 있다는 것은 입력을 해주는 함수가 있겠구나?!"

맞아요. 이건 다음 게시글에서 알려드리도록 할게요.

그리고 \n. 폰트에 따라서 \n이기도해요. 흔히 역슬래시 n 이라고 합니다. 한국에서는 역슬래시를 별로 안 쓰게되어서 원화표시랑 바꿨다고해요 :0

이 \n은 줄을 바꿔주는 역할을 해요. 여러개 더 있는데 이 것은 추후에 printf 부분에서 쓰이는 문자들을 알려드릴 예정이예요.


return 0;

return이란, 함수의 반환값을 설정해주는 것인데 main함수에서의 return 0;는 정상적으로 프로그램을 종료하겠다. 라는 것과 같아요.



주절주절 말만 길게 설명했지 기본 구조는 상당히 간단해요.

1. 헤더파일을 포함시킨다.

2. 메인 함수의 타입을 지정해주고 시작을 알린다.

3. 메인 함수의 동작내용을 작성한다.

4. 정상적으로 종료했는지를 리턴해준다.

5. 메인 함수의 끝을 알린다.


1 => #include <stdio.h>

2 => int main(void){
3 =>     printf("Hello World\n");

4 =>     return 0;

5 => }


빨갛게 색칠이 된 중괄호가 함수의 시작과 끝을 알려주는 부분이예요.



아래의 결과는 직접 코드를 작성해서 컴파일을 해보세요. 코딩해보시고 구조를 손에 익히고 머릿 속에 익히면 됩니다.







이번 게시글에서 준비한 내용은 여기까지예요. 고생하셨구요. 그럼 이만! ^^7





게시글을 보시다가 궁금한 내용, 이게 맞나? 하는 내용, 이건 틀렸어!하는 내용들은 과감하게 댓글 달아주시면 감사하겠습니다.


이론적인 내용에 대한 궁금증은 검색을 통해 궁금증을 해결하는 것이 좋아요!!

실습적인 내용에 대한 궁금증은 최대한 생각을 해보고 검색을 하는 것이 좋아요!!

'Programming > C' 카테고리의 다른 글

[C] 함수  (0) 2018.05.15
[C] 반복문  (0) 2018.05.06
[C] 조건문  (0) 2018.05.04
[C] 변수와 형식지정자  (0) 2018.04.30
[C] 기본 입/출력  (0) 2018.04.24



안녕하세요! 정선생이예요. 이번 게시글은 프로그래밍 개발 환경의 종류를 알려드릴거예요. 

바로 시작할게요.


HTML과 관련해서는 문서 편집기의 종류가 있었어요. 이처럼 프로그래밍 언어에도 편집기들의 종류가 있어요. 예전에는 편집기 따로, 컴파일러 따로, 디버거 따로 사용했었거든요. 그런데 이게 하나로 통합되었어요. 우리는 그것을 통합 개발 환경(IDE: Integrated Development Environment)이라고 부릅니다. 코딩, 디버깅, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 개발용 소프트웨어예요.


IDE는 다양한 프로그래밍 언어들을 지원해줘요.


IDE 역시 종류가 많아요. 자신에게 맞는 것을 선택해서 사용하면 됩니다!

대표적인 예로는 두 가지가 있어요. 저도 이 두 가지 외에는 안써서 모르겠어요..ㅠ


1. Visual Studio

C언어는 해당 IDE를 사용해요

2. Eclipse

JAVA언어는 해당 IDE를 사용해요


자세한 설명은 (클릭)



이번 게시글은 여기까지 준비했어요.




게시글을 보시다가 궁금한 내용, 이게 맞나? 하는 내용, 이건 틀렸어!하는 내용들은 과감하게 댓글 달아주시면 감사하겠습니다.


이론적인 내용에 대한 궁금증은 검색을 통해 궁금증을 해결하는 것이 좋아요!!

실습적인 내용에 대한 궁금증은 최대한 생각을 해보고 검색을 하는 것이 좋아요!!

'Programming' 카테고리의 다른 글

프로그래밍 기초  (0) 2018.04.06




안녕하세요! 정선생이예요. 이번 게시글은 프로그래밍에 대한 기초 이론을 설명해드릴거예요.

이론 설명인데 기초 용어가 없죠? 파고들면 파고들수록 영어 단어장처럼 길어질 것 같아서 이번 게시글에서는 뺏어요. 양해를 바랍니다.( _ _)

그럼 시작할게요.



프로그래밍은 컴퓨터 프로그래밍이라고도 해요. 컴퓨터 프로그래밍은 너무 기니까 프로그래밍이라고 줄여서 말하게된거죠. 그래서 이게 무엇이냐면, 하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술을 말한다. (출처) < 확인은 클릭

아휴 길다. 어려운 단어들도 몇 개씩 보이구요. 간단해요. "프로그래밍 언어를 이용해서 컴퓨터 프로그램을 만드는 일"인거예요. 더 줄여 볼까요? "컴퓨터 프로그램을 만드는 일"이라고 간략하게 설명 할 수 있어요. 주어가 빠지긴 했지만요ㅎ


컴퓨터는 우리의 말(자연어)을 알아듣지 못해요. 아쉽죠? 그럼 뭘 이해 할 수 있나? 0과 1로 이루어진 수. 이진수라고 하죠? 이진수인 0과 1로 이루어진 기계어를 이해 할 수 있어요. 기계어는 "001101011101001 ..." 이런식으로 구성이 되어있어요. 


우리가 프로그래밍 언어로 작성한 것은 기계어가 아니기 때문에 기계어로 바꿔주는 통역자 같은 존재가 필요해요. 우리는 그 것을 컴파일러(Compiler)라고 불러요. 영어 원서를 번역자를 통해 한국 번역본이 만들어지는 것처럼 컴파일러는 프로그래밍 언어를 기계어로 번역해주는 번역자 역할을 해요.



프로그래밍 언어의 종류는 크게 3가지로 나눌 수 있어요. 기계어(Machine Language), 어셈블리어(Assembly Language), 고급 언어(High-level Language).


기계어는 위에서 설명했던 것처럼 0과 1로 구성이 되어있고 하드웨어에 종속되어 있어요. 정의를 내리면 특정 컴퓨터의 명령어를 이진수로 표시한 것이되요.


어셈블리어는 기계어에서의 윗단계라고 보시면 되요. CPU명령어를 이진수로 표시하는 기계어와 달리 영어의 약자로 표기를 한 거예요.

무슨 말이냐면, 예를 들어서 00111101 이라는 기계어가 메모리에 있는 값을 이동을 시키는 기계어라고 한다면 기계어로 표현을 하면 항상 [00111101 메모리값d, 메모리값s] 로 표현을 해야해요. 어셈블리어에서는 " 값을 이동 시킨다? 이동이니까 MOVE. 줄여서 MOV라고 하자." 한거예요.

그럼 [ MOV 메모리값d, 메모리값s ] 처럼 표시를 할 수 있다는거죠. 그러니 기계어 보다는 더 높은 수준에서 프로그램을 작성할 수 있겠죠?

추가로 어셈블리어로 작성된 코드를 기계어로 바꿔주는 역할을 하는 것은 어셈블러(Assembler)라고해요.


고급 언어. 우리가 흔히 알고 있는 프로그래밍 언어들이 다 여기에 속한다고 보시면 되겠죠? C, C++, JAVA, FORTRAN, PYTHON, ... 등등 있어요. 여기엔 컴파일러가 존재한다는 걸 알아두셔야해요.



어떠한 일을 할 때는 계획이라는게 존재하잖아요? 예를들어 물을 마신다고 한다면 다음과 같은 비슷한 계획대로 실행을 하겠죠?

①냉장고를 간다 ②냉장고 문을 연다 ③물을 꺼낸다 ④냉장고 문을 닫는다 ⑤컵에 물을 따른다 ⑥물을 마신다

이런 일련의 과정. 이걸 알고리즘(Algorithm)이라고 해요. 프로그래밍을 함에 있어서 정말 중요해요. 너무 추상적으로 정의를 내렸네요.

다시말해서 어떠한 문제를 해결하기 위한 일련의 과정. 어째 추상적 정의보다 더 간단한 것 같네요ㅎㅎ



프로그램의 개발 과정이 존재해요. 마구잡이로 이거했다 저거했다 할수는 없으니까요.

요구사항분석 -> 알고리즘의 개발 -> 코딩 -> 컴파일과 링크 -> 실행과 디버깅 -> 유지보수



어떤 수업이건 이론이 길어지면 재미가 없어지니 딱 여기까지만 하고 마무리를 지을게요.

지루한 이론 읽어주시느라 고생하셨습니다. 그럼 이만 ^^7


제가 글을 올리는 부분은 ' 알고리즘의 개발 -> 코딩 '을 다룰 것 같아요. 추가로 디버깅 정도까지? 앞으로의 내용들 기대해주세요 :)




게시글을 보시다가 궁금한 내용, 이게 맞나? 하는 내용, 이건 틀렸어!하는 내용들은 과감하게 댓글 달아주시면 감사하겠습니다.


이론적인 내용에 대한 궁금증은 검색을 통해 궁금증을 해결하는 것이 좋아요!!

실습적인 내용에 대한 궁금증은 최대한 생각을 해보고 검색을 하는 것이 좋아요!!

'Programming' 카테고리의 다른 글

개발 환경 종류  (0) 2018.04.06

+ Recent posts