Swift

Swift 공식문서| 제어 흐름 (Control Flow)에 관하여 - 반복문 for문

ziziDev 2024. 5. 9. 15:04
반응형

안녕하세요?

오늘은 제어 흐름 (Control Flow)에 관하여 알아보려고 합니다!!

 

기본적으로 세 가지 종류로 나눌 수 있답니다

 

반복문(Loop Statements)

조건문(Conditional Statements)

제어 전달문(Control Transfer Statements)

 

 

반복문

 

우선 반복문은 조건에 따라 특정 코드 블록을 반복적으로 실행한답니다

 

코드 블록의 반복을 Loop라고 부릅니다

 

반복문은 For / While 2개의 반복문으로 이루어져 있습니다

 

우선 For 반복문은 주어진 구문을 정해진 횟수만큼 실행한다는 점입니다

  • for 반복문
    • for ~ in : 순서에 따른 각각의 아이템에 대하여 일련의 구문을 반복적으로 실행하는 차이
  • while 반복문 : 주어진 조건이 false가 될 때까지 계속해서 일련의 구문을 반복 실행함(만약 조건이 없다면 무한 루프!!에 빠짐
    • while : 루프를 시작할 때 조건을 평가하지만
    • repeat ~ while : 루프를 첫번째 완료하고 조건을 평가합니다(조건이 참이 아니더라도 최소 한번은 반드시 실행됨)
  • forEach : for ~ in과 유사한 기능을 한다

 

이렇게 글로 보면 이해가 안될 수도 있으니

코드와 함께 한 번 더 정리하는 시간!

 

for

 

for 구문은 루프의 조건절이 true 값을 유지하는 동안

카운터를 계속 증가시키면서 주어진 코드 블록을 반복해서 실행한답니다!

 

보통 다른 언어에서 하단의 이미지처럼 사용을 많이 하는데

swift3 까지 지원을 했으나 현재는 다른표현을 사용하고 있답니다

 

지금 이렇게 사용하면 안된답니다

xxxxx

 

현재 사용하는 반복문 식은

바로!

 

for~in구문

이라고 하는데요

 

 

스위프트가 3까지 for구문을 지원하고 for - in 구문을 지원하는건

쉽게 작성이 가능하고 직관적이기 때문이라고 생각한답니다

이제 코드를 보면서 이해해보자구요!

 

위에 이미지를 보면 for 다음 변수가 오는데

변수는 var가 아니고 let 즉 변경이 되지 않는 걸로 하나씩 출력이 된답니다

그래서 반복상수 자체를 변경시키고 싶어도 반복상수 자체를 변경할 수 없습니다!

 

이해가 가지 않는다면 코드로 통해서 알아봅시다

 

 

첫번째는 변수자체를 변경하는게 아니므로 오류가 나지 않지만

두 번째 식은 index 변수의 자체값을 변경하려고 하기때문에 오류가 나는걸 알 수 있습니다

index(반복상수)는 모다?

let(상수) 이다

 

근데 왜 자꾸 상수를 변수라고 부르죠?..

TMI라고 할 수 있지만

사실 변수, 상수 둘 다 통상적으로 변수

라고 부르고 있답니다

 

이개뭔소리야.. 할 수 있겠지만 그러하답니다

 

일반적으로 어떤식으로 사용하냐

시작변수나 마지막 숫자를 변수로 지정하는 경우도 많지만

일반적으로 1...마지막 숫자(변수)

설정하여서 사용을 많이 한답니다

 

 

 

여기서 배열이나 컬렉션의 하나인 딕셔너리 등에서도 사용을 한답니다

위 이미지는

딕셔너리로 찾아서 내림차순으로 한답니다

여기기서 ?.란?.. 나중에 배우겠지만 optional이라는 것입니다 

나중에 배울 옵셔널 체이닝에서 자세히 다루도록 하겠습니다

 

살짝 이야기하자면 존재하지않으면 nil 이며 (오류가 나지 않고) sort메서드는 호출이 되지 않습니다

 

여기서

단순하게 나는 반복상수를 사용하지 않고 그냥 출력하고 싶다면?

와일드 카드 패턴이란게 있답니다

 

코드를 보면서 이해하면 편하니 코드 예시하나를 보여주자면

 

 

이런식으로 for문 다음에 들어갈 변수에 _(언더바)를 사용하면 된답니다

 

 

이렇게 문자열에서도 사용하여 character와 같이

한 글자씩 출력하는걸 확인할 수 있습니다

 

그리고 다양한 활용이 가능한데

 

이런식으로 reversed()를 사용하여 반대로 출력도 가능하답니다

 

reversed란 ??

구글 번역기

 

stride도 사용해서 for문을 사용할 수 있답니다

 

구글 번역기

 

stride는 건너뛰다로 생각하시면 될것같습니다

그래서 코드를 보고 설명을 하자면

 

to를 사용하면 포함이 안되고

through를 사용하게되면 조건에 부합하는 마지막 숫자를 포함하게 됩니다

 

정리하다보니 길어졌네요 

while문은 다음편에 정리하도록 하겠습니다 :)

 

** 잘못된 정보가 있다면 꼭 댓글로 알려주세요!**

 

참고

https://developer.apple.com/documentation/swift

 

Swift | Apple Developer Documentation

Build apps using a powerful open language.

developer.apple.com

https://bbiguduk.gitbook.io/swift/language-guide-1/control-flow

 

제어 흐름 (Control Flow) | Swift

분기, 루프, 이른 종료로 코드를 구성합니다. Swift는 다양한 제어 흐름 (control flow) 구문을 제공합니다. 이것은 여러번 작업을 수행하는 while 루프를 포함하고 조건에 따라 다르게 실행되는 if, guard

bbiguduk.gitbook.io

 

구글번역기

반응형