본문 바로가기
개념공부

알고리즘 디자인 설계 : Flowchart와 Psuedo-code

by 29살아저씨 2021. 12. 27.
반응형

알고리즘 디자인 설계란?

  • '무엇을 어떻게 개발해?' 라는 의문에 답을 하는 작업
  • 제일 먼저 무엇을 원하고 필요한지를 잘 파악해야함. 그 후 그것들을 잘 정리하여 기능들로 추려낼 수 있음
  • 이 작업이 잘 되야지 나중에 필요하지 않은 기능을 개발하는 불상사를 예방할 수 있음

Flowchart란?

  • 일의 진행 순서도를 이해하기 쉽게 그림으로 나타낸 것

Pesudo-code란?

  • 개념적 또는 알고리즘 적으로 구조적인 규칙을 이용해서 작성하여 사람이 읽기 위한 것.
  • 개발자가 아닌 지식이 전혀 없는 일반적인 사람이 봐도 이해 할 수 있도록 가독성 좋게 작성해야함

Pesudo-code Reference

1. Variables

  • letter grade <- A
    • 변수 grade에 값 A를 저장하겠다.
  • grade <- 87
    • 변수 grade에 값 87을 저장하겠다.
  • grade[3] <- 100
    • grade배열 3번째 요소에 값 100을 저장하겠다.
  • grade with bonus <- grade + 10
    • 변수 grade with bonus에 grade값 + 10 한 값을 저장하겠다.

2. Simple Actions

  • READ the next grade
  • PRINT 'Hello!'
  • PRINT 새로운 문자열의 평균
  • CREATE array grades [20] [30]
  • IF ... ENDIF
  • IF ... THEN ... ENDIF
  • IF ... THEN ... ELSE ... ENDIF
  • CASE ... ENDCASE

3. IF ... THEN ... ELSE ... ENDIF

  • IF (상태) THENELSE ENDIF
  • ELSE와 statement block 2 는 선택사항이다. IF가 실행되면 ELSE와 statement block 2는 실행되지 않는다.
  • statement block 2
  • statement block 1

4. CASE Statement

  • CASE 구문은 상호 배타적인 조건을 기반으로 한다. CASE, OF, OTHERS, ENDCASE 4가지 키워드를 사용한다.
  • CASE 설명 OF 상태 2 : statement block 2 상태 n : statement block n default(기본 고정 값) statement block
  • ENDCASE (CASE 종료)
  • OTHERS:
  • ...
  • 상태 1 : statement block 1
  • ExampleExample
  • CASE grade OF A : points ← 4 B : points ← 3 C : points ← 2 D : points ← 1 F : points ← 0 ENDCASE
  • CASE Title OF Mr : PRINT "Mister" Mrs : PRINT "Missus" Miss : PRINT "Miss" Ms : PRINT "Mizz" Dr : PRINT "Doctor" ENDCASE

5. Loops (반복문)

  • FOR ... ENDFOR
  • FOR EACH
  • WHILE ... ENDWHILE
  • DO ... WHILE ... ENDDO

5-1. WHILE Loop

  • WHILE 구문은 조건에 맞으면 반복을 한다. WHILE로 시작해서 ENDWHILE로 종료를 표시한다
  • WHILE (조건 = true)ENDWHILE
  • statement block
  • 이 반복문은 조건이 참일때만 statement block 구문이 수행된다.
  • 각 반복이 끝날때마다 조건이 재 평가되고, 조건이 참이면 무한 반복된다.
  • ExampleExample
  • WHILE (employee.type != manager AND personCount < numEmployees) personCount ← personCount + 1 CALL employeeList.getPerson with personCount RETURNING employee ENDWHILE
  • WHILE (Population < Limit) Population ← Population + Births - Deaths ENDWHILE

5-2. FOR Statement

  • FOR 반복문은 어떤 조건의 시작과 끝을 지정하여 사용하기 좋은 반복문이다.
  • 예를들어 1~100까지 PRINT를 한다고 하면
  •  
  • FOR i ← 1 to 100 print i END FOR
  • Example
  • FOR i ← 1 to 100 BY 2 print i // Only print out the odd numbers END FOR FOR i ← 100 to 0 BY 2 print i // Only print the even numbers from 100 down to 0 END FOR

6. BREAK

  • Loop문을 수행할 때 특정 조건이 발생하는 경우 Loop를 중지하고 다음 코드로 이동하려는 경우에 사용
  •  
  • counter ← 0 WHILE (counter < 10) if (counter == 7) break; print counter END WHILE print ("Outside of loop")

7. CONTINUE

  • BREAK와 비슷하지만 Loop문을 수행할 때 Loop를 중지하는 대신 현재 반복문을 건너뛰고 다음 반복으로 이동하고자 할 때 사용
  • counter ← 0 
    WHILE (counter < 10)
        if (counter == 7) continue;    
        print counter
    END WHILE
    print ("Outside of loop")

 

회원가입 알고리즘 설계 구현

1. 알고리즘 디자인 설계

0. 회원가입 기능이 필요하다
1. 외부로부터 필요한 데이터 값 (이름, 아이디, 비밀번호, 비밀번호 확인, 이메일) 5개를 입력
2. (1)데이터는 검증조건이 필요하다.
 2-1. 아이디는 자리수가 6자리 이상 ~ 16자리 이하여야 한다.
 2-2. 아이디는 이미 등록된 사용자의 아이디와 중복되면 안된다.
 2-2-1. 회원 테이블에서 실시간으로 입력된 아이디를 비교하여 중복체크를 한다.
 2-2-2. 중복되는 아이디가 있으면 에러 (E102)를 리턴한다.
 2-3. 비밀번호는 영문, 숫자, 특수문자를 각각 1개 이상씩 포함해야 한다.
 2-4. 비밀번호 확인은 이전에 입력된 비밀번호와 비교하여 일치하는지 확인한다.
 2-4-1. 비밀번호가 일치하지 않으면 에러 (E103)을 리턴한다.
 2-5. 이메일은 @--.com, net, 등등.. 유효한 이메일을 입력해야 한다.
3. 유효한 이메일 입력 후 인증번호 발송 버튼을 클릭하여 (2-5)에 입력된 이메일로 전송된 인증번호를 입력하고 일치하는지 확인 해야한다.
 3-1. 이메일인증이 일치하지 않으면 에러 (E104)를 리턴한다. 
4. (2)중 하나라도 해당하지 않으면 (E101)을 리턴한다.
5. 비밀번호 암호화 및 회원정보 JWT 토큰을 생성한다.
6. 회원가입 성공. 회원 테이블에 입력받은 데이터 정보를 저장한다.
7. 성공 메시지 (M100)을 리턴한다.
8. 끝

2. Flowchart 작성

 

3. Pseudo-code 작성

function 문자열의 특수문자 포함 여부를 검사한다
input 문자열
output 참 또는 거짓

function 문자열의 숫자 포함 여부를 알려준다.
input 문자열
output 참 또는 거짓

function 문자열의 영문자 포함 여부를 알려준다
input 문자열
output 참 또는 거짓

start 로그인
set 외부에서 받아온 데이터 값 이름
set 외부에서 받아온 데이터 값 아이디
set 외부에서 받아온 데이터 값 비밀번호
set 외부에서 받아온 데이터 값 비밀번호확인
set 외부에서 받아온 데이터 값 이메일

if(아이디는 특수문자가 포함 안됨)
 and 아이디,비밀번호는 6자리 이상 16자릿수 이하
 if(입력된 아이디 != 이미 등록된 사용자 아이디)
 else
 return 에러메시지 E102 
 and 비밀번호는 영문, 숫자, 특수문자를 각각 1개 이상씩 포함해야함
 if(입력된 비밀번호 = 입력된 비밀번호 확인)
 else
 return 에러메시지 E103 
 if(입력된 이메일 인증번호 = 전송된 이메일 인증번호)
 else
 return 에러메시지 E104 
else 
 return 에러메시지 E101
비밀번호 암호화 및 회원정보 JWT 토큰 생성 
set 회원 테이블에 입력 받은 데이터 저장
return 성공 메시지 M100
end 회원가입

 

 

반응형

댓글