반응형

안녕하세요~ 에르의 생각발전소입니다 :)

저번 시간에는 for구문과 while구문을 다뤄보았었는데요.

다들 ~ 만족하셨기를 바라며 !

이번 시간에는 조건문에 대해서 알아보도록 하겠습니다.!








// SWIFT 조건문 :)

// 조건값을 입력하여 특정 코드를 실행하도록 분기합니다.

// if / guard / switch 구문으로 조건문을 구별할 있습니다.


// if 구문 

// if 조건문 {

// 실행 구문

// }                위와같은 형태를 가집니다. 익숙하지요? 



var ageline = 19

var customerAge  = 16

if customerAge > ageline {

    print("미성년자의 클럽 출입은 불가합니다.")

} else { print("환영합니다! 클럽 에르입니다!")

}

// 조건에 의해 결과가 참일 경우 else 앞의 구문이!

//  결과가 거짓일 경우 else 뒤의 구문이! 

// 실행된답니다.

// 근데 조금 이상하지않나요?

// 네, 맞습니다. VALUE > VALUE 에서 앞에 값을 뒤에 값과 비교하기 때문에

// 실수로 위와 같이 잘못했다면, 나중의 결과는 참담해지겠죠?

var ageline = 19

var customerAge  = 16

if customerAge < ageline {

    print("미성년자의 클럽 출입은 불가합니다.")

} else { print("환영합니다! 클럽 에르입니다!")

}


// 이번에는 제대로 작성된 코드입니다.


// 고객나이가 제한나이보다 어리니, 미성년자의 클럽 출입은 불가합니다 라는 멘트가 프린트되고있습니다.


// 보통 조건문을 사용할 떄 조건의 갯수는 복수일 경우가 많습니다.

// 만약 3개이상의 조건이 붙는 조건문일 경우에는 어떻게해야할까요?

//  if else if 를 반복적으로 사용하여, 조건문 안의 조건문을 만들어 사용할 수 있습니다.

// 또한 if else if 통한 두가지 조건 이상의 조건문도 만들 있습니다 :)


var MySubject = "국사"

var score:String


if MySubject == "국어" {

    score = " 88점입니다."

} else {

    if MySubject == "수학"{

        score = "12점입니다."

    } else {

        if MySubject ==  "과학" {

            score = "54점입니다."

        } else {

            if MySubject == "국사" {

                score = "75점입니다."

            } else {

                if MySubject == "사회" {

                   score = "90점입니다."

                } else {

                score = "과목을 다시 확인하여주세요."

                }

            }

        }

    }

}


print("귀하의 \(MySubject) 과목 점수는  \(score) ")


//  허나 위 코드는 그닥 보기좋은 코드는 아닙니다. 


//  왜냐하면 조건문에 조건문을 계속 넣게되면, 코드가 지저분해지고 분간하기 어려워집니다.


//  하나의 중괄호 미스로 에러가 야기되는데 이런 문제를 찾으려해도 


//  코드 해석에 시간이 걸리니, 그만큼 비효율적이라고 할 수 있겟죠.


// 그래서 대게 위 방법보다는 다른 if else if 방식으로

// 더욱 깔끔한 코딩을 합니다.

// 다음 시간에는 그 방법과 진도를 나가도록 하겠습니다 :)

//  피드백을 받고 있으니, 질문해주세요 :)



반응형
by 발전소장 에르 :) 2016. 5. 15. 09:25
반응형

안녕하세요~ 에르의 생각발전소입니다 :)

옵셔널은 잘 끝내셨나요?

이번 시간에는 함수에 대해서 겉만 살짝 다루보도록 하겠습니다.

저번에 이용한 코드를 그대로 가져와서, 

응용해보도록하겠습니다 :)






let Movie : String = "Death Note"


var ratings : [Double]? = nil


var officialUrl = "www.deathnote.com"


ratings = [4.5, 3.5, 2.5, 1.5, 4.5, 0.5]


// ratings 값을 초기화시켜보도록하겠습니다!

func funcratings (history:[Double]) -> (average:Double , min:Double, max: Double) {

    

    // history:[Double] 더블타입으로 평균, 최소값, 최대값을 지정해준다.


var sum = 0.0, min = history[0], max = history[0]


// sum 모든 값을 더할 것이고~


    // min max 히스토리의 첫번째 값을 가진다!


    for value in history {


    // for~ in문을 돌려봅시다!


        if min > value { min = value }


    // 만약 최소값이 값보다 크다면, 값이 최소값을 가진다.

    

        if max < value { max = value }


    // 최대값이 값보다 작으면 값이 최대값이 된다.

    

        sum += value


    // sum에는 모든 값들을 더한다.

    

    }


let average = sum/Double(history.count)


// 평균은 sum history 카운트 갯수로 나누어서 평균값을 구한다.

        

    return (average, min, max)

// 그리고 return값으로 평균 최소 최대값을 반환한다!

    

}



var movieInfo: String = "\(Movie)"


if let conratings = ratings {

    

    let history = funcratings(conratings)

    

    // 이제 history funcratings이며! funcratings conratings이다!

    

    movieInfo += "has \(conratings.count) ratings. \r\n average is \(history.average) from \(history.min) to \(history.max) ."

 

    // \r\n 한줄띄우기! 백슬레쉬에요 저번에 정슬레쉬로 설명드렸는데,

    // 사실은 백슬래쉬였답니다..어찌됬건

       

}

movieInfo += "\r\n let's contact our page : \(officialUrl)"




print("\(movieInfo)")



Death Notehas 6 ratings. 

 average is 2.83333333333333 from 0.5 to 4.5 .

 let's contact our page : www.deathnote.com 


//라는 최종적인 결과를 표출하였습니다.


// 함수는 일종의 도구이며,


// 본인 스스로에게 적합한 도구를 만들어, 적절한 시기에 사용하시면 됩니다!


// 함수를 얼마나 잘 만드냐, 적절하게 잘 설계를 하냐는 다~ 개발자의 재량이며, 가치입니다.


// 고로, 열심히 공부하여, 우리의 가치를 증진시켜봅시다 :)))


반응형
by 발전소장 에르 :) 2016. 5. 8. 00:00
반응형

안녕하세요~ 에르의 생각발전소입니다 :)

이번 시간에는 옵셔널의 마지막편입니다!

Force Unwrapping

Optional Binding

Implicitly Unwrapped Optional 

위 세가지 중  옵셔널과 임플릭시티 언렙 옵셔널에 대해서 알아보겠습니다:)

지난번 다뤄보았던 코드들 그대로 가지고 계신가요?!

시작해보죠.





if let conratings = ratings {

    

    //  if let conratings = ratings 새로운 상수 선언 대입!

    

    movieInfo += "has \(conratings.count) ratings."

    

    //ratings.count 또한 conratings.count 변경!

}


if let conofficial = officialUrl { // 홈페이지주소가 값이 아니라면,


  movieInfo += "/r/n let's contact our page : \(conofficial)"

    

    // 무비인포에 위의 문장을 더한다. /r/n 한줄 띄움임.

    

}


print("\(movieInfo)")


// 포스언렙핑 말고 다른 방법도 있음!

// Optional binding : if var , if let 으로 옵셔널사용을 최소화하기 위해 변수나 상수를 새로 만드는 것임.


var officialUrl : String! = nil


// 처음에는 nil이지만 나중에 어떻게든 무조건 값을 받을 경우는 implicity unwrapped optional방식을 사용하여

     

     타입뒤에 ! 붙임! 그렇게 되면?!

officialUrl = "www.deathnote.com"


// if let conofficial = officialUrl { // 홈페이지주소가 값이 아니라면,


//  movieInfo += "/r/n let's contact our page : \(conofficial)"

    

    // 무비인포에 위의 문장을 더한다. /r/n 한줄 띄움임.

    

// }


movieInfo += "/r/n let's contact our page : \(officialUrl)"


// 위에 if let conofficial 필요없이 바로 옵셔널이 아닌것 마냥 쉽게 사용이     가능함!


print("\(movieInfo)")


// 포스언렙핑 말고 다른 방법도 있음!

// Optional binding : if var , if let 으로 옵셔널사용을 최소화하기 위해 변수나 상수를 새로 만드는 것임.


// 마지막으로 Implicitly Unwarrped Optional 있음!

// 옵셔널 선언 나중에는 반드시 값을 가지게 값에게 방법을 사용할 있음!

// 보다 효과적임.


// 옵셔널은 스위프트에서 매우 중요한 부분이니, 다시 한번 제대로 되새겨주세요!


반응형
by 발전소장 에르 :) 2016. 5. 7. 21:50
반응형

안녕하세요~ 에르의 생각발전소입니다! :)

이번 시간에는 스위프트의 꽃!

옵셔널을 빼고 스위프트를 안다고 절대 할 수 없죠!?

드디어 이번 시간에는 Optional 에 대해서 알아보겠습니다!


시작해볼게요 :)










// 스위프트의 꽃인, optional


// Nil 값이 없는 무의 상태를 의미함.


// 특히 0 NIL 개념은 다름. 0 정수가 있다는 얘기임.


// Optuonal : 프로그래밍의 안전벨트, 실행 Nil 돠어 프로그램 크래쉬를 일으킬 있는 변수를 특별히 관리한다는 것임


// 스위프트의 장점이자, 단점인데 결론적으론 좋은 장점임!


// 옵셔널을 만드는 방법은 TYPE뒤에 ? 붙이면 .


// EX: NAME:TYPE? = VALUE


let Movie : String = "Death Note"


// 데스노트라는 값은 가진 스트링타입의 무비네임을 가짐 변수임.



var ratings : [Double]? = nil


// 평점을 더블타입으로 nil값을 주어서 선언함.

var ratings : [Double]? = nil


// 평점을 더블타입으로 nil값을 주어서 선언함.


// 허나 포스 언렙핑을 사용했음에도 불구하고 코드가 확실히 죽어버림.

왜냐하면, 값이 결국은 없기 때문임.

고로 이 방법을 사용하면, 빠른 길을 머어어어어얼리 돌아가야하는 결과가 나옴. :(


officialUrl = "www.deathnote.com"


// 일단 홈페이지 주소를 부여함.


var movieInfo: String = "\(Movie)"


// 무비지인포라는 스트링타입의 변수를 선언하고 무비인포는 무비라고 초기화함.


// ratings != nil 에서 ratings는 nil이 아니다! 라는 연산자입니다! (!= NOT)

// 그래서 ratings는 nil값이 아니라고 선언을 했으니!! 문제가 없음!


// /r/n는 한줄 띄움임! 앞으로 자주 사용하실거에요 :)

// officialUrl != nil 이 nil값이 아니라면,

movieInfo에 위 문장을 더한다~!


// 앞에 Optional이 보기 싫고 불완전하게 코딩이 되었으니!


// 짜잔!. officialUrl에 ! 를 붙여서 포스 언렙핑을 시켜서

// 완변히 만들어줍니다 :)

다음 시간에는 ~ ? Optional binding 과 Implicity Wrapped Optional 에 대해서 

다루어보도록하겠습니다!

2016/05/05 - [프로그래밍발전소 ♫] - 160505 Swift 구문편! if, for, switch 까지!


2016/05/05 - [프로그래밍발전소 ♫] - 160505 Swift Collection: Dictionary 와 Set


2016/04/25 - [프로그래밍발전소 ♫] - 160424 collection Array 편 :)


2016/04/23 - [프로그래밍발전소 ♫] - 160423 Swift Tuple, Typealias 편 ! :) 튜플과 타입얼라이어스


2016/04/20 - [프로그래밍발전소 ♫] - 160419 Swift part.2 String과 Numbers에 대해서


2016/04/19 - [프로그래밍발전소 ♫] - 160418 swift 란? 스위프트 언어에 대해서 알아봅시다. let과 var편



반응형
by 발전소장 에르 :) 2016. 5. 7. 03:23
| 1 |