๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ Development Study/๐Ÿ’ป Win32API

ํ•จ์ˆ˜

by eazuooz 2022. 8. 18.

ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ณ„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ ๋ธ”๋Ÿญ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

C++์—์„œ ํ•จ์ˆ˜๋Š” ์ด๋ฆ„์ด ์ฃผ์–ด์ง€๊ณ  ํ”„๋กœ๊ทธ๋žจ์˜ ํŠน์ • ์ง€์ ์—์„œ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น๋ฌธ์˜ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹คํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๊ตฌ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค



type name ( parameter1, parameter2, ...) { statements }


type ๋ฐ˜ํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์ž…๋‹ˆ๋‹ค.

name ํ•จ์ˆ˜์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

(parameter 1,  parameter 2, …), ์ „๋‹ฌ์ธ์ž ์ž…๋‹ˆ๋‹ค. ํ˜ธ์ถœ๋œ ์œ„์น˜์—์„œ ํ•จ์ˆ˜์— ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


- statementsํ•จ์ˆ˜์˜ ๋ณธ์ฒด์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์„ ์ง€์ •ํ•˜๋Š” ์ค‘๊ด„ํ˜ธ { }๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ๋ช…๋ น๋ฌธ ๋ธ”๋ก์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

// function example
#include <iostream>
using namespace std;

int addition (int a, int b)
{
  int r;
  r=a+b;
  return r;
}

int main ()
{
  int z;
  z = addition (5,3);
  cout << "The result is " << z;
}
The result is : 8

์œ„์˜ ์˜ˆ์—์„œ ์ „๋‹ฌ์ธ์ž(argument)๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜(parameter)์— ๋ณต์‚ฌ๊ฐ€ ๋˜์–ด์„œ ๋„˜์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

 

return r;

Return ํ‚ค์›Œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜์—์„œ return ๊ฐ’์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ main์œผ๋กœ ๋Œ์•„๊ฐ€

Z๋ณ€์ˆ˜์— ๊ฐ’์„ ๋„ฃ์–ด์ค„์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 



๊ทธ๋Ÿฐ ๋‹ค์Œ main์€ ๋‹ค์Œ์„ ํ˜ธ์ถœํ•˜์—ฌ ์ด ๊ฐ’์„ ๊ฐ„๋‹จํžˆ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

cout << "The result is " << z;

ํ•จ์ˆ˜๋Š” ์‹ค์ œ๋กœ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•ด๋‹น ์ธ์ˆ˜๋Š” ๋‹น์—ฐํžˆ ๋ฆฌํ„ฐ๋Ÿด์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

// function example
#include <iostream>
using namespace std;

int subtraction (int a, int b)
{
  int r;
  r=a-b;
  return r;
}

int main ()
{
  int x=5, y=3, z;
  z = subtraction (7,2);
  cout << "The first result is " << z << '\n';
  cout << "The second result is " << subtraction (7,2) << '\n';
  cout << "The third result is " << subtraction (x,y) << '\n';
  z= 4 + subtraction (x,y);
  cout << "The fourth result is " << z << '\n';
}
์ฒซ ๋ฒˆ์งธ ๊ฒฐ๊ณผ๋Š” 5์ž…๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ ๊ฒฐ๊ณผ๋Š” 5์ž…๋‹ˆ๋‹ค.
์„ธ ๋ฒˆ์งธ ๊ฒฐ๊ณผ๋Š” 2์ž…๋‹ˆ๋‹ค.
๋„ค ๋ฒˆ์งธ ๊ฒฐ๊ณผ๋Š” 6์ž…๋‹ˆ๋‹ค

 

void ํƒ€์ž… ํ•จ์ˆ˜

ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์œ„์— ํ‘œ์‹œ๋œ ๊ตฌ๋ฌธ: ํƒ€์ž… ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์„ ์–ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์˜ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•จ์ˆ˜๊ฐ€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์ด๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํƒ€์ž…์€ , ๊ฐ’์ด ์—†์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํŠน์ˆ˜ํ•œ ํƒ€์ž…์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹จ์ˆœํžˆ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜๋Š” ์–ด๋–ค ๊ฐ’๋„ ๋ฐ˜ํ™˜ํ•  ํ•„์š”๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

// void function example
#include <iostream>
using namespace std;

void printmessage ()
{
  cout << "I'm a function!";
}

int main ()
{
  printmessage ();
}
"I'm a function!"

voidํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์—์„œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์‹ค์ œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ printmessage๊ณผ ๊ฐ™์ด ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

void printmessage (void)
{
  cout << "I'm a function!";
}




main์˜ ๋ฐ˜ํ™˜ ๊ฐ’

๊ฐ’ ์„ค๋ช…
0 ํ”„๋กœ๊ทธ๋žจ์€ ์„ฑ๊ณต์ ์ด์—ˆ๋‹ค
EXIT_SUCCESS ํ”„๋กœ๊ทธ๋žจ์ด ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค(์œ„์™€ ๋™์ผ).
์ด ๊ฐ’์€ header ์— ์ •์˜๋˜์–ด <cstdlib>์žˆ์Šต๋‹ˆ๋‹ค.
EXIT_FAILURE ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ฐ’์€ header ์— ์ •์˜๋˜์–ด <cstdlib>์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์ „๋‹ฌ์ธ์ž(argument)

์•ž์—์„œ ๋ณธ ํ•จ์ˆ˜์—์„œ ์ธ์ˆ˜๋Š” ํ•ญ์ƒ ๊ฐ’์œผ๋กœ ์ „๋‹ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค . ์ฆ‰, ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ํ•จ์ˆ˜์— ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ์€ ํ˜ธ์ถœ ์ˆœ๊ฐ„์— ์ด๋Ÿฌํ•œ ์ธ์ˆ˜์˜ ๊ฐ’์ด๋ฉฐ ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜์— ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

int x=5, y=3, z;
z = addition ( x, y );

X, y์˜ ๊ฒฝ์šฐ, ํ•จ์ˆ˜ ์ถ”๊ฐ€๋Š” ๊ฐ๊ฐ ๋ฐ ์˜ ๊ฐ’์˜ ๋ณต์‚ฌ๋ณธ์ธ 5์™€ 3์ด ์ „๋‹ฌ ๋ฉ๋‹ˆ๋‹ค

 

๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ํ•จ์ˆ˜ ๋‚ด์—์„œ ์™ธ๋ถ€ ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์ˆ˜์ •ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๊ฐ’ ๋Œ€์‹  ์ฐธ์กฐ ๋กœ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

// passing parameters by reference
#include <iostream>
using namespace std;

void duplicate (int& a, int& b, int& c)
{
  a*=2;
  b*=2;
  c*=2;
}

int main ()
{
  int x=1, y=3, z=7;
  duplicate (x, y, z);
  cout << "x=" << x << ", y=" << y << ", z=" << z;
  return 0;
}
x=2, y=6, z=14

์ฐธ์กฐ๋Š” ๋ณต์‚ฌ๋ณธ์ด ์•„๋‹Œ ์›๋ณธ ๊ทธ๋Œ€๋กœ์˜ ๋ณ€์ˆ˜๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

 

๋ฐ‘์—๋Š” ์ฐธ์กฐ ๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š๊ณ  ๊ฐ’์œผ๋กœ ์ „๋‹ฌ๋˜์–ด ๊ฐ’ ์˜ ๋ณต์‚ฌ๋ณธ์„ ๋Œ€์‹  ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ์€ ์ˆ˜์ •๋˜์ง€ ์•Š์€ x, y, ๊ฐ’ z์ด ๋ฉ๋‹ˆ๋‹ค(์ฆ‰, 1, 3, 7).

void duplicate (int& a, int& b, int& c)
void duplicate (int a, int b, int c)

 

 

ํšจ์œจ์„ฑ ๊ณ ๋ ค ์‚ฌํ•ญ ๋ฐ const ์ฐธ์กฐ

๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•ด์„œ ์ธ์ž๋กœ ๋„˜๊ฒจ์ฃผ๊ฒŒ ๋˜๋ฉด ๋ชจ๋“  ๊ฐ’๋“ค์„ ๋ณต์‚ฌํ•ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋–„๋ฌธ์—

์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ๋ถ€ํ•˜๊ฐ€ ์ƒ๊ธธ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

string concatenate (string a, string b)
{
  return a+b;
}



๊ทธ๋Ÿฌ๋‚˜ ๋‘ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ชจ๋‘ ์ฐธ์กฐ ๋˜๋Š” ๊ฒฝ์šฐ ์ด ๋ณต์‚ฌ๋ฅผ ๋ชจ๋‘ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

string concatenate (string& a, string& b)
{
  return a+b;
}

์ฐธ์กฐ์— ์˜ํ•œ ์ธ์ˆ˜์—๋Š” ์‚ฌ๋ณธ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹คํ•จ์ˆ˜๋Š” ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ๋ฌธ์ž์—ด(๋ณ„์นญ)์—์„œ ์ง์ ‘ ์ž‘๋™ํ•˜๋ฉฐ ๊ธฐ๊ปํ•ด์•ผ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ํŠน์ • ํฌ์ธํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š”๋ฐ  ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ์ฐธ์กฐ๋ฅผ ๋ฐ›๋Š” ๋ฒ„์ „์€ ๊ฐ’์„ ๋ฐ›๋Š” ๋ฒ„์ „๋ณด๋‹ค ๋ณต์‚ฌ ๋น„์šฉ์ด ๋งŽ์ด ์ ๊ฒŒ ๋“ค์–ด ํ›จ์”ฌ ํšจ์œจ์  ์ž…๋‹ˆ๋‹ค.



์ฐธ์กฐ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ด ํ•จ์ˆ˜์— ์˜ํ•ด ์ˆ˜์ •๋˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•˜๋ ค๋ฉด const ๋ฅผ ๋ถ™์—ฌ ์ƒ์ˆ˜ํ™” ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

string concatenate (const string& a, const string& b)
{
  return a+b;
}

const์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์‹ค์ œ๋กœ ๋ฌธ์ž์—ด์˜ ์‹ค์ œ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค์ง€ ์•Š๊ณ ๋„ ์ฐธ์กฐ(์ธ์ˆ˜์˜ ๋ณ„์นญ)๋กœ ํ•ด๋‹น ๊ฐ’์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

 

์ธ๋ผ์ธ ํ•จ์ˆ˜

ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ํŠน์ • ์˜ค๋ฒ„ํ—ค๋“œ(์ธ์ˆ˜ ์Œ“๊ธฐ, ์ ํ”„ ๋“ฑ...)๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋งค์šฐ ์งง์€ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋Œ€์‹  ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜์˜ ์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํžˆ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

Inline์„ ์„ ์–ธํ•˜๋ฉด ํŠน์ • ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฉ”์ปค๋‹ˆ์ฆ˜๋ณด๋‹ค ์ธ๋ผ์ธ ํ™•์žฅ์ด ์„ ํ˜ธ๋จ์„ ์ปดํŒŒ์ผ๋Ÿฌ์— ์•Œ๋ฆฝ๋‹ˆ๋‹ค์ด๊ฒƒ์€ ํ•จ์ˆ˜์˜ ๋™์ž‘์„ ์ „ํ˜€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์ง€๋งŒ, ์ผ๋ฐ˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋Œ€์‹  ํ•จ์ˆ˜ ๋ณธ๋ฌธ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ์ฝ”๋“œ๊ฐ€ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ฐ ์ง€์ ์— ์‚ฝ์ž…๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ œ์•ˆํ•˜๋Š” ๋ฐ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.



์˜ˆ๋ฅผ ๋“ค์–ด ์œ„์˜ ์—ฐ๊ฒฐ ํ•จ์ˆ˜๋Š” ์ธ๋ผ์ธ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

inline string concatenate (const string& a, const string& b)
{
  return a+b;
}

์ด๊ฒƒ์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ concatenate๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ํ”„๋กœ๊ทธ๋žจ์ด ์ผ๋ฐ˜ ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋Œ€์‹  ์ธ๋ผ์ธ์œผ๋กœ ํ™•์žฅ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ํ˜ธํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. inlineํ˜ธ์ถœ๋  ๋•Œ๊ฐ€ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜ ์„ ์–ธ์—์„œ๋งŒ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •์ž๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ํšจ์œจ์„ฑ์„ ๊ฐœ์„ ํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ์„ ๋•Œ ์ธ๋ผ์ธ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ด๋ฏธ ์ตœ์ ํ™” inlineํ•ฉ๋‹ˆ๋‹ค๋”ฐ๋ผ์„œ ์ด ์ง€์ •์ž๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ด ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์ธ๋ผ์ธ์ด ์„ ํ˜ธ๋จ์„ ๋‚˜ํƒ€๋‚ผ ๋ฟ์ด์ง€๋งŒ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ธ๋ผ์ธํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. C++์—์„œ ์ตœ์ ํ™”๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์— ์œ„์ž„๋œ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

 

๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ๊ฐ’

C++์—์„œ ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ธ์ˆ˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํ•จ์ˆ˜๋Š” ๋” ์ ์€ ์ธ์ˆ˜๋กœ ํ˜ธ์ถœ๋  ๋•Œ ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋งˆ์ง€๋ง‰ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ • ํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// default values in functions
#include <iostream>
using namespace std;

int divide (int a, int b=2)
{
  int r;
  r=a/b;
  return (r);
}

int main ()
{
  cout << divide (12) << '\n';
  cout << divide (20,4) << '\n';
  return 0;
}
6
5

์ด ์˜ˆ์—์„œ๋Š” function ์— ๋Œ€ํ•œ ๋‘ ๊ฐœ์˜ ํ˜ธ์ถœ์ด ์žˆ์Šต๋‹ˆ๋‹ค divide. ์ฒซ ๋ฒˆ์งธ์—์„œ:

divide (12)

ํ•จ์ˆ˜์— ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋”๋ผ๋„ ํ˜ธ์ถœ์€ ํ•˜๋‚˜์˜ ์ธ์ˆ˜๋งŒ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํ•จ์ˆ˜๋Š” ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ 2๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค(ํ•จ์ˆ˜ ์ •์˜์—์„œ ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋กœ ์„ ์–ธํ•จ int b=2). ๋”ฐ๋ผ์„œ ๊ฒฐ๊ณผ๋Š” 6์ž…๋‹ˆ๋‹ค

๋‘ ๋ฒˆ์งธ ํ˜ธ์ถœ์—์„œ:

divide (20,4)

ํ˜ธ์ถœ์€ ํ•จ์ˆ˜์— ๋‘ ๊ฐœ์˜ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. b๋”ฐ๋ผ์„œ ( ) ์˜ ๊ธฐ๋ณธ๊ฐ’ int b=2์€ ๋ฌด์‹œ b๋˜๊ณ  ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ๊ฐ’, ์ฆ‰ 4๋ฅผ ์ทจํ•˜์—ฌ ๊ฒฐ๊ณผ 5๋ฅผ ์‚ฐ์ถœํ•ฉ๋‹ˆ๋‹ค.

 

ํ•จ์ˆ˜ ์„ ์–ธ

ํ†ต์ƒ์ ์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹นํ•จ์ˆ˜๋ณด๋‹ค ์•ž ๋ถ€๋ถ„์— ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•จ์ˆ˜๊ฐ€ ๋” ์ฝ”๋“œ์˜ ๋’ค์— ์กด์žฌํ•˜๋”๋ผ๋„ ์•ž๋ถ€๋ถ„ํ•ด์„œ ํ•ด๋‹นํ•จ์ˆ˜์˜ ํ˜•ํƒœ๋ฅผ ๋ฏธ๋ฆฌ

์„ ์–ธํ•ด์ฃผ๋ฉด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

int protofunction (int first, int second);
int protofunction (int, int);

๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ํฌํ•จํ•˜๋ฉด ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

 

// declaring functions prototypes
#include <iostream>
using namespace std;

void odd (int x);
void even (int x);

int main()
{
  int i;
  do {
    cout << "Please, enter number (0 to exit): ";
    cin >> i;
    odd (i);
  } while (i!=0);
  return 0;
}

void odd (int x)
{
  if ((x%2)!=0) cout << "It is odd.\n";
  else even (x);
}

void even (int x)
{
  if ((x%2)==0) cout << "It is even.\n";
  else odd (x);
}

์ด ์˜ˆ๋Š” ์‹ค์ œ๋กœ ํšจ์œจ์„ฑ์˜ ์˜ˆ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ฝ”๋“œ ์ค„์˜ ์ ˆ๋ฐ˜์œผ๋กœ ์ด ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฒ„์ „์„ ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์ด ์˜ˆ์ œ๋Š” ์ •์˜ ์ „์— ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

 

 

์žฌ๊ท€

์žฌ๊ท€์„ฑ์€ ํ•จ์ˆ˜๊ฐ€ ์Šค์Šค๋กœ ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•˜๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค. ์š”์†Œ ์ •๋ ฌ ๋˜๋Š” ์ˆซ์ž์˜ ๊ณ„์Šน ๊ณ„์‚ฐ๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ์ž‘์—…์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆซ์ž( )์˜ ๊ณ„์Šน์„ ์–ป์œผ๋ ค๋ฉด n!์ˆ˜ํ•™ ๊ณต์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

n! = n * (n-1) * (n-2) * (n-3) ... * 1
๋” ๊ตฌ์ฒด์ ์œผ๋กœ 5!(5์˜ ๊ณ„์Šน)์€ ๋‹ค์Œ

5! = 5 * 4 * 3 * 2 * 1 = 120
๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. C++์—์„œ ์ด๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์žฌ๊ท€ ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

// factorial calculator
#include <iostream>
using namespace std;

long factorial (long a)
{
  if (a > 1)
   return (a * factorial (a-1));
  else
   return 1;
}

int main ()
{
  long number = 9;
  cout << number << "! = " << factorial (number);
  return 0;
}

์žฌ๊ท€ ํ•จ์ˆ˜์—์„œ ์šฐ๋ฆฌ๋Š” ์ž์‹ ์— ๋Œ€ํ•œ ํ˜ธ์ถœ์„ ํฌํ•จํ–ˆ์ง€๋งŒ ์ „๋‹ฌ๋œ ์ธ์ˆ˜๊ฐ€ 1๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—๋งŒ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•จ์ˆ˜๊ฐ€ 0์— ๋„๋‹ฌํ•˜๋ฉด ๊ณ„์†ํ•ด์„œ ๋ชจ๋“  ๊ฐ’์„ ๊ณฑํ•˜๋Š” ๋ฌดํ•œ ์žฌ๊ท€ ๋ฃจํ”„๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

'๐Ÿ“ Development Study > ๐Ÿ’ป Win32API' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

WinMain  (2) 2022.09.05
์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ํ…œํ”Œ๋ฆฟ  (0) 2022.08.18
๋ช…๋ น๋ฌธ ๋ฐ ํ๋ฆ„ ์ œ์–ด  (0) 2022.08.18
๊ธฐ๋ณธ ์ž…์ถœ๋ ฅ  (0) 2022.08.17
์—ฐ์‚ฐ์ž  (0) 2022.08.17

๋Œ“๊ธ€