510 likes | 660 Views
CSC 107 – Programming For Science. Lecture 2: Programming Basics & Variables. Announcements. Initial set of slides had wrong day for midterm Correct date on syllabus and in Angel Midterm is on October 21 Class time is not 60 minutes, but 75 minutes
E N D
CSC 107 – Programming For Science Lecture 2:Programming Basics & Variables
Announcements • Initial set of slides had wrong day for midterm • Correct date on syllabus and in Angel Midterm is on October 21 • Class time is not 60 minutes, but 75 minutes • I screwed this up on Tuesday and wanted to apologize • If time permits, still have Tuesday’s actual activity(otherwise I will post it & solution to Angel)
History of C • Dennis Ritchie developed C from 1969 – 1973 • Based upon B (& other) earlier languages • Since its creation, language grown organically • Tradition of adding features beyond standard as desired
History of C++ • BjarneStroustrup created to add “objects” • Also included many other improvements to language • Name is inside joke: "++" is increment operator in C • Updated for quick growth • 2.0 release in 1989 • 1998 adopted as ISO standard • C++ 201xin development now
C Versus C++ C++ is designed to be as compatible with C as possible, thereby providing a smooth transition from C
C Versus C++ C++ C
C Versus C++ • Latest definition of C added most C++ features • Not classes & objects, these only found in C++ • For this reason, also not a part of CSC 107 • Differences now minimal and easily avoided • Once objects removed, C++ just “looser” C • Removes annoying restrictions that had been in C • Since makes life easier, often supported in C anyway
Computers have no common-sense • They will only do what you tell them to do • NOT what you want them to do, which often differs • While this is true for every computer does • Programming highlights exactly how this happens • As you will see, C++ does nothing to prevent issues
Computers have no common-sense • They will only do what you tell them to do • NOT what you want them to do, which often differs
Case-Sensitivity • Example of computers being very literal • And language not helping by fixing what you say • main, Main, & MAiNtreated as different words • Case of the letters matters, not just the words • Could be different, so C++ won’t change Main to main • Can help prevent easy mistakes from swapping names • With just a little practice, becomes second nature
“Whitespace” • One (very small) way C++ actually helps you • C++ treats whitespace equally – spaces, enters, & tabs • Whether 1 or 1000000000000 – all will be ignored • Cannot use in symbol, whitespace splits words • Treats these as different “: :” and “::” • Spaces between words needed, but not counted • Wecansplitwordsbutthecomputercannot
“Whitespace” • One (very small) way C++ actually helps you • C++ treats whitespace equally – spaces, enters, & tabs • Whether 1 or 1000000000000 – all will be ignored • Cannot use in symbol, whitespace splits words • Treats these as different “: :” and “::” • Spaces between words needed, but not counted • Wecansplitwordsbutthecomputercannot
Your First C++ Program #include <iostream>using std::cout;int main() {/* Hi, Mom. This is a comment that goes over 2 line. */ std::cout << “Hello world!”; return 0;// This comment goes to the line’s end}
#include Statements #include <iostream>using std::cout;/* Hi, Mom. This is a comment that goes over 2 line. */int main() { std::cout << “Hello world!”; return 0;// This comment goes to the line’s end} • Nearly every C++file begins with this directive • May add more #includeto include other files • Contents of included file usable as if it were here • Easy way to copy ideas across multiple files • Programs can use two types of #include statements • Include system fileusing#include <filename> • #include “filename”includes a file you wrote
Watch Me Pull a Rabbit #include <iostream>using std::cout;/* Hi, Mom. This is a comment that goes over 2 line. */int main() { std::cout << “Hello world!”; return 0;// This comment goes to the line’s end} • For now, automaticallystart each file with this line • Details are unimportant – consider it magic
Watch Me Pull a Rabbit #include <iostream>using std::cout;/* Hi, Mom. This is a comment that goes over 2 line. */int main() { std::cout << “Hello world!”; return 0;// This comment goes to the line’s end} • For now, automaticallystart each file with this line • Details are unimportant – consider it magic
Your First C++ Program #include <iostream>using std::cout;int main() {/* Hi, Mom. This is a comment that goes over 2 line. */ std::cout << “Hello world!”; return 0;// This comment goes to the line’s end}
Using Commands #include <iostream>using std::cout;/* Hi, Mom. This is a comment that goes over 2 line. */int main() { std::cout << “Hello world!”; return 0;// This comment goes to the line’s end} • More “magic”, but usinghas less important purpose • Tells compiler we are lazy & save some typing • Two types of using statements to choose from • Specify single shortcutwith using std::cout • using std;gives you a list of shortcuts to use • Unlike #include statements, usingnever required • Do not worry about it – will not be using them
Your First C++ Program #include <iostream>using std::cout;int main() {/* Hi, Mom. This is a comment that goes over 2 line. */ std::cout << “Hello world!”; return 0;// This comment goes to the line’s end}
main Function #include <iostream>using std::cout;int main() {/* Hi, Mom. This is a comment that goes over 2 line. */ std::cout << “Hello world!”; return 0;// This comment goes to the line’s end} • All C++ programs contain function called main • Tells computer where to start running program • Code inside the braces will be what is executed • For the moment, consider this more “magic”
main Function #include <iosteam>using std::cout;int main() {/* Hi, Mom. This is a comment that goes over 2 line. */ std::cout << “Hello world!”; return 0;// This comment goes to the line’s end} • All C++ programs contain function called main • Tells computer where to start running program • Code inside the braces will be what is executed • For the moment, consider this more “magic”
Comments • Vitalfor writing and maintaining any program • Not required to run program - only for human eyes • Computer simply ignores anything in a comment • Use to describe code in simple English • Siekonnenauchauf Deutsch screiben • o U c%dwrte n txt msg • Should be used liberally • I add comments where cannot see what code does • Impossible to have too many comments, if readable
Comments in C++ • Double slash comments continue to line’s enda = a – 4; // Hi, Mom!// This entire line is a comment! • /* … */ comments can be on one or more linesa = a - /* Hi, Mom! */4;/* This comment takes an entire line. *//* This is a really long comment that * goes on to multiple lines. The stars on * lines 2 and on are optional, but * makes things easier to read. */
Pre-processor Directives • Code “pre-processed” before compilation • No need to request it --- automatically occurs • Easier-to-read code results from this process • Just like using comments -- notice a recurring theme? • Pre-processor directives start with # • One directive per line & nothing else on the line • Directives should not span multiple lines
Symbolic Constants • Directive can be used to name a constant • Any/all lines BELOWdirective can use this constant • Pre-processor replaces name with value • Compiler sees value as if that were written there • When reading the code, programmer sees name • Makes code much easier to read, write, debug • Names traditionally in all CAPITAL letters • THIS IS NOT REQUIRED, but common convention
What You Write And Work With #define PI 3.1415962#define AVOGADRO 6.022E23 #define MY_NAME “Matthew Hertz”#define DUMB_EXAMPLE MY_NAMEdouble area = PI * (r * r);cout << MY_NAME;cout << DUMB_EXAMPLE;
What The Compiler Sees #define PI 3.1415962#define AVOGADRO 6.022E23 #define MY_NAME “Matthew Hertz”#define DUMB_EXAMPLE MY_NAMEdouble area = PI * (r * r);cout << MY_NAME;cout << DUMB_EXAMPLE;
What The Compiler Sees #define AVOGADRO 6.022E23 #define MY_NAME “Matthew Hertz”#define DUMB_EXAMPLE MY_NAMEdouble area = 3.1415962 * (r * r);cout << MY_NAME;cout << DUMB_EXAMPLE;
What The Compiler Sees #define AVOGADRO 6.022E23 #define MY_NAME “Matthew Hertz”#define DUMB_EXAMPLE MY_NAMEdouble area = 3.1415962 * (r * r);cout << MY_NAME;cout << DUMB_EXAMPLE;
What The Compiler Sees #define MY_NAME “Matthew Hertz”#define DUMB_EXAMPLE MY_NAMEdouble area = 3.1415962 * (r * r);cout << MY_NAME;cout << DUMB_EXAMPLE;
What The Compiler Sees #define DUMB_EXAMPLE “Matthew Hertz”double area = 3.1415962 * (r * r);cout << “Matthew Hertz”;cout << DUMB_EXAMPLE;
What The Compiler Sees double area = 3.1415962 * (r * r);cout << “Matthew Hertz”;cout << “Matthew Hertz”;
What The Compiler Sees double area = 3.1415962 * (r * r);cout << “Matthew Hertz”;cout << “Matthew Hertz”;
Variables • Variable names location to store data • Memory location's initial value is unknown • Assignments update memory location with new value • Memory location updated by assignment ONLY • When variable is used in program… • …uses current value at that memory location • Just about everything (interesting) uses variables
Variable Declarations • Variables must be declared before can be used • Way of getting computer to make space for variable • States how to interpret memory in future uses • Allows the compiler to check if uses are legal • Declarations must include two pieces: • Each variable must have legal, unique name • Type of data that the variable stores
Variable Names • Begin with letter or underscore (_) • Then use any letters, numbers, or underscore • C++ case-sensitive when naming variables • Will treat as different Mass, mass, & masS • Unique name* needed for each variable • Computer wouldn't know which of 1,000 bobs to use • Reserved words are… reserved and can't be used • Includes all type names on p. 83 of book • void, unsigned, class also reserved words
Variable Name Conventions • Usually names begin with lowercase letter • Helps clarify variables & symbolic constants • Provide good idea of what variable stores • Split multiple uses into multiple variables • Some things always make for bad names • tmp, b, l(lowercase letter L) • Anything would not say to parents and/or priest
Variable Name Conventions • Usually names begin with lowercase letter • Helps clarify variables & symbolic constants • Provide good idea of what variable stores • Split multiple uses into multiple variables • Some things always make for bad names • tmp, b, l(lowercase letter L) • Anything would not sayto parents and/or priest
Data Types • Each variable also has data type • How program treats variable’s value defined by this • Single true or false value held by bool • C/C++ defines7 numeric data types • Integer types: short, int, long, long long • Decimal types: float, double, long double • Ranges for each type is not really standardized • Non-negative versions using unsigned ______ • chardata type can hold a character
Representing Text • Most computers you find follow ASCII standard • American Standard Code for Information Interchange • 256 (= 28) possible characters in extended definition • Since computers are stupid,need to set fixed size • Only use 0s & 1s within computer – all it knows • Number still stored, but character is displayed • For number 97,ais printed • Prints & for number 38 • For number 55,7is printed
There Is No Character • For computer, there are no characters • Add to actual number just like normal addition:’M’+ 3 = 77 + 3 = 80 (’P’)’0’ + 5 = 48 + 5 = 53 (’5’) 9 + ’1’ = 49 + 9 = 58 (’:’)’1’+’0’ = 49 + 48= 97 (’a’) • Can also use to subtract, divide, any other operation
Writing Variable Declarations • Single variable declared as: typename;double goodNameExample;short bad; • Can also declare multiple variables at once:inti, j;long doublek,l,m,n,o,p;float thisIsAReallyLongName,thisIsAnotherLongName;
Writing Variable Declarations • Could also specify initial value for variable • Variable, constant, literal, or expression can be used inti = 0.0;long j = -1;long double k = -0.000232847812;long l = j, many, minusJ= -j;char c = ‘i’;char newLine= ‘\n’;char tab = ‘\t’;
Writing Variable Declarations • Could also specify initial value for variable • Variable, constant, literal, or expression can be used inti = 0.0;long j = -1;long double k = -0.000232847812;long l = j, many, minusJ= -j;char c = ‘i’;char newLine= ‘\n’;char tab = ‘\t’;
Constants • Constants very similar to variables • Must be declared with a data type and unique name • const data_typevar_namedeclares variable • Value of constant fixed when declared, however • Variables & constants treated and used similarly
Your Turn • Get in groups & work on following activity