7주차: Functions and Arrays
Recursions Recursive functions 자기자신을 호출하는 함수
Recursions Example int factorial(int) 함수는 recursive functions이다. #include<stdio.h> int factorial(int n) { if(n <= 1) return 1; else return (n * factorial(n – 1)); } int main(void) printf(“%d\n”, factorial(7)); return 0; int factorial(int) 함수는 recursive functions이다. 이 프로그램은 7!을 출력한다. 빨간 부분이 자신을 호출하는 부분
Recursive Call 함수 호출 Return value factorial(7) 7 * factorial(6) 1 -예제 프로그램에서 factorial() 함수는 7번 호출된다. -최종적으로 factorial(7)은 7*6*5*4*3*2*1을 return 한다.
Recursive function 예 (1) 1+2+…+(n-1)+n 아이디어 반복되는 부분을 찾아낸다. n + sum(n-1) 반복의 종료 조건을 생각한다.
Recursive function 예 (2) #include<stdio.h> int sum(int n) { int i, sum = 0; for(i = 0 ; i <= n; i++) sum += i; return sum; } #include<stdio.h> int sum(int n) { } If(n == 1) return 1; return n + sum(n-1); 보통의 함수 정의 재귀적 함수 정의
#define Symbolic constant의 정의 #define PI 3.14 PI: symbolic constant
#define Example -컴파일시 프로그램의 모든NUM_STUDENT는 74로 대치된다. #include<stdio.h> #define NUM_STUDENT 74 int main(void) {... for(i = 0; i < NUM_STUDENT; i++) ... ... avg_score = sum_score / (double) NUM_STUDENT; return 0; } -컴파일시 프로그램의 모든NUM_STUDENT는 74로 대치된다. -학생의 수가 변경된 경우에 #define만 변경하면 프로그램의 모든 부분에 이 변경이 적용된다.
Arrays The data type array array는 인덱스가 붙어 있는 데이터 타입 One of the derived data types in C Derived data types이 뭐지? Fundamental data type(int, char, float, ...)을 이용해서 만들어지는 데이터 타입 array는 인덱스가 붙어 있는 데이터 타입 int a[10]; a[0], a[1], ..., a[9]
A Simple Array Example -com_score[i]는 배열(array)의 i번째 원소를 가리킨다. #include<stdio.h> #define NUM_STUDENT 74 int main(void) { double com_score[NUM_STUDENT]; ....(com_score[]를 파일에서 읽어 들이는 부분) for(i = 0; i < NUM_STUDENT; i++){ sum += com_score[i]; } .... -com_score[i]는 배열(array)의 i번째 원소를 가리킨다. -C에서 배열의 첨자는 0부터 시작한다. -이 프로그램에서 배열 com_score[]는 com_score[0]부터 com_score[73]까지 74개의 원소를 가진다.
Array Variable의 초기화 float f[3] = {0.0, 1.7, -9.7}; int a[100] = {1}; 초기화시키는 상수의 개수가 배열의 크기보다 적으면 이후의 원소들은 모두 0으로 초기화 int a[] = {1, 2}; int a[2] = {1, 2};
교재에서 강의와 연관된 부분 5장 5.14 6장 6.1