Hank Childs, University of Oregon April 24 th, 2015 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / /

Slides:



Advertisements
Similar presentations
A C++ Crash Course Part II UW Association for Computing Machinery Questions & Feedback.
Advertisements

Overriding CMPS Overriding Recall, a method in a child class overrides a method in the parent class, if it has the same name and type signature.
Hank Childs, University of Oregon April 17 th, 2015 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / /
CIS 118 – Intro to UNIX Shells 1. 2 What is a shell? Bourne shell – Developed by Steve Bourne at AT&T Korn shell – Developed by David Korn at AT&T C-shell.
. Virtual Classes & Polymorphism. Example (revisited) u We want to implement a graphics system u We plan to have lists of shape. Each shape should be.
Polymorphism From now on we will use g++!. Example (revisited) Goal: Graphics package Handle drawing of different shapes Maintain list of shapes.
Chapter 11 Separate Compilation and Namespaces Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
1 Homework Turn in HW2 at start of next class. Starting Chapter 2 K&R. Read ahead. HW3 is on line. –Due: class 9, but a lot to do! –You may want to get.
Structure of a C program
C Programming Basics Lecture 5 Engineering H192 Winter 2005 Lecture 05
C++ Classes in Depth. Topics Designing Your Own Classes Attributes and Behaviors Writing Classes in C++ Creating and Using Objects.
Data Type. A data type defines a set of values that a variable can store along with a set of operations that can be performed on that variable. Common.
COP 3275 COMPUTER PROGRAMMING USING C Instructor: Diego Rivera-Gutierrez
Hank Childs, University of Oregon June 3 rd, 2015 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / / /
Programming Languages and Paradigms Object-Oriented Programming.
C++ Object Oriented 1. Class and Object The main purpose of C++ programming is to add object orientation to the C programming language and classes are.
CS 11 C track: lecture 5 Last week: pointers This week: Pointer arithmetic Arrays and pointers Dynamic memory allocation The stack and the heap.
IPC144 Introduction to Programming Using C Week 1 – Lesson 2
Program A computer program (also software, or just a program) is a sequence of instructions written in a sequence to perform a specified task with a computer.
Object Oriented Programming with C++/ Session 6 / 1 of 44 Multiple Inheritance and Polymorphism Session 6.
Hank Childs, University of Oregon May 8th, 2015 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / / / __.
CPSC 230 Computers and Programming I Spring 2003 Dr. Lynn Lambert.
Hank Childs, University of Oregon May 13th, 2015 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / / / __.
COP4020 Programming Languages Names, Scopes, and Bindings Prof. Xin Yuan.
Hank Childs, University of Oregon May 19 th & 21st, 2015 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ /
More About Objects and Methods Chapter 5. Outline Programming with Methods Static Methods and Static Variables Designing Methods Overloading Constructors.
Pointers: Basics. 2 What is a pointer? First of all, it is a variable, just like other variables you studied  So it has type, storage etc. Difference:
Engineering H192 - Computer Programming The Ohio State University Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics.
C# C1 CSC 298 Elements of C# code (part 1). C# C2 Style for identifiers  Identifier: class, method, property (defined shortly) or variable names  class,
Introduction to c++ programming - object oriented programming concepts - Structured Vs OOP. Classes and objects - class definition - Objects - class scope.
1 CS161 Introduction to Computer Science Topic #9.
Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5.
Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.
Working With Objects Tonga Institute of Higher Education.
COP3502 Programming Fundamentals for CIS Majors 1 Instructor: Parisa Rashidi.
Compiler Directives. The C Preprocessor u The C preprocessor (cpp) changes your source code based on instructions, or preprocessor directives, embedded.
Classes, Interfaces and Packages
Array in C++ / review. An array contains multiple objects of identical types stored sequentially in memory. The individual objects in an array, referred.
1 Introduction to Object Oriented Programming Chapter 10.
The Process CIS 370, Fall 2009 CIS UMassD. The notion of a process In UNIX a process is an instance of a program in execution A job or a task Each process.
2. C FUNDAMENTALS. Example: Printing a Message /* Illustrates comments, strings, and the printf function */ #include int main(void) { printf("To C, or.
Hank Childs, University of Oregon May 6th, 2016 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / / / __.
Hank Childs, University of Oregon May 20th, 2016 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / / / __.
Hank Childs, University of Oregon May 13th, 2016 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / / / __.
Hank Childs, University of Oregon May 11th, 2016 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / / / __.
Notices Assn 2 is due tomorrow, 7pm. Moodle quiz next week – written in the lab as before. Everything up to and including today’s lecture: Big Topics are.
Hank Childs, University of Oregon April 22 nd, 2016 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / /
Defining Data Types in C++ Part 2: classes. Quick review of OOP Object: combination of: –data structures (describe object attributes) –functions (describe.
Hank Childs, University of Oregon May 27 th, 2016 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / / /
Hank Childs, University of Oregon May 18th, 2016 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / / / __.
Hank Childs, University of Oregon April 15 th, 2016 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / /
Hank Childs, University of Oregon April 13 th, 2016 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / /
Hank Childs, University of Oregon April “29 th”, 2015 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / /
Hank Childs, University of Oregon
Hank Childs, University of Oregon
Hank Childs, University of Oregon
User-Written Functions
Hank Childs, University of Oregon
Hank Childs, University of Oregon
Hank Childs, University of Oregon
Function Overloading.
Hank Childs, University of Oregon
C Basics.
Hank Childs, University of Oregon
Hank Childs, University of Oregon
Hank Childs, University of Oregon
Introduction C is a general-purpose, high-level language that was originally developed by Dennis M. Ritchie to develop the UNIX operating system at Bell.
C programming Language
Hank Childs, University of Oregon
Hank Childs, University of Oregon
Presentation transcript:

Hank Childs, University of Oregon April 24 th, 2015 CIS 330: _ _ _ _ ______ _ _____ / / / /___ (_) __ ____ _____ ____/ / / ____/ _/_/ ____/__ __ / / / / __ \/ / |/_/ / __ `/ __ \/ __ / / / _/_// / __/ /___/ /_ / /_/ / / / / /> < / /_/ / / / / /_/ / / /____/_/ / /__/_ __/_ __/ \____/_/ /_/_/_/|_| \__,_/_/ /_/\__,_/ \____/_/ \____//_/ /_/ Lecture 8: Function Pointers, Subtyping, More Unix

Reminder No class on Wednesday

Luks Programming Contest 19 th Annual Luks Programming Contest – May 2nd, 10am-2pm – Deschutes Room 100 Benefits – Fun – Food – Experience – T-shirt – Extra credit for CIS 330 (2%) Contact Prof. Wilson ASAP

Outline Review Project 2F Function Pointers Subtyping More Unix Project 2G Bonus Material

Outline Review Project 2F Function Pointers Subtyping More Unix Project 2G Bonus Material

Enums Enums make your own type – Type is “list of key words” Enums are useful for code clarity – Always possible to do the same thing with integers Be careful with enums – … you can “contaminate” a bunch of useful words

enum example C keyword “enum” – means enum definition is coming This enum contains 6 different student types semi-colon!!!

enum example

Data types float double int char unsigned char All of these are simple data types

Structs: a complex data type Construct that defines a group of variables – Variables must be grouped together in contiguous memory Also makes accessing variables easier … they are all part of the same grouping (the struct)

struct syntax C keyword “struct” – means struct definition is coming This struct contains 6 doubles, meaning it is 48 bytes semi-colon!!! “.” accesses data members for a struct Declaring an instance

Nested structs accesses dir part of Ray accesses directionZ part of Direction (part of Ray)

typedef typedef: tell compiler you want to define a new type saves you from having to type “struct” every time you declare a struct.

Other uses for typedef Declare a new type for code clarity – typedef int MilesPerHour; Makes a new type called MilesPerHour. MilesPerHour works exactly like an int. Also used for enums & unions – same trick as for structs … typedef saves you a word

Unions Union: special data type – store many different memory types in one memory location When dealing with this union, you can treat it as a float, as an int, or as 4 characters. This data structure has 4 bytes

Unions Why are unions useful?

Unions Example

Why are Unions useful? Allows you to represent multiple data types simultaneously – But only if you know that you want exactly one of them Benefit is space efficiency, which leads to performance efficiency

Outline Review Project 2F Function Pointers Subtyping More Unix Project 2G Bonus Material

Project 2F

Outline Review Project 2F Function Pointers Subtyping More Unix Project 2G Bonus Material

Function Pointers Idea: – You have a pointer to a function – This pointer can change based on circumstance – When you call the function pointer, it is liking calling a known function

Function Pointer Example

Function Pointers vs Conditionals What are the pros and cons of each approach?

Function Pointer Example #2 Function pointer Part of function signature Don’t be scared of extra ‘*’s … they just come about because of pointers in the arguments or return values.

Simple-to-Exotic Function Pointer Declarations void (*foo)(void); void (*foo)(int **, char ***); char ** (*foo)(int **, void (*)(int)); These sometimes come up on interviews.

Callbacks Callbacks: function that is called when a condition is met – Commonly used when interfacing between modules that were developed separately. – … libraries use callbacks and developers who use the libraries “register” callbacks.

Callback example

Function Pointers We are going to use function pointers to accomplish “sub-typing” in Project 2G.

Outline Review Project 2F Function Pointers Subtyping More Unix Project 2G Bonus Material

Subtyping Type: a data type (int, float, structs) Subtype / supertype: – Supertype: the abstraction of a type (not specific) – Subtype: a concrete implementation of the supertype (specific) The fancy term for this is “subtype polymorphism”

Subtyping: example Supertype: Shape Subtypes: – Circle – Rectangle – Triangle

Subtyping works via interfaces Must define an interface for supertype/subtypes – Interfaces are the functions you can call on the supertype/subtypes The set of functions is fixed – Every subtype must define all functions

Subtyping I write my routines to the supertype interface All subtypes can automatically use this code – Don’t have to modify code when new supertypes are added Example: – I wrote code about Shapes. – I don’t care about details of subtypes (Triangle, Rectangle, Circle) – When new subtypes are added (Square), my code doesn’t change

Outline Review Project 2F Function Pointers Subtyping Project 2G More Unix Bonus Material

Project 2G You will extend Project 2F You will do Subtyping – You will make a union of all the structs – You will make a struct of function pointers This will enable subtyping Goal: driver program works on “Shape”s and doesn’t need to know if it is a Circle, Triangle, or Rectangle.

Outline Review Project 2F Function Pointers Subtyping Project 2G More Unix Bonus Material

“.” and “..” Unix convention: – “.” : the current directory – “..” : the parent directory Quiz: you in /path/to/dir and issue “cd./.././..”. Where do you end up? Quiz: you in /path/to/dir and issue “cd./.././..”. Where do you end up? Answer: “/path”

pwd and $PWD pwd: unix command that returns the “present working directory” $PWD : environment variable that contains the present working directory $OLDPWD : environment variable that contains the previous present working directory “-” : shortcut for the previous PWD

PATH environment variable When the shell wants to invoke a command, it searches for the command in the path “tr”: Unix command for replacing characters (translating characters).

which which: tells you the directory the shell is finding a command in.

Invoking programs in current directory shell works with./prog_name since it views this as a path. Hence $PATH is ignored.

Invoking programs in current directory

Trojan Horse Attack export PATH=.:$PATH – why is this a terrible idea?

Wild Cards ‘*’ (asterisk) serves as a wild card that does pattern matching

Wild Cards You can use multiple asterisks for complex patterns

if / then / else / fi Advanced constructs:

for / do / done

-f and -d -f : does a file exist? -d : does a directory exist? example: if [[ ! -d include ]] ; then mkdir include ; fi

Outline Review Project 2F Function Pointers Subtyping Project 2G More Unix Bonus Material

Mangling Mangling refers to combing information about the return type and arguments and “mangling” it with function name. – Way of ensuring that you don’t mix up functions. Causes problems with compiler mismatches – C++ compilers haven’t standardized. – Can’t take library from icpc and combine it with g++.

C++ will let you overload functions with different types

C++ also gives you access to mangling via “namespaces” Functions or variables within a namespace are accessed with “::”

C++ also gives you access to mangling via “namespaces” The “using” keyword makes all functions and variables from a namespace available without needing “::”. And you can still access other namespaces. The “using” keyword makes all functions and variables from a namespace available without needing “::”. And you can still access other namespaces.

Backgrounding “&”: tell shell to run a job in the background – Background means that the shell acts as normal, but the command you invoke is running at the same time. “sleep 60” vs “sleep 60 &” When would backgrounding be useful?

Suspending Jobs You can suspend a job that is running Press “Ctrl-Z” The OS will then stop job from running and not schedule it to run. You can then: – make the job run in the background. Type “bg” – make the job run in the foreground. Type “fg” – like you never suspended it at all!!

Web pages ssh –l ix.cs.uoregon.edu cd public_html put something in index.html  it will show up as

Web pages You can also exchange files this way – scp – point people to /file.pdf Note that ~/public_html/dir1 shows up as /dir1 /dir1 (“~/dir1” is not accessible via web) Note that ~/public_html/dir1 shows up as /dir1 /dir1 (“~/dir1” is not accessible via web)

Unix and Windows difference Unix: – “\n”: goes to next line, and sets cursor to far left Windows: – “\n”: goes to next line (cursor does not go to left) – “\m”: sets cursor to far left Text files written in Windows often don’t run well on Unix, and vice-versa – There are more differences than just newlines vi: “set ff=unix” solves this

memcpy I mostly use C++, and I still use memcpy all the time

sscanf like printf, but it parses from a string sscanf(str, "%s\n%d %d\n%d\n", magicNum, &width, &height, &maxval); on: str=“P6\n \n255\n”; gives: magicNum = “P6”, width = 1000, height = 1000, maxval = 255