본문 바로가기
학습/IT

[IT] C언어 입문(7) Function, 함수 - Goto문, getchar와 putchar, 함수 정의와 프로토타입 선언

by 개성공장 2021. 8. 25.
반응형

□ function, 함수

 

 * Conditional Operator, 조건연산자

 - conditional_expression ::= expr ? expr : expr

1. The first expr is evaluated

2. If it is nonzero, then the second expr is evaluated. Otherwise the third expr is evaluated

3. The value and the type of the conditional expression as a whole are the value and the type of the second or third expr evaluated

 - example

x = ( y < z ) ? y : z;

=>     if ( y < z ) x = y;
else x = z;

 

 * Goto Statement

 - labeled_statement ::= { label : }+ statement

 - label ::= identifier

 - goto label : control is unconditionally transferred to a labeled statement

 - In general, goto should be avoided

 - example

goto error;
...
error : {
		printf("error\n");
		exit(1);
}

 

 * getchar() and putchar()

 - getchar() : gets a value from the keyboard and return the value

 - putchar( c ) : the value of c is written to the standard output in the format of a character

 - Both defined in stdio.h

 - example

int c;
while ( ( c = getchar() ) != EOF ) {
	putchar( c );
}

(*EOF : end of file의 약자)

 

---

int c;
while ( ( c = getchar () ) != EOF ) {
	if ( c>= 'a' && c <= 'z' ) {
		putchar ( c + 'A' - 'a');
	} else {
		putchar( c );
	}
}

 => 글자를 모두 대문자로 출력

 

 * 예시

 - The sequence of Fibonacci numbers is defined recursively by, f0 = 0, f1 = 1, fn+1 = fn + fn-1 for n = 1, 2, 3 ...

 - Write a C program that computes a sequence of n Fibonacci numbers

 

---

#include<stdio.h>

int main(void) {
	int f1=0, f2=1, f3;

	printf("%8d%8d\n", 0, 0);
	printf("%8d%8d\n", 1, 1);
	for(int n=2; n<=20; n++) {
		f3 = f2 + f1;
		printf("%8d%8d\n", n, f3);
		f1 = f2;
		f2 = f3;
	}
	return 0;
}

---

 

Functions

 * Function Definition

 - In the form of,

 - type func_name ( param list ) { decis stmts }

 - header(name과 param list)와 body('{}' 부분)로 구분

 - return statement ::= return ; | return expr ;

 - example

---

#include<stdio.h>

int fact(int n)
{
	int i, p;
	for(p=1, i=2; i<=n; i++)
		p *= i;
	return p;
}

int main(void)
{
	int i;
	for(i=1; i<11; i++)
		printf("Factorial of %d is %d.\n", i, fact(i));
}

 

 * Function Prototypes

 - In the form of, type func_name ( param_type_list );

 - Functions must be declared before they are used (Forward declaration)

 - example

void foo(int, float);

=> void foo(int a, float b);

 - 선언과 정의의 차이에 유의

 

 * Call by Value Revisited

 - 함수를 사용하기 위해 미리 선언해두는 것

 - 함수의 이름, 변수 타입

※ C언어 입문 시리즈
1. Introduction - C언어의 역사와 기본 개념
2. Variables - 변수, 대입연산자, 구문규칙, 데이터타입 등
3. Data types, 데이터 타입(자료형)
4. Operators, 연산자 - scanf, 산술연산자, 관계연산자, 증감연산자, 대입연산자, 동등연산자 등
5. Operators, 연산자 - 논리연산자, 단축평가, 대입연산자, if문 및 while문 활용
6. Control flow, 제어흐름 - While문, For문, If문, do-while문 등 루프문
7. Function, 함수 - Goto문, getchar와 putchar, 함수 정의와 프로토타입 선언
8. Scope rules/recursion, 변수의 영역규칙과 재귀호출, 난수생성 예시
9. Array와 Pointers, 배열과 포인터
10. Pointer, 역참조, swap 함수 활용, 배열과 포인터 비교
11. File operation 파일연산, String, 다차원 배열 예시
12. structure, union, enumerated types - 구조체, 공용체, 열거체
13. 자료구조(data structure) 예시 - 연결리스트(linked list)
14. C 전처리기(C preprocessor), 함수 포인터(function pointer)
반응형

댓글