본문 바로가기
코스웨어/16년 스마트컨트롤러

20160330_김도관_업무일지_C언어기초 및 리눅스기초

by 알 수 없는 사용자 2016. 4. 3.
728x90
반응형

리눅스


1.Bash ( Bourne Again Shell)

Bash 쉘은 리눅스 쉘이며 리눅스에서 가장 널리 사용되는 쉘


.bashrc 설정파일

~/.bashrc는 별칭(alias)과 bash가 수행될 때 실행되는 함수를 제어하는 지역적인 시스템 설정과 관련된 파일

별칭과 함수들은 오직 그 사용자에게만 한정되며, 그 이외의 다른 사람에게는 영향을 미치지 않는다

리눅스에서 .이 붙은 파일들은 중요파일들로써 기본 숨김처리가 됨



2.set 

로컬 환경변수를 조회하는 명령어


3.env
글로벌 환경변수를 조회하는 명령어

OS별 Path 실행 순서 차이 

 DOS

 현재 경로의 파일부터 먼저실행, 그뒤 path경로의 파일 실행

 유닉스

 path에 없으면 실행되지 않음, 명확해야됨

 리눅스

 일단 path경로 부터 찾아서 실행함,없으면 현재경로 의 파일 실행



gcc 

컴파일 
    gcc -o main main.c
실행
    ./main


C언어


GotoBasic.c

goto 는 베이직 쓰던 시절 쓰던 문법으로써 강제로 특정 위치로 이동해서 실행

문제가 있으므로 현재 잘 쓰이지 않는 방법

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
#include <stdio.h>
 
int main(void)
{
    int num;
    printf("자연수 입력: ");
    scanf("%d", &num);
 
    if(num == 1)
    {
        goto ONE;
    }
    else if(num == 2)
    {
        goto TWO;
    }
    else
    {
        goto OTHER;
    }
 
ONE:
    printf("1을 입력 하셨습니다! \n");
    goto END;
TWO:
    printf("2를 입력 하셨습니다! \n");
    goto END;
OTHER:
    printf("3혹은 다른 값을 입력 하셨습니다! \n");
END:
    return 0;
}
cs


break 
while문에서 주로 많이 사용 
반복문을 탈출 할때 사용됨

whilebreak.c

while 안의 조건이 만족하는동안 내부는 계속 진행됨

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main(void)
{
    int sum = 0;
    int num = 0;
 
    while(1)
    {
        sum+=num;
        if(sum>5000)
        {
            break;
        }
        num++;
            
    }
    printf("sum : %d \n",sum);
    printf("num : %d \n",num);
    
    return 0;
}
cs

삼항연산자

조건문을 비교하여 
참   일경우 앞의 num1의 값이 반환
거짓 일경우 뒤의 num2의 값이 반환

1
(num1 > num2) ? (num1) : (num2)
cs

if문으로 변환시



Switch case 문

조건문에 해당하는 값(A)를 가질때 case 중 A 를 찾아서 실행함

해당되는 조건 값이 없을때 default 를 실행함


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
 
#include <stdio.h>
 
int main(void)
{
    int num;
    printf("1이상 5이하의 정수 입력: ");
    scanf("%d", &num);
 
    switch(num)
    {
        case 1:
            printf("1은 ONE \n");
            break;
        case 2:
            printf("2는 TWO \n");
            break;
        case 3:
            printf("3은 THREE \n");
            break;
        case 4:
            printf("4는 FOUR \n");
            break;
        case 5:
            printf("5는 FIVE \n");
            break;
        default:
            printf("I don't know! \n");
     }
    return 0;
}
 
cs

AdvanES.c

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
#include <stdio.h>
 
int main(void)
{
    char sel;
    printf("M 오전, A 오후, E 저녁 \n");
    printf("입력: ");
    scanf("%c", &sel);
 
    switch(sel)
    {
        case 'M':
        case 'm':
            printf("Morning \n");
            break;
        case 'A':
        case 'a':
            printf("Afternoon \n");
            break;
        case 'E':
        case 'e':
            printf("Evening  \n");
            break;
     }
    return 0;
}
cs


scanf

키보드의 입력을 받아서 수행하는 함수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main(void)
{
    int inum;
    scanf("%d",&inum);
 
    if(inum != 1)
    {
        printf("100으로 종료합니다\n");
        return 100;
    }
    printf("0으로 종료합니다\n");
    return 0;
}
cs



PrintOutPut

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main(void)
{
    int num1;
    int num2;
    num1 = printf("12345\n");
    num2 = printf("I love my home\n");
    printf("%d %d \n", num1, num2);
    return 0;
}
cs

9번 : num1과 num2 의 글자 수를 읽어서 출력하고 있음


프로그래밍 

문제해결능력이 중요함

분석후 파악

함수 잘 쪼개는 능력이 필요

메인함수 종합


함수

SimpleAddFunc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int Add(int num1, int num2)
{
    return num1+num2;
}
 
int main(void)
{
    int result;
    result = Add(3,4);
    printf("덧셈결과1: %d \n",result);
    result = Add(5,8);
    printf("덧셈결과2: %d \n",result);
    return 0;
}
 
cs

Add 함수에 값을 전달해서 처리후 그 결과를 출력

순차적으로 진행하므로 처음 printf와 2번째 printf는 각각 별개로 출력됨


SmartAddFunc

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
#include <stdio.h>
 
int Add(int num1, int num2)
{
    return num1+num2;
}
 
void ShowAddResult(int num)
{
    printf("덧셈 결과 출력 : %d \n",num);
}
 
int ReadNum(void)
{
    int num;
    scanf("%d",&num);
    return num;
}
 
void HowToUseThisProg(void)
{    
    printf("두개의 정수를 입력하시면 덧셈결과가 출력 됩니다 \n");
    printf("자 ! 그럼 두개의 정수를 입력하세요  \n");
}
int main(void)
{
    int result;
    int num1;
    int num2;
    HowToUseThisProg();
    num1=ReadNum();
    num2=ReadNum();
    result = Add(num1,num2);
    ShowAddResult(result);
    return 0;
}
cs

두개의 정수를 입력해서 그 값을 더해서 출력하는 코드


AbsoCompare.c

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
#include <stdio.h>
 
int AbsoCompare(int num1, int num2);
int GetAbsoValue(int num);
 
int main(void)
{
    int num1;
    int num2;
 
    printf("두개의 정수 입력: ");
    scanf("%d %d", &num1, &num2);
    printf(" %d 와 %d중 절대값이 큰 정수 : %d 이다. \n",
            num1, num2, AbsoCompare(num1,num2));
    return 0;
}
 
int AbsoCompare(int num1, int num2)
{
    if(GetAbsoValue(num1) > GetAbsoValue(num2))
    {
        return num1;
    }
    else
    {
        return num2;
    }
}
int GetAbsoValue(int num)
    {
        if(num<0)
        {
            return num * (-1);
        }
        else
        {
            return num;
        }
    }
cs

두개의 정수를 입력받아서 

14번 AbsoComaper 함수에서 값을 받아서 

if문에 의해 29번 GetAbsoValue가 먼저 실행되어 0보다 작으면 -1을 곱해서 +로 만들어줌

그뒤 조건문에 의해 서로 비교한뒤 참일 경우 num1의 값을 반환 거짓일경우 num2를 반환함


NumberCompare

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>
 
int NumberCompare(int num1, int num2);
 
int main(void)
{
    printf("3과 4중에서 큰 수는 %d 이다. \n",NumberCompare(3,4));
    printf("7과 2중에서 큰 수는 %d 이다. \n",NumberCompare(7,2));
    return 0;
}
 
int NumberCompare(int num1, int num2)
{
    if(num1 > num2)
    {
        return num1;
    }
    else
    {
        return num2;
    }
}
 
cs

12번 NumberCompare 함수 - num1과 num2를 비교해서 참일 경우 num1, 거짓일 경우 num2의 값을 반환시킴

728x90