본문 바로가기

JAVA/온라인 스터디

[4주차] 제어문 #4

목표

자바가 제공하는 제어문을 학습하세요.

학습할 것 (필수)

선택문
반복문

과제 (옵션) // 하나도 모르겠어요... ㅜㅜ

과제 0. JUnit 5 학습하세요.

  • 인텔리J, 이클립스, VS Code에서 JUnit 5로 테스트 코드 작성하는 방법에 익숙해 질 것.
  • 이미 JUnit 알고 계신분들은 다른 것 아무거나!
  • 더 자바, 테스트 강의도 있으니 참고하세요~

과제 1. live-study 대시 보드를 만드는 코드를 작성하세요.

  • 깃헙 이슈 1번부터 18번까지 댓글을 순회하며 댓글을 남긴 사용자를 체크 할 것.
  • 참여율을 계산하세요. 총 18회에 중에 몇 %를 참여했는지 소숫점 두자리가지 보여줄 것.
  • Github 자바 라이브러리를 사용하면 편리합니다.
  • 깃헙 API를 익명으로 호출하는데 제한이 있기 때문에 본인의 깃헙 프로젝트에 이슈를 만들고 테스트를 하시면 더 자주 테스트할 수 있습니다.

과제 2. LinkedList를 구현하세요.

  • LinkedList에 대해 공부하세요.
  • 정수를 저장하는 ListNode 클래스를 구현하세요.
  • ListNode add(ListNode head, ListNode nodeToAdd, int position)를 구현하세요.
  • ListNode remove(ListNode head, int positionToRemove)를 구현하세요.
  • boolean contains(ListNode head, ListNode nodeTocheck)를 구현하세요.

과제 3. Stack을 구현하세요.

  • int 배열을 사용해서 정수를 저장하는 Stack을 구현하세요.
  • void push(int data)를 구현하세요.
  • int pop()을 구현하세요.

과제 4. 앞서 만든 ListNode를 사용해서 Stack을 구현하세요.

  • ListNode head를 가지고 있는 ListNodeStack 클래스를 구현하세요.
  • void push(int data)를 구현하세요.
  • int pop()을 구현하세요.

과제 5. Queue를 구현하세요.

  • 배열을 사용해서 한번
  • ListNode를 사용해서 한번.

마감일시

2020년 12월 12일 토요일 오후 1시까지.

 


선택문 

Java 언어에서는 특정 데이터의 값에 따라 수행할 구문을 선택하는 문법을 제공합니다. 이와 같은 문법을 일반적으로 선택문이라 부르며 switch case 문이라고도 부릅니다. 출처: https://ehclub.co.kr/1858 [언제나 휴일]

대표적인 선택문을 이해하기 위해서는 먼저 조건문을 이해하면 편리하다. 조건문인 if 문을 반복적으로 써야할 때, 선택문인 switch case 문을 사용하면, 보다 더 간결하게 코드를 짤 수 있기 때문이다. 

 

조건문(if문)

if문은 조건식의 결과에 따라 블록 실행 여부를 결정한다. 다음은 if 문의 실행 흐름이다. 

 

출처: 이것이 자바다

위의 그림에서 볼 수 있는 것처럼 If문에서는 조건식이 true일 경우에만 중괄호 안의 내용이 실행이 되고, false일 경우에는 건너 뛰는 것을 볼 수 있다. 

 

if-else 문

if- else 문이란? if문에서 출발을 한다. if문은 단독으로 사용하기도 하지만 주로 els문도 함께 사용이 된다. else문은 주로 If 문에서 true일 경우 조건식이 실행이 되고, false일 경우 else문을 실행이 된다. 즉, 조건식이 true인지 false인지에 따라 if문 또는 else문이 실행이 된다. 다음은 if- else문의 실행 흐름이다. 

 

출처: 이것이 자바다

if-else if-else문

if문은 여러개가 동시에 작성을 할 수 있는데, 이때 특정 조건을 if 문으로 작성을 한 뒤, 그 조건 내에서 또 다른 if 문을 사용하고 싶을 때 if - else 문을 사용 하면 된다. 이렇게 되면, if 문이 거짓일 경우 if-else 문의 조건이 참이면 실행을 하게 된다. if-else의 개수는 상관없이 사용이 가능하며, if-else문의 가장 끝에는 else가 붙을 수 있다. else의 경우 앞서 나온 모든 if 문이 false일 경우 사용을 할 수 있다. 다음은 여러개의 if-else 문을 사용했을 때, 실행 흐름이다. 

 

출처: 이것이 자바다

 

중첩 if문

if문의 블록내부에서는 또다른 if 문이 존재할 수 있다. 즉 if 문이 중첩되어서 사용되는 경우이다. 이밖에도 if 문안에는 for문, while문, switch문, do-while문이 들어갈 수 있다. if문이 중첩될 경우 다소 헷갈릴 수 있으나, 범위를 잘 기억하면서 따라가면 할 수 있다. 

 

출처: 이것이 자바다

 

 

조건문(switch문)

switch문은 if문과 동일하게 조건을 비교하여 값을 출력을 한다. if문의 경우 true,false만 따지게 되지만 switch문의 특정 값을 가질 때 어떤 특정 값을 출력 할 수 있도록 할 수 있다. 즉, 변수가 어떤 값을 가지냐에 따라 실행문을 선택할 수 있다. 다양한 변수에 대해 대응하기 위해 if문이 길어질 경우 switch 문을 활용하면 보다 더 간결하게 코드를 작성할 수 있다. 다음은 switch 문의 흐름도이다. 

 

출처: 이것이 자바다

위의 그림 실행 흐름을 보면, 각 case가 끝날때 마다 break;가 지정된 것을 볼 수 있다. 이는, 해당 case가 실행이 되면 프로그램의 실행을 중지하는 것으로 break문이 존재하면 더이상 코드가 실행되지 않고 switch 문을 빠져나가게 된다. break가 없다면, case가 몇개가 있던 전부다 실행이 된다. 

 

default문의 경우 변수값이 일치하는 case가 없을 경우 실행이 된다. 이때 default는 break가 없어도 알아서 switch문을 빠져나오게 된다. 

 

switch 문이 case에 상관없이 시행되는 예제 코드는 다음과 같다. 

 

출처: 이것이 자바다

위의 예제 코드의 경우에는 grade 변수가 B인 상황에서 case 'B': 실행문이 없기 때문에 case 'b': 로 자연스럽게 넘어가게 되고, 그로 인해 "B 등급입니다."라는 문구가 출력이 되면서 break;를 만나 종료가 된다. 출력 결과는 다음과 같다. 

switch문 실행 결과

switch문에 유일한 주의점은 () 괄호 안에 들어가는 변수의 자료형 타입이 정해져있다. 이 안에는 byte, char, short, int, 자바 7부터는 String 변수만 가능하다. 

 

반복문

반복문이란, 어떤 작업 (코드들)이 반복적으로 실행되도록 사용되는 것을 의미한다. 이러한 반복문의 종류에는 for, while, do-while문이 존재한다. 세 가지의 반복문은 모두 반복을 할 수 있다는 점에서 동일하나, 아주 약간 다른 방식을 가지고 있다. for문의 경우 반복 횟수를 알고 있을 때 주로 사용을 하게 된다. while문의 경우 조건에 따라 반복할 때 사용하게 된다. 마지막으로 while문과 do - while문의 차이는 while문은 조건식을 먼저 검사하고 실행을 하는가 하면 do while문은 실행을 먼저 하고, 조건식을 검사하는 방식으로 진행이 된다. 이에 대해 더 자세히 설명하겠다. 

 

while문

while문은 조건식이 true일 경우에 계속해서 반복하게 된다. 조건식에는 비교나 논리 연산식이 오며, 이 값이 true일 경우에만 실행이 된다. 즉 false가되면 반복을 멈추게 된다. 다음은 while문의 실행 흐름도이다. 

 

출처: 이것이 자바다

위의 실행흐름 도를 설명하면, 다음과 같다. 먼저 while문을 만나면 ①조건식의 true/false를 판별하게 된다. 이때, 조건식이 true일 경우, ②의실행문이 실행 된다. 그 후 다시 ①조건식의 조건식이 true 인지 false인지 판별을 하게 된다. 만약 조건식이 false가 될 경우 while 문을 빠져 나가고, 더 이상 반복은 일어나지 않는다. 반복은 while문 안에서만 작동을 하며, 그림에는 점선으로 표시되어 있다. 

 

반복문의 경우 다양한 예제를 통해 학습을 진행하면 좋다. 다음은 이것이 자바다 책에 나온 예제 실습이다.

 

1~10까지의 숫자를 출력하는 코드 (while문)

해당 코드를 설명을 하자면, while문의 경우 변수 선언이 이루어져야, 조건식에서 활용이 가능하다. 그래서 number와 count 변수들이 선언과 동시에 초기화가 되었다. 

이때, while 문에 number <=10 이라는 조건이 붙어 있다. 이는 number의 값이 10보다 같거나 작은지 확인하는 거다. 윗줄에는 number가 1이 되는 것을 볼 수 있다. 그러면 while가 true가 되어, 실행문인 number 값이 출력이 된다. 그 후 다음줄에 number++; 연산으로 인해, number 에 +1 이 된 값이 들어가게 된다. 즉 number 에는 2라는 값이 대입이 된다. 

 

그 후 다시 number <= 10 연산을 수행하게 되며, 이는 number 가 10보다 값이 커지게 되면, 끝난다. 그래서 실행결과는 다음과 같이 나오게 된다. 

 

do - while 문 

do - while 문은 while문과 동일한 원리이다. 하지만, 문법을 작성하는 방식이 다르고 실행하는 방법이 다를 뿐이다. 

do - while문은 while문과 다르게 일단 먼저 do!!! it!!! 실행을 한다. 

 

JUST DO IT!!!!!!!!!!!!!!!!!!

실행을 한 뒤에는 while 문 뒤에 쓰여있는 조건문을 확인하고 true값이 나올경우에 다시 do 문으로 올라가서 반복을 실행하게 된다. 다음은 do - while문의 흐름도이다. 

 

출처: 이것이 자바다

위의 그림처럼 일단 최초 do 문을 만나게 된다면 실행문부터 만나게 된다 .그 후 , while 조건식이 true인지 false인지 확인을 한다. 만약에 조건식이 true일 경우 다시 do로 돌아가게 되고, 실행문이 실행된다. 다시 그럼 while 조건문을 확인하게 되며, 반복이 일어난다. 이때, 만약 while뒤의 조건식이 false가 될 경우 do while 문이 종료가 된다. 다음은 위의 while문과 똑같은 예시 코드를 do while문으로 변경해보았다. 

 

1~10까지의 숫자를 출력하는 코드 (do while문)

위의 코드에 따르면 먼저, do 문이 실행이 되면서 그 안쪽에 있는 실행문 System.out.println(number);로 인해, number의 값이 출력이 된다. 그 후 number에 +1을 더한 값 2가 대입이된다. 실행문이 종료가 되면, while문의 조건식을 확인한다. count 는 10, number는 2인 상태이기 때문에 true가 되어, 다시 do 문 안으로 들어가게 된다. 그 후 계속 반복이 되다가 while문 뒤의 조건식이 false가 되면 종료가 된다. 

for문

for문은 반복문 중에서도 가장 간략하게 코드를 작성할 수 있는 반복문이다. 그 이유는 초기화식, 조건식, 증감식을 한번에 작성을 하기 때문인데, 먼저 for문의 실행 흐름부터 살펴보겠다. 

 

출처: 이것이 자바다

for문은 위의 그림처럼, 초기화식, 조건식, 증감식이 모두 한 문장으로 구성되어 있다. 즉 한눈에 구조 파악이 쉬운 장점이 있다. 조건이 true면 실행이 되고, false가 되는 순간 for문은 종료가 되며 반복이 될때 마다 변화하는 값은 증감식에 의해 결정된다. 다음은 for문을 활용하여, 1~10까지의 숫자를 출력하는 예제 코드를 살펴보겠다. 

 

1~10까지의 숫자를 출력하는 코드 (do while문)

해당 코드의 작동원리는 while문과 동일하다. 대신 코드가 더 간결해졌다는 것을 알 수 있다. 

break문

break문은 for문, while문, do-while문에서 실행을 중지하고 싶은 지점이 있을 때 사용한다. 이는 switch문에서 먼저 사용되는 것을 확인할 수 있었다. 예제 코드와 함께 보면 break문을 이해하기가 수월하다. 

 

ex) while문을 이용하여, 주사위를 6이 나올때까지 출력

while문을 이용하여, 주사위를 6이 나올때까지 출력

while문안에서 계속해서 랜덤한 숫자가 출력되는데, 이때 6이 출력될 경우 if문이 true가 되면서, break문을 만나고 종료가 되는 것을 알 수 있다. 매번 실행할 때마다 다른 결과가 나오지만 다음은 실행 결과 예이다. 

continue문

continue문은 break문과 동일하게 for, while, do while문에서 사용이 가능하다. continue는 주로 반복문 내에서 반복을 멈추고 다시 조건식으로 돌아가고 싶을 때 사용을 할 수 있다. 즉, continue를 만나는 순간 즉시 조건식으로 가기 때문에 반복문 내에 있는 그 이하 코드들은 실행이 되지 않으니, 참고해야 한다. 

 

continue를 이해하기 위해서는 예제 코드를 살펴보는게 더 편리하다. 

 

ex) 1~10 사이에서 짝수만을 출력하는 코드

 

1~10 사이에서 짝수만을 출력하는 코드

num을 2로 나눴을 때, 나머지가 1이 남을 경우는 2의 배수가 아니므로 홀수라는 소리이다. 그래서, if 문에서 홀수가 true가 될경우에는 continue를 만나서 다시 조건식으로 돌아가게 된다. 

 

 

출처

이것이 자바다 

'JAVA > 온라인 스터디' 카테고리의 다른 글

6주차 과제: 상속 #6  (0) 2020.12.21
[5주차] 클래스  (0) 2020.12.14
[3주차] 연산자  (0) 2020.11.27
2주차 라이브 방송 정리  (0) 2020.11.22
2주차 자바 데이터 타입, 변수 그리고 배열  (0) 2020.11.21