Coding History

국비 지원 IT(웹앱개발) 취업반 강의 2일차

BlackBirdIT 2024. 5. 29. 19:24

2일차

오늘은 java의 기본 출력문과 변수, 그리고 조건문에 대해 배우게 되었다.
조금은 공부를 해 놨던터라 다 아는 녀석들이였지만 복습하고 다시 한번 이해한다는 마음가짐으로 주의 깊게 배웠는데 역시나 조금 잠이 오긴했다. 그래도 다시 한번 기초를 다시는 시간이라고 생각하니 되게 도움은 됐던 것 같다. 내가 조금 미흡한 부분이나 잘못 이해하고 있던 부분들에 대해서도 다시 생각할 수 있는 기회가 됐다.

출력문

출력문은 말 그대로 출력을 하기 위한 코드이다. 컴퓨터에서 출력이란 무엇인가. 무엇인가 입력했을 때 그것을 어떤 형태로든 컴퓨터에 연결된 어떤 물건이든 컴퓨터든 반응이 올 수 있게 만드는 것이 출력이다. (화면을 띄워주는 모니터와 소리를 출력하는 스피커, 물리적인 잉크와 종이를 사용해 출력하는 프린터기가 큰 예가 될 수 있을 것이다.) 우리는 java에 대해서 배우고 java 언어에서 콘솔로 출력하는 코드를 오늘 배웠으니 모니터로 출력할 수 있게끔 하는 코드를 배웠다.
예제 코드를 보여주면 처음 언어를 배울 때 "Hello, World!"가 가장 큰 예일 것이다. 코드로 작성하면,

 public class Main {
    public static void main(String[] args) {

        System.out.println("Hello, World!");
        //표준출력(모니터)

    }
}

이 코드를 실행하면 "Hello, World!" 가 나의 콘솔에 출력되게 되는 것이다. 이 세계에 인사를 건내는 단계가 우리가 첫 발을 내딛는 순간이 아닐까 싶다.

변수

변수는 프로그래밍 언어에서 정보(Data)를 저장하기 위한 공간이라고 생각하면 된다. 변수에는 데이터 타입이란 것이 존재하는데, 이를 정렬하자면 참/거짓을 나타내는 논리형 변수, 정수, 실수, 문자, 문자열 등이 존재한다.

이를 정리한 표를 보는 것이 제일 간단한 것 같으니 이미지를 하나 첨부하겠다.

변수를 사용할 때는 중요한 규칙이 몇가지 있다. 변수명을 지을 때 우리가 약속을 한 규칙(꼭 지키지 않아도 프로그래밍에는 문제가 없지만 협업을 할 경우 혼선이 생길 수가 있기 때문에 만든 규칙), 자바에서 정한 절대 규칙인 자료형(위 사진의 데이터 타입에 해당하는 것), 그리고 연산자 우선순위이다. (연산자 우선순위 이미지도 첨부하겠다.)

예를 들어 코드를 보면

 public class Main {
    public static void main(String[] args) {
        int a = 1;  //int 라는 정수 타입의 변수를 선언한 코드.

        System.out.println("123" + a); // 결과값 : 1231
        //연산자 우선순위 규칙에 의해서 문자 처리된 123과 a = 1 의 결과가 합쳐져서 1231로 출력됨
        System.out.println(1 + a); // 결과값 : 2
        // 정수와 정수가 합쳐서 사칙연산을 해서 결과값은 2
        System.out.println("123" + a * 2); // 결과값 : 1232
        //연산자 우선순위 규칙에 의해서 정수들끼리의 곱셈먼저 하고 문자와 합쳐져 결과값 1232


    }
}

이런 식이다.

조건문

조건문은 말 그대로 코드에 특정 조건을 거는 것이라고 생각하니 쉽게 느껴졌다. 우리가 어떤 결과를 출력하고 싶은데 어떤 조건에 맞으면 이 문구를, 조건에 맞지 않으면 저 문구를, 이런 식이다.
조건문에는 논리형 변수가 함께 하는데 결과값이 참(true)면 출력, 거짓(false)면 출력하지 않는다는 코드이다.

//EX
class Main {
    public static void main(String[] args) {
        if ( true ) {
            System.out.println("참");
        }

        if ( false ) {
            System.out.println("거짓");
        }
    }
}
// 출력 : 참

조건문은 되게 다양하게 활용할 수 있다. 오늘 푼 문제를 하나 첨부하자면

// 문제 : 할인 대상인지 아닌지 출력해주세요.
// 조건 : 나이가 19세 이하이거나 60세 이상이면 할인 대상입니다.
// 조건 : 출력예시 처럼 출력되어야 합니다.
// 조건 : `구현시작` 부분만 수정 할 수 있습니다.
// 조건 : 4가지 이상의 방법으로 풀어야 합니다.
// 조건 : 그 중 2가지 방법은 `&&, ||`없이 풀어야 합니다.

class Main {
    public static void main(String[] args) {
        int age = 60; // 이 값을 바꿔가면서 실행해보세요.

        System.out.println("당신의 나이는 " + age + "살 입니다.");

        // 1번째 방법 구현시작
        if ( age <= 19 ) {
            System.out.println("할인 대상입니다.")
            }

        else if ( age => 60 ) {
            System.out.println("할인 대상입니다.");
        }

        else {
            System.out.println("할인 대상이 아닙니다.");
        }

        // 2번째 방법 구현시작
        if ( !( age > 19 ) ) {
            System.out.println("할인 대상입니다.");
        }

        else if ( !(age < 60) ) {
            System.out.println("할인 대상입니다.");
        }

        else {
            System.out.println("할인 대상이 아닙니다.");
        }

        // 3번째 방법 구현시작
        if ( age <= 19 || age>= 60 ) {
            System.out.println("할인 대상입니다.");
        }

        if ( age > 19 && age < 60 ) {
            System.out.println("할인 대상이 아닙니다.");
        }

        //4번째 방법 구현시작

        if ( age <= 19 ) {
            System.out.println("할인 대상입니다.");
        }

        else if ( age >= 60 ) {
            System.out.println("할인 대상입니다.");
        }

        else {
            System.out.println("할인 대상이 아닙니다.");
        }

        // 출력 => 할인대상입니다. 또는 할인 대상이 아닙니다.
    }
}

이렇게 활용하면 age의 값이 바뀔 때 조건에 맞는 결과를 출력할 수 있게 된다. (문제여서 코드를 늘려서 경우의 수를 늘려서 쓴거지 더 효율적인 것을 찾아가면 된다.)

"||"와 "&&"는 or 과 and 로 해석 하면 되고 "<, >" 는 초과나 미만을, "<=, >=" 는 이상이나 이하를 말하는 것이다.

문제 풀이에서 보면 if 뿐 아니라 else if도 함께 등장하는데, else if는 많은 조건(하나의 true를 찾아야할 때)을 걸어야될 때 사용하는데 중간에 true가 하나 나오게 되면 뒤의 else if들은 읽지 않는다. 마지막줄은 앞의 것들을 검토했음에도 true가 나오지 않았기 때문에 자동으로 true가 되서 조건을 걸지 않아도 됨. 따라서 else if로 조건을 굳이 한번 더 거는게 아니라 else로 마무리.(else 마무리는 무조건 답이 하나는 있는 상황에 활용.) (최적화때문에 사용하는 것 같음.)

이렇게 2일차를 무사히 마무리 했다. 글을 제대로 잘 썼는지 잘 모르겠다. 매일 하다보면 늘겠거니 하며 글을 마친다.