처음부터 차근차근
Swift 실습 3 본문
반응형
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