程序设计与 Web 入门week2 - Cousera杜克大学

(Notes from the learning process on Coursera:
https://www.coursera.org/learn/duke-programming-web/lecture/HF2QA/introduction)


一. Computational Thinking

1. Introduction
程序设计与 Web 入门week2 - Cousera杜克大学_第1张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第2张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第3张图片

2. Everything Is a Number?
程序设计与 Web 入门week2 - Cousera杜克大学_第4张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第5张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第6张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第7张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第8张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第9张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第10张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第11张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第12张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第13张图片

3. How is That a Number?
程序设计与 Web 入门week2 - Cousera杜克大学_第14张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第15张图片

4. Developing and Algorithm
程序设计与 Web 入门week2 - Cousera杜克大学_第16张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第17张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第18张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第19张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第20张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第21张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第22张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第23张图片

5. A Seven Step Approach to Solving Programming Problems
程序设计与 Web 入门week2 - Cousera杜克大学_第24张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第25张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第26张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第27张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第28张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第29张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第30张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第31张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第32张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第33张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第34张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第35张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第36张图片

6. 练习测验:Solving Programming Problems
程序设计与 Web 入门week2 - Cousera杜克大学_第37张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第38张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第39张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第40张图片

二. Programming Fundamentals with JavaScript

1. Variables
程序设计与 Web 入门week2 - Cousera杜克大学_第41张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第42张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第43张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第44张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第45张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第46张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第47张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第48张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第49张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第50张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第51张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第52张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第53张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第54张图片

2. Methods
程序设计与 Web 入门week2 - Cousera杜克大学_第55张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第56张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第57张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第58张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第59张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第60张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第61张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第62张图片

3. Functions
程序设计与 Web 入门week2 - Cousera杜克大学_第63张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第64张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第65张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第66张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第67张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第68张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第69张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第70张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第71张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第72张图片

4. Types
程序设计与 Web 入门week2 - Cousera杜克大学_第73张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第74张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第75张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第76张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第77张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第78张图片

5. DukeLearnToProgram Environment
程序设计与 Web 入门week2 - Cousera杜克大学_第79张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第80张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第81张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第82张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第83张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第84张图片

6. Try it! Using Variables, Methods and Functions

Try experimenting a little with the DukeLearnToProgram (DLTP) JavaScript programming environment to get comfortable with beginning to write JavaScript! Here is a link to the environment: http://www.dukelearntoprogram.com/course1/example/index.php (also available from the course **Resources **tab).

Experimenting with Variables and Creating a SimpleImage

Try the example you saw in the **Variables **video of creating and initializing three variables:

程序设计与 Web 入门week2 - Cousera杜克大学_第85张图片
Experimenting with Methods

Create a new SimpleImage from one of the images in the environment. Then, experiment with the following methods:

  • getWidth
  • getHeight
  • getPixel
  • getRed, getGreen, getBlue

For example, you may want to print the width and height of your image, and print the red, green, and blue values of a particular pixel, such as the pixel at coordinates (0,0).

Need help?
  • If you’re having trouble using methods, refer back to the examples shown in the Methods video to help you get started.
  • Check the documentation to remind yourself of what these methods do: http://www.dukelearntoprogram.com/course1/doc/ (also linked in the Resources tab).
  • Remember that you will need to use the print function in order to see any outputs from your methods (e.g., the red value of a pixel, the width of an image, etc.) in the “See It” window of the DLTP JavaScript programming environment.
Experimenting with Functions

Write the function you saw in the **Functions **video:

程序设计与 Web 入门week2 - Cousera杜克大学_第86张图片

7. For Loops
程序设计与 Web 入门week2 - Cousera杜克大学_第87张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第88张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第89张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第90张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第91张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第92张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第93张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第94张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第95张图片

8. Try it! Using For Loops

A PDF copy of all of this module's Try It exercises for JavaScript can be found in the **Resources **tab. Also be sure to refer to the JavaScript documentation we provide for this course ()http://www.dukelearntoprogram.com/course1/doc/), also linked in the *Resources * tab.

Make a yellow square that is 200 pixels wide and 200 pixels high, like this:

程序设计与 Web 入门week2 - Cousera杜克大学_第96张图片

Need help? If you are struggling writing your for loop, review the For Loops video. The method values will be critical to writing your loop. Be sure to review the documentation to understand how this method works: http://www.dukelearntoprogram.com/course1/doc/ (also available from the Resources tab).

Extra Challenge!

What if you wanted to make your image magenta instead of yellow? Magenta has a red value of 255, a green value of 0, and a blue value of 255. You can experiment with other colors too!


9. Conditional Execution
程序设计与 Web 入门week2 - Cousera杜克大学_第97张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第98张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第99张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第100张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第101张图片

10. Programming Exercise: Modifying Images

A link to a PDF of this exercise can be found in the Resources tab. Also, you will need to complete these exercises in the DukeLearnToProgram JavaScript environment: http://www.dukelearntoprogram.com/course1/example/index.php (also linked in the Resourcestab).

Part 1

Write a JavaScript program that modifies an image by putting three vertical stripes on it - a red stripe on the left one third, a green stripe in the middle, and a blue stripe on the right one third. For example, if your program ran on Drew’s picture shown on the left, the resulting image would have red, green and blue vertical stripes as shown in the image on the right


程序设计与 Web 入门week2 - Cousera杜克大学_第102张图片

The red stripe is made by changing the red component of all the pixels in the left vertical third to 255, while leaving the green and blue components as their values in the original image. The green and blue stripes are made similarly, but instead of modifying the red component of each pixel in the correct part of the image you will modify the green or blue component.

Let’s consider what steps your program will need to take in order to modify this image.

1. Start with the image you want to change.

2. Figure out the width of the image.

3. For each pixel in the image:

  • Get the x-coordinate for that pixel
  • If the pixel’s x-coordinate is less than one-third of the image’s width, set the pixel’s red value to 255.
  • If the pixel’s x-coordinate is between one-third and two-thirds of the image’s width, set the pixel’s green value to 255.
  • If the pixel’s x-coordinate is more than two-thirds of the image’s width, set the pixel’s blue value to 255.

4. Print the image.

You may find the following methods helpful in writing your program:

  • values()
  • getWidth()
  • getX() and getY()
  • setRed(), setGreen(), and setBlue

You can learn more about these methods on Duke’s documentation page for this course: http://www.dukelearntoprogram.com/course1/doc/ (also linked in the **Resources **tab). You can also review how x- and y-coordinates work on the documentation page: http://www.dukelearntoprogram.com/course1/doc/#coordinates

Part 2

Write a JavaScript function named swapRedGreen with one parameter pixel (representing a single pixel). This function should swap the red and green values of the pixel. For example, if you have a pixel with red = 255, green = 100, blue = 150, after calling swapRedGreen on that pixel its new RGB values would be red = 100, green = 255, blue = 150.

To test your function, you should choose an image and apply the swapRedGreen function to every pixel in the image. The choice of your image is important. For some images you may not notice any change. What would happen if you used a completely black image, or a completely white image? What about an image with lots of red and not a lot of green? Think about what type of image you should use for testing your function. After choosing an image and applying the swapRedGreen function to every pixel in the image, make sure you print the resulting image so you can see whether your function worked correctly.

Part 3

Write code to change the Duke blue devil (the image below on the left) to be yellow (as in the image below on the right).

程序设计与 Web 入门week2 - Cousera杜克大学_第103张图片

Start by working this smaller example by hand. You want to turn the image below on the left into the image below on the right. What are the steps you will need to take? Once you have worked through this example by hand to determine the steps you will need to take, you can translate your algorithm into code.

程序设计与 Web 入门week2 - Cousera杜克大学_第104张图片

Hint: You need to somehow identify the blue pixels. What makes the blue pixels different from the white pixels? What are some conditions you could use to identify the blue pixels?


My answer:


程序设计与 Web 入门week2 - Cousera杜克大学_第105张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第106张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第107张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第108张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第109张图片

11. 练习测验:Modifying Images with JavaScript
程序设计与 Web 入门week2 - Cousera杜克大学_第110张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第111张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第112张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第113张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第114张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第115张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第116张图片

三. Implementing the Green Screen Algorithm

1. Translating to Code
程序设计与 Web 入门week2 - Cousera杜克大学_第117张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第118张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第119张图片

也许是设置为255太过严格了,我们来放松条件要求:

程序设计与 Web 入门week2 - Cousera杜克大学_第120张图片
2. Thinking Critically about Your Program
程序设计与 Web 入门week2 - Cousera杜克大学_第121张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第122张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第123张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第124张图片
3. Finding Bugs in Code
程序设计与 Web 入门week2 - Cousera杜克大学_第125张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第126张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第127张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第128张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第129张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第130张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第131张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第132张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第133张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第134张图片
4. Programming Exercise: Advanced Modifying
5. Debugging Your Code
程序设计与 Web 入门week2 - Cousera杜克大学_第135张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第136张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第137张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第138张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第139张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第140张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第141张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第142张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第143张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第144张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第145张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第146张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第147张图片

四.Review

程序设计与 Web 入门week2 - Cousera杜克大学_第148张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第149张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第150张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第151张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第152张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第153张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第154张图片
程序设计与 Web 入门week2 - Cousera杜克大学_第155张图片

你可能感兴趣的:(程序设计与 Web 入门week2 - Cousera杜克大学)