Computer Science 1000 Algorithms Programs we now have some idea on how computers execute an instruction a system of gates is connected to process a series of bits in some fashion (e.g. adding binary numbers) your processor has a list of instructions that it can perform arithmetic: adding, subtracting, etc … memory operations: loading data from memory, saving data to memory and many others Programs the language of the processor is binary that is, each instruction is a sequence of binary digits e.g. consider our example from term1.ppt From the term1.ppt slides. CPU – Basic Operation read an instruction execute that instruction repeat for next instruction CPU Memory 1 17 2 29 3 46 4 56 5 2576 Computer Program 0000100100010001 0000101000011101 0001001100101000 0000110000111000 0010010101110000 place value "17" in memory location 1 place value "29" in memory location 2 add values in loc. 1 and 2, place in loc. 3 place value "56" in memory location 4 multiply values in loc. 3 and 4, place in loc. 5 Programming programming in binary is considerably difficult fortunately, most software development today is done using a high level programming language C/C++, Java, Python, Visual Basic, etc. a programming language represents a compromise between natural language (human) and binary code (computer) Write program to compute the perimeter and area of a rectangle. The size of the rectangle will be specified by the user. #include <iostream> using namespace std; int main() { int length; cout << "Please enter the rectangle's length: "; cin >> length; From the term4.ppt slides. This is an example of a computer program written in C++. int width; cout << "Please enter the rectangle's width: "; cin >> width; int perimeter = 2 * (length + width); int area = length * width; cout << "The perimeter of the rectangle is " << perimeter << endl; cout << "The area of the rectangle is " << area << endl; return 0; } Algorithms how does a program written in a programming language become binary code that a processor can understand? Answer: a compiler a compiler is a program that creates other programs from highlevel code int length; cout << "Please enter the rectangle's length: "; cin >> length; int width; cout << "Please enter the rectangle's width: "; cin >> width; int perimeter = 2 * (length + width); int area = length * width; cout << is cout << << "The " << "The area perimeter of the rectangle perimeter << endl; area of the rectangle is " << endl; Compiler 0000100100010001 0000101000011101 0001001100101000 0000110000111000 0010010101110000 Programming programs written in a programming language are typically made up of a set of statements roughly speaking, each statement defines an operation that you would like the computer to perform output something to screen perform a mathematical operation save information to a file send a request for a webpage to a server etc … Programming Language in many respects, programming languages are similar to a natural language only accepts certain keywords for example, the word while in C++ creates a loop, the word kev has no meaning to C++ statements have a particular syntax that must be followed blocks of code must be enclosed in { } statements must end with a semicolon Programming given a problem, a programmer’s task is to: devise an algorithm for solving that problem translate that algorithm into source code compile the source code into a program that the computer can understand our topic for this week is to consider this task in other words, a light introduction to programming our programming language: Scratch Scratch a programming language and environment written by MIT Labs originally intended to introduce children to programming, Scratch has become a popular choice for introducing programming in other settings (e.g. universities) freely available (GPL) Source code (source pane) Available operations. Output Scratch “Code” in most programming languages, code is written as text in Scratch, operations are represented as blocks programs are arranged as sequences of blocks arranged together Source code blocks. Sprites the operations in Scratch control the behaviour of the sprite different operations available moving/turning sprite output (as a text bubble) sounds (drums, etc) etc … Scratch – First Example write a program where the sprite says “Hello!” solution: find the following block under the Looks category drag this block onto the source code pane Scratch – First Example write a program where the sprite says “Hello World” Scratch – First Example to run the program, double click on the block to reset the program (remove output), click the stop sign in the top right corner Output previous was an example of program output each programming language has its own version of an output statement: C: Java: Python: printf(“Hello!”); System.out.println(“Hello!”); print “Hello!” Changing Output we can change the output by modifying the text in the white box for example, modify previous example so that output becomes “Hello World!” Movement in addition to text output, we can control the position and direction of the sprite simple movement operations: move in the direction that the sprite is facing turn clockwise turn counterclockwise example: construct a program that moves the sprite 25 steps Example #2: write a program that turns the sprite 15 degrees clockwise Movement to reset the position of the sprite double click: you may need to put zeroes in the boxes to reset the direction of the sprite double click: Programs our programs so far have been composed of single operations the real power of programming comes in combining statements in a typical programming language, we simply write more than one line of code in Scratch, we place more than one block in our source pane, and attach them Example: write a program in which the sprite moves 10 steps, and then says “Finished!” Example: write a program that moves 100 steps, and then turns 45 degrees clockwise Programs note that the blocks execute from top to bottom, one after the other we call this sequential execution the sequence of our blocks can affect the final outcome of the program for example, what if we reverse the order of our previous blocks? Example #2: Write a program that writes “Hello …”, and then “… world!” Timing in previous example, when we double click on the code blocks, we only see “… world!” why? the code blocks execute one after the other they execute so quickly, that we only see the results of the second Timing how can we address this issue? Solution #1 (text only): there is a block called Say Hello for 2 seconds we can set the message that we want to display, and the amount of time that it should be displayed before executing the next block Timing how can we address this issue? Solution #2 (general): there is a block in the control group called Wait 1 sec. This block does not change the output, it simply waits the specified number of seconds before executing the next block. note that this can be applied before any block Example: write a program that moves the sprite around an imaginary square of size 100x100. The sprite should end up in its original position, facing the same direction remember to include some kind of delay, otherwise, the sprite will appear not to move (because it occurs so quickly) Entry Point most programs (such as those you are used to) have an entry point tells the operating system where to start executing the program in Scratch, we can designate the entry point to a program using the When <green flag> clicked block program begins when green flag clicked Source vs. Executable when a programmer creates a program, rarely do we ever see the source code we only see, and run, the executable program Scratch also allows us to run a program without seeing the source code presentation mode click the symbol in top-right corner Arithmetic Operations every major computer language permits at least some mathematical operations simple: +, -, *, / not so simple: sin, cos, log … Operators four basic arithmetic operators Operator Symbol Addition + Subtraction - Multiplication * Division / these operators behave in the same way as they do in Excel Arithmetic Expression to use an arithmetic operator, use one of the following blocks (from the operators group): in each white space, you put: a number another arithmetic expression for example, use Scratch to compute the value 86 + 43 The block: in Scratch creates an expression more specifically, an arithmetic expression the value of the expression is: whatever the formula evaluates to in the above example, the value of the expression is 129 Where are arithmetic expressions used? anywhere an expression is valid in Scratch, this is usually in the white box (input) of another block for example, we can have our sprite output the value of our arithmetic expression place the expression block in the white box of the Say block Example 2: Write a program that moves the sprite 117+43 steps, and turns 46-19 degrees instead of doing the math yourself, let Scratch do it Math Expressions what will the result of running the following program be? Math expressions are only evaluated in their corresponding operator blocks. Math Expressions suppose I wanted to compute 1314 + 829 + 74 using Scratch how would I do it? 1314 + 829 + 74 = (1314 + 829) + 74 in other words, there are two plus operators the value of the first plus operator becomes the left input to the second operator Math Expressions write a program in which the sprite tells us the value of (22+13) / 72 Note that Scratch rounded our answer to 2 decimal places. The actual answer is 0.486111… Joins an operator that allows us to concatenate two values the result of this operator is the left text, followed by the right text Example: Write a program that prints 34x78 = , followed by the value of that expression output should come from the sprite A more useful example: write a program that converts 20 degrees Fahrenheit to Celsius Formula: 5 C ( F 32) 9 A more useful example: write a program that converts 20 degrees Fahrenheit to Celsius Formula: 5 C ( F 32) 9 What do you notice about the previous program? what happens if the temperature is 15 degrees? the source code itself would have to be edited that is, all of our programs so far, produce exactly the same output unless we change the source code Input Scratch allows us to ask the user for a value once the user has entered a value, it can be used in the program, like any other value use the following block: Sprite will ask this question, and then wait for the user to input a value. Input note that you can ask any question that you like Input our program is reading a value from the user where does it go? into a block called answer this block can be added to the input of another block, and will be replaced with the user’s input for example: write a program that asks for the user’s name, and then prints it on the screen. Example: Convert the previous program, so that the output becomes Hello followed by the user’s name Example: Convert the previous program, so that the output becomes Hello followed by the user’s name Back to our temperature example: convert this program to: ask the user for a temperature, in Fahrenheit print the corresponding value, in Celsius Formula: 5 C ( F 32) 9