나름 강의 듣고 복습까지 했는데
은근 모르겠는 + 당황스러운 문제들이 많아서
공부를 더 열심히 해야겠다고 느꼈다 ㅎ
역시 보기만하면 공부가 아니라
내 것으로 만들어야 한다!
/**==================================================================
[2번 문제]
- 프로그래밍에서, 표현식(Expression)이 어떤 의미인가요? 아는대로 작성하세요.
===================================================================**/
// 오답 : 결과가 나오는 식
✅// 계산의 결과가 어떤 하나의 값으로 나올 수 있는 문장
// (예시) num + 5
/**==================================================================
[6번 문제]
- 함수만들어 보기: 여러개의 정해지지 않은 갯수의 정수를 받아서, 평균을 구하는 함수를 작성해 보세요.
(힌트: 함수의 이름은 누구봐도 알아볼 수 있게, 평균..이란 말이 들어가면 좋겠네요!)
===================================================================**/
func average(num: Int...)-> Int{
var sum = 0
//오답 : for i in 0...num.count - 1 -> 굳이 이렇게 쓸 필요 없음,,
✅for i in num{
sum += num[i]
}
//오답 : return sum/num.count -> 실수형까지 대비!
✅ return Double(sum) / Double(nums.count)
}
print(average(num: 50, 100))
/**==================================================================
[8번 문제]
- 함수의 파라미터에서 사용하는 inout키워드에 대해서, 간단하게 설명해 보세요.
===================================================================**/
//오답 : // 함수 파라미터는 let(상수)로 선언되기 때문에 새로운 값을 대입하기 위해서는 inout 키워드를 이용해야함
// inout 키워드는 원본을 그대로 전달하는 것, 함수를 선언할 때는 타입 앞에 inout을 쓰고 함수를 사용할땐 &를 붙여야 함
// ✅함수의 파라미터에서 inout 키워드를 사용하면,
// 파라미터로 사용하는 변수의 직접적인 메모리 주소를 전달함
// 그래서 보통 두 숫자를 직접적으로 바꿀 수 있는 swap과 같은 함수를 구현할 수 있게 됨
// (두 숫자를 바꾸기 위해서는 함수 내부에서 상수로 사용하면 안되고, 직접 변수의 주소 전달이 필요)
/**==================================================================
[9번 문제]
- 다음의 제어전송문 4가지를 각각 쓰이는 경우와 어떻게 사용되는지 간단하게 설명하세요.
(break / fallthrough / continue / return)
(힌트1: break는 2가지 경우에 쓰입니다.)
(힌트2: return은 리턴타입이 있는 함수/리턴타입이 없는 함수 구분해서, 설명해 주세요.)
===================================================================**/
//✅ 1.break문
/*
반복문 : 가장 가까운 반복문을 완전히 종료
switch : case에서 어떤 문장의 실행도 없을 때 입력하는 약속
*/
//✅ 2.fallthrough문
// switch문에서 어떤 해당 case를 해당한 후, 다음 case의 해당 여부를
// 따지지 않고, 다음 case 내부의 문장을 실행
// 3.continue문
/*
쓰이는 경우 : 반복문
설명 : continue 시 반복문의 다음 주기로 넘어간다.
*/
//✅ 4.return문
/*
쓰이는 경우 : 함수, 값을 반환하거나 함수를 종료할 때
설명 :
- 리턴 타입이 있는 함수 : return 문 뒤의 표현식을 평가한 후, 값을 반환하며 함수를 종료하고 벗어남.
- 리턴 타입이 없는 함수 : 함수를 종료한다.
*/
/**==================================================================
[11번 문제]
- Optional 타입에는 .none이 있는데, 이것과 nil의 공통점 또는 차이점은?
===================================================================**/
// nil은 Optional.none의 리터럴 값의 형태 (그냥 완전히 같다고 생각해도 무방하긴 함) ⭐️
// [공통점]
// .none과 nil은 동일하게 임시타입으로써 내부에 값이 없음을 표현 (완전 동일)
// [차이점]
// .none은 실제 내부의 원시 형태이면서, 구체화된 형태 (nil은 포괄적인 표현)
/**==================================================================
[12번 문제]
- Optional을 언래핑(Unrapping) 하는 4가지 방법은? 간단하게 서술로 쓰시면 됩니다.
===================================================================**/
// 1번 방법
// 강제 언래핑 (!)
// 2번 방법
// if문으로 nil이 아님을 확인 한후, if문 안에서 강제 언래핑
// 3번 방법
// 옵셔널 바인딩(if let 바인딩)
//✅ 4번 방법
// 옵셔널표현식 ?? 디폴트값의 제시
/**==================================================================
[13번 문제]
- 열거형(Enum)은 어떤 경우에 사용하는 타입인가요? 아는대로 간단하게 서술해 보세요.
===================================================================**/
// 한정된 갯수의 사례(case)로 타입을 만들 수 있을때,
// 개발자가 직접만들어서 쓸 수 있는 Custom 타입
// 월 - 화 - 수 - 목 - 금 - 토 - 일
/**==================================================================
[14번 문제]
구글(google), 페이스북(facebook), 네이버(naver) 로그인을 위해 SiteLogin라는 이름을 가진
아래의 Enum 타입을 완성해 보세요.
각 case는 사용자의 아이디(String)와 비밀번호(String)를 위한 연관 값(associated value)을 가집니다.
(만들고자 하는 타입 예시)
enum SiteLogin { }
(변수에 담았을때의 모습)
var login1 = SiteLogin.google("google@gmail.com", "0000")
(힌트: 연관값이라는 개념을 어떻게 사용해야 하죠?)
===================================================================**/
// 아래의 enum타입 완성
enum SiteLogin {
case google(String, String)
case facebook(String, String)
case naver(String, String)
}
var login1 = SiteLogin.google("google@gmail.com", "0000")
'iOS' 카테고리의 다른 글
[앨런 Swift문법 마스터 스쿨] 열거형 case 패턴, 속성과 메서드 정리 복습! (2) | 2024.07.27 |
---|---|
[앨런 swift문법 마스터 스쿨] 클래스, 초기화 함수 init, self (2) | 2024.07.22 |
[앨런 swift 문법 마스터 스쿨] 열거형, 옵셔널 타입, 옵셔널 열거형 (0) | 2024.07.20 |
버튼 참고 사항 (0) | 2024.07.20 |
[앨런 swift 문법 마스터 스쿨] 옵셔널 타입 컬랙션 Array Dictionary Set 복습 (1) | 2024.07.14 |