Week 5 Part I Kyle Dewey. Overview Exam will be back Thursday New office hour More on functions File I/O Project #2.

Slides:



Advertisements
Similar presentations
Character Arrays (Single-Dimensional Arrays) A char data type is needed to hold a single character. To store a string we have to use a single-dimensional.
Advertisements

Introduction to C Programming
File Management in C. What is a File? A file is a collection of related data that a computers treats as a single unit. Computers store files to secondary.
A C++ Crash Course Part II UW Association for Computing Machinery Questions & Feedback.
Using Files Declare a variable, called file pointer, of type FILE * Use function fopen to open a named file and associate this file with the file pointer.
C Functions. What are they? In general, functions are blocks of code that perform a number of pre-defined commands to accomplish something productive.
Overview of programming in C C is a fast, efficient, flexible programming language Paradigm: C is procedural (like Fortran, Pascal), not object oriented.
C Language.
I/O means Input and Output. One way: use standard input and standard output. To read in data, use scanf() (or a few other functions) To write out data,
Spring Semester 2013 Lecture 5
Lectures 10 & 11.
C Structures and Memory Allocation There is no class in C, but we may still want non- homogenous structures –So, we use the struct construct struct for.
Engineering EG167C - Computer Programming The Ohio State University Gateway Engineering Education Coalition Lect M1 P. 1Winter Quarter Midterm I Review.
1 Chapter 10 Strings and Pointers. 2 Introduction  String Constant  Example: printf(“Hello”); “Hello” : a string constant oA string constant is a series.
Lecture 20 Arrays and Strings
What is a pointer? First of all, it is a variable, just like other variables you studied So it has type, storage etc. Difference: it can only store the.
BITS Pilani, Pilani Campus TA C252 Computer Programming - II Vikas Singh File Handling.
File Management in C. A file is a collection of related data that a computers treats as a single unit. File is a collection of data stored permanently.
Files in C Rohit Khokher. Files in C Real life situations involve large volume of data and in such cases, the console oriented I/O operations pose two.
Programming in C Pointers and Arrays. 1/14/102 Pointers and Arrays In C, there is a strong relationship between pointers and arrays.In C, there is a strong.
CS16 Week 2 Part 2 Kyle Dewey. Overview Type coercion and casting More on assignment Pre/post increment/decrement scanf Constants Math library Errors.
Character Input and Output C and Data Structures Baojian Hua
C Language Summary HTML version. I/O Data Types Expressions Functions Loops and Decisions Preprocessor Statements.
Engineering H192 - Computer Programming The Ohio State University Gateway Engineering Education Coalition Lect 6P. 1Winter Quarter I/O in C Lecture 6.
Programming in C Pointers and Arrays. 1/14/102 Pointers and Arrays In C, there is a strong relationship between pointers and arrays.In C, there is a strong.
Console and File I/O - Basics Rudra Dutta CSC Spring 2007, Section 001.
Files Programs and data are stored on disk in structures called files Examples Turbo C++ - binary file Word binary file lab1.c - text file lab1.data.
1 Homework Introduction to HW7 –Complexity similar to HW6 –Don’t wait until last minute to start on it File Access will be needed in HW8.
Files COP3275 – PROGRAMMING USING C DIEGO J. RIVERA-GUTIERREZ.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Lucas Bang Lecture 8: Functions, File IO.
File Handling Spring 2013Programming and Data Structure1.
22. FILE INPUT/OUTPUT. File Pointers and Streams Declarations of functions that perform file I/O appear in. Each function requires a file pointer as a.
CGS 3460 More On File IO. CGS 3460 What is a File n A file is a package of information with a name attached to it. n Files are used for various purposes:
File IO and command line input CSE 2451 Rong Shi.
1 File Handling. 2 Storage seen so far All variables stored in memory Problem: the contents of memory are wiped out when the computer is powered off Example:
Dale Roberts Department of Computer and Information Science, School of Science, IUPUI C-Style Strings Strings and String Functions Dale Roberts, Lecturer.
Chapter 11: Data Files and File Processing Files and streams Creating a sequential access file Reading data from a sequential access file Using fgetc()
Chapter 7 : File Processing1 File-Oriented Input & Output CHAPTER 7.
1 CHAPTER6 CHAPTER 6. Objectives: You’ll learn about;  Introduction  Files and streams  Creating a sequential access file  Reading data from a sequential.
Lecture 11: Files & Arrays B Burlingame 18 November 2015.
CMSC 104, Version 9/011 The switch Statement Topics Multiple Selection switch Statement char Data Type and getchar( ) EOF constant Reading Section 4.7,
24-2 Perform File I/O using file pointers FILE * data-type Opening and closing files Character Input and Output String Input and Output Related Chapter:
GAME203 – C Files stdio.h C standard Input/Output “getchar()”
Files A collection of related data treated as a unit. Two types Text
Programming in C Pointers and Arrays. 1/14/102 Pointers and Arrays In C, there is a strong relationship between pointers and arrays.In C, there is a strong.
Chapter 16 Pointers and Arrays Pointers and Arrays We've seen examples of both of these in our LC-3 programs; now we'll see them in C. Pointer Address.
Connecting to Files In order to read or write to a file, we need to make a connection to it. There are several functions for doing this. fopen() – makes.
C Programming Day 2. 2 Copyright © 2005, Infosys Technologies Ltd ER/CORP/CRS/LA07/003 Version No. 1.0 Union –mechanism to create user defined data types.
User-Written Functions
Week 3 Part 2 Kyle Dewey.
A bit of C programming Lecture 3 Uli Raich.
RECURSION Recursion is a process where a function calls itself. main()
Chapter 22 – part a Stream refer to any source of input or any destination for output. Many small programs, obtain all their input from one stream usually.
File Access (7.5) CSE 2031 Fall July 2018.
CS111 Computer Programming
CSE1320 Files in C Dr. Sajib Datta
Programming in C Input / Output.
Programming in C Input / Output.
Files I/O, Streams, I/O Redirection, Reading with fscanf
I/O in C Lecture 6 Winter Quarter Engineering H192 Winter 2005
File I/O in C Lecture 7 Narrator: Lecture 7: File I/O in C.
File Input and Output.
File Handling.
Programming in C Input / Output.
File Handling in C.
Programming in C Pointers and Arrays.
Module 12 Input and Output
Quick Review EECS May 2019.
I/O CS580U - Fall 2018.
Files Chapter 8.
Presentation transcript:

Week 5 Part I Kyle Dewey

Overview Exam will be back Thursday New office hour More on functions File I/O Project #2

Office Hour

More on Functions

Recap... Consider a function foo that takes an int and a char and returns a double The function prototype for this looks like: double foo( int, char );

Recap... Consider a function foo that takes an int and a char and returns a double Lets say it adds them and multiplies the result by 2.5 The function definition looks like: double foo( int x, char y ) { return ( x + y ) * 2.5; }

Questions Why are function prototypes needed? Where do function prototypes go?

Relationship to Variables Many similarities Variable declaration shares similarities to function prototypes Sometimes called function declaration double foo( int, char ); int bar;...

Relationship to Variables Function declaration (function prototypes) are like variable declaration Function definition is like variable initialization Though the values (i.e. the function definitions) can never be changed

Relationship to Variables Function names have the same rules as variable names (i.e. can’t start with a number, etc.) Can actually have variables that hold pointers to functions

Definition and Use Function prototypes go at the top of a file Function definitions can be anywhere in a file

#include int min( int, int ); int main(); int min( int x, int y ) { if ( x < y ) return x; else return y; } int main() { int a, b; scanf( “%i %i”, &a, &b ); printf( “%i\n”, min( a, b ) ); return 0; }

Calling a Function To make a function do work, we must call it A function call is not the same as a function definition A function can be defined only once A function can be called as many times as we want Building a car versus driving a car

Function Call Semantics Say we have the following function definition: int min( int x, int y ) { if ( x < y ) return x; else return y; }

Function Call Semantics Say we call this function like so: int min( int x, int y ) { if ( x < y ) return x; else return y; } int main() { int z = min( 5, 6 ); }

Function Call Semantics Semantically, this is equivalent to: int main() { // int z = min( 5, 6 ); int z; int x = 5; int y = 6; if ( x < y ) z = x; else z = y; }

Key Insight Function parameters are treated just like variables being declared and initialized int main() { // int z = min( 5, 6 ); int z; int x = 5; int y = 6; if ( x < y ) z = x; else z = y; }

One Property Function arguments are copies of what was passed, not what was passed itself This is called “call-by-value”

Call-by-Value void changeIt( int x ) { x = 10; } int main() { int y = 1; changeIt( y ); // what does y equal? }

Call-by-Value void changeIt( int x ) { x = 10; } int main() { int y = 1; // changeIt( y ) int x = 10; // what does y equal? }

Back to scanf scanf needs the addresses of the variables that will hold what was read in This is precisely because of call-by- value We want to change the value of the variable itself, not a copy of the variable

Key Insight Function parameters are treated just like variables being declared and initialized int main() { // int z = min( 5, 6 ); int z; int x = 5; int y = 6; if ( x < y ) z = x; else z = y; }

A Second Property Type coercion occurs int asInt( double x ) { return x; } int main() { int y = asInt( 5.5 ); }

A Second Property Type coercion occurs int asInt( double x ) { return x; } int main() { // int y = asInt( 5.5 ); double x = 5.5; int y = x; }

Function Inputs / Outputs When a function takes a value, the value is an input (parameter / argument) The function’s return value is whatever the function returned (an output) void functions do not return values

Function Calls For non- void functions, a function call acts like an expression The function call returns whatever the output of the function was

Function Calls int max( int x, int y ) { if ( x > y ) return x; else return y; } int main() { int y = max( 4, 5 ) * 7 + 3; }

Function parameters vs. scanf Reading in an input ( scanf ) is not the same as taking a parameter scanf : get an input from the user Parameter: get an input from within the program The parameter approach is far more flexible

int max( int x, int y ) { if ( x > y ) return x; else return y; } int maxScanf() { int x, y; scanf( “%i %i”, &x, &y ); if ( x > y ) return x; else return y; }

int max( int x, int y ) { if ( x > y ) return x; else return y; } int maxScanf() { int x, y; scanf( “%i %i”, &x, &y ); return max( x, y ); }

Function Outputs Printing out an output ( printf ) is not the same as returning a value printf : print to the user via a terminal Returning: output a value wherever the function is called Returning is far more flexible

int max( int x, int y ) { if ( x > y ) return x; else return y; } void maxPrintf( int x, int y ) { if ( x > y ) printf( “%i\n”, x ); else printf( “%i\n”, y ); }

int max( int x, int y ) { if ( x > y ) return x; else return y; } void maxPrintf( int x, int y ) { printf( “%i\n”, max( x, y ) ); }

Flexibility Functions are far more reusable than printf / scanf Input / output can be changed later printf / scanf always refer to the terminal

Example We want to define a function that takes the max of 4 integers First with scanf / printf

void max2() { int a, b; scanf( “%i %i”, &a, &b ); if ( a > b ) printf( “%i\n”, a ); else printf( “%i\n”, b ); }

void max4() { int a, b, c, d; scanf( “%i %i %i %i”, &a, &b, &c, &d ); if ( a >= b && a >= c && a >= d ) printf( “%i\n”, a ); else if ( b >= a && b >= c && b >= d ) printf( “%i\n”, b ); else if ( c >= a && c >= b && c >= d ) printf( “%i\n”, c ); else printf( “%i\n”, d ); }

Example We want to define a function that takes the max of 4 integers Now with parameters / return values

int max2( int a, int b ) { if ( a > b ) return a; else return b; } void max2() { int a, b; scanf( “%i %i”, &a, &b ); if ( a > b ) printf( “%i\n”, a ); else printf( “%i\n”, b ); }

int max4( int a, int b, int c, int d ) { return max2( max2( a, b ), max2( c, d ) ); }

Code Difference Using printf / scanf : 21 lines Without printf / scanf : 10 lines Plus it’s more flexible Can be adapted to behave just like with printf / scanf with fewer lines!

The main Function Entry point for code outside of ch This function is called with command line arguments Should return 0 on program success, or return on program failure

Command Line Arguments The arguments specified to a program on the command line For example: emacs foo.txt foo.txt is a command-line argument to emacs

int max( int, int ); int main( int argc, char** argv ); int main( int argc, char** argv ) { printf( “%i\n”, max( 5, 2 ) ); return 0; } int max( int x, int y ) { if ( x > y ) return x; else return y; }

File Input / Output

File I/O Many programs manipulate files cat : read a file emacs : read & write to a file cp : read from one file (source) and write to another (destination)

Terminal vs. Files Reading to / writing from either is very similar Main difference: files stay on the system, but terminal output does not usually stay i.e. when you close the window, the files remain but the terminal output’s gone

Terminal vs. Files The following functions behave on files: fscanf fprintf getc putc Sound familiar?

Difference These functions also require where they are reading from / writing to printf always writes to the terminal, but fprintf can write anywhere scanf always reads from the terminal, but fscanf can read anywhere

printf Revisited Technically, printf does not write to the terminal It writes to stdout (standard output) stdout is usually (but not always!) the terminal printfstdoutTerminal

printf / fprintf These snippets do the exact same thing printf( “hello” );... fprintf( stdout, “hello” );

scanf Revisited Technically, scanf does not read from the terminal It reads from stdin (standard input) stdin is usually (but not always!) the terminal scanfstdinTerminal

scanf / fscanf These snippets do the exact same thing int x; scanf( “%i”, &x );... int x; fscanf( stdin, “%i”, &x );

getc / putc More equivalences int c = getchar();... int c = getc( stdin ); putchar( ‘a’ );... putc( ‘a’, stdout );

stdin / stdout These are file pointers of type FILE* All these functions take file pointers

fopen Your own file pointers can be made by opening a file fopen is the tool for this FILE* file = fopen( “file.txt”, “r” ); fprintf( file, “Hello” );...

fopen First argument: the name of the file to open Second argument: what to open the file for “r” : read only. File must exist. “w” : write only. If a file with the same name already exists it will be deleted and overwritten. Return value: file pointer, or the special constant NULL if failure occurs

fclose When done with a file, call fclose on it Note that operations can be performed only on open files If files aren’t open, the operations fail FILE* file = fopen( “file.txt”, “r” ); fprintf( file, “Hello” ); fclose( file );

makeHelloFile.c, catHelloFile.c

Techniques for Reading The data may need to be formatted in a certain way i.e. if we read in a dictionary of words, how do we know when one word ends and another begins? When we are out of words? How many words there are?

Techniques for Reading We could specify the number of words beforehand We could separate each word by a letter that is in no word (such as a newline) Could end the words with some special non-word identifier Files all end with the special character EOF (end of file)

Techniques for Reading 3 foo bar baz ;;;

Techniques for Reading For more examples, see the additional materials p3_4.c, p3_5.c (with corresponding sensor1.txt ), p3_6.c (with corresponding sensor2.txt ), p3_7.c (with corresponding sensor3.txt ), p3_8.c (with corresponding waves.txt )

Project #2