Advanced programming
This presentation is the property of its rightful owner.
Sponsored Links
1 / 19

Advanced Programming PowerPoint PPT Presentation


  • 62 Views
  • Uploaded on
  • Presentation posted in: General

Advanced Programming. 15 Feb 2003. The “OI” Programming Process. Reading the problem statement Thinking Coding + Compiling Testing + Debugging Finalizing the program. Reading…. Read the problem statements carefully Note the constraints Meaningful Range of variables

Download Presentation

Advanced Programming

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Advanced programming

Advanced Programming

15 Feb 2003


The oi programming process

The “OI” Programming Process

  • Reading the problem statement

  • Thinking

  • Coding + Compiling

  • Testing + Debugging

  • Finalizing the program


Reading

Reading…

  • Read the problem statements carefully

  • Note the constraints

    • Meaningful Range of variables

    • Execution time limit

  • Do not “guess” the meaning of the problem statements.


Thinking

Thinking

  • What is the ‘type’ of the problem?

    • DP? Graph? Maths? Others?

  • Have you solved a similar problem before?

  • How do you solve the problem without computer?

  • Can the problem be further divided into some easier sub-problems?


Thinking cont

Thinking (cont.)

  • Drawing diagrams may be useful (especially for DP and Graph problems)

  • Is the problem too simple?

    • If yes, look for tricks ;-)

  • Is the algorithm correct?

    • Any special cases?

  • Have you coded it before?

    • What were the difficulties you faced?


Thinking cont1

Thinking (cont.)

  • Is the algorithm feasible?

    • How to code it in PASCAL?

    • Is it easy to code?

    • What is the approximate execution time?

    • How to store the data?

      • Integer? LongInt? String? Array of char?

      • Array? Linked-List?

    • Are there enough memory to store the data?


Thinking cont2

Thinking (cont.)

  • Are there any (simple) ways to improve

    • Program execution time?

    • Ease of coding?


Coding

Coding

  • Pre-processing (e.g. find primes)

  • Input

  • Process

    • Part 1, 2, …, N

  • Output

  • Save and compile your code frequently


Coding cont

Coding (cont.)

  • Avoid long and complex expressions

x:=(2*(y2-y1)*(x1*x1+y1*y1-x3*x3-y3*y3)-2*(x1*x1+y1*y1-x2*x2-y2*y2)*(y3-y1)) /(4*(x2-x1)*(y3-y1)-4*(y2-y1)*(x3-x1));

y:=((x1*x1+y1*y1-x2*x2-y2*y2)*2*(x3-x1)-2*(x2-x1)*(x1*x1+y1*y1-x3*x3-y3*y3)) /(4*(x2-x1)*(y3-y1)-4*(y2-y1)*(x3-x1));

r:=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));

a:=2*(x2-x1); b:=2*(y2-y1);

c:=x1*x1+y1*y1-x2*x2-y2*y2;

d:=2*(x3-x1); e:=2*(y3-y1);

f:=x1*x1+y1*y1-x3*x3-y3*y3;

x:=(b*f-c*e)/(a*e-b*d);

y:=(c*d-a*f)/(a*e-b*d);

r:=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));


Coding cont1

Coding (cont.)

  • Copy-and-paste

    • Make sure the “source” is correct

    • Update all variables

    • Double checking required


Testing

Testing

  • When to test your program?

    • After completing the whole program?

    • After writing each statement?

    • After coding each part?

    • After making changes to a part?


Testing cont

Testing (cont.)

  • Print all important variables to screen

  • Print messages

  • Use debugger, inspect program behavior by running step-by-step


Testing cont1

Testing (cont.)

  • Sample Output

  • “A problem has Sample Output for two reasons:

    • To make you understand what the correct output format is

    • To make you believe that your incorrect solution has solved the problem correctly ”


Testing cont2

Testing (cont.)

  • Hand-made Input

  • Boundary Case

  • “Large” Input

    • Execution Time

    • Overflow


Debugging

Debugging

  • Some short-cut keys

    • F4 – Goto Cursor

    • F7 – Trace into

    • F8 – Step Over

    • Ctrl-F7 – Add Watch

    • Ctrl-F2 – Program Reset

    • Ctrl-F8 – Add BreakPoint

    • Alt-F5 – Screen Output


Finalizing

Finalizing

  • Check I/O filename

  • Check Output Format

    • Trailing spaces?

  • Correct source/executable name?

  • Is the executable updated?


Demostration

Demostration

  • HKOI2003 Junior Q3 – Goldbach’s Conjecture

  • Read the problem statements, and think about the algorithms now ;-)


Reading1

Reading…

  • Given an integer N, find two primes p1,p2 such that p1+p2=N

  • p1 ≤ p2

  • Minimize (p2-p1)

  • Minimum N = 4

  • Maximum N = 10,000,000 (wow!)

  • Can N be odd?


Thinking1

Thinking…

  • Find two primes…

  • if M mod pi = 0, where pi is a prime, then M is not prime.

  • So….the first step is to find some small prime numbers (up to )

  • Then, write a function that uses these prime numbers to check for larger primes

  • Use a for-loop to find two prime numbers such that their sum is N

  • Feasible? Easy to write?


  • Login