프로그래밍 프로젝트 복습


title: 프로그래밍 프로젝트 (first_function) tag: class


프로그래밍 프로젝트 복습을 한번도 안했는데, 갑자기 어려워진 관계로 복습을 시작한다. 이 과목이 내 발목을 잡겠지만, 큰 도움을 주리라 생각한다.

0. 리눅스 실습환경 구축

리눅스 환경을 구축해야 하지만, 맥북인 관계로 그냥 하기로 했다.

ssh - 프로토콜 - 암호화하는 프로토콜

ssh -p 122 ppst8@203.252.148.129

이렇게 들어간다. 난 post8번

scp -P 122 test222.c ppst23@203.252.148.129:/tmp/pp18/ppst8

vi test.c ## vi test.c 파일 생성
gcc test.c -o test.o ## gcc로 컴파일

비주얼 모드
e랑 b -> 한단어씩 이동
$ -> 끝으로 이동
x -> 지우기
d -> 한 줄 지우기
d2d -> 두 줄 지우기

찾기 -> 커서모드/v

바꾸기 - substitution

rm 폴더이름 -rf -> 폴더지우기
rm -rf -> 싹다지움

pwd > 현재 디렉토리

cd -> 어느 위치에 있어도 cd를 치면 홈으로 날라간다.

1. 함수 - function

주의 깊게 볼건 함수 원형 (function prototyping) : 컴파일러에게 함수에 대하여 미리 알리는 것. 절차지향 c언어니까 그런 것 같아~

반환형 함수이름(매개변수 1, 매개변수 2,...);

보통은 헤더 파일에 함수 원형이 선언되어 있다.

다중 소스 프로그램 : 함수 원형 정의는 헤더 파일에 들어있고 여러 파일에서 헤더 파일을 포함한다.

2018-03-31 8 51 50

라이브러리 함수 : 컴파일러에서 제공하는 함수 (표준 입출력, 수학 연산, 문자열 처리, 시간 처리, 오류처리, 데이터 검색과 정렬 등)

눈여겨 볼 함수 : 난수 생성 라이브러리 함수

※ 난수(random number)란 ? -> 특정한 배열 순서나 규칙을 가지지 않는 연속적인 임의의 수

시스템 라이브러리에서 제공하는 함수 rand()을 이용하면 난수를 만들 수 있는데, 이 함수를 사용하기 위해서는 stdlib.h 파일을 포함시켜야 한다.

함수 rand()에 의해 생성되는 정수는 [0,n]까지 즉 0부터 n사이의 임의의 정수이다. 즉, 0부터 n까지!

stdlib.h 파일을 열어보면 # define RAND_MAX 0x7fff 0x7fff를 10진수로 변환하면 32767이다. 즉 여기서는 [0,32767]의 범위 내에서 생성이 된다는 거다.

문제는 이렇게 하면 몇 번을 실행해도 같은 결과가 나온다. 그래서 위의 문제를 해결하기 위해 즉, 매번 난수를 다르게 발생시키기 위해,시드(seed)값을 주는 방법을 사용할 것이다.

srand()의 사용법 함수 time()으로 반환되는 값을 함수 srand()의 인자로 주면 고민 해결.

함수 time(NULL)은 1970년 1월 1일 이후의 경과된 시간을 초 단위로 반환하는 함수이다. 함수 time()을 사용하기 위해서는 헤더 파일 time.h를 포함시켜야 한다는 것 이지말길.

난수에 매번 다른 시드를 주기 위해서 srand(time(NULL))을 호출하면 된다.

// 난수 생성 프로그램
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
//n개의 난수를 화면에 출력한다.

void get_random(int n)
{
    int i;
    for (i = 0; i < n; i++)
        printf(" %6d\n",rand()); //0부터 RAND_MAX 까지의 난수를 생성한다.
}

int main(void)
{
    // 일반적으로 난수 발생기의 시드(seed)를 현재 시간으로 설정한다.
    // 현재 시간을 수행할 때마다 달라지기 때문이다.
    srand((unsigned)time(NULL));
    get_random(10);
    return 0;
    
}


참고자료

프로그래밍 프로젝트

0%