Swift의 함수구현과 함수 내부의 함수인 중첩함수 이와 같은 기능을 포함하는 클로저에 대해서 설명해보았습니다.
I tried to explain about Swift implementation of the function and the function capability is a function of nested functions inside the closure that includes
Swift의 함수구현과 함수 내부의 함수인 중첩함수 이와 같은 기능을 포함하는 클로저에 대해서 설명해보았습니다.
I tried to explain about Swift implementation of the function and the function capability is a function of nested functions inside the closure that includes
본 강좌에서는 클로저에 대해 알아보도록 하겠습니다. 클로저란 내부 함수와 내부 함수에 영향을 미치는 주변환경을 모두 포함한 객체로정의할 수 있습니다. 또한 클로저는 func와 함수이름이 생략된 경량의 함수객체로 클로저 표현을 통해 문장릉 짧고 간단하게 만들 수 있습니다.
Youtube
- https://youtu.be/0bIRlDCH8kU
[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris Ohk
C++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
이 비디오에서는 지난 강좌에 이어 옵셔널에 대해 더 깊이 알아봅니다.
어떤 인스턴스가 내부에 옵셔널 타입의 프로퍼티를 가질 경우 프로그래밍시에 많은 if 조건문을 통해 옵셔널이 nil이 아닌가를 검사하는 과정이 필요합니다. 옵셔널 체인은 이러한 불편을 줄여줍니다. 즉 옵셔널 체인을 통해 개발자는 옵셔널 연산자로 처리된 구문에 계속해서 옵셔널 연산자를 붙여서 코딩을 할 수 있습니다.
본 강의에서는 이러한 옵셔널체인에 대해 예제를 통해 살펴보도록 하겠습니다.
Youtube
- https://youtu.be/WNxcGYdFRas
본 강좌에서는 클로저에 대해 알아보도록 하겠습니다. 클로저란 내부 함수와 내부 함수에 영향을 미치는 주변환경을 모두 포함한 객체로정의할 수 있습니다. 또한 클로저는 func와 함수이름이 생략된 경량의 함수객체로 클로저 표현을 통해 문장릉 짧고 간단하게 만들 수 있습니다.
Youtube
- https://youtu.be/0bIRlDCH8kU
[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris Ohk
C++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
이 비디오에서는 지난 강좌에 이어 옵셔널에 대해 더 깊이 알아봅니다.
어떤 인스턴스가 내부에 옵셔널 타입의 프로퍼티를 가질 경우 프로그래밍시에 많은 if 조건문을 통해 옵셔널이 nil이 아닌가를 검사하는 과정이 필요합니다. 옵셔널 체인은 이러한 불편을 줄여줍니다. 즉 옵셔널 체인을 통해 개발자는 옵셔널 연산자로 처리된 구문에 계속해서 옵셔널 연산자를 붙여서 코딩을 할 수 있습니다.
본 강의에서는 이러한 옵셔널체인에 대해 예제를 통해 살펴보도록 하겠습니다.
Youtube
- https://youtu.be/WNxcGYdFRas
이번 Swift 강좌는 옵셔널과 비옵셔널, 그리고 래핑과 언래핑에 대해서 예제를 통해 살펴보도록 합니다.Swift는 안정성(Safety)를 중요하게 생각하는 언어로 기본적으로 Swift 에서는 변수나 객체가 nil이 될 수 없습니다.
nil이 될 수 있는 변수나 객체는 옵셔널 변수, 옵셔널 객체로 선언시에 타입뒤에 ?를 넣어야 합니다. 그리고 옵셔널로 감싼(wrapping) 변수끼리의 +,- 와 같은 기본연산은 불가능하므로 옵셔널 변수를 !로 언래핑(unwrapping)하여 일반 변수로 만들어서 사용해야 합니다.
Youtube
- https://youtu.be/w0XUNkauIg4
이 강좌에서는 Swift의 제너릭에 대해 알아봅니다.
제네릭 코드는 데이터 타입보다는 알고리즘에 코드를 집중할 수 있도록 하는 문법이며, 이를 통해 프로그램을 유연하게 작성할 수 있고, 재사용가능한 함수를 만들 수 있다.
Youtube
- https://youtu.be/x9k9EcokVMA
이번 Swift 강좌에서는 값타입과 참조타입에 대하여 알아봅니다. Swift에서는 구조체와 클래스, 열거형은 모두 속성(프로퍼티)과 메소드를 가질수 있습니다. 이런 점에서 구조체와 클래스는 매우 유사합니다
그러나 구조체는 값타입이며 클래스는 참조타입으로 구조체는 간단한 데이터 값들을 한데 묶어서 사용하는 경우 다루기가 좋습니다.
반면 값타입이므로 복사시에 구조체 변수들은 원본 구조체의 값이 복사되어 별도의 메모리에 유지됩니다.
Youtube
- https://youtu.be/EtkltOwzfco
박교수의 Swift강좌10-열거형과 구조체, 클래스에 대하여 이론적인 설명과 예제 프로그램을 통해 살펴보도록 하겠습니다. Swift의 열거형은 튜플값을 멤버로 가질 수 있으므로 C/C++보다 풍부하고 강력한 기능이 가능합니다. 또한 클래스와 구조체 모두 메소드를 가질 수 있다는 점이 C++와는 다른 점입니다.
Youtube
- https://www.youtube.com/watch?v=TykLyvMsGho
Swift강좌 네번째 순서로 if, for, while, switch-case문에 대해 예제를 통해서 살펴보겠습니다.
Swift는 C/C++언어보다 강력하고 편리한 제어문을 가지고 있는데요, 특히 switch-case문에서 큰 변화가 생겼습니다. 이 동영상과 예제를 통해서 살펴보겠습니다. 박교수의 Swift강좌
Youtube
- https://youtu.be/W93cK4FdiO4
이 장에서는 최대힙, 최소힙을 이용한 정렬에 대하여 살펴보겠습니다. 힙은 완전 이진트리 형태이므로 배열을 이용하면 쉽게 구현할 수 있으며, 노드의 번호를 배열 인덱스로 사용하여 구할 수 있습니다.
- 이 슬라이드에 대한 동영상 강의
https://youtu.be/pGpQ4zEl2EA
- 소스코드
https://github.com/dongupak/Advanced-C-Programming
모던 C++의 시초인 C++11은 C++ 코드 전반에 많은 변화를 가져왔습니다. 그리고 최근 C++20의 표준위원회 회의가 마무리되었습니다. 내년에 C++20이 도입되면 C++11이 처음 도입되었을 때와 비슷한 규모, 또는 그 이상의 변화가 있을 것이라고 예상하고 있습니다. C++20에는 Concepts, Contract, Ranges, Coroutine, Module 등 굵직한 기능 외에도 많은 기능들이 추가될 예정입니다. 이번 세션에서는 C++20에 추가될 주요 기능들을 살펴보고자 합니다.
[MSP] 카카오 채널 챗봇 개발과 Azure App Service로 배포하기Aron Roh
Microsoft Student Partner 세미나
"카카오 채널 챗봇 개발과 Azure App service로 배포하기"
(Kakao channel chat-bot development & Deploy with azure app service)
-MSP 노아론(Aron Roh)-
C++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
이 발표는 이전에 발표했던 내용에서 일부 사례 추가 및 최신 내용으로 갱신한 버전입니다.
2019년 5월 23일 창원대학교 정보통신공학과 특강자료 입니다.
* 일 시 : 2019년 5월 23일 (목) 13:00 ~
* 장 소 : 창원대학교 51호관 328호실
* 강연자 : 한국전자통신연구원(ETRI) 김성수 책임연구원
* 주 최 : 창원산업진흥원
* 주 관 : 창원시 스마트모바일앱지원센터
이번 강의에서는 지난 7개월간 이어진 강의의 마지막 편으로 파이썬이 각광받고 있는 이유와 장점에 대해서 다루어 봅니다.
그리고 저의 개인적인 강의 경험도 알려드릴까 합니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
코딩 스타일은 파이썬의 아주 중요한 요소중 하나입니다.
이번 강의에서는 PEP-8 의 코딩 스타일 가이드 라인에 대해 자세히 살펴보고 pyCharm의 리포맷 기능에 대해서도 알아보겠습니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
이번 강의에서는 방대한 파이썬 표준 라이브러리의 내용과 기능을 살펴보고 파이썬 외부 라이브러리에 대해서도 살펴보겠습니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
이번 강의에서는 파이썬의 패키지를 만들고 활용하는 방법을 알아보겠습니다.
대규모 프로젝트를 수행하기 위해서는 이미 잘 만들어진 코드를 활용하는 것이 중요한데요, 잘 만들어진 코드를 활용하는 방법이 모듈을 사용하는 것입니다.
그러나 모듈의 수가 많아지면 폴더(디렉토리) 아래에 계층적으로 두는 것이 더욱 편리합니다.
한 폴더에 유사한 성격의 여러 모듈을 두고 이 폴더를 가져오는 방식으로 개발을 하는데 이 폴더를 패키지라고 합니다. 본 강의에서는 예제를 통해서 파이썬의 패키지 만드는 방법을 살펴보도록 하겠습니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
이번 강의에서는 람다함수를 필터 함수와 맵 함수에서 사용하는 방법에 대해 살펴보겠습니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
이번 강의에서는 람다함수에 대해 알아보겠습니다.
앞서 배운 함수를 이용하면 필요한 기능의 재사용이 가능하기 때문에, 함수를 정의한 후 필요할 때마다 호출하여 사용하면 편리한데 이러한 방식으로 프로그램을 하는 방식을 모듈화 프로그래밍 이라고 한다.
그러나 가끔씩은 함수를 만들지 않고 함수화된 기능만을 불러 사용하고자 할 경우가 있는데, 이렇게 하면 프로그램을 단순하게 만들 수 있다.
즉 1회용으로 함수를 만들고 싶은데 def xxx(): 과 같은 이름을 짓는 것이 번거롭게 느껴질 경우에 사용하는 것이 람다함수 혹은 람다표현식이다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
이번 강의에서는 파이썬 클래스의 상속에 대해 알아보겠습니다. 소프트웨어 개발시에는 예전에 만들어진 코드를 이용하여 새로운 기능을 개발하는 경우가 많은데요, 클래스의 상속 기능을 사용하면 부모 클래스에서 만들어둔 기능과 속성을 물려받을 수 있습니다.
상속은 객체지향 프로그래밍의 매우 뛰어난 기능으로 이 강의에서는 상속에 대해 알아봅니다. 또한 상속받은 자식이 부모 클래스를 호출하기 위해 사용하는 super() 함수에 대해서도 알아봅니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
이번 강의에서는 파이썬에서 클래스를 정의하는 문법과 self 에 대해 살펴보도록 하겠습니다.
그리고 .(마침표)연산자를 이용하여 인스턴스에서 메소드를 호출하는 방법도 살펴보겠습니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
슬라이싱(slicing)이란 리스트나 튜플, 문자열의 항목을 잘라서 일부만을 가져오는 기능을 말합니다.
보통 list[시작 : 끝] 과 같이 시작항목과 끝 항목의 인덱스를 지정하는 방식으로 사용하는데요, 시작 항목은 포함되지만 끝 항목은 포함되지 않습니다.
이번 강의에서는 파이썬의 슬라이싱을 이용하는 방법을 다양한 예제와 애니메이션으로 살펴보도록 하겠습니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
이번 강의에서는 파이썬의 iterator에 대해 알아보겠습니다.
리스트, 집합, 딕셔너리와 같은 타입이나, 문자열은 for - in 구문을 통해서 반복적으로 하나씩 데이터를 꺼내서 처리할 수 있는데, 이와 같이 여러 개의 데이터를 포함한 타입중에서 반복적으로 하나하나 꺼내어 처리가능한 컬렉션이나 Sequence 들을 순환가능(Iterable) 객체라고 합니다.
iterator는 next() 함수를 구현한 객체를 말하며 next() 함수는 순환가능한 객체의 다음 원소를 반환하는 일을 합니다.
파이썬은 list, dict, set, bytes, tuple, range형이 iterable 형 객체입니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
이번 동영상 강의에서는 리스트 함수에 대해 살펴보도록 하겠습니다. 앞 장 강의에서 min(), max()와 같은 간단한 리스트 함수를 살펴보았는데요, 이번 강의에서는 all(), any(), bool(), filter() 등의 고급 함수의 기능과 그 사용예를 살펴봅니다.
- 강의 키노트 자료는 다음 링크를 통해 다운 받으세요
https://drive.google.com/drive/folders/1UrrO4_ch4xcIErbExstwpUVY6vFvPdkW
- 강의 소스코드는 다음 링크를 통해 다운 받으세요
https://github.com/dongupak/Basic-Python-Programmingwjd
이번 강의에서는 파이썬의 리스트 메소드에 대해 살펴보겠습니다.
파이썬의 리스트는 다양한 메소드를 제공하는데, 이 메소드를 통해 리스트의 원소를 변경하거나, 삭제, 추가, 병합, 정렬등의 기능을 할 수 있습니다.
또한, 파이썬의 기본 함수에서는 리스트의 원소의 길이, 최대값, 최소값, 분할을 위한 다양한 함수가 제공됩니다. 예제와 실습을 통해 index(), extend(), insert(), sort(), reverse()등의 메소드와 사용법을 알아보겠습니다.
5. 함수 레이블
vs
join 함수를 통해 매개변수로 입력된 String을 조합할 수 있다
매개변수가 2개 이상이면 두번째 매개변수는 반드시 레이블링을 해야한다.
레이블링을 통해 매개변수의 역할을 명확하게 이해할 수 있다.
Objective-C와의 호환성을 확보할 수 있다
6. 함수 레이블
vs
join 함수를 통해 매개변수로 입력된 String을 조합할 수 있다
매개변수가 2개 이상이면 두번째 매개변수는 반드시 레이블링을 해야한다.
레이블링을 통해 매개변수의 역할을 명확하게 이해할 수 있다.
Objective-C와의 호환성을 확보할 수 있다
7. 함수 레이블
vs
join 함수를 통해 매개변수로 입력된 String을 조합할 수 있다
매개변수가 2개 이상이면 두번째 매개변수는 반드시 레이블링을 해야한다.
레이블링을 통해 매개변수의 역할을 명확하게 이해할 수 있다.
Objective-C와의 호환성을 확보할 수 있다
11. 함수 타입
• 함수타입(형)의 상수나 변수를 만들어 함수를 할당할
(assign) 수 있음
두 개의 Int 값을 매개변수로 취하며 Int 값을 반환하는 함수타입(형)
변수 mathFuntion을 선언하고, 이 변수가 addTwoInts 함수를 참조(refer)
하도록 한다.
19. C 언어의 함수 포인터
mathFunction, newMathFunction은 함수의 주소를
담을 수 있는 변수 -> 함수 포인터
20. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
21. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
22. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
C 언어의 함수
23. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
C 언어의 함수
24. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
25. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
26. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
함수 포인터
27. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
함수 포인터
28. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
29. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
30. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
함수 포인터
31. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
함수 포인터
32. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
33. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
…
34. C 언어의 함수 포인터
…
int addTwoInts(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
int (*mathFunction)(int, int) = &addTwoInts;
int (*newMathFunction)(int, int);
newMathFunction = mathFunction;
… 함수 포인터를 다른 함수 포인터에 복사할 수 있음
40. 함수의 반환
Int형 값을 매개변수로 받아 Int 값을
반환하는 함수
Int형 값을 매개변수로 받아 Int 값을
반환하는 함수
41. 함수의 반환
Int형 값을 매개변수로 받아 Int 값을
반환하는 함수
Int형 값을 매개변수로 받아 Int 값을
반환하는 함수
42. 함수의 반환
반환형- Int형을 매개변수로 받아 Int
값을 반환하는 함수
Int형 값을 매개변수로 받아 Int 값을
반환하는 함수
Int형 값을 매개변수로 받아 Int 값을
반환하는 함수
43. 함수의 반환
반환형- Int형을 매개변수로 받아 Int
값을 반환하는 함수
Int형 값을 매개변수로 받아 Int 값을
반환하는 함수
Int형 값을 매개변수로 받아 Int 값을
반환하는 함수
44. 함수의 반환
반환형- Int형을 매개변수로 받아 Int
값을 반환하는 함수
Int형 값을 매개변수로 받아 Int 값을
반환하는 함수
Int형 값을 매개변수로 받아 Int 값을
반환하는 함수
45. 함수의 반환
매개변수 backwards가 true이면 stepBackward 함
수를, false이면 stepForward 함수를 반환한다
반환형- Int형을 매개변수로 받아 Int
값을 반환하는 함수
Int형 값을 매개변수로 받아 Int 값을
반환하는 함수
Int형 값을 매개변수로 받아 Int 값을
반환하는 함수