[JAVA.06] 조건문(conditional)과 반복문(iteration) 그리고 프로그래밍 방법 ⭐

Kama_Code·2023년 6월 18일
1

JAVA

목록 보기
11/20
post-thumbnail
post-custom-banner
  • 이번 6강은 바로 프로그래밍의 꽃⭐⭐⭐
    다 중요하지만 그 중요함 중에서도 더 중요한 제어문이다.

<Step.1> if 문 <조건>

  • 참(true)라면 실행문장을 실행하고 거짓(false)라면 실행하지 않는다.
  • if문에서는 비교연산자와 논리연산자를 통한 조건식을 사용한다.
  • 산술연산자를 통한 산술식은 사용할 수 없다.
    ㄴ⭐결과값이 boolean형으로 true 혹은 false를 반환해야 한다.
  • 실행문장이 1개일 경우 {} 괄호를 생략할 수 있다.
  • 조건에 if(true)를 하면 무조건 실행하는 조건문도 만들 수 있다.
  • ※ 주의: if(조건)에는 조건이 시작되는 부분이기에
    ㄴ;(세미콜론)을 붙이지 않는다.
    ㄴ조건문 다음 실행문장 마지막에 ;(세미콜론)이 들어간다.

<Step.2> if ~ else 문 <조건>

  • 참(true)라면 실행문장1을 실행하고 거짓(false)라면 실행문장2를 실행한다.

<Step.3> if ~ else 중첩문 <조건>

  • 두가지 이상의 조건을 기술해야 할때 사용한다.
    조건을 끝내는 마지막은 else로 기술하며
    else는 마지막이기에 조건문을 기술할 수 없다.

<Step.4> 조건 연산자(삼항 연산자) <조건>

if ~ else 문을 대체하는 용도로 사용된다.
조건문, true 혹은 false 일때 실행할 문장까지 항이 3개로 구성되어 있다.

<Step.5> switch 문 <조건>

  • if문과 같은 조건식이지만 다른 점은 산술식만 사용할 수 있다.
  • 논리연산자를 이용한 조건식은 사용할 수 없다.
  • case 와 default는 실행위치를 표시하는 라벨(Label)로 사용된다.

TIP: 자동완성 > 컨트롤+스페이스바

  • case값에 break;가 있다면 그 부분만 실행된다.
  • case값에 break;가 없다면 차례대로 모두 실행된다.

<Step.6> while 문 <무한반복>

  • 조건을 체크한 후 true인 경우에만 실행문이 실행된다.
  • 조건이 false라면 한번도 실행되지 않을수도 있다.
  • 반복의 횟수가 명확하지 않은 경우 주로 사용된다. (ex : 중복되지 않는 난수 생성)

<Step.7> Do-while 문 <무한반복>

  • 조건에 상관없이 무조건 한번은 실행(Do)된 후 조건을 검사한다.
  • 그 외에는 while문과 동일하다.
  • 조건이 없이 Do(실행문장)을 반복해서 실행하고 [false]여야 빠져나갈 수 있다.

<Step.8> for 문 <한정반복>

  • 반복문 중 가장 많이 사용하는 구문이다.
  • 초기값, 조건식, 증감식을 한줄에 작성하므로 반복의 횟수를 명시적으로 알 수 있다.
  • 반복의 횟수가 명확할때 주로 사용한다. (ex : 구구단, 수열 등)
  • for문의 변수 i는 빠져나갈때 완전히 없어지므로(지역변수에 해당)
    ㄴ다음에 또 사용이 가능하다.
  • ★TIP : 지역변수 = 일부 코드에서만 작동 / 전체변수 = 전체 코드에서 작동
  • 이중 for문으로 사용할시 (0,0) 행렬을 생각하여 행이 기준이 되며,
    ㄴ그 다음에 오는 for문은 열이 된다.

<Step.9> break / continue

  • break
    ㄴ반복문을 탈출한다.
    ㄴ단, 중첩된 반복문이라면 가장 가까운 반복문 하나만 탈출한다.
  • continue
    ㄴ반복문의 처음으로 이동하여 조건을 다시 실행한다.
    ㄴcontinue 하위의 문장의 실행하지 않고 반복하기 위한 용도로 사용된다.
  • ★★★ 반복문 내에서 break / continue 를 사용할때는
    ㄴ반드시 조건문과 함께 기술해야 한다.

<Step.10> 라벨을 이용한 중첩된 반복문의 일괄 중지

  • 중첩된 반복문 가장 안쪽에서 특정 조건을 충족하면
    모든 반복문까지 중지하고 그다음 코드를 실행하고 싶을 경우 사용한다

<Step.11> 프로그래밍 방법★★★

  1. 시작이 반이다 라고 한다. 프로그래밍 역시 설계가 매우 중요하다.
  2. 프로그램을 만들려면 가장 먼저 프로그램의 근본 및 원리(특징)이(가)
    무엇인지 설계를 하라!
    그 다음 담을 수 있는 그릇(객체 생성)을 만들어 준 이후
    "입력(기억 및 저장)"과 "출력(결과)"을(를) 생각하라.
  3. 예를 들어, 구구단 프로그램 중 2단을 만든다면 2를 입력값으로 주었을 때
    어떻게 출력되어야 할지 생각해 보아야 한다. 그래도 그림이 그려지지 않는다면
    다음과 같이 해보아라!
  4. 메서드 이름은? twodan으로 짓자!
    입력받는 값은? 2
    출력하는 값은? 2단(2, 4, 6, 8, …, 18)
    결과는 어떤 형태로 저장하지? 연속된 자료형이니까 배열! 이 좋겠다

<Step.12> 발전을 위한 문제풀이 (kama_code 출제)

  1. 입력을 받아서 월요일~일요일까지 주말과 주중을 판단하는 프로그램을 만드시오
  2. 정수를 입력받아서 팩토리얼(!)을 계산하는 프로그램을 만드시오
  3. 정수를 입력받아 1부터의 합을 출력하는 프로그램을 만드시오
  4. 정수를 계속 입력받아서 0을 입력하면 그 동안의 입력한 숫자를
    모두 더하는 프로그램을 만드시오
  5. 입력한 숫자의 구구단을 출력하는 프로그램을 만드시오
  6. 문자 하나를 입력받아 숫자인지 숫자가 아닌지 판단하는 프로그램을 만드시오
  7. 로또번호를 생성하는 프로그램을 만드시오 ( 정렬 포함 )
  8. '1+1=' 이라는 문제를 내고 2라고 맞출때까지 반복하는 프로그램을 만드시오
  9. 두 정수를 입력받아 큰 수에서 작은 수로 뺄셈을 출력하는 프로그램을 만드시오
    • 모양을 찍어 다이아몬드 모양을 출력하는 프로그램을 만드시오

★ 정답 및 해설 ☆

  1. 월 화 수 목 금 토 일을 하나만 입력하면 아래 사진처럼 주중인지 주말인지 알려준다.
  1. 팩토리얼의 특성은 자기 자신을 1씩 빼면서 반복하여 곱해가는 특성이 있다.
    EX) 5! = 5x4x3x2x1
    ㄴwhile을 반복조건에서 false면 빠져나가므로 [이거면 안되는 조건]을 넣어준다.
    ㄴ그러므로, 1씩 빼가되 0이 아닐 때까지 진행하는 것이다.
    ㄴlong으로 선언해주는 이유는 20!(팩토리얼)일 때 int 범위를 넘어가서
    ㄴ마이너스(-)가 출력된다. 범위를 넓게 받기 위해서 long을 선언해준다.
  1. 해당 프로그램을 만들기 위해서 어떤 재료들이 필요한지 아는 것이 중요하다.
    연산을 하려면 최소 2개의 그릇이 필요하여 누적할 sum와
    1씩 더하면서 sum에 집어넣을 su라는 변수를 만든다.
    그리고 on라는 입력값보다 커지기전까지 반복하는 것이다.
  1. 중요한 핵심은 필요한 그릇을 잘 만들어 주는 것이다.
    입력값, 세는값, 누적값을 만들어주어 실시간으로 계속 계산하고
    0을 입력했을때 총 값을 출력할 수 있도록 한다.
  1. 이중 for문이라면 첫 for문은 행(가로를 뜻하며) 두번째 for문은 열(세로를 뜻함)
    이것을 알아야 한다. 2차원이기 때문이다.
    아래 사진은 7을 입력했기에 7을 연속으로 열을 출력하는 원리이다.
    ㄴ (7,1) (7,2) (7,3) (7,4) ...
  1. 간단한 원리이다. c가 0~9 사이의 문자면 "숫자" 입니다.
    아니라면 "숫자가 아닙니다" 가 출력되는 프로그램이다.
  1. 실제 공정한 로또 프로그램 하나를 만들었다.
    대신 인덱스 0부터 시작하니까 5번째까지 첫 for을 돌린다.
    중복제거는 첫행의 숫자를 열이 탐색하여 똑같다면 그 숫자를 빼는 식으로 구현을 한 것이다.
    그리고 정렬은 선택정렬을 사용했다.
  1. 가장 먼저 그릇을 만들어주어야 하는 것을 잊지 말아야 한다.
    입력값을 받아서 해당 답이 아닐 경우 다시 돌아가서 반복되는 프로그램이다.
  1. 조건문을 통해 큰 수가 무엇인지 먼저 가려내어 출력문에서 출력 형식을 만드는 것이
    핵심이다.
  1. 심화 문제이다.
    원리는 공백을 먼저 찍고, 그 나머지는 별로 한방에 채운다.(총 4파트로 나눔)
    왜 이렇게 되는지 원리를 모르겠다면 종이(A4)용지에 공백이 되어야 하는 곳은
    (몇,몇)이며 별로 채워져야 하는 부분은 (몇,몇)인지 모두 적는다.
    그리고 첫 for문은 행, 두번째 for문은 열이라는 것을 기억하여 규칙성을 찾아 만들면
    된다. 아무리 어려운 것도 모두 기초에서 꼬는 것이기 때문에
    이렇게만 한다면 어떠한 무늬도 만들 수가 있다.

제어문 반복문은 노가다를 줄여주고 프로그램을 프로그램답게 만들어주기에
굉장히 중요한 파트이다. 프로그래밍의 꽃이라고도 볼 수 있다.
반드시 내 것이 되게 만들고 넘어가야 한다. 그리고
앞으로도 계속 꿀 떨어지는 포스팅을 많이 기대해주길 바란다.
^^

profile
[Java SQL HTML CSS JS Studying] 발전을 꿈꾸며 이상을 실현합니다
post-custom-banner

0개의 댓글