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언어 프로그래밍 기초 문법 

 

반복문

 

 

반복문이란 주어진 조건이 만족하면 반복하는 ‘제어문’이고 조건이 만족할지 않을 때까지 반복한다. 조건식에 들어가는 변수는 ‘조건변수’이며, 이 조건변수를 다루는 것이 반복문 사용에서 가장 중요하다. 조건변수의 용도는 몇 번 반복하며 값을 사용할지 결정하는 용도로 사용된다.

C언어에서 반복문은 3가지 경우가 있다.

 

 

 

1. for문

 

for문의 기본 사용형태는 다음과 같다.

 

for ( 초기식; 조건식; 증감식) // 3개의식
{
	수행문
}

 

초기식은 최초 한 번만 수행한다. 조건식은 조건이 참(True)이면 수행문을 수행하고,

증감식은 수행문을 수행 후 수행된다. for문의 수행 순서는 다음과 같다.

3개의 식들은 각각 생략이 가능하며, 모두 생략한 경우 항상 참(True)으로 간주한다.

즉 무한반복을 의미한다.

 

1. 초기식 수행
2. 조건식 판별
3. 수행문 수행 (조건이 참일 때)
4. 증감식 수행
5. 조건식 판별부터 반복 (조건 → 수행 → 증감 → 조건 → 수행 → 증감 ···)

 

 

 

2. while문

 

while (조건식)
{
수행문
}

 

if문과 구조는 같으나, 수행문이 끝난 후에 조건식으로 넘어가서 조건을 판별하는 것이 차이점이다. while문의 수행 순서는 다음과 같다.

 

1. 조건식 판별
2. 수행문 수행
3. 조건식 판별부터 반복 (조건 → 수행 → 조건 → 수행 ···)

 

 

3. do ~ while문

 

while문과 다르게 do~while문은 무조건 수행문을 1회 수행 후, 조건식을 판별한다. 그리고 또 다른 차이점은 조건식 뒤에 세미콜론(;)을 붙인다. 이 점을 주의하길 바란다.

 

사용형태는 다음과 같다.

 

do
{

수행문

} while (조건식);

 

※ 반복문, 조건문에서 사용하는 기능

 

1) break

현재 진행 중인 반복문을 빠져나간다. 주로 switch 조건문에서 사용한다.

 

2) continue

다음 수행문 코드를 진행하지 않고 다음 식으로 ‘점프’한다. continue는 반복문에서만 사용한다.

 

반응형

C언어 프로그래밍, C언어 기초 문법 

조건문(Conditional)

 

조건문은 주어진 조건에 따라 프로그램의 흐름을 바꾸고, 주어진 조건에 만족할 때 수행하는 ‘제어문’이다.

C언어에서 조건문은 2가지 형태로  사용한다.

 

1.if

 

if문은 가장 대표적인 조건문이다. if문의 기본 문법은 다음과 같다.

 

if(조건문){
	실행문1;
	실행문2;
}

 

 

조건식의 결과가 참(True)이면 중괄호 내부의 실행문들이 실행된다. 만약 조건식의 결과가 거짓(False)이면 실행문을 실행하지 않고 중괄호 밖의 다음으로 넘어간다. 조건식은 보통 비교 연산자를 사용해서 참, 거짓을 판별하는 경우가 많다. 그리고 조건식에 특별한 연산자 없이 숫자만 사용할 경우, 0(거짓)이 아닌 음수를 포함한 모든 숫자는 참으로 간주해서 수행문을 수행한다.

 

 

 

 

2. if~else문

 

 

조건식이 여려 경우일 때 if~else문을 이용할 수 있다. 다음과 같이 사용한다.

 

if ( 조건식1 )
{
	수행문1;  // 조건식1이 참일 경우 수행문1 실행
}
else if ( 조건식2 )
{
	수행문2; // 조건식1이 거짓이고, 조건식2가 참일 경우 수행문2 실행
}
else
{
	수행문3; // 조건식 1,2가 모두 거짓일 때 수행문3 실행
}

 

 

if문의 조건식1이 참이면 수행문 1을 수행하고 끝이 나고, 거짓이면 else if문의 조건식 2로 넘어간다. 만약 조건식 2가 참이면 수행문 2를 수행하고 조건문을 빠져나가며, 거짓이면 else문의 수행문 3을 수행 후 조건문을 빠져나간다.

else if문의 사용 수 는 제한이 없으며 조건의 수에 따라 결정하면 된다. else문은 조건식을 적지 않으며, 위의 모든 조건식들을 만족하지 않을 시 수행문을 수행하는 역할을 한다.

 

참고로, if문에서 수행문이 한 줄일 경우 중괄호를 사용하지 않아도 된다. 하지만 코드가 길어질 경우 수정 작업이 힘들어진다. 따라서 중괄호를 하는 습관을 들이는 것이 좋다.

 

 

 

3. switch~case문

 

하나의 조건으로 많은 경우의 수를 처리하고자 할 때 사용한다. switch의 조건식 결과는 ‘정수’만을 허용한다.(반드시 연산이 가능해야 한다) 그리고 case문의 값은 ‘정수 상수’만 가능하며 중복이 불가능하다. 이 구문에서 가장 중요한 것 중 하나가 바로 ‘break'다. break는 스위치 문을 빠져나가게 하는 기능을 가지고 있다. 만약 case를 만족하고 수행을 했는데, break가 없다면 그 아래 있는 모든 case는 만족한 것으로 간주해 스위치 문이 끝날 때까지 전부 수행하게 된다. 사용법은 다음과 같다.

 

switch(조건식)  // 연산 가능한 조건식
{
case 정수상수:
	수행문1;
	break;
case 정수상수:
	수행문2;
	break;
default :
	수행문;
}

 

위 구문은 조건식의 결과에 따라 해당하는 case문의 수행문을 수행하고 break를 만나면 스위치문을 빠져나간다. 여기서 default는 if문에서 else와 같이 모든 case의 경우가 해당되지 않을 때 수행하는 구간이다.

 

if문과 switch문은 서로 표현방식만 다를 뿐 기능은 같다. 따라서 코드를 작성할 때 알맞은 방식을 선택해 사용하면 된다.

 

 

예제

#include <stdio.h>

void main()
{
	int iAge = 0;
	printf("나이를 입력하세요 : ");
	scanf("%d", &iAge);

	// 조건식에는 보통 비교연산자를 사용 (참이면 1, 거짓이면 0)
	if (iAge > 19) // 조건식 
	{
		int iValue = 1; 	
		printf("성인입니다.\n");
		printf("iValue = %d\n", iValue);
	}
}

 

#include <stdio.h>

void main()
{
	// switch ~ case 응용
	// ~ 월을 입력 받고, 계절 출력 
	int iMonth = 0;
	printf("현재 월을 입력하세요 : ");
	scanf("%d", &iMonth);

	switch (iMonth)
	{
	case 3:
	case 4:
	case 5:
		printf("봄\n");
		break;
	case 6:
	case 7:
	case 8:
		printf("여름\n");
		break;
	case 9:
	case 10:
	case 11:
		printf("가을\n");
		break;
	case 12:
	case 1:
	case 2:
		printf("겨울\n");
		break;
	default :
		printf("잘못 입력하였습니다.\n");

	}
}
반응형

 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