반응형

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

저번 시간에 다뤄보았던 Dictionary, Set, Array에 이어,

이번에는 코드의 생명. 

연산자 파트에 속하는 구문에 대해서 살~~짝 알아보도록 하겠습니다! :)\











// if = 조건의 따른 분기문임.


//    if condtion {  ...

//    } else {

//       ...

//     }    //

//  위와 같은 구조를 가짐.


// if 조건이 참이면 else 앞의 구문이 실행되고,

// 거짓일 경우 else 뒤의 구문이 실행된다.


// 전편에 사용했던 변수를 이용하여, if문을 만들어보겠습니다.



if intersect.count > 0 {

    print("두개의 팀에 모두 소속돤 학생은 \(schoolTripTeam1) 입니다.")

} else {

    print("두개의 팀에 모두 소속된 학생은 없습니다.")

}


// intersect 학생수가 0보다 많으니 참이므로, else 앞의 구문이 실행됨.


// 위와 같은 조건식으로 if문을 작성하여 구동하실 있습니다.


// for 구문 : 범위 또는 컬렉션의 반복 구문.


/* for ; 반복조건 ; 증가값 {...

    

 } for item in collection { ...

 

 }   

  */


for studentName in schoolTripTeam1 {


    print("\(schoolTripTeam1) 1 소속된 학생이 맞습니다.")


}


// for switch 구문, 다양한 변수의 경우를 집어 넣을 사용.


for (name, scale) in SeminaRooms  {

    // SeminaRomms 스트링값을 name 인트값을 scale 할당받음.

    

    let roomInformation:String

    //새로운 스트링 타입 상수를 만들어 케이스를 가정하나, print 사용해도됨.

    switch scale { // scale 스위치로 사용하겠다~


    case 4:

        // 스케일이 4라면!?

        roomInformation = "\(name) 작은 방이며. \(scale)명을 수용할 있는 규모의 방입니다."

    

    case 5...10:

        //스케일이 5~10까지라면?

        roomInformation = "\(name) 중간 규모의 방이며, \(scale)명을 수용할 있는 규모의 방입니다."

    

    case 11...20:

        // 스케일이 11~20까지라면?

        roomInformation = "\(name) 규모의 방이며, \(scale)명을수용할 있는 규모의 방입니다."

    

    case 21...30:

        //스케일이 21~30까지라면?

        

        roomInformation = "\(name) 별도의 예약이 필요한 방이며, \(scale)명을 수용할 수있는 규모입니다."


    default:

        // 디폴트를 통해서 네가지 이외의 변수가 발생할

        // 해당값을 실행한다! 라고 모든 변수를 충족시켜줘야만 !

        roomInformation = "\(name) 이하의 방은 없습니다."

        

    }

}


for (name, scale) in SeminaRooms  {

    

    let roomInformation:String

   

    switch scale { 

    case 4:

        

        roomInformation = "\(name) 작은 방이며. \(scale)명을 수용할 있는 규모의 방입니다."

    

    case 5...10:

       

        roomInformation = "\(name) 중간 규모의 방이며, \(scale)명을 수용할 있는 규모의 방입니다."

    

    case 11...20:

       

        roomInformation = "\(name) 규모의 방이며, \(scale)명을수용할 있는 규모의 방입니다."

    

    case 21...30:

  

        

        roomInformation = "\(name) 별도의 예약이 필요한 방이며, \(scale)명을 수용할 수있는 규모입니다."

    default:

       

        roomInformation = "\(name) 이하의 방은 없습니다."

        

    }

}


// 주석을 삭제한 코드 전문입니다.!


// 도움 되셨길 바랍니다!



반응형
by 발전소장 에르 :) 2016. 5. 6. 02:10
반응형

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

저번 시간에는 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
반응형

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

이번 시간에 다뤄볼 주제는 " 내 맥북...어떻게 고칠까? " 인데요

센서고장 혹은 SMC 설정이 엉켜버린 경우 

조금의 과부하에도 맥북은 위기사항으로 인지하고 

펜은 쌩쌩 돌려버리는 경우가 있는데요.

RPM이 높아지면 높아질수록 소음은 커지게되며,

특히 도서관같은 정숙을 요구하는 장소에서는 민폐가 될 수 있겠죠.

그리고 이 프로그램의 장점은 한국어를 지원한다는 것!

다운받아볼까요?




위 링크를 따라가주세요 :)


링크를 타고 들어오셨다면 위와 같은 화면을 보실 수 있습니다.

지금 저희가 필요한 건 Macs Fan Control 이라는 앱입니다.

여러분의 컴퓨터는 MAC이므로, 우측 하단에 " Download for Mac "을 클릭해여 다운로드받아주세요.


다운로드를 완료하셨으면 Downloads 폴더에 Mac Fan Control 이 보이시나요?

클릭해주시고 설치해주시면 됩니다 :)


그럼 어플리케이션 폴더에서나 F4를 눌러 대쉬보드에서 확인가능하십니다.

얘를 실행시켜주세요.

아무것도 안뜬다고 당황하지마시고~


 우측상단에 보시면  아이콘이 보이실겁니다.

이 아이콘을 클릭해주세요.



저는 고정값을 5000으로 설정해놓았답니다. 맥북이 아주 냉골이에요..

각설하고, Macs Fan Contorl 열기를 클릭해주세요.



위와 같은 창이 뜨며 우측에는 온도센서를 통한 각 파트의 온도를 확인할 수 있으며,

좌측에서는 팬의 설정을 만지실 수 있습니다.

편리한 환경을 위해서 환경설정을 클릭해주세요.


아, 미리  한국어로 언어를 바꿔놓은터라 이렇게 보이실텐데 

처음 다운받으면 영어로 뜬답니다.

침착히 따라해주세요.


메뉴바에서 온도도 우측에 띄울 수 있습니다.

저는 CPU Core 2 를 지정해놓았습니다.


자동을 누르면 원래의 설정대로 온도가 어느정도 올라갔을시만 작동을하며 기본 세팅입니다.

하지만 개인의 취향에 따라 기본값을 설정할 수 있으니,

좋겠죠?

단축키도 잘 지원한다면 좋겠지만 희망사항일 뿐입니다..

어찌됬건 해결이 되셨나요?

그럼 보다 즐거운 MacLife를 위해서 

20000~

반응형
by 발전소장 에르 :) 2016. 4. 21. 01:23
반응형

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

이번 시간에는 저번 시간의 " let , var , int , double " 에 

이어서 String, Numbers에 대해서 다뤄보겠습니다.

String은 문자열을 의미입니다. 

여기서 문자열이란, 문자들이 모인 열을 의미하며, 

문자들은 character로 구분하며 이 character들이 모이면 String이 되는 개념입니다.

아래 예문을 살펴볼까요?

logan이라는 문자열을 상수로 정의하였고, hi라는 문자열을 상수로 정의하였습니다.

헌데 왜 에러가 뜰까요?

이유는 바로 "(큰 따옴표) 때문입니다. 

스트링으로 정의할 때는 문자열 앞뒤로 큰 따옴표가 꼭 필요합니다.

스트링 앞뒤로 큰 따옴표를 붙히니 에러가 말끔히 사라졌습니다.


mr이라는 클레스에 lee라는 스트링을 수정 추가할려는데 

에러가 발생합니다 왜그럴까요?

맞습니다.

mr는 상수 클레스이므로 건들 수 없습니다.

고로, mr 대신 hi 변수클레스에 hello 스트링을 더했습니다. 

글자가 붙는 것을 원하지않는 분들은 앞에 공백을 넣어주세요.


그럼 mr, hi 두 클레스를 붙혀서 " hi hello logan " 이라는 값을 얻고자합니다.

+= 덧셈 연사자를 이용하여, " hello " + mr 를 입력하여주시면 우측에

"hi hello logan" 이라는 결과값이 표출되는 것을 보실 수 있습니다.

let의 값을 다른 값에 덧셈하는 것은 가능합니다. (허나 직접적으로 초기화시키는 것은 불가능합니다.)



charaters라는 상수클레스를 만들고 mr클레스의 문자열의 각 문자들에 접근하기위해 

characters 기능을 이용하여, 간단하게 오브젝트 뷰가 생성되었습니다.

l, o, g, a, n 이라는 5개의 문자가 보이는데요.

count 기능을 사용하여, 실셈이 가능합니다.

let count = characters.count 로 5개라는 결과값이 표출되고있습니다.

String에 대해서 감이 오시나요?

의외로 쉽쥬?



이번에는 더블과 인트 값에 대해서 보충설명을 해보겠습니다.

height는 더블값이며, halfHeight = height/2 라는 코드에 에러없이 정삭적으로 작동합니다.


허나, divider 라는 상수클레스를 만들어 height/2 대신 height/divider 를 대입하니 에러가 발생합니다.

왜그럴까요? 분명히 똑같은 숫자 2인데 말이죠.

이유는 바로 타입 때문입니다.

divider의 타입은 Int값이며 height의 값은 double값입니다.

고로, 연산이 불가능한거죠

그리고 float은 32bit이며, double은 64bit입니다.

그냥 소수점값을 입력하면 그 클레스의 타입은 자동으로 double이 됩니다.

그래서 정확한 계산을 위해서 divider값을 Double값으로 변경 후 계산해보면 정확한 값이 표출됩니다.

저번 시간에 배운 type(value) 기억하시죠?

응용하시면 됩니다!


 Bonus) UInt 와 Int가 있습니다!.

값을 보시면 Int는 - 값까지 있는 반면에 UInt값에는 -가 없습니다!?

Unsigned Int라고 하여 양수만 표현하는 정수입니다. 

장점은 int에 비해 양수를 2배 (Int x 2 - 1 )만큼 더 사용가능합니다.

용도에 따라 Int와 UInt를 사용하시면 편하시겠죠?

1편링크<<<<


다음엔 TUPLE과 array로 찾아뵙겠습니다! :)


Have a lovely day`!


( 윤성관님의 강의와 꼼꼼한 재은씨의 스위프트2 를 참고하였습니다.)


반응형
by 발전소장 에르 :) 2016. 4. 20. 08:21
반응형

반갑습니다 :) 에르의 생각공작소의 에르입니다.

이번 시간에 다뤄 볼 주제는 바로 " SWIFT "입니다.

 objective-c 언어의 특징도 가지고 있으면서,

스위프트만의 독자적인 장점도 가지고 있는

오브젝티브씨를 다루셨었던 개발자분들은 

왠  새 한마리가 툭 튀어나와서 이리 마을을 흔드냐..

라고 하시겠는데

처음에는 스위프트가 공개됬을 때는 많은 분들이

많은 분들이.. 스위프트하면 가장 먼저 떠올리실 것 같은...?

네.. 저도 인정합니다.  스위프트하면 " 테일러 스위프트 " 가 가장 먼저 떠오르죠.

뜬금없지만, 레전드 짤하나 퍼왔습니다.

자! 이제 각설하고 본론으로 돌아가보겟습니다. 


스위프트(Swift)는 애플 iOS OS X를 위한 프로그래밍 언어 

2014년 6월 2일 애플 세계 개발자 회의(WWDC)에서 처음 소개되었다. 

기존의 애플 운영체제용 언어인 오브젝티브-C와 함께 공존할 목적으로 만들어졌으며, 

오브젝티브-C와 마찬가지로 LLVM으로 빌드되고 같은 런타임을 공유한다.

 클로저, 다중 리턴 타입, 네임스페이스, 제네릭스, 타입 유추 등 오브젝티브-C에는 없었던 

현대 프로그래밍 언어가 갖고 있는 기능을 많이 포함시켰으며,

코드 내부에서 C나 오브젝티브-C 코드를 섞어서 프로그래밍하거나 스크립트 언어처럼 실시간으로 상호작용하며

 프로그래밍 할 수도 있다. 언어 설명서도 함께 배포되었다. 애플에서는 iBooks에서 Swift에 관한 책을 배포하고 있다.

링크 --> [ swift 언어 개발문서 한국어 번역판 ] 입니다. 

본격적으로 시작하기전에, 앱스토어에서 XCODE를 다운받아주세요.

XCODE가 없다면 Swift는 무용지물입니다.


XCODE를 실행시키시면 위와 같은 화면을 보실 겁니다.

여기서 ' Get started with a playground " 를 클릭해주세요.

playground란 xcode의 장점 중 하나로써 연습장입니다.

코드를 작성해보고 작성하는 즉시 중간중간에 자동으로 혹은 수동으로 실행하여,

결과를 즉시 확인할 수 있습니다.



이름은 아무렇게 편하신데로 적어주시고 플렛폼은 IOS를 선택해주시고 생성해주세요.


플레이그라운드 실행시켰을 때 제일 처음 보게될 화면입니다.

익숙한 hello world 란 문장이 보이네요.

그런데 맨앞 줄에 var 는 도대체 무엇일까요?



let 은 상수 값을 선언하기 위해 쓰입니다. invariable 값을 선언하기위해 사용되죠.

한번 그 값으로 초기화되면 변경 할수없습니다.

var 는 변수 값을 선언하기 위해 쓰입니다. variable 갑슬 선언하기위해 사용됩니다.

한번 선언된 값을 수정할 수 있습니다.

또한, 정석대로라면 let name:type = value가 되어야하는데 타입 선언 부분이 생략되어있습니다.

왜냐하면 스위프트의 자동 타입 추론 기능으로 인해 값을 입력하면 그 값을 자동으로 인식하여,

컴파일러가 해석한 타입으로 선언합니다.

고로, 정수값을 입력하면 그 개체의 타입은 자동추론을 통해 정수로 선언되는 것이며,

문자열을 입력했을 경우 개체의 타입은 자동 추론으로 인해 스트링으로 선언됩니다.


 let으로 maxnumber라는 개체를 생성하였고 저 개체의 값은 300이며, 코드를 수정하지않는 한 변경하지못합니다.

var 로 currentNumber라는 개채를 생성하였고 저 개체의 값은 123이며, 수정가능합니다.

currentNumber 값을 123에서 230으로 수정하였고 문제없이 변경되었습니다.

허나, maxNumber 값을 300에서 350으로 수정하고자 하였으나 에러가 발생했습니다.

이번에는 currentNumber와 pastNumber를 더해보도록 하겠습니다.

currentNumber + pastNumber 라는 코드를 실행했더니 에러가 납니다.

이유는 바로 타입이 서로 다르기 때문입니다.

pastNumber는 더블 값을 가지고 있으나 currentNumber는 정수값을 가지고 있습니다.

스위프트에서는 다른 타입의 값을 서로 연산시킬 수 없습니다.

둘 중 하나의 값을 같은 타입으로 재선언해주셔야합니다.

int 타입인 currentNumber 를 Double값으로 재선언하여 pastNumber 값과 덧셈을 시켜보니...

에러가 사라졌습니다.

값을 재선언하기위해서는 type(value) 문을 사용해주시면 됩니다.!

다음편은 string과 numbers 를 다뤄보도록하겠습니다.

윤성관님의 강의를 참고하엿습니다.




p.s 처음 스위프트가 공개되었을 때는 외면은 많이 받았었습니다.

옵젝씨가 드디어 빛을 발하려고하는 과정에서 스위프트가 공개되었기 때문입니다.

스위프트의 몰락을 점치는 사람들이 꽤 있었습니다.

허나 옵젝씨와 호환되며, 더 세련되고 현대화된 스위프트가 오픈 소스로 공개되며,

실 개발에 사용되고 시간이 지남으로서 영향력이 커져가고 있음은 사실이며,

애플 또한 공식홈페이지를 통해 스위프트 언어 사용을 장려하고 있습니다.

저같이 처음으로 프로그래밍을 공부하시는 분들은 스위프트가 의외로 적합하다고 봅니다.

다들 같이 힘내봅시다! :)






반응형
by 발전소장 에르 :) 2016. 4. 19. 08:27
| 1 |