Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist....

26
Project 1 (Straight-line Programs) Checklist

Transcript of Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist....

Page 1: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Project 1 (Straight-line Programs) Checklist

Page 2: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Prologue

Project goal: write interesting straight-line programs

Relevant files:

• project1.pdf (project writeup)

• project1_checklist.pdf (checklist)

• project1.zip (starter files and report.txt)

Page 3: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Exercises

Exercise 1. (Name and Age) Write a program called name_age.py that accepts name (str) and age(str) as command-line arguments, and writes “name is age years old.” to standard output.

& ~/workspace/project1

$ python3 name_age.py Alice 19

Alice is 19 years old.

Page 4: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Exercises

L name age.py

import stdio

import sys

# Accept name (str) and age (str) as command -line arguments.

name = ...

age = ...

# Write the message ’name is age years old.’ to standard output.

stdio.writeln (...)

Page 5: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Exercises

Exercise 2. (Greet Three) Write a program called greet_three.py that accepts name1 (str), name2(str), and name3 as command-line arguments, and writes “Hi name3, name2, and name1.” tostandard output.

& ~/workspace/project1

$ python3 greet_three.py Alice Bob Carol

Hi Carol , Bob , and Alice.

Page 6: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Exercises

L greet three.py

import stdio

import sys

# Accept name1 (str), name2 (str), and name3 (str) as command -line arguments.

name1 = ...

name2 = ...

name3 = ...

# Write ’Hi name3 , name2 , and name1.’ to standard output.

stdio.writeln (...)

Page 7: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Exercises

Exercise 3. (Triangle Inequality) Write a program called triangle.py that accepts x (int), y (int),and z (int) as command-line arguments, and writes to standard output True if each one of themis less than or equal to the sum of the other two, and False otherwise.

& ~/workspace/project1

$ python3 triangle.py 3 3 3

True

$ python3 triangle.py 2 4 7

False

Page 8: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Exercises

L triangle.py

import stdio

import sys

# Accept x (int), y (int), and z (int) as command -line arguments.

x = ...

y = ...

z = ...

# Set expr to an expression which is True if each of x, y, and z is less than or equal to the sum

# of the other two , and False otherwise.

expr = ...

# Write expr to standard output.

stdio.writeln (...)

Page 9: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Exercises

Exercise 4. (Body Mass Index) The body mass index (BMI) is the ratio of the weight w of aperson (in kg) to the square of the height h (in m). Write a program called bmi.py that acceptsw (float) and h (float) as command-line arguments, and writes the BMI to standard output.

& ~/workspace/project1

$ python3 bmi.py 75 1.83

22.395413419331717

Page 10: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Exercises

L bmi.py

import stdio

import sys

# Accept weight (float) and height (float) as command -line arguments.

weight = ...

height = ...

# Set bmi to weight divided by square of height.

bmi = ...

# Write bmi to standard output.

stdio.writeln (...)

Page 11: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Exercises

Exercise 5. (Random Integer) Write a program called random_int.py that accepts a (int) and b(int) as command-line arguments, and writes to standard output a random integer between a(inclusive) and b (exclusive).

& ~/workspace/project1

$ python3 random_int.py 10 20

13

Page 12: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Exercises

L random int.py

import stdio

import stdrandom

import sys

# Accept a (int) and b (int) as command -line arguments.

a = ...

b = ...

# Set r to a random integer between a and b, obtained by calling stdrandom.uniformInt ().

r = ...

# Write r to standard output.

stdio.writeln (...)

Page 13: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Problems

! The guidelines for the project problems that follow will be of helponly if you have read the description the project and have a generalunderstanding of the problems involved. It is assumed that you havedone the reading.

Page 14: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Problems

Problem 1. (Day of the Week)

Hints:

• Accept three integers m, d , and y as command-line arguments

• Compute and write the value of day of the week dow

• Use // (floored division) for / and % for mod

Page 15: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Problems

Problem 2. (Mercator Projection)

Hints:

• Accept two floats ϕ and λ as command-line arguments

• Compute and write the values of x and y , separated by a space

• Use math.radians() to convert degrees to radians

• Use math.log() for natural logarithm

Page 16: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Problems

Problem 3. (Great Circle Distance)

Hints:

• Accept four floats x1, y1, x2, and y2 as command-line arguments

• Compute and write the value of great-circle distance d

• Use math.radians() to convert degrees to radians

• To calculate the arccosine of a number, use math.acos()

Page 17: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Problems

Problem 4. (Wind Chill)

Hints:

• Accept two floats t and v as command-line arguments

• Compute and write the value of wind chill w

• Use ** for exponentiation, ie, use x ** y for xy

Page 18: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Problems

Problem 5. (Gravitational Force)

Hints:

• Accept three floats m1, m2, and r as command-line arguments

• Compute and write the value of gravitational force f

• Use scientific notation for the value of G (eg, 6.022e23 for 6.022 × 1023)

Page 19: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Problems

Problem 6. (Snell’s Law)

Hints:

• Accept three floats θ1, n1, and n2 as command-line arguments

• Compute and write the value of the angle of refraction θ2 in degrees

• Use math.radians() and math.degrees() to convert degrees to radians and vice versa

• To calculate the arcsine of a number, use math.asin()

Page 20: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Problems

Problem 7. (Gambler’s Ruin)

Hints:

• Accept integers n1, n2 and float p as command-line arguments

• Compute and write the values of p1 and p2, separated by a space

Page 21: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Problems

Problem 8. (Waiting Time)

Hints:

• Accept two floats λ and t as command-line arguments

• Compute and write the value of p

• Use math.exp(x) for ex

Page 22: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Problems

Problem 9. (Die Roll)

Hints:

• Accept an integer n as command-line argument

• Use stdrandom.uniformInt() with suitable arguments to simulate a single roll of an n-sided die

• Write the sum of the numbers rolled

Page 23: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Problems

Problem 10. (Three Sort)

Hints:

• Accept three integers x , y , and z as command-line arguments

• Find the smallest value α and largest value ω using min() and max() functions

• Find the middle value as an arithmetic combination of x , y , z, α, and ω

• Write the numbers in ascending order, separated by a space

Page 24: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Epilogue

Use the template file report.txt to write your report for the project

Your report must include:

• Time (in hours) spent on the project

• Difficulty level (1: very easy; 5: very difficult) of the project

• A short description of how you approached each problem, issues you encountered, andhow you resolved those issues

• Acknowledgement of any help you received

• Other comments (what you learned from the project, whether or not you enjoyed workingon it, etc.)

Page 25: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Epilogue

Before you submit your files:

• Make sure you do not use concepts from sections beyond “Basic Data Types”

• Make sure your programs meet the style requirements by running the following commandon the terminal

& ~/workspace/project1

$ pycodestyle <program >

where <program> is the .py file whose style you want to check

• Make sure your code is adequately commented, is not sloppy, and meets any specificrequirements, such as corner cases and running times

• Make sure your report meets the prescribed guidelines

Page 26: Project 1 (Straight-line Programs) Checklist · Project 1 (Straight-line Programs) Checklist. Prologue Project goal: write interesting straight-line programs Relevant les: project1.pdf

Epilogue

Files to submit:

1 name_age.py

2 greet_three.py

3 triangle.py

4 bmi.py

5 random_int.py

6 day_of_week.py

7 mercator.py

8 great_circle.py

9 wind_chill.py

10 gravitational_force.py

11 snell.py

12 gambler.py

13 waiting_time.py

14 die_roll.py

15 three_sort.py

16 report.txt