[알고리즘][자료구조] 의사코드(Psedo-code)

Uno·2021년 7월 12일
0

Q. 알고리즘 공부를 하거나 컴퓨터 과학을 공부하다보면, 의사코드로 작성해보고 구현하라는 말이 있던데, 의사코드가 무엇인가요?

A. 의사코드는 영어로 "pseudo-code" 한문을 풀이하면, 비교할 의 / 비슷할 사 입니다.

뜻을 풀이해보면, 비교적 비슷한 코드이다. 혹은 가짜 코드이다 정도로 해석이 되겠죠.

통용되는 뜻은 "사람이 사용하는 언어로 진짜 코드는 아니지만, 코드처럼 표현한 코드이다." 정도로 해석됩니다.

Q. 바로 코드를 짜면 안되나요? 뭐하러 의사코드를 쓰나요?

A. 혹시 프로그래밍 공부하면서 막막한 순간이 언제인가요?

Q. 모르는 개념이 쏟아져 나올 때도 있었던 것 같고.. 처음 시작할때? 어떻게 시작해야할지 모르겠더라구요.

A. 모르는 개념이 나오면 찾아보겠죠?. 사실 개념을 찾는 순간은 이미 어느정도 시작을 하신 상태겠네요.

처음 코딩을 시작할 때, 무엇부터 시작할지 모르시는 순간에 의사코드를 통해서 거시적인 그림을 그리시고 진행하시면 도움이 됩니다.

Q. 무엇이 어떻게 도움되요? 그냥 코드를 빨리 짜야죠. 시간아깝게.

A. 만약 코드를 바로 짜도 오류없이 어떤 상황에 대한 예외처리도 모두 가능하시면, 그럴 수 있다고 봅니다.

하지만, 처음 시작하거나 익숙하지 않은 단계 혹은 아주 복잡하고 중요한 로직을 할 때는 코드의 생산성보다 정확성이 중요할 수 있습니다.

그리고 사실, 여러분들이 의사코드를 손으로 작성하지 않으셔도, 이미 머리속으로는 그 절차를 진행하고 계실 겁니다.

의사코드에 대한 내용을 정리해볼게요.

의사코드


  • 의사코드는 실제 프로그래밍을 하기 전에 자연어로 작성한 코드입니다.
  • 프로그래밍을 위한 거시적인 그림을 그리는데 도움이 되는 도구입니다.
  • 손으로 작성하지 않더라도 이미 머리속으로 진행되고 있는 절차입니다.
  • 사용해야하는 이유는 코드의 정확성을 향상시켜주는 도구이기 떄문입니다.

(당연히 반드시 사용해야하는 의무는 전혀 없습니다. 권장할 뿐이죠.)

Q. 오케이. 작성하는 이유는 정확성을 올리는데 좋은 도구라는 건 납득하겠습닏나. 그러면 어떻게 사용하나요?

A. 앞으로 의사코드를 작성하는 방법을 설명드릴게요. 작성하는 방법은 "자기마음" 입니다. 편하실대로 작성하시면 됩니다. 다만, 다른 사람들이 일반적으로 사용하시는 방식을 보시고 자신의 스타일에 맞게 커스터마이징 하시면 됩니다.

의사코드 작성방법


(여기서부터는 개인적인 의견이니 참고하실분만 참고하시면 됩니다.)

저는 의사코드를 작성할 때, 가능하면 3~4단계로 최초에 작성합니다.

그리고 각 단계를 세분화하여 다시 작성하는 편이죠.

예시를 들어보자면

ex) 이번달 음식물 쓰레기 배출량 계산하기

  1. 최초

    <이번달 음식물 쓰레기 배출량 계산하기>
    
    1. 음식물 쓰레기 정보조회 사이트를 켠다.
    2. 음식물 쓰레기 정보조회를 위한 데이터를 입력한다.
    3. 음식물 쓰레기 정보조회 결과를 UI에 나타낸다.
  2. 1번 구체화

    1. 음식물 쓰레기 정보조회 사이트를 켠다.
    	1.1 미리 저장된 사이트 링크가 할당된 변수를 호출한다.
      1.2 해당 링크로 이동한다.
      1.3 정상적으로 연결되었을 경우, 로직을 추가할 수 있도록 completion 을 파라미터에 생성한다.
    		  연결에 실패한 경우, UIAlert을 이용하여 사용자에게 연결 실패 반응을 보여준다.
    
    2. 음식물 쓰레기 정보조회를 위한 데이터를 입력한다.
    3. 음식물 쓰레기 정보조회 결과를 UI에 나타낸다.
  3. 2~3번 구체화

    1. 음식물 쓰레기 정보조회 사이트를 켠다.
    	1.1 미리 저장된 사이트 링크가 할당된 변수를 호출한다.
      1.2 해당 링크로 이동한다.
      1.3 정상적으로 연결되었을 경우, 로직을 추가할 수 있도록 completion 을 파라미터에 생성한다.
    		  연결에 실패한 경우, UIAlert을 이용하여 사용자에게 연결 실패 반응을 보여준다.
    
    2. 음식물 쓰레기 정보조회를 위한 데이터를 입력한다.
    	2.1 사용자에게 UITextField와 pickerController를 활용하여 데이터를 입력받는다.
    	2.2 각 데이터를 completion이 호출 될 때, 파라미터로 전달한다.
    	2.3 정상적으로 데이터를 가져왔을 경우 호출될 API 메소드를 구현한다.
    			실패했을 경우, 이에 대한 반응을 사용자에게 보여준다.
    
    3. 음식물 쓰레기 정보조회 결과를 UI에 나타낸다.
    	3.1 "2.3"에서 구현한 API 메소드에서 UI를 업데이트 한다.

이런식으로 작성을 합니다.

이곳에 추가할 부분이 있다면, 더 상세화하기도 하지만, 이거보다 더욱 댑스가 깊어지면 의사코드의 목적성이 흔들릴 수 있다고 판단되어 이정도만 작성합니다.

의사코드에 대해서 다른 분들 작성법 중 개인적으로 본받고 싶으신 분이 있어서 링크 남깁니다.

https://unluckyjung.github.io/etc/2020/03/14/Pseudo_code/

결론


의사코드는 생각을 정리하는 도구입니다.

마치 복주환작가분이 쓰신 "생각정리스킬" 처럼, 프로그래밍에 있는 생각정리스킬입니다.

그러기에 의사코드에 대해서 맞다 틀리다를 논하기보다는 목적만 생각하고 사용하는게 맞지 않을까 합니다.

의사코드 적다가 머리속에서 논리적으로 정리되면, 그냥 코드를 바로 작성하면되죠. 결국 의사코드의 목적은 생각정리니까요!

딴소리


제가 의사코드를 주제로 글을 쓰게된 건,

제한된 시간에 로직을 작성하는 경험을 최근에 해봤습니다.

시간이 제한되어 있고, 제 무언가를 보여주려고 하다보니 머리가 굳더라구요. 나와서 생각해보니까 저문제는 그냥 스택으로 풀면 되는 거였네, 아 이거 저번에 풀었던건데.. 이런 생각들이 지나가더라구요.

압박받는 순간에 도움받을 도구를 찾다가 의사코드를 찾았습니다. 이전에도 들어본 적은 있으나, 사실 별로 사용하진 않았습니다. 앞으로는 의식적으로 사용하려구요.

의사코드를 작성하는 과정을 거치고 코딩을 하다보니, 좀 더 코드에 대한 확신이 생기는 느낌도 생기고 심리적으로도 도움이 되더라구요.

저처럼 압박받는 순간이 오신다면 의사코드를 한 번쯤 활용해보는 것도 추천합니다!

참고자료)

https://medium.com/djangogirlsseoul-codecamp/의사코드-pseudo-code-란-d892a3479b1d

https://42kchoi.tistory.com/114

https://unluckyjung.github.io/etc/2020/03/14/Pseudo_code/

profile
iOS & Flutter

0개의 댓글