~~SLIDESHOW~~ ====== Programming Fundamentals ====== Mithat Konar\\ with material from Capron's "Essentials of Computing", 2/e ===== What is programming? ===== * **programming**: the discipline of creating computer programs. * **computer program**: * a set of step-by-step instructions * that directs the computer to do the tasks you want it to do * and produce the results you want. * Programmer -> computer program -> software. ===== What programmers do ===== * "Write programs" * Prepare the instructions of a computer program. * Test and correct programs. * Document the way a program works. * Interact with other programmers, systems analysts, clients. ===== Programming languages ===== * **programming language**: * a set of rules used to write computer programs. * a way of telling the computer what operations to perform. * Computers are //binary// machines. * Use only ON/OFF switches to control internal states. * Only understand instructions that are expressed in ON/OFF (or 1/0) terms. * Programming languages have been invented to make it easier for humans to write programs. ===== Levels of language ===== * Programming languages exist on a spectrum of low to high level. * **low level**: close to the 1/0 language the computer directly uses. * **high level**: closer to natural language or mathematics. * Five levels: * machine language * assembly languages * high level languages * very high level languages * natural language programming ===== Machine language ===== 10110110100100101101011101001010 10110110110101101101011011000111 * Lowest level of language. * Just 1’s and 0’s. * Very hard not to make a mistake. * Each type of computer processor has its own machine language. ===== Assembly language ===== MOV AL, 1h MOV CL, 2h MOV DL, 3h * Alphanumeric abbreviations or mnemonic codes replace 1's and 0's. * ''ADD'' for Add, ''CMP'' for Compare, ''MOV'' for Move, etc. * **Assembler** program converts assembly language programs into machine language. ===== High-level languages ===== if score > 60: print('You passed!') else: print('Try harder!') * Uses math-like or English-like notation systems. * Allows programmer to think less about language details and more about solving problems. * Portability ===== Very high-level languages ===== * Try to come closer to natural language than high-level languages. ===== Natural language programming ===== * Tries to let people program using everyday language. * "Show a list of names from the contact list," same as "Display the names of everyone in the contact list." ===== Kinds of translation ===== * High-level languages need to be **translated** into machine language. * Three approaches: * **interpreted**: translate one line of the program, run it, move to the next. * **compiled**: translate the whole program at once. Produces a new file full of machine code. * **hybrid**: translate the whole program into an in-between language; execute the in-between language in an interpreter. ===== Kinds of errors ===== * **syntax error**: you broke a language rule. * **semantic** or **logic error**: the program runs and doesn't complain, but it doesn't produce the desired result. * **runtime error**: you ask the program to do something it can't, like divide A by B when B happens to be zero. ===== Programming process ===== - Define the problem. - Design a solution. - Code the solution. - Test the solution. - Document the solution. ===== Define the problem ===== * Undefined problems cannot be solved. * May be formal or informal. * Sometimes simple, often not. ===== Design a solution ===== * Design your solution before you try to build it! * 80/20 rule: spend 80% of your time designing, 20% writing. ===== Code the solution ===== * Write the programming language statements and other resources you need to implement the design. ===== Test the solution ===== * **debugging**: detecting, locating, and fixing mistakes. * **desk checking**: working through your code without running it to find mistakes. ===== Document the solution ===== * **documentation**: a written detailed description of the programming cycle and specific facts about the program. * Most languages let you include some documentation in the program code. * Documentation is needed: * to help organize program planning * to help communicate with others about your program. * to help remind **you** what your program is doing. * //Very important!!!// ===== Programming tools ===== * **code editor**: used to write the program code (i.e., **source code**). * **translator**: used to translate source code into a form the computer can execute. * **debugger**: used to interactively run a program and observe its internal state. * **project manager**: used to organize source code and other files associated with a program. * **IDE** (integrated development environment): integrates a number of these tools into one unified environment to help increase productivity. ===== Fin =====