Physics 2660: Fundamentals of Scientific Computing Lecture 2 Announcements
• HW01 is due this Saturday, electronically by noon.
• Start compiling using this command:
• My office hours:
– 3:30-­‐‑5pm Tuesdays in Room 022-­‐‑C (our computer lab)
• TA office hours
– In Room 022-­‐‑C
• Mondays 5:00-­‐‑8:00 pm
• Tuesdays 5:00-­‐‑8:00 pm
2
Review and Outline
• Recall last time:
– The Linux command line, shells, simple commands
– Remote connections, both shell and graphics
• Today:
–
–
–
–
–
–
–
Intro to programming languages and compilers
C program structure
Defining simple variables and doing arithmetic
FormaQed input/output
Operators Functions
Storing variable and variable types in C
3
Computer Programming in C: The Beginnings
4
Programming Languages
• As we mentioned earlier, the hardware inside a computer does not speak a human-­‐‑readable language
• But we as humans want to harness the power of the computer as a tool to solve problems
• Two options: – We communicate directly with computer using its language
– We write programs in something more familiar to us, and figure out how to translate
• Option 2 is preferred!
5
Programming Langauges
Dennis Ritchie:
-­‐‑ defined the relatively simple syntax of C as part of original Unix R&D
-­‐‑ wrote the first compiler for C programs
Standard simple language meant people could easily write compilers for any CPU architecture AND users could easily write new programs
6
Compilers
7
Our compiler: g++
8
C program structure
9
The C Language: An Example
*
10
Preprocessor Directives
11
Defining and Assigning Variables
12
Arithmetic
13
Using Functions
14
Variable Definition in C
15
Variable Types in C
• All variables in C must be declared as a particular type • Note: a “string” of characters in C is an array of single chars
16
Defining Variables in C
*
• In C, variables should be defined at the beginning of the function in which they are being used:
17
Defining Variables: Defaults?
*
• What if I do not initialize (give an initial value to) a defined variable?
• In C, this could be 0.0, could be anything, WILL BE GARBAGE.
– C does not initialize variables for you!
– It reuses memory space when defining a new variable though – and this memory space is not “flushed” before the assignment: stale contents
• It is best to always initialize your defined variables to something appropriate
18
Casting Variables
• Casting is the conversion from one variable type to another
– can either increase or decrease the precision of a stored value
Example:
These are known as implicit casts – the compiler knows how to increase/decrease precision for you!
Implicit casts are generally not a good idea – anything done for you by the compiler is generally not ideal.
19
Avoid Implicit Casts
20
Explicit Casts
• The preferred way to do this is the following:
• Virtues: – no warning messages
– you are more aware of the precision of the stored variables / values
21
Variables vs. Preprocessor Definitions
• You can define oft-­‐‑used constants (think the speed of light, etc.) using preprocessor definitions
• Use the #define command
Comparison:
#include <stdio.h>
int main(){
double radiusEarth = 6378.1;
double pi = 3.14159;
printf(
“The circumference of the Earth
= %f\n”, 2.0*pi*radiusEarth);
return(0);
}
With preprocessor definitions, the compiler sees all instances of PI and replaces with 3.14159, etc…
22
Preprocessor Definitions vs Constants
• The virtue of using preprocessor definitions is speed – can speed up your program at run time, since fewer vars are stored in memory, meaning fewer accesses.
• But there are dangers:
– universal replace might go poorly: What if you had a function called SAPInterestCalc() ?
– other preprocessor definitions are hidden from you – hard to see if yours clobbers another say in a header file
• Instead, one can use const :
Using const is the best coding practice – compiler won’t let it be altered!
23
FormaTed Input / Output
24
I/O Format Specifications
• Recall from lab00, you used printf() to print values to screen
• Similar function scanf() is used to read in values from the user:
• % is the control key indicating some I/O formaQed data
• followed by
an I/O specifier:
“i” and “d” are similar but very different. Use “d” for integers until we cover in more detail.
25
Format Mismatches
*
26
Format Mismatches
*
27
Format Mismatches
*
28
Format Mismatches
*
29
Format Mismatches
*
30
Format Mismatches
*
31
Format Mismatches
*
32
Controlling the Appearance of Output: Display
*
33
Controlling the Appearance of Output: Escape Characters
34
output v. input
• Essentially all of the lessons about controlling output can be applied to controlling / designing input to your program
• printf() and scanf() are not very different
• What about non-­‐‑interactive I/O?
– Use of files
– fopen(), fclose(), etc.
– Some experience in this week’s lab02
35
We’ll pick up from here next time. Don’t forget to do submit homework by Thursday @ noon. And of course do not forget lab on Thursday. See you then.
36