처음부터 차근차근

Swift 실습 3 본문

프로그래밍/Swift

Swift 실습 3

_soyoung 2021. 9. 25. 20:58
반응형
var num = 2
if num > 1 {
    print("num은 1보다 큽니다")
}
//결과 : num은 1보다 큽니다






var num = 2
if num > 1, num < 3 {
    print("num은 1보다 크고 3보다 작다")
}
//같음
if num > 1 && num < 3 {
    print("num은 1보다 크고 3보다 작다")
}
//결과 : num은 1보다 크고 3보다 작다
//num은 1보다 크고 3보다 작다






var num = 3
if num == 2 {
    print("num은 2입니다")
}
else {
    print("num은 2가 아닙니다")
}
//결과 : num은 2가 아닙니다






var num = 3
if num == 2 {
    print("num은 2입니다")
}
else if num == 3{
    print("num은 3입니다")
}
else {
    print("num은 2와 3이 아닙니다")
}
//결과 : num은 3입니다






let weight = 51.0
let height = 165.3
let bmi = weight / (height * height * 0.0001)
var body = ""
switch bmi {
    case 40... :
    body = "3단계 비만"
    case 30..<40 : 
    body = "2단계 비만"
    case 25..<30 : 
    body = "1단계 비만"
    case 18.5..<25 : 
    body = "정상"
    default :
    body = "저체중"
}
print("BMI : \(bmi), 판정 : \(body)")
//결과 : BMI : 18.6648484908372, 판정 : 정상






var num = 10
while true {
    if num > 20 {
        break
    }
    print(num)
    num = num + 5
}
//같음
num = 10
while true {
    guard num < 25 else {
        break
    }
    print(num)
    num = num + 5
}
//결과 : 10
//15
//20
//10
//15
//20






func printUserInformation(name:String?, age:Int?, adress:String?) { // 함수
    if let name = name {
        print(name)
    }
    else {
        print("이름을 기입하지 않았습니다")
    }
    if let age = age {
        print(age)
    }
    else {
        print("나이를 기입하지 않았습니다")
    }
    if let adress = adress {
        print(adress)
    }
    else {
        print("주소를 기입하지 않았습니다")
    }
}
printUserInformation(name:"soyoung", age:21, adress:"Seoul")
printUserInformation(name:"nana", age:30, adress:nil)
//결과 : soyoung
//21
//Seoul
//nana
//30
//주소를 기입하지 않았습니다






func printUserInformation(name:String?, age:Int?, adress:String?) { // 함수
    guard let name1 = name else {
        print("이름을 기입하지 않았습니다")
        return // 함수를 빠져나감
    }
    print(name1) // 변수를 여기서도 쓸 수 있음
    
    guard let age1 = age else {
        print("나이를 기입하지 않았습니다")
        return // 함수를 빠져나감
    }
    print(age1)
    
    guard let adress1 = adress else {
        print("주소를 기입하지 않았습니다")
        return // 함수를 빠져나감
    }
    print(adress1)
}
printUserInformation(name:"soyoung", age:21, adress:"Seoul")
printUserInformation(name:"nana", age:30, adress:nil)
//결과 : soyoung
//21
//Seoul
//nana
//30
//주소를 기입하지 않았습니다






func numberCheck(input:Int?) {
    guard let inputNum = input, inputNum < 20, inputNum > 10  else{
        print("입력 값이 없거나 숫자가 아니거나 10~20사이 값이 아닙니다.")
        return
    }
    print("\(inputNum)을 입력받았습니다.")
}
print("10~20사이값을 입력해주세요.")
let Input = Int(readLine()!) // 숫자가 아니면 nil이 들어감
numberCheck(input : Input)
//결과 : 10~20사이값을 입력해주세요.
//9
//입력 값이 없거나 숫자가 아니거나 10~20사이 값이 아닙니다.






let fruit = "apple" 
switch fruit { 
case "orange": 
    print("variable fruit is orange") 
case "pineapple": 
    print("variable fruit is pineapple") 
case "pear": 
    print("variable fruit is pear") 
case "apple": 
    print("variable fruit is apple") 
default: 
    print("nothing") 
}
//결과 : variable fruit is apple






let number = 10 * 45 
switch number { 
case ..<200 : 
    print("0 ~ 199")
    print(number) 
case 200..<400 : 
    print("200 ~ 399")
    print(number) 
case 400..<500 : 
    print("400 ~ 499")
    print(number) 
default: 
    print("500이상") 
}
//결과 : 400 ~ 499
//450






print("**9월 날짜로 요일 맞추기**")
print("오늘 날짜를 입력해주세요.")
let dateInput = Int(readLine()!)
if let date = dateInput, date <= 30, date >= 1{
    print("\(date) 입력받았습니다.")
    switch date {
        case 6, 13, 20, 27 :
        print("9월 \(date)일은 월요일 입니다.")
        case 7, 14, 21, 28 :
        print("9월 \(date)일은 화요일 입니다.")
        case 1, 8, 15, 22, 29 :
        print("9월 \(date)일은 수요일 입니다.")
        case 2, 9, 16, 23, 30 :
        print("9월 \(date)일은 목요일 입니다.")
        case 3, 10, 17, 24 :
        print("9월 \(date)일은 금요일 입니다.")
        case 4, 11, 18, 25 :
        print("9월 \(date)일은 토요일 입니다.")
        case 5, 12, 19, 26 :
        print("9월 \(date)일은 일요일 입니다.")
        default :
        print("")
    }
}
else {
    print("잘못 입력하셨습니다.")
}
//결과 : **9월 날짜로 요일 맞추기**
//오늘 날짜를 입력해주세요.
//24
//24 입력받았습니다.
//9월 24일은 금요일 입니다.






let word = "hello"
switch word {
    case is Int : 
    print("varType : Int")
    case is String : 
    print("varType : String")
    case is Float : 
    print("varType : Float")
    case is Double : 
    print("varType : Double")
    case is Character : 
    print("varType : Character")
    default:
    print("other type...")
}
//결과 : varType : String






let feel = "happy"
switch feel {
    case "sad" where feel.contains("s"): 
    print("feel sad now and feel variable has s")
    case "bored" where feel.contains("b"): 
    print("feel bored now and feel variable has b")
    case "tired" where feel.contains("t"): 
    print("feel tired now and feel variable has t")
    case "happy" where feel.contains("h"): 
    print("feel happy now and feel variable has h")
    default:
    print("other feel...")
}
//결과 : feel happy now and feel variable has h






var fruits : [String] = ["apple", "orange", "lemon", "pineapple"]
for fruit in fruits where fruit.contains("p") {
    print(fruit)
}
//결과 : apple
//pineapple






var hobby = "watch a movie"
switch hobby
{
case "watch a movie":
    print("my hobby is watching a movie.")
    fallthrough // 멈추지 않고 밑으로 내려감
case "read a book":
    print("my hobby is reading a book.")
    fallthrough
case "play the guitar":
    print("my hobby is playing the guitar.")
    //fallthrough 여기서 멈춤
default:
    print("have no hobbies")
}
//결과 : my hobby is watching a movie.
//my hobby is reading a book.
//my hobby is playing the guitar.






func printName(name: String) { // -> Void생략
    print("Hi \(name)")
}
printName(name: "soyoung")
//결과 : Hi soyoung






/*int getSubtractValue(int number1, int number2){ // C, C++
    return number1 - number2
}
print(getSubtractValue(10, 5)) */   
func getSubtractValue(number1: Int, number2: Int) -> Int {
    return number1 - number2
}
print(getSubtractValue(number1: 10, number2: 5))
print(type(of:getSubtractValue)) // 함수의 자료형 출력
//결과 : 5
//(Int, Int) -> Int






func getSubtractValue(num1 number1: Int, num2 number2: Int) -> Int {
    return number1 - number2
}
print(getSubtractValue(num1: 10, num2: 5))
//결과 : 5






func subtract(number1: Int, number2: Int) -> Int {
    print(#function)
    return number1 - number2
}
print(subtract(number1: 10, number2: 5))
print(type(of:subtract))// 함수의 자료형은 모두 같음
func subtract(num1 number1: Int, num2 number2: Int) -> Int {
    print(#function)
    return number1 - number2
}
print(subtract(num1: 10, num2: 5))
func subtract(_ number1: Int, _ number2: Int) -> Int {
    print(#function)
    return number1 - number2
}
print(subtract(10, 5))
func subtract(_ number1: Int, sub number2: Int) -> Int {
    print(#function)
    return number1 - number2
}
print(subtract(10, sub: 5))
//결과 : subtract(number1:number2:)
//5
//(Int, Int) -> Int
//subtract(num1:num2:)
//5
//subtract(_:_:)
//5
//subtract(_:sub:)
//5






var xx = 0
var yy = 0
var x = 10
func ddd(x: Int) -> Int {
    return(x * 2)
}
print(ddd(x: x)) 
func setX(x: Int) {
    xx = x
}
setX(x: x)
print(xx)
func getX() -> Int {
    return x 
}
print(getX())
func add(x: Int, y: Int) -> Int {
    return x + y
}
print(add(x: x, y: 2))
func setXY(x: Int, y: Int) {
    xx = x
    yy = y
}
setXY(x: 5, y: 6)
print(xx, yy)
//결과 : 20
//10
//10
//12
//5 6






func printAdd(num1: Int, num2: Int?) {
    guard let number = num2 else {
        print("두번째 숫자가 없습니다.")
        return
    }
    print(number + num1)
    /*//같음
    if let number = num2 {
        print(number + num2)
    }
    else{
        print("두번째 숫자가 없습니다.")
    }*/
}
printAdd(num1: 1, num2: nil)
printAdd(num1: 10, num2: 20)
//결과 : 두번째 숫자가 없습니다.
//30






func setMouseSensitivity(user: String, mouseSens: Double = 10.5) {
    print("\(user)의 마우스 감도를 \(mouseSens)로 맞췄습니다.")
}
setMouseSensitivity(user: "ksy")
setMouseSensitivity(user: "nana", mouseSens: 15.2)
//결과 : ksy의 마우스 감도를 10.5로 맞췄습니다.
//nana의 마우스 감도를 15.2로 맞췄습니다.






func getStudentInformation(studentName: String) -> (name: String, age: Int, school: String, grade: Int, major: String) {
    let name = studentName + " 학생"
    let age = 21
    let school = "인덕대"
    let grade = 2
    let major = "컴소과"
    return (name, age, school, grade, major)
}
let studentInfoTuple = getStudentInformation(studentName: "김컴소")
print(studentInfoTuple)
print("이름 : \(studentInfoTuple.name)")
print("나이 : \(studentInfoTuple.age)")
print("학교 : \(studentInfoTuple.school)")
print("학년 : \(studentInfoTuple.grade)")
print("학과 : \(studentInfoTuple.major)")
//결과 : (name: "김컴소 학생", age: 21, school: "인덕대", grade: 2, major: "컴소과")
//이름 : 김컴소 학생
//나이 : 21
//학교 : 인덕대
//학년 : 2
//학과 : 컴소과






import Foundation
func sss(x: Int, y: Int) -> (sum: Int, sub: Int, mul: Int, div: Double, rem: Int)
{
    let sum = x + y
    let sub = x - y
    let mul = x * y
    let div = Double(x) / Double(y) // 같은 자료형끼리만 연산 가능
    let rem = x % y // %연산자는 정수형에서만 사용 가능
    return (sum, sub, mul, div, rem)
}
var result = sss(x: 10, y: 3)
print(result.sum)
print(result.sub)
print(result.mul)
print(result.div)
print(String(format: "%.3f", result.div))
print(result.rem)
print(type(of:sss)) // 타입 출력
//결과 : 13
//7
//30
//3.3333333333333335
//3.333
//1
//(Int, Int) -> (sum: Int, sub: Int, mul: Int, div: Double, rem: Int)






func printStrings(stringParams: String...) {// 가변 매개변수
    for strParam in stringParams {
        print(strParam)
    }
}
printStrings(stringParams: "kim", "so", "young")
printStrings(stringParams: "hello", "world")
//결과 : kim
//so
//young
//hello
//world






func multiply(nums: Int...) {
    print(type(of:nums)) // Array임
    var totalMul = 1
    for num in nums {
        totalMul *= num
    }
    print(totalMul)
}
multiply(nums: 5, 6, 8, 30)
multiply(nums: 2, 8, 11, 20)
multiply(nums: 2, 6)
//결과 : Array<Int>
//7200
//Array<Int>
//3520
//Array<Int>
//12






var catName = "kitty"
func changeName (name: inout String) -> String { // 주솟값을 받으려면 자료형 앞에다 inout 써야함
    name = "lulu"
    return name
}
print(catName)
print(changeName(name : &catName)) // 변수의 주솟값을 넘김
print(catName) // call by reference여서 고양이의 이름이 바뀜
//결과 : kitty
//lulu
//lulu

 

<함수명과 함수 자료형 실습>

* 아래의 코드는 문제입니다.

1.

func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
    return items.count
}

함수명 : tableView(_:numberOfRowsInSection:)

자료형 : (UITableView, Int) -> Int

 

2.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    return cell
}

함수명 : tableView(_:cellForRowAt:)

자료형 : (UITableView, IndexPath) -> UITableViewCell

 

3.

func changeDatePicker(_ sender: UIDatePicker) {
	
}

함수명 : changeDatePicker(_:)

자료형 : (UIDatePicker) -> ()

 

4.

func pickerView(_ pickerView: UIPickerView, rowHeightForComponent 
                component: Int) -> CGFloat {
    return PICKER_VIEW_HEIGHT
}

함수명 : pickerView(_:rowHeightForComponent:)

자료형 : (UIPickerView, Int) -> CGFloat

 

5.

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent 
                component: Int, reusing view: UIView?) -> UIView {
    return imageView
}

함수명 : pickerView(_:viewForRow:forComponent:reusing:)

자료형 : (UITableView, Int, Int, Optional<UIView>) -> UIView

 

6.

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return PICKER_VIEW_COLUMN
}

함수명 : numberOfComponents(in:)

자료형 : (UIPickerView) -> Int

 

7.

func pickerView(_ pickerView: UIPickerView, NumberOfRowsInComponent component:Int) -> Int {
    return imageFileName.count
}

함수명 : pickerView(_:numberOfRowInComponent:)

자료형 : (UIPickerView, Int) -> Int

 

8.

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int,
                inComponent component: Int) {
}

함수명 : pickerView(_:didSelectRow:inComponent:)

자료형 : (UIPickerView, Int, Int) -> ()

 

 

 

 

 

 

출처 : iOS프로그래밍기초(21-2학기)한성현교수 강의 내용 변형 및 요약

반응형

'프로그래밍 > Swift' 카테고리의 다른 글

Switf 실습 4  (0) 2021.09.30
Swift 문법 정리 3  (0) 2021.09.26
Swift 문법 정리 2  (0) 2021.09.17
Swift실습2  (0) 2021.09.17
Swift의 변수와 상수, 튜플 - 실습  (0) 2021.09.16
Comments