DataScience Lab. 박사과정 김희찬 2017-07-11 (화) Big Data Analytics Short Courses, Summer, 2017 자바 몸풀기 DataScience Lab. 박사과정 김희찬 2017-07-11 (화)
프로그래밍이란? 내가 원하는 모양대로 레고를 조립하는 것 원하는 바를 만드려면 각 블록이 어떻게 생겼는지 무슨 색인지 어떻게 움직이는지 알아야함
반복문 유사한 작업을 반복하기 위하여 사용 모든 반복분은 아래와 같은 설정이 필요함 반복문은 세 종류의 형태가 존재 시작 설정 지속 여부 조건 Boolean 형태의 어느 것이든 가능 반복문은 세 종류의 형태가 존재 While loop Do ~ while loop For loop
반복문 while ( condition ) statement; While loop 조건 판단 참이면 Statement 실행 실행 후 다시 조건 판단 아니면 넘어감 condition evaluated while ( condition ) statement; false statement true
반복문 do { statement; } while ( condition ); Do ~ while loop 조건 판단 참이면 Statement 재실행 아니면 넘어감 statement do { statement; } while ( condition ); true condition evaluated false
반복문 While loop 특정 문장을 열 번 출력하고 싶다면? 한번 출력하고 하나 세고, 한번 출력하고 둘 세고, …. 숫자를 저장할 공간을 먼저 만들어야겠죠? 열 번째를 세고 멈추면 됨
반복문 Do ~ while loop 지속 여부 조건을 처음 한 번은 무시하고 일단 실행한 후 조건을 확인하고 싶을 때 사용 지속 여부 조건을 처음 한 번은 무시하고 일단 실행한 후 조건을 확인하고 싶을 때 사용 일단 한번은 실행되는 것을 확인할 수 있음 아래 While loop은 한 번도 실행되지 않음
반복문 For loop for ( initialization;condition;increment ) statement; 초기화 조건 판단 Statement 실행 Increment 실행 후 다시 조건 판단, 이후 반복 initialization for ( initialization;condition;increment ) statement; condition evaluated true false statement increment
반복문 For loop 형태는 다르나 다른 반복문과 같은 조건이 사용됨
반복문 반복 중 중간 종료 또는 건너뛰기 반복문 실행 중 조건문 내에 작성한 조건이외의 다른 조건으로도 반복문 종료 / 다음 반복으로 넘어가고 싶다! If문과 break; continue;의 조합으로 해결 가능 condition evaluated false statement true if break if cont.
반복문 Break Continue 현재 수행 중인 반복문을 중단함 현재 수행 중인 statement는 종료하되, 다음 조건 판단 부분으로 넘어감 condition evaluated false statement true if break if cont.
배열 연속적인 변수의 묶음 동일한 자료형으로 생성 가능 유사한 의미의 변수끼리 묶는 것을 권장 { }를 이용하여 표현함 동일한 자료형으로 생성 가능 유사한 의미의 변수끼리 묶는 것을 권장 배열의 접근 방법은 index를 이용함. []로 표현 0 이 시작 위치 arr[0] -> 1 arr[1] -> 2 arr[2] -> 3 arr int[ ] arr = {1,2,3 }; int a = 1; int b = 2; int c = 3; 1 2 a b c 1 2 3 3 arr arr[0] 1 arr[1] 2 arr[2] 3
배열 반복문을 이용한 배열 탐색 탐색이란? 변수의 내용을 들여다 보는 것을 가리킴. 접근과 같음. Continue의 응용
배열 배열 생성 시 빈 칸만 생성하고 이후 데이터 삽입 가능 배열은 반드시 크기를 지정해야함, 이후 크기 변경 불가능 데이터가 늘어나는 것에 대하여 대응할 수 없음
직접 해보기! 소수 찾기 특정 숫자를 입력으로 받아서 1부터 입력받은 숫자 사이의 소수를 찾자 에라토스테네스의 체 방법을 사용 찾고자 하는 범위의 자연수를 나열 2부터 시작하여, 2의 배수를 지움 다음 소수의 배수를 모두 지움 필요한 변수는? 입력된 숫자만큼의 크기를 가지는 boolean array WHY? 필요한 제어문은? for문 if문 mod %
리스트 배열은 한계가 있다 List 클래스를 사용하자! 정해진 크기에만 쓸 수 있다며? 유동적인 개수로 넣을 수 없나? 자바의 기본 라이브러리 내 존재하는 클래스 필요할 때마다 메모리 공간을 추가하여 줄줄이 엮을 수 있음 엮이는 단위를 원소(element)라 함
라이브러리 라이브러리는 코드를 쉽게 다시 쓰기위한 것 자바에만 있나요? 클래스를 손쉽게 사용할 수 있도록 뭉쳐둔 묶음 다른 사람이 이미 작성한 것을 가져와 사용하기 위함 자바에만 있나요? 모든 프로그래밍 언어에서는 같은 기능을 제공함 SAS나 R에서 외부 패키지를 가져오는 것과 같음
리스트 어떻게 사용하나? List 객체는 java.util 에 존재함 List<Object> 형태로 원소가 무엇인지 명시 List<String>, List<Integer> 리스트에 값 추가 add() 메소드!, Object를 파라미터로. 리스트의 특정 순서 원소 가져오기 get() 메소드! 순번을 파라미터로
리스트 줄줄 엮을 건데, 엮을 녀석이 무엇인지 정해야함 리스트에 특정 원소 제거는 리스트 비우기는 리스트의 길이 확인은 remove() 메소드! 순번을 파라미터로 리스트 비우기는 clear() 메소드! 리스트의 길이 확인은 size() 메소드!
리스트 리스트 생성 및 값 가져오기 ‘<> ‘ 안에 원소 클래스 이름을 명시해야함
라이브러리 기본 제공 라이브러리를 사용해보자 내가 짠 자바 프로그램이 키보드에서 뭐라고 입력하는지 알고 싶다 Scanner 내가 입력한 것을 그대로 컴퓨터가 출력하는 예제부터 해보자 Echo program!
Echo Program Scanner라는 클래스를 이용하여 키보드 입력을 받자 Scanner는 자바에 기본 내장된 클래스 클래스를 사용하려면 먼저 객체를 생성해야함 Scanner는 키보드의 입력을 받아들이므로 System.in을 파라미터로 사용 nextLine() 메소드는 사용자의 입력을 문자열(String)로 리턴함
Echo Program 숫자를 입력받고 싶다면? Scanner를 통하여 받는 입력은 문자열임 문자열을 숫자로 변경하면 가능! 정수는 Integer.parseInt() 실수는 Double.parseDouble() 변경 시 오탈자가 존재하면 에러남
직접 해보기! 구구단 중 원하는 단만 출력하기 입력된 숫자가 1~9 사이면, 해당 구구단 출력 아니면 “다시 입력” 출력 만약 0이 입력되면 “완료”출력하며 프로그램 종료
직접 해보기! 구구단 중 원하는 단 및 최대 곱까지 출력하기 입력된 숫자가 1~9 사이면, 숫자 입력을 한 번 더 받음 첫 번째 숫자는 단, 두 번째 숫자는 최대 곱 4, 24면 4*1 부터 4*24까지 출력 아니면 “다시 입력” 출력 만약 0이 입력되면 “완료”출력하며 프로그램 종료
직접 해보기! 진열장(Cabinet) 만들기 상품(Product)을 선반에 진열한다고 가정 선반은 10개의 상품을 진열 가능 상품의 이름과 가격은 임의로 설정 진열된 상품을 메소드 하나로 전부 출력할 수 있어야 함
THANKS