반응형
알고리즘 디자인 설계란?
- '무엇을 어떻게 개발해?' 라는 의문에 답을 하는 작업
- 제일 먼저 무엇을 원하고 필요한지를 잘 파악해야함. 그 후 그것들을 잘 정리하여 기능들로 추려낼 수 있음
- 이 작업이 잘 되야지 나중에 필요하지 않은 기능을 개발하는 불상사를 예방할 수 있음
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 회원가입 |
반응형
'개념공부' 카테고리의 다른 글
Forward 방식과 Redirect 방식의 차이 (0) | 2022.06.30 |
---|---|
[기초 코딩용어 해설] 01. 컴퓨터와 인터넷 (0) | 2021.12.03 |
[BigInteger] 무한대로 큰 수를 계산해야 한다면? BigInteger (0) | 2021.11.05 |
[Deque] queue(큐)와 stack(스택)을 둘 다 사용할 수 있는 deque(덱) (0) | 2021.11.04 |
[Junit] 단정함수 및 기능 (0) | 2021.10.22 |
댓글