Chapter 01. 제대로 사용한 case문 하나 열 if 문 안 부럽다

Point

프로그램은 결과도 중요하지만 과정도 중요하다.

프로그램에 있어 중요한 것은 결과가 나오느냐 하는 것이라 생각 하는 프로그래머 들이 많이 있습니다.

물론 결과를 산출하는 것이 프로그램의 목적 이기 때문에 중요하지만, 프로그램이 결과를 산출하는데

굉장히 오랜 시간이 걸린다거나, 중간에 프로그램이 죽는다거나, 많은 메모리를 차지하게 된다면

결코 좋은 프로그램을 만들었다고 할수 없습니다. 따라서 프로그램의 결과도 중요하지만 아래와 같은 중간과정도 중요합니다.

  1.  코드의 최적화
    메모리, CPU의 시간과 같은 리소스를 낭비하지 않고 적잘하게 사용하는 최적화
  2. 코드의 재사용성

    같은 코드를 여러 번 반복하여 작성하거나, 다른 사람이 자신의 코드를 사용할 때 별 다른

    수정없이 사용할 수 있도록 구성하는 모듈화

  3. 코드의 가독성
     다른 사람이 소스 코드를 쉽게 이해할 수 있게 하는 가독성

 

 

Content

if 문은 변수의 값을 비교하여 프로그램의 흐름을 결정하는 제어문의 한 종류입니다.

하지만 if, else if 를 너무 남발함으로써 소스 코드의 가독성이 떨어질 뿐만 아니라

프로그램을 유지-보수 할때 무척 지저분해 진다는 단점이 있습니다.

프로그램의 결과도 중요하지만 오랜 시간이 지나서 자신이 다시 보거나 다른 사람들이

코드를 봤을 때 이해하기 쉽게 만드는 것 또한 중요합니다.

 

 예를 들어

  1.  if( val == 1 )
  2. ...
  3. if( val == 2 )
  4. ...
  5.  if( val == 3 )
  6. ...
  7.  if( val > 4 )
  8.       ...

 

이와 같이 코드를 작성 했을 경우 val 이 1 이 었을 때 위의 프로그램은 나머지 if에 대한 검사도 합니다.

만약 if문이 500개, 1000개가 된다면 전체 프로그램의 속도를 떨어뜨리는 원인으로 작용 하게 됩니다.

 

  1. switch( val )
  2. {
  3. case STEP_FIRST:
  4. .....
  5. break;
  6. case STEP_SECOND:
  7. .....
  8. break;
  9. case STEP_THIRD:
  10. .....
  11. break;
  12. }

 

위의 코드처럼 사용하게 되면 보기에도 좋을 뿐만 아니라 소스를 수정하기에도 편하고,

좀 더 경제적으로 프로그래밍을 할 수 있습니다.

물론 if, else if 를 사용해야 할 경우에는 어쩔수 없이 사용을 해야겠지만 이 코드와 같이

단순히 값이 같은지 비교하는 경우에는 switch~ case 문을 사용하여 좀 더 이해가 쉽도록 하는 것이 좋습니다.

이 글은 스프링노트에서 작성되었습니다.

설정

트랙백

댓글

티스토리 초대장 드립니다 ^^

카테고리 없음 2009. 9. 4. 18:55
i n v i t a t i o n

티스토리 초대장

+ 남은 초대장 수 : 00

안녕하세요!

티스토리에 보금자리를 마련하시려는 여러분께 초대장을 배포해 드리려고 합니다.

나만의, 내 생각을, 내 기억을 담는 소중한 블로그를 만들고 싶다면 티스토리로 시작해보세요!

티스토리 블로그는 초대에 의해서만 가입이 가능합니다. 원하시는 분은 댓글에 E-mail 주소를 남겨주시면 초대장을 보내드립니다. 남겨주실 때에는 꼭 비밀댓글로 남겨주세요!

초대장을 보내드리고 바로 개설하시지 않으신 분들은 초대장을 회수할 수도 있으니 바로 개설해주세요!

Yes
이런 분들께 드립니다!
1. 다른 블로그를 사용해보셨던 분
2. 이메일 주소가 정상적인 분
3. 블로그를 시작하려는 이유를 남겨주신 분!
No
이런 분들께 드리지 않아요!
1. 이메일 주소가 의심되는 분!
2. 이메일 주소를 남기지 않으신 분
3. 이유도 없이 달라고 하시는 분!
티스토리 이래서 좋아요!
1. 이미지, 동영상, 오디오, 파일까지! 무한 용량과 강력한 멀티미디어를 올릴 수 있어요!
2. 스킨위자드로 스킨을 내맘대로~ 거기에 기능 확장 플러그인까지!
3. 내가 원하는대로 myID.com으로 블로그 주소를 만들 수 있어요!

설정

트랙백

댓글

신발 세탁법!

etc 2009. 9. 4. 18:54
신발 세탁은 애벌빨래가 가장 중요합니다.
 이때에 표면의 더러움을 대부분 없앨 수 있습니다. 애벌빨래 방법은 더러운 곳에 먼저 물을 충분히 적셔 준 다음 세제 원액을 조금만 바르고 나서 부드러운 솔(칫솔은 비추;)로 살살 문질러 없애 줍니다. 그리고 나서
(1) 찬물에(30도 이하. 실미지근한 물 이하) 중성 세제(추천:하이백 퍼펙트드라이)를 사용량 만큼 넣고 손으로 휘휘 잘 휘저어 녹여 준 후 5~10분간 담가 둡니다.
(2) 탈수만 세탁기를 이용하되, 번거롭더라도 흰 양말이나 수건 등으로 신발 내부를 채워 탈수를 한다면 형태가 흐트러지지 않으므로 좋습니다. 멈춤 없이 회전하는 본회전이 최고 속도로 회전 시 5~10초 뒤 멈춰 주십시오. 탈수를 짧게 하는 이유는 길게 탈수를 할 때와 탈수면에서 별 차이가 없고 오히려 길게 탈수 시, 쥐어짠 것과 같이 신발에 좋지 않은 영향을 끼치기 때문입니다.
(3) 헹굼은 1회로 족합니다. 충분한 양의 물을 받아 1분 이하로 가벼운 물살을 일으켜 살살 흔들어 헹굽니다.
(4) (2)의 탈수와 동일합니다.
(5) 바람이 잘 통하는 그늘진 곳에 건조합니다(탈수에서와 같이 내용을 채워 건조하면 잘 정리된 형태 그대로 건조되므로 좋습니다). 

흰 신발을 (a) 더운 물에 (b) 알칼리 세제(일반 세제)를 사용하여 (c) 세탁기로 돌리고 (d) 햇볕에 건조하면 누렇게 변색되며(특히 고무와 가죽의 경계면. 장기간 햇볕에 노출 시 고무 전체가 누렇게 변색됨), 색깔 신발의 경우 물빠짐과 이염을 동반하므로 신발이 망가질 우려가 있어 좋지 않습니다. 세탁기를 이용하므로 형태가 망가질 우려도 있습니다. 올바른 세제로 올바른 세탁을 하면 세탁소가 부럽지 않습니다.

출처 : 네이버 지식in

설정

트랙백

댓글

[Spanish]단어 숙제

카테고리 없음 2009. 9. 4. 13:12

남성형 명사

1. el hombre 남자
2. el caballo 수말
3. el padre   아버지
4. el estudiante 학생(남학생)
5. el artista 예술가
6. el individuo 개인
7. el cuaderno 공책
8. el cielo 하늘
9. el camion 트럭
10. el dia 날
11. el clima 기후
12. el idioma 언어
13. el problema 문제
14. el mapa 지도
15. el chico
16. el libro 책
17. el lapiz 연필
18. el alumno 학생
19. el rey 왕
20. el arbol 나무
21. el regimen 제도
22. el examen 시험
23. el profesor 교수
24. el director 장, 교장
25. el aula 교실
26. el curso 과정, 코스
27. el programa 프로그램
28. el ejercicio 연습
29. el instituto 연구소, 학원
30. el maestro 선생님
31. el cielo 하늘



여성형 명사

1. la mujer 여자
2. la yegua 암말
3. la madre 어머니
4. la estudiante 여학생
5. la artista 여자 예술가
6. la persona 사람
7. la ventana 창문
8. la cintura 허리
9. la ciudad 도시
10. la pared 벽
11. la pasion 열정
12. la atencion 주의
13. la serie 열
14. la crisis 위기
15. la costumbre 습관
16. la mano 손
17. la gente 사람들
18. la clave 풀이
19. la pluma 펜
20. la clase 교실
21. la casa 집
22. la flor 꽃
23. la lapiz 연필
24. la escuela 학교
25. la facultad 단과 대학
26. la leccion 학과
27. la clase 교실, 수업
28. la universidad 대학교
29. la tinta 잉크
30. la iglesia 교회

설정

트랙백

댓글

[Network]슬라이딩 윈도우( Sliding window )

Programming 2009. 9. 4. 00:44

슬라이딩 윈도(Sliding window)는 두 개의 네트워크 호스트간의 패킷의 흐름을 제어하기 위한 방법이다.

TCP와 같이 데이터의 전달을 보증하는 프로토콜에서는 패킷 하나하나가 전달되었음을 확인 신호(acknowledgement, 이하 ACK)를 받아야하며, 만약 패킷이 중도에 잘못되었거나 분실되어 확인받지 못하는 경우, 해당 패킷을 재전송해야하는 필요가 있다. 슬라이딩 윈도는 일단 '윈도(메모리 버퍼의 일정 영역)'에 포함되는 모든 패킷을 전송하고, 그 패킷들의 전달이 확인되는대로 이 윈도를 옆으로 옮김(slide)으로서 그 다음 패킷들을 전송하는 방식이다.

슬라이딩 윈도는 아직 확인을 받지 않고도 여러 패킷을 보내는 것을 가능케 하기 때문에, 매번 전송한 패킷에 대해 확인을 받아야만 그 다음 패킷을 전송하는 방법(stop-and-wait)을 사용하는 것보다 훨씬 네트워크를 효율적으로 사용할 수 있다.

설명

일단 전송되는 패킷들에겐 일련번호(sequence number)가 매겨지게 된다. 가령 전송하고자하는 n개의 패킷이 있다고 하면 [1, 2, ..., n]와 같이 일련번호를 매길 수 있다.

송신자(sender)는 다음의 세 가지 변수를 관리한다.

  • SWS (send window size) - 윈도 크기
  • LAR (last acknowledgement received) - 마지막으로 확인받은 패킷의 번호
  • LFS (last frame sent) - 마지막으로 보낸 패킷의 번호

그렇다면 송신자의 윈도는 [(LAR+1), ... , (LAR+SWS)]가 된다. 송신자는 이 윈도에 포함되는 모든 패킷들을 전송하고, 수신자로부터 ACK가 올때까지 기다린다. LFSLAR+SWS가 된다. 아무 문제가 없었다면 수신자로부터 LAR+1ACK를 가장 먼저 받게 된다. 그렇다면 송신자는 LAR을 갱신하고, 그렇게되면 LAR+SWS도 그만큼 증가하기 때문에 그 다음 패킷을 보낼 수 있게 된다.

또 만약 어느 패킷에 대해 ACK를 받지 못한 경우, 송신자는 일정시간을 기다린 후, 확인받지 못한 패킷을 재전송한다. 이미 현재의 윈도에 해당되는 패킷을 모두 보냈는데 ACK를 받지 못해 윈도를 이동시키지 못하고 있다면 필요한 ACK가 오기까지 기다려야 한다.

수신자(receiver)도 윈도를 따로 운용한다. 수신자는 다음의 세 가지 변수를 관리한다.

  • RWS (receive window size) - 윈도 크기
  • LAF (last acceptable frame) - 수신할 수 있는 마지막의 패킷의 번호
  • LFR (last frame received) - 마지막으로 수신한 패킷의 번호

송신자와 비슷하게 수신자도 LAFLFR을 갱신하여 윈도를 이동시키며 패킷들을 접수한다. 받는 패킷들에 대한 ACK를 보내주는 것이 수신자의 역할이다. 수신자가 보내는 ACK는 마지막으로 도착한 패킷에 대한 ACK가 아니고, 연속적으로 도착한 패킷중의 가장 마지막 패킷에 대한 ACK이다. 예를 들어 1, 2, 3, 4, 6, 7의 패킷이 순서대로 도착하였다면, 수신자는 그 7번의 패킷을 받아 버퍼에 저장하고, 4번의 패킷에 대한 ACK를 송신자에게 보낸다. 만약 그 다음에 도착하는 패킷이 5번이라면, 수신자는 그제서야 7번의 패킷에 대한 ACK를 송신자에게 보내게 된다.

만약 윈도에 포함되지 않는 패킷이 도착하면, 수신자는 단순히 이 패킷을 버린다.

결론적으로 데이터의 전송이 되는 동안 아래의 두 가지 부등식이 항상 성립하여야한다.

네트워크의 상황에 따라 송신자나 수신자는 각자의 윈도 크기(SWS, RWS)를 조절할 수도 있다.

출처 : http://ko.wikipedia.org/wiki/%EC%8A%AC%EB%9D%BC%EC%9D%B4%EB%94%A9_%EC%9C%88%EB%8F%84 위키백과

'Programming' 카테고리의 다른 글

serialize ( 직렬화 )  (0) 2010.03.22
시리얼 통신  (0) 2009.10.19
뉴욕의 프로그래머  (0) 2009.09.04
IP 주소 변경하기  (0) 2009.08.21
[도서] 임베디드 프로그래밍 C 코드 최적화  (0) 2009.08.12

설정

트랙백

댓글

[민간신앙]사주

English/Expression 2009. 9. 2. 08:37
왜 그래 빌? 근심이 있어 보인다.
What is the matter, Bill? You seem worried. 
요즈음 좀 그래. 내 장래에 대해 고민하고 있어.
I am a bit these days. I have been wondering about my future. 
장래에 어떻게 될까? 내가 삶에서 옳은 일을 하고 있는 것일까? 뭔가 바꿔야 하는 건가?
What does it hold for me? Am I doing the right thing in my life? Should I change something? 
음. 한국의 점술가를 한 번 찾아보는 게 도움을 될 듯 싶은데.
Hmm…sounds like visiting a Korean fortune-teller might help. 
네 사주 한 번 봐야할 것 같다.
You should get a reading of your "saju". 
내 사주라고? 그게 뭔데?
My saju? What's that? 
사주란 네가 태어난 때의 네가지 기둥이란 뜻이야. 즉 연, 월, 일, 시지.
Saju is the four pillars of your birth: the year, month, day and time. 
사주는 음양오행설을 근거로 한 중국의 역학으로부터 유래한 거야. 여기서 오행은 흙, 물, 금속, 나무, 불을 말해.
Saju comes from the Chinese art of divination based on the five natural elements of the yin and yang: earth, water, metal, wood and fire. 
흥미롭지만 확신이 서지 않는다.
That sounds interesting, but I am unsure about it. 
점쟁이들은 돈을 벌려고만 하는 것 아니야?
Aren't fortune-tellers just out to make money
많은 점쟁이들이 그렇지. 하지만 시간을 내서 용한 점쟁이를 찾는다면 네 미래에 대해 정말 많이 알게 될 거야.
Well, many are. But if you take the time to find a good one, you can really learn a lot about your future. 
혹시 관심있으면 내가 아주 용한 사람 알거든.
I know a really good one if you are interested. 
오케이, 한 번 해보지.
Ok, I will give it a shot. 

'English > Expression' 카테고리의 다른 글

시간을 벌다  (0) 2009.09.07
너가 더 얇미워!  (0) 2009.09.07
엎어지면 코 닿을 곳, 분위기 있다.  (0) 2009.09.02
[Wisdom] 불가능한 일을 가능하게 하는 것  (0) 2009.09.02
저 정말 괜찮아요.  (0) 2009.09.02

설정

트랙백

댓글

엎어지면 코 닿을 곳, 분위기 있다.

English/Expression 2009. 9. 2. 08:29

A : 어째 넌 허구한 날 지각이니?
     Why are you always late?

B : 죄송해요. 내일부턴 일찍 올게요.
     I'm so sorry. I will be early starting tomorrow.

A : 먼 데 살면서 늦으면 내가 말을 안 해. 엎어지면 코 닿을 곳에 사는 녀석이!
     It would be a different story if you lived far away, but you're just a stone's throw away from here.

분위기 있다 have class

A : 저 사람 참 분위기 있다.
     That guy has class.

B : 그렇지? 독특한 매력이 있는 것 같아. 
     Doesn't he? There's something really attractive about him.


'English > Expression' 카테고리의 다른 글

너가 더 얇미워!  (0) 2009.09.07
[민간신앙]사주  (0) 2009.09.02
[Wisdom] 불가능한 일을 가능하게 하는 것  (0) 2009.09.02
저 정말 괜찮아요.  (0) 2009.09.02
What can I do to prevent getting Swine Flu?  (0) 2009.09.01

설정

트랙백

댓글

[Wisdom] 불가능한 일을 가능하게 하는 것

English/Expression 2009. 9. 2. 08:26
“The greatest pleasure in life is doing what people say you cannot do.”
~ Walter Bagehot (British political Analyst, Economist and Editor, one of the most influential journalists of the mid-Victorian period.1826-1877)


“Believe and act as if it were impossible to fail.”
~ Charles F. Kettering 

'English > Expression' 카테고리의 다른 글

[민간신앙]사주  (0) 2009.09.02
엎어지면 코 닿을 곳, 분위기 있다.  (0) 2009.09.02
저 정말 괜찮아요.  (0) 2009.09.02
What can I do to prevent getting Swine Flu?  (0) 2009.09.01
짜장면2  (0) 2009.09.01

설정

트랙백

댓글

저 정말 괜찮아요.

English/Expression 2009. 9. 2. 08:23
저 정말 괜찮아요

It doesn't bother me at all.

'English > Expression' 카테고리의 다른 글

엎어지면 코 닿을 곳, 분위기 있다.  (0) 2009.09.02
[Wisdom] 불가능한 일을 가능하게 하는 것  (0) 2009.09.02
What can I do to prevent getting Swine Flu?  (0) 2009.09.01
짜장면2  (0) 2009.09.01
몇 분 남았냐?  (0) 2009.09.01

설정

트랙백

댓글

What can I do to prevent getting Swine Flu?

English/Expression 2009. 9. 1. 08:55
What can I do to prevent getting Swine Flu?
The CDC reminds us that preventing getting the Swine Flu involves taking some very simple precautions that people would normally take to stay healthy. 

1. Wash your hands often with soap and water, especially after you cough or sneeze.   
     Alcohol-based hands cleaners are also effective.
2. Cover your nose and mouth with a tissue when you cough or sneeze.
    Throw the tissue in the trash after you use it.
3. Avoid touching your eyes, nose or mouth.
    Germs spread that way.
4. When possible avoid close contact with sick people.

'English > Expression' 카테고리의 다른 글

[Wisdom] 불가능한 일을 가능하게 하는 것  (0) 2009.09.02
저 정말 괜찮아요.  (0) 2009.09.02
짜장면2  (0) 2009.09.01
몇 분 남았냐?  (0) 2009.09.01
삼천포로 빠지다  (0) 2009.09.01

설정

트랙백

댓글