프로그래밍/자바공부 - 수업일차별

수업 8일차

leecoder 2021. 8. 31. 23:47

윤년(leap year)/ 평년(common year)

  1. 윤년 : 태양력에서 2월이 29일까지 있는 해 /  평년 : 태양력에서 2월이 28일까지 있는 해
  2. 1년 == 365.2422일 => 1년 == 365일 -> 매년 0.2422일 오차가 생김
  3. [율리우스력]에서는 4년마다 2월을 29일
  4. [그레고리오력]에서는 치윤법
    • ① 서력기원 연수가 4로 나누어떨어지는 해는 우선 윤년으로 하고, =>4의 배수 년도에 2월 29일 => 100번 나옴 -> +3번
    • ② 그중에서 100으로 나누어떨어지는 해는 평년으로 하며, => 100의 배수 년도 => 4번 나옴 ->96번 -> -1번
    • ③ 다만 400으로 나누어떨어지는 해는 다시 윤년으로 정하였다. => 400의 배수 년도 => 1번 나옴 =>97번
    • 이로써 1년의 평균 길이를 365.2425일로 정하여 역에 썼으므로 실제의 1년보다 0.0003일이 길다.
    • => *년 수가 4로 나누어떨어지고 100으로 나눌 수 없는 해 그리고 400으로 나누어떨어지는 해*
    • => (year%4 == 0 && year%100 != 0) || year %400 ==0
  5. [치윤법]에 따라 400년에 97년을 윤년으로 두고 있다.

함수(메서드)

  1. 정의 : 프로그래밍에서 반복되는 명령어들을 찾아서 별도로 묶어서 필요할 때마다 불러서 사용할 수 있도록 한 것
  2. 메서드 : 클래스 안에 선언된 함수
  3. 이벤트 핸들러 : 이벤트를 처리하는 함수
  4. 프로시져(Procedure), function
  5. 선언 형식
    • [접근지정자][기타제어자] 리턴자료형 함수명([매개변수...]){
      	명령코딩;
      	명령코딩;
      	[return 리턴값;]
      }
  6. 장점
    • 코딩량 감소 -> 컴파일 용량 감소 -> 실행 성능 향상
    • 코드의 가독성이 좋아짐, 유지보수 용이
    • 팀 작업 -> 개발 생산성 향상 -> 수익
  7. 똑같은 함수명으로 중복으로 선언할 수 있다. -> 중복함수 : 오버로딩(overloading)
  8. 오버로딩할 때 지켜야 할 규칙 : 매개변수의 타입이 다르던지, 개수가 반드시 틀려야 한다.

클린코드

1.

for(int i = 1; i <= 9; i++) {
for (int j=2; j <=5;j++) System.out.printf("%d*%d=%d\t",j,i,i*j);
System.out.println();
}
System.out.println();
for(int i = 1; i <= 9; i++) {
for (int j=6; j <=9;j++) System.out.printf("%d*%d=%d\t",j,i,i*j);
System.out.println();
}
for (int k = 1; k <= 2; k++) {
for(int i = 1; i <= 9; i++) {
for (int j=4*k-2; j <=4*k+1;j++) System.out.printf("%d*%d=%d\t",j,i,i*j);
System.out.println();
}
System.out.println();
}

2.

public static void leapCheck(int year) {
if ((year%4 == 0 && year %100 != 0 )|| year%400 == 0) System.out.println("Leap year");
else System.out.println("Common year");
}
public static boolean isleapCheck(int year) {
if ((year%4 == 0 && year %100 != 0 )|| year%400 == 0) return true;
else return false;
} -> 바로 출력하고 끝내는 것보다 이렇게 처리해야 다른 곳에서도 이 값을 사용할 수 있다.

3.

for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 9; j++) {
for (int k = 3*i-1; k <= 3*i+1; k++) {
if(k == 10) break;
System.out.printf("%d*%d=%d\t", k, j, k*j);
}
System.out.println();
}
System.out.println();
}
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 9; j++) {
for (int k = 3*i-1; k <= 3*i+1 && k<=9; k++) System.out.printf("%d*%d=%d\t", k, j, k*j);
System.out.println();
}
System.out.println();
}

4.

if(i %2 == 0) {
sum -= i;
System.out.printf("%d+",i);
} else {
System.out.printf("%d-",i);
sum += i;
}
sum += sw? -i : i;
System.out.printf(sw? "%d+" : "%d-" ,i);
sw = !sw;

5.

int [] fibonacci = new int[100];
int i = 2, sum = 0;
fibonacci[0] = 1;
fibonacci[1] = 2;
sum = fibonacci[0]+ fibonacci[1];
System.out.printf("%d+%d+",fibonacci[0],fibonacci[1]);
for (i = 2; i < fibonacci.length;i++) {
fibonacci[i] = fibonacci[i-1]+ fibonacci[i-2];
if(fibonacci[i] <= 100) sum1 += fibonacci[i];
else break;
System.out.printf("%d+",fibonacci[i]);
}
int first = 1;
int second = 2;
System.out.printf("%d+%d+",first, second);
int sum = first + second;
int third;
while((third = first + second) <= 100) {
sum += third;
System.out.printf("%d+",third);
first = second;
second = third;
}

 

'프로그래밍 > 자바공부 - 수업일차별' 카테고리의 다른 글

수업 10일  (0) 2021.09.01
수업 9일차  (0) 2021.09.01
수업 7일차  (0) 2021.08.30
수업 6일차  (0) 2021.08.30
수업 5일차  (0) 2021.08.25