Hello world!

A first program in C++ Goals

● By the end of this lesson you will be able to: – Log on to a remote server from your computer – Enter basic commands – Use a text editor in Linux – Write a computer program – Compile and execute a computer program Beginning

● A little bit of everything at once – Terminal emulation – Linux usage – Text editors – Compilers – Execution – Debugging Terminal emulation

● Terminal : program to connect from your computer to a (command line or )

● CS department has Linux servers that will be used for programming and submitting assignments

● PuTTY is a popular terminal emulator for Windows, while you can connect from the terminal in OS X Server access

● CS server is bobby.cs.unlv.edu

● You can connect via the secure shell (SSH) protocol

● If you do not have an account, visit tux.cs.unlv.edu for more information PuTTY installation

● To install PuTTY, visit .org and download & run the 32-bit or 64-bit MSI installer

● Run PuTTY, then enter the following data: – Host Name: bobby.cs.unlv.edu – Connection type: SSH (this should modify the port to 22) – Saved Sessions: bobby – In Connection:

● Seconds between keepalives: 30 – In Connection → Data:

● Auto-login username: your username ● Go back to the Session screen, hit Save, select your bobby saved session, and click open

● You will get a warning message about security and keys, but just accept it Connecting via macOS

● Open a terminal by going to Finder → Applications → Utilities → Terminal

● Type ssh [email protected]

● You may get a message about keys, security, etc. – just type yes – this will only happen the first time Transferring files

● You may want to transfer files between the server and your computer, including for printing purposes

● For Windows, I recommend WinSCP (use SFTP or SCP)

● For macOS, I recommend Cyberduck

● Download and install, enter server information, and pick either SCP or SFTP as your protocol Why use CS department servers?

● Familiarity with Linux shells is a very useful skill to have

● Future courses and future jobs will utilize Linux

● You can log in from almost anywhere you have an Internet connection, including UNLV lab computers

● To submit your programs

● To access my shared programs and data

● It provides a common familiar platform to use/discuss all necessary things related to programming Using Linux

● Linux can be graphical in the same way that Windows is, but when logging in to a terminal everything is text-based

● You will interact with the server by typing various commands

● Some examples: – ls – to view a list of the files in the current directory – nano – to open a text editor to write a program in – g++ – to compile a program that you have written Text editors

● Text editor: a program that allows you to view/edit text

● We will use a text editor to write programs

● Common Linux text editors for programming: – nano – – emacs ● These editors have features that make programming easier Compiling & executing

● Compiler: A program that turns a program that you write into something that the computer can run

● The compiler will either successfully compile or produce an error with details

● Upon successful compilation, the program can be executed

● The standard Linux compiler for C++ is called g++ Steps for writing your first program

0) Download a terminal emulator (PuTTY) 1) Log on to a server (bobby) 2) Open a text editor (nano) 3) Type in a program 4) Save & exit text editor 5) Compile program (g++) 6) Execute program What is “Hello world!”?

● “Hello world!” refers to a very basic program that prints out a simple message to the screen that says Hello world!

● For both experienced and beginner programmers, such a program illustrates: – Basic syntax – Basic style – The bare minimum needed to write a program that does something useful ● You do not need to fully understand the what and why of every part of the program right now Hello world!

Line Program number 1 #include 2 3 using namespace std; 4 5 int main() 6 { 7 cout << "Hello world!" << endl; 8 9 return 0; 10 } ● Line 1: – A preprocessor directive that includes things from the iostream (input/output stream) library – needed for cout on line 7 Hello world!

Line Program number 1 #include 2 3 using namespace std; 4 5 int main() 6 { 7 cout << "Hello world!" << endl; 8 9 return 0; 10 } ● Lines 2, 4, and 8: – Blank lines – not required, but for complicated programs having blank lines are considered whitespace and a component of good style Hello world!

Line Program number 1 #include 2 3 using namespace std; 4 5 int main() 6 { 7 cout << "Hello world!" << endl; 8 9 return 0; 10 } ● Line 3: – Tells the compiler we will be using the std (standard) namespace. This is not required, but if we did not include it then when we use cout / endl on line 7, we would have to use std::cout / std::endl – The semicolon ; at the end is commonly used to end many statements Hello world!

Line Program number 1 #include 2 3 using namespace std; 4 5 int main() 6 { 7 cout << "Hello world!" << endl; 8 9 return 0; 10 } ● Line 5: – Every C++ program has a main function (a.k.a. main body) – Eventually you will write other functions, but the program always starts executing in main() – The int before main indicates that this function returns an integer (see line 9) Hello world!

Line Program number 1 #include 2 3 using namespace std; 4 5 int main() 6 { 7 cout << "Hello world!" << endl; 8 9 return 0; 10 } ● Lines 6 and 10: – An open brace { and a close brace } enclose a block of statements, in this case the main body – The lines between the braces are indented – another component of good style Hello world!

Line Program number 1 #include 2 3 using namespace std; 4 5 int main() 6 { 7 cout << "Hello world!" << endl; 8 9 return 0; 10 } ● Line 7: – cout is an object and is used to output things to the standard output stream (the screen) – << is the insertion operator and is used to insert things into the stream – "Hello world!" is a string that is to be output – endl is used for a blank line and to flush the bufer Hello world!

Line Program number 1 #include 2 3 using namespace std; 4 5 int main() 6 { 7 cout << "Hello world!" << endl; 8 9 return 0; 10 } ● Line 9 – Corresponding to the int in line 5, this line exits the main body (thus ending the program) and returns a value of 0 to the operating system Compiling the program

● After you have typed the program into a text editor, save the file

● When writing C++ programs it is standard, though not required, to name your files with a .cpp extension: – hello.cpp – assignment_1.cpp – 1.cpp ● Suppose you named your file hello.cpp – to compile you will type g++ hello.cpp Compiling the program

● If compilation was successful then there will be no output – the next thing you see will be your shell prompt

● If there was a problem with the program the compiler will display an error message

● If you get an error message, double check everything – you may have misspelled something (e.g. cuot instead of cout) or left out a semicolon Running the program

● If the program compiles successfully, the compiler will produce an executable file called a.out

● You can execute a.out by typing ./a.out

● You should see the text Hello world! displayed on the terminal Exploration

● What happens if you type diferent things between the quotes?

● What happens if you add/remove certain lines or characters?

● What happens if you add/remove spaces or blank lines?