240926 iOS프로그래밍기초 4주차

2024. 9. 26. 16:50·iOS프로그래밍 (2학년 2학기)

대체로 사용하는 프로그래밍 언어에서 arguments와 parameters가 무엇인지?


Parameters (매개변수)
Parameters는 함수를 정의할 때 사용되는 변수입니다. 함수가 받아들일 수 있는 입력값의 이름을 지정합니다.

예시:

def greet(name, age):
    print(f"Hello, {name}! You are {age} years old.")

 

이 예시에서 `name`과 `age`가 parameters이다.

Arguments (인수)
Arguments는 함수를 호출할 때 실제로 전달되는 값입니다. 이 값들이 함수의 parameters에 할당됩니다.


예시:

greet("Alice", 30)

여기서 "Alice"와 30이 arguments입니다.

다른 예시

JavaScript를 사용한 또 다른 예시를 살펴보겠습니다:

function add(a, b) {
    return a + b;
}

let result = add(5, 3);
console.log(result); // 출력: 8

이 경우:
- `a`와 `b`는 parameters.
- `5`와 `3`은 arguments.

함수를 선언하는 방법

func sayhello() -> Void {
    print("Hi")
}
sayhello()
// 리턴값이 없는 함수들은 -> Void 부분 생략 가능

 

Swift에서 함수를 만들고 사용하는 방법

함수 정의
Swift에서 함수는 `func` 키워드를 사용하여 정의합니다. 기본적인 함수 구조는 다음과 같습니다:

func 함수이름(매개변수...) -> 반환타입 {
    // 함수 본문
    return 반환값
}


예시:

func greet(name: String) -> String {
    return "안녕하세요, \(name)님!"
}

 

이 함수는 `name`이라는 매개변수를 받아 인사말을 반환합니다[1].

 함수 호출

정의된 함수를 호출할 때는 함수 이름과 필요한 인자를 전달합니다:

let message = greet(name: "홍길동")
print(message) // 출력: 안녕하세요, 홍길동님!


매개변수 레이블
Swift에서는 매개변수에 외부 이름(Argument Label)과 내부 이름(Parameter Name)을 별도로 지정할 수 있습니다[2]:

func sayHello(to name: String, age: Int) {
    print("안녕하세요, \(name)님! 당신은 \(age)세입니다.")
}

sayHello(to: "김철수", age: 25)

여기서 `to`는 외부 이름(Argument Label)이고, `name`은 내부 이름(Parameter Name)입니다.

반환값이 없는 함수
함수가 값을 반환하지 않는 경우, 반환 타입을 생략하거나 `Void`를 사용할 수 있습니다:

func printHello() {
    print("안녕하세요!")
}

printHello() // 출력: 안녕하세요!


다중 반환값
Swift에서는 튜플을 사용하여 여러 값을 반환할 수 있습니다:

func getNameAndAge() -> (name: String, age: Int) {
    return ("홍길동", 30)
}

let person = getNameAndAge()
print("\(person.name)은 \(person.age)세입니다.")


가변 매개변수
함수가 여러 개의 동일한 타입의 인자를 받을 수 있도록 가변 매개변수를 사용할 수 있습니다[3]:

func sum(numbers: Int...) -> Int {
    return numbers.reduce(0, +)
}

let total = sum(numbers: 1, 2, 3, 4, 5)
print("합계: \(total)") // 출력: 합계: 15

이렇게 Swift에서는 다양한 방식으로 함수를 정의하고 사용할 수 있습니다. 함수는 코드의 재사용성과 가독성을 높이는 중요한 요소입니다.

func add(x: Int, y: Int)->Int {
    return(x+y)
}
print(add(x: 10, y: 20))
var x = add(x: 10, y: 20)
print(x)
print(type(of: add)) //함수의 자료형을 알려줌

 

 

Fix를 누르면, 해당 행이 print(add(10, 20)) 로 바뀐다.

함수명이 궁금할 때 사용하는 #function 리터럴(literal)

Argument의 이름에 따라 함수명 뒤에 다르게 붙는것을 알 수 있다.

Swift 함수명

  • 함수명(외부매개변수명:외부매개변수명: ...) 
  • func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
    return items.count
    }
    • 해당 함수의 자료명 : (UITableView, Int) -> Int
    • 해당 함수의 이름 : tableView(_:numberOfRowsInSection:)

guard문(조건식이 거짓이면 실행)

  • 다음 사진의 3행과 4행의 의미는 같다.

guard~let의 활용

guard ~ let문과 if문의 차이

  • guard문이 훨씬 더 간결하다.
  • 언래핑된 number 변수를 guard문 밖에 있는 코드가 사용 가능, if문을 이용하여 언래핑된 변수는 그렇게 못함

보라색으로 드래그되어있는 부분이 if문, 그 위 두 줄이 guard문

 

디폴트 매개변수(default arguments)는 함수를 정의할 때 매개변수에 기본값을 지정하는 기능

파이썬과 자바스크립트에서 이를 구현하는 방법

 

파이썬에서의 디폴트 매개변수
파이썬에서는 함수 정의 시 매개변수 이름 뒤에 `=` 기호를 사용하여 기본값을 지정

def greet(name, greeting="안녕하세요"):
    print(f"{greeting}, {name}님!")

# 기본값 사용
greet("홍길동")  # 출력: 안녕하세요, 홍길동님!

# 기본값 오버라이드
greet("김철수", "반갑습니다")  # 출력: 반갑습니다, 김철수님!

다른 예시:

def power(base, exponent=2):
    return base ** exponent

print(power(3))     # 출력: 9 (3^2)
print(power(3, 3))  # 출력: 27 (3^3)


자바스크립트에서의 디폴트 매개변수
자바스크립트(ES6 이상)에서도 파이썬과 유사한 방식으로 디폴트 매개변수를 정의 가능

function greet(name, greeting = "안녕하세요") {
    console.log(`${greeting}, ${name}님!`);
}

// 기본값 사용
greet("홍길동");  // 출력: 안녕하세요, 홍길동님!

// 기본값 오버라이드
greet("김철수", "반갑습니다");  // 출력: 반갑습니다, 김철수님!


다른 예시:

function calculateArea(width, height = 10) {
    return width * height;
}

console.log(calculateArea(5));     // 출력: 50 (5 * 10)
console.log(calculateArea(5, 20)); // 출력: 100 (5 * 20)

 

Swift 3에서는 inout의 위치가 바뀜

var myValue = 10
func doubleValue (value: inout Int) -> Int {
	value += value
	return(value)
}
print(myValue)
print(doubleValue(value : &myValue)) //출력 값? 레포트
print(myValue)

 

다음 두개의 코드+사진은 같은내용이지만, 뒤의 사진은 Swift 문자열 서식(swift string format 자리수)을 추가한 것

let weight = 60.0
let height = 170.0
let bmi = weight / (height*height*0.0001) // kg/m*m
var body = ""

if bmi >= 40 {
    body = "3단계 비만"
} else if bmi >= 30 && bmi < 40 {
    body = "2단계 비만"
} else if bmi >= 25 && bmi < 30 {
    body = "1단계 비만"
} else if bmi >= 18.5 && bmi < 25 {
    body = "정상"
} else {
    body = "저체중"
}

print("BMI:\(bmi), 판정:\(body)")

 

 

 

 

참고자료 : 한성현 교수님 수업자료 [Smile Han의 iOS프로그래밍기초]

 

저작자표시 (새창열림)

'iOS프로그래밍 (2학년 2학기)' 카테고리의 다른 글

241009 iOS프로그래밍기초 6주차  (1) 2024.10.14
241002 iOS프로그래밍기초 5주차  (2) 2024.10.14
240919 iOS 프로그래밍기초 3주차  (0) 2024.09.19
240912 iOS프로그래밍기초 2주차  (0) 2024.09.12
240905 iOS프로그래밍기초 1주차  (2) 2024.09.05
'iOS프로그래밍 (2학년 2학기)' 카테고리의 다른 글
  • 241009 iOS프로그래밍기초 6주차
  • 241002 iOS프로그래밍기초 5주차
  • 240919 iOS 프로그래밍기초 3주차
  • 240912 iOS프로그래밍기초 2주차
Z2AE
Z2AE
  • Z2AE
    딩코.log
    Z2AE
  • 전체
    오늘
    어제
    • 분류 전체보기 (67)
      • C++ 프로그래밍 (1학년 2학기) (12)
      • 서버프로그래밍 (1학년 2학기) (0)
      • C# 프로그래밍 (1학년 2학기) (2)
      • 프론트엔드 웹개발 (1학년 2학기) (2)
      • 데이터베이스 (2학년 1학기) (8)
      • 자료구조 (2학년 1학기) (2)
      • JAVA프로그래밍 (2학년 1학기) (7)
      • PHP쇼핑몰실무 (2학년 1학기) (2)
      • 운영체제 (2학년 1학기) (3)
      • 모바일게임개발 (2학년 1학기) (1)
      • iOS프로그래밍 (2학년 2학기) (11)
      • 네트워크보안 (2학년 2학기) (1)
      • iOS프로그래밍실무 (3학년 1학기) (11)
      • 소프트웨어설계 (3학년 1학기) (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Z2AE
240926 iOS프로그래밍기초 4주차
상단으로

티스토리툴바