본문 바로가기
비전공자의 코딩 일지/학원 수업 정리

코딩 학원 5일차 (Java 조건문, method)

by Hoder2 2022. 6. 13.

오늘 수업 시작 때 해주신 난이도 그래프에 대한 이야기다.

여러가지 개발 언어들이 있고 뒤로 갈수록 더 복잡한 언어를 배울텐데 기간이 지날 수록 어려움이 어떻게 될 것 같냐

혹시 이렇게 생각하고 있다면 착각이란다.

이 그래프에 더 가깝다고 한다. 물론 중간 중간 어려운 언어를 배우면 변곡점은 있겠다만 말이다.

 

그러니까 결론은 지금이 제일 어려울 시기라고 하셨다.

 

-함수(function)

 

함수에 대해서 배우겠다고 했는데 옛날 어렸을 때 처음으로 아버지의 담배 심부름을 하셨을 때를 말씀하셨다.

코드로 적어보자면

이런식으로 첫 심부름을 시킬 땐 구구절절 모든 내용을 설명했다면 두번째 심부름 땐 어떻게 말씀하셨을까?

"야 담배"(라고 하셨단다.) 역시 코드로 적어보자면

이렇게 관련있는 작업들을 묶어서 정의 해놓고 필요할 때 불러서 사용하는 것이 함수이며 소스 정리 차원에서 사용한다고 하셨다.

 

함수 정의

public static 자료형 함수명(자료형 변수명, 자료형 변수명, ..., 필요한 만큼) {

 

}

의 형태로 작성하며 일전에 Scanner 처럼 public과 static은 아직 설명할 단계가 아니라 하셨다.

위의 형태에서 자료형은 [리턴타입] 이며 실행하고 나서 나오는 결과물이 뭐가 나오나라는 의미고

함수명 뒤 괄호 ( ) 는 [파라메터]라고 하며 함수를 실행하는데 필요한 재료들이다.

 

- 함수명은 변수명을 짓는 조건과 동일하나 특성상 변수명은 짓고나면 보통 명사 쪽이고 함수명은 동사 쪽이다.

우리가 매일 뜻도 모르고 쓰던 main 또한 함수였다. (자동실행 함수.)

- 함수의 위치는 순서가 중요하지 않다. main 밑에도 가능하다. 하지만 main을 마지막에 두는 것이 '이 바닥의 문화'이다. 또한 나중에 찾아서 바꾸기 편해야 하니까 우클릭 source - short members 누르면 함수명을 abc 순서로 정렬해준다.

- 자주 변할 수 있는 공식들, 수정해야 될 일이 생길 것 같은 것들은 main이 아닌 함수에 정리를 해줘야 한다.

(고로 1 함수, 1 기능, 이게 아니면 함수 쓰는 이유가 없는거라 하셨다.)

 

*사칙연산 결과를 출력하는 함수(정수 2개를 넣으면 덧셈 결과를 출력하는 함수)

이 정도는 그래도 간단했다.

그럼 아래 처럼 작성 시 x가 출력이 가능할까?

답은 안 된다.

변수는 같은 함수내에 있는 공간에서만 쓸 수 있으며 위 main의 x와 text의 x는 전혀 관계가 없는 상태이다.

그렇기에 동일 함수 내에서의 같은 변수명은 사용이 불가하지만 다른 공간에서는 같은 이름의 변수를 만들어도 괜찮다.

 

하지만 main에 있는 x를 꼭 써야만 할 때 파라메터를 이용하게 되는데 이런식으로 전달이 가능하다.

여기서 문제를 주셨다,

정수 하나를 넣었을 때, 홀수인지 짝수인지 추력해주는 함수

String comment = 조건식 ? 만족할때 값 : 불만족할때 값 요걸 이용하면 될 것 같았다.

문제 2. 정수 2개를 넣으면 그 차를 출력하는  함수

문제 3. 정수 3개 넣으면 그 차를 출력하는 함수

근데 굳이 sum이라는 변수를 만들어 메모리를 더 차지할 바엔 일회용으로 써먹을 건데 아래 처럼 하는게 낫지 않냐며 변수를 조금이라도 줄일 생각을 해보길 바란다 하셨다.

이 외에도 정수 2개의 곱을 구하는 함수, 정수 2개 중 더 큰수를 찾아주는 함수 등을 만들었었다.

그리고 정수 하나 넣으면 factorial 구해주는 함수를 만들어달라 하셨는데 결국 못 만들고 답을 기다렸다.

위 사진이 답이며 여기서 쓰인 것이 함수를 재귀적(recursive)으로 호출하는 방식인데 함수 속에서 자기 자신을 부르는 그런 방식이라 하셨다.

 

그리고 정수 하나 넣으면 피보나치 수열 값 구해주는 함수

피보나치가 뭔지 몰라서 해맸고 지금 블로그를  쓰면서 이걸 봐도 잘 기억이 나질 않는다.

그리고 함수는 철저히 정리차원에서 쓰는거지 이런식으로 쓰면 안 되고 지금 같은 계산문제는 나중에 배울 반복문으로 해야 된다고 하셨다.

 

그러더니 갑자기 아래 처럼 만들라하셨다.

숫자 :

--------------

입력한 숫자는 00입니다.

근데 이제 입력 받을 숫자를 짝수로만 받을거고 짝수 입력할 때 까지 다시 입력하게 된다.

프로그래밍 언어 하나 할줄안다라는 말을 할려면
그 언어로 조건문, 반복문, 배열 같은 것들을 자유자재로 쓸 수 있어야 한다.
또한 그 언어만의 특징적인, 중점적으로 다루는 무언가를 할줄 알아야 한다.

그 4대장 중 조건문을 오늘 배운다.

 

-조건문(Conditionmal Statement)

 

제어문 : 일반적인 위 - 아래, 왼쪽 - 오른쪽 실행흐름을 제어

잘짠 프로그램 못짠 프로그램은 조건문과 반복문에서 차이가 난다 하셨다.

 

if (조건식) {

        조건 만족시 실행

 } else {

        조건 불만족 시 실행

}

if 와 else 말고도 else if 도 있다.

 

if (조건식 A) {

     else if(조건식 B) {

             조건식 A는 아니고 조건식 B 만족시 실행.

               } else {

                  위에 맞는 조건 하나도 없으면 실행.

                 }

   }

}

이 외에도 BMI 지수 측정, 중간, 기말 평균내서 수우미양가 판정 내주는 것 만들기 등등 이런저런 문제를 풀다가 남은 시간이 끝났다. 선생님이 문제로 내주셨던 것들은 전부 한번씩 주말에 만들어 보려고 한다.

특히 return에 대한 내용이 나올 때 졸아가지고  이것도 다시 찾아봐야겠다.