반응형

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

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

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

이번 시간에 다뤄 볼 주제는 바로 " 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 |