Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Module 2: Fundamental Concepts Problems Programs –Programming languages.

Similar presentations


Presentation on theme: "1 Module 2: Fundamental Concepts Problems Programs –Programming languages."— Presentation transcript:

1 1 Module 2: Fundamental Concepts Problems Programs –Programming languages

2 2 Problems We view solving problems as the main application for computer programs

3 3 Inputs Outputs (4,2,3,1) (3,1,2,4) (7,5,1) (1,2,3) (1,2,3,4) (1,5,7) (1,2,3) Definition A problem is a mapping or function between a set of inputs and a set of outputs Example Problem: Sorting

4 4 How to specify a problem Input –Describe what an input instance looks like Output –Describe what task should be performed on the input –In particular, describe what output should be produced

5 5 Example Problem Specifications* –Sorting problem Input –Integers n 1, n 2,..., n k Output –n 1, n 2,..., n k in nondecreasing order –Find element problem Input –Integers n 1, n 2, …, n k –Search key S Output –yes if S is in n 1, n 2, …, n k, no otherwise

6 6 Programs Programs solve problems

7 7 Purpose Why do we write programs? One answer –To solve problems –What does it mean to solve a problem? Informal answer: For every legal input, a correct output is produced. Formal answer: To be given later

8 8 Programming Language Definition –A programming language defines what constitutes a legal program –Example: a pseudocode program may not be a legal C++ program which may not be a legal C program –A programming language is typically referred to as a “computational model” in a course like this.

9 9 C++ Our programming language will be C++ with minor modifications –Main procedure will use input parameters in a fashion similar to other procedures no argc/argv –Output will be returned type specified by main function type

10 10 Maximum Element Problem Input –integer n >= 1 –List of n integers Output –The largest of the n integers

11 11 C++ Program which solves the Maximum Element Problem* int main(int A[], int n) { int i, max; if (n < 1) return (“Illegal Input”); max = A[0]; for (i = 1; i < n; i++) if (A[i] > max) max = A[i]; return (max); }

12 12 Fundamental Theme Exploring capabilities and limitations of C++ programs

13 13 Restating the Fundamental Theme We will study the capabilities and limits of C++ programs Specifically, we will try and identify –What problems can be solved by C++ programs –What problems cannot be solved by C++ programs

14 14 Studying the Theme How do we prove a problem CAN be solved by SOME C++ program? –We write a specific C++ program which solves it. How do we prove something CANNOT be solved by ANY C++ program? –We have to develop an argument which takes into account EVERY C++ program that could be written.

15 15 Question Is C++ general enough? Or is it possible that there exists some problem  such that –  can be solved by some program P in some other reasonable programming language –but  cannot be solved by any C++ program?

16 16 Church’s Thesis (modified) We have no proof of an answer, but it is commonly accepted that the answer is no. Church’s Thesis (three identical statements) –C++ is a general model of computation –Any algorithm can be expressed as a C++ program –If some algorithm cannot be expressed by a C++ program, it cannot be expressed in any reasonable programming language

17 17 Summary * Problems –When we talk about what programs can or cannot “DO”, we mean what PROBLEMS can or cannot be solved Questions –For any problem, can there be more than one program which solves it? –For any program, can it solve more than one problem? –Which is harder: proving a problem solvable or unsolvable?


Download ppt "1 Module 2: Fundamental Concepts Problems Programs –Programming languages."

Similar presentations


Ads by Google