논리적인 사고력 키우기

둥냥둥냥둥·2023년 5월 28일
0
post-thumbnail

연산자와 명령문들을 이해하고 TPC를 통해 논리적인 사고력을 향상시키는데 목표

  • 생각하기 [Thinking]
  • 표현하기 [Presentation]
  • 코딩하기 [Coding]

[학습목표]

  • 연산자와 명령문을 이해
  • 증가, 감소, 삼항 연산자를 이해하라
  • 산술, 대입 연산자를 이해
  • 관계, 논리 연산자를 이해
  • 논리적인 사고력 if
  • 논리적인 사고력 switch~case
  • 논리적인 사고력 for
  • 논리적인 사고력 이중 for
  • 논리적인 사고력 while
  • 논리적인 사고력 break, continue

연산자의 종류

  • 단항연산자
  • 이항연산자
  • 삼항연산자 [ (조건)? 참 : 거짓 ]
  • 증가연산자 [ ++a(전위), a++(후위) ]
  • 감소연산자 [ --a(전위), a—(후위) ]
  • 산술연산자 [ + - * /(몫) %(나머지) ]
  • 관계연산자 [ ><>=<===!= (instanceof) ]
  • 논리연산자 [ && || ! ]
  • 복합대입(=)연산자 [ +=-=*=/=%= ]

명령문의 종류

  • 조건문 ( if, if ~ else )
  • 선택문 ( switch ~ case )
  • 반복문 ( for, foreach while, do~while )
  • 제어문 ( break, continue )

1. 증가, 감소, 삼항 연산자를 이해하라

Q. 키보드로 부터 데이터를 입력 받는 방법 실습(ScannerTest.java)

import java.util.Scanner;

public class ScannerExam {
    public static void main(String[] args) {
        
        // 도서정보 입력받기
        Scanner scan = new Scanner(System.in);
        
        System.out.print("제목 : ");
        String title = scan.nextLine();
        System.out.println("title = " + title);


        System.out.print("가격 : ");
        int price = scan.nextInt();
        System.out.println("price = " + price);

        scan.nextLine();				// 버퍼비우기
        System.out.print("출판사 : ");
        String company = scan.nextLine();
        System.out.println("company = " + company);

        System.out.print("저자 : ");
        String author = scan.nextLine();
        System.out.println("author = " + author);

        System.out.print("페이지수 : ");
        int page = scan.nextInt();
        System.out.println("page = " + page);

        scan.nextLine();				// 버퍼비우기
        System.out.print("ISBN : ");
        String isbn = scan.nextLine();
        System.out.println("isbn = " + isbn);

        scan.close();
    }
}

+ 보너스 학습

public class ScannerTest {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.println("정수를 입력하세요.");
        int num = scan.nextInt(); // 블럭상태
        System.out.println("num = " + num);

        System.out.println("실수를 입력하세요.");
        float f = scan.nextFloat(); // 블럭상태
        System.out.println("f = " + f);

        System.out.println("문자열 입력하세요.");
        String str = scan.next(); // 블럭상태
        System.out.println("str = " + str);

        scan.nextLine(); // 버퍼 비우기

        System.out.println("문자열 입력하세요.");
        String str1 = scan.nextLine(); // 블럭상태
        System.out.println("str1 = " + str1);
    }
}

Q. 아래 증감 연산자의 출력문의 결과를 쓰시오(PrePostOperTest.java)

  • int x =10;
  • --x
  • x++
  • x--
  • ++x
  • x
public class PrePostOperTest {
    public static void main(String[] args) {

        int x =10;
        System.out.println(--x);
        System.out.println(x++);
        System.out.println(x--);
        System.out.println(++x);
        System.out.println(x);
    }
}

Q. 삼 항 연산자를 이용하여 정수 2개 중 max value와 min value를 출력하세요.(MaxMinValue.java)

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

        int a = 10;
        int b = 20;

        int min = (a<b) ? a : b;
        System.out.println("max = " + min);

        int max = (a>b) ? a : b;
        System.out.println("max = " + max);

    }
}

2. 산술, 대입 연산자를 이해

Q. 나누기와 나머지 연산자의 활용(정수의 자릿수 구하기)(ArithmeticOperTest.java)


연산자의미정수 예시실수 예시
/11/4=211.0 / 4.0=2.75
%나머지11%4=31.0 % 4.0=오류

digit3625
일의 자릿수3625 % 10
십의 자릿수3625/10%10
백의 자릿수3625/100%10
천의 자릿수3625/1000%10

public class ArithmeticOperTest {
    public static void main(String[] age){

        // Q. 나누기와 나머지 연산자의 활용(정수의 자릿수 구하기)(ArithmeticOperTest.java)
        int digit = 3625;
        System.out.println(digit%10);
        System.out.println(digit/10%10);
        System.out.println(digit/100%10);
        System.out.println(digit/1000%10);

        int num = 2579;
        int a = num%10;
        int b = num/10%10;
        int c = num/100%10;
        int d = num/1000%10;

        int e = a+b+c+d;
        System.out.print(e);

    }
}

Q. 아래를 수행 후 결과 값은 얼마인가?(AssignOperTest.java)

  • int a = 1;
  • a++;
  • ++a;
  • a=a+1;
  • a+=1;
public class AssignOperTest {
    public static void main(String[] args) {

        int a = 1;
        int b = 7;

        a++;
        ++a;
        a=a+1;
        a+=1;
        System.out.println("a = " + a);

        b--;
        --b;
        b=b-1;
        b-=1;
        System.out.println("b = " + b);

    }
}

3. 관계, 논리 연산자를 이해

1 Q. 관계(비교)연산자의 결과 값을 쓰시오(RelationalOperTest.java)

2 Q. 논리연산자의 결과 값을 쓰시오(LogicalOperTest.java)

public class RelationalOperTest {
    public static void main(String[] args) {
    
        // 1 Q. 관계(비교)연산자의 결과 값을 쓰시오(RelationalOperTest.java)
        int a = 3;
        System.out.println(a > 4);
        System.out.println(a < 4);
        System.out.println(a == 5);
        System.out.println(a != 3);
        System.out.println(2 >= a);
        System.out.println(a <= a+1);


        // 2 Q. 논리연산자의 결과 값을 쓰시오(LogicalOperTest.java)
        int x=1,y=0;
        System.out.println(!(x>0) );
        System.out.println(x>0&&x<3 );
        System.out.println(x<0||y>=0 );
        System.out.println(y<0&&y<-5 );

        int b=5;
        System.out.println( (a>=3) && (b<6) );
        System.out.println( (a!=3) && (a>2) );
        System.out.println( (b!=5) || (a==1) );
    }
}

4. 논리적인 사고력 if

1 Q. 정수 1개를 입력 받아 입력된 수가 7의 배수인지를 출력하세요.(IfbasicTest.java)

2 Q. 나이를 입력 받아 19세 이상이면 성인임을 출력하는 코드를 작성하세요.

import java.util.Scanner;

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

        // 1 Q. 정수 1개를 입력 받아 입력된 수가 7의 배수인지를 출력하세요.(IfbasicTest.java)
        Scanner scan = new Scanner(System.in);
        
        int num = scan.nextInt();
        if (num%7 == 0){
            System.out.println( num + " = 7의 배수입니다.");
        }
        System.out.println("종료");

        // 2 Q. 나이를 입력 받아 19세 이상이면 성인임을 출력하는 코드를 작성하세요 .
        int age = scan.nextInt();

        if (age >= 19){
            System.out.println("성인 입니다.");
        }
        System.out.println("종료");
    }
}

3 Q. 정수 1개를 입력 받아 짝수인지 홀수 인지를 판단하는 프로그램을 만드세요.(IfElseTest.java)

4 Q. 입력 받은 수가 12의 배수인지를 출력하는 코드를 작성하세요.

import java.util.Scanner;

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

        // 3 Q. 정수 1개를 입력 받아 짝수인지 홀수 인지를 판단하는 프로그램을 만드세요.(IfElseTest.java)
        Scanner scan = new Scanner(System.in);

        int su = scan.nextInt();

        if (su%2 == 0){
            System.out.print("짝수입니다.");
        }else {
            System.out.println("홀수입니다.");
        }

        // 4 Q. 입력 받은 수가 12의 배수인지를 출력하는 코드를 작성하세요.
        System.out.println("정수를 입력하세요 : ");
        int num = scan.nextInt();
        if (num%12 == 0){
            System.out.println("12의 배수입니다.");
        }else {
            System.out.println("12의 배수가 아닙니다.");
        }
    }
}

5 Q. 80점 이상의 학생 중에서 90점 이상은 A반, 85점 이상은 B반,그렇지 않으면 C반으로 편성하고 점수가 80미만이면 불합격 처리하는 프로그램을 작성하세요.

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

        // 5 Q. 80점 이상의 학생 중에서 90점 이상은 A반, 85점 이상은 B반,
        //    그렇지 않으면 C반으로 편성하고 점수가 80미만이면 불합격 처리하는 프로그램을 작성하세요.
        //    단, 점수는 0 ~ 100점 사이값을 받는다.

        int jumsu = 80;
        if (jumsu>=0 && jumsu<=100){

            if (jumsu >= 80) {
                if (jumsu >= 90) {
                    System.out.print("A반");
                } else if (jumsu >= 85) {
                    System.out.print("B반");
                } else if (jumsu >= 80) {
                    System.out.print("C반");
                } else {
                    System.out.print("불합격");
                }
            }else {
                System.out.println("학생의 점수는 80점 이상이 아닙니다.");
            }
        }else {
            System.out.println("유효한 점수가 아닙니다.");
        }
    }
}

5. 논리적인 사고력 switch~case

switch~case

  • 주로 다중 선택에 사용하는데, 다중 if문보다 간결
  • 대신, 사용 영역이 if-else에 비해 제한적

Q. switch ~ case 문을 활용하여 요일에 해당하는 운동을 출력하세요.

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

        // Q. switch ~ case 문을 활용하여 요일에 해당하는 운동을 출력하세요.(SwitchCaseTest.java)

        String day = "Wednesday";

        switch (day) {
            case "Sunday":
                System.out.println("야구");
                break;
            case "Monday":
                System.out.println("농구");
                break;
            case "Tuesday":
            case "Wednesday":
                System.out.println("수영");
                break;
            default:
                System.out.println("휴식");
                break;
        }
    }
}

6. 논리적인 사고력 for

for

  • 일반적으로 반복하는 횟수가 정해진 경우에 사용
  • 초기식,조건식,증감식으로구성되고,세미콜론(;)으로 구분|
  • 초기식은처음한번만수행 -이후,조건식->반복할문장->증감식이반복적으로수행됨


7. 논리적인 사고력 이중 for

1 Q. 반복문을 이용하여 알파벳 대문자와 아스키 코드 값을 출력하세요.

2 Q. int[ ] numbers={ 1,2,3,4,5,6,7,8,9,10}; 배열 원소를 향상된 for문으로 출력하세요

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

        // 1 Q. 반복문을 이용하여 알파벳 대문자와 아스키 코드 값을 출력하세요.(ForLoopTest.java)

        for (char c = 'A'; c<='Z'; c++){
            System.out.println("c = " + c + "|" + (int)c);
        }


        // 2 Q. int[ ] numbers={ 1,2,3,4,5,6,7,8,9,10}; 배열 원소를 향상된 for문으로 출력하세요.

        int[] numbers = {1,2,3,4,5,6,7,8,9,10};
        
        for (int i = 0; i<numbers.length; i++){
            System.out.println("numbers = " + numbers[i]);
        }
        for (int su : numbers){
            System.out.println(su);
        }


8. 논리적인 사고력 while

while

  • 먼저조건식검사반복할문장을실행

do~while

  • 반복할문장을실행한수에조건식검사
  • 반복문내에있는문장을최소한한번실행하고자할때유용
  • 주의)마지막에세미콜론(;)을반드시써야함

1 Q. int[ ] numbers={1,2,3,4,5,6,7,8,9,10} 주어진 배열의 모든 원소를 출력하세요.

2 Q. 1~10까지 출력하는 프로그램을 while과 do~while문으로 작성하세요.(WhileLoopTest.java)


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

        // 1 Q. int[ ] numbers={1,2,3,4,5,6,7,8,9,10} 주어진 배열의 모든 원소를 출력하세요.

        int[] numbers ={1,2,3,4,5,6,7,8,9,10};
        int i = 0;

        while(i<numbers.length){
            System.out.println("i = " + numbers[i]);
            i++;
        }
        System.out.println("index = " + i); // index 10


        // 2 Q. 1~10까지 출력하는 프로그램을 while과 do~while문으로 작성하세요.(WhileLoopTest.java)

        i = 1;
        do {
            System.out.println(i);
            i++;
        }while (i<=5);
    }
}


9. 논리적인 사고력 break, continue

제어문

  • 반복문의 실행 상태를 직접 제어하고자 break 문과 continue 문을 사용한다.
  • continue : 현재 수행 중인 반복문에서 현재 조건 값에 대한 처리를 중단하고, 다음조건값에대한처리를수행
  • break : 현재 사용중인 반복문을 중단하고 제어를 반복문 바깥으로 이동

1 Q. char[ ] c={‘s’,’h’,’u’,’t’,’d’,’o’,’w’,’n’}; 위 배열의 값을 출력 중 ‘o’라는 문자를 만나면 반복을 중지하세요.(BreakContinueTest.java)

2 Q. 1~10까지의 수 중 3의 배수의 개수를 구하여 출력하세요.

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

        // 1 Q. char[ ] c={‘s’,’h’,’u’,’t’,’d’,’o’,’w’,’n’}; 위 배열의 값을 출력 중
        // ‘o’라는 문자를 만나면 반복을 중지하세요.(BreakContinueTest.java)

        char[ ] c = {'s','h','u','t','d','o','w','n'};
        for (int i = 0; i<c.length; i++ ){
            if (c[i] == 'o') break;

            System.out.println(c[i]);
        }


        // 2 Q. 1~10까지의 수 중 3의 배수의 개수를 구하여 출력하세요.

        int count = 0;
        for (int i = 1; i<=10; i++){
            if (i%3!=0) continue;
                count++;
        }
        System.out.println(count);
    }
}

profile
Java 먹자

0개의 댓글