반응형

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

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

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

이번 시간에 다뤄 볼 주제는 단순 구문과 흐름 제어 구문 입니다 :)

프로그램을 만들 때 더 잘 작동할 수 있도록

일종의 윤활유라고 할 수 있겠지요?

뭐 뭐든 안중요한게 있겠습니까?

다 모든 프로그래밍 지식들이 소중하지요.

어찌됬든, 시작해보겠습니다 :0






/* 프로그래밍 과정 작성하게되는 코드를 구문이라고 하며,

 

 앱하나를 개발하기위해서 수십줄부터~ 수만줄의 코드가 필요하며, 이와 더불어 디자인 음향 네트워크 등등 따지면, 많은 노력과 시간이 필요합니다.

 

 구문의 종류는 단순 구문과 흐름 제어 구문으로 나뉘는데,


 단순 구문은 말그대로 객체의 선언 정의 일반 구문인 반면


 흐름 제어 구문은 조건문이라고 있겠지요 :)

 

 대게 흐름 제어 구문은 종류로 나눌 있는데


 -반복문, 조건문, 제어 전달문으로 나눌 있습니다.

반복문은 For구문과 While구문으로 나눌 있습니다.

 

 for 반복문은 주어진 구문을 정해진 횟수만큼 실행하며,

 

 for~in구문과 for구문으로 나눌 있습니다.

 

 for 구문은 반복할 때마다 카운터를 증가시키며 조건이 충족될 때까지 반복실행하며

 for in 구문은 순서에 따른 각각의 아이템에 대하여, 반복한다는 차이점이 있습니다.

 

        for (초기값; 비교 조건; 증가값){

        

            반복 실핼 구문

        }

 

 위와같이 이루어져있습니다.

 

 

 */


//  노란색 세모는 에러가 아닙니다.


//  뭐 일종의 스위프트 언어 자체에서 제공하는 권유? 랄까요?


// 저 노란색 세모를 누르시면~

//  ++ is deprecated: it will be removed in swift 3 

//  Fix - it Replace "++" with " += 1"


//  ++는 반대되었습니다. 스위프트3에서는 제거될 문법입니다!


// ++ 대신에 += 1 을 사용하여, 대체하세요 :)


// 라고 ~ 친~절히 알려주네요 :)

// 


for ex in 0 ..< 11 {

    print("\(ex)번째 구독입니다.")

}


// 스위프트가 시키는대로 대체한 모습입니다. 

// 근데 += 1 이 아니라 아예 다른 코드가 되버렸네요?

for ex in 0 ..< 11  여기에서 0..<11 는 0부터 10까지라는 뜻이됩니다.

//  결국은 0...10 과 똑같은 뜻이지요 :)

// for 구문이 for in 구문으로 변경되었고 스위프트에 최적화된 코드로 대체되었습니다 :)

// 증가도 가능하며, 반대로 차감도 가능합니다!

 

// for 구문을 실행하여, i라는 변수를 제공하여, 2016 값을 주고 i 는 1994보다 작고 1씩 감소한다.


// 이번에는 스위프트에서 추천하는 연산자인 -=1 연산자를 사용하였습니다. :)


// for in 구문은 배열, 딕셔너리, 범위 데이터의 개별 점수 , 문자열 순번으로 관리되는 데이터 타입을 효과적으로 순회할 있는 구문입니다.


// for 루프 상수 in 순회 대상 {

//        실핼구문

// }


for loopNumber in 1...5 {

    print("2 X \(loopNumber) = \(loopNumber*2)")

}


// for in 구문을 사용하여, loopNumber라는 루프 상수를 선언하고 순회대상으로는  1...5를 지정했습니다. 1..<6도 가능하겠지요?


// 그리고 print 문법을 사용하여 실행하였습니다.


// 나이 계산이 가능하네요 :)



// 문자열 기억하시나요?

// 문자열과 문자의 차이도 기억나시는 분들은 이해가 쉬울겁니다 

//  


var lang = "swift"

for char in lang.characters {

    print("개별 문자는 \(char) 입니다.")

}


//  for char in lang.characters 에서 character는  


//  문자열을 문자로 순회 구간을 지정한다는 얘기입니다.

//  고로 swift는 5자이니 5회 순환하겠지요?

// var characters : String.CharacterView {get}

// A collection of Characters representing the String's extended grapheme clusters.

// 문자들의 콜렉션으로 문자열의 확장된 서기소의 다발을 일컫는다 라고 얘기해주네요.


var lang = "swift"

for char in lang.characters {

    print("개별 문자는 \(char) 입니다.")

}



// 고로, 위와같은 결과값을 얻으실 수 있습니다 :))))


//  또한 루프상수는 생략할 수 있습니다 :) _ 언더바를 대신 집어너어서 가능하지요


let size = 5

let padchar = "0"

var keyword = "3"


for _ in 1...size {

    keyword = padchar + keyword

    

}

print("\(keyword)")

// size = 5 ; patcher = "0" ; var keyword = "3"

//  for _ in 1...size 는 1...5까지의 의미가 됩니다.

// keyword = patcher + keyword 이면,

// padchar의 0가 다섯번 삽입된 후 3이 붙는단 얘기입니다.

//  고로, 값은 000003 이지요 :)


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

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

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

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

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

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

2016/05/06 - [프로그래밍발전소 ♫] - 160506 Swift Optional 스위프트의 꽃! 옵셔널에 대해 알아보자!

2016/05/07 - [프로그래밍발전소 ♫] - 160507 Swift Optional 스위프트의 꽃 옵셔널! 마지막편!

2016/05/07 - [프로그래밍발전소 ♫] - 160507 Swift Function 이번엔 프로그래밍의 꽃! 함수편!

2016/05/12 - [프로그래밍발전소 ♫] - 160512 Swift Function 스위프트 함수편!

2016/05/12 - [프로그래밍발전소 ♫] - 160512 Swift 단순 구문 , 흐름 제어 구문 for , for ~ in구문 :)

2016/05/13 - [프로그래밍발전소 ♫] - 160513 Swift While 구문편 :)


반응형
by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2016. 5. 13. 02: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 |