arrays (chapter 5) definition applications one-dimensional –declaration –initialization –use...

28
Arrays (Chapter 5) • Definition • Applications • One-Dimensional – Declaration – Initialization – Use • Multidimensional

Post on 15-Jan-2016

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Arrays (Chapter 5)

• Definition• Applications• One-Dimensional

– Declaration– Initialization– Use

• Multidimensional

Page 2: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Declaration

#define SIZE 10int main(void){ float sample[SIZE];

Page 3: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Initialization

#define SIZE 10int main(void){ float sample[SIZE] = {5.0, 1.2, -4.6, -7.5, 8.9, -1.0, 12.7, 0.0, 6.6, 4.2};

Page 4: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Gotchas

• First element of array is [0]• Last element of array is [n-1] (major source of bugs!)• No bounds check (MAJOR source of impossible-to-find bugs!)

Page 5: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Amino Acids

• I like this problem, but I don't especially like the way the book does it.

• The book isn't careful enough about range errors.• We can use a table-driven approach to looking up

the atomic weights of the elements. This takes more space (bad), less time (good) than the way the book looks up the weights. Also less opportunity for bugs (very, very good).

Page 6: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Background

• Amino Acid: Organic molecule composed of carbon, hydrogen, nitrogen, oxygen, sulfur.

• Building blocks of proteins.• Amino acids are what DNA codes for.• Weight is sum of weights of component atoms

Page 7: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Syntax

• One amino acid formula on a single line• Amino acid formula consists of sequence of atom

counts• Atom count is a letter specifying the atom, maybe

followed by a number specifying how many of them.• O2C3NH7\n

Page 8: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Semantics

• O2C3NH7\n– Two Oxygen (2.0 * 15.9994 = 31.9988)

Page 9: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Semantics

• O2C3NH7\n– Two Oxygen (2.0 * 15.9994 = 31.9988)– Three Carbon (3.0 * 12.011 = 36.033)

Page 10: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Semantics

• O2C3NH7\n– Two Oxygen (2.0 * 15.9994 = 31.9988)– Three Carbon (3.0 * 12.011 = 36.033)– One Nitrogen (14.00674)

Page 11: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Semantics

• O2C3NH7\n– Two Oxygen (2.0 * 15.9994 = 31.9988)– Three Carbon (3.0 * 12.011 = 36.033)– One Nitrogen (14.00674)– Seven Hydrogen (7.0 * 1.00794 = 7.05558)

Page 12: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Semantics

• O2C3NH7\n– Two Oxygen (2.0 * 15.9994 = 31.9988)– Three Carbon (3.0 * 12.011 = 36.033)– One Nitrogen (14.00674)– Seven Hydrogen (7.0 * 1.00794 = 7.05558)

• Total: 31.9988 + 36.033 + 14.00674 + 7.05558 = 89.09412

Page 13: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

ParsingO2C3NH7\n

• Find new atoms (letters)

Page 14: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

ParsingO2C3NH7\n

• Find new atoms (letters)– Look up atomic weight of atom (12.011)

Page 15: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

ParsingO2C3NH7\n

• Find new atoms (letters)– Look up atomic weight of atom (12.011)

• Count how many we've got (numbers)

Page 16: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

ParsingO2C3NH7\n

• Find new atoms (letters)– Look up atomic weight of atom (12.011)

• Count how many we've got (numbers)– 3

Page 17: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

ParsingO2C3NH7\n

• Find new atoms (letters)– Look up atomic weight of atom (12.011)

• Count how many we've got (numbers)– 3

• When we reach next atom, add previous to atomic weight of molecule

Page 18: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

ParsingO2C3NH7\n

• Find new atoms (letters)– Look up atomic weight of atom (12.011)

• Count how many we've got (numbers)– 3

• When we reach next atom, add previous to atomic weight of molecule– 3*12.011 = 36.033

Page 19: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Look Up Atomic Weight

Page 20: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Look Up Atomic Weight

Page 21: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Look Up Atomic Weight

Page 22: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Counting

numatoms = numatoms * 10.0 + newdigit;

Page 23: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Counting

numatoms = numatoms * 10.0 + newdigit;

123

Page 24: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Counting

numatoms = numatoms * 10.0 + newdigit;

1230*10 + 1 = 1

Page 25: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Counting

numatoms = numatoms * 10.0 + newdigit;

1231*10 + 2 = 12

Page 26: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Counting

numatoms = numatoms * 10.0 + newdigit;

12312*10 + 3 = 123

Page 27: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Special Cases

• First letter: make sure we don't put gibberish in molecular weight

• End of string: make sure we account for last atom• If user didn't enter number for an atom, it means '1'

Page 28: Arrays (Chapter 5) Definition Applications One-Dimensional –Declaration –Initialization –Use Multidimensional

Writing the code

• Write initialization, input, core loop, output• Handle special cases• Error checking