세션 일정 : 26년 3월 18일 (목)

Video Conferencing, Web Conferencing, Webinars, Screen Sharing


<aside> 💡

코드 작성은 사실 글쓰기랑 비슷합니다!

글을 쓸 때 먼저 목차를 잡듯, 코드를 짤 때도 먼저 생각을 구조화하거나 흐름을 시각화하면 훨씬 빠르게 구현할 수 있습니다!

혹시 문제를 코드로 바로 구현하려고 했을 때, 중간에 막혀본 경험이 있지 않으신가요?

오늘의 목표는 “코드 짜기 전 생각을 정리하는 법”을 익히는 것입니다!

</aside>

<aside>

Flowchart는 왜 중요할까?

라면 끓이는 방법을 누군가에게 설명해봅시다.

과연 모두 같은 순서로 설명할까요?

<aside>

2.png

Flowchart가 중요한 이유

  1. 생각을 구조화한다.

    문제를 단계별로 쪼개어 어떤 절차가 필요한지 명확하게 드러난다.

  2. 놓친 조건을 빠르게 발견할 수 있다.

    자연어로는 보이지 않던 예외 상황이 Flowchart에서는 명확하게 보인다.

  3. 코드 작성 전 논리 오류를 미리 잡을 수 있다.

    설계 단계에서 흐름이 완성되면, 코드는 그 흐름을 옮겨 쓰는 과정이 된다.

  4. 팀원과의 커뮤니케이션이 쉬워진다.

    그림으로 표현된 흐름은 누구나 같은 방식으로 이해할 수 있다.

</aside>

<aside>

숫자를 입력받고 그 숫자가 10이상이면 ‘통과’, 아니면 ‘재입력’ 출력

import java.util.Scanner;

public class PassCheck {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.print("숫자를 입력하세요: ");
        int num = sc.nextInt();

        if (num >= 10) {
            System.out.println("통과");
        } else {
            System.out.println("재입력");
        }

        sc.close();
    }
}

사용자가 숫자를 하나 입력한다.

겉으로 보기엔 전혀 문제 없어 보입니다. 그런데

  1. 만약 사용자가 abc 같은 문자를 입력하면 어떻게 될까요?
  2. 그럼 9.5처럼 소수를 입력하면요?
  3. 문제 설명에 정수만 입력하라고 되어 있었나요, 아니면 ‘숫자’라고만 했나요?
  4. 9.5는 통과인가요? 재입력인가요? 반올림인가요?

물론 아래처럼 변론을 할 수도 있겠죠?

요구사항이 애매하기 때문에 내 마음대로 해석하고 코드로 구현할 수 밖에 없었다. 그래서 예외 상황, 입력 타입, 반복 여부가 빠져 있다.

하지만 이런 변론은 결국 “나는 수동적인 개발자입니다. 자기주도적 개발은 불가능해요.” 라고 말하는 것과 다를게 없습니다.

요구사항 다시 정리해보기

  1. 사용자는 정수만 입력한다고 가정한다.
  2. 정수지만 10 미만이면 “재입력” 출력 후 다시 입력받는다.
  3. 사용자가 10 이상 정수를 입력하면 "통과" 출력 후 프로그램 종료한다.
  4. 정수가 아닌 값이 들어오면 "정수를 입력해주세요"를 출력하고 다시 입력받는다.

Flowchart 그려보기

Flowchart (1).jpg

이렇게 Flowchart를 그림으로써 여러분은 코드를 작성하기도 전에 조건문과 반복문을 설계할 수 있습니다.

</aside>

</aside>

<aside>

Flowchart 핵심 도형 익히기

Flowchart 도구 Miro

기본 심볼

타원형(Terminal) 시작과 종료
직사각형(Process) 처리 과정
마름모(Decision) 조건 분기점
평행사변형(Input/Output) 입출력
화살표(Arrow) 흐름의 방향

Flowchart 작성 원칙

<aside>

문제 이해 → 논리 구성 (생각 구조화) → 흐름 설계 → Flowchart

문제

<aside>

사용자가 0을 입력할 때까지 숫자를 계속 더하고, 최종 합을 출력하라.

</aside>

입력/출력 정리

<aside>

뭘 받고, 뭘 내보내고, 뭘 계속 들고 있을까?

  1. 입력
  2. 출력
  3. 상태 (계속 들고 있어야 하는 값) </aside>

조건 정리

<aside>

</aside>

흐름 설계

<aside>

</aside>

논리 구성 및 흐름 설계

<aside>

</aside>

Flowchart 구현

Live 실습

</aside>

<aside>

</aside>

<aside>

</aside>