+ All Categories
Home > Documents > Admin - Simon Fraser University

Admin - Simon Fraser University

Date post: 10-Feb-2022
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
51
Admin A2 due next Wed! Exercise 8 posted: should aim to finish part 1 of E8 by next Mon. so you can get help from TA’s on Tues./Thurs. Please review on your own (next slides): Correction notes on “Colour” On transparency in Unit 5 – Graphics Markup for Table Python: new concepts!
Transcript
Page 1: Admin - Simon Fraser University

Admin

• A2 due next Wed! • Exercise 8 posted: should aim to finish part 1 of

E8 by next Mon. so you can get help from TA’s on Tues./Thurs.

Please review on your own (next slides): • Correction notes on “Colour” • On transparency in Unit 5 – Graphics • Markup for Table

Python: new concepts!

Page 2: Admin - Simon Fraser University

On colour code

Page 3: Admin - Simon Fraser University

Examples:

• Brightest green?

• Dark green?

• Brightest blue?

• Dark red?

• Purple?

• Dark purple?

• Gray?

• Darker gray?

3

0 9 0

0 4 0

0 0 9

4 0 0

4 0 4

1 0 1

4 4 4

2 2 2

0 F 0

0 7 0

0 0 F

7 0 0

7 0 7

2 0 2

7 7 7

4 4 4

Decimal Hexadecimal

0 1 2 3 4 5 6 7 8 9 A B C D E F

Red Green Blue

0 1 2 3 4 5 6 7 8 9

• 1 20% of 16 • 2/10*16 = 3.2 • Closet is 3 • 3rd value is 2

• 2 30% of 16 • 3/10*16 = 4.8 • Closest is 5 • 5-th value is 4

Page 4: Admin - Simon Fraser University

Graphics: transparency

Page 5: Admin - Simon Fraser University

Transparency

Transparency?

- Ability for light to pass through a medium

Opacity?

- Amount of light absorbed by a medium

High opacity Low transparency

Three ways to handle transparency info:

1. Don’t store at all

2. 1-bit for each pixel (on or off)

3. As an additional channel (8-bit for each pixel)

Known as alpha channel

Gives various levels of opacity

5

GIF JPEG PNG

Transparency 1-bit None 8-bit

Page 6: Admin - Simon Fraser University

Markup for tables

Page 7: Admin - Simon Fraser University

Creating tables

Elements for table: <table>

<th> table header

<td> table data

<tr> table row

– May contain one or more of <td> <th>

7

Heading1 Heading 2 Heading 3

Item1 Data1 Data2

Item2 Data3 Data4

Item3 Data5 Data6

Page 8: Admin - Simon Fraser University

Reporting experimental results…

Substance examined Measured pH level

Lemon juice

Baking soda

Orange juice

2.4

8.4

3.5

Creating a simple table

8

1 header row 3 data rows each with 2 columns

Page 9: Admin - Simon Fraser University

Creating a simple table

9

Substance examined

Measured pH level

Lemon juice

2.4

Baking soda

8.4

Orange juice

3.5

<table>

<tr> <!-- header row -->

<th>Substance examined</th>

<th>Measured pH</th>

</tr>

<tr> <!–- data row -->

<th>Lemon juice</th>

<td>2.4</td>

</tr>

<tr> <!–- data row -->

<th>Baking soda</th>

<td>8.4</td>

</tr>

<tr> <!–- data row -->

<th>Orange juice</th>

<td>3.5</td>

</tr>

</table>

Example markup:

1 header row 3 data table rows each with 2 columns

Page 10: Admin - Simon Fraser University

Creating a more complex table

10

“pH level” header spans over 3 columns

“Substance” header

spans over 2 rows

<th colspan="3">pH level</th>

<th rowspan="2">Substance</th>

Page 11: Admin - Simon Fraser University

Example markup/styling of a table

11

<table >

<tr> <!-- Headers -->

<th rowspan="2">Substance</th>

<th colspan="3">pH level</th>

</tr>

<tr> <!-- Subheadings -->

<th>Sample 1</th>

<th>Sample 2</th>

<th>Sample 3</th>

</tr>

<tr> <!-- First data row -->

<td>Lemon juice</td>

<td>2.2</td>

<td>2.4</td>

<td>2.2</td>

</tr>

<tr> <!-- Second data row -->

<td>Baking soda</td>

<td>8.4</td>

<td>8.1</td>

<td>8.2</td>

</tr>

<tr> <!-- Third data row -->

<td>Orange juice</td>

<td>3.5</td>

<td>2.9</td>

<td>3.1</td>

</tr>

</table>

/* CSS below */

table {

border: solid green 2pt ;

font-size: 14pt;

font-family: sans-serif;

text-align: center;

}

tr {

background-color: #9d9;

color: green;

padding: 1em;

}

th {

width: 120px;

background-color: green;

color: white;

}

Page 12: Admin - Simon Fraser University

Making tables more accessible

12

<table >

<tr>

<th rowspan="2" class="left">Substance</th><th colspan="2">pH level</th></tr>

<tr><th>Measurement 1</th><th>Measurement 2</th></tr>

<tr> <!-- First row -->

<td>Lemon juice</td>

<td>2.4</td>

<td>2.2</td>

</tr>

<tr> <!-- Second row -->

<td>Baking soda</td>

<td>8.4</td>

<td>8.1</td>

</tr>

<tr> <!-- Third row -->

<td>Orange juice</td>

<td>3.5</td>

<td>2.9</td>

</tr>

<caption>This is caption of table.</caption>

</table>

Page 13: Admin - Simon Fraser University

13

<table summary=“Measured pH levels in samples collected for Experiment A.”>

<tr>

<th rowspan="2" class="left">Substance</th><th colspan="2">pH level</th></tr>

<tr><th>Measurement 1</th><th>Measurement 2</th></tr>

<tr> <!-- First row -->

<td>Lemon juice</td>

<td>2.4</td>

<td>2.2</td>

</tr>

<tr> <!-- Second row -->

<td>Baking soda</td>

<td>8.4</td>

<td>8.1</td>

</tr>

<tr> <!-- Third row -->

<td>Orange juice</td>

<td>3.5</td>

<td>2.9</td>

</tr>

<caption>This is caption of table.</caption>

</table>

Add summary description

Making tables more accessible

Page 14: Admin - Simon Fraser University

Making tables more accessible

14

<table summary=“Measured Ph levels in samples collected for Experiment A.”>

<tr>

<th rowspan="2" class="left">Substance</th><th colspan="2">Ph level</th></tr>

<tr><th>Measurement 1</th><th>Measurement 2</th></tr>

<tr> <!-- First row -->

<td abbr=“lemon”>Lemon juice</td>

<td>2.4</td>

<td>2.2</td>

</tr>

<tr> <!-- Second row -->

<td abbr=“soda”>Baking soda</td>

<td>8.4</td>

<td>8.1</td>

</tr>

<tr> <!-- Third row -->

<td abbr=“orange”>Orange juice</td>

<td>3.5</td>

<td>2.9</td>

</tr>

<caption>This is caption of table.</caption>

</table>

Add short version of header contents

Add summary description

Tip: Making sense of a large table via listening can be very difficult. Try to simplify it first.

Page 15: Admin - Simon Fraser University

CMPT 165 Unit 7 – Intro to Programming - Part 3

Nov 12th, 2015

Page 16: Admin - Simon Fraser University

Key concepts & terms seen so far

Fundamentals

Developer

Interface

GUI

Shell

Program

Statements

Client/server

Fetching a resource

Dynamic HTML

Programming essentials

Variables

Data Types

Numeric

Strings

Booleans

Assignment (shorthand)

Operations/Operator

Arithmetic

Concatenation

Overloaded symbols

Functions

Data

Input/Output (I/O)

Process

Refining print statements

Governing program flow

16

Testing Conditions If-else, elif

Page 17: Admin - Simon Fraser University

Review: Defining your own functions Use the keyword def (define) & syntax:

Example 1: calculate the square of an input number

Example 2: temperature conversion: Celsius (Co) to Fahrenheit degree (Fo)

17

>>> def sqr(x):

return x*x

>>> sqr(5)

25

>>> def name_of_function(input1,input2):

return input1+input2

>>> def Celsius_to_Fahrenheit(x):

y=x*9/5+32

return y

>>> new_var=Celsius_to_Fahrenheit(5)

>>> new_var

41

Programmer’s practice: square of number

Know the syntax! • Colon • Indentation

Page 18: Admin - Simon Fraser University

FYI: “function as a black box”

18

>>> y=10

>>> def Celsius_to_Fahrenheit(x):

y=x*9/5+32;

return y

>>> x=5; new_var=Celsius_to_Fahrenheit(x)

x

y = x*9/5+32;

return y

new_var

5

Demo

y

10

y

41

Page 19: Admin - Simon Fraser University

“Variable scope”

19

Demo

The part of a program where a variable is used is known as “scope of variables”

• e.g. scope of y is limited to Celsius_to_Fahrenheit function

• Outside of this function, y is undefined until you instantiate (assign value to) it

• We say “y=41 is local to the function”

Page 20: Admin - Simon Fraser University

Defining and using functions

Two ways.

1) In Python shell:

2) In IDLE Editor and run as script (e.g. temp_convert.py)

20

>>> y=10

>>> def Celsius_to_Fahrenheit(x):

y=x*9/5+32;

return y

>>> x=5; new_var=Celsius_to_Fahrenheit(x)

def Celsius_to_Fahrenheit(x):

y=x*9/5+32;

return y

y=10;

x=5; new_var=Celsius_to_Fahrenheit(x)

Again: Know the syntax! • Colon • Indentation

Page 21: Admin - Simon Fraser University

In-class Exercise: Reviewed Given this example:

Your task: write code Fahrenheit Celsius

21

>>> def Fahrenheit_to_Celsius(y):

return (y-32)*5/9

>>> def Celsius_to_Fahrenheit(x):

return x*9/5+32

>>> new_var=Celsius_to_Fahrenheit(1)

>>> new_var

25

y = x*9/5 + 32

(y – 32) = x*9/5

(y -32)*5/9 = x

Q: Which is input variable to your new function?

“isolate the variable” Output Input

Input Output

Page 22: Admin - Simon Fraser University

Defining and using functions

Recall: statements are executed in order saved in script (entered in Shell)

Functions must be defined before you can call it

22

def Celsius_to_Fahrenheit(x):

y=x*9/5+32;

return y

y=10;

x=5; new_var=Celsius_to_Fahrenheit(x)

Page 23: Admin - Simon Fraser University

Defining and using functions

23

def Celsius_to_Fahrenheit(x):

y=x*9/5+32;

return y

y=10;

x=5; new_var=Celsius_to_Fahrenheit(x)

Would this work?

y=10;

def Celsius_to_Fahrenheit(x):

y=x*9/5+32;

return y

x=5; new_var=Celsius_to_Fahrenheit(x)

Page 24: Admin - Simon Fraser University

Defining and using functions

Would this work?

And would this work?

24

x=5; new_var=Celsius_to_Fahrenheit(x)

def Celsius_to_Fahrenheit(x):

y=x*9/5+32;

return y

y=10;

y=10;

def Celsius_to_Fahrenheit(x):

y=x*9/5+32;

return y

x=5; new_var=Celsius_to_Fahrenheit(x)

Page 25: Admin - Simon Fraser University

Return or not?

• If you need to process data further, use return

• Allows you to keep the data in memory

>>> def Celsius_to_Fahrenheit(x):

return x*9/5+32

>>> new_var=Celsius_to_Fahrenheit(1)

>>> new_var

33.8

>>> print("The converted temperature is: "+new_var)

The converted temperature is 33.8

Page 26: Admin - Simon Fraser University

In-class Exercise: Refined

26

>>> def Celsius_to_Fahrenheit(x):

print(x*9/5+32)

>>> Celsius_to_Fahrenheit(1)

33.8

>>> def Celsius_to_Fahrenheit(x):

print(x , 'Celsius =' , x*9/5+32 , 'Fahrenheit' )

• Hard to understand output • Better output:

• How could you code that? • Ans: concatenating integers & strings

>>> Celsius_to_Fahrenheit(1)

1 Celsius = 33.8 Fahrenheit

String String Numeric data Numeric data

Page 27: Admin - Simon Fraser University

Summary of key concepts & terms

Fundamentals

Developer

Interface

GUI

Shell

Program

Statements

Client/server

Fetching a resource

Dynamic HTML

Programming essentials

Variables

Data Types

Numeric

Strings

Assignment (shorthand)

Operations/Operator

Arithmetic

Concatenation

Overloaded symbols

Functions

Data

Input/Output (I/O)

Process

Refining print statements

Governing program flow

27

Testing Conditions If-else, elif

Page 28: Admin - Simon Fraser University

Commenting in Python

Problem: Programs become large/complex

Solutions:

• Debugging: process of diagnosing problems in your code

• Add comments to explain your code

– A good programming practice

28

# single line comment

var1=10;

var2=var1+3;

"""this is a multiline comment so any thing in between is

ignored """

var2*=var1;

Q: How to add comments in HTML?

<!-- ignored -->

Q: how about in CSS? /* ignored */

Strings that are not assigned to a variable become comments

Page 29: Admin - Simon Fraser University

Idea:

Concrete example (in web programming, governs/facilitates user-interaction), e.g.:

If (your_visitor_chooses_to_buy_coffee), print ( the_cost_of_coffee_to_screen ) Otherwise print ( "Thank you for visiting” )

If something_happens, Do task1; Else, Do task2;

Program flow

29

We’ll see how we can get user input

next class

Page 30: Admin - Simon Fraser University

Testing conditions

• Build complex programs by executing particular statements depending on test conditions

• Example test conditions:

– Numerical and string comparisons: equal (==), less than (<), greater than (>)

• Examples:

30

>>> y=10; x=5

>>> x > y

False

>>> x > 1

True

>>> x == 5

True

>>> x == 15

False

>>> x >= 5

True

>>> y=20; x=12

>>> x > y*2

False

>>> x=1; x <= 1

True

>>> str='c'; str == 'c'

True

Page 31: Admin - Simon Fraser University

If-else

• Execute particular statements depending on condition

• Syntax:

if (condition_1):

# do something

else:

# do something else

• Example:

31

def compare_numbers(x,y):

if (x > y):

print( x,'greater than', y);

else:

print( x,'less than', y);

Page 32: Admin - Simon Fraser University

If, else-if, else - More than 2 conditions to test?

- Syntax:

- Example:

32

def compare_numbers(x,y):

if (x > y):

print( x,'greater than',y);

elif (x==y):

print( x, 'equal to',y)

else:

print( x,'less than',y)

if (condition_1):

# do something

elif (conditon_2):

# do something else

else:

# do default tasks

Page 33: Admin - Simon Fraser University

If, else-if, else

• Execute particular statements depending on condition

• Syntax:

if (condition_1):

# do something

elif (conditon_2):

# do something else

elif (conditon_3):

# do yet something else

else:

# do default tasks

33

Page 34: Admin - Simon Fraser University

Practice #1 Q) Given example conversion:

Write a function that takes 2 inputs:

Temp_conversion(x,str)

And print output accordingly, like this:

34

>>> def Celsius_to_Fahrenheit(x):

print( x*9/5+32 )

>>> Celsius_to_Fahrenheit(1)

33.8

>>> Temp_conversion(1, 'c')

1 Celsius = 33.8 Fahrenheit

>>> Temp_conversion(25, 'f')

33.8 Fahrenheit = 1 Celsius

Page 35: Admin - Simon Fraser University

Solution to Practice#1

35

def Temp_conversion(x,str):

if (str=='c'):

print( x,'Celsius =',x*9/5+32,'Fahrenheit')

else:

print( x,'Fahrenheit =',(x-32)*5/9, 'Celsius')

def Temp_conversion(x,str):

if (str=='c'):

print( x,'Celsius =',x*9/5+32,'Fahrenheit')

elif (str=='C'):

print( x,'Celsius =',x*9/5+32,'Fahrenheit')

else:

print( x,'Fahrenheit =',(x-32)*5/9, 'Celsius')

Page 36: Admin - Simon Fraser University

Practice #2

Q1) Write a function my_max that returns the maximum of 3 input numbers.

Q2) Write a function my_min that returns the minimum of 3 input numbers.

36

def my_max(num1, num2, num3):

?

>>> my_max(1,12,5)

12

>>> my_max(11,5,4)

11

Page 37: Admin - Simon Fraser University

One simple solution to Practice #2

def my_max(num1, num2, num3):

if num1 > num2:

if num1 > num3:

return num1

else:

return num3

else:

if num2 > num3:

return num2

else:

return num3;

Page 38: Admin - Simon Fraser University

About the Extra Activity

Page 39: Admin - Simon Fraser University

39

Page 41: Admin - Simon Fraser University

MIME type • How to resolve this?

• Specify MIME type in the output of your Python scripts

41

Page 42: Admin - Simon Fraser University

MIME type • How to resolve this?

• Specify MIME type in the output of your Python scripts

• Do so by adding this print statement:

42

print("Content-type: text/html")

print( )

print( 'I am a Python program helping... ')

print( '...to finish an exercise for "CMPT 165".')

print( 5012*2988912 )

Prints blank line. This line is required!

MIME type

Page 43: Admin - Simon Fraser University

Dynamic markup from Python scripts

Example from Fig. 7.2 of Study Guide

43

str= "Content-type: text/html“

print( str )

print( )

Print( "<html><head>" )

Print( "<title>Python did this</title>" )

Print( "</head><body>" )

Print( "<p>Here I am</p>" )

Print( "</body></html>" )

Page 44: Admin - Simon Fraser University

Summary of key concepts & terms

Fundamentals

Developer

Interface

GUI

Shell

Program

Statements

Client/server

Fetching a resource

Dynamic HTML

MIME

Programming essentials

Variables

Data Types

Numeric

Strings

Booleans

Assignment (shorthand)

Operations/Operator

Arithmetic

Concatenation

Overloaded symbols

Functions

Data

Input/Output (I/O)

Process

Refining print statements

Governing program flow

44

Testing Conditions If-else, elif

Page 45: Admin - Simon Fraser University

Fetching a resource: reviewed

45

Client-side Server-side

Page 46: Admin - Simon Fraser University

User, User-agent, Server: revisited

46 15) Renders tooltips, etc.

Enter URL address bar: http://cmpt165.csil.sfu.ca/~lisat/demo.html

1) Enters URL

2) Requests for demo.html

3) Looks up demo.html

4) Sends demo.html

5) Parses/renders markup in demo.html on screen 6) Sees <link> for style.css 10) Renders markup in demo.html on screen

Server e.g. cmpt165.csil.sfu.ca

User agent (browser)

User (visitor)

14) Hovers over anchors

7) Requests for style.css

8) Looks up style.css

9) Sends style.css

Client-side interaction : :hover, :active

title attribute tooltip

Page 47: Admin - Simon Fraser University

User, User-agent, Server: revisited

47

Enter URL address bar: http://cmpt165.csil.sfu.ca/~lisat/demo.html http://cmpt165.csil.sfu.ca/~lisat/first.py

1) Enters URL

i) Requests for first.py

5) Parses/renders markup in generated output on screen

Server e.g. cmpt165.csil.sfu.ca

User agent (browser)

User (visitor)

iii) Sends output ii) Runs first.py (+ generates output)

Page 48: Admin - Simon Fraser University

User, User-agent, Server: revisited

48 15) Renders tooltips, etc.

Enter URL address bar: http://cmpt165.csil.sfu.ca/~lisat/demo.html http://cmpt165.csil.sfu.ca/~lisat/first.py

1) Enters URL

2) Requests for demo.html 3) Looks up demo.html

i) Requests for first.py

4) Sends demo.html

5) Parses/renders markup in demo.html on screen 6) Sees <link> for style.css 10) Renders markup in demo.html on screen

Server e.g. cmpt165.csil.sfu.ca

User agent (browser)

User (visitor)

iii) Sends output ii) Runs first.py (+ generates output)

14) Moves mouse

7) Requests for style.css 8) Looks up style.css

9) Sends style.css

Client-side Server-side

Page 49: Admin - Simon Fraser University

User, User-agent, Server: revisited

49 15) Renders tooltips, etc.

Enter URL address bar: http://cmpt165.csil.sfu.ca/~lisat/demo.html http://cmpt165.csil.sfu.ca/~lisat/first.py

1) Enters URL

2) Requests for demo.html 3) Looks up demo.html

i) Requests for first.py

4) Sends demo.html

5) Parses/renders markup in demo.html on screen 6) Sees <link> for style.css 10) Renders markup in demo.html on screen

Server e.g. cmpt165.csil.sfu.ca

User agent (browser)

User (visitor)

iii) Sends output ii) Runs first.py (+ generates output)

14) Moves mouse

7) Requests for style.css 8) Looks up style.css

9) Sends style.css

Client-side Server-side

Page 50: Admin - Simon Fraser University

Static vs. dynamic resource

50

*.html

*.htm

*.pdf

*.txt

*.svg

*.jpg

*.mp3

…These are known as static resource: one that already exists on webserver

*.py, *.php, *.js

Web server…

• recognizes these as programs (i.e. “web scripts”)

• use corresponding software to process these scripts and output the content generated by these scripts

Resource generated upon request known as dynamic resource, one created “on-the-fly”

* : Asterisk sign

(“little star”, “star” symbol)

In O/S, symbolizes wildcard = “anything” *.html means “anything ending with .html”

Page 51: Admin - Simon Fraser University

Key concepts & terms seen so far

Fundamentals

Developer

Interface

GUI

Shell

Program

Statements

Client/server

Fetching a resource

Dynamic HTML

Programming essentials

Variables

Data Types

Numeric

Strings

Booleans

Assignment (shorthand)

Operations/Operator

Arithmetic

Concatenation

Overloaded symbols

Functions

Data

Input/Output (I/O)

Process

Refining print statements

Governing program flow

51

Testing Conditions If-else, elif

Misc. Commenting: # ignored " " " ignored " " "


Recommended