반응형

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

이번 시간에는 스위프트와 같은 프로그래밍 언어의 꽃!

함수에 대해서 다뤄보도록하겠습니다!

함수는 일종의 연장(도구)입니다.

못질을 하기위해서는 망치가 필요하겠지요?

그럼 그 망치를 만들어야하는데, 

여기서 망치가 함수가 되는겁니다!

그러므로, 꼭 알아야겠죠?






OPTIONAL 편에서 사용했던 예제를 가져왔습니다 :)

import UIKit


let movie = "Death Note"


// moive라는 상수를 선언하고 값은 "Death Note"를 가집니다.


var ratings:[Double]? = nil


// 처음에는 값이 없고 나중에 추가될 것이기 떄문에. 옵셔널로 지정해줍니다.


let url :String = "www.DeathNote.com"


// 주소는 당연히 있어야겠지요?


// 그리고 타입을 선언해줬습니다! 


ratings = [1.5, 2.5, 3.0 ,5.0, 4.5, 1.0, 3.5, 2.0]


// ratings 8개의 더블값들들을 주었습니다!


var info:String = "\(movie)"


var info:String = movie


// 둘 중 어느 타입으로 주든 상관없습니다 :)

// print 역할을 맡게될 info 변수입니다!


// 이제 함수를 만들어봅시다!


//    func <#name#>(<#parameters#>) -> <#return type#> {

//         <#function body#>

//     }


// 스위프트에서의 함수 틀입니다. parameters에는 매개변수가 들어가고 


// return type에는 함수에 돌려지고 결과값을 표출할 때의 


// 값을 지정해주셔야합니다.


// function body 함수의 내용입니다.


func funcRatings(paraRatings:[Double]) -> (average:Double, min:Double, max:Double){


    //  paraRatings:[Double]이라고 선언했는데, 왜냐하면 ratings


    //  더블값이기 때문입니다. 게다가 어레이상태이죠.


    //  리턴타입은 튜플이며 평균과 최소, 최대값을 구할 것이며, 타입은 더블입니다.

    

    // 왜냐하면 ratings 값들이 더블값이기 때문이지요!


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

    

    // sum 0.0 값을 가지며, min,max paraRatings에서의 첫번째값을 가진다. 라고 변수를 생성해주세요.


 

    for value in paraRatings {

        

        // for~in구문을 활용해봅시다!

        

        if min > value {min = value}

        

        // 만약 min 값보다 크다면  value 최소값입니다.

        

        if max < value {max = value}

        

        // 만약 max 값보다 작다면  value 최대값입니다.

        

        sum += value

        

        // sum에는 값들을 차곡차곡더합니다. 총합이니까요!

 

}


 

let average = sum/Double(paraRatings.count)

    

    // 평균값은 총합에서 paraRatings 갯수만큼 나눈 값입니다!

    

    // 여기서 paraRatings.count Double타입이 지정된 이유는?

    

    // 그렇죠, 값들이 더블값이고 따로명시해주지않으면 

    

    // 스위프트 정수로 인지하니 타입을 정확힌 지정해야하는거죠

    

    // 스위프트는 타입과 대소문자에 까칠합니다!

    

    return(average,min,max)

    

    // 반환으로는 average, min, max 반환한다.

    

}

언렙하지않으면 스위프트가 유혹을 합니다.

너 이값이 언렙되지않았는데, ! 나 ? 써서 언렙할레?

그게 더 깔끔할 것 같은데?

ㅋㅋㅋ그래서 !를 붙힘니다!

 

info += " has \(ratings!.count) ratings.\r\n average is \(record.average) from \(record.min) to \(record.max),  \r\n Also our offical website is here \(url) "



print(info)


// 이렇게 갑이 또아앟! 뜹니다 :)

// 그럼 끝이에요.

// 함수를 이용해서 연산을 했고 그 값을 활용해서 위와같은 결론을 얻었습니다 :))))


// 조만간 함수와 옵셔녈 컬렉션들에 대해서 심화편을 업로드하도록 하겠습니다 :)


반응형
by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2016. 5. 12. 08:01
반응형

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

저번 시간에는 tuple과 typealias를 알아보았는데요.

이번 시간에는 collection을 다뤄보도록 하겠습니다.

array는 dictionary, set 등의 친구인데요.

 콜렉션 범주안에 속하는 녀석입니다.

자 그럼 본격적으로 시작해볼까요?









var children:Array<String> = ["a", "b", "c", "d", "f" ,"g"]


// children이라는 이름의 스트링 타입을 가진 어레이를 정의하고


// 인스턴스는 a,b,c,d,f,g 입니다. 아이들의 이름이죠?


// 위에 설명했듯이 대괄호가 값을 감싸야하며, 스트링일 경우 따옴표가 따라옵니다.


var age:[Int] = [10,15,20,30,40]


// age라는 이름을 가진 인트타입의 어레이를 만들었으며,


// 10,15,20,30,40 이라는 값을 가지고 있습니다.


// 위와 같이도 어레이를 만들 있습니다.


// age 방식이 쉽지요?


// 그리고 array 되있다고해도 let으로 정의된 값은 수정 불가능합니다.


children += ["z"]


// children 어레이에 값을 추가했습니다.


// 역시 대괄호가 필요하고, children var이니 수정 가능합니다 .



let maxMemory:Int = 128


// maxMemory라는 인트타입의 상수 클레스를 만들었으며, 값은 128입니다.


// 어레이가 아닙니다.


var presentMemory:Int = 54


// presentMemory 인트타입이며 갑은 54입니다.


presentMemory += 10


// 어레이가 아니기 때문에 그냥 편하시게 더하시면 됩니다.


let UpgradeMemory1 = 250.5


// UpgradeMemory1 라는 더블값을 가진 클레스를 만들고,



var MemoryBackUp:[Int] = []


// MemoryBackUp 이라는 인트형의 어레이를 만들었고 값은 없습니다.


MemoryBackUp.append(UpgradeMemory1)


// 에러가 났습니다. 에러가 난걸까요..?


MemoryBackUp.append(Int(UpgradeMemory1))


// 왜냐하면 UpgradeMemory 타입이 더블이기 때문입니다.(형태를 정해주지않으면 자동으로 더블.)


// Int Double 친구가 됩니다.


// 그래서 하나의 형태로 통일을 시켜줘야 진행이 가능합니다.


// 스위프트는 타입에 엄격합니다.


// 엄격한만큼 안전성은 올라가며, 개발자와 사용자에게도 여러모로 이득입니다.




// 어레이를 다른 어레이에 할당했을 기존 어레이 안에 값이 있으면 복사가 .


let copy = MemoryBackUp


// copy라는 어레이를 만들고 어레이에 MemoryBackUp이라는 어레이를 할당함.



MemoryBackUp += [128]


// 그리고 MemoryBackUp 새로운 값을 추가하면?


copy


// copy MemoryBackUp 새로운 값이 추가되기 전의 값이 남아있슴.


// 아무때나 복사가 되는 것은 아니고, 


// 어레이의 값이 재초기화되는 순간 복사가 .


// 일종의 잔상같은 개념임! :)


var test1:[Int] = [10]


// 테스트1 인트형의 어레이로 10 값을 가짐.


var test2:[Int] = [20]


// 테스트2 인트형의 어레이로 20 값을 가짐.


var copytest1 = test1


// 카피테스트1 테스트1이며, 어레이는 카피테스트1 할당됨.


copytest1 += [23]


// 아까와는 역으로 카피테스트1 값을 추가했음.


test1


copytest1


// 아까의 예시와 반대의 경우도 가능함! :)





---------------------------------------------------------------------------------------------------------------------------------------







여기까지 Array에 대해서 알아보았습니다.


다음 시간에는 Dictionary 와 Set에 대해서 알아보겠습니다.!


P.S 작성하다가 점검할 때 본건데,,, 존대에서 음슴체로 바뀌네요...ㅎㅎ


Have a lovely DAY~ :))))


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. 4. 25. 08:22
  • 감사합니다 2016.04.29 16:43 ADDR EDIT/DEL REPLY

    정리해서 글써주셔서 정말 감사합니다. 각종 인터넷 책자는 초보자에게 어려운 말들로만 쓰고 그말들에 대한 풀이는 명확히 안나와있어서 어려워 하고있엇는데, 이렇게 쉽게 풀어서 써주시니 저같은 왕초보도 한번에 알수있더라고요 ! 감사합니다 !!
    다음 연재는 또 언제될까요 ~~~?

반응형

                        Hello~ 안녕하세요? .

   에르의 생각발전소의 에르입니다~ ! :)       

오늘 저희가 다뤄볼 주제는 " 전자담배 ! 정말 연초보다 해로운가? " 입니다.

일단 본격적으로 비교해 보기전에 1편에서는 " 전자담배 "가 무엇인지부터 알아볼까요?

나무위키에서 참조하였습니다.



한 마디로 요약하자면,


 배터리 (라이터) 로 카토마이저 (담배지) 안에 있는 액상 (담뱃잎)을 코일로 기화시킨 기체를 흡입하는 형태입니다. 



위 사진에서 보이는 검은색 부분이 카토마이저입니다. 

이 전자담배는 궐련타입인데요. . 디자인이 전자담배들 중에서 갑인 제품 라인입니다.

그리고 오토센서를 사용하여 훨씬 편리하며 가볍고 실용적입니다. 

저거 하나면 하루는 거뜬..


아래 제품은 국민담배인 저스트포그1453 입니다. 1453이 적힌 부분이 카토마이저입니다.

가끔씩 비꼬기위해 " 피리 " 라고도 하는데요.

제 친구들은 왜 한국인들은 다 저런 피리같은 걸 목에 걸고다니냐먼서, 신기해하더라구요.

외국은 피리같은 전자담배보다는 권련타입의 전자담배를 더 선호합니다.

해외에서 피리형은 주로 리빌더들이나 매니아들이 사용하죠.

카토마이저라는 단어는  "카트리지 + 오토마이저" 가 합쳐저 만들어진 단어입니다. 

왜냐하면 초기에는 카트리지와 오토마이저가 분리되어있었기 때문입니다. 

한번 담배를 피기위해서는 약쟁이처럼 뻘짓거리를 해야됬었죠..

(몇 방울 떨구고 적신다음 피고 다시 적시고..)

하지만 카토마이저가 개발되면서 더 이상 약쟁이 코스프레를 하지않아도되고 더 간편해지면서, 추억속으로 사라졌습니다.

카트리지는 액상을 담는 탱크이고, 오토마이저는 코일과 심지가 연결도있고 저항값을 담당합니다.

전자담배 배터리는 연초에 불을 붙이기위한 " 라이터" 라고 할 수 있습니다.

다양한 배터리가 있습니다. 5핀 충전 지원이 되는 배터리. 불빛이 같이나는 배터리, 자동 잠금이 되는 배터리,

10초 이상 흡입이 자동으로 전원을 끊어주는 기능  과충전 방지 기능 등등 

적어놓고 보니 다 기본적으로 포함되어있는 기능들이네요.

피리타입 전자담배 배터리입니다. 다양한 디자인과 성능으로 다소 저렴한 가격에 손쉽게 구할 수 있습니다. 

(어디꺼든 거기서 거기니 적당히 싼거 사시면됩니다.)

담배로 치면 궐련지 안에 들어가 있는 담뱃잎이라고 할 수 있는 부분입니다.

액상 + 니코틴용액이 있어야 진정한 전자담배용 액상이라고 할 수 있으며. 니코틴 안넣고 깔짝거릴 빠에는 

차라리 사탕이나 과자를 더 추천합니다. (비타민 스틱도 상술..차라리 비타민을 드세요.)

인터넷에서 니코틴이 포함되지않은 액상을 1~2만원대에 20~30ml짜리를 손쉽게 구매할 수 있으나,

안타깝게도 니코틴은 온라인상에서 구매가 안된다. 

그래서 해외에서 니코틴을 직구하거나, 오프라인 매장에서 니코틴만 따로 구매가 가능하다.

, 저 액상들을 오프라인에서 샀다면 당신은 훌륭한 호갱님이다.

혹시 " 김장족 "이라고 들어본적이 있는가? 손수 전자담배 액상을 만들어쓰는 사람들을 일컫는 말이다.

필자 또한 김장족이며, 훨씬 편리하며  경제적이며, 편리하다!!  ( 나중에 상세히 포스팅하도록 하겠습니다.)

오지랖이지만, 제발 오프라인 매장에서 액상사서 호갱님 되지말기를..진심으로!!


전자담배의 장점이 나열되어있는데, 개인적으로는 가장 장점은 "냄새가 없다" 가 1위이다.

전자담배에 연초 특유의 냄새가 없으니 입냄새는 물론이고, 주변 물건이나 옷이나 집에서 혹은 방에서 담배냄새가 밸 염려가 없다.

물론 타바코향이라던지 연초냄새를 모방한 액상을 핀다면 얘기는 달라지겠지만, 어차피 피다보면 그 향이 그향이다.

고로, 필자는 고로 무향을 추구하는데 니코틴 맛을 없애기위해 소량의 항료만을 사용하는 편이다.

그리고 전자담배는 규격이 있어 해당 규격에만 맞으면 어느 제품이든 모 ~~ 두 호환가능하다!

다방면으로 재활용이 가능한 셈이다.


전자담배의 단점이라.. 단점이라고하면 기기적인 부분이 가장 크다고 볼 수 있다.

안전성이 검증되지않고 무차별적으로 싸게 판매되고있는 배터리나 카토마이저나 분명 호환이 되는 규격이 맞는데 제조사의 잘못으로 이걸 호환하라고 만든건지

그냥 쓰다버리라고 만든건지 모를 제품들이 상당히 많다. 싼 제품은 싼 값을 한다. 그래서 싼거다. 너무 밝히지말자.

물론 안목이 생긴다면, 자연스레 거르겠다만 처음 전자담배를 접하거나 아무런 정보없는 사람들은 준비없이 전자담배를 시작하려다가 코 베이는 경우가 많다.

그리고 액상은 항상 문제이기보다는 귀찮다. 그래서 한번만들 때 2~3통씩 넉넉히 만들어두는 편이다. 그럼 2~3달은 아무 걱정업다~

다른 단점은 만약 야외 활동시 필려고 보니 배터리가 없을 때... 이건 거의 고문수준.. 

정말 연초생각이 간절하다. 뭐 5핀 지원하는 배터리들은 상관없겟지만,

필자가 쓰는 그린스모크 제품은 따로 어뎁터가 필요하므로.. 한번 충전하면 이틀은 사용할 수 있지만 

만약을 대비해 충전을 매일 매일 돌아가며 시켜놓는 중이다.

그리고, 뭔가 아쉽다. 연초를 따라갈 수 없다. 특히 군생활 때 육개장이나 감자탕을 먹고나서의 그 담배맛이란..


솔직히 하x, 라x야, 베x 등 전자담배 회사들이 많은데..다 어이가 없다. 

그냥 자기네 "로고" 박아놓고 브랜드랍시고 꼴깝떨면서 2~3만원 더 올려파는데 

이게 무슨 마케팅인지 뻘짓거리하는지 모르겠다. 한군대 쯤 집근처에 단골매장을 만들어놓으면 편하긴하다.

(물론 a/s다 뭐다 해주겠지만 이리저리 다 계산해봐도 이득이다.)

그럼에도 불구하고, 위 회사 제품을 구매해주시는 호갱님들 덕분에 위 회사들이 번창한다더라.

일회용 담배에 대해서는 추후에 따로 포스팅하게 되겠으나, 일회용 담배는 간편하고 신기하며 가볍고 깔끔하다 !

피우다 액상이 마르면 그냥 버리면 된다. 물론 액상 리필도 가능하지만 

기본적인문제는 일회용담배 배터리를 다시 충전가능할 수 있냐 없냐인데.. 시도하지않는게 정신 건강에 이롭다.

결론은 일회용 전자담배에 연연하지말고 다 폈으면 휙~ 쓰레기통에 버리는게 가장 현명하다.

근데 이 일회용 전자담배를 진지하게 따져보면 상당 ~ 히 비싸다. 진심. 

고로, 호기심으로 한두번 정도가 적당하다고 본다.


전자담배나 전자식 금연보조기나 이름만 다르지 그놈이 그놈이고 저놈이 저놈이다 차이가 없다. 

그저 마케팅 타겟을 어르신으로 잡아 한대라도 더 많이 팔아볼려는 상술이다.

만약 부모님이 무슨무슨 금연보조기나 금연 제품을  사시거나 살 계획이 있으시다면 , 그냥 연초 계속 피우시라고하던가

사탕이나 니코틴 패치 이런걸 사드리거나 좋은 전자담배 하나 사서 피시라고 드리는게 더 이득이다.

허나 마케팅이 상당히 강력하고 중독적이므로  부모님의 마음을 바꾸는게 어렵겠으나. 선택은 본인의 몫. :)

위 표에서 보이듯이 전자식 금연보조제는 담뱃잎을 액체에 녹여만든 " 연초액" 을 사용한다. 

( 연초액과 전자담배 액상은 본질적으로 다르다. )

담뱃잎에서 니코틴을 제외한 다른  성분을 녹인다는건데... 전자담배 액상 보다 안좋으니 피지않는게 좋다.

전자담배 액상과 모두 식용가능하며, 

특히 프로필렌 글리콜을 제외한 식물성 글리세린과 향료, 감미료는 생활 주위에 곳곳 스며들어있으며,

글리세린 (화장품, 소스 그외 다수) , 향료 (과자, 사탕 , 스프레이 , 향수)

애초에 식용이므로 걱정하지않아도 된다.  

문제는 섭취를하냐 흡입을 하냐의 차이이고 어떤게 기화된 입체를 흡입하냐는 것이다.

전자담배 > 전자식 금연보조제

액만 다르지 기기 주조는 똑같다.

뉴스나 기사에서 보면 연초보다 전자담배가 몇십배는 더 어지럽고 후유증을 호소하며, 몸에 백해무익하다고 하는데 

맞는 말이다.

당연히, 전자담배를 숨쉬듯이 계속 미친듯이 계속 피워주시면야 아래 짤처럼 실려갈 수 있다.

무식한것들..


 

 막장도 이런 막장이 없고,  멍청해도 이정도로 멍청할 기자나 뉴스가 없을 거다

. 일반 연초로 따지면 줄담배를 피워댔다는건데 줄담배를 피우고나서 정상인게 더 이상한것 아닌가..?

그냥 " KTNG에서 돈받고 전자담배 극딜합니다~ " 라고 자막을 넣어주는게 더 효과적이었을 듯 싶다 

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

지원사격하는 YTN ! 자기네들도 말이 안되는 거 아니까. 

전자담배 얘기는 몇년전부터 쑥 사그라들었다. 약빨이 떨어졌으리라.

KTNG도 전자담배 규모가 이만큼 커졌을지 몰랐었겠지...

발등에 불똥 떨어지니 " 레종, 디스 , 에쎄"  캡슐이네 룰라네 하면서 개량시켜서 허겁지겁 출시했지.

요약하자면, 전자담배나 연초나 둘다 몸에 해롭습니다. 허나 차이점은 " 더 나쁘냐 , 덜 나쁘냐 " 입니다.

전자담배 4년 피면서 터득한 노하우들 소소한 팁들 나중에 포스팅하여 풀도록 하겠습니다.

방문해주셔서 감사합니다 :)

(광고 클릭은 블로거에게 큰 힘이 됩니다.)


Have a Lovely DAY ~








반응형
by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2016. 4. 11. 02:11
| 1 |