Presentation is loading. Please wait.

Presentation is loading. Please wait.

Week 1 Part II Kyle Dewey. Overview Lab The art of programming Basic data types Variable declaration and initialization Data representation.

Similar presentations


Presentation on theme: "Week 1 Part II Kyle Dewey. Overview Lab The art of programming Basic data types Variable declaration and initialization Data representation."— Presentation transcript:

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?


Download ppt "Week 1 Part II Kyle Dewey. Overview Lab The art of programming Basic data types Variable declaration and initialization Data representation."

Similar presentations


Ads by Google