1. 오전일정 : Playground 놀아보기
어제 끝내지 못했던 playground 튜토리얼을 진행했다. 아래 사진이 문제인데 90명의 인원이 똑같은 문제를 해결해야 하는데 확실히 사람이 많다보니 조별로 의견이 다르기에 방향성 통일을 위해서만 오늘 1시간을 넘게 토론한 것 같다. 확실히 협업이라는 것이 중요하다는 것을 느낄 수 있는 시간이였다.
[오픈소스]
- 누구나 자유롭게 확인, 수정, 배포할 수 있는 코드
- 단일 작성자 또는 기업이 아닌 커뮤니티가 개발
- peer review와 커뮤니티 기반 제작이기 때문에 분산된 동시에 협업 방식으로 개발
- 최종 사용자가 소스 코드를 합법적으로 사용할 수 있도록 특별한 라이센스를 통해 릴리스
- 반드시 무료로 제공되는 것은 아님
- Github에서 주로 호스팅됨
- 동요평가, 투명성, 안정성, 유연성, 비용절갑, 오픈협업
* 오픈 소스를 하용할 시 라이센트를 꼭 확인해야 한다.
https://velog.io/@d2h10s/%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4
2. 오후일정 : Swift 제어흐름
[제어흐름]
1. 반복 제어 흐름(looping)
<for-in 반복문>
- 반복문은 지정된 조건에 만족할 때까지 반복적으로 수행하는 구문이다.
- for 반복문은 프로그램 내에서 몇 번 반복해야 하는지 알고 있을 때 유용하다.
- for-in 반복문은 어떤 컬렉션(1...5, 1..<10 등)이 숫자 범위에 포함된 일련의 항목들을 반복하는 데 사용한다.
- for-in 반복문은 배열이나 딕셔너리 같은 컬렉션을 가지고 작업할 때 특히 더 유용하다.
for 상수명 in 컬렉션 또는 범위 {
// 실행 코드
}
<while 반복문>
- while 반복문은 어떤 조건에 만족할 때까지 반복하는 것으로, 조건을 충족할 때까지 몇번을 반복해야 하는지 알 수 없는 경우를 위해 제공된다.
while 조건문 {
// 실행 코드
}
<repeat-while 반복문>
repeat {
// 실행 코드
} while 조건문
<break rnans>
- 반복문이 종료되기 전에 반복문을 끝내야 하는 경우 사용됨
1) 무한반복 2)활성화 감지 시 모니터링하는 반복문에서 빠져나와 다른 작업 실행 등의 경우
import Foundation
var temp: Int = 0
for _in 0..<100{ // 0부터 99까지 돌아감, 총 100개 돌아감
temp += temp
if temp > 100{
break
}
print("temp = \(temp)")
}
<continue 구문>
반복문의 나머지 코드를 건너뛰고 반복문의 처음으로 되돌아간다.
import Foundation
var index: Int = 1
while index < 5 {
index += 1
if (index % 2 ) != 0 { //홀수이면
continue //while 반복문 안에서 이후 내용을 건너뛰고 while문의 반복 시작 점으로 돌아가서 다시 반복문 수행
}
print("index : \(index)")
}
//결과값 : index : 2, index : 4
2. 조건부 제어 흐름(conditional flow)
<if-else 구문>
- Swift의 조건에는 항상 Bool 타입이 들어와야 함
if 조건문 {
// 실행 코드
} else {
// 실행 코드
}
<if-else if 구문>
if 조건문 {
// 실행 코드
} else if 조건문 {
// 실행 코드
} else if 조건문 {
// 실행 코드
}
<** guard 구문>
- Swift에만 있는 독특한 문법
- 웬만하면 if let으로 쓰되, 불가능할 경우 guard let 사용
- 불리언 표현식을 포함하여, ture 일때만 guard 구문 다음에 위치한 코드가 실행된다.
- 불리언 표현식이 false일 때 수행될 else 절을 반드시 포함해야 한다.
-> else 절의 코드는 반드시 현재의 코드 흐르에서 빠져나가는 문구(return, break, continue, throw 구문)dmf vhgkagksek.
-> else 블록은 자신을 반환하지 않는 다른 함수나 메서드를 호출할 수도 있다. - 기본적으로 guard 구문은 특정 조건을 만족하지 않은 경우에 현재의 함수 또는 빠져나올 수 있게 해준다.
guard 조건문(불리언 표현식) else {
// 조건식에 해당하지 않은 경우 실행 코드
} 조건문에 해당하는 경우 실행 코드
guard let number = value, nunmber < 10 else { //반점의 경우 AND 이다.
print("Number is Too high")
return
}
let result = number * 10
print(result)
<Switch 구문>
- if-else if 구문으로 두세개 이상의 조건을 만들 경우 switch 구문이 대안이 될 수 있다.
- switch 구문의 표현식은 값을 가지거나 값을 반환하는 표현하는 표현식이다.
- 표현식과 일치값은 같은 타입으로 무조건 지정되어 있어야 한다.
switch 표현식 {
case 일치값1 :
// 실행 코드
case 일치값2 :
// 실행 코드
case 일치값3, 일치값4 : // 반점의 경우 And 아니고 OR 이다.
// 실행 코드
defualut :
// case 중에 하나도 일치하지 않을 경우에 실행되는 코드
}
let temperature = 83
switch temperature {
case 0...49:
print("Cold")
case 50...79:
print("Cold")
case 80...Int.max: //80부터 Int의 Max값까지 사이에 해당하는 경우
print("Cold")
default:
print("Out of range")
}
<switch-whrer 구문>
case 구문에 부가적인 조건을 추가하기 위해 사용됨
let temperature = 83
switch temperature {
case 0...49 where temporature % 2 == 0:
print("Cold")
case 50...79 where temporature % 2 == 0:
print("Cold")
case 80...Int.max where temporature % 2 == 0: //80부터 Int의 Max값까지 사이에 해당하는 경우
print("Cold")
default:
print("Out of range")
}
<** switch-fallthrough 구문>
- case 구문은 break구문을 쓸 필요가 없이 조건에 일치하면 자동으로 구문 밖으로 빠져나간다.
- fallthrough 구문은 swich 구현부에 예외상황 효과를 주어, 실행 흐름이 다음 case로 진행하게 할 수 있다.
- 해당 구문은 default에서 아무런 작업도 할 필요가 없는 경우에 break를 사용하는 것이 유용하다.(다른 switch 구문들은 break 사용을 권장하지 않음)
let temperature = 83
switch temperature {
case 0...49 where temporature % 2 == 0:
print("Cold")
fallthrough
case 50...79 where temporature % 2 == 0:
print("Cold")
fallthrough
case 80...Int.max where temporature % 2 == 0: //80부터 Int의 Max값까지 사이에 해당하는 경우
print("Cold")
fallthrough
default:
break
}
[즐거운 문제풀이 시간]
import Foundation
//코드1~코드4는 우리 조원들 이름 나와서 삭제!! 개인정보는 소중하니까요!
//코드5
var sum: Int = 0
for number in 1...100 {
sum += number
print("\(number)단계 합 : \(sum)")
}
//코드6
var sum: Int = 0
for number in 1...100 {
sum += number
if (sum % 5 == 0){
print("5단위 숫자, \(number)단계 : \(sum)")
}
}
//코드7, 풀었으나 명확한 문제 의도 파악 후 업로드 예정
//코드8
for dan in 1...9 {
for number in 1...9 {
if dan % 2 == 0 {
print("\(dan)x\(number)=\(dan*number) ")
}
}
}
//코드9
var maxStar: Int = 5
var repeatStar: Int = 2
var count: Int = 1
while count <= repeatStar {
for line in 1...maxStar {
print(String(repeating: "* ", count: line))
}
for line in (1...maxStar).reversed() {
print(String(repeating: "* ", count: line))
}
count += 1
}
//코드10
let numArray: Array<Int> = [12,8,10,5,7,4]
for (number,value) in numArray.enumerated() {
print(number+1, String(repeating: "=", count: value), "\(value)")
}
3. 오늘의 리뷰
드디어 기본 변수부터 시작해서 for문, while문 switch문까지 학습하였다. 학습 후에 지금까지 배운 내용들을 토대로 간단한 문제들을 풀어보았는데 오랜만에 이렇게 코딩문제를 푸니까 너무 재미가 있었다ㅎㅎ 확실히 강사님께서 강의를 너무 잘해주셔서 이해가 쏙쏙 되었고, 이해를 바탕으로 문제를 푸니까 앞으로의 코딩 과정들이 더 기대가 되는 하루였던 것 같다!
그리고 오늘은 바로 금요일!! 이번 한주의 정규 교육과정도 끝났다. 내일은 2개의 기업 코딩테스트 일정이 있어서 하루종일 코딩테스트를 진행할 예정인데 붙을 수 있다는 목표를 가지고 열심히 풀어보도록 하겠다! 화이팅~~
'멋쟁이사자처럼 앱스쿨 1기' 카테고리의 다른 글
[멋쟁이사자처럼] 앱스쿨 1기 - 클래스&프로토콜 (10일차 22.09.27) (0) | 2022.09.27 |
---|---|
[멋쟁이사자처럼] 앱스쿨 1기 - Swift 함수&클로저 표현식(closure expression) (9일차 22.09.26) (2) | 2022.09.26 |
[멋쟁이사자처럼] 앱스쿨 1기 - Playgorund 문제풀이&옵셔널 타입&Swift 연산자 (7일차 22.09.22) (0) | 2022.09.22 |
[멋쟁이사자처럼] 앱스쿨 1기 - 컴퓨터 기본지식&데이터타입 (6일차 22.09.21) (2) | 2022.09.21 |
[멋쟁이사자처럼] 앱스쿨 1기 - 정렬 알고리즘&Swift 기초(5일차 22.09.20) (2) | 2022.09.20 |