25
C

C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Page 1: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

C

Page 2: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

About the Crash Course

Cover sufficient C for simple programs:•variables and statements

•control

•functions

•arrays and strings

•pointers

Slides and captured lecture (video and sound) are available at:

www.cim.mcgill.ca/~jer/C/

Page 3: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

About the Crash Course

Next installments•part II: Wednesday, November 24, 16:30-18:00

•part III: Thursday, November 25, 18:00-19:30

Reference•Kernighan & Ritchie: "The C programming language",

2nd edition. Prentice-Hall, 1988.

Page 4: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Why C?

C is not always a good choice ...•Safety-critical systems

•Component-based programming / RAD

•...

... but in many applications you do want C•Legacy systems

•Speed, memory requirements

•Low-level programming (close to the machine)

•...

Page 5: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Your First C Program

•"The only way to learn a new programming language is by writing programs in it" [K&R]

/* A simple program that prints something */

#include <stdio.h>

main (){ printf ("Hello, world!\n");}

Page 6: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Declarations

Example:float x;double d = 5;int *p, i, a[100];char s[21];

Syntax:type variable_name, ... [= value];

Rules:•declarations must precede executable statements• int type may be modified by: long, short, unsigned

Page 7: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Changing Variable Values

Example:int x, y, z;x = 2;x = x + 1;

Getting Fancyy = z = 4 + 5;x += 1;++x;x++;y = x--;

Note:•assignment statements return value, which may or may

not be ignored; same goes for increment statements

Page 8: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Formatted Output

Example:int i = 10;float f = 2.5;char s [] = "hi";printf ("Jack\'s integer is %d\n", i);printf ("Jill\0x27s float is %f\n", f);printf ("My string s = %s\n", s);

Syntax:printf (string_with_formatting, var1, var2, ...);

•Formats: %d integer, %f float, %c character, %s string, …•Note "escape sequences": \n newline, \' quote, \0x27, etc.• #include <stdio.h> is compulsory; more about it later

Page 9: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Formatted Input

Example:#include <stdio.h>int i;float f;scanf ("%d %f\n", &i, &f); /* inputs an integer and a float */

Syntax:scanf (string_with_formatting, &var1, &var2,...);

Note:•The ampersand (&) is necessary because scanf modifies the

values stored in the respective variables; by comparison, printf only uses the values, without modifying them. More about this later

Page 10: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

I/O Example

What does this print?#include <stdio.h>

main (){ int n; float x; char mark; scanf ("%d %f %c", &n, &x, &mark); printf ("Of %d %s,\n%f got %c\’s\n", n, "students", x, mark);}

•Type in the following input: 86 85.999 A

Page 11: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

I/O Example

#include <stdio.h>

main (){ int n; float x; char mark; scanf ("%d %f %c", &n, &x, &mark); printf ("Of %d %s,\n%f got %c\’s\n", n, "students", x, mark);}

•Input: 86 85.999 A

•Output: Of 86 students,85.999001 got A's

Page 12: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Conditional Statements

Example:if (age < 0) {

printf ("warning: negative age\n"); age = -age;

}

Syntax:if (condition) statementif (condition) statement else statement

Rules:•the condition is an int ! (no booleans)

•parentheses required around conditional expression

•use curly braces to make a compound statement

Page 13: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

More Conditionals

Example:if (x < 0) printf ("x is less than 0\n");else if (x == 0) printf ("x is equal to 0\n");else printf ("x is greater than 0\n");

What’s wrong with this?if (x < 0) if (y < z) printf ("y is less than z\n");else printf ("x not less than 0\n");

Page 14: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

While Loops

Example:/* print "hi" forever */while (1) printf ("hi");

Syntax:while (condition) statement

Rules (again):•the condition is an int ! (no booleans)

•parentheses required around conditional expression

•use curly braces to make a compound statement

Page 15: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

For Loops

Example:/* print "hi" three times */int i; /* i continues to exist when loop ends */for (i = 0; i < 3 ; i++) printf ("hi");

Syntax:for (statement1; condition; statement2) statement3;

Equivalent to:statement1;while (condition) { statement3; statement2;}

Page 16: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Loop Example

/* print squares up to 100 */main ( ){ int j, up = 100; for (j = 0; j * j <= up; j++) printf ("%d \n", j * j);}

Note:•can’t do: for (int j = 0; ...

•waste of one multiplication per iteration

•can you make it more efficient?

Page 17: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Example (cont’d)

/* print squares up to 100 */void main ( ){ int j, up = 100, sq; for (j = 0; (sq = j * j) <= up; j++) printf ("%d \n", sq);}

Note:•recall equivalence to a while loop: condition is evaluated

before the loop body

Page 18: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Arrays

int years[45];float temperatures [11];void main () { years[0] = 2000; temperatures[11] = -45.67;}

Rules:•indices start at zero

•maximum valid index is the size of the array minus 1

•but C lets you go beyond the declared boundaries

• temperatures[11] is illegal

Page 19: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Characters

Characterschar a, b, c1, c2;a = '0'; b = '\037'; c1 = 'K'; c2 = c1 + 1;

•Assigns values: 48, 31, 75, 76•The sequences '0',...,'9', 'a',...,'z', 'A',...,'Z'

contain characters numbered consecutively

Castingprintf ("%c %d\n", c1, (int) c1);

•Outputs: K 75

Page 20: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Strings

Strings are '\0'-terminated arrays of char :char s[3] = "hi"; /* invisible '\0' */char t[3] = {'h', 'i', '\0'};

String operations#include <string.h>strlen ("there"); /* returns 5 */strcpy (s, t); /* copy t to s */strcmp (s, t) /* alphabetical comparison */

Page 21: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Exercise: Caesar's code

A simple code used by Caesar in the Gallic wars.

•Input: sequence of capital letters

•Output: another sequence of capital letters obtained by shifting each letter in the original sequence three places in the alphabet. Note: shifting wraps around.

•Example: KENNEDY -> NHQQHGB

Page 22: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Functions

/* Increment; takes an integer argument and * returns the argument plus one. */ int incr (int i){ int j; j = i + 1; return j;}

main () { int k, m = 4; k = incr(m); printf ("k = %d, m = %d\n", k, m);}

•output: k = 5, m = 4

Page 23: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

More about Functions

•might have no return type, and no return statement:void printhi (){ printf ("hi\n");}

•parameters are copied and can be modifiedint incr (int i){ i++; return i;}

•default (unspecified) return type is int

Page 24: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Variables within Functions

But this does not work:void no_incr (int i){ i++;}

void main () { int x = 5; no_incr(x); printf ("%d\n", x);}

•beware that modifications are on internal copies of the parameters.

•note: void main() since main does not return a value

Page 25: C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured

Exercise

Write a function that checks whether a sentence has 'title case':

•Arguments: sentence string

•Assume the string consists of letters and blanks only.

•Return true iff each word in the sentence starts with a capital letter and continues with lowercase letters.