welcome! 0 [webcms3.cse.unsw.edu.au]...comp1511 18s1 1— lecture 10 — strings+arrarys+functions...

30
0 Welcome! COMP1511 18s1 Programming Fundamentals

Upload: others

Post on 08-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

0Welcome!COMP1511 18s1

Programming Fundamentals

Page 2: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

1COMP1511 18s1 — Lecture 10 —

Strings+Arrarys+FunctionsAndrew Bennett

<[email protected]>

Jashank Jeremy <[email protected]>

Page 3: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

Before we begin… 

introduce yourself to the person sitting next to you

 

why did they decide to study computing?

Page 4: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

3

Overviewafter this lecture, you should be able to…

understand the basics of working with getchar, putchar, fgets

write programs using strings to solve simple problems

have a deeper understanding about arrays

have a deeper understanding about calling functions and function parameters

have a deeper understanding about passing values into functions

(note: you shouldn’t be able to do all of these immediately after watching this lecture. however, this lecture should (hopefully!) give you the foundations you need to develop these skills. remember: programming is

like learning any other language, it takes consistent and regular practice.)

Page 5: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

4

AdminDon’t panic!

assignment 1 due TONIGHT you can do it!

week 5 weekly test due thursday don’t be scared!

lab marks released post in class forum || email your tutor

don’t forget about help sessions! see course website for details

Page 6: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

5

remember strings?a string is an array of characters

char name[] = "ANDREW";

┌───┬───┬───┬───┬───┬───┬────┐

│ A │ N │ D │ R │ E │ W │ \0 │

└───┴───┴───┴───┴───┴───┴────┘

| 0 | 1 | 2 | 3 | 4 | 5 | 6

Page 7: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

6

remember strings?characters store ASCII values

char name[] = "ANDREW";

┌───┬───┬───┬───┬───┬───┬────┐

│ A │ N │ D │ R │ E │ W │ \0 │

└───┴───┴───┴───┴───┴───┴────┘

| 0 | 1 | 2 | 3 | 4 | 5 | 6

is equivalent to

┌───┬───┬───┬───┬───┬───┬────┐

│65 │78 │68 │83 │69 │87 │ 0 │

└───┴───┴───┴───┴───┴───┴────┘

| 0 | 1 | 2 | 3 | 4 | 5 | 6

Page 8: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

7

remember strings?never use the ASCII values directly

char name[] = "ANDREW";

// Prints out A

printf("name[0] as a char is: %c\n");

// Prints out 65

printf("name[0] as an int is: %d\n");

Page 9: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

8

remember strings?never use the ASCII values directly

int some_letter = 'A';

int another_letter = 65;

assert(some_letter == another_letter);

we can acccess the ASCII value for the letter A with ‘A’.

much better to use ‘A’ than 65 – why?

Page 10: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

9

letters are just ASCII values are just lettersASCII values are sequential

printf("the ascii value for %c is: %d\n", 'A', 'A');

printf("the ascii value for %c is: %d\n", 'B', 'B');

printf("the ascii value for %c is: %d\n", 'C', 'C');

Page 11: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

10

letters are just ASCII values are just lettersthis means we can do cool things

// what will something be?

int something = 'B' - 'A';

Page 12: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

11

getchar and putchargetchar()

reads a character from standard input returns an int

putchar('A')

prints a character to standard output

let’s try it!

Page 13: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

12

using getchar and putchar in a loop

while (c != EOF) {

printf("%c", c);

c = getchar();

}

Page 14: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

13

using getchar and putchar in a loop

int c = ????

while (c != EOF) {

printf("%c", c);

c = getchar();

}

Page 15: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

14

using getchar and putchar in a loop

int c = getchar();

while (c != EOF) {

printf("%c", c);

c = getchar();

}

Page 16: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

15

up next: beyond getchar()

Page 17: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

16

More inputwhat if we wanted to scan more than one character at a time?

Page 18: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

17

More input(re-)introducing: fgets

Page 19: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

18

More inputfgets(array, array size, stream) reads a line of text

array - char array in which to store the line array size - the size of the array

stream - where to read the line from, e.g. stdin

fgets won’t try to store more than array size chars in the array

let’s try it out!

Page 20: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

19

fgets vs getsnever use the function gets ! (why?)

man pages + demo

Page 21: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

20

up next: where is everything?

Page 22: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

21

Arrayswhat are arrays?

Page 23: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

22

Arrays in memoryhow are they stored in memory?

Page 24: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

23

Arrays in memorywhat else is stored in memory?

hint: everything!

Page 25: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

24

Everything in memorywhy does this matter?

Page 26: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

25

Function memoryvariables in a function can only be accessed by that function.

why?

Page 27: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

26

up next: calling functions

Page 28: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

27

Passing values into functionsfunctions receive a copy of the value of the function parameter

Page 29: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

28

Passing arrays into functions?if functions can’t modify anything outside of their function

how do arrays work?

farnarkle.c

Page 30: Welcome! 0 [webcms3.cse.unsw.edu.au]...COMP1511 18s1 1— Lecture 10 — Strings+Arrarys+Functions Andrew Bennett  Jashank Jeremy

29

Farnarkles

int hidden_tiles[N_TILES];

printf("Enter hidden tiles: ");

read_tiles(hidden_tiles);

print_tiles(hidden_tiles);

test_farnarkle_ai(hidden_tiles)

farnarkle.c