Download presentation
Presentation is loading. Please wait.
Published byTanya Houtchens Modified over 9 years ago
1
Week 1 Part II Kyle Dewey
2
Overview Lab The art of programming Basic data types Variable declaration and initialization Data representation
3
Lab 1
4
The Art of Programming
5
General Advice Top-down programming: Start with the big picture and get more specific Bottom-up programming: work up to the big picture by glueing together smaller, existing pieces Divide and conquer: break a problem up into individual piecs
6
Top-Down Programming Start general and gradually become specific, filling in the details as you go along
7
Top-Down Make Sandwich
8
Top-Down Make Sandwich Put Meat on Bread Put Sides Together
9
Top-Down Make Sandwich Put Sides Together Put Meat on Bread Get Meat from Fridge Get Bread from Cabinet
10
Top-Down Make Sandwich Put Sides Together Put Meat on Bread Get Meat from Fridge Get Bread from Cabinet Open Fridge... Open Cabinet...
11
Bottom-Up Programming Glue preexisting pieces together to derive a solution
12
Bottom-Up Handlebars Frame Wheels Chain Gears
13
Handlebars Frame Wheels Chain Gears Bolt
14
Bottom-Up Handlebars Frame Wheels Chain Gears Bolt
15
Bottom-Up Handlebars Frame Wheels Chain Gears Bolt Oil
16
Bottom-Up Handlebars Frame Wheels Chain Gears Bolt Oil Chain Tool
17
Combination printf / scanf are generally written once (preexisting) A middle ground
18
Divide and Conquer Really part of top-down and bottom-up Break a problem down into distinct subproblems, solve them individually, and finally combine them
19
Divide and Conquer Program Input Output
20
Divide and Conquer Subprogram 1 Input Output Subprogram 2 Output / Input
21
Divide and Conquer Input Output Subprogram 2 Subprogram A Subprogram B Output / Input
22
General Five Step Process 1. Problem Statement 2. Input / Output Description 3. Hand Example 4. Algorithm Development 5. Testing
23
General Five Step Process 1. Problem Statement 2. Input / Output Description 3. Hand Example 4. Algorithm Development 5. Testing
24
Problem Statement What are we trying to solve? (Believe it or not, real software often goes astray here arguably more than anywhere else)
25
General Five Step Process 1. Problem Statement 2. Input / Output Description 3. Hand Example 4. Algorithm Development 5. Testing
26
Input / Output Description What are the program inputs and what are the outputs? Program Input I Input 2 (A miracle occurs) Output 1 Output 2
27
General Five Step Process 1. Problem Statement 2. Input / Output Description 3. Hand Example 4. Algorithm Development 5. Testing
28
Hand Example Do the problem by hand See if you actually understand what must be done
29
General Five Step Process 1. Problem Statement 2. Input / Output Description 3. Hand Example 4. Algorithm Development 5. Testing
30
Algorithm Development Steps needed to solve the problem Ultimately involves writing code “Days of coding can save you hours of planning”
31
General Five Step Process 1. Problem Statement 2. Input / Output Description 3. Hand Example 4. Algorithm Development 5. Testing
32
Testing See if solution actually works Important step! “50% of our code is tests”
33
TDD Test-driven development Write tests before code Wildly popular right now The point: testing is important!
34
C
35
hello.c
36
Running Code Via make / gcc / cc (compilation) Via ch (interpretation)
37
Compilation Code is ultimately converted to a form the machine understands directly The result runs as fast as the machine Certain interdependencies not handled
38
Object Files 1: somethingFromHere(); 2: somethingFromElsewhere(); 3: somethingElseFromHere(); somethingFromHer e somethingElseFromHer e somethingFromElsewh ere
39
Linking Technically separate from compilation, but the two often get conflated Connects different pieces of code together
40
Linking somethingFromHer e somethingElseFromHer e somethingFromElsewhere
41
Linking somethingFromHeresomethingFromElsewheresomethingElseFromHere
42
Overall Process Source Code File #1 Source Code File #2 Object File #1 Object File #2 Executable Compilation Linking
43
Question Why separate compilation and linking?
44
Interpretation As with ch A program that understands the language runs it directly Runs as fast as the interpreter
45
Questions Why compile versus interpret? Why interpret versus compile?
46
Types
47
All data in C has a type Types determine: What can be done with the data How much space they take up (as with the sizeof operator)
48
Basic Types int : Integers (i.e. 1, 2, 3...) Come in both signed and unsigned forms double : floating point numbers (i.e. 5.1, 7.8, 2.93,...) char : A character (i.e. a, b, c,...)
49
Variables A container for a value Must have a type
50
Variable Declaration Telling the compiler that a variable with a given name and type can be used int myInteger; double myFloatingPoint; char myCharacter;
51
Question int myVariable; int x = myVariable + 1; // what does x equal?
52
Answer? ch : 1 gcc : 1
53
Uninitialized Variables Officially, the initial value is “undefined” Undefined means “anything goes” Can be a source of tricky bugs
54
Variable Assignment The values of variables can be initialized... int myVariable = 0; -or- int myVariable; myVariable = 0;
55
Variable Assignment...or changed on the fly... int myVariable = 0; myVariable = 5 + 2;
56
Variable Assignment...or even be used to update the same variable! int myVariable = 0; myVariable = 5 + 2; myVariable = 10 - myVariable;
57
Data Representation
58
Many programming languages abstract away data representation C is not (exactly) one of those languages
59
Some Definitions bit: binary digit (true/false, 0/1, yes/no) byte: 8 bits kilobyte: 1024 bytes
60
Sizes If a bit can hold two possible values... And a byte holds 8 bits... How many possible values in a byte? A kilobyte?
61
Sizes and Types The actual size of variables depends on the compiler and the particular computer sizeof is your friend if it’s important, as is limits.h (see typelimits.c )
62
Questions Integers are often 4 bytes. How many possible values can this hold? Signed versus unsigned integers: Does this make a difference for size?
63
Questions What’s the largest number that can be stored in an unsigned 4 byte integer? What’s around the largest number that can be stored in a signed 4 byte integer?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.