Programming Languages • Understand how programming has evolved • Be able to write simple programs using a text based programming language Objectives History Timeline The Evolution of Programming Languages To build programs, people use languages that are similar to human language. The results are translated into machine code, which computers understand. Programming languages fall into three broad categories: • Machine languages • Assembly languages • Higher-level languages The Evolution of Programming Languages Machine Languages • Machine languages (first-generation languages) are the most basic type of computer languages, consisting of strings of numbers the computer's hardware can use. • Different types of hardware use different machine code. For example, IBM computers use different machine language than Apple computers. The Evolution of Programming Languages Assembly Languages • Assembly languages (second-generation languages) are only a bit easier to work with than machine languages. • They use English-like phrases to represent strings of numbers. • The code is then translated into object code, using a translator called an assembler. • They are quite difficult for people to understand Assembly code Assembler Object code The Evolution of Programming Languages Higher-Level Languages Higher-level languages are more powerful than assembly language The instructions the programmer uses to write them are more like English so are easier to understand Higher-level programming languages are divided into three "generations," each more powerful than the last: • Third-generation languages • Fourth-generation languages • Fifth-generation languages Higher-Level Languages Third-Generation Languages • The following languages are 3GLs: FORTAN COBOL BASIC Pascal C C++ Java ActiveX Higher-Level Languages Fourth-Generation Languages • 4GLs may use a text-based environment (like a 3GL) or may allow the programmer to work in a visual environment, using graphical tools. • The following languages are 4GLs: Visual Basic (VB) VisualAge Authoring environments Using Python Learn to Program • Open the Python IDLE. • What does it look like? Let’s start to program Python IDLE The command prompt • >>> print("Hello World") • What happens? Write your first program Did you get this? • >>> print(Hello World) What happens if you type this? Oh dear - something is wrong • Computers follow instructions EXACTLY! • Computers are not good at dealing with nearly, almost, not quite. • Syntax describes the rules that must be used when commands are written. Syntax errors Colours Different colours are used for different elements to help you. predict what will happen. • >>> print "Hello World" • >>> print ("Hello World"); • >>> Print ("Hello World") • >>> print ("Hel World") • >>> prin (Hello World) find out what happens •>>> print "Hello World" •>>> print ("Hello World"); •>>> Print ("Hello World") •>>> print ("Hel World") •>>> prin (Hello World) • Now you know how to spot some errors. • This is called DEBUGGING • This is really important because you need to know how to correct your mistakes. Debugging In IDLE click on File and New Window This is the Edit mode - there is no command prompt Create, save and test a program • Think of shopping…… • If you are in the interactive mode (IDLE) if you said “buy milk” it would do it straight away, then “buy eggs” etc • If you are in the editor it is like making a list of items to buy which will only work when you say “run shopping list” Interactive mode and file editor Save the program in your python folder as my_name Using the editor Then press the f5 key to run the program • Add more questions into your my_name program by copying the first lines of code, pasting them and changing the question text. What other programs can you write? • You are now going to use your name variable. • Make the program print out the value that the user has saved in name. print (“hello…”) name = input(“What is your name? ”) print (“hello” + name) When you use = it means “make it become …” When you use + in print “…” + “… it means print both these things Using a variable print (“hello…” ) name = input(“What is your name?”) print (“hello” + name) print (*hello…* ) name = input(“What is your name?”) print (“hello” + name) python dumbchatterbox.py Syntax Error on Line 1 Why does it say “Syntax Error on line 1?” Errors and Debugging print (“hello…” ) name = input(“What is your name?”) pirnt (“hello” + name) python dumbchatterbox.py Syntax Error on Line 3 Why does it say “Syntax Error on line 3?” Errors and Debugging • Can you remember how to save a program file? • Which character is not allowed to be used in program file names? • Don’t forget to include the .py at the end of the filename! • Can you remember how to run a program you have created? Try it out! Run your program! answer = input (Hello would you like to hear a joke?”) PRINT (“you said ”+ ANSWER) print (“Here is the joke …”) answer = input (“Why did the chicken cross the road?”) print (“you said + answer”) print (“To get to the other side!” ) python jokebox.py Error on Line 1 Error on Line 2 Error on Line 2 Error on Line 5 What’s wrong? NEXT STAGE Build an artificial intelligence program Edit the program, save as questions Can you create some script at the end of the program that might look something like this….? “So James, it was lovely to meet you. I know that you live in Newport and that your favourite food is pizza” Can you add a summary? • What is the difference between a variable and a string? • Can you identify these in the programs you have written? Research task Variable examples: • my_name = input () • favourite_food = input () • my_age = input () • my_school = input () Variables – items that can change String examples: • “Hello world” • “What is your name” • “What is your favourite food” • “It is good fun talking to chatbots” Strings – a sequence of characters Using the Python interpreter as a calculator • • • • • • Go back to the IDLE screen What is 156 add 567? What is 132 subtract 46? What is 256 divided by 8? What is 389 multiplied by 13? Can you work out what mathematical symbols need to be used? What works? Both of these work The answers – use brackets! • In computing, whole numbers (without decimals) are referred to as integers, this means that while 4.0 is not considered an integer, 4 is. • It is possible to store integers in variables. Integers Integers stored in variables IF, Else OR print (“hello , what is your name”) name = input() if name == (“Mr Richards”): print (“you are ok”) print (“carry on”) else : print (“exterminate!!!“) Who Are You? What will this computer program do? Why do we use one equals sign (name = raw_input…) and two equals signs (if name == “Mr Richards” …)? print ("hello , what is your name”) name = input() if name = (“Mr Richards“): print ("you are ok“) Else : print (" exterminate!!!“) What’s wrong? Why does this program cause an error? What does the : symbol do? python WhoAreYou.py Error Line 3 SyntaxError: invalid syntax Error Line 5 SyntaxError: invalid syntax print (“hello , what is your name”) name = input() if name == (“Mr Richards”): print (“you are ok”) python WhoAreYou.py else : Error Line 4 print (“exterminate!!!”) IndentationError: expected an indented block Error Line 6 IndentationError: expected an indented block What’s wrong? Why does this program cause an error? What does INDENTATION do? print (“hello , what is your name”) name = input() if answer == (“Mr Richards”) print (“you are ok”) print (“carry on”) else : print (“exterminate!!!”) What’s wrong? Why does this program cause an error? What is the difference between = and ==? python WhoAreYou.py Error Line 3 Syntax error Use “elif” (else if) Like this … meal = input("What did you eat for breakfast?") if meal == (“nothing“): print (“That's not good, breakfast is important.“) elif meal == ("energy drink“): print ("That's not good. They are bad for you.“) elif meal == ("cereal“): print (“Now that's a good breakfast!“) else : print (“Sorry, I don't know what that is.“) print (“Thank you for taking part.“) Lots of decisions? The Turing test is a test of a machine's ability to exhibit intelligent behaviour, equivalent to or indistinguishable from, that of an actual human. • Make a “Smart Chatterbox” chat program that uses … • • • • • • Print (“…”) Variables raw_input (“…”) if …. : elif …. : else: CHALLENGE Has any computer ever passed the Turing Test? No. The Loebner Prize awards $5,000 annually for the chatbot which is "most indistinguishable from a human." There is still $100,000 reserved from Dr. Loebner for the first chatbot to actually pass the Turing test. • Comments can be used to make a program easier to understand when someone reads it. • A # tells the computer that what follows is a comment • The computer ignores the comments Comments # Now add comments to all of your lines ################ of code • Make a “maths_questions” program that uses … • • • • • Print (“…”) Variables raw_input (“…”) if …. : else: The program should ask a maths question get and answer and print a suitable message for both the correct and wrong responses Maths Challenge Here is the code: save as maths_questions • Can you add 5 more maths questions to your game questions? Add more questions to your game • Create a test that will check the user’s knowledge of the 12 times multiplication table. • The test should have between 4 and 12 questions. • Save the file as 12_times_table • It must include a header (description, your name and date) • You must make use of comments (#) 12 times table • Answer = int(answer) Thinking back to the use of integers in the last lesson, what does this do and what does int mean? Can you answer this question? • This converts the text string into a number or integer. If it was not converted to an integer, it could not be compared to another integer, the answer 4. Answer = int(answer) • if answer ==4: • What this mean? Can you answer this question? • Carry out the instruction if the answer is 4 • == means ‘equal’ to, as in “is it equal to?” if answer ==4: • What does else mean Can you answer this question? • Carry out the instruction if none of the previous if conditions were true else • Why are the indents necessary after the if and else statements? Can you answer this question? • This means follow the these instructions if the statement above is true. Indents • What happens if the colons are not there after the 4 or else? Can you answer this question? • You get a syntax error Colons Final Challenge Invent your own game • Start with a blank file, create your own number game using Python. • Add appropriate comments to your game including a header with your name, title and instructions on how to play the game. • Add line comments to explain parts of the code. • You should include at least 5 questions. • Decide what the actual questions are about and the level of difficulty. Invent your own game • How many seconds are there in 1 hour? • How many days are there in a leap year? • If a triangle has 2 angles of 45 degrees, what will the remaining angle be? • If a = 2b – 5 and b = 6, what is a? • What is the minimum legal age to vote in the UK? • What is 10010001 converted to denary? Examples • • • • • • • • • Create a game that works and save it Use enough comments to explain how the game works Add a scoring feature to the game Ask the user some questions at the beginning of the game Add a function to report the score at the end of each question Include responsive feedback at the end of the game Include comments to describe what the code does Include a larger set of questions increasing with difficulty Allow the user to try again on a wrong answer, but award a reduced score for a second attempt • Give the user feedback midway through the game as encouragement • Add some comments explaining how they could add extra features to the game. Success criteria • Whose game shall we look at? • Let’s look at it together. • In pairs, swap over and mark each others work using the criteria. • Improve your work based on the feedback you have been given Random selection Want to learn more? Some useful sites • http://docs.python.org/2/tutorial/ • http://sandbox.mc.edu/~bennet/python/code/index.html • http://norvig.com/sudoku.html • http://python.net/~goodger/projects/pycon/2007/idiomatic /handout.html