반응형

2020.6.20 내용추가 - 지금 영업을 안하고 있습니다.

 

안녕하세요

오늘은 점심에 판교 크래프톤 타워에 지하에 위치한 푸드코트 "다이닝 콜렉티브"에서 식사를 했습니다.

입구에는 푸드코드의 업체와 메뉴들이 나열되어있었습니다.

중식당 청이라는 식당입니다.

여러 중국요리를 먹을 수 있습니다.

 

라멘베라보입니다.

라멘이 주요 메뉴입니다.

 

추어탕 업체도 있습니다.

청담추어정입니다.

 

 

떡볶이 순대를 먹을 수 있는 분식집인 석관동 떡볶이입니다.

떡볶이와 순대, 라볶이 등이 눈에 잘보이네요.

 

한식인 청담골 반상입니다.

가정식 백반식으로 차려진것으로 보입니다.

스팸구이 반상, 제육볶음 반상, 갈치 구이 반상, 고등어 구이 반상, 가자미구이 반상등이 있습니다.

 

이제 입구에 들어갔습니다.

푸드 코드답게 어디든 앉을 수 있게 넓게 배치되어있습니다.

 

 

 

다이닝콜렉티브의 영업시간은 다음과 같습니다.

점심 : 11:30~15:00(주문마감 14:30)

쉬는 시간 (주말, 공휴일 제외) : 15:00 ~ 17:00

저녁 : 17:00~22:00(주문마감 21:30)

셀프 주문기를 통해 주문을 넣고 해당 식당에서 음식을 받아오는 방식으로 되어있었습니다.

메뉴와 가격은 다음과 같았습니다.

라멘 베라보 메뉴입니다.

 

중식당인 청 메뉴입니다.

 

청담추어정 메뉴입니다.

 

석관동 떡볶에 메뉴입니다.

청담골반상 메뉴입니다.

 

쌀국수 식당인 프롬하이노 메뉴입니다.

 

코비치 메뉴입니다.

 

호시카츠 메뉴입니다.

 

저는 청담골 반상의 청담골 반상 메뉴를 주문했습니다.

핸드폰 번호로 음식이 나오면 문자가 옵니다.

 

 

한 10여분정도 기다리니까 바로 주문한 음식이 나왔습니다.

반찬이 많이 나왔습니다.

 

갈치입니다.

별로 짜지 않고 딱 간이 맞게 맛있었습니다.

 

김치조금과 오뎅입니다.

맛은 그냥저냥 소소였습니다.

 

오징어젓입니다.

 

장조림같은 고기와 멸치입니다.

 

김, 계란, 콩나물입니다.

밥은 쌀밥이 나왔습니다.

그리고 같이 간 옆친구는 자장면과 탕수육 메뉴을 주문했습니다.

찹쌀 탕수육 같았습니다.

맛있었습니다.

 

볶음밥은 그냥저냥인거같았습니다.

석관동라볶이입니다.

 

로스카츠정식(런치)입니다

 

배가 많이 고파서 순식간에 다먹었습니다.

 

 

전체적으로 판교역이라서 가게 월세가 비싸서..... 메뉴들의 가격이 너무 너무 비싼편인거같았습니다.

그나마 제가 먹은 청담골 반상이 그나마 가성비가 좋은편 이였습니다.

배부르게 잘먹었습니다.

다음에 또 방문할지는 모르겠습니다.

 

 

반응형
반응형

안녕하세요.

오늘은 C언어의 구조체에 대해 알아보도록 하겠습니다.

 

구조체

여러 변수들을 하나로 뭉쳐 관리가 편하게 접근할 수 있게 하는 것이 구조체입니다.

형식

struct 구조체명
{
    데이터타입 변수명1;
    데이터타입 변수명2;
           :
           :
} 구조체변수명;

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <string.h>
#pragma warning(disable: 4996) // VS2019 일떄 필요합니다.
void main()
{
    struct Student
    {
        char sName[10];
        int nAge;
        char sAddress[32];
    }student;
    
    strcpy(student.sName,"AAAAA");
    student.nAge = 10;
    strcpy(student.sAddress,"Seoul, Republic of Korea");
 
    printf("student.sName : %s\n", student.sName);
    printf("student.nAge : %d\n", student.nAge);
    printf("student.sAddress : %s\n", student.sAddress);
}
 
cs

구조체의 필요성

만약에 다음과 같은 학생 정보에 대한 데이터가 있는 코드가 있습니다.

char sName[5][10];
int nAge[5];
char sAddress[5][32];

구조체를 사용하지 않아도, 배열로 데이터를 관리할 수 있습니다.
프로그램을 유지보수하게 되어 학생정보가 아닌 선생님정보가 추가해야하거나
교직원 정보를 추가해야한다면 다음과 같이 코드를 만들어야 할 것 입니다.

char sStudentName[5][10];
int nStudentAge[5];
char sStudentAddress[5][32];
char sTeacherName[5][10];
int nTeacherAge[5];
char sTeacherAddress[5][32];
char sSchoolstaffName[5][10];
int nSchoolstaffAge[5];
char sSchoolstaffAddress[5][32];

이렇게 되면 가독성이 현저히 떨어지기 때문에 구조체로 관리하는게 조금 더 수월하게 관리할 수 있을 것 입니다.

 

typedef

보통 구조체를 정의하고 사용하려면 다음과 같이 코드를 작성해야합니다.

struct Student
{
    char sName[10];
    int nAge;
    char sAddress[32];
};

struct Student student;

struct가 구조체란 뜻이 되므로 struct를 구조체이름과 같이 붙여야 구조체를 선언할 수 있습니다. 

typedef를 사용하면 struct를 붙이지 않고 구조체를 선언할 수 있습니다. 

다음과 같이 정의합니다.

typedef struct Student
{
    char sName[10];
    int nAge;
    char sAddress[32];
}STUDENT;

STUDENT student;

이때 STUDENT은 구조체 데이터가 아니라 struct Student를 대신하는 이름이 됩니다.

 

구조체 멤버 참조

구조체 멤버 참조는 "."(도트)연산자를 이용해서 참조합니다.

 

구조체 포인터

포인터 변수를 이용해서 구조체를 포인터로 접근할 수 있습니다.

포인터 변수를 참조할 때에는 "->"(에로우)연산자를 이용해서 참조합니다.

다음과 같이 참조합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <string.h>
#pragma warning(disable: 4996// VS2019 일떄 필요합니다.
 
void main()
{
    typedef struct Student
    {
        char sName[10];
        int nAge;
        char sAddress[32];
    }STUDENT;
 
    STUDENT student;
    STUDENT* pStudent = &student;
    strcpy(pStudent->sName, "AAAAA");
    student.nAge = 10;
    strcpy(student.sAddress, "Seoul, Republic of Korea");
 
    printf("student.sName : %s\n", pStudent->sName);
    printf("student.nAge : %d\n", pStudent->nAge);
    printf("student.sAddress : %s\n", pStudent->sAddress);
}
 
cs

pStudent->sName 대신 (*pStudent).sName를 사용할 수도 있습니다.

 

자기참조 구조체

구조체 멤버변수는 어떠한 타입도 가능하다. 다른 구조체 타입도 가능하다.

자기 자신은 포인트 형태로 가질 수 있다.

typedef struct Student
{
    char sName[10];
    int nAge;
    char sAddress[32];
    struct Student* stu;
}STUDENT;

 

구조체의 메모리 배치 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <string.h>
 
void main()
{
    typedef struct Player
    {
        char sName[3];
        int nJob;
        char chType;
        int nAge;
        short shPoint;
    }PLAYER;
 
    PLAYER student;
    printf("student size : %d\n"sizeof(PLAYER));
}
 
cs

다음과 같이 구조체의 사이즈를 확인해보면 20이 나옵니다.

데이터 타입으로 계산하면 sName(3) + nJob(4) + chType(1) + nAge(4) + shPoint(2) = 14가 나와야하는데 이상합니다.

구조체 변수의 메모리 배치는 4의 배수 단위로 배치됨으로 인해 

sName(4) + nJob(4) + chType(4) + nAge(4) + shPoint(4) = 20 으로 계산이 됩니다.

그러므로 다음과 같이 수정해야 구조체 사이즈를 줄일 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
 
void main()
{
    typedef struct Player
    {
        char sName[3];
        char chType;
        short shPoint;
        int Job;
        int nAge; 
    }PLAYER;
 
    PLAYER student;
    printf("student size : %d\n"sizeof(PLAYER));
    
}
 
cs

이렇게 구현하면 sName(3) + nJob(1) + shPoint(4) + chType(4) + nAge(4) = 16 됩니다.

작은 사이즈의 변수타입부터 넣고 큰 사이즈 변수를 넣는게 사이즈를 줄일 수 있는 방법입니다.

반응형
반응형

안녕하세요.

오늘은 C언어의 함수에 대해 알아보도록 하겠습니다.

함수

함수(Function)를 뜻을 영어사전에서 찾아보면, 기능이라는 뜻이 됩니다.

C언어에서도 기능을 따로 분리해서 코딩을 할 수 있습니다.

우리가 자주 사용하는 printf가 대표적인 예가 될 수 있습니다.

출력하는 기능을 이용하고 싶은데 printf에 들어있는 코드들을 모두 main함수에 넣을 수는 없기 때문입니다.

형식

반환자료형 함수명(매개변수1, 매개변수2)
{
    구문;
    return 반환값;
}

반환할 자료형(int, float등)을 정하고 매개변수에 값을 넣어서 함수에 전달해줍니다.

함수가 종료되기 전에 return으로 값을 반환합니다.

반환자료형이 void라면 return 값이 필요없습니다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
void printA(int nNum)
{
    printf("printA : %d\n", nNum);
}
 
void main()
{
    int nNum = 5;
    printA(nNum);
}
cs

printA라는 함수를 만들었습니다.
매개변수에 nNum값을 넘겨주면 "printA : 5"가 출력이됩니다.

함수는 main함수보다 윗줄에 코딩하거나 아니면 다음과 같이 선언을 하고 main함수 아래에 정의할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
void printA( int nNum );
void main()
{
    int nNum = 5;
    printA(nNum);
}
 
void printA( int nNum )
{
    printf("printA : %d\n", nNum);
}
cs

 

매개변수 전달

- 매개변수로 값 전달

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int Plus(int nNum1, int nNum2)
{
    return nNum1 + nNum2;
}
 
void main()
{
    int nNum1 = 5;
    int nNum2 = 8;
 
    printf("Plus(%d, %d) : %d", nNum1, nNum2, Plus(nNum1, nNum2));
}
 
cs

Plus함수에 5,8값을 매개변수로 전달해서 덧셈한 후 리턴합니다.

- 매개변수로 주소 전달

매개변수로 값을 전달하고 함수안에서 값을 변경해봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int Plus(int nNum1, int nNum2)
{
    nNum1 = 10;
    return nNum1 + nNum2;
}
 
void main()
{
    int nNum1 = 5;
    int nNum2 = 8;
 
    printf("Plus(%d, %d) : %d", nNum1, nNum2, Plus(nNum1, nNum2));
}
 
cs

Plus함수내에서 매개변수를 변경을 하면 덧셈연산 후 리턴값은 변경 되지만, nNum1값은 변경한 10이 아닌 그대로 5입니다.

함수내에서 값을 변경하면 매개변수 값도 변경되게 하려면 어떻게 하면 될까요??

주소값을 매개변수로 전달하면 됩니다.

주소를 나타내는 "&"을 붙여서 매개변수를 전달합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int Plus(int* nNum1, int* nNum2)
{
    *nNum1 = 10;
    return *nNum1 + *nNum2;
}
 
void main()
{
    int nNum1 = 5;
    int nNum2 = 8;
 
    printf("Plus(%d, %d) : %d", nNum1, nNum2, Plus(&nNum1, &nNum2));
}
 
cs

포인터 변수로 주소값으로 매개변수 값을 전달하면 nNum1 값을 5에서 10으로 변경하면 값이 변경되는 것을 확인할 수 있습니다.

반응형
반응형

안녕하세요.

오늘은 포인터에 대해 알아보도록 하겠습니다.

 

포인터

단순히 포인터라는 단어의 뜻만 보면, 무언가를 가리키는 것 정도의 의미가 되는데,

C언어에는 주소 값을 가리키기 위한 형식을 뜻하게 됩니다.

메모리 공간의 주소값을 가리킬 수 있기 때문에 동적 메모리 할당에 많은 이점을 가질 수 있게 됩니다.

형식

데이터타입* 포인터 변수명;

포인터 변수명 = &변수;

*포인터 변수 = 변수;

- 데이터 타입* 포인터 변수명;
데이터 타입에 "*"을 붙이면 포인터 변수가 됩니다.
메모리 공간은 타입에 상관없이 4바이트를 차지하게 됩니다.

- 포인터 변수명 = &변수;
변수에 주소라는 의미인 "&"를 변수 앞에 넣어서 포인터 변수에 주소 값을 대입할 수 있습니다.

- *포인터 변수 = 변수;
포인터 변수를 선언할 때는 "*"가 포인터 변수 타입이라는 것을 나타내지만 대입할 때에는 가리키는 값이라는 코드가 됩니다.
포인터 변수에 일반 변수 값을 대입하기 위해서는 포인트 변수 앞에 "*"를 넣어 변수를 대입합니다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
void main()
{
    int* p;
    int nNum = 5;
    p = &nNum;                    // nNum의 주소값을 p에 저장합니다.
    printf("*p = %d\n"*p);    // p의 가르키는 값을 출력합니다.
    printf("nNum = %d\n", nNum);// nNum 값을 출력합니다.
    printf("==================\n");
    *= 10;                    // p가 가르키는 값 10으로 변경합니다.
    printf("*p = %d\n"*p);    // p의 가르키는 값을 출력합니다.
    printf("nNum = %d\n", nNum);// nNum 값을 출력합니다.
    printf("==================\n");
    nNum = 15;
    printf("*p = %d\n"*p);    // p의 가르키는 값을 출력합니다.
    printf("nNum = %d\n", nNum);// nNum 값을 출력합니다.
}
 
cs

 

배열과 포인터

배열에 인덱스를 적지 않고 쓴다면 포인터변수와 마찬가지로 사용할 수 있게됩니다.

예제

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
void main()
{
    int arrNum[5= {1,2,3,4,5};
    
    int i;
    for ( i = 0; i < 5; i++ )
        printf("%d\n"*(arrNum+i));
}
cs

코딩 팁

보통은 포인터변수 초기값을 null(널)값으로 설정합니다.

짧은 코드에서는 상관이없지만, 코드가 많아지면 포인터 변수에 주소값을 대입하는걸 깜빡하게 될 수 있어서 체크하는 코드를 넣어야합니다.

다음과 같이 사용합니다.

1
2
3
int* pNum = null; 
if(pNum != null) 
    *pNum = 5;
cs

 

주소 값 변화를 확인하는 방법(VS 2019)

1. F5키 또는 메뉴 - 디버그 - 디버깅 시작을 누릅니다.

2. 메뉴 - 디버그 - 창 - 메모리 - 메모리 로 메모리 창을 엽니다.

다음과 같은 창이 생깁니다.

변수에 "&"를 앞에 넣어서(예를들면 "&nNum")를 주소에 넣고 엔터를 누릅니다.

그럼 해당 변수에 해당되는 주소로 이동합니다.

디버깅하면서 한스탭씩 넘어가는 것(F10)을 확인 합니다.

변수값이 변하면 주소에 해당하는 변수가 변경되는 것을 확인할 수 있습니다.

반응형
반응형

안녕하세요.

오늘은 C언어 반복문에 대해 알아보도록 하겠습니다.

 

반복문

규칙적인 구문을 반복해야할 때에는 반복문을 이용할 수 있습니다.

반복문에는 for문과 while문, do-while문이 있습니다.

 

for 문

구문

1
2
3
4
for(초기식; 조건식; 증감식)
{
    구문;
}
cs

다음과 같은 순서로 반복됩니다.

1. 조건식이 참이면 구문을 실행하니다.

2. 증감식으로 변수를 증감합니다.

3. 1~2를 계속 반복하고 조건식이 거짓이면 for문을 빠져나갑니다.

예제

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
void main()
{
    int i;
    for (i = 1; i <= 5; i++)
    {
        printf("%d\n", i);
    }
}
cs

i값이 1씩 증가하면서 1~5를 출력합니다.

 

while 문

구문

1
2
3
4
while(조건식)
{
    구문;
}
cs

다음과 같은 순서로 반복됩니다.

1. 조건식이 참이면 구문을 실행합니다.

2. 조건식이 거짓이 될 때 까지 반복합니다.

예제

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
void main()
{
    int i = 1;
    while ( i <= 5 )
    {
        printf("%d\n", i);
        i++;
    }
}
cs

 

do-while 문

구문

1
2
3
4
do
{
    구문;
}while(조건식)
cs

while과 동일하지만 조건식이 만족하지 않더라도 한번은 구문이 실행됩니다.

 

예제

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
void main()
{
    int i = 1;
    do
    {
        printf("%d\n", i);
        i++;
    } while (i > 5);
}
cs

continue

반복문에서 특정 조건일 때는 구문을 실행시키지 않기 위해서는 continue문을 사용할 수 있습니다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
void main()
{
    int i;
    for (int i = 1; i <= 5; i++)
    {
        if (i == 3)
        {
            continue;
        }
        printf("%d\n", i);
    }
}
cs

i가 3일 때 continue문 다음 구문을 실행하지 않고, 다음 반복문을 실행시킨다.

 

break

반복문에서 break문을 만나면 해당 반복문 밖으로 빠져나오게 됩니다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
void main()
{
    int i;
    for (int i = 1; i <= 5; i++)
    {
        if (i == 3)
        {
            break;
        }
        printf("%d\n", i);
    }
}
cs

i가 3일때 break문이 실행되면서 for에서 빠져나오게 됩니다.

반응형
반응형

안녕하세요.

오늘은 C언어 조건문에 대해 알아보도록 하겠습니다.

 

조건문

게임에서 HP가 0일떄 쓰러지는 모션을 취해야하거나, 시작지역으로 이동하려면 꼭 조건문의 조건의 만족할 때만 코드가 실행되야 할 것 입니다.

따라서 특정 조건에 따라서 코드가 실행되도록 하기 위해서는 조건문이 필요합니다.

 

if문

문법

1
2
3
4
if(조건)
{
   구문;
}
cs

만약에 조건이 만족하면 구문을 실행한다는 뜻이 됩니다.

조건이 0이면 실행되지 않고, 0 이외의 값을 가지면 실행이 됩니다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
void main()
{
    if (1)
    {
        printf("Hello!!\n");
    }
 
    if (0)
    {
        printf("World!!\n");
    }
}
cs

"Hello!!"만 출력되고, "World!!"는 출력되지 않게됩니다.

 

if-else문

문법

1
2
3
4
5
6
7
8
if(조건)
{
   구문1;
}
else
{
   구문2;
}
cs

if-else문은 if 조건이 만족할 때에는 구문1을 실행하고 조건이 만족하지 못할 때는 else문에 있는 구문2를 실행하게 됩니다.

구문1, 구문2가 함께 실행되는 경우는 없습니다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
void main()
{
    int nNum = 5;
    
    if (nNum >= 5)
    {
        printf("%d >= 5", nNum);
    }
    else
    {
        printf("%d < 5", nNum);
    }
}
 
cs

nNum값이 5이기 때문에 5보다 이상인 조건에 만족하기 때문에 " 5 >= 5"가 출력이 됩니다.

 

if-else if-else문

문법

1
2
3
4
5
6
7
8
9
10
11
12
if(조건1)
{
   구문1;
}
else if(조건2)
{
   구문2;
}
else
{
   구문3;
}
cs

if-else if-else문은 if의 조건1이 만족하지 않으면 else if의 조건2를 확인해서 만족하면 구문2를 실행하고, 조건2도 만족하지 않는다면, 구문3을 실행시킵니다.

만약 else if문을 사용하지 않는다면, if - else문으로 다음과 같이 구현해야함으로 가독성이 떨어질 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(조건1)
{
   구문1;
}
else
{
    if(조건2)
    {
       구문2;
    }
    else
    {
       구문3;
    }
}
cs

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
void main()
{
    int nNum = 15;
    
    if (nNum < 5)
    {
        printf("if %d < 5", nNum);
    }
    else if (nNum > 10)
    {
        printf("else if %d > 5", nNum);
    }
    else
    {
        printf("else %d >= 5 and nNum > 10", nNum);
    }
}
 
cs

nNum가 15이기 때문에 "else if 15 > 5"가 출력이 됩니다.

 

조건 연산자(혹은 삼항 연산자)

간단한 if-else조건문 경우에는 조건 연산자를 이용할 수 있습니다.

문법

조건 ? 구문1 : 구문2;

예제

1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
void main()
{
    int nNum = 5;
    
    nNum > 5 ? printf("%d > 5", nNum) : printf("%d <= 5", nNum);
}
 
 
cs

"5 <= 5"가 출력됩니다.

 

if문팁

다음과 같이 if문의 조건에 두가지 혹은 n가지 조건들을 논리연산자(&&, ||, !)로 넣을 수 있습니다.

if( nNum > 5 || nNum < 0 )

이런식으로 구현할 수있습니다.

다음과 같이 데이터를 리턴하는 함수도 넣을 수 있습니다.

if ( func1() && func2() )

위 구문에서 만약에 fun1함수 리턴값이 false값(=0)이라면 func2함수를 호출하지 않습니다.

 

switch-case문

변수값에 따라서 실행구문이 달라진다면 if문 보다 switch-case문이 가독성이 더좋습니다.

문법

1
2
3
4
5
6
7
8
9
switch(변수)
{
    case 상수1:
        break;
    case 상수2:
        break;
    default:
        break;
}
cs

switch문의 변수는 정수만 가능하고(실수형변수는 안됩니다) 변수와 같은 상수를 가진 case문의 구문을 실행하게 됩니다. break문이 없다면 바로 다음 case문을 실행하게 됩니다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
void main()
{
    int nNum = 5;
    
    switch (nNum)
    {
    case 5:
        printf("nNum 5\n");
        break;
    case 6:
        printf("nNum 6\n");
        break;
    default:
        printf("default\n");
        break;
    }
}
cs

"nNum 5"가 출력됩니다.

다음과 같이 case 5에 break;문이 없다면 어떻게 될까요??

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
void main()
{
    int nNum = 5;
    
    switch (nNum)
    {
    case 5:
        printf("nNum 5\n");
    case 6:
        printf("nNum 6\n");
        break;
    default:
        printf("default\n");
        break;
    }
}
cs

break문이 없다면 바로 다음구문으로 실행되어 "nNum 5"과 "nNum 6"가 출력됩니다.

switch-case문은 해당 구문으로 이동되면서 작동되는 것을 확인할 수 있습니다.

반응형
반응형

안녕하세요.

오늘은 C언어의 연산자에 대해 알아보도록 하겠습니다.

 

연산자

수나 식을 일정한 규칙에 의해 계산하기 위해서 연산자를 사용합니다.

 

산술 연산자

1. 이항연산자

피연산자를 덧셈, 뺼셈, 곱셈, 나눗셈, 나머지 연산을 말합니다.

연산자 설명 사용
+ 더하기 A+B
- 빼기 A-B
* 곱하기 A*B
/ 나누기 A/B
% 나머지 A%B

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
void main()
{
    int num1 = 50;
    int num2 = 6;
 
    printf("num1 + num2 : %d\n", num1 + num2);
    printf("num1 - num2 : %d\n", num1 - num2);
    printf("num1 * num2 : %d\n", num1 * num2);
    printf("num1 / num2 : %f\n", (float)num1 / (float)num2); // 소수점 출력을 위해서 float로 강제 형변환합니다.
    printf("num1 %% num2 : %d\n", num1 % num2);
}
cs

2. 단항 연산자

피연산자에 증가(++),감소(--)와 양수(+),음수(-)를 표시하는 연산자입니다.

연산자 설명 사용
+ 양수표현 +A
- 음수표현 -A
++ 1씩증가 A++, ++A
-- 1씩감소 A--, --A

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
void main()
{
    int num = 50;
 
    printf("num : %d\n", num);
    printf("-num : %d\n"-num);
    printf("num++ : %d\n", num++);    // 다음 코드에서 1증가
    printf("++num : %d\n"++num);    // 현재 코드에서 1증가
    printf("num-- : %d\n", num--);    // 다음 코드에서 1감소
    printf("--num : %d\n"--num);    // 현재 코드에서 1감소
}
 
cs

3. 대입 연산자

오른쪽 식을 왼쪽값에 대입합니다.

연산자 설명 사용
= 오른쪽 식을 왼쪽 값에 대입 C = A + B

복합 산술연산자 ( 이항연산자와 대입연산자를 같이 사용)

연산자 설명 사용
+= 왼쪽 수에 오른쪽 수 더해 왼쪽 수에 대입 A += B (A = A + B)
-= 왼쪽 수에 오른쪽 수 빼기를 해 왼쪽 수에 대입 A -= B (A = A - B)
*= 왼쪽 수에 오른쪽 수 곱해서 왼쪽 수에 대입 A *= B (A = A * B)
/= 왼쪽 수에 오른쪽 수 나누어 왼쪽 수에 대입 A /= B (A = A / B)
%= 왼쪽 수에 오른쪽 수 나눈 나머지를 왼쪽 수에 대입 A %= B (A = A % B)

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
void main()
{
    int num = 10;
 
    printf("num : %d\n", num);
    num += 6;    // num = num + 6
    printf("num : %d\n", num);
    num -= 8;    // num = num - 8
    printf("num : %d\n", num);
    num *= 4;    // num = num * 4
    printf("num : %d\n", num);
    num /= 2;    // num = num / 2
    printf("num : %d\n", num);
    num %= 2;    // num = num % 3
    printf("num : %d\n", num);
}
cs

비교 연산자(혹은 관계 연산자)

왼쪽값과 오른쪽 값을 비교합니다.

연산자 설명 사용
< 오른쪽 값이 왼쪽 값보다 클 때 1, 아니면 0 A < B
> 왼쪽 값이 오른쪽 값보다 클 때 1, 아니면 0 A > B
<= 오른쪽 값이 왼쪽 값보다 같거나 클 때 1, 아니면 0 A <= B
>= 왼쪽 값이 오른쪽 값보다 같거나 클 때 1, 아니면 0 A >= B
== 왼쪽 값과 오른쪽 값이 같을 때 1, 아니면 0 A == B
!= 왼쪽 값과 오른쪽 값이 다를 때 1, 아니면 0 A != B

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
void main()
{
    int num1 = 10;
    int num2 = 15;
 
    printf("num1 < num2 : %d\n", num1 < num2);
    printf("num1 > num2 : %d\n", num1 > num2);
    printf("num1 <= num2 : %d\n", num1 <= num2);
    printf("num1 >= num2 : %d\n", num1 >= num2);
    printf("num1 == num2 : %d\n", num1 == num2);
    printf("num1 != num2 : %d\n", num1 != num2);
}
 
cs

 

논리 연산자

왼쪽과 오른쪽을 논리연산(AND, OR, NOT)합니다.

연산자 설명 사용
&& 왼쪽과 오른쪽 논리값이 모두 1일 때 1 (AND 연산) A && B
|| 왼쪽과 오른쪽 논리값이 하나라도 1일 때 1 (OR 연산) A > B
! 논리값이 0이면 1, 1이면 0 !A

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
void main()
{
    int num1 = 1;
    int num2 = 1;
 
    printf("num1 && num2 : %d\n", num1 && num2);
    printf("num1 || num2 : %d\n", num1 || num2);
    num1 = 1;
    num2 = 0;
    printf("num1 && num2 : %d\n", num1 && num2);
    printf("num1 || num2 : %d\n", num1 || num2);
 
    printf("!num1 : %d\n"!num1);
}
 
cs

 

비트 연산자

비트(2진수) 연산을 위해서는 비트 연산자를 사용합니다.

연산자 설명 사용
& 비트(2진수)단위 AND 연산 A & B
| 비트(2진수)단위 OR 연산 A | B
~ 비트(2진수)단위 NOT 연산 ~A
^ 비트(2진수)단위 XOR 연산 A ^ B
<< 왼쪽으로 비트 이동 A << B
>> 오른쪽으로 비트 이동 A >> B

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
 
void main()
{
    int num1 = 14;
    int num2 = 7;
 
    // num1      1110
    // num2  AND 0111
    //           0110 
    printf("num1 & num2 : %d\n", num1 & num2);
    // num1      1110
    // num2  OR  0111
    //           1111
    printf("num1 | num2 : %d\n", num1 | num2);
    
    // num1      NOT 1110 ->  ‭1111 1111 1111 1111 1111 1111 1111 0001‬
    printf("num1 : %d\n", ~num1);
    
    printf("11111num1 : %d\n", num1);
 
    // num1       1110
    // num2  XOR  0111
    //            1001
    printf("num1 ^ num2 : %d\n", num1 ^ num2);
 
    // 1110 >> 2 -> 0011
    printf("num1 >> 2 : %d\n", num1 >> 2);
    // 1110 << 2 -> 11 1000
    printf("num1 << 2 : %d\n", num1 << 2);
}
 
cs

 

포인터 연산자

변수가 참조하는 주소값과 포인터 변수가 가르키는 값을 얻기 위해 사용합니다.

연산자 설명 사용
& 변수의 주소값 &A
* 포인터 변수의 가르키는 값 *A

예제

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
void main()
{
    int num = 10;
    int* p = &num;
    
    printf("&num: %p\n"&num);
    num = 5;
    printf("*p: %d\n"*p);
}
cs

 

조건 연산자(혹은 삼항 연산자)

조건식으로 참 / 거짓에 따라 수식을 실행합니다.

연산자 설명 사용
조건식 ? 식1 : 식2 조건식이 참이면 식1이 적용, 거짓이면 식2 적용 A < B ? A = 5 : B = 10

예제

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
void main()
{
    int num1 = 14;
    int num2 = 7;
    (num1 < num2) ? (num1 = 5) : (num1 = 10);
 
    printf("num1: %d\n", num1);
    
}
 
cs

 

반응형
반응형

안녕하세요.

오늘은 변수에 데이터를 입력과 출력에 대해 알아보도록 하겠습니다.

 

출력

데이터를 출력하기 위해서는 "printf"라는 함수를 사용합니다.

형식

printf("서식", 데이터);

서식은 다음과 같이 넣을 수 있습니다.

서식 데이터 타입 비고
%d int 부호 있는 10진수 정수
%u unsigned int 부호 없는 10진수 정수
%o int 8진수
%x int 16진수 정수 소문자
%X int 16진수 정수 대문자
%f float 실수
%lf double 실수
%e float, double 부동소수점 e(소문자) 방식 실수
%E float, double 부동소수점 E(대문자) 방식 실수
%c char 문자
%s,%S char*, char[] 문자열
%p void* 포인트형

데이터에는 변수 혹은 상수를 넣어서 출력을 합니다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
void main()
{
    int nNum = -10;
    float fNum = 12345.6789123f;
    double dbNum = 89789.123456f;
    char ch = 'H';
    char chString[20= "Hello World";
 
    printf("%%d %d\n", nNum);
    printf("%%u %u\n", nNum);
    printf("%%o %o\n", nNum);
    printf("%%x %x\n", nNum);
    printf("%%X %X\n", nNum);
    printf("%%f %f\n", fNum);
    printf("%%lf %lf\n", dbNum);
    printf("%%e %e\n", dbNum);
    printf("%%E %E\n", dbNum);
    printf("%%c %c\n", ch);
    printf("%%s %s\n", chString);
 
}
 
cs

 

 

입력

데이터를 입력받기 위해서는 "scanf"라는 함수를 사용합니다.

※ Visual Studio 사용시 
error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
이런 에러가 발생한다면 다음과 같이 하면 됩니다.

1. scanf대신 scanf_s를 사용합니다.

2. "#define _CRT_SECURE_NO_WARNINGS" 추가합니다.

 

형식

scanf("서식", &변수(변수주소));

서식은 다음과 같이 넣을 수 있습니다.

서식 데이터 타입 비고
%d int 부호 있는 10진수 정수
%u unsigned int 부호 없는 10진수 정수
%o int 8진수
%x int 16진수 정수 소문자
%f float 실수
%lf double 실수
%e float 부동소수점 e방식 실수
%c char 문자
%s,%S char*, char[] 문자열

변수는 scanf 함수는 서식에 맞춰서 변수주소로 접근해서 데이터를 입력을 합니다.

그로인해 변수앞에 변수의 주소값을 지칭하는 "&"를 추가합니다.

 

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
void main()
{
    int nNum1, nNum2, nNum3, nNum4;
    float fNum1, fNum2;
    double dbNum;
    char ch = 'H';
    char chString[20= "Hello World";
 
    
    printf("%%d : ");
    scanf("%d"&nNum1);
    while (getchar() != '\n');
 
    printf("%%u : ");
    scanf("%u"&nNum2);
    while (getchar() != '\n');
 
    printf("%%o : ");
    scanf("%o"&nNum3);
    while (getchar() != '\n');
 
    printf("%%x : ");
    scanf("%x"&nNum4);
    while (getchar() != '\n');
 
    printf("%%f : ");
    scanf("%f"&fNum1);
    while (getchar() != '\n');
 
    printf("%%lf : ");
    scanf("%lf"&dbNum);
    while (getchar() != '\n');
 
    printf("%%e : ");
    scanf("%e"&fNum2);
    while (getchar() != '\n');
 
    printf("%%c : ");
    scanf("%c"&ch);
    while (getchar() != '\n');
 
    printf("%%s : ");
    scanf("%s", chString); // 문자열은 chString 변수 자체가 주소이기 때문에 &를 제외합니다.
 
    printf("%%d %d\n", nNum1);
    printf("%%u %u\n", nNum2);
    printf("%%o %o\n", nNum3);
    printf("%%x %x\n", nNum4);
    printf("%%f %f\n", fNum1);
    printf("%%lf %lf\n", dbNum);
    printf("%%e %e\n", fNum2);
    printf("%%c %c\n", ch);
    printf("%%s %s\n", chString);
}
 
cs

 

※ "while (getchar() != '\n');" 코드 추가가 되는 이유

다음과 같이 입력후 엔터를 눌렀을 때 개행문자(\n)가 입력될 수 있기 때문에 추가합니다.

 

반응형
반응형

안녕하세요.

오늘은 저번 주에 변수와 상수에 이어서 배열에 대해 알아보도록 하겠습니다.

 

배열이란??

int형 변수 10개를 선언은 다음과 같이 할 수 있습니다.

int nNum1, nNum2, nNum3, nNum5, nNum6, nNum7, nNum8, nNum9, nNum10;

100개나 1000개를 선언하려면 하나씩 적기도 너무 번거롭고 관리도 어렵습니다.

이때 사용할 수 있는 게 배열입니다.

배열을 사용하게 되면 여러 개의 데이터를 수월하게 관리할 수 있게 됩니다.

형식

다음과 같이 초기화 하면서 배열 초기값을 넣을 수 있습니다.

데이터형 변수명[크기] = {배열1초기값, 배열2초기값, 배열3초기값...};

다른 방법으로 다음과 같이 초기화한 후 배열 값을 대입할 수도 있습니다.

데이터형 변수명[크기];

변수명[0] = 배열값;

변수명[1] = 배열 값;

 

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
 
void main()
{
    int arrNum[10];
 
    arrNum[0= 1;
    arrNum[1= 2;
    arrNum[2= 3;
    arrNum[3= 4;
    arrNum[4= 5;
    arrNum[5= 6;
    arrNum[6= 7;
    arrNum[7= 8;
    arrNum[8= 9;
    arrNum[9= 10;
 
    printf("arrNum[0] : %d\n", arrNum[0]);
    printf("arrNum[1] : %d\n", arrNum[1]);
    printf("arrNum[2] : %d\n", arrNum[2]);
    printf("arrNum[3] : %d\n", arrNum[3]);
    printf("arrNum[4] : %d\n", arrNum[4]);
    printf("arrNum[5] : %d\n", arrNum[5]);
    printf("arrNum[6] : %d\n", arrNum[6]);
    printf("arrNum[7] : %d\n", arrNum[7]);
    printf("arrNum[8] : %d\n", arrNum[8]);
    printf("arrNum[9] : %d\n", arrNum[9]);
}
 
cs

 

배열을 선언에 준 후 배열 값 0~9로 접근합니다.

그리고 배열을 "int arrNum[10];"으로 선언하면 메모리상에 연속으로 할당이 되게 됩니다.

 

 

다차원 배열

행, 열을 가진 데이터를 배열에 넣기 위해서는 다차원 배열을 이용할 수 있습니다.

예를 들면 학생들의 영어, 수학, 과학 성적을 배열에 넣는 경우에는 2차원 배열을 사용해서 넣을 수 있습니다.

형식

데이터형 변수명[행개수][열개수] = {배열1초기값, 배열2초기값, 배열3초기값...};

데이터형 변수명[행 개수][열개수];[행개수][열개수];

변수명[0][0] = 배열 값;

변수명[0][1] =배열 값;

변수명[1][0] = 배열 값;

변수명[1][1] = 배열 값;

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
 
void main()
{
    int arrNum[2][5];
 
    arrNum[0][0= 1;
    arrNum[0][1= 2;
    arrNum[0][2= 3;
    arrNum[0][3= 4;
    arrNum[0][4= 5;
    arrNum[1][0= 6;
    arrNum[1][1= 7;
    arrNum[1][2= 8;
    arrNum[1][3= 9;
    arrNum[1][4= 10;
    
 
    printf("arrNum[0][0] : %d\n", arrNum[0][0]);
    printf("arrNum[0][1] : %d\n", arrNum[0][1]);
    printf("arrNum[0][2] : %d\n", arrNum[0][2]);
    printf("arrNum[0][3] : %d\n", arrNum[0][3]);
    printf("arrNum[0][4] : %d\n", arrNum[0][4]);
    printf("arrNum[1][0] : %d\n", arrNum[1][0]);
    printf("arrNum[1][1] : %d\n", arrNum[1][1]);
    printf("arrNum[1][2] : %d\n", arrNum[1][2]);
    printf("arrNum[1][3] : %d\n", arrNum[1][3]);
    printf("arrNum[1][4] : %d\n", arrNum[1][4]);
}
 
cs

 

"int arrNum[2][5];"은 메모리상에는 다음과 같이 할당됩니다.

 

반응형
반응형

안녕하세요.

오늘은 변수와 상수에 대해 알아보도록 하겠습니다.

 

변수

숫자나 문자의 값들을 메모리에 넣어서 사용하기 위해서는 변수를 이용합니다.

형식

변수 초기값을 넣으려면 다음과 같이 합니다.

자료형 변수명 = 초기값;

초기값을 없이 변수를 선언 할 수 도 있습니다.

자료형 변수명;

 

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
 
void main()
    int nNum = 5;           // 정수 5를 int형(정수형) nNum에 대입합니다.
    char cCh = 'A';         // 문자 'A'를 char형(문자형) cCh에 대입합니다.
    int nNum1, nNum2;       // 변수 2개를 한번에 선언할 수 있습니다.
    float fNum3 = 4.8f;     // 실수 4.8을 float형(실수형) fNum3에 대입합니다.
    nNum1 = 15;
    nNum2 = 7;
 
    printf("nNum = %d\n", nNum);
    printf("cCh = %c\n", cCh);
    printf("nNum1 = %d\n", nNum1);
    printf("nNum2 = %d\n", nNum2);
    printf("fNum3 = %f\n", fNum3);
}
 
cs

자료형(Data Type)

 

변수명의 규칙

1. 알파벳(대소문자 구분), 숫자(첫글자에는 쓸수없음)로 선언합니다.

2. 공백을 사용할 수 없습니다.

3. 예약어(Keyword)를 사용할 수 없습니다.

4. 특수문자는 "_"만사용할 수 있습니다.

 

상수

상수에는 리터럴 상수와 심볼릭 상수가 있습니다.

리터럴 상수

1, 5 등과 같이 바로 넣어서 사용할 수 있는 상수를 말합니다.

심볼릭 상수

변하지 않는 변수를 말합니다.

const, #define을 사용하여 선언합니다.(const는 자료형이 있고, #define은 자료형이 없습니다)

보통 대문자를 사용하여 선언하게 됩니다.

형식

const int MAX_LEVEL 100;

#define MAX_SIZE 50

 

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
#define MAX_SIZE 50
 
void main()
{
    const int MAX_LEVEL = 100;
    const float HALF = 0.5f;
 
    printf("MAX_SIZE = %d\n", MAX_SIZE);
    printf("MAX_LEVEL = %d\n", MAX_LEVEL);
    printf("HALF = %f\n", HALF);
}
 
cs

 

반응형
반응형

안녕하세요.

오늘은 저번 시간에 간단하게 알아본 Hello World를 출력하는 프로그램을 이용하여, 

C언어의 기본 구조를 이해해보도록 하겠습니다.

아래는 저번시간에 만든 Hello World 출력 프로그램의 코드입니다.

하나하나 코드를 분석해보도록 하겠습니다.

1
2
3
4
5
6
7
#include <stdio.h>
 
void main()
    // Hello World를 출력합니다.
    printf("Hello World");
}
cs

 

#include <stdio.h>

stdio.h라는 파일을 포함하겠다는 뜻입니다.

stdio.h는 Standard Input/Output library의 약어로 여러형의 입출력 함수가 포함된 헤더파일입니다.

C언어로 코딩할때 항상 필요한 라이브러리 입니다.

 

void main()

C언어는 main이라는 함수부터 시작됩니다.

항상 시작점은 main함수입니다.

함수는 보통 리턴값을 가지게 되는데 void를 사용하면 반환값이 필요없습니다.

 

// Hello World를 출력합니다.

코드에 대한 설명을 하기 위해서는 "//" 이나 "/* */"을 사용할 수 있습니다. 

 

printf("Hello World");

printf함수는 문자열을 출력해주는 함수입니다.

모든 명령은 ";"(세미콜론)으로 끝냅니다.

 

반응형
반응형

안녕하세요.

오늘은 C언어에 대해 간단히 알아본 뒤 가장 간단한 프로그램인 Hello World를 출력하는 프로그램을 만들어 보도록 하겠습니다.

 

C언어란??

1972년 켄 톰슨과 데니스 리치가 벨 연구소에서 유닉스 운영 체제에서 사용하기 위하여 개발한 프로그래밍 언어가 C언어입니다.

많은 프로그래밍 언어에 기반에 되는 언어입니다, 

다른 언어들보다는 조금 어렵게 느껴질 수 있으나, C언어를 배우면 다른 언어를 배우기 조금더 수월하다고 생각이 듭니다.

절차적 프로그래밍 언어입니다.

 

개발툴 설치

C언어로 만든 코드를 컴파일할 수 있는 컴파일러가 필요합니다.

Dev-C++이나 Visual Studio(이하 VS)가 필요합니다.

다음 링크를 참조해주세요.

Dev-C++ 다운로드 & 설치

Visual Studio 2019 다운로드 및 설치

저는 아무래도 VS가 익숙하기 때문에 VS를 사용하여 강좌를 진행하도록 하겠습니다.

 

VS를 이용한 Hello World를 출력하는 프로그램 만들기

 

1. 설치한 VS를 실행합니다.

2. 새 프로젝트 만들기를 선택합니다.

3. 빈 프로젝트를 선택한 후 다음을 누릅니다.

4. 프로젝트이름을 적고, 저장될 경로를 지정합니다. 그 후 만들기 버튼을 누릅니다.

5. 프로젝트를 만들었으니, 이제는 코드를 입력할 파일을 만들겠습니다.

솔루션 탐색기에 소스 파일에 오른쪽 클릭 한 후 추가 - 새 항목을 선택합니다.

C++ 파일을 선택한 후 파일이름을 변경하고 난 뒤에 추가 버튼을 누릅니다.

8. Hello World를 출력하는 코드를 작성합니다.

1
2
3
4
5
6
#include <stdio.h>
 
void main()
{
    printf("Hello World");
}
cs

9. 컴파일을 합니다.

메뉴 - 빌드 - 컴파일을 누릅니다.(Ctrl+F7)

10. 빌드를 합니다.

메뉴 - 빌드 - HelloWorld빌드를 선택합니다.

11. 실행을 합니다.

메뉴 - 디버그 - 디버그하지 않고 시작을 누릅니다.

Ctrl+F5를 해도 됩니다.

사실 9(컴파일), 10(빌드)과정을 제외하고 바로 Ctrl+F5키를 누르면 빌드를 한 후 실행을 하게 됩니다.

반응형
반응형

안녕하세요.

오늘은 코드를 편집하거나 컴파일 시 많이 사용하는 Visual Stdio 2019를 설치해 보도록 하겠습니다.

 

Visual Studio란

마이크로 소프트에서 개발한 통합 개발 환경을 말합니다. 윈도우 운영체제에서 작동합니다.

 

Visual Studio 2019 다운로드 및 설치

1. 다음 사이트에서 Visual Studio Installer를 다운로드 받습니다.

https://visualstudio.microsoft.com/ko/vs/

 

Visual Studio 2019 | 무료 다운로드

Visual Studio에서 코드 완성, 디버깅, 테스트, Git 관리 및 클라우드 배포를 사용하여 코드를 작성할 수 있습니다. 지금 Community를 무료로 다운로드하세요.

visualstudio.microsoft.com

Community버전을 Installer 다운로드 받습니다.

 

다운로드 받은 Installer를 실행합니다.

계속 버튼을 누릅니다.

 

개발에 필요한 것을 선택해줍니다.

모두 설치해주면 좋겠지만, 용량이 크기때문에 필요한 작업을 선택합니다.

저는 유니티와 C++이 필요하기 때문에 C++를 사용한 데스크톱 개발과 Unity를 사용한 게임 개발만 체크한 후 설치를 하겠습니다. 기타 필요한게 있거나 하드 용량이 넉넉하시다면 모두 체크하셔도 좋을것 같습니다.

다운로드되면서 설치를 합니다. 설치가 완료될 때까지 기다립니다.

 

어느정도 설치 및 다운로드를 받은 후 재시작해야합니다.

 

재부팅 후 시작에서 Visual Studio 2019를 실행합니다.

 

마이크로 소프트 계정으로 로그인 하면, 프로젝트를 생성할 수 있습니다.

반응형
반응형

안녕하세요

Dev C++설치 한 후 Hello World프로젝트를 만들어보도록 하겠습니다.

Hello World 프로젝트 만들기

1. 메뉴 - 파일 - 새로 만들기 - 프로젝트로 프로젝트를 추가합니다.

2. Console Application을 선택한 후 프로젝트명을 입력하고 확인을 누릅니다.

3. 프로젝트가 저장될 경로를 지정한 후 저장버튼을 누릅니다.

4. 기본적으로 cpp파일 생성된 후 프로젝트가 추가되었습니다.

 

실행이 제대로 되는지 확인 하기 위해서

cout >> "Hello World"; 

이 코드를 추가하여 "Hello World"가 출력되도록 해보겠습니다.

전체 코드는 다음과 같습니다.

1
2
3
4
5
6
7
#include <iostream>
 
 
int main(int argc, char** argv) {
    std::cout << "Hello World";    // 추가 
    return 0;
}
cs

 

5. 그 후 "F10" 키를 누르거나, 메뉴 - 실행- 실행으로 프로그램을 실행시킵니다.

컴파일을 하지 않고 바로 실행을 하여 메세지 박스가 뜹니다.

"Yes"버튼을 누릅니다.

cpp파일을 저장합니다.

 

7. 컴파일에 문제가 없다면 실행이 됩니다.

반응형
반응형

안녕하세요

C나 C++을 실제 컴파일해서 실행해보려면 컴파일러가 필요한데요.

아무래도, Visual Studio는 설치하려면 용량이 조금 무겁기 때문에, 그런 이유로 사용이 꺼려진다면, Dev C++을 추천합니다.

Dev C++란

GNU 라이선스로 보급되는 C/C++ 통합 개발 환경입니다.

통합 개발 환경은 델파이로 작성되어있습니다.

윈도우에서 사용가능합니다.

 

Dev C++ 설치

Dev C++를 하려면 다음 사이트에 접속합니다.

https://sourceforge.net/projects/orwelldevcpp/

 

Dev-C++

Download Dev-C++ for free. A free, portable, fast and simple C/C++ IDE. A new and improved fork of Bloodshed Dev-C++

sourceforge.net

 

접속 후 다운로드 버튼을 눌러서 설치 파일을 받습니다.

설치파일을 실행합니다.

언어를 선택합니다. 기본적으로 "Korean"으로 되어있습니다.

"OK"버튼을 눌러 다음으로 넘어갑니다.

"동의함" 버튼을 누릅니다.

구성 요소 선택입니다.

따로 설정할것이 없다면, 다음 버튼을 누릅니다.

경로를 설정한 후 설치 버튼을 누릅니다..

설치가 됩니다.

 

잠시 기다리면 설치가 완료됩니다.

마침을 눌러서 실행시킵니다.

이제 Dev C++을 실행합니다.

언어를 설정한 후 Next버튼을 누릅니다.

 

테마설정을 한 후 Next버튼을 누릅니다.

구성설정이 완료되었습니다.

 

 

반응형

+ Recent posts