JAVA 프로그래밍 3장 제어문과 배열
학습목표 이번장에서는 자바 프로그램을 제어하기 위한 제어문들과 하나의 변수에 여러개의 값을 저장할 수 있는 배열에 대해 학습한다. 배열은 for문과 연계해서 많이 사용된다. 목차 Section1 제어문의 개요 Section2 제어문의 종류 Section3 배열 JAVA 프로그래밍
3장-제어문과 배열의 개요 알고리즘과 의사코드에 대해 학습한다. Section1 제어문의 개요 if, select-case, for, while등의 제어문에 대해 학습한다. Section2 제어문의 종류 자바에서 배열의 선언과 사용에 대해 학습한다. Section3 배열 JAVA 프로그래밍
1. 제어문의 개요 (1/5) 알고리즘(Algorithm) 어떤 문제를 해결하기 위해한 일련의 과정(절차)이다. 알고리즘은 문제를 해결하기 위해 실행되어야 하는 동작들과 동작들이 실행되는 순서를 반드시 포함해야 한다. 동작들은 상황에 따라 다른 동작을 수행하거나, 같은동작을 반복해야 할 것이다. 이러한 것을 프로그램 제어(control)라 한다. 상황에 따라 적합한 제어문을 사용해서 문제를 해결하도록 하는 것이 제어문을 사용하는 목적이다. JAVA 프로그래밍
1. 제어문의 개요 (2/5) 의사코드(Pseudocode) (1/2) 알고리즘을 개발하는데 사용하는 일종의 작위적인 언어이다. 의사코드로 작성한 프로그램은 진짜 프로그래밍코드가 아니므로 컴퓨터에서 실행할 수 없다. 프로그램을 작성하기 전에 프로그램을 작성하는 것을 프로그래머에게 도움을 주기위해서 사용 의사코드는 실행구문으로만 이루어진다. 선언문은 실행구문이 아니므로 의사코드에서 기술하지 않으나 해당 변수의 목적등은 의사코드 프로그램앞에 기술하기도 한다. JAVA 프로그래밍
1. 제어문의 개요 (3/5) 의사코드(Pseudocode) (2/2) 의사코드 예시) count: 인원수를 누적하는 변수(인원수 카운트변수) count의 값이 10보다 작거나 같으면 count의 값을 1증가한다. <= 의사코드 JAVA 프로그래밍
2. 제어문의 종류(1/12) if문 if문은 조건비교 분기문의 하나로 주어진 조건을 비교해서 그 결과에 따라 여러 대안들 중에서 하나를 선택할 때 사용된다. if문의 조건에 들어갈 수 있는 타입은 리턴타입 또는 결과 값이 boolean 값을 경우만 가능하다. 문법 순서도(Flowchart) if(조건){ statement1; } JAVA 프로그래밍
2. 제어문의 종류(2/12) if-else문 조건을 비교해서 조건을 만족하는 경우에만 어떠한 문장 statement1을 수행하고 조건을 만족하지 못한 경우에는 statement2를 수행한다. 즉, 조건을 만족하는 경우에 수행하는 문장과 조건을 만족하지 못했을 때 수행하는 문장이 달라진다. 문법 순서도(Flowchart) if(조건){ statement1; }else{ statement2; } <그림3-11.jpg> JAVA 프로그래밍
2. 제어문의 종류(3/12) 블록if문 (1/2) 블록if문은 여러개의 조건이 나오는데, 조건1을 비교해서 조건을 만족하는 경우에 statement1을 수행하고 조건을 만족하지 못한 경우에는 다시 조건2를 비교해서 조건을 만족하는 경우에 statement2를 수행하고 조건을 어느것도 만족하지 못하는 경우statement3을 수행한다. JAVA 프로그래밍
2. 제어문의 종류(4/12) 블록if문 (2/2) 문법 순서도(Flowchart) if(조건1){ statement1; if(조건1){ statement1; }else if(조건2){ statement2; } else{ statement3; } <그림3-17.jpg> JAVA 프로그래밍
2. 제어문의 종류(5/12) switch문 (1/2) switch문은 다중조건 분기일 때, 블록if문를 대체하는 효과를 가진다. switch문안에 표현식을 기술하고 그 표현식의 결과값에 따라 그 값을 만족하는 case(경우)로 분기하는 형태를 사용한다. case문에는 수행해야하는 문장들이 나열되고 반드시 맨 마지막문장에는 break문이 나와야 한다. break문이 나오지 않으면 아래의 문장들을 계속 수행하기 때문에 원하는 형태의 결과가 나오지 않을 수 있다. 모든 case문에 해당되지 않는 경우를 위해서 default문을 사용한다. default문도 break문을 가진다. JAVA 프로그래밍
2. 제어문의 종류(6/12) switch문 (2/2) 문법 순서도(Flowchart) switch(expression){ case value1: statement1; break; case value2: statement2; default: statement3; } JAVA 프로그래밍
2. 제어문의 종류(7/12) for문 (1/2) 조건에 의한 일정한 문장을 반복 수행하는 for문은 반복을 수행할 횟수가 결정된 경우의 프로그램에 주로 사용되는 제어문이다. 배열과 같이 반복해야 하는 횟수가 결정된 형태를 제어할 때 주로 사용된다. 초기값은 for문 수행시 단 한번만 수행된다. 조건문은 루프 탈출조건이라고도 불리며 for문안의 문장(statement)을 수행하기 전에 수행해서 조건을 만족하면 문장을 수행한다. 증감값은 for문 안의 문장을 수행하고 나서 수행된다. 반복횟수만큼 반복한다. JAVA 프로그래밍
2. 제어문의 종류(8/12) for문 (2/2) 문법 순서도(Flowchart) for(초기값; 조건문; 증감값){ for(초기값; 조건문; 증감값){ statement; } <그림3-31.jpg> JAVA 프로그래밍
2. 제어문의 종류(9/12) while문 (1/2) while문은 기본적으로 for문과 쓰임새가 같으나, while문은 반복을 몇 번해야 할지 알 수 없는 경우에 사용된다. 즉, 반복횟수를 알 수 없는 경우에 사용된다. 물론 for문도 가능하지만, 이 경우에는while문을 선호한다. while문은 조건문을 비교해서 조건을 만족하는 경우에는 문장(statement)을 수행하고 조건을 만족하지 않으면 while문을 빠져나온다. 이때 수행되는 문장안에는 반드시 for문과 같이 반복횟수를 제어하는 변수를 가지고 있어야 한다. 그래야 수행되는 횟수를 제어할 수 있다. JAVA 프로그래밍
2. 제어문의 종류(10/12) while문 (2/2) 문법 순서도(Flowchart) while(조건문){ while(조건문){ statement; count증감; } <그림3-38.jpg> JAVA 프로그래밍
2. 제어문의 종류(11/12) do-while문 do-while문 while문과 유사하나 일단 한번 수행을 한 후에 조건을 비교한다. 즉 조건이 맞지 않더라도 반드시 한번은 while내의 문장을 수행한다. 문법 순서도(Flowchart) do{ statement; count증감 }while(조건문); JAVA 프로그래밍
2. 제어문의 종류(12/12) break문/continue문은 제어의 흐름을 바꿀 때 사용한다. break문 while , do-while , for , switch 문 안에서 사용하면 그 구조를 완전히 빠져나간다. 즉, 프로그램 흐름상 반복문을 빠져나와야 할 때 사용된다. continue문 while , do-while , for , switch 문 안에서 사용하면 조건을 만족시킨 부분만 제외시키고 나머지를 수행한다 JAVA 프로그래밍
3. 배열 (1/5) 배열의 개요(1/2) 배열은 같은 이름과 같은 데이터 타입을 갖는 연속적인 메모리의 집합이다. 같은 데이터 타입을 갖는 여러 개의 데이터를 저장하는 것을 목적으로 한다. 원소의 수의 변화에 따라 동적으로 배열의 크기가 변화하지 못하는 정적의 타입이다. 배열의 크기는 변화시킬 수 있으나 이것은 어떤 명령문을 사용해야 가능한 것이 스스로 크기가 커지지는 않는다 JAVA 프로그래밍
3. 배열 (2/5) 배열의 개요(2/2) 배열 내에서 특정위치에 있는 원소의 값을 참조하기 위해서는 배열의 첨자(subscript)가 필요하다. c라는 이름의 배열이 10개의 기억장소를 가지고 있다고 할 때 위와 같은 방식으로 저장되어 있다. 배열의 첨자는 0부터 시작한다. 만일 첨자번호가 3인 위치에 저장된 배열의 값을 알고 싶다면 c[3]이라고 쓰면 된다. JAVA 프로그래밍
3. 배열 (3/5) 배열의 선언과 할당 (1/2) 배열명은 c언어에서도 마찬가지이지만, 자바에서도 배열을 가리키는 레퍼런스 변수역할을 한다. 배열명c는 c라는 이름으로 할당되어있는 배열의 메모리 시작번지를 가지고 있다. 배열의 길이는 c.length로 표현된다. 배열은 선언한 후에 메모리할당을 받아서 사용한다. 배열을 선언할때는 배열의 데이터타입 배열명 그리고 [ ](대괄호:bracket)를 사용해서 한다. [ ]는 배열이라는 것을 시스템에 알려주는 역할을 한다. int c[]; //배열선언 int[] c; //배열선언 JAVA 프로그래밍
3. 배열 (4/5) 배열의 선언과 할당 (2/2) 배열을 선언한 후에 사용하려면 반드시 메모리 할당을 받아야 한다. 메모리를 할당 받을 때는 new 키워드를 사용한다. int[] c; //배열선언 c = new int[10];//배열의 메모리를 할당받음 배열은 메모리할당을 받을 때 배열의 데이터타입의 기본값으로 초기화된다. 숫자타입은 0으로, boolean 타입은 false로, 레퍼런스 타입은 null로 초기화된다. JAVA 프로그래밍
3. 배열 (4/5) 배열의 사용 및 참조 (1/2) 배열의 특정 위치에 있는 값을 참조하거나 위치를 참조할때는 배열명[첨자번호]와 같은 형식으로 사용한다. int[] c; //배열선언 c = new int[10];//배열의 메모리를 할당받음 c[3]=5;// 배열의 사용 JAVA 프로그래밍
3. 배열 (5/5) 배열의 사용 및 참조 (2/2) 배열을 초기화리스트를 사용하면 배열의 선언, 메모리할당 그리고 배열의 원소에 값 할당을 한번에 수행할 수 있다. int c[]={1,2,3};//초기화 리스트 JAVA 프로그래밍