Download presentation
Presentation is loading. Please wait.
Published byGeraldine Cain Modified over 9 years ago
1
C++ / G4MICE Course Session 1 - Introduction Edit text files in a UNIX environment. Use the g++ compiler to compile a single C++ file. Understand the C++ input and output streams. First exposure to simple C/C++ variables. Basic C++ types. Control and Looping Functions in C Function/method signatures and scope
2
Course Format 10 Sessions (each one and a half hours) over five days. Each session consists of a mixture of lectures and guided hands-on work. 2
3
Editing Text Files Hopefully everyone is already familiar with at least one UNIX/linux text editor. If not, there are several options, including: –vi / vim –emacs –nano Use whichever editor you prefer. If you aren’t already familiar with one, we will start with that in the hands-on part of this session. 3
4
g++ compiler The standard G4MICE installation currently comes with version 3.2.3 or g++. In a future release we will migrate to version 4. The way that the compiler works is the same in both cases. 4
5
helloworld.cc // helloworld.cc // // Written for the C++ / G4MICE course // // M. Ellis - March 2008 #include int main() { std::cout << "Hello World!" << std::endl; exit(1); } 5
6
How to Compile g++ -o helloworld helloworld.cc This will produce an output executable file “helloworld” (helloworld.exe if you are using cygwin) from the source code helloworld.cc which can be run:./helloworld 6
7
helloworld.cc - explanation 7 // helloworld.cc // // Written for the C++ / G4MICE course // // M. Ellis - March 2008 #include int main() { std::cout << "Hello World!" << std::endl; exit(1); } C++ allows two types of comments, this example uses the characters // at the point in each line where the comments begin. This is a pre-processor command that Tells the compiler to insert code from The file iostream.
8
C++ Streams C++ streams can be used to send or receive data to/from files, the keyboard, terminal, other processes, devices,... There are two key operators for streams: –<< –>> These can be thought of as reading or writing. 8
9
cout / cin / cerr There are 3 variables defined for you that refer to specific streams that are commonly used: –cout is the “standard output”. –cin is the “standard input”. –cerr is the “standard error”. Writing to the cout stream will result in text appearing on the screen. Reading from the cin stream will store whatever is typed on the keyboard in some variable(s). 9
10
echo.cc // echo.cc /* Written for the C++ / G4MICE course M. Ellis - March 2008 */ #include int main() { std::string message; std::cout << "Please enter a message for me: "; std::cin >> message; std::cout << "Thank you, I have received your message: " << message << std::endl; exit(1); } 10 This is an example of the other kind of comment which can cover more than one line. Additional #include so that we can use strings
11
How to Compile As with the first example: g++ -o echo echo.cc 11
12
Some C/C++ Variables int (unsigned int, long int, short int,... ) –Integers of varying size (number of bits) bool –Boolean variable can only be true or false char –A single character (8 bits) double (float, long double,... ) –Floating point numbers string –String of characters 12
13
Variable Declaration ; = ; int count; int numPlanes = 3; double pi = 3.141592654; bool ok; std::string name = “MICE”; 13
14
What are ; and std:: ??? Commands in C/C++ must end with a ; C/C++ is free format, so you can have as much or as little white space as you like. Later on in the course we will look at namespaces and scope. For now, it is sufficient to know that a number of types and variables that we are using are in a namespace called “std”: –std::cout (the standard output stream variable) –std::string (the string type) 14
15
// variables.cc /* Written for the C++ / G4MICE course M. Ellis - March 2008 */ #include int main() { int age; double height; std::string name; std::cout << "Please tell me your name: "; std::cin >> name; std::cout << "Thank you " << name << ", what is your age? "; std::cin >> age; std::cout << "Finally, how tall are you in inches? "; std::cin >> height; std::cout << std::endl << std::endl; std::cout << name << " is " << age << " years old and is " << height << " inches tall" << std::endl; exit(1); } variables.cc 15
16
Exercises 1.Compile and run helloworld.cc 2.Compile and run echo.cc 3.Compile and run variables.cc 4.Create your own code from scratch, have it use the standard input and standard output and at least 3 variables of different types. 16
17
Types Quick reminder: –int, bool, char, double, float, string,... Some types can also be long or short and some can be unsigned: –unsigned long int x; Classes are new types that we can get from elsewhere (e.g. Standard Template Library or G4MICE) or which we can make ourselves. string is a class that the STL provides for us. 17
18
Control and Looping We will look at the following: –If –Else –While –For C/C++ also provides: –Switch –Case Which we will not cover in this course. 18
19
Operators Mathematical: + (addition) - (subtraction) * ( multiplication) / (division) % (modulus) Logical: & (bitwise AND) | ( bitwise OR) ! (NOT) 19
20
Logical Operators == equal to, this is different from =, which is the “assignment operator”!) != not equal to < less than > greater than <= less than or equal to >= greater than or equal to && logical AND || logical OR 20
21
Statement Blocks In all of the control and looping commands you may wish to have more than one command executed. To do this, we put the commands inside a pair of { } Any block of code can be collected in this manner (we will come back to this with scope later on). 21
22
if Statement if( condition ) expression; if( condition ) { expression1; expression2;... expressionN; } Note that the if() does not have a semicolon after it, that would be a NULL command: –If( condition ); This would do nothing. 22
23
else else can be added as many times as required: if( condition 1 ) expression 1; else if( condition 2) expression 2;... else expression N; As before, { } can be used as required. 23
24
while while will loop over the code so long as the condition is true: while( condition ) expression; while( condition ) { expression1; expression2;... expressionN; } 24
25
for A loop that allows you to set some initial values, specify the condition that must be true for looping to continue and specify code to be executed at the end of each loop: –for( x = 0; x < 10; x = x + 1 ) {... } This will start with x = 0 and execute the code in the {} and then repeat with x = 1, 2, 3,... up to 9. 25
26
++ -- += -= Several operators in addition to those we’ve already seen: ++x; increment x --y; decrement y; x += 5; add 5 to x; z -= 10; subtract 10 from z; These can be useful in loops, e.g.: –for( x = 0; x < 10; ++x ) 26
27
Control and Looping Example Download loop.cc, compile it and run it. Read through the code and let me know if anything is unclear. 27
28
Functions Functions in C are declared by specifying: –The return type (can be void if nothing is returned) –The function name –Whether it is const (we will get to this later) –Arguments to the function Examples: –void dump(); –double absoluteValue( double x ); 28
29
Absolute Value The file absolute.cc shows an example of a function that returns the absolute value of the parameter that is passed to it. Compile and run this and ensure that you understand how it works. 29
30
Parameter Passing Parameters to functions are only ever passed “by value”. That is, a copy of the value of the variable is sent to the function. There is a way to pass by reference, we will cover that in the next session. For now, you can’t change the value of a variable that is passed to a function. 30
31
Signatures The complete set of information about a function that uniquely identifies it is known as its signature. The signature consists of the function name, return type, constness and arguments. You can have more than one function with the same name, so long as they have different signatures. 31
32
signature.cc The file signature.cc shows an example of different functions with the same name, but different signatures. Compile and run this and ensure that you understand how it works. 32
33
scope Functions, variables and types may not be visible from all code. We have seen an example of the std namespace, within which variables such as cout and types such as string are defined. This is why we refer to them with std:: preceding the variable or type name. 33
34
variables inside { } If a variable is declared inside a { } block, it is only visible to the code inside that block. This means that you can temporarily declare a variable that will only exist while the code in that block is being executed. It also means that you can run the risk of having two different variables of the same name at the same time! 34
35
scope example The file scope.cc shows a range of examples of variables being visible to different fractions of the code. Compile and run this and ensure that you understand how it works. Note that it will NOT compile at first, you will need to understand why... 35
36
Final Exercise If you have time, add a function to the now working scope example. Experiment to understand whether the variables defined inside main() are visible inside the new function and vice versa. 36
37
After The Break Classes Pointers and References Makefiles Standard Template Library Unit testing Documentation Homework assignment for tomorrow! 37
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.