이론/자바 풀스택 국비수업

220310 반복문(break; continue;), 배열

달거북씨 2022. 3. 12. 01:19

오늘은 다른 반의 포트폴리오 발표를 참관했다.

하나의 홈페이지를 오롯이 만들어내고 구동시키는 걸 보면서 신기한 감정 반 저걸 어떻게 하지 우려 반이었다.

두근두근♥


 

1. 반복문

1-1. 반복문에서의 흐름제어

  • break : 반복문 안에서 break; 키워드를 만나면 반복을 강제로 종료한다.
  • continue : 실행흐름이 증감식으로 강제 이동된다

// 1 ~ 100까지 홀수의 합
// while, continue, break

int sum = 0;
int i = 0;

while(true){
	i++;
    
    if(i%2==0){
    	continue;	// 짝수일 경우 증감식으로 돌아간다.
    }
    
    if(i>100){
    	break;	// i가 100보다 커지면 반복문을 탈출한다.
    }
    
    sum += i;	// 짝수가 위에서 걸러지기 때문에 홀수만 더해진다.
}

 

 

 

2. 배열
  • 배열 사용 전
  • 프로그램에서 처리하는 값들이 많아질수록, 선언해야 하는 변수의 수가 증가하게 되어서 프로그램의 소스가 더 난해해진다.

  • 예. 각 학생의 과목 평균 구하기
    int dooly_kor = 75;
    int dooly_eng = 82;
    int dooly_math = 91;
    System.out.println((dooly_kor+dooly_eng+dooly_math)/3);

    int dooly_kor = 75;
    int dooly_eng = 82;
    int dooly_math = 91;
    System.out.println((dooly_kor+dooly_eng+dooly_math)/3);

    int dooly_kor = 75;
    int dooly_eng = 82;
    int dooly_math = 91;
    System.out.println((dooly_kor+dooly_eng+dooly_math)/3);
    ▶ 소스가 많이 늘어남

 

2-1. 배열이란

  • 변수를 그룹으로 묶은 형태의 한 종류로서, 사물함 같은 형태를 갖고 있다.
  • 하나의 배열 안에는 같은 종류(데이터 형)의 값들만 저장될 수 있다.

 

2-2. 배열을 만드는 방법

  • 배열의 선언
    데이터형[] 배열이름;
  • 배열의 생성
    배열이름 = new 데이터형[크기]
  • 배열 생성의 예 : 3개의 int형 변수를 저장할 수 있는 배열 생성
    int[] grade;   // 여러 개의 int형 변수를 저장할 수 있는 배열의 선언
    grade = new int[3];   // 배열의 칸을 3칸으로 할당

사물함 생성

  • 배열의 모양 : 생성된 배열은 사물함과 같이 각각의 칸에 값들이 저장되고, 각각의 칸은 0부터 일련번호가 지정된다(일련번호 = 배열의 인덱스)
  • 배열의 선언과 크기 지정에 대한 일괄처리
    데이터형[] 배열이름 = new 데이터형[크기];
    int[] grade = new int[3];
    ▶ int grade[] = new int[3]; > 이렇게도 가능하지만 위 형태로 계속 사용할 예정!

 

2-3. 배열에 값을 저장하기

  • 배열은 값을 저장할 수 있는 공간일뿐, 그 자체가 값은 아니다.
  • 값이 대입되지 않은 경우, 숫자형은 0이 boolean형은 false가 자동으로 대입된다.
  • 배열 안에 값을 저장하기 위해서는 인덱스 번호를 사용하여 각각의 칸에 직접 값을 대입해야 한다.
    배열이름[인덱스] = 값;
  • 둘리의 점수를 배열로 표현한 예
    int[] grade = new int[3];
    grade[0] = 75;
    grade[1] = 82;
    grade[2] = 91;

사물함에 값 할당

 

2-4. 배열의 크기 설정과 값 할당에 대한 일괄처리

배열의 크기를 지정하면서 괄호{...} 안에 배열에 포함될 각 항목들을 콤마(,)로 나열하면, 배열의 생성과 값의 할당을 일괄처리 할 수 있다. 이 때는 배열의 크기를 별도로 지정하지 않으며, "new 데이터형[]" 부분은 생략 가능하다.
데이터형[] 배열이름 = new 데이터형[]{값1, 값2, 값3, ..., 값n};

                         또는

데이터형[] 배열이름 = {값1, 값2, 값3, ..., 값n};

 

2-5. 배열값 사용하기

  • 배열 안에 저장되어 있는 값들을 사용하여 연산이나 출력 등의 처리를 위해서는 배열에 부여된 인덱스 값을 통해서 데이터에 접근해야 한다.
    배열이름[인덱스];
    grade[0];
  • 둘리의 점수 출력하기
    System.out.println(grade[0]);   // 75
    System.out.println(grade[2]);   // 91
    System.out.println(grade[3]);   // error

 

2-6. 배열과 반복문

  • 배열의 특성 : 0 ~ (배열의 크기 -1)만큼의 인덱스 값을 순차적으로 갖는다.
  • 특성을 활용한 배열 데이터의 처리
    : 일정한 범위를 갖고 순차적으로 증가하는 인덱스 값의 특성을 활용하는 반복문 안에서 배열의 값을 할당하거나, 할당된 값을 읽어들이는 처리가 가능하다.
    int[] grade = new int[]{100, 100, 90};
    // 배열의 인덱스는 0부터 전체 길이 3보다 작은 2까지이다.([0], [1], [2])
    for(int i=0; i<3; i++){
             // i번째 배열값에 대한 출력 처리
             System.out.println(grade[i]);
    }

2-7. 배열의 크기(길이)

  • 배열의 길이를 얻기 위해서는 "배열이름.length" 형식으로 접근한다.
  • grade라는 배열을 생성한 경우 배열의 길이는
    int size = grade.length;
  • 배열의 길이값은 주로 반복문의 조건식에서 반복의 범위를 지정하기 위하여 사용된다.
    int[] grade = new int[]{100, 100, 90, 95, 100, 65};
    // 배열의 크기(길이)는 변할 수 있기 때문에 특정 숫자로 지칭하기 보다 grade.length 사용
    for(int i=0; i<grade.length; i++){   
             // i번째 배열값에 대한 출력 처리
             System.out.println(grade[i]);
    }

 

2-8. 배열의 종류

  • 1차 배열
    → 앞에서 살펴본 배열처럼 한 줄만 존재하는 사물함 같이 구성된 배열
    행에 대한 개념이 없고, 열에 대한 개념만 존재하기 때문에 "배열이름.length"는 몇 칸인지를 알아보는 기능이 된다.
  • 2차 배열
    → 1차 배열의 각 칸에 새로운 배열을 넣는 형태
    → 1차 배열의 각 칸은 행이 되고, 각각의 칸에 추가된 개별적인 배열이 "열"의 개념이 되어"행렬"을 구성하게 된다.
       (▶ 한 마디로 1차 배열이 여러 개 모인 형태)

 

2-9. 2차원 배열의 생성 방법

  • 데이터 타입의 이름 뒤에 대괄호 "[]"를 행과 열에 대하여 각각 지정한다.
    데이터형[][] 배열이름;
  • 2차원 배열의 크기 할당
    → 행과 열에 대한 크기를 명시한다
        배열이름 = new 데이터형[행][열];
    2차원 배열의 선언과 할당의 일괄처리
        데이터형[][] 배열이름 = new 데이터형[행][열];

// 둘리, 도우너, 코치의 성적 배열로 생성하기

// 배열의 선언과 크기 지정 및 값의 할당에 대한 개별 처리
int[] dooly;
dooly[0] = 75;
dooly[1] = 82;
dooly[2] = 91;

// 배열의 선언과 크기 지정의 일괄처리
int[] douneo = new int[3];
douneo[0] = 88;
douneo[1] = 64;
douneo[2] = 50;

// 배열 생성의 일괄처리
int[] ddochy = new int[]{100, 100, 90};

// 배열 활용
// 각 배열 요소의 값에 대한 합계 구하기
// 합을 할당할 변수 선언
int sum1 = 0, sum2 = 0, sum3 = 0;	// 같은 종류의 변수들은 콤마로 구별하여 한 번에 선언 가능함

// sum1 dooly 합계 반복문
for(int i=0; i<dooly.length; i++){
	sum1 += dooly[i];
}
System.out.println(sum1);

// sum2 douneo 합계 반복문
for(int i=0; i<douneo.length; i++){
	sum2 += douneo[i];
}
System.out.println(sum2);

// sum3 ddoch 합계 반복문 생성 및 출력
for(int i=0; i<ddochy.length; i++){
	sum3 += ddochy[i];
}
System.out.println(sum2);

// 각 과목의 평균 구하기
System.out.println("dooly 평균 : " + sum1/dooly.length);
System.out.println("douneo 평균 : " + sum2/douneo.length);
System.out.println("ddochy 평균 : " + sum3/ddochy.length);
728x90