1 / 47

CS1010: Programming Methodology http://www.comp.nus.edu.sg/~cs1010/

CS1010: Programming Methodology http://www.comp.nus.edu.sg/~cs1010/. Week 1: Problem-Solving and Algorithm. Computing Fundamentals Problem-Solving Algorithm Control Structures Tasks: Writing Algorithms in Pseudo-code. This symbol indicates the focus of today’s lesson.

dante
Download Presentation

CS1010: Programming Methodology http://www.comp.nus.edu.sg/~cs1010/

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS1010: Programming Methodologyhttp://www.comp.nus.edu.sg/~cs1010/

  2. Week 1: Problem-Solving and Algorithm • Computing Fundamentals • Problem-Solving • Algorithm • Control Structures • Tasks: Writing Algorithms in Pseudo-code This symbol indicates the focus of today’s lesson. CS1010 (AY2013/4 Semester 1)

  3. Computing Fundamentals Hardware Houses processor, memory, buses, etc. Monitor and speaker (output) Software Keyboard and mouse (input) • Set of instructions to perform tasks to specifications • Programs are software CS1010 (AY2013/4 Semester 1)

  4. Software (1/4) • Program • Sequence of instruction that tells a computer what to do • Execution • Performing the instruction sequence • Programming language • Language for writing instructions to a computer • Major flavors • Machine language or object code • Assembly language • High-level CS1010 (AY2013/4 Semester 1)

  5. Software (2/4) • Program • Sequence of instruction that tells a computer what to do • Execution • Performing the instruction sequence • Programming language • Language for writing instructions to a computer • Major flavors • Machine language or object code • Assembly language • High-level Program to which computer can respond directly. Each instruction is a binary code that corresponds to a native instruction. Example: 0001001101101110 CS1010 (AY2013/4 Semester 1)

  6. Software (3/4) • Program • Sequence of instruction that tells a computer what to do • Execution • Performing the instruction sequence • Programming language • Language for writing instructions to a computer • Major flavors • Machine language or object code • Assembly language • High-level Symbolic languagefor coding machinelanguage instructions. Example: ADD A, B, C CS1010 (AY2013/4 Semester 1)

  7. Software (4/4) • Program • Sequence of instruction that tells a computer what to do • Execution • Performing the instruction sequence • Programming language • Language for writing instructions to a computer • Major flavors • Machine language or object code • Assembly language • High-level Detailed knowledge of the machine is not required. Uses a vocabulary and structure closer to the problem being solved. Examples: Java, C, C++, Prolog, Scheme. CS1010 (AY2013/4 Semester 1)

  8. Translation • High-level language programs (source codes) must be translated into machine code for execution • Translator • Accepts a program written in a source language and translates it to a program in a target language • Compiler • Standard name for a translator whose source language is a high-level language • Interpreter • A translator that both translates and executes a source code CS1010 (AY2013/4 Semester 1)

  9. Edit, Compile and Execute Executable code Source code produces produces produces Editor eg: vim welcome.c welcome.c a.out Compiler eg: gccwelcome.c Output Execute Hello, welcome to CS1010! eg: a.out CS1010 (AY2013/4 Semester 1)

  10. Logging into UNIX system (1/3) • We will do more programming next week. • You will need your UNIX account user-name and password. • To create SoC UNIX account: • https://mysoc.nus.edu.sg/~newacct • We will do a quick demonstration now. CS1010 (AY2013/4 Semester 1)

  11. Logging into UNIX system (2/3) 1. Look for the SSH Secure Shell Client icon on your desktop, and double click on it. Click on “Quick Connect” to get the pop-up window. Enter “sunfire.comp.nus.edu.sg” for Host Name (or simply “sunfire” if you are using the PC in the lab) and your own user name as illustrated here. CS1010 (AY2013/4 Semester 1)

  12. Logging into UNIX system (3/3) 4. Enter your UNIX password. 5. Once you log in successfully into your UNIX account, you will see this screen (actual display may vary). 6. To log out from your UNIX account, type “exit” or “logout”. CS1010 (AY2013/4 Semester 1)

  13. Introductory Workshop • We will conduct an Intro Workshop on 16 August, Friday and 20 August, Tuesday • Meant for students who did not attend the UNIX workshop conducted by CompClub. • Optional for those who have attended the UNIX workshop conducted by CompClub. • 16 August is meant for students in all sectional groups except SG31 and SG32. • 20 August is meant for students in SG31 and SG32. • Very important, please attend and be punctual! • Please refer to IVLE forum “Intro Workshop” and sign up there. CS1010 (AY2013/4 Semester 1)

  14. Problem Solving Process Determine problem features Analysis Rethink as appropriate Write algorithm Design Produce code Implementation Check for correctness and efficiency Testing CS1010 (AY2013/4 Semester 1)

  15. Pólya: How to Solve It (1/5) A great discovery solves a great problem but there is a grain of discovery in the solution of any problem. Your problem may be modest; but if it challenges your curiosity and brings into play your inventive faculties, and if you solve it by your own means, you may experience the tension and enjoy the triumph of discovery. Such experiences at a susceptible age may create a taste for mental work and leave their imprint on mind and character for a lifetime. – George Pólya CS1010 (AY2013/4 Semester 1)

  16. Pólya: How to Solve It (2/5) • Phase 1: Understanding the problem • Phase 2: Devising a plan • Phase 3: Carrying out the plan • Phase 4: Looking back • What is the unknown? What are the data? • What is the condition? Is it possible to satisfy the condition? Is the condition sufficient to determine the unknown? • Draw a figure. Introduce suitable notation. CS1010 (AY2013/4 Semester 1)

  17. Pólya: How to Solve It (3/5) • Phase 1: Understanding the problem • Phase 2: Devising a plan • Phase 3: Carrying out the plan • Phase 4: Looking back • Have you seen the problem before? Do you know a related problem? • Look at the unknown. Think of a problem having the same or similar unknown. • Split the problem into smaller sub-problems. • If you can’t solve it, solve a more general version, or a special case, or part of it. CS1010 (AY2013/4 Semester 1)

  18. Pólya: How to Solve It (4/5) • Phase 1: Understanding the problem • Phase 2: Devising a plan • Phase 3: Carrying out the plan • Phase 4: Looking back • Carry out your plan of the solution. Check each step. • Can you see clearly that the step is correct? • Can you prove that it is correct? CS1010 (AY2013/4 Semester 1)

  19. Pólya: How to Solve It (5/5) • Phase 1: Understanding the problem • Phase 2: Devising a plan • Phase 3: Carrying out the plan • Phase 4: Looking back • Can you check the result? • Can you derive the result differently? • Can you use the result, or the method, for some other problem? CS1010 (AY2013/4 Semester 1)

  20. Algorithmic Problem Solving • An algorithm is a well-defined computational procedure consisting of a set of instructions, that takes some value or set of values, as input, and produces some value or set of values, as output. Algorithm Input Output CS1010 (AY2013/4 Semester 1)

  21. Algorithm • Each step of an algorithm must be exact. • An algorithm must terminate. • An algorithm must be effective. • An algorithm must be general. • Can be presented in pseudo-code or flowchart. CS1010 (AY2013/4 Semester 1)

  22. Find maximum and average of a list of numbers (1/2) The need to initialisevariables. • Pseudo-code sumcount 0 // sum = sum of numbers // count = how many numbers are entered? max 0 // max to hold the largest value eventually for each num entered, countcount + 1 sumsum + num if num > max then maxnum avesum / count print max, ave The need to indent. Are there any errors in this algorithm? CS1010 (AY2013/4 Semester 1)

  23. Find maximum and average of a list of numbers (1/2) Terminator box • Flowchart start Process box sumcount  0 max  0 Decision box end of input? Yes No increment count sum sum + num ave sum/count No Yes print max, ave max num num > max? No end CS1010 (AY2013/4 Semester 1)

  24. Control structures • Sequence • Branching (selection) • Loop (repetition) CS1010 (AY2013/4 Semester 1)

  25. Data Representation • Internal representation: bits (binary digits) 0 and 1 • 1 byte = 8 bits • We will not deal with bit level and bit operations • Data types (lists here are not exhaustive): • Integers: int, short, long • Real numbers: float, double • Characters: char • Read up Lesson 1.4 in reference book on your own • A variable holds some data and it belongs to a data type and occupies some memory space, shown as a box in the following slides. CS1010 (AY2013/4 Semester 1)

  26. A possible algorithm: enter values for num1, num2, num3 ave ( num1 + num2 + num3 ) / 3 print ave Another possible algorithm: enter values for num1, num2, num3 total  ( num1 + num2 + num3 ) avetotal / 3 print ave Variables used: num1 num2 num3 ave Variables used: num1 num2 num3 total ave Algorithm: Example #1 (1/2) Sequence • Example 1: Compute the average of three integers. CS1010 (AY2013/4 Semester 1)

  27. Algorithm: Example #1 (2/2) Sequence • How the code might look like Week1_prog1.c // This program computes the average of 3 integers #include <stdio.h> int main(void) { int num1, num2, num3; float ave; printf("Enter 3 integers: "); scanf("%d %d %d", &num1, &num2, &num3); ave = (num1 + num2 + num3) / 3.0; printf("Average = %.2f\n", ave); return0; } CS1010 (AY2013/4 Semester 1)

  28. Variables used: num1 num2 final1 final2 Algorithm: Example #2 (1/3) Selection • Example 2: Arrange two integers in increasing order (sort). Algorithm A: enter values for num1, num2 // Assign smaller number into final1, // larger number into final2 if (num1 < num2) then final1num1 final2num2 else final1num2 final2num1 // Transfer values in final1, final2 back to num1, num2 num1final1 num2 final2 // Display sorted integers print num1, num2 CS1010 (AY2013/4 Semester 1)

  29. Variables used: num1 num2 temp Algorithm: Example #2 (2/3) Selection • Example 2: Arrange two integers in increasing order (sort). Algorithm B: enter values for num1, num2 // Swap the values in the variables if necessary if (num2 < num1) then tempnum1 num1num2 num2temp // Display sorted integers print num1, num2 CS1010 (AY2013/4 Semester 1)

  30. Algorithm: Example #2 (3/3) Selection • How the code might look like (for algorithm B) Week1_prog2.c // This program arranges 2 integers in ascending order #include <stdio.h> int main(void) { int num1, num2, temp; printf("Enter 2 integers: "); scanf("%d %d", &num1, &num2); if (num2 < num1) { temp = num1; num1 = num2; num2 = temp; } printf("Sorted: num1 = %d,num2 = %d\n", num1, num2); return0; } CS1010 (AY2013/4 Semester 1)

  31. Variables used: n count ans Algorithm: Example #3 (1/2) Repetition • Example 3: Find the sum of positive integers up to n (assuming that n is a positive integer). Algorithm: enter value for n // Initialise a counter count to 1, and ans to 0 count 1 ans 0 while (count <= n) do the following ansans + count // add count to ans countcount + 1 // increase count by 1 // Display answer print ans CS1010 (AY2013/4 Semester 1)

  32. Algorithm: Example #3 (2/2) Repetition • How the code might look like Week1_prog3.c // Computes sum of positive integers up to n #include <stdio.h> int main(void) { int n; // upper limit int count=1, ans=0; // initialisation printf("Enter n: "); scanf("%d", &n); while (count <= n) { ans += count; count++; } printf("Sum = %d\n", ans); return0; } CS1010 (AY2013/4 Semester 1)

  33. Euclidean algorithm • First documented algorithm by Greek mathematician Euclid in 300 B.C. • To compute the GCD (greatest common divisor) of two integers. • Let A and B be integers with A > B ≥ 0. • If B = 0, then the GCD is A and algorithm ends. • Otherwise, find q and r such that • A = q.B + r where 0 ≤ r < B • 4. Replace A by B, and B by r. Go to step 2. CS1010 (AY2013/4 Semester 1)

  34. Step-wise Refinement (1/3) • From the examples, we see that in general an algorithm comprises three steps: • Input (read data) • Compute (process input data to generate some answers) • Output (display answers) • The ‘compute’ step is the most complex. • Step-wise refinement – break down a complex step into smaller steps. CS1010 (AY2013/4 Semester 1)

  35. Step-wise Refinement (2/3) • Example: Given a value in miles, convert it into kilometres • Recall Phase 1 of “How To Solve It”: Understanding the problem. • Is the problem clear? If not, ask questions! • One possible algorithm: 1. Read in distance (m) in miles // step 1: input 2. Convert the distance to kilometres (k) // step 2: compute 3. Print the distance (k) in kilometres// step 3: output CS1010 (AY2013/4 Semester 1)

  36. Step-wise Refinement (3/3) • We can actually stop here, if we are clear about how to do each step. • If not, we need to refine the step. For instance, step 2, how do we convert miles to kilometres • we refine step 2 to: 1. Read in distance (m) in miles // step 1: input 2. Convert the distance to kilometres// step 2: compute 2.1calculate k = m * 1.609 3. Print the distance (k) in kilometres// step 3: output CS1010 (AY2013/4 Semester 1)

  37. Tasks for practice on Problem-solving and writing Algorithms in Pseudo-code CS1010 (AY2013/4 Semester 1)

  38. 2a Task 1: Area of a Circle (1/2) • What is the data? Side of square = 2a • What is the unknown? Area of circle, C. • What is the condition? If radius r is known, C can be calculated. • How to obtain r? CS1010 (AY2013/4 Semester 1)

  39. r a a Task 1: Area of a Circle (2/2) • Pythagoras’ theorem: • Area of circle CS1010 (AY2013/4 Semester 1) 

  40. Task 2: Coin Change • Given these coin denominations: 1¢, 5¢, 10¢, 20¢, 50¢, and $1, find the smallest number of coins needed for a given amount. You do not need to list out what coins are used. • Example 1: For 375 cents, 6 coins are needed. • Example 2: For 543 cents, 10 coins are needed. CS1010 (AY2013/4 Semester 1)

  41. Task 2: Coin Change – A possible algorithm CS1010 (AY2013/4 Semester 1) Week1 - 41 

  42. Task 3: Breaking Up an Integer • A common sub-task in many problems involves number manipulation 252040312 3 5 2 2 4 2 1 0 0 • Example: Given a positive integer n, how do you sum up all its individual digits? • The answer for the above example is 19 (2 + 5 + 2 + 0 + 4 + 0 + 3 + 1 + 2) CS1010 (AY2013/4 Semester 1) Week1 - 42

  43. Algorithm before coding • The earlier examples show that we can discuss problems and their solutions (algorithms) without writing out the codes. • A sample program development process: • Understanding the problem (if in doubt, ask questions!): 5 minutes • Writing the algorithm: 30 minutes • Testing the algorithm: 20 minutes • Writing the program: 20 minutes • Testing and debugging the program: 30 minutes to 3 hours or more • For more complex problems, time spent in thinking about the algorithm could far exceed time spent in writing the program. • The more time you invest in writing a good algorithm, the more time you will save in debugging your program. CS1010 (AY2013/4 Semester 1)

  44. Quotes for CS1010 Students • Before you succeed, you must fail many times. • Don’t ask me what this code does, trace it yourself! • Think! Think! Think! • Practise! Practise! Practise! • It’s all about logic. Every step must be clear to you. CS1010 (AY2013/4 Semester 1)

  45. Summary for Today • Today’s most important lessons • Module objectives and resources • Module website, IVLE, CS1010 Handbook, etc. • Problem-solving • As a systematic, logical process • Steps in problem-solving • Algorithms • Control structures: sequence, selection, repetition • How to write algorithms in pseudo-codes CS1010 (AY2013/4 Semester 1)

  46. Announcements/Things-to-do • Reminders • Discussion classes start in week 3 • Check module website and IVLE forums regularly • Read IVLE forum about the Intro workshop (only for students who did not attend the one conducted by CompClub; optional if you have attended that) and sign up for it • Read “CS1010 Student Handbook” • Revise Chapter 1 Programming Fundamentals • Preparation for next week: • Read Chapters 2 and 3 • Learn vim and practise using it • Create your UNIX account (if you have not done so) and bring along your UNIX password next week CS1010 (AY2013/4 Semester 1)

  47. End of File

More Related