재귀함수 : 어떠한 함수가 있을 때 자기 자신을 호출하는 함수 ex1) 팩토리얼 #include int Factorial(int n) { if(n==0) return 1; else return n * Factorial(n-1); } int main(void) { printf("1! = %d \n", Factorial(1)); printf("2! = %d \n", Factorial(2)); printf("3! = %d \n", Factorial(3)); printf("4! = %d \n", Factorial(4)); printf("9! = %d \n", Factorial(9)); return 0; } ex2) 피보나치 수열 #include int Fibo(int n) { printf("func call p..
시간 복잡도(Time Complexity) : 어떤 알고리즘이 어떠한 상황에서 더 빠르고 더 느리냐 공간 복잡도(Space Complexity) : 어떤 알고리즘이 어떠한 상황에서 메모리를 적게 쓰고 또 많이 쓰냐 순차 탐색(Linear Search) T(n)=n #include int LSearch(int ar[], int len, int target) { int i; for (i = 0; i < len; i++) { if (ar[i] == target) return i; // 찾은 대상의 인덱스 값 반환 } return -1; // 찾지 못했음을 의미하는 값 반환 } int main(void) { int arr[] = { 3, 5, 2, 4, 9 }; int idx; idx = LSearch(arr,..
관계형 데이터 베이스 관계형 데이터베이스는 관계형 모델에 기반하여 데이터와 데이터들의 관계를 나타내기 위해 테이블들의 집합을 사용. 관계형 데이터베이스는 DML과 DDL을 포함. 대부분의 상업적인 관계형 데이터베이스 시스템은 SQL언어사용 테이블 각 테이블은 고유한 이름을 가진 여러개의 열로 구성. 관계형 모델은 레코드-기반 모델의 한 예이다. 레코드-기반 모델이라 명명한 것은 데이터베이스가 몇 개의 형으로 이루어진 고정 형식의 레코드로 구성되기 때문. 각 테이블은 특정한 형의 레코드들을 포함. 각 레코드형은 정해진 수의 필드(또는 속성)를 정의. 테이블의 각 열은 레코드형의 속성에 대응 데이터 조작 언어 SQL 질의 언어는 비절차적 언어이다. 입력으로 몇 개의 테이블(1개 가능)을 받아 항상 한 개의 ..
소개 데이터베이스 관리 시스템(DBMS)(Database Manage System) : 서로 관계있는 데이터들의 모임과 그 데이터에 접근하기 위한 프로그램의 집합으로 구성된다. 데이터베이스 : 보통 이 데이터들의 모임을 일컫는 말, 흔히 조직과 관련된 정보들을 포함 DBMS의 주요 목적 : 데이터베이스에 정보를 저장하고 이를 검색하기 위한 편리하고도 효율적인 환경을 제공 데이터베이스 시스테의 목적 파일 처리 시스템에 정보를 저장했을 때 많은 단점이 있다. => DBMS의 개발이 시급히 요청 데이터의 관점 DBMS : 서로 관련이 있는 파일의 모임과 사용자로 하여금 이 파일들을 액세스하거나 수정하도록 하는 프로그램의 집합 DBMS의 주요 목적 : 사용자에게 데이터에 관한 추상적인 관점을 제공하는 것 데이터..
파일의 분할 외부에 선언 및 정의되었다고 컴파일러에게 알려줘야 한다. extern int num; // int형 변수 num이 외부에 선언되어 있다. extern void Increment(void); // 함수는 extern 생략 가능 다른 파일에서 접근을 못하게 하고 싶다면 static 둘 이상의 파일을 컴파일하는 방법과 static에 대한 고찰 1. 이미 만들어진 파일을 프로젝트에 추가하는 방법 2. 프로젝트에 파일을 추가한 다음에 코드를 삽입하여 컴파일하는 방법 헤더 파일의 디자인과 활용 #include : 파일의 내용을 단순히 포함시키는 용도(그 이상도 이하도 아닌 포함) 헤더파일을 include 하는 두 가지 방법 1. #include 표준 헤더파일이 저장되어 있는 디렉터리에서 파일을 찾게된다..
선행처리기와 매크로 실행파일은 선행처리, 컴파일, 링크의 과정을 거쳐서 만들어진다. 선행처리가 하는 일은 삽입해 놓은 선행처리 명령문대로 소스코드의 일부를 수정하는 것이다. ex) #define PI 3.14 =>PI를 3.14로 수정 #include도 선행처리 명령문(stdio.h 파일의 냉요을 이곳에 가져다 놓으세요) 대표적인 선행처리 명령문 #define : Object-like macro #define PI 3.1415 지시자 매크로 매크로 몸체 이어서 등장하는 매크로(PI)를 마지막에 등장하는 매크로 몸체(3.1415)로 치환하라 PI와 같은 매크로를 오브젝트와 유사한 매크로, 또는 매크로 상수라고 한다. 매크로는 대문자로 #include #define NAME "홍길동" #define AGE ..
프로그램을 실행하면 해당 프로그램의 실행을 위한 메모리 공간이 운영체제에 의해서 미리 마련이 된다. 그리고 바로 이 메모리 공간 내에서 변수가 선언되고, 문자열이 선언되는 것이다. 운영체제에 의해 할당된 메모리의 구조 코드 영역, 데이터 영역, 힙 영역, 스택 영역 코드 영역 실행할 프로그램의 코드가 저장되는 메모리 공간. 따라서 CPU는 코드 영역에 저장된 명령문들을 하나씩 가져가서 실행 데이터 영역 전역변수와 static으로 선언되는 static 변수가 할당된다. 즉 프로그램의 시작과 동시에 메모리 공간에 할당되어 프로그램 종료 시까지 남아있게 된다. 스택 영역 지역변수와 매개변수가 할당된다. 이 영역에 할당된 변수들은 선언된 함수를 빠져나가면 소멸된다. 힙 영역 프로그램을 구현하다 보면, 이 데이터..
텍스트 데이터와 바이너리 데이터를 동시에 입출력하기 서식에 따른 데이터 입출력 : frpintf, fscanf fscanf는 파일의 끝에 도달하거나 오류가 발생하면 EOF를 반환한다. 쓰기 #include int main(void) { char name[10]; char sex; int age; FILE* fp; fopen_s(&fp,"friend.txt", "wt"); int i; for (i = 0; i < 3; i++) { printf("이름 성별 나이 순 입력: "); scanf_s("%s %c %d", name,10, &sex,1, &age); getchar(); //버퍼에 남아있는 \n의 소멸을 위해서 fprintf(fp, "%s %c %d", name, sex, age); } fclose(f..
