U E D R , A S I H C RSS

Programming Pearls/Column4



1. Writing Correct Programms

  • For writing correct programms.
    • Problem Definition.
    • Algorithm Design.
    • Data Structure Selection.

1.1. The shallange of binary search

  • 100๋ช…์˜ ํ”„๋กœํŽ˜์…”๋„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์—๊ฒŒ Binary search๋ฅผ ์งœ๋ณด๋ผ๊ณ  ์‹œ์ผฐ๋‹ค. ๊ฒฐ๊ณผ๋Š”? 90ํผ์„ผํŠธ์˜ ์‚ฌ๋žŒ์€ ๋ฒ„๊ทธ ์žˆ๋Š” Binary search๋ฅผ ์งฐ๋‹ค๊ณ  ํ•œ๋‹ค.
  • ์ด ์นผ๋Ÿผ์˜ ์ด์•ผ๊ธฐ๋Š” ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ์ด์–ด์ ธ ๋‚˜๊ฐ„๋‹ค.

1.2. Writing the Program

  • ๊ทธ๋ƒฅ Binary search ๋งŒ๋“ค์–ด ๊ฐ€๋Š” ๊ณผ์ •์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค.

1.3. Understanding the Program

  • ํ”„๋กœ๊ทธ๋žจ์˜ correctness๋ฅผ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด, ํ”„๋กœ๊ทธ๋žจ์˜ ์ค‘๊ฐ„์ค‘๊ฐ„์— assert๋ฅผ ์ง‘์–ด๋„ฃ๊ณ  ์žˆ๋‹ค.
  • Loop์—์„œ์˜ correctness
    • Initialization
    • Preservation
    • Termintion
  • ํ”„๋กœ๊ทธ๋žจ์„ ํ•œ์ค„ํ•œ์ค„์”ฉ ๋”ฐ๋ผ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ Loop์—์„œ๋Š” ์œ„์˜ ์›์น™์„ ์ ์šฉํ•ด corretํ•œ๊ฐ€๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ  ์žˆ๋‹ค.

1.4. Principles

  • Verification์„ ์œ„ํ•œ generalํ•œ principles์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.
    • Assertions : ์ž…๋ ฅ, ๋ณ€์ˆ˜, ์ถœ๋ ฅ๊ฐ„์˜ ๊ด€๊ณ„๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํƒœ๋ฅผ ๋ฌ˜์‚ฌํ•ด์ค€๋‹ค. assertion์€ ๊ทธ๋“ค์˜ ๊ด€๊ณ„๋ฅผ ์ •ํ™•ํžˆ ๋งํ•ด์ค€๋‹ค.
    • Sequential Control Structures : ์ด ๋ฌธ์žฅ ๋‹ค์Œ์— ์ € ๋ฌธ์žฅ. ๊ทธ ์‚ฌ์ด์— assertion์„ ์ง‘์–ด๋„ฃ๋Š”๋‹ค. ๊ทธ๋Ÿผ ํ”„๋กœ๊ทธ๋žจ ๋ฌธ์žฅ ํ•˜๋‚˜ํ•˜๋‚˜์˜ ๊ฐ๊ฐ์˜ ์ง„ํ–‰์ƒํ™ฉ์„ ์ฒดํฌํ• ์ˆ˜๊ฐ€ ์žˆ๋‹ค.
    • Selection Control Structures : ์กฐ๊ฑด๋ฌธ์—์„œ ์“ฐ์ธ๋‹ค. ๊ฐ๊ฐ์˜ ์กฐ๊ฑด๋งˆ๋‹ค, ํ™•์‹คํžˆ ๋งž๋‹ค๋Š” assertion์„ ์ง‘์–ด๋„ฃ์–ด์ค€๋‹ค.
    • Iteration Control Structures : ์œ„์—์„œ๋„ ๋งํ–ˆ๋“ฏ์ด, ์ดˆ๊ธฐํ™”, ์œ ์ง€, ์ข…๋ฃŒ์กฐ๊ฑด์ด ํ™•์‹คํ•œ๊ฐ€๋ฅผ ์ฒดํฌํ•ด์•ผํ•œ๋‹ค.
    • Functions : precondition - ํ•จ์ˆ˜ ์‹œ์ž‘ ์ „์— ๋ณด์žฅ๋˜์–ด์•ผ ํ•  ์กฐ๊ฑด -๊ณผ postcondition - ํ•จ์ˆ˜ ๋๋‚ ๋•Œ์— ๋ณด์žฅ๋˜์–ด์•ผ ํ•  ์กฐ๊ฑด -์„ ๋ช…์‹œํ•ด์ค€๋‹ค.(...) ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ "Programming by contract"๋ผ ํ•œ๋‹ค.

1.5. The Roles of Program Verification

  • ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ๋Š” verification๋ฐฉ๋ฒ•์€ Test Case์ด๋‹ค.
  • ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ๋Œ€๊ฐœ correctness์˜ ์—ด์‡ ๊ฐ€ ๋œ๋‹ค.


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:03
Processing time 0.0046 sec