week13 - home - clark science centerexercise • write a program that reads the file data.txt,...

Post on 30-Jul-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

mith College

Computer Science

Dominique Thiébaut dthiebaut@smith.edu

CSC231Week 13— Introduction to C

Fall 2019

Complete the code

shown here

Computer Science Dominique Thiebaut

getcopy C/decrementArray.c

Exercise

Complete the code

shown here

Computer Science Dominique Thiebaut

Solution

Exercise

Computer Science Dominique Thiebaut

• Write a C program that uses functions to find the largest integer in A. The result is passed back using a return statement.

Solutiongetcopy C/findMaxUsingFunctionSol.c

Computer Science Dominique Thiebaut

Exercise

• Write another program that does the same thing but the max is passed back by reference.

Computer Science Dominique Thiebaut

Solutiongetcopy C/findMaxUsingFunction2sol.c

Computer Science Dominique Thiebaut

Input/OutputIO

Input From User

Computer Science Dominique Thiebaut

(cont’d)

a.outEnter your name, please: MickeyEnter your age: 21Enter your version of pi: 3.14159Mickey is 21 years old, and thinks pi is 3.1415901184

Computer Science Dominique Thiebaut

Dynamic Variables

Computer Science Dominique Thiebaut

• Dynamic: think "new" in Java

• malloc() = Memore Allocation for new data structure

Computer Science Dominique Thiebaut

RAM

Computer Science Dominique Thiebaut

user

pro

g

malloc()

user

pro

g

malloc()

RAM

Computer Science Dominique Thiebaut

OperatingSystem

RAM

Computer Science Dominique Thiebaut

OperatingSystem

dyn

user

pro

g

malloc()

RAM

Computer Science Dominique Thiebaut

OperatingSystem

dyn

(void*) p

user

pro

g

malloc()

RAM

Computer Science Dominique Thiebaut

OperatingSystem

dyn

(void*) p

p

user

pro

g

malloc()

Computer Science Dominique Thiebaut

getcopy C/malloc1.c

Malloc

Exercise• Modify the previous program that computed the

max of an array, but this time you allocate the array dynamically, with numbers provided by the user.

Computer Science Dominique Thiebaut

Solution

Computer Science Dominique Thiebaut

getcopy C/findMaxUsingFunction3sol.c

sizeof()can be tricky…

Computer Science Dominique Thiebaut

sizeof ()

Computer Science Dominique Thiebaut

sizeof(A) = 20sizeof(A[0]) = 4sizeof(B) = 8sizeof(B[0]) = 4sizeof(p) = 8sizeof(*p) = 4sizeof(name) = 14strlen(name) = 13sizeof(a) = 4sizeof(x) = 4

sizeof ()

Computer Science Dominique Thiebaut

sizeof(A) = 20sizeof(A[0]) = 4sizeof(B) = 8sizeof(B[0]) = 4sizeof(p) = 8sizeof(*p) = 4sizeof(name) = 14strlen(name) = 13sizeof(a) = 4sizeof(x) = 4

Different!

sizeof ()

Computer Science Dominique Thiebaut

File IO

File I/O: Output

Computer Science Dominique Thiebaut

C/fileIOOutput.c

File I/O: Input

Computer Science Dominique Thiebaut

C/fileIOInput.c

Computer Science Dominique Thiebaut

File I/O: Reading Ints [~handout] cat fileOfInts.txt 41 2 34 5 67 8 910 11 12

Computer Science Dominique Thiebaut

File I/O: Reading Ints

C/fileIOReadNumbers.c

Computer Science Dominique Thiebaut

[~handout] gcc fileIOReadNumbers.c[~handout] a.out1, 2, 34, 5, 67, 8, 910, 11, 12

File I/O: Reading Ints

Exercise• Write a program that reads the file data.txt, which

has the number of ints it contains on the first line, then one int per line for the rest of the file. Your program must use a dynamic array to store the numbers, and find the max of the array, and print it.

Computer Science Dominique Thiebaut

Function Prototypes

and Multi-File Projects

Computer Science Dominique Thiebaut

Original

Computer Science Dominique Thiebaut

myfuncs.c

smallestLargestSum3.c

Computer Science Dominique Thiebaut

myfuncs.h

Computer Science Dominique Thiebaut

Summary• C has a lot in common with Java

• C programmers must know how to use memory (malloc, pointers)

• No garbage collector: free dynamic structures yourself!

• Explicitly pass arguments by value or by reference to functions

Computer Science Dominique Thiebaut

D. Thiebaut, Computer Science, Smith College

End of Video Lecturehttps://www.youtube.com/watch?v=LFpoUFIfV0M&a=youtu.be

D. Thiebaut, Computer Science, Smith College

Logistics and Update

• Video lecture for Monday's snow day + Quiz

• No office hours today

• Office hours tomorrow (12/5) 12-1 p.m.

• Homework extended to 12/5 11:55 p.m.

• Homework 11 (optional) released tomorrow morning

D. Thiebaut, Computer Science, Smith College

And now, something completely different…

Executablegcc addition.c

D. Thiebaut, Computer Science, Smith College

And now, something completely different…

Executablegcc addition.c

gcc -S -m32 -masm=intel addition.c

D. Thiebaut, Computer Science, Smith College

ReviewMalloc

D. Thiebaut, Computer Science, Smith College

ReviewMalloc

Linked-Listsin C

Computer Science Dominique Thiebaut

D. Thiebaut, Computer Science, Smith College

Outline

• Linked Lists in C

• Structures in C

• Creating a Node

• Adding a Node

• Removing a Node

‘Alpha’

‘Zero’

‘Beta’

‘Apple’

head

"Alpha"

"Zero"

"Beta"

"Apple"

head

Computer Science Dominique Thiebaut

Computer Science Dominique Thiebaut

NULL

((void *)0)

"Alpha"

"Zero"

"Beta"

"Apple"

head

The Node in C"Alpha"

Computer Science Dominique Thiebaut

http://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html#Structures

C Structs

• Early attempt at encapsulating data

• Members are accessed using the dot notation:

http://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html#Structures

Computer Science Dominique Thiebaut

Struct Example

Computer Science Dominique Thiebaut

Struct Example

Computer Science Dominique Thiebaut

Struct Example

Computer Science Dominique Thiebaut

getcopy C/structExample.c

The Head of the List

Computer Science Dominique Thiebaut

head

The Head of the List

Computer Science Dominique Thiebaut

head

That’s anempty list!

Displaying the List

Computer Science Dominique Thiebaut

"Alpha" "Zero" "Apple"

head

"Beta"

Creating the List

Computer Science Dominique Thiebaut

"Apple"

head

"Beta"

Computer Science Dominique Thiebaut

Computer Science Dominique Thiebaut

Computer Science Dominique Thiebaut

getcopy C/linkedListStrings.c

Exercise

• Add code to the linkedListStrings.c program that will remove all the nodes from the list, one by one (and free them).

• Make your code display the list after each deletion

Computer Science Dominique Thiebaut

Exercise

• Use functions for adding and removing nodes…

Computer Science Dominique Thiebaut

Main ProgramCalling

Functions

Solution

Computer Science Dominique Thiebaut

getcopy C/linkedListStrings2.c

D. Thiebaut, Computer Science, Smith College

We stopped herelast time!

top related