Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

기록

day 0507 애플리케이션 기본 구조 본문

📖

day 0507 애플리케이션 기본 구조

슈슈파나 2024. 5. 7. 17:40

메뉴얼대로 만드는 것 (마치 전자렌지처럼)
메뉴얼은 지키되 창의적으로 만들기
미리 정해진걸 익히는 과정 - 흡수하기
 
컴파일러 언어 > 소스코드.java > 컴파일 > 소스코드.class > 실행
 
소프트웨어도 부품으로 대량생산하자 > java를 만듦(객체지향)
 
선생님이 점점 가까워지신다
..
책상이... 밀린다....
..................................
 
자리를 잘못앉은 것 같다 ................................
왜 자꾸 여기로 오시는걸까 ............................................................
 
https://java.sun.com/ 으로 oracle에 접속 가능하다

Java SE 17.0.6(LTS) - Windows에서 다운받기

MSI : path설정까지 같이해줌
 

java -version : java 버전 알아보기

 

javac : 컴파일 명령어

/cmd로 hello world 출력하기/
class 이름의 첫글자는 대문자로,
메모장 파일 저장할땐 반드시 class 이름과 같아야한다
 
{}는 하나의 묶음, 시작과 끝
하나의 main method를 가져야한다
 
메모장에서 코딩할 땐 .java 붙여줘야한다

 

System.out.println();
System : java가 미리 만들어놓은 명령어
print 출력해 : 명령어

ln : 줄바꿈
; 끝나는 지점에 안하면 잔소리한다
(python은 들여쓰기 필수, 안쓰면 오류남)

텍스트 문서는 .txt 가 붙기때문에 모든 파일로 바꿔야한다

cd : 디렉터리 이동
dir : 디렉터리 목록 보기
cls : 화면 지우기
.java : 소스코드, 원시파일이다.

 
/javac로 컴파일하기/
javac [class명].java 으로 컴파일하면
.class 파일이 만들어진다 (.class : 컴퓨터가 이해할 수 있는 언어)

 
/class파일 실행하기/
java [class명]

 
* 오류 날 경우 오류 메세지로 오류잡기

 
메모장에서 UTF-8로 설정해도 계속 오류가 났다. 
* 인코딩 오류 : 컴파일 시 javac [클래스명].java -encoding utf-8 써주기


/사용자 데이터 받아오기/
데이터를 저장시키기위한 저장공간 만들기 : 변수
변수의 성격 정해주기 (자료형)
다른이름으로저장 > 새 파일 : 형상관리(Git과 같다)
 
String name;
자료형 / 변수명
 
int age;
age의 공간을 마련해줘 그 공간에 정수(int)를 넣겠어
 
/java가 만들어둔 class 보러가기/
packages. 누르면 class. 누르면 해당 class에 대한 설명이 나온다.
https://docs.oracle.com/javase/8/docs/api/

 

Java Platform SE 8

docs.oracle.com

 
데이터 입력받는 class : Scanner

  •  

 

Scanner 상속관계

Scanner sc = new Scanner(System.in);
     int i = sc.nextInt();

new : 객체 생성
System.in : 키보드로 입력받음
sc는 변수이름
nextInt() : 정수 입력받기
next() : 문자열 입력받기

import java.util.Scanner;
public class PersonInfo {
    public static void main(String[] args){
        String name;
        int age;
        Scanner sc = new Scanner(System.in);
        System.out.print("이름을 입력 : ");
        name = sc.next();
        System.out.print("나이를 입력 : ");
        age = sc.nextInt();
        System.out.println("내 이름은 " + name + "이고, 나이는 " + age + "살 입니다");
    }
}

 
점심시간은 13:00 ~ 14:00
 
점심은 설렁탕 배고푸다
옆자리 칭구랑 설렁탕집에서 김치전을 먹으려했눙데 ,, 김치전이 커서 한 두명 더 있어야할거같다니간
먹기ㅇ위해 2명이나 더 친해져야한ㄷㅔ
ㅠ 넘웃기다ㅠㅠ
ㅠㅠㅠ 근데 갑자기ㅣㅣ 오늘은 첫날이라 도시락을 주신다했ㄷㅏ
설렁탕은 나중에 머거야디ㅠ 도시락? 마딛었다 굿 ~
 


14:00 ~
 
** 자바 어플리케이션의 기본 구조에 대하여 설명하시오 **
1) 반드시 하나 이상의 class로 구성된다
    public class 클래스명{}
2) 반드시 하나의 main 메소드를 가져야 한다
    public static void main(String[] args){}

따르지않으면 동작하지않는다.

저장 : 클래스명.java
컴파일(컴퓨터 언어로 변환) : javac 파일명.java
실행 : java 클래스명

/컴퓨터와 사용자가 대화하는 형태의 프로그램/

// 메모리를 확보하기위해 변수를 사용한다
String name;
int age;

name = "홍길동";    <---- O
"홍길동" = name;    <---- X

 
/키보드로 데이터 입력받기/

import.java.util.Scanner;

Scanner sc = new Scanner(System.in);
System.out.print("이름을 입력하세요."); 
name = sc.next(); // 문자열 입력받기
System.out.print("나이를 입력하세요."); 
age = sc.nextInt(); // 정수 입력받기

 
/연산자 사용하기/

+
-
*
/


연습문제)

/*
연습) 사용자한테 두개의 정수를 입력받아
사칙연산을 수행한 결과를 출력하는 프로그램을 작성합니다.
변수 2개, Scanner, 사칙연산 자유 (클래스명, 변수명은 자유롭게)

<<실행 예>>
첫번째 수를 입력하시오. 3
두번째 수를 입력하시오. 5
*** 사칙 연산 결과 ***
3 + 5 = __
3 - 5 = __
3 * 5 = __
3 / 5 = __
*/

import java.util.Scanner;

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

    int one,two,add,sub,mul,div;

    Scanner sc = new Scanner(System.in);
    System.out.print("첫번째 수를 입력하시오.");
    one = sc.nextInt();
    System.out.print("두번째 수를 입력하시오.");
    two = sc.nextInt();
    
    add = one + two;
    sub = one - two;
    mul = one * two;
    div = one / two;

    System.out.println("*** 사칙 연산 결과 ***");
    System.out.println(one + " + " + two + " = " + add);
    System.out.println(one + " - " + two + " = " + sub);
    System.out.println(one + " * " + two + " = " + mul);
    System.out.println(one + " / " + two + " = " + div);

    }
}

main 메소드의 명령들을 순차적으로 동작합니다.
일의 순서에 맞게 명령을 내려야 합니다. (과정, 순서가 중요할 수 있다)
 
!! 만약, 다음과 같이 변수를 선언하기도 전에 사용하는 명령이 오면 오류가 발생한다.

Number.java:8: error: cannot find symbol

 
/홀,짝 구하기 (방법1)/

// 사용자한테 임의의 수 n을 입력받아 짝수인지 홀수인지 판별하는 프로그램

import java.util.Scanner;

public class EvenOddTest{
    public static void main(String[] args){
        // 설명문, 주석문    
        Scanner sc = new Scanner(System.in);
        int n;
        System.out.print("임의의 수 n을 입력하시오.");
        n = sc.nextInt();

        /* if 선택문
        if(조건식){
          condition 참일 때
        }else 아니라면 {
          condition
        }
        */
       
       // %는 나머지 연산자
       if(n % 2 == 0){
           System.out.println("짝~");
       }else{
           System.out.println("홀~");
       }
    }
}

 
/변수에 값 저장하고 출력하기 (방법2) /

import java.util.Scanner;

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

        Scanner sc = new Scanner(System.in);
        String result = "";
        int n;
        System.out.print("임의의 수 n을 입력하시오.");
        n = sc.nextInt();

        // %는 나머지 연산자
       if(n % 2 == 0){
           result = "짝~";
       }else{
           result = "홀~";
       }
       System.out.println(result);
    }
}

 
/초기값 설정하고 출력하기 (방법3) /

import java.util.Scanner;

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

        Scanner sc = new Scanner(System.in);
        String result = "호오올~";
        int n;
        System.out.print("임의의 수 n을 입력하시오.");
        n = sc.nextInt();

       if(n % 2 == 0){
           result = "짜아악~";
       }
       System.out.println(result);
    }
}

 
연습문제)

/*
연습) 사용자한테 두개의 정수를 입력받아 그 중에 큰 수를 찾아서 출력하는 프로그램을 작성합니다.
클래스명, 변수명 등은 자유

<<실행 예>>
첫번째 수를 입력하시오. 3
두번째 수를 입력하시오. 4
4 출력
*/

import java.util.Scanner;

public class NumTest{
    public static void main(String[] args){
        int a, b;
        
        Scanner sc = new Scanner(System.in);
        System.out.print("첫번째 수를 입력하시오.");
        a = sc.nextInt();
        System.out.print("두번째 수를 입력하시오.");
        b = sc.nextInt();

        if(a > b){
            System.out.println(a);
        }else{
            System.out.println(b);
        }

    }
}

 
연습문제) 총점 평균 구하기

/*
연습) 사용자한테 이름, 국어, 영어, 수학을 입력받아 총점과 평균을 각각 구하여 출력하고,
       평균이 60점 이상이면 "합격" 그렇지 않으면 "불합격"을 출력하는 프로그램을 작성합니다.

<<실행 예>>
이름을 입력하시오. kim
국어 점수를 입력하시오. 100
영어 점수를 입력하시오. 100
수학 점수를 입력하시오. 100

*** 성적 처리 결과 ***
이름 : ___
국어 : ___
영어 : ___
수학 : ___
총점 : ___
평균 : ___
결과 : 합격/불합격
*/

import java.util.Scanner;
public class Grade {
    public static void main(String[] args){
        String name, result;
        int kor, eng, math, tot, avg;
  
        Scanner sc = new Scanner(System.in);
        System.out.print("이름을 입력하시오.");
        name = sc.next();
        System.out.print("국어 점수를 입력하시오.");
        kor = sc.nextInt();
        System.out.print("영어 점수를 입력하시오.");
        eng = sc.nextInt();
        System.out.print("수학 점수를 입력하시오.");
        math = sc.nextInt();

        tot = kor + eng + math;
        avg = tot/3;

        if(avg >= 60){
            result = "합격";
        }else{
            result = "불합격";
        }

        System.out.println("*** 성적 처리 결과 ***");
        System.out.println("이름" + " : " + name);
        System.out.println("국어" + " : " + kor);
        System.out.println("영어" + " : " + eng);
        System.out.println("수학" + " : " + math);
        System.out.println("총점" + " : " + tot);
        System.out.println("평균" + " : " + avg);
        System.out.println("결과" + " : " + result);
    }
}

>= 크거나 같은가
result = "불합격"; 으로 초기값 설정 후 else없이 if안에 result = "합격"; 만 넣어도 됨
 
/초기화하지 않으면 오류/

public class Variableinit{
    public static void main(String[] args){
        int age;
        System.out.println(age); //error 초기화되지 않아서 오류
    }
}

 
/Variableinit02/

import java.util.Scanner;

public class Variableinit02{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int age;
        System.out.print("몇살?");
        age = sc.nextInt(); // 값이 보장되기 때문에 실행가능 
        System.out.println(age); //error 초기화되지 않아서 오류
    }
}

 
/Variableinit03/

import java.util.Scanner;

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

        Scanner sc = new Scanner(System.in);

        int age;
        String result;

        System.out.print("몇살?");
        age = sc.nextInt();
        System.out.println(age);

        if(age >= 20){
            result = "입장 가능";        
        }else{
            result = "입장 불가능";   
        }
        System.out.println(result);
    }
}

 
/Variableinit04 : result에 초기 값 O/

import java.util.Scanner;

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

        Scanner sc = new Scanner(System.in);

        int age;
        String result = "입장 불가능";

        System.out.print("가능?");
        age = sc.nextInt();
        System.out.println(age);

        if(age >= 20){
            result = "입장 가능";        
        }
        System.out.println(result);
    }
}

 
연습문제)

/*
연습) 정부에서는 40세 이상인 사람들에게 무료 암검진을 실시합니다.
이름과 출생연도를 입력받아 나이를 계산하여 무료 암검진 여부를 판별하고, 결과 출력하기

<<실행 예>>
이름을 입력하시오. kim
출생연도를 입력하시오. 1975

*** 무료 암검진 판별 결과 ***
이름 : ___
나이 : ___
결과 : 무료암검진 대상자 입니다.
*/

import java.util.Scanner;

public class Year{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String name;
        int age, year;
        System.out.print("이름은?");
        name = sc.next();

        System.out.print("출생연도는?");
        year = sc.nextInt();
        age = 2024 - year + 1;

        String result = "무료암검진 비대상자 입니다.";
        if(age >= 40){
            result = "무료암검진 대상자 입니다.";
        }
        System.out.println("*** 무료 암검진 판별 결과 ***");
        System.out.println("이름" + " : " + name);
        System.out.println("나이" + " : " + age);
        System.out.println("결과" + " : " + result);
    }
}

----> 다른 방법
int year, thisYear=2024;
int age;

System.out.print("출생연도를  입력하세요==>");
year = sc.nextInt();
age = thisYear - year;

 
- 마지막 시간은 오늘 학습한 내용을 요약 정리하고 궁금한 점 개별적으로 질문하기
- 요약정리가 다 끝난 사람들은 pdf 변수 수식과 연산자의 PROGRMMING 7번 풀이 해보기

<<숙제>>
변수 수식과 연산자.pdf 안에
programming 1,2,3,4,5,8,9,10,11,12번 중에 1개 이상을 선택하여 스스로 프로그래밍 해 봅시다.
 

/*
PROGRAMMING 7
어떤 학생이 이번 학기에 컴퓨터 개론, C언어 프로그래밍, 영어, 일반 수학을 수강 신청하였다고 하자.
각 과목의 점수를 입력하면 그 학생의 이번 학기 평균 점수를 계산하는 프로그램을 작성하라.

컴퓨터 개론 과목의 점수를 입력하시오: 80
C언어 프로그래밍 과목의 점수를 입력하시오: 90
영어 과목의 점수를 입력하시오: 70
일반 수학 과목의 점수를 입력하시오: 80
평균 점수는 80.0점입니다.
*/

import java.util.Scanner;

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

        Scanner sc = new Scanner(System.in);
        int com, c, eng, meth tot;

        System.out.print("컴퓨터 개론 과목의 점수를 입력하시오: ");
        com = sc.nextInt();

        System.out.print("C언어 프로그래밍 과목의 점수를 입력하시오: ");
        c = sc.nextInt();

        System.out.print("영어 과목의 점수를 입력하시오: ");
        eng = sc.nextInt();

        System.out.print("일반 수학 과목의 점수를 입력하시오: ");
        meth = sc.nextInt();

        tot = com + c + eng + meth;
        double avg = tot/4;

        System.out.println("평균 점수는" + avg + "점 입니다.");
    }
}

 

'📖' 카테고리의 다른 글

day 0514 배열_메소드  (0) 2024.05.14
day 0513 반복문_배열  (1) 2024.05.13
day 0510 선택문_반복문  (0) 2024.05.10
day 0509 연산자_선택문  (0) 2024.05.09
day 0508 자료형_연산자  (0) 2024.05.08