c언어 프로그래밍 기초문법 - 함수 

 

 

함수 (Function)

 

 

함수는 특정 행위, 동작을 수행하기 위해 만들어 놓은 기능을 말한다. 함수를 정의하지 않고 프로그래밍이 가능하지만 반복적인 동작을 효율적으로 수행할 수 있고, 유지보수 측면에서도 함수 사용이 용이하다. 코드 상에서 함수를 호출하는 순간, 코드가 함수의 수행문으로 ‘점프’한 뒤 수행문이 끝나면 ‘호출했던 위치’로 다시 돌아와 다음 코드를 수행한다.

함수를 사용하는 이유이자 특징은 첫 번째로 높은 재사용성이다. 함수를 한 번 만들어 놓으면 언제든 호출해 사용할 수 있다. 두 번째, 중복된 코드의 제거가 가능하다. 마지막으로 프로그램을 구조화할 수 있다.

함수의 기본 구조는 다음과 같다.

 

반환타입 함수이름(매개변수)
{
수행문
}

 

int Add(int iNum1, int iNum2)
{
	return (iNum1 + iNum2);
}

 

void PrintAdd(int iNum1, int iNum2)
{
	if (iNum1 == 0 && iNum2 == 0)
	{
		printf("둘 다 0이다.\n");
		return; //void일 때 그냥 return; 사용하면, 마치 반복문의 break;와 같은 효과 
	}
	printf("두 수의 합 : %d\n", (iNum1 + iNum2));
}

 

 

1) 매개변수

 

함수의 기능 수행을 위해, 함수가 호출 될 때 받을 값을 담는 변수다. 필요 여부에 따라 사용해도 되고 생략 또한 가능하다. 매개변수에 개수 제한은 없다.

매개변수는 ‘지역 변수’이기 때문에, 함수가 호출 됐을 때 생성되고 함수의 수행이 끝나면 자동으로 소멸한다.

 

 

 

2) 함수이름

 

이 함수가 어떠한 기능을 수행하는지 의미를 부여한다. 변수명을 정할 때처럼 함수 이름도 함수의 기능을 잘 드러내는 이름으로 짓는 것이 좋다. 다만, 변수명과 같이 C언어에 이미 정해진 내장 함수명과 겹치지 않도록 주의해야 한다.

 

 

 

3) 반환 타입(Return Type)

 

함수의 기능 수행이 끝나고, 호출했던 위치로 돌려줄 값의 타입이다. 쉽게 말해 함수의 최종적으로 반환되는 출력이 어떤 타입인지 나타낸다. 반환할 값이 없다면 void라고 명시한다.

반환 타입이 void가 아니면 반드시 함수의 수행문 안에 'return'이 있어야 한다. return을 이용해 반환 타입과 일치하는 값을 반환해줘야 하기 때문이다. 만약 반환 타입이 정수형(int) 면

'return 0;'처럼 정수를 반환해준다. 반환되는 값은 여러 개일 수 없다.

 

 

※ 반환 타입과 매개변수 유, 무에 따른 함수의 형태

1. 둘 다 있다.
2. 둘 다 없다.
3. 매개변수만 있다.
4. 반환타입(즉, 반환 값)만 있다.

 

※ 함수의 세 가지 상태

1. 선언 : 함수의 원형을 미리 알려주는 용도로 쓰인다. 뒤에 세미콜론(;)을 붙인다.
	> 함수의 원형 : ‘반환타입 함수명(매개변수);‘의 구조를 갖는다.
2. 정의 : 함수를 만든다. (수행문 작성)
3. 호출 : 함수를 사용한다. (매개변수가 있으면 함께 전달)

 

 

반응형

 C언어 프로그래밍, 입력, 출력 

1. 입력(Input)

 

C언어에서 사용자의 입력을 받는 함수는 scanf()이다.

함수 사용 방식은 ‘scanf("입력형식", 입력받을장소(공간, 변수))’처럼 사용한다.

입력 받을 장소는 ‘&’기호를 변수명 앞에 사용해 변수(공간)의 주소 값을 가져온다. scanf()를 사용한다는 것은 화면에서 입력한 내용을 특정 변수의 주소값에 저장한다는 것이다.

 

2. 출력(Output)

 

C언어에서 출력 기능을 가진 함수는 printf() 함수이다. 더 자세히 말해 printf는 형식 지정이 있는 출력을 한다. 여기서 형식 지정이란, 출력에 할 때 자료형에 맞는 형태로 문자를 사용해야 한다는 것이다. 이를 형식지정 문자라 한다.

 

서식문자

기능

%c

정수 값을 ‘문자’로 출력(문자 1개)

%d

정수 값을 10진수로 출력(부호 있음)

%o

정수 값을 8진수로 출력

%x , %X

정수 값을 16진수로 출력

%f

실수 값(소수) 출력

%s

문자열 출력

%p

16진수로 메모리 주소 출력

 

그리고 print에서 많이 사용되는 이스케이프 문자가 있다. 이것은 문자열 안에서 특수한 기능들을 하는 문자들이다.

 

이스케이프 문자

기능

\n

개행(새로운 줄)

\t

탭(tab) - 들여쓰기

\\

\를 문자로 사용

\‘

작은따옴표(‘)를 문자로 사용

\“

큰 따옴표(“)를 문자로 사용

 

예제

#include <stdio.h>

void main()
{	
	int a;
	int b;
	printf("두 수의 입력: ");
	scanf("%d %d", &a, &b);

	printf("a + b = %d\n", a + b);
	printf("a - b = %d\n", a - b);
	printf("a * b = %d\n", a * b);
	printf("a / b = %d\n", a / b);
	printf("a %% b = %d\n", a % b);
}
#incldue <stdio.h>

void main()
{
	int iNum = 0;
    
	printf("숫자 입력 : "); 
	scanf("%d", &iNum); 
    
	printf("입력한 숫자는 %d입니다.\n, iNum");
}

 

결과

두 수 입력 : 20 6
20 + 6 = 26
20 - 6 = 14
20 * 6 = 120
20 / 6 = 3
20 % 6 = 2
숫자 입력 : 5
입력한 숫자는 5입니다.

반응형

 C언어 프로그래밍 기초 

1. 주석(Comment)

 

주석의 사전적인 의미는 낱말이나 문장의 뜻을 쉽게 풀이한 것 또는 그런 글을 말한다.
C언어에서 주석은 짜놓은 코드를 설명하거나 표시를 할 때 사용하는 것이다. 주석은 컴파일러가 소스를 읽을 때 무시하는 문장이 된다.

주석을 사용하는 방법은 2가지가 있다.

- 한 줄짜리 주석 : 슬러시(/) 기호를 2번 사용한다.
- 여러 줄 주석 : /* 내용 */ 같이 사용하면 된다.

 

2. 자료형(Data Type)

 

실수치, 정수, 불린 자료형 따위의 여러 종류의 데이터를 식별하는 분류로서, 더 나아가 해당 자료형에 대한 가능한 값, 해당 자료형에서 수행을 마칠 수 있는 명령들, 데이터의 의미, 해당 자료형의 값을 저장하는 방식을 결정한다. 쉽게 말해 자료형이란 변수의 종류를 의미한다. 변수에 값을 담기 이전에 정수, 실수, 문자, 문자열 등 어떤 값들을 지닐 수 있는지 자료형을 미리 정해주어야 한다. 

C언어에서의 기본 자료형의 종류는 다음과 같다.

 

 

종 류

크 기

값의 표현범위

정수형

char

1byte

-128~ +127

short

2byte

-32,768~+32.767

int

4byte

-2,147,483,648~

+2,147,483,647

long

4byte

-2,147,483,648~

+2,147,483,647

long long

8byte

900경 이상

실수형

float

4byte

소수점 이하 6자리까지 정확도 보장

double

8byte

소수점 이하 15자리까지

long double

8byte

소수점 이하 19자리까지

 

정수형에는 부호가 있는 경우와 부호가 없는 경우로 나눌 수 있다. 먼저, 부호가 있는 변수를 만들 때 signed를 사용한다. 이것은 기본 형식이므로 따로 사용할 필요가 없다. 다음, 부호가 없는 정수형을 만들고 싶을 땐 unsigned를 선언 시에 사용해주면 된다. 

그럼 0부터 양수를 사용하게 되고 값의 표현범위도 양수 범위의 2배정도로 늘어난다. 예를 들어 int일 경우 값의 표현범위가 0 ~ 42억이 되는 것이다. 참고로 int와 double은 C언어에서 기본적으로 사용되는 정수와 실수 자료형이다.

 

3. 변수(Variable)

 

변수는 하나의 값을 저장할 수 있는 메모리 공간이다. 여기서 메모리 공간은 프로그램이 실행되는 동안 사용하는 공간(RAM)이다. 쉽게 말해 변수를 무엇인가를 담을 수 있는 상자이다.

변수를 만드는 방법(변수 선언)에는 크게 2가지가 있다.

① 자료형 변수명 = 초기값;

② 자료형 변수명;

첫 번째 방식은 변수 선언과 동시에 초기값을 지정하는 형태다. 두 번째 형태는 초기값 지정 없이 변수만을 선언하는 형태다. 참고로 C언어에서는 모든 문장의 끝에 ‘세미콜론(;)’을 사용한다.
변수 선언 시, 변수명을 정할 때 몇 가지 규칙이 존재한다. 변수명을 정할 때는 이 규칙들을 주의해서 사용해야 한다.


① 영문자, 숫자, 언더 바(_) 만 가능(한글이 가능하나 사용하지 않음)
   변수명 중간에 공백이 있어도 안 된다. (공백도 특수문자이기 때문이다.)


② 첫 글자는 반드시 영문이어야 한다. 그리고 대소문자 구분을 확실하게 해야 한다.
   프로그래밍 언어에서는 무조건 대소문자가 구분된다. (같은 명이라도 대소문자에 따라 
   다른 변수라고 인식한다.)


③ 예약어 사용이 불가능하다. 예약어란 C언어 내부에서 이미 정해진 함수와 같은 경우를 
   말하며 이와 같은 이름으로 변수명을 설정하면 오류가 나게 된다.


④ 변수명에 의미를 부여해 이름만 봐도 어떤 것을 나타내는지 알 수 있도록 정하는 것이 
   좋다. 예를 들어, 점수를 의미하는 변수를 만들시 Score1, score2 같이 만든다.

 

 

 

예제

 

#include<stdio.h>

void main() {
	char cValue = 'A'; // 변수명 cValue에 문자 'A'대입
	int iValue = 65; // 변수명 iValue에 정수 65대입

	printf("cValue 문자: %c\n", cValue); 
	printf("cValue 정수: %d\n", cValue);

	printf("iValue 문자: %c\n", iValue);
	printf("iValue 정수: %d\n", iValue);
    }

 

반응형

+ Recent posts