오늘은 총 2문제 풀었다.
첫번째 문제는
문제 설명:
사용자로부터 정수를 입력받아 해당 단의 구구단을 출력하는 프로그램을 설계하세요.
학습 포인트:
입력/출력 정리
1) 입력 :
정수(1개) - 예: 2
2) 출력 :
입력받은 수의 구구단 출력
3) 상태 (계속 들고 있어야 하는 값) :
조건 정리
1) 종료 조건 (끝나는 시점):
i가 9를 초과했을 때 반복을 종료
2) 분기 조건 (갈라지는 기준):
없음
3) 예외 / 에러 조건 (정상 범위):
없음(정수 입력 보장)
흐름 설계
1) 시작할 때 한 번만:
2) 반복(흐름):
3) 종료할 때:

두번째 문제는
문제 설명:
사용자로부터 양의 정수 n을 입력받아 n!(팩토리얼)을 계산하는 프로그램을 설계하세요. n! = n (n-1) (n-2) ... 1
학습 포인트:
입력/출력 정리
1) 입력 :
양의 정수 1개 (예: 5)
2) 출력 :
입력받은 정수 n의 팩토리얼 값 출력
3) 상태 (계속 들고 있어야 하는 값) :
조건 정리
1) 종료 조건 (끝나는 시점):
i가 n보다 커졌을 때 반복 종료
2) 분기 조건 (갈라지는 기준):
없음 (입력값에 따라 실행 흐름이 달라지지 않기 때문에)
3) 예외 / 에러 조건 (정상 범위):
없음 - 양의 정수가 입력된다고 가정
흐름 설계
1) 시작할 때 한 번만:
사용자로부터 양의 정수 n 입력 받음
i = 1로 초기화
result = 1로 초기화
1로 초기화 하는 이유:
- result가 0이면 0 곱하기 n은 0 -> 계산 망함.
- 그리고 result가 n이면 중복 곱셈이 발생함
- i는 팩토리얼을 만들기 위한 변수임
result = 1 x 1 x 2 x 3 x ... x n 이렇게 계산하기 위해서 i = 1로 초기화하는 것
2) 반복(흐름):
1. 반복 조건 i <= n
2. result = result x i로 값을 누적해서 곱한다
3. i = i + 1로 값 증가시킴
4. 반복 조건 다시 검사
2-1) 플로우차트 전체 흐름
1. 프로그램 시작
2. n 입력 받기
3. i = 1, result = 1 초기화
4. i <= n ? 조건 검사
3) 종료할 때:

문제 풀이 과정에서 프로그램이 한 번의 입력만 처리하고 종료되는 구조인지,
아니면 특정 종료 조건을 입력할 때까지 사용자 입력을 반복해서 처리하는 구조인지를
초기에 명확히 구분하지 못해 설계 단계에서 혼동이 있었다.
이를 보완하기 위해 개인 학습 시간에 특정 종료 조건을 입력해야 프로그램이 종료되고,
그 전까지는 사용자의 입력을 반복해서 받아
같은 단(예: 2단)을 다시 입력하면 다시 출력되도록 하는 구조를
플로우차트로 추가 설계해보며,
반복 조건과 종료 조건을 명확히 구분하는 연습을 진행할 예정이다.