Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CS 103
C is Alive in C++
C++ is a superset of C. Any correct C program is also a correct C++ program, except for some loopholes in C that are not allowed in C++.
CS 103
C++: A Better C
Convenient syntax for inline comments: // Declaration anywhere Function overloading Default arguments Simplified IO: cin >>, cout<<, and more A new Boolean data type: bool Easier dynamic memory allocation: new & delete References (automatically dereferenced pointers) Function templates: data types as parameters Tag names as new data types Better type system: tighter use of void *
CS 103 5
The C-syntax for comments, /* */, can still be used for multi-tine comments.
CS 103 6
Declaration Anywhere
Declarations need no longer be at the head of blocks. Variables and functions can be declared any time, anywhere in a program, preferably as close to where a variable is used the first time. For example: note i is declared within for for (int i=0;i<n;i++)
CS 103 7
Function Overloading
In C++, two or more functions can share the same name as long as their parameter declarations are different. In this situation, the functions that share the same name are said to be overloaded, and the process is referred to as function overloading Two or more functions can have the same name but different parameters Example:
Default Arguments
A default argument is a value given in the function declaration that the compiler automatically inserts if the caller does not provide a value for that argument in the function call. Syntax:
return_type f(, type x = default_value,);
CS 103 9
The default value of the 2nd argument is 2. This means that if the programmer calls pow(x), the compiler will replace that call with pow(x,2), returning x2
CS 103 10
xy
If we call f(2), is it to f in (1) or (2)? The 1st returns 1. The 2nd returns 4.
13
CS 103
14
Simplified IO
Instead of the complicated syntax of printf and scanf, and the many variations of print and scan, C++ offers a much simpler syntax For standard output, use cout For standard input, use cin File IO is also simpler, and will be discussed later Note: one can still use the IO syntax of C in C++
CS 103
17
Cout
For printing output, use this syntax:
cout << a string or an expression;
This prints out the string or the value of the extpression. For output chaining, use this syntax
cout << S1 <<S2<<S3<<endl;
Each Si is a string or an expression. The effect is to print out the value of S1 followed by the value of S2, followed by the value of S3.
CS 103 18
Cout (Contd.)
The reserved word, endl, ensures that the next cout command prints its stuff on a new line. New lines can also be added using \n.
CS 103
19
Cout (Examples)
Statements
int x=3; double y =4.5; cout <<the value of x=<<x; cout<<; y=<<y<<endl; cout <<x+y<<x+y; int x=3; double y =4.5; cout <<x = <<x<<\n; cout<<y=<<y; cout <<\nx+y<<x+y;
CS 103
Output
the value of x=3; y=4.5
x+y=7.5
x=3 y=4.5 x+y=7.5
20
Cin
For reading input values into variables:
cin >> variableName1 >> variableName2 >> variableName3;
This reads the input from the standard input (say the screen for now), puts the first read value in variableName1, the second read value in variableName2, and the third read value in variableName3.
CS 103 21
Cin (Examples)
Suppose you want to read an int value and a double value into variables n and x. This code will do it (see next slide):
int n; double x; cout<<enter an int, a space, and a double: ;
cin>>n>>x; // use of cin cout<<You entered int n=<<n; cout<<, and double x=<<x<<endl;
CS 103 22
The code next will store 3 in n, and 9.8 in x, and print out to you:
You entered int n=-3, and double y=9.8
CS 103
23
CS 103
24
Example of bool
// Precondition: x[] is an integer array of length n. // n is a positive integer. // Postcondition: The output is true if the elements // of the input array are all positive,. Else, false. bool isAllPositive(int x[], int n){ for(int i=0;i<n;i++) if (x[i] <= 0) return false; return true; }
CS 103 25
Semantics of new
For type *pointer = new type; :
The system allocates dynamically (during execution) a chunk of memory large enough to hold data of the specified type, and returns a pointer pointing to the address of that chunk. This pointer is stored in the user-provided pointer-variable pointer.
CS 103
27
Example of new
// Precondition: n is a positive integer // Postcondition: computes and prints out the first n // elements of the Fibonacci sequence void fibonacci(int n){ int *x = new int [n]; // creation of a dynamic array x[0]=1; x[1]=1; for (int i=2;i<n;i++) x[i]=x[i-1]+x[i-2]; cout<<"The Fibonacci sequence of "<<n<<" values are:\n"; for (int i=0;i<n;i++) cout<<"x["<<i<<"]="<<x[i]<<endl; }
CS 103 29
References
A reference is an autmatically dereferenced pointer Syntax of reference declaration:
Type& refname = variable;
Semantics: refname becomes another name (or alias) for variable. Any change to the value of variable causes the same change to refname, and vice versa.
CS 103 31
Illustration of References
Statements
int x=17; int& xref = x; cout<<x=<<x<<endl; cout<<xref=<<xref<<endl; x=x+5; cout<<x=<<x<<endl; cout<<xref=<<xref<<endl; xref = xref-10; cout<<x=<<x<<endl; cout<<xref=<<xref<<endl;
Outcome
x=17 xref=17
x=22 xref=22
x=12 xref=12
32
CS 103
int x=5; int y=10; swap(x,y); cout<<x<<, <<y; Outcome: 10, 5 // it did swap
CS 103 33
Example:
int x[]={11, 13, 5, 7, 4, 10}; double y[]={4.5, 7.13, 3, 17}; int minx = min<int>(x,6); double miny=min<double>(y,4); cout<<the minimum of array x is: <<minx<<endl; cout<<the minimum of array y is: <<miny<<endl;
CS 103 37
CS 103
38