Download presentation

Presentation is loading. Please wait.

1
**Lecture 2: Fundamental Concepts**

Problems Programs Programming languages

2
Studying the Theme How do we prove something CAN be done by SOME program? We write a specific program which does it. How do we prove something CANNOT be done by ANY program? We have to develop an argument which takes into account EVERY program that could be written.

3
**We view solving problems as the main application for computer programs**

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

5
**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

6
**Example Problem Specifications**

Sorting problem Input Integers n1, n2, ..., nk Output n1, n2, ..., nk in nondecreasing order Find element problem Integers n1, n2, …, nk Search key S yes if S is in n1, n2, …, nk, no otherwise

7
**Programs solve problems**

8
**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

9
**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.

10
**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

11
**Maximum Element Problem**

Input integer n >= 1 List of n integers Output The largest of the n integers

12
**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); }

13
**Exploring capabilities and limitations of C++ programs**

Fundamental Theme Exploring capabilities and limitations of C++ programs

14
**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

15
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.

16
**Question Is C++ general enough?**

Or is it possible that there exists some problem P such that P can be solved by some program P in some other programming language but P cannot be solved by any C++ program?

17
**Church’s Thesis (modified)**

We have no proof of an answer, but it is commonly accepted that the answer is no. Church’s Thesis (modified) 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

18
**Summary Problems Questions**

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?

Similar presentations

© 2020 SlidePlayer.com Inc.

All rights reserved.

To make this website work, we log user data and share it with processors. To use this website, you must agree to our Privacy Policy, including cookie policy.

Ads by Google