physics 2660: fundamentals of scientific...

Post on 05-Jun-2018

251 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Physics 2660: Fundamentals of Scientific Computing

Lecture 5 Instructor: Prof. Chris Neu (chris.neu@virginia.edu)

Reminder

•  I am back!

•  HW04 due Thursday 22 Feb electronically by noon

•  HW grades are coming. Please be patient.

•  Office hours: all held in our computer lab, room 022-C of this bldg–  Me: After lecture 3:30-4:30 every Tuesday –  TAs:

•  Mondays: 3-5pm and 6-8pm•  Wednesdays: 5-9pm

2

Review and Outline•  Last time:

–  C program structure–  Intro to a basic C program–  Defining simple variables and doing arithmetic–  FormaWed input/output via printf() and scanf()–  How variables’ values are stored on a computer–  More on formaWed I/O

•  Today:–  Comments–  Functions–  Conditional structures:

•  if, if/else, if/elseif/else•  switch/case

–  Loops•  Count-controlled loops: for()More on loops •  Conditioned controlled loops: while(), do

–  Random numbers

3

Comments Inside Your Code

4

Internally Documenting / Comments

5

Functions

6

Introduction to Functions

•  C is a simple language

•  Its utility is extended through the use of re-usable functions

•  Some functions are found in standard libraries like stdio.h and math.h

•  Users can write functions too – for many good reasons!

7

C Standard Library Functions

8

C Standard Library Functions

9

Common C Standard Libraries we will use:•  stdio.h•  math.h

Best to get in the habit of including these in every program you write!

You don’t even know WHERE these files are on galileo in order to use them.

Functions from the C math library

10

User-Defined Functions

•  Why would one want to write their own functions?

–  Avoid duplicating the same code many times within a program: streamlined simplicity

–  Re-usable functions are easier to maintain and modify

–  Functions are portable – can be used in other programs

–  Simplicity: code something intricate once and call it via a simple single line rather than multi-line complications

11

User-Defined Functions: Example Use Case

12

No

func

tions

– re

petit

ive!

User-Defined Functions: Use Case Example

13

Thre

e m

ain

part

s:

Prot

otyp

e, D

efini

tion,

and

Cal

ls

User-Defined Functions: Use Case Example

14

User-Defined Functions: Reusable?

15

Conditional Executions in C

16

Linear Code Execution in C

•  Simple pieces of code have lines of instructions that are executed linearly, calling external functions like printf:

•  This is not typical however•  Most programs need to do more intricate things in their

execution

17

#include <stdio.h> int main(void){int num = 5;printf(Hello, world. num = %d\n”,num);

return 0;}

Conditional Executions in C: if statements

18

Conditional Checks

19

Conditional Execution: if and else

20

Conditional Execution: if and else

21

Conditional Execution: switch and case

22

Conditional Execution: switch and case

23

if/else versus switch/case

24

The ? Operator

25

DANGER: “=“ versus “==“

26

DANGER: “=“ versus “==“

27

Take-away message:

Be careful to use “==“

in conditionals and not “=“.

Return Values and Tests

•  Values are returned for all conditional checks:–  if false, the value is zero ….. the value of the expression (5 < 3) is 0–  if true, the value is not zero ….. the value of the expression (5 > 3) is 1

•  We can use these characteristics in our code:

28

Return Values and Tests: From Functions

•  One can call a function that performs some test

29

“Did it fail?”

DANGER: Take Care with Floating-Point Numbers

30

DANGER: Take Care with Floating-Point Numbers

•  Quiz time:

31

DANGER: Take Care with Floating-Point Numbers

•  Quiz time: –  Lets say A = (10000000000.0 / 3.0) * 3.0

32

DANGER: Take Care with Floating-Point Numbers

•  Quiz time: –  Lets say A = (10000000000.0 / 3.0) * 3.0–  What is A?

33

DANGER: Take Care with Floating-Point Numbers

•  Quiz time: –  Lets say A = (10000000000.0 / 3.0) * 3.0–  What is A?–  Well, we all know the calculation should yield 10000000000.0

34

DANGER: Take Care with Floating-Point Numbers

•  Quiz time: –  Lets say A = (10000000000.0 / 3.0) * 3.0–  What is A?–  Well, we all know the calculation should yield 10000000000.0

–  The computer would evaluate things in this manner:

35

float A = (10000000000.0/3.0)*3.0;if (A==10000000000.0 ){ printf(“A=%lf\n”,A);} else printf(“A is not 10000000000.0 \n”);

DANGER: Take Care with Floating-Point Numbers

•  Quiz time: –  Lets say A = (10000000000.0 / 3.0) * 3.0–  What is A?–  Well, we all know the calculation should yield 10000000000.0

–  The computer would evaluate things in this manner:

–  What will be printed?

36

float A = (10000000000.0/3.0)*3.0;if (A==10000000000.0 ){ printf(“A=%lf\n”,A);} else printf(“A is not 10000000000.0 \n”);

DANGER: Take Care with Floating-Point Numbers

•  Quiz time: –  Lets say A = (10000000000.0 / 3.0) * 3.0–  What is A?–  Well, we all know the calculation should yield 10000000000.0

–  The computer would evaluate things in this manner:

–  What will be printed?

37

float A = (10000000000.0/3.0)*3.0;if (A==10000000000.0 ){ printf(“A=%lf\n”,A);} else printf(“A is not 10000000000.0 \n”);

A is not 10000000000.0 What?

*

Floats and Comparisons

38

Floats and Comparisons

39

Loops!

40

Loops

•  Loops allow computers to do what computers do best:–  Execute repetive boring tasks efficiently and accruately over and over

again

•  Two types:

41

Count-Controlled Loops!

42

Count-controlled loops: for()

43

How a for() loop works

44

for() loop: Important Parts

•  Every for() loop has four important parts:–  counter initialization–  test condition–  counter

update–  body of

execution

45

Example: Good for() loop usage

46

Example: BAD for() loop usage

47

for() loops and break statements

48

for() loops and continue statements

49

Nested Loops

50

Condition-Controlled Loops!

51

Count-controlled Loops vs. Condition-controlled Loops

52

Pre-test Conditional Loops: while()

53

Post-test Conditional Loops: do/while()

54

We’ll pick up from here next time.

See you Thursday in labs!

55

top related