SlideShare a Scribd company logo
5. Swift 기초
- 기초 함수
창원대학교 정보통신공학과 박동규
2015. 12
함수 Function
• 프로그램의 기본적인 구성요소
• 어떤 작업을 수행하는 문장의 그룹
• 하나의 프로그램은 여러 개의 함수들이 모여서 이루어진
다
• 프로그램에서 레고 블럭과 같은 요소
• 가독성의 증대, 유지관리가 쉽다.
함수
Add10(x)
함수
Add10(x)
num=10
함수
Add10(x)num=10
함수
Add10(x)
함수
Add10(x) num=20
함수
Add10(x)
num=20
Swift의 함수
Swift의 함수
Swift의 함수
Swift의 함수
함수명
Swift의 함수
Swift의 함수
Swift의 함수
매개변수(인자,파라메터)
Swift의 함수
Swift의 함수
Swift의 함수
반환값
Swift의 함수
Swift의 함수
Swift의 함수
함수 몸체
Swift의 함수
Swift의 함수
Swift의 함수
함수 호출- 매개변수가 2개 이상이면 함수의 두번째
매개변수부터는 반드시 레이블을 붙여서 호출해야 한다
다중 반환값
• C/C++/Objective-C/Java 등의 언어에서는 함수가 하나
의 리턴값만을 가질 수 밖에 없어 불편함.
• 튜플(tuple)을 사용하면 여러 개의 값을 한꺼번에 반환할
수 있다.
• 함수의 예를 통해 알아보자
튜플을 이용한 반환
홍길동의 나이와 이름, 키를 반환하는 함수
swap 함수
swap 함수
swap 함수
tuple을 이용하여 반환값을 받아온다
튜플 재조합
함수 중복정의와 매개변수
함수 중복정의
C로 만든 Swap 함수
#include	<stdio.h>	
void	swap(																								)	{	
				int	temp;	
				temp	=	*num1;	
				*num1	=	*num2;	
				*num2	=	temp;	
}	
int	main(int	argc,	const	char	*	argv[])	{	
				int	n1	=	100,	n2	=	200;	
					
				printf("Before	:	n1	=	%d	n",n1);	
				printf("Before	:	n2	=	%d	n",n2);	
					
				swap(													);	
					
				printf("After	:	n1	=	%d	n",n1);	
				printf("After	:	n2	=	%d	n",n2);	
					
				return	0;	
}
C로 만든 Swap 함수
#include	<stdio.h>	
void	swap(																								)	{	
				int	temp;	
				temp	=	*num1;	
				*num1	=	*num2;	
				*num2	=	temp;	
}	
int	main(int	argc,	const	char	*	argv[])	{	
				int	n1	=	100,	n2	=	200;	
					
				printf("Before	:	n1	=	%d	n",n1);	
				printf("Before	:	n2	=	%d	n",n2);	
					
				swap(													);	
					
				printf("After	:	n1	=	%d	n",n1);	
				printf("After	:	n2	=	%d	n",n2);	
					
				return	0;	
}	 포인터 연산자를 이용하여 외부 변수값에 접근함
C로 만든 Swap 함수
#include	<stdio.h>	
void	swap(																								)	{	
				int	temp;	
				temp	=	*num1;	
				*num1	=	*num2;	
				*num2	=	temp;	
}	
int	main(int	argc,	const	char	*	argv[])	{	
				int	n1	=	100,	n2	=	200;	
					
				printf("Before	:	n1	=	%d	n",n1);	
				printf("Before	:	n2	=	%d	n",n2);	
					
				swap(													);	
					
				printf("After	:	n1	=	%d	n",n1);	
				printf("After	:	n2	=	%d	n",n2);	
					
				return	0;	
}	 포인터 연산자를 이용하여 외부 변수값에 접근함
&n1,	&n2
C로 만든 Swap 함수
#include	<stdio.h>	
void	swap(																								)	{	
				int	temp;	
				temp	=	*num1;	
				*num1	=	*num2;	
				*num2	=	temp;	
}	
int	main(int	argc,	const	char	*	argv[])	{	
				int	n1	=	100,	n2	=	200;	
					
				printf("Before	:	n1	=	%d	n",n1);	
				printf("Before	:	n2	=	%d	n",n2);	
					
				swap(													);	
					
				printf("After	:	n1	=	%d	n",n1);	
				printf("After	:	n2	=	%d	n",n2);	
					
				return	0;	
}	 포인터 연산자를 이용하여 외부 변수값에 접근함
&n1,	&n2
C로 만든 Swap 함수
#include	<stdio.h>	
void	swap(																								)	{	
				int	temp;	
				temp	=	*num1;	
				*num1	=	*num2;	
				*num2	=	temp;	
}	
int	main(int	argc,	const	char	*	argv[])	{	
				int	n1	=	100,	n2	=	200;	
					
				printf("Before	:	n1	=	%d	n",n1);	
				printf("Before	:	n2	=	%d	n",n2);	
					
				swap(													);	
					
				printf("After	:	n1	=	%d	n",n1);	
				printf("After	:	n2	=	%d	n",n2);	
					
				return	0;	
}	 포인터 연산자를 이용하여 외부 변수값에 접근함
&n1,	&n2
int	*num1,	int	*num2
C로 만든 Swap 함수
#include	<stdio.h>	
void	swap(																								)	{	
				int	temp;	
				temp	=	*num1;	
				*num1	=	*num2;	
				*num2	=	temp;	
}	
int	main(int	argc,	const	char	*	argv[])	{	
				int	n1	=	100,	n2	=	200;	
					
				printf("Before	:	n1	=	%d	n",n1);	
				printf("Before	:	n2	=	%d	n",n2);	
					
				swap(													);	
					
				printf("After	:	n1	=	%d	n",n1);	
				printf("After	:	n2	=	%d	n",n2);	
					
				return	0;	
}	 포인터 연산자를 이용하여 외부 변수값에 접근함
&n1,	&n2
int	*num1,	int	*num2
C++로 만든 Swap 함수#include	<iostream>	
using	namespace	std;	
void	swap(																								)	{	
				int	temp;	
				temp	=	num1;	
				num1	=	num2;	
				num2	=	temp;	
}	
int	main(int	argc,	const	char	*	argv[])	{	
				int	n1	=	100,	n2	=	200;	
					
			cout	<<	"Before	:	n1	=	"	<<	n1	<<	endl;	
				cout	<<	"Before	:	n2	=	"	<<	n2	<<	endl;	
					
				swap(											);	
					
				cout	<<	"After	:	n1	=	"	<<	n1	<<	endl;	
				cout	<<	"After	:	n2	=	"	<<	n2	<<	endl;	
					
				return	0;	
}
C++로 만든 Swap 함수#include	<iostream>	
using	namespace	std;	
void	swap(																								)	{	
				int	temp;	
				temp	=	num1;	
				num1	=	num2;	
				num2	=	temp;	
}	
int	main(int	argc,	const	char	*	argv[])	{	
				int	n1	=	100,	n2	=	200;	
					
			cout	<<	"Before	:	n1	=	"	<<	n1	<<	endl;	
				cout	<<	"Before	:	n2	=	"	<<	n2	<<	endl;	
					
				swap(											);	
					
				cout	<<	"After	:	n1	=	"	<<	n1	<<	endl;	
				cout	<<	"After	:	n2	=	"	<<	n2	<<	endl;	
					
				return	0;	
}	
참조 연산자 & 를 이용하여 쉽게 변수값에 접근함
C++로 만든 Swap 함수#include	<iostream>	
using	namespace	std;	
void	swap(																								)	{	
				int	temp;	
				temp	=	num1;	
				num1	=	num2;	
				num2	=	temp;	
}	
int	main(int	argc,	const	char	*	argv[])	{	
				int	n1	=	100,	n2	=	200;	
					
			cout	<<	"Before	:	n1	=	"	<<	n1	<<	endl;	
				cout	<<	"Before	:	n2	=	"	<<	n2	<<	endl;	
					
				swap(											);	
					
				cout	<<	"After	:	n1	=	"	<<	n1	<<	endl;	
				cout	<<	"After	:	n2	=	"	<<	n2	<<	endl;	
					
				return	0;	
}	
참조 연산자 & 를 이용하여 쉽게 변수값에 접근함
n1,	n2
C++로 만든 Swap 함수#include	<iostream>	
using	namespace	std;	
void	swap(																								)	{	
				int	temp;	
				temp	=	num1;	
				num1	=	num2;	
				num2	=	temp;	
}	
int	main(int	argc,	const	char	*	argv[])	{	
				int	n1	=	100,	n2	=	200;	
					
			cout	<<	"Before	:	n1	=	"	<<	n1	<<	endl;	
				cout	<<	"Before	:	n2	=	"	<<	n2	<<	endl;	
					
				swap(											);	
					
				cout	<<	"After	:	n1	=	"	<<	n1	<<	endl;	
				cout	<<	"After	:	n2	=	"	<<	n2	<<	endl;	
					
				return	0;	
}	
참조 연산자 & 를 이용하여 쉽게 변수값에 접근함
n1,	n2
C++로 만든 Swap 함수#include	<iostream>	
using	namespace	std;	
void	swap(																								)	{	
				int	temp;	
				temp	=	num1;	
				num1	=	num2;	
				num2	=	temp;	
}	
int	main(int	argc,	const	char	*	argv[])	{	
				int	n1	=	100,	n2	=	200;	
					
			cout	<<	"Before	:	n1	=	"	<<	n1	<<	endl;	
				cout	<<	"Before	:	n2	=	"	<<	n2	<<	endl;	
					
				swap(											);	
					
				cout	<<	"After	:	n1	=	"	<<	n1	<<	endl;	
				cout	<<	"After	:	n2	=	"	<<	n2	<<	endl;	
					
				return	0;	
}	
참조 연산자 & 를 이용하여 쉽게 변수값에 접근함
n1,	n2
int	&num1,	int	&num2
C++로 만든 Swap 함수#include	<iostream>	
using	namespace	std;	
void	swap(																								)	{	
				int	temp;	
				temp	=	num1;	
				num1	=	num2;	
				num2	=	temp;	
}	
int	main(int	argc,	const	char	*	argv[])	{	
				int	n1	=	100,	n2	=	200;	
					
			cout	<<	"Before	:	n1	=	"	<<	n1	<<	endl;	
				cout	<<	"Before	:	n2	=	"	<<	n2	<<	endl;	
					
				swap(											);	
					
				cout	<<	"After	:	n1	=	"	<<	n1	<<	endl;	
				cout	<<	"After	:	n2	=	"	<<	n2	<<	endl;	
					
				return	0;	
}	
참조 연산자 & 를 이용하여 쉽게 변수값에 접근함
n1,	n2
int	&num1,	int	&num2
Swift로 만든 Swap 함수1
import	Foundation	
func	swap(n1:Int,	n2:Int)	->	(Int,	Int){	
				return	(n2,	n1)	
}	
var	n1	=	100	
var	n2	=	200	
print("Before	:	n1	=	(n1)")	
print("Before	:	n2	=	(n2)")	
(n1,	n2)	=	swap(n1,	n2)	
print("After	:	n1	=	(n1)")	
print("After	:	n2	=	(n2)")
Swift로 만든 Swap 함수1
import	Foundation	
func	swap(n1:Int,	n2:Int)	->	(Int,	Int){	
				return	(n2,	n1)	
}	
var	n1	=	100	
var	n2	=	200	
print("Before	:	n1	=	(n1)")	
print("Before	:	n2	=	(n2)")	
(n1,	n2)	=	swap(n1,	n2)	
print("After	:	n1	=	(n1)")	
print("After	:	n2	=	(n2)")
튜플을 반환하는 방식으로 간단하게 구현가능
Swift로 만든 Swap 함수1
import	Foundation	
func	swap(n1:Int,	n2:Int)	->	(Int,	Int){	
				return	(n2,	n1)	
}	
var	n1	=	100	
var	n2	=	200	
print("Before	:	n1	=	(n1)")	
print("Before	:	n2	=	(n2)")	
(n1,	n2)	=	swap(n1,	n2)	
print("After	:	n1	=	(n1)")	
print("After	:	n2	=	(n2)")
튜플을 반환하는 방식으로 간단하게 구현가능
Swift로 만든 Swap 함수2
import	Foundation	
func	swap(inout	a:	Int,	inout	b:	Int)	
{	
				let	temporaryA	=	a	
				a	=	b	
				b	=	temporaryA	
}	
var	n1	=	100	
var	n2	=	200	
print("Before	:	n1	=	(n1)")	
print("Before	:	n2	=	(n2)")	
swap(&n1,	&n2)	
print("After	:	n1	=	(n1)")	
print("After	:	n2	=	(n2)")
Swift로 만든 Swap 함수2
import	Foundation	
func	swap(inout	a:	Int,	inout	b:	Int)	
{	
				let	temporaryA	=	a	
				a	=	b	
				b	=	temporaryA	
}	
var	n1	=	100	
var	n2	=	200	
print("Before	:	n1	=	(n1)")	
print("Before	:	n2	=	(n2)")	
swap(&n1,	&n2)	
print("After	:	n1	=	(n1)")	
print("After	:	n2	=	(n2)")
Swift로 만든 Swap 함수2
import	Foundation	
func	swap(inout	a:	Int,	inout	b:	Int)	
{	
				let	temporaryA	=	a	
				a	=	b	
				b	=	temporaryA	
}	
var	n1	=	100	
var	n2	=	200	
print("Before	:	n1	=	(n1)")	
print("Before	:	n2	=	(n2)")	
swap(&n1,	&n2)	
print("After	:	n1	=	(n1)")	
print("After	:	n2	=	(n2)")
게
Swift로 만든 Swap 함수2
import	Foundation	
func	swap(inout	a:	Int,	inout	b:	Int)	
{	
				let	temporaryA	=	a	
				a	=	b	
				b	=	temporaryA	
}	
var	n1	=	100	
var	n2	=	200	
print("Before	:	n1	=	(n1)")	
print("Before	:	n2	=	(n2)")	
swap(&n1,	&n2)	
print("After	:	n1	=	(n1)")	
print("After	:	n2	=	(n2)")
게
inout과 & 연산자를 사용하여 외부값을 참조할 수 있음
inout
• 매개변수 중에서 함수내에서 변경된 매개변수가 함수 호
출이 종료된 시점에서도 계속 유지되기를 원한다면
inout 키워드를 사용한다
• 매개변수의 값은 함수 안으로 전달되어 변경되고, 함수에
서 나와서 원래의 값을 대체함
• 인수를 입출력 파라메터로 넘길때 변수의 이름 앞에 앰퍼
샌드(&)를 붙인다
BONUS : Swift로 만든 Swap
-함수사용이 필요하지 않음
import	Foundation	
var	n1	=	100	
var	n2	=	200	
print("Before	:	n1	=	(n1)")	
print("Before	:	n2	=	(n2)")	
(n1,	n2)	=	(n2,	n1)		//	튜플사용	
print("After	:	n1	=	(n1)")	
print("After	:	n2	=	(n2)")
BONUS : Swift로 만든 Swap
-함수사용이 필요하지 않음
import	Foundation	
var	n1	=	100	
var	n2	=	200	
print("Before	:	n1	=	(n1)")	
print("Before	:	n2	=	(n2)")	
(n1,	n2)	=	(n2,	n1)		//	튜플사용	
print("After	:	n1	=	(n1)")	
print("After	:	n2	=	(n2)")
BONUS : Swift로 만든 Swap
-함수사용이 필요하지 않음
import	Foundation	
var	n1	=	100	
var	n2	=	200	
print("Before	:	n1	=	(n1)")	
print("Before	:	n2	=	(n2)")	
(n1,	n2)	=	(n2,	n1)		//	튜플사용	
print("After	:	n1	=	(n1)")	
print("After	:	n2	=	(n2)")
(Int, Int) 튜플을 (Int, Int) 튜플에 복사함
정리
• Swift의 함수는 튜플타입 반환을 허용한다
• 함수의 두번째 매개변수부터는 반드시 레이블을 붙여야
한다
• Swift 2.0 이상
• 함수이름의 중복정의를 허용한다
• inout을 통해서 함수내에서 매개변수의 수정을 허용한다
감사합니다
dongupak@gmail.com

More Related Content

PDF
6 swift 고급함수
PDF
9 swift 클로저1
PDF
Java8 & Lambda
PPTX
Java8 람다
PDF
Swift3 subscript inheritance initialization
PDF
Swift3 typecasting nested_type
PDF
Swift3 generic
PDF
Lambda 란 무엇인가
6 swift 고급함수
9 swift 클로저1
Java8 & Lambda
Java8 람다
Swift3 subscript inheritance initialization
Swift3 typecasting nested_type
Swift3 generic
Lambda 란 무엇인가

What's hot (20)

PDF
Java 8 api :: lambda 이용하기
PDF
자바8 스트림 API 소개
PDF
Function & Closure about Swift
PPTX
자바 8 학습
PDF
나에 첫번째 자바8 람다식 지앤선
PDF
Realm.io for iOS
PDF
Template at c++
PDF
프로그래밍 대회: C++11 이야기
PDF
8 swift 중첩함수
PPTX
[devil's camp] - 알고리즘 대회와 STL (박인서)
PDF
스위프트 성능 이해하기
PPTX
C++11
PDF
자바8 람다식 소개
PPTX
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
PPTX
Startup JavaScript 4 - 객체
PDF
[C++ Korea 2nd Seminar] C++17 Key Features Summary
PDF
iOS 메모리관리
PDF
Javascript 교육자료 pdf
PDF
Modern C++ 프로그래머를 위한 CPP11/14 핵심
PDF
C++에서 Objective-C까지
Java 8 api :: lambda 이용하기
자바8 스트림 API 소개
Function & Closure about Swift
자바 8 학습
나에 첫번째 자바8 람다식 지앤선
Realm.io for iOS
Template at c++
프로그래밍 대회: C++11 이야기
8 swift 중첩함수
[devil's camp] - 알고리즘 대회와 STL (박인서)
스위프트 성능 이해하기
C++11
자바8 람다식 소개
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 4 - 객체
[C++ Korea 2nd Seminar] C++17 Key Features Summary
iOS 메모리관리
Javascript 교육자료 pdf
Modern C++ 프로그래머를 위한 CPP11/14 핵심
C++에서 Objective-C까지
Ad

Viewers also liked (15)

PDF
Homeopathy—quackery or a key to the future of medicine?
PPTX
2014 Smartfonowe e-kursy z wykorzystaniem Moodle
PDF
Vesneske Human Resources Resume 2016
PDF
articleHealth professionals’ and families’ understanding of the role ofindivi...
PDF
Checklist para Confidente
PDF
My Certificate
PDF
approach piece with ppa
PDF
Com project
DOC
Cognitve Behavioural Therapy: A basic overview (written document)
DOCX
Lkmu paket b mts n kebumen 1
PPT
Disorders of pharynx, dr.sithanandhakumar,25.07.2016
PPTX
Plućna hipertenzija predavanje
PDF
Ametta Place
Homeopathy—quackery or a key to the future of medicine?
2014 Smartfonowe e-kursy z wykorzystaniem Moodle
Vesneske Human Resources Resume 2016
articleHealth professionals’ and families’ understanding of the role ofindivi...
Checklist para Confidente
My Certificate
approach piece with ppa
Com project
Cognitve Behavioural Therapy: A basic overview (written document)
Lkmu paket b mts n kebumen 1
Disorders of pharynx, dr.sithanandhakumar,25.07.2016
Plućna hipertenzija predavanje
Ametta Place
Ad

Similar to 5 swift 기초함수 (20)

PDF
Swift의 함수와 메소드
PDF
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
PPTX
About Visual C++ 10
PPTX
강의자료 2
PDF
C++17 Key Features Summary - Ver 2
PDF
Effective modern cpp item14
PPTX
불어오는 변화의 바람, From c++98 to c++11, 14
PDF
함수적 사고 2장
PDF
병렬 프로그래밍
PDF
NDC11_슈퍼클래스
PPTX
7가지 동시성 모델 - 3장. 함수형 프로그래밍
PPTX
20150212 c++11 features used in crow
PPTX
C언어 세미나 - 함수
PPT
카사 공개세미나1회 W.E.L.C.
PPTX
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
PDF
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
PDF
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
PPTX
Changes in c++0x
PDF
C++20 Key Features Summary
PPTX
[C++ Korea 2nd Seminar] Ranges for The Cpp Standard Library
Swift의 함수와 메소드
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
About Visual C++ 10
강의자료 2
C++17 Key Features Summary - Ver 2
Effective modern cpp item14
불어오는 변화의 바람, From c++98 to c++11, 14
함수적 사고 2장
병렬 프로그래밍
NDC11_슈퍼클래스
7가지 동시성 모델 - 3장. 함수형 프로그래밍
20150212 c++11 features used in crow
C언어 세미나 - 함수
카사 공개세미나1회 W.E.L.C.
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
Changes in c++0x
C++20 Key Features Summary
[C++ Korea 2nd Seminar] Ranges for The Cpp Standard Library

More from Changwon National University (20)

PDF
생성인공지능둘러보기.pdf
PDF
2011 app center Changwon National Univ.
PDF
인공지능의 파도가 온다
PDF
Mobile Healthcare Application
PDF
PDF
알아두면 편리한 macOS 에디터 단축키와 기능
PDF
키보드 기호의 이름 알아보기(한국어, 영어)
PDF
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
PDF
20 2 강의를 마치며
PDF
20 1 코딩스타일
PDF
18 2 파이썬표준라이브러리
PDF
18 1 파이썬패키지
PDF
17 2 필터함수와 맵함수
PDF
17 1 람다함수
PDF
16 1 상속과super()
PDF
15 2 클래스정의와self
PDF
14 4 슬라이싱
PDF
14 3 리스트함수
PDF
14 1 리스트의 메소드
생성인공지능둘러보기.pdf
2011 app center Changwon National Univ.
인공지능의 파도가 온다
Mobile Healthcare Application
알아두면 편리한 macOS 에디터 단축키와 기능
키보드 기호의 이름 알아보기(한국어, 영어)
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
20 2 강의를 마치며
20 1 코딩스타일
18 2 파이썬표준라이브러리
18 1 파이썬패키지
17 2 필터함수와 맵함수
17 1 람다함수
16 1 상속과super()
15 2 클래스정의와self
14 4 슬라이싱
14 3 리스트함수
14 1 리스트의 메소드

5 swift 기초함수

  • 1. 5. Swift 기초 - 기초 함수 창원대학교 정보통신공학과 박동규 2015. 12
  • 2. 함수 Function • 프로그램의 기본적인 구성요소 • 어떤 작업을 수행하는 문장의 그룹 • 하나의 프로그램은 여러 개의 함수들이 모여서 이루어진 다 • 프로그램에서 레고 블럭과 같은 요소 • 가독성의 증대, 유지관리가 쉽다.
  • 24. Swift의 함수 함수 호출- 매개변수가 2개 이상이면 함수의 두번째 매개변수부터는 반드시 레이블을 붙여서 호출해야 한다
  • 25. 다중 반환값 • C/C++/Objective-C/Java 등의 언어에서는 함수가 하나 의 리턴값만을 가질 수 밖에 없어 불편함. • 튜플(tuple)을 사용하면 여러 개의 값을 한꺼번에 반환할 수 있다. • 함수의 예를 통해 알아보자
  • 26. 튜플을 이용한 반환 홍길동의 나이와 이름, 키를 반환하는 함수
  • 29. swap 함수 tuple을 이용하여 반환값을 받아온다
  • 33. C로 만든 Swap 함수 #include <stdio.h> void swap( ) { int temp; temp = *num1; *num1 = *num2; *num2 = temp; } int main(int argc, const char * argv[]) { int n1 = 100, n2 = 200; printf("Before : n1 = %d n",n1); printf("Before : n2 = %d n",n2); swap( ); printf("After : n1 = %d n",n1); printf("After : n2 = %d n",n2); return 0; }
  • 34. C로 만든 Swap 함수 #include <stdio.h> void swap( ) { int temp; temp = *num1; *num1 = *num2; *num2 = temp; } int main(int argc, const char * argv[]) { int n1 = 100, n2 = 200; printf("Before : n1 = %d n",n1); printf("Before : n2 = %d n",n2); swap( ); printf("After : n1 = %d n",n1); printf("After : n2 = %d n",n2); return 0; } 포인터 연산자를 이용하여 외부 변수값에 접근함
  • 35. C로 만든 Swap 함수 #include <stdio.h> void swap( ) { int temp; temp = *num1; *num1 = *num2; *num2 = temp; } int main(int argc, const char * argv[]) { int n1 = 100, n2 = 200; printf("Before : n1 = %d n",n1); printf("Before : n2 = %d n",n2); swap( ); printf("After : n1 = %d n",n1); printf("After : n2 = %d n",n2); return 0; } 포인터 연산자를 이용하여 외부 변수값에 접근함 &n1, &n2
  • 36. C로 만든 Swap 함수 #include <stdio.h> void swap( ) { int temp; temp = *num1; *num1 = *num2; *num2 = temp; } int main(int argc, const char * argv[]) { int n1 = 100, n2 = 200; printf("Before : n1 = %d n",n1); printf("Before : n2 = %d n",n2); swap( ); printf("After : n1 = %d n",n1); printf("After : n2 = %d n",n2); return 0; } 포인터 연산자를 이용하여 외부 변수값에 접근함 &n1, &n2
  • 37. C로 만든 Swap 함수 #include <stdio.h> void swap( ) { int temp; temp = *num1; *num1 = *num2; *num2 = temp; } int main(int argc, const char * argv[]) { int n1 = 100, n2 = 200; printf("Before : n1 = %d n",n1); printf("Before : n2 = %d n",n2); swap( ); printf("After : n1 = %d n",n1); printf("After : n2 = %d n",n2); return 0; } 포인터 연산자를 이용하여 외부 변수값에 접근함 &n1, &n2 int *num1, int *num2
  • 38. C로 만든 Swap 함수 #include <stdio.h> void swap( ) { int temp; temp = *num1; *num1 = *num2; *num2 = temp; } int main(int argc, const char * argv[]) { int n1 = 100, n2 = 200; printf("Before : n1 = %d n",n1); printf("Before : n2 = %d n",n2); swap( ); printf("After : n1 = %d n",n1); printf("After : n2 = %d n",n2); return 0; } 포인터 연산자를 이용하여 외부 변수값에 접근함 &n1, &n2 int *num1, int *num2
  • 39. C++로 만든 Swap 함수#include <iostream> using namespace std; void swap( ) { int temp; temp = num1; num1 = num2; num2 = temp; } int main(int argc, const char * argv[]) { int n1 = 100, n2 = 200; cout << "Before : n1 = " << n1 << endl; cout << "Before : n2 = " << n2 << endl; swap( ); cout << "After : n1 = " << n1 << endl; cout << "After : n2 = " << n2 << endl; return 0; }
  • 40. C++로 만든 Swap 함수#include <iostream> using namespace std; void swap( ) { int temp; temp = num1; num1 = num2; num2 = temp; } int main(int argc, const char * argv[]) { int n1 = 100, n2 = 200; cout << "Before : n1 = " << n1 << endl; cout << "Before : n2 = " << n2 << endl; swap( ); cout << "After : n1 = " << n1 << endl; cout << "After : n2 = " << n2 << endl; return 0; } 참조 연산자 & 를 이용하여 쉽게 변수값에 접근함
  • 41. C++로 만든 Swap 함수#include <iostream> using namespace std; void swap( ) { int temp; temp = num1; num1 = num2; num2 = temp; } int main(int argc, const char * argv[]) { int n1 = 100, n2 = 200; cout << "Before : n1 = " << n1 << endl; cout << "Before : n2 = " << n2 << endl; swap( ); cout << "After : n1 = " << n1 << endl; cout << "After : n2 = " << n2 << endl; return 0; } 참조 연산자 & 를 이용하여 쉽게 변수값에 접근함 n1, n2
  • 42. C++로 만든 Swap 함수#include <iostream> using namespace std; void swap( ) { int temp; temp = num1; num1 = num2; num2 = temp; } int main(int argc, const char * argv[]) { int n1 = 100, n2 = 200; cout << "Before : n1 = " << n1 << endl; cout << "Before : n2 = " << n2 << endl; swap( ); cout << "After : n1 = " << n1 << endl; cout << "After : n2 = " << n2 << endl; return 0; } 참조 연산자 & 를 이용하여 쉽게 변수값에 접근함 n1, n2
  • 43. C++로 만든 Swap 함수#include <iostream> using namespace std; void swap( ) { int temp; temp = num1; num1 = num2; num2 = temp; } int main(int argc, const char * argv[]) { int n1 = 100, n2 = 200; cout << "Before : n1 = " << n1 << endl; cout << "Before : n2 = " << n2 << endl; swap( ); cout << "After : n1 = " << n1 << endl; cout << "After : n2 = " << n2 << endl; return 0; } 참조 연산자 & 를 이용하여 쉽게 변수값에 접근함 n1, n2 int &num1, int &num2
  • 44. C++로 만든 Swap 함수#include <iostream> using namespace std; void swap( ) { int temp; temp = num1; num1 = num2; num2 = temp; } int main(int argc, const char * argv[]) { int n1 = 100, n2 = 200; cout << "Before : n1 = " << n1 << endl; cout << "Before : n2 = " << n2 << endl; swap( ); cout << "After : n1 = " << n1 << endl; cout << "After : n2 = " << n2 << endl; return 0; } 참조 연산자 & 를 이용하여 쉽게 변수값에 접근함 n1, n2 int &num1, int &num2
  • 45. Swift로 만든 Swap 함수1 import Foundation func swap(n1:Int, n2:Int) -> (Int, Int){ return (n2, n1) } var n1 = 100 var n2 = 200 print("Before : n1 = (n1)") print("Before : n2 = (n2)") (n1, n2) = swap(n1, n2) print("After : n1 = (n1)") print("After : n2 = (n2)")
  • 46. Swift로 만든 Swap 함수1 import Foundation func swap(n1:Int, n2:Int) -> (Int, Int){ return (n2, n1) } var n1 = 100 var n2 = 200 print("Before : n1 = (n1)") print("Before : n2 = (n2)") (n1, n2) = swap(n1, n2) print("After : n1 = (n1)") print("After : n2 = (n2)") 튜플을 반환하는 방식으로 간단하게 구현가능
  • 47. Swift로 만든 Swap 함수1 import Foundation func swap(n1:Int, n2:Int) -> (Int, Int){ return (n2, n1) } var n1 = 100 var n2 = 200 print("Before : n1 = (n1)") print("Before : n2 = (n2)") (n1, n2) = swap(n1, n2) print("After : n1 = (n1)") print("After : n2 = (n2)") 튜플을 반환하는 방식으로 간단하게 구현가능
  • 48. Swift로 만든 Swap 함수2 import Foundation func swap(inout a: Int, inout b: Int) { let temporaryA = a a = b b = temporaryA } var n1 = 100 var n2 = 200 print("Before : n1 = (n1)") print("Before : n2 = (n2)") swap(&n1, &n2) print("After : n1 = (n1)") print("After : n2 = (n2)")
  • 49. Swift로 만든 Swap 함수2 import Foundation func swap(inout a: Int, inout b: Int) { let temporaryA = a a = b b = temporaryA } var n1 = 100 var n2 = 200 print("Before : n1 = (n1)") print("Before : n2 = (n2)") swap(&n1, &n2) print("After : n1 = (n1)") print("After : n2 = (n2)")
  • 50. Swift로 만든 Swap 함수2 import Foundation func swap(inout a: Int, inout b: Int) { let temporaryA = a a = b b = temporaryA } var n1 = 100 var n2 = 200 print("Before : n1 = (n1)") print("Before : n2 = (n2)") swap(&n1, &n2) print("After : n1 = (n1)") print("After : n2 = (n2)") 게
  • 51. Swift로 만든 Swap 함수2 import Foundation func swap(inout a: Int, inout b: Int) { let temporaryA = a a = b b = temporaryA } var n1 = 100 var n2 = 200 print("Before : n1 = (n1)") print("Before : n2 = (n2)") swap(&n1, &n2) print("After : n1 = (n1)") print("After : n2 = (n2)") 게 inout과 & 연산자를 사용하여 외부값을 참조할 수 있음
  • 52. inout • 매개변수 중에서 함수내에서 변경된 매개변수가 함수 호 출이 종료된 시점에서도 계속 유지되기를 원한다면 inout 키워드를 사용한다 • 매개변수의 값은 함수 안으로 전달되어 변경되고, 함수에 서 나와서 원래의 값을 대체함 • 인수를 입출력 파라메터로 넘길때 변수의 이름 앞에 앰퍼 샌드(&)를 붙인다
  • 53. BONUS : Swift로 만든 Swap -함수사용이 필요하지 않음 import Foundation var n1 = 100 var n2 = 200 print("Before : n1 = (n1)") print("Before : n2 = (n2)") (n1, n2) = (n2, n1) // 튜플사용 print("After : n1 = (n1)") print("After : n2 = (n2)")
  • 54. BONUS : Swift로 만든 Swap -함수사용이 필요하지 않음 import Foundation var n1 = 100 var n2 = 200 print("Before : n1 = (n1)") print("Before : n2 = (n2)") (n1, n2) = (n2, n1) // 튜플사용 print("After : n1 = (n1)") print("After : n2 = (n2)")
  • 55. BONUS : Swift로 만든 Swap -함수사용이 필요하지 않음 import Foundation var n1 = 100 var n2 = 200 print("Before : n1 = (n1)") print("Before : n2 = (n2)") (n1, n2) = (n2, n1) // 튜플사용 print("After : n1 = (n1)") print("After : n2 = (n2)") (Int, Int) 튜플을 (Int, Int) 튜플에 복사함
  • 56. 정리 • Swift의 함수는 튜플타입 반환을 허용한다 • 함수의 두번째 매개변수부터는 반드시 레이블을 붙여야 한다 • Swift 2.0 이상 • 함수이름의 중복정의를 허용한다 • inout을 통해서 함수내에서 매개변수의 수정을 허용한다