안드로이드 앱개발 기초반 - 3주차(2)

연어는결국강으로·2022년 8월 18일
0
post-thumbnail

4. 기초 문법 배우기(2)

1) 함수의 기본 생김새

// 만들기
fun 함수이름(필요한 변수들) {
	내릴 명령어들을 순차적으로 작성
}
// 사용하기
함수이름(필요한 변수들)

// 동작을 실행하고 결과를 돌려주는(return) 경우
fun 함수이름(필요한 변수들): return타입 {
	내릴 명령어들을 순차적으로 작성
  return 돌려주려는 결과 값
}
// 사용하기
var 함수결과저장변수 = 함수이름(필요한 변수들)
// 자주 쓰이는 타입

//숫자
var one: Int = 1
var pi: Double = 3.14

//글자열
var name: String = "르탄이"

//참거짓
var isEasy: Boolean = true
var isHard: Boolean = false
  • 예시
// 두 숫자를 입력받으면 더한 결과를 출력하는 함수
fun printSum(num1: Int, num2: Int) {
	println(num1 + num2)
}

printSum(3, 5) //8
printSum(4, -1) //3
// 두 숫자를 입력받으면 더한 결과를 돌려주는(return) 함수
fun sum(num1: Int, num2: Int): Int {
	return num1 + num2
}

var sumResult = sum(3, 5) // 8
println(sumResult)

sumResult = sum(4, -1)
println(sumResult) // 3
// 출생년도와 계산하고 싶은 연도를 입력받아 나이를 계산해 돌려주는(return) 함수
fun calculateAge(calYear: Int, birthYear: Int): Int {
	return calYear - birthYear
}

var calAge = calculateAge(2020, 1980)
println(calAge) // 40

// 잠깐! 값을 입력하는 순서를 바꾸어도 원하는 값이 나오나요?
println(calculateAge(1980, 2020)) // -40
// 아니네요! 입력하는 순서도 맞춰줘야하는군요! 

2) 조건문

[💻코드 조건문 01] 90보다 작으면 작다고, 크면 크다고 알려주는 함수

fun compareNinety(num: Int){
	if (num > 90) {
		println("90보다 커요!")
	} else {
		println("90보다 작거나 같아요!")
	}
}

compareNinety(30)

[💻코드 조건문 02] 응용 - 다음 함수의 기능을 생각해볼까요?

// 함수를 정의하기
fun isAdult(age: Int): Boolean {
	if (age > 19){
		return true
	} else {
		return false
	}
}

// 함수를 사용하기
var result = isAdult(20)
println(result) // true

[💻코드 조건문 03] AND 조건과 OR 조건!

// AND 조건 : 모든 조건들이 true 여야 true
// 나이가 20과 같거나 크고 30보다 작은 경우 true
fun isTwenty(age: Int): Boolean {
	if (age >= 20 && age < 30){
		return true
	} else {
		return false
	}
}

// OR 조건 : 조건 중 하나라도 true이면, true!
// 나이가 20보다 작거나, 30보다 크면 true
fun isNotTewnty(age: Int): Boolean {
	if (age < 20 || age >= 30){
// not(!) 을 사용해 !(20대인 조건) 으로 판별식을 만들 수도 있습니다.
// 결과를 얻는 방법은 여러 가지! 가독성을 고려해 판별식을 만들어보세요!
// if (!(age >= 20 && age < 30)){

		return true
	} else {
		return false
	}
}

println(isTwenty(25))
println(isNotTewnty(25))

[💻코드 조건문 04] if, else if, else if, else if else

// 조건을 여러 개 수행하고 싶을 때
fun checkGeneration(age: Int) {
    if (age > 120) {
        println("와 19세기에 태어나셨군요!")
    } else if (age >= 100) {
        println("100세 이상! 숫자가 세자리네요!")
    } else if (age >= 80) {
        println("80세 이상! 인생은 여든부터!")
    } else {
        println("젊으시군요! 개발을 취미로 가져보세요!")
    }
}

var myAge = 55
checkGeneration(myAge)

3) 반복문

  • 기본형태
for (변수 in 리스트) {
	매 반복마다 실행될 명령어들
}
  • 예제1
var languages = listOf("Korean", "English", "Kotlin", "Python", "Java", "JavaScript")

for (language in languages) {
	println(language)
}
  • 예제2
var users = listOf(
  mapOf("FirstName" to "르탄", "LastName" to "박"),
  mapOf("FirstName" to "안드", "LastName" to "이"),
  mapOf("FirstName" to "로이", "LastName" to "김"),
  mapOf("FirstName" to "개발", "LastName" to "최"),
  mapOf("FirstName" to "스파", "LastName" to "김"),
)

for (user in users) {
  println(user)
}

// 이렇게 하면 리스트 내의 맵을 하나씩 출력할 수 있고,
var users = listOf(
  mapOf("이름" to "르탄", "성" to "박"),
  mapOf("이름" to "안드", "성" to "이"),
  mapOf("이름" to "로이", "성" to "김"),
  mapOf("이름" to "개발", "성" to "최"),
  mapOf("이름" to "스파", "성" to "김"),
)

for (user in users) {
  if(user["성"] == "김") {
    println(user)
  }
}

// 이렇게 하면 성이 '김'인 사용자의 이름만 출력할 수도 있습니다.

5. 연습하기

  • 1~100 사이의 짝수들의 합
fun main() {
   var result = 0
   for(num :Int in 1..50){
       result += num*2
   }
   println(result)
   
}
  • 함수형으로 만들기
fun main() {
    
   fun sumEven(n:Int): Int{    
       var result = 0
       var divide = n/2
       for(num :Int in 1..divide){
           result += num*2
       }
       return result;
   }
   
   var wantSum = sumEven(1000)
   println(wantSum)
}
  • 80점 이상을 찾기
fun main() {
   var scores = listOf(81, 79, 80, 30, 50, 100, 99, 56, 0, 12)
   var count = 0
   var passedPerson = mutableListOf<Int>()
   for(score in scores){
       if(score>=80){
           count++
           passedPerson.add(scores.indexOf(score))
       }       
   }
   println(count)
   println(passedPerson)
}
  • 함수형
fun main() {
   var scores = listOf(81, 79, 80, 30, 50, 100, 99, 56, 0, 12)
   var passedPerson = mutableListOf<Int>()   
   
   fun countScore(scoress :List<Int>, passed :MutableList<Int>) {
       var count = 0

       for(score in scoress){
           if(score>=80){
               count++
               passed.add(scores.indexOf(score))
           }       
       }
       println(count)
       println(passed)
   }
   
   var result = countScore(scores, passedPerson)
}

6. Quiz

  • n부터 m까지의 합 출력
fun main() {

	fun sum(n: Int, m: Int): Int{
    	var sum=0
        for(num in n..m){
            sum +=num
        }	
        return sum
    }
    
    println(sum(2,5))
    println(sum(1,100))    
}
  • 성적표에서 성적 A의 갯수 출력하기
fun main() {
    
    fun countReportCards(reportCards:List<String>, card:String): Int{
        var count = 0
        for(reportCard in reportCards){
            if(reportCard.equals(card)){
                count++
            }            
        }
        return count
    }    
    
    var reportCards = listOf("A", "B", "A", "C", "D", "F", "B", "A", "A", "C")
    
    println(countReportCards(reportCards, "A"))
    println(countReportCards(reportCards, "B"))
    println(countReportCards(reportCards, "C"))
    println(countReportCards(reportCards, "D"))
    println(countReportCards(reportCards, "F"))
    
}

0개의 댓글