5. Applicative Programming. 1. Juli 2011

Size: px
Start display at page:

Download "5. Applicative Programming. 1. Juli 2011"

Transcription

1 1. Juli 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 41

2 Outline Recapitulation Computer architecture extended: Registers and caches Header files Global variables and constants Namespaces Loops revisited Enums Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 2 of 41

3 Recapitulation i n t foo ( i n t a, i n t b ) { i f ( a==0) { r e t u r n b ; b = b%a ; What is missing in this code? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 3 of 41

4 Recapitulation i n t foo ( i n t a, i n t b ) { i f ( a==0) { r e t u r n b ; b = b%a ; What is missing in this code? What does the return b do? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 3 of 41

5 Recapitulation i n t foo ( i n t a, i n t b ) { i f ( a==0) { r e t u r n b ; b = b%a ; What is missing in this code? What does the return b do? What happens if we replae a==0 with a=0? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 3 of 41

6 Recapitulation i n t foo ( i n t a, i n t b ) { i f ( a==0) { i n t a ; a=b ; r e t u r n b ; b = b%a ; r e t u r n b ; What value does a have in each single code line? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 4 of 41

7 Recapitulation i n t foo ( i n t a, i n t b ) { i f ( a==0) { i n t a ; a=b ; r e t u r n b ; b = b%a ; r e t u r n b ; What value does a have in each single code line? What happens with the following snippet? i n t a=10; i n t b=20; i n t r =foo ( a, b ) Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 4 of 41

8 Recapitulation i n t foo ( i n t a, i n t b ) { i f ( a==0) { i n t a ; a=b ; r e t u r n b ; b = b%a ; r e t u r n b ; What value does a have in each single code line? What happens with the following snippet? i n t a=10; i n t b=20; i n t r =foo ( a, b ) Can foo() modify the value of the variable a in our main application? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 4 of 41

9 Recapitulation i n t foo ( i n t a, i n t b ) { i f ( a==0) { i n t a ; a=b ; r e t u r n b ; b = b%a ; r e t u r n b ; What value does a have in each single code line? What happens with the following snippet? i n t a=10; i n t b=20; i n t r =foo ( a, b ) Can foo() modify the value of the variable a in our main application? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 4 of 41

10 5.1. Computer Architecture Excursus: Registers and Caches John von Neumann Manhattan Project (Los Alamos) June 30, 1945 (but Turing et. al. published similar ideas) Computer Consists of Four Components There is a Von-Neumann bottleneck John von Neumann Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 5 of 41

11 The Neumann Bottleneck One or two documents in the office (two registers in the ALU) ain t sufficient. Introduce more registers (Itanium e.g. has 128 of them). However, number of registers still is limited. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 6 of 41

12 The Neumann Bottleneck Running into the basement is time consuming, and The bigger the basement (memory), the slower the search becomes. The faster the processor, the more annoying the slow search in the memory is. Can we study this effect? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 7 of 41

13 The Memory Gap Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 8 of 41

14 Idea of a Cache Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 9 of 41

15 Cache Levels Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 10 of 41

16 Caches Computers have a hierarchy of caches and lots of registers. The time to finish one operation depends significantly on where the data is located right now. It is important for many algorithms to exhibit spatial locality and temporal locality. Brain teaser 1: How would you implement a matrix-vector product? Brain teaser 2: What is the fundamental challenge if we transpose a matrix? Brain teaser 3: What is the best way to run through a Cartesian grid? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 11 of 41

17 5.2. Header Files C/C++ distinguishes declaration and definition. Motivation for this is still missing and requires a more general definition than before. Declaration: Tell the compiler what names are available. Definition: Define where the name is stored. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 12 of 41

18 Functions and Their Declaration void foo ( i n t a ) { / / do something i n t e l l i g e n t... foo ( 4 4 ) ; This definition is both a declaration and a definition. A function call is replaced by a reset of the program counter (and some additional things). Sometimes, we d like to split up files into several files. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 13 of 41

19 Functions and Their Declaration / / F i l e A void foo ( i n t a ) { / / do something i n t e l l i g e n t / / F i l e B void bar ( i n t a ) { foo ( a + 2 ) ; We can invent some clever C/C++-concatenate operation (C/C++ actually has such a thing) and make file B compile. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 14 of 41

20 ... However / / F i l e A void foo ( i n t a ) { / / do something i n t e l l i g e n t / / F i l e B void bar ( i n t a ) { foo ( a + 2 ) ; / / F i l e C void t a r ( i n t a ) { foo ( a + 4 ) ; We can invent some clever C/C++-concatenate operation (C/C++ actually has such a thing) and make file B and file C compile. However, the linking process fails as the symbol foo() is defined twice. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 15 of 41

21 Function Definitions / / F i l e A void foo ( i n t a ) { / / do something i n t e l l i g e n t / / F i l e B void foo ( i n t a ) ; void bar ( i n t a ) { foo ( a + 2 ) ; / / F i l e C void foo ( i n t a ) ; void t a r ( i n t a ) { foo ( a + 4 ) ; First, this code compiles fine. Second, this code links fine, if we pass the linker all three files. Third, we now know why! The compiler does not resolve the program counter modifications, but the linker does. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 16 of 41

22 Function Definitions Writing the function s declaration over and over again is cumbersome and error prone. Let s put it into a file of its own. Files containing solely declarations, are called header files and typically have the extension.h or.hpp. / / F i l e my. h void foo ( i n t a ) ; / / F i l e my. cpp # i n c l u d e my. h void foo ( i n t a ) { / / do something i n t e l l i g e n t / / F i l e B # i n c l u d e my. h void bar ( i n t a ) { foo ( a + 2 ) ; / / F i l e C # i n c l u d e my. h void t a r ( i n t a ) { foo ( a + 4 ) ; Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 17 of 41

23 Header Files / / F i l e my. h void foo ( i n t a ) ; / / F i l e my. cpp # i n c l u d e my. h void foo ( i n t a ) { / / do something i n t e l l i g e n t A good header file never contains definitions. A good header files has lots of comments as other editors of files see it frequently. A header file is typically accompanied by one implementation file (best practice). Every C/C++ and every UNIX installation comes along with tons of header files. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 18 of 41

24 Linker Usage C comes along with lots of useful standard libraries. These libraries provide tons of useful operations. See math.h for example or iostream which provides the terminal output function << (this is also just a function with the name <<). We add definitions due to include statements. We add the compiled files either by passing the object files to the linker or passing the library files (a,so) due to the -l argument with -L giving the compiler the library search path. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 19 of 41

25 5.3. The Precompiler and Global Variables Circulant Declarations / / F i l e a. h void foo ( i n t a ) ; void foo ( i n t a ) ; / / m u l t i p l e d e f i n i t i o n s. Has to be removed / / F i l e b. cpp # i n c l u d e my. h void bar ( i n t a ) ; / / F i l e b. cpp # i n c l u d e my. h # i n c l u d e my. h / / m u l t i p l e d e f i n i t i o n s. Has to be removed void bar ( i n t a ) ; Sometimes, it is pain to remove multiple definitions. In particular, if a headers include other headers (transitivity of includes). Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 20 of 41

26 Include Guards / / F i l e a. h # i f n d e f INCLUDE A H # define INCLUDE A H void foo ( i n t a ) ; # e n d i f / / F i l e b. h # i n c l u d e my. h void bar ( i n t a ) ; / / F i l e b. cpp # i n c l u d e b. h void bar ( i n t a ) {\ l d o t s / / F i l e c. h # i n c l u d e my. h # i n c l u d e b. h void t a r ( ) ; / / F i l e c. cpp # i n c l u d e c. h void t a r ( ) {\ l d o t s Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 21 of 41

27 The C/C++ Precompiler / / This i s my header # i f n d e f IDENTIFIER FOR MY HEADER H # define IDENTIFIER FOR MY HEADER H / / A l l the declarations here # e n d i f / / This i s my implementation # i n c l u d e myheader. h / / a l l the d e f i n i t i o n s here The C/C++ is a powerful precompiler (does something similar like cut- n-paste). Its symbol mechanism allows us to avoid multiple declarations. Embed every header file into ifndef-define-endif statements. Precompiler can do a lot of additional things we won t discuss here. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 22 of 41

28 Global Variables and Constants / / This i s my header # i f n d e f IDENTIFIER FOR PI HEADER H # define IDENTIFIER FOR PI HEADER H / / A l l the declarations here const double PI ; / / T e l l s compiler t h a t t h i s v a r i a b l e may not be / / changed. # e n d i f / / This i s my implementation # i n c l u d e p i. h const double PI = 20; / / Another f i l e # i n c l u d e p i. h \ l d o t s double myvalue ; \ l d o t s myvalue = pi ; Remember difference of declaration and definition. Other files only need the definition of the variable (which is a constant here). Linker then is responsible to bring together definition (address) and references to the symbol. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 23 of 41

29 Multiple Declarations with Different Context / / This i s header A # i f n d e f IDENTIFIER FOR HEADER A H # define IDENTIFIER FOR HEADER A H / Calculates f o r c e between two p a r t i c l e s ( Lennard Jones ) / f u n c t i o n double getforce ( const double& distance ) ; # e n d i f / / This i s header B # i f n d e f IDENTIFIER FOR HEADER B H # define IDENTIFIER FOR HEADER B H / Calculates f o r c e between two p a r t i c l e s (WCA model ) / f u n c t i o n double getforce ( const double& distance ) ; # e n d i f Sometimes, functions and variables have the same name as they were developed by different people and written into different files. It is very difficult to distinguish between these names, i.e. we have to analyse the (indirect) include paths. Sometimes, we might want to use both functions within one implementation file. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 24 of 41

30 Namespaces / / This i s header A # i f n d e f IDENTIFIER FOR HEADER A H # define IDENTIFIER FOR HEADER A H namespace lennardjones { / Calculates f o r c e between two p a r t i c l e s ( Lennard Jones ) / double getforce ( const double& distance ) ; # e n d i f / / This i s header B # i f n d e f IDENTIFIER FOR HEADER B H # define IDENTIFIER FOR HEADER B H namespace wca { / Calculates f o r c e between two p a r t i c l e s (WCA model ) / double getforce ( const double& distance ) ; # e n d i f With namespaces, we can group variables, constants, and functions into logic subsets. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 25 of 41

31 Using Namespaces / / This i s the header # i f n d e f IDENTIFIER FOR HEADER A H # define IDENTIFIER FOR HEADER A H namespace lennardjones { / Calculates f o r c e between two p a r t i c l e s ( Lennard Jones ) / double getforce ( const double& distance ) ; # e n d i f / / This i s the implementation # i n c l u d e lennardjones. h double lennardjones : : getforce ( const double& distance ) { \ l d o t s Namespaces are predecessors of the identifier. Namespaces can be embedded into each other. Alternatively, you can use using namespace lennardjones ; Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 26 of 41

32 The Standard Library # i n c l u d e <iostream> i n t main ( ) { i n t a = 1; std : : cout << my d a r l i n g i s my no. << a << std : : endl ; r e t u r n 0; All the functions, constants,... of the standard library are embedded into the namespace std. std::endl is just a constant whose definition can be found in iostream or a header includes by iostream. Hint: Never use using namespace within a header file. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 27 of 41

33 5.4. Loops Create three files: main.cpp, fibonacci.cpp, and fibonacci.h. Define a function void printfibonacci(int max) in fibonacci.cpp. It shall be embedded into the namespace fib. Make printfibonacci(int max) print all Fibonacci numbers F n = F n 1 +F n 2 F 0 = 0 F 1 = 1 from F n {0, max. At least F 0 and F 1 shall be printed! Realise the computation with a while loop, or do it recursively. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 28 of 41

34 Do-While Loop do { / / something i n t e l l i g e n t while ( expression ) ; Rewrite your code using the do-while loop. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 29 of 41

35 The For-Loop i n t a=0; do { / / something i n t e l l i g e n t a++; while ( a<20); Often, we want to run through a sequence with fixed size. While loops are error-prone as we might forget the increment. Alternatively: Use the for loop. f o r ( i n t a=0; a<20; a++) { / / something i n t e l l i g e n t Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 30 of 41

36 Semantics of the For Loop f o r ( i n t a=0; a<20; a++) { / / something i n t e l l i g e n t The for statements opens a new scope. Statement int a creates a new variable (loop counter) within this scope. Statement a<20 is the termination criterion. It is evaluated before one iterate. Statement a++ is an increment. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 31 of 41

37 Scoping within a For Loop i n t a=20; f o r ( i n t a=0; a<20; a++) { / / a i s hidden w i t h i n loop body / / something i n t e l l i g e n t f o r ( i n t a=0; a<20; ) { / / something i n t e l l i g e n t a+=20; / / a ain t known outside the scope Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 32 of 41

38 A For Loop is a While Loop f o r ( i n t a=0; a<20; a++) { / / a i s hidden w i t h i n loop body / / something i n t e l l i g e n t { i n t a=0; while ( a<20) { / / something i n t e l l i g e n t a++; Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 33 of 41

39 What do These Snippets Do? f o r ( i n t a=0; a<20; a++) { / / something i n t e l l i g e n t a =2; f o r ( i n t a=0; a<20; a++) { / / something i n t e l l i g e n t a =2; f o r ( i n t a=0; a<20; a =2) { / / something i n t e l l i g e n t Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 34 of 41

40 What do These Snippets Do? f o r ( i n t a=0; a<20;) { / / something i n t e l l i g e n t a+=2; i n t b=2; f o r ( i n t a=b 2; a<20;) { / / something i n t e l l i g e n t b++; f o r ( i n t a=0; a<20; a ++); { / / something i n t e l l i g e n t Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 35 of 41

41 For Best Practices f o r ( i n t a=0; a<20;) { / / something i n t e l l i g e n t a+=2; Use for for fixed ranges (compiler can optimise and parallelise). Do not invoke a function in the guard or increment section. Always open brackets after a for loop. Do not manipulate the counter within a for loop (error-prone; optimisation). Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 36 of 41

42 5.5. Enums In the next session, we will create more sophisticated data structures such as sequences of variables and complex data types that represent whole records (like tuples of time and measurement in an experiment). Before, we however have to talk about the last (primitive) datatype enumerations. enum Colour { Red, Green, Blue ; Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 37 of 41

43 Enums in Action enum Colour { Red, Green, Blue ; \ l d o t s Colour mycolour = Red ; \ l d o t s i f ( mycolour==green ) {... Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 38 of 41

44 Enums enum Colour { Red, Green, Blue ; Mind the semicolon terminating the enum definition. Enums are basically integers (no type safety). Enum variants belong the enclosing namespace. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 39 of 41

45 Enums and Integers enum Colour { Red, Green, Blue ; / Maps c olour to a grey value / i n t getgreyvalue ( const Colour& colour ) { i n t a = getgreyvalue ( 1 7 ) ; Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 40 of 41

46 Enums and Namespaces namespace myspace { enum Colour { Red, / / i s mapped to 0 Green, / / i s mapped to 1 Blue / / i s mapped to 2 ; enum TUMColours { Blue, / / i s mapped to 0 Orange, / / i s mapped to 1 White, / / i s mapped to 2 Black / / i s mapped to 3 myspace : : Colour colour = myspace : : Blue ; / / what happens? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 41 of 41

4. Functions. March 10, 2010

4. Functions. March 10, 2010 March 10, 2010 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 40 Outline Recapitulation Functions Part 1 What is a Procedure? Call-by-value and Call-by-reference Functions

More information

6. Pointers, Structs, and Arrays. March 14 & 15, 2011

6. Pointers, Structs, and Arrays. March 14 & 15, 2011 March 14 & 15, 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 47 Outline Recapitulation Pointers Dynamic Memory Allocation Structs Arrays Bubble Sort Strings Einführung

More information

6. Pointers, Structs, and Arrays. 1. Juli 2011

6. Pointers, Structs, and Arrays. 1. Juli 2011 1. Juli 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 50 Outline Recapitulation Pointers Dynamic Memory Allocation Structs Arrays Bubble Sort Strings Einführung

More information

Object-oriented Programming in C++

Object-oriented Programming in C++ Object-oriented Programming in C++ Working with C and C++ Wolfgang Eckhardt, Tobias Neckel March 23, 2015 Working with C and C++, March 23, 2015 1 Challenges of This Course Heterogeneity of the audience

More information

Object-oriented Programming in C++

Object-oriented Programming in C++ Object-oriented Programming in C++ Working with C and C++ Wolfgang Eckhardt, Tobias Neckel June 30, 2014 Working with C and C++, June 30, 2014 1 Challenges of This Course Heterogeneity of the audience

More information

10. Object-oriented Programming. 7. Juli 2011

10. Object-oriented Programming. 7. Juli 2011 7. Juli 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 47 Outline Object Case Study Brain Teaser Copy Constructor & Operators Object-oriented Programming, i.e.

More information

8. Object-oriented Programming. June 15, 2010

8. Object-oriented Programming. June 15, 2010 June 15, 2010 Introduction to C/C++, Tobias Weinzierl page 1 of 41 Outline Recapitulation Copy Constructor & Operators Object-oriented Programming Dynamic and Static Polymorphism The Keyword Static The

More information

C++ Basics. Data Processing Course, I. Hrivnacova, IPN Orsay

C++ Basics. Data Processing Course, I. Hrivnacova, IPN Orsay C++ Basics Data Processing Course, I. Hrivnacova, IPN Orsay The First Program Comments Function main() Input and Output Namespaces Variables Fundamental Types Operators Control constructs 1 C++ Programming

More information

11. Generic Programming and Design Patterns. 8. Juli 2011

11. Generic Programming and Design Patterns. 8. Juli 2011 8. Juli 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 26 Outline Recapitulation Template Programming An Overview over the STL Design Patterns (skipped) Evaluation/feedback

More information

PIC 10A Objects/Classes

PIC 10A Objects/Classes PIC 10A Objects/Classes Ernest Ryu UCLA Mathematics Last edited: November 13, 2017 User-defined types In C++, we can define our own custom types. Object is synonymous to variable, and class is synonymous

More information

Starting to Program in C++ (Basics & I/O)

Starting to Program in C++ (Basics & I/O) Copyright by Bruce A. Draper. 2017, All Rights Reserved. Starting to Program in C++ (Basics & I/O) On Tuesday of this week, we started learning C++ by example. We gave you both the Complex class code and

More information

Separate Compilation of Multi-File Programs

Separate Compilation of Multi-File Programs 1 About Compiling What most people mean by the phrase "compiling a program" is actually two separate steps in the creation of that program. The rst step is proper compilation. Compilation is the translation

More information

CE221 Programming in C++ Part 1 Introduction

CE221 Programming in C++ Part 1 Introduction CE221 Programming in C++ Part 1 Introduction 06/10/2017 CE221 Part 1 1 Module Schedule There are two lectures (Monday 13.00-13.50 and Tuesday 11.00-11.50) each week in the autumn term, and a 2-hour lab

More information

Project structure - working with multiple les

Project structure - working with multiple les Project structure - working with multiple les Declaration and denition Recall the dierence between declaration... double max( double a, double b ); and denition... double max( double a, double b ) { if

More information

UEE1303(1070) S12: Object-Oriented Programming Constant Pointer and Class

UEE1303(1070) S12: Object-Oriented Programming Constant Pointer and Class UEE1303(1070) S12: Object-Oriented Programming Constant Pointer and Class What you will learn from Lab 4 In this laboratory, you will learn how to use const to identify constant pointer and the basic of

More information

Programmazione. Prof. Marco Bertini

Programmazione. Prof. Marco Bertini Programmazione Prof. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Hello world : a review Some differences between C and C++ Let s review some differences between C and C++ looking

More information

Outline. 1 Function calls and parameter passing. 2 Pointers, arrays, and references. 5 Declarations, scope, and lifetimes 6 I/O

Outline. 1 Function calls and parameter passing. 2 Pointers, arrays, and references. 5 Declarations, scope, and lifetimes 6 I/O Outline EDAF30 Programming in C++ 2. Introduction. More on function calls and types. Sven Gestegård Robertz Computer Science, LTH 2018 1 Function calls and parameter passing 2 Pointers, arrays, and references

More information

COMP322 - Introduction to C++ Lecture 02 - Basics of C++

COMP322 - Introduction to C++ Lecture 02 - Basics of C++ COMP322 - Introduction to C++ Lecture 02 - Basics of C++ School of Computer Science 16 January 2012 C++ basics - Arithmetic operators Where possible, C++ will automatically convert among the basic types.

More information

Getting started with C++ (Part 2)

Getting started with C++ (Part 2) Getting started with C++ (Part 2) CS427: Elements of Software Engineering Lecture 2.2 11am, 16 Jan 2012 CS427 Getting started with C++ (Part 2) 1/22 Outline 1 Recall from last week... 2 Recall: Output

More information

2. Variables, Identifiers, and Expressions. March 8, 2011

2. Variables, Identifiers, and Expressions. March 8, 2011 March 8, 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 34 Outline A Movie Structure of Simple C Codes Comments & Documentation Variables & Identifiers Built-in

More information

Object Oriented Design

Object Oriented Design Object Oriented Design Chapter 6 Example Activity Diagram 1 Outline Chapter 6 Topics 6.6 C++ Standard Library Header Files 6.14 Inline Functions 6.16 Default Arguments 6.17 Unary Scope Resolution Operator

More information

CS2141 Software Development using C/C++ C++ Basics

CS2141 Software Development using C/C++ C++ Basics CS2141 Software Development using C/C++ C++ Basics Integers Basic Types Can be short, long, or just plain int C++ does not define the size of them other than short

More information

CS2141 Software Development using C/C++ Compiling a C++ Program

CS2141 Software Development using C/C++ Compiling a C++ Program CS2141 Software Development using C/C++ Compiling a C++ Program g++ g++ is the GNU C++ compiler. A program in a file called hello.cpp: #include using namespace std; int main( ) { cout

More information

Comp Sci 1570 Introduction to C++

Comp Sci 1570 Introduction to C++ guards Comp Sci 1570 Introduction to C++ Outline guards 1 2 guards 3 Outline guards 1 2 guards 3 Modular guards One file before system includes prototypes main driver function function definitions now

More information

Superior University. Department of Electrical Engineering CS-115. Computing Fundamentals. Experiment No.1

Superior University. Department of Electrical Engineering CS-115. Computing Fundamentals. Experiment No.1 Superior University Department of Electrical Engineering CS-115 Computing Fundamentals Experiment No.1 Introduction of Compiler, Comments, Program Structure, Input Output, Data Types and Arithmetic Operators

More information

CS24 Week 3 Lecture 1

CS24 Week 3 Lecture 1 CS24 Week 3 Lecture 1 Kyle Dewey Overview Some minor C++ points ADT Review Object-oriented Programming C++ Classes Constructors Destructors More minor Points (if time) Key Minor Points const Motivation

More information

Lecture 7. Log into Linux New documents posted to course webpage

Lecture 7. Log into Linux New documents posted to course webpage Lecture 7 Log into Linux New documents posted to course webpage Coding style guideline; part of project grade is following this Homework 4, due on Monday; this is a written assignment Project 1, due next

More information

Object-Oriented Programming in C++

Object-Oriented Programming in C++ Object-Oriented Programming in C++ Pre-Lecture 9: Advanced topics Prof Niels Walet (Niels.Walet@manchester.ac.uk) Room 7.07, Schuster Building March 24, 2015 Prelecture 9 Outline This prelecture largely

More information

Intermediate Programming, Spring 2017*

Intermediate Programming, Spring 2017* 600.120 Intermediate Programming, Spring 2017* Misha Kazhdan *Much of the code in these examples is not commented because it would otherwise not fit on the slides. This is bad coding practice in general

More information

CS Software Engineering for Scientific Computing. Lecture 5: More C++, more tools.

CS Software Engineering for Scientific Computing. Lecture 5: More C++, more tools. CS 294-73 Software Engineering for Scientific Computing Lecture 5: More C++, more tools. Let s go back to our build of mdarraymain.cpp clang++ -DDIM=2 -std=c++11 -g mdarraymain.cpp DBox.cpp -o mdarraytest.exe

More information

Implementing an ADT with a Class

Implementing an ADT with a Class Implementing an ADT with a Class the header file contains the class definition the source code file normally contains the class s method definitions when using Visual C++ 2012, the source code and the

More information

y

y The Unfit tutorial By Dr Martin Buist Initial version: November 2013 Unfit version: 2 or later This tutorial will show you how to write your own cost function for Unfit using your own model and data. Here

More information

1. Introduction. March 7, 2011

1. Introduction. March 7, 2011 March 7, 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 41 Outline The Course The Motivation The Introduction What is a computer? von-neuman architecture What is

More information

C++ Programming Lecture 1 Software Engineering Group

C++ Programming Lecture 1 Software Engineering Group C++ Programming Lecture 1 Software Engineering Group Philipp D. Schubert Contents 1. More on data types 2. Expressions 3. Const & Constexpr 4. Statements 5. Control flow 6. Recap More on datatypes: build-in

More information

C++ Programming for Non-C Programmers. Supplement

C++ Programming for Non-C Programmers. Supplement C++ Programming for Non-C Programmers Supplement ii C++ Programming for Non-C Programmers C++ Programming for Non-C Programmers Published by itcourseware, 10333 E. Dry Creek Rd., Suite 150, Englewood,

More information

CIS 190: C/C++ Programming. Classes in C++

CIS 190: C/C++ Programming. Classes in C++ CIS 190: C/C++ Programming Classes in C++ Outline Header Protection Functions in C++ Procedural Programming vs OOP Classes Access Constructors Headers in C++ done same way as in C including user.h files:

More information

Computer Programming. Basic Control Flow - Loops. Adapted from C++ for Everyone and Big C++ by Cay Horstmann, John Wiley & Sons

Computer Programming. Basic Control Flow - Loops. Adapted from C++ for Everyone and Big C++ by Cay Horstmann, John Wiley & Sons Computer Programming Basic Control Flow - Loops Adapted from C++ for Everyone and Big C++ by Cay Horstmann, John Wiley & Sons Objectives To learn about the three types of loops: while for do To avoid infinite

More information

CSI33 Data Structures

CSI33 Data Structures Outline Department of Mathematics and Computer Science Bronx Community College October 25, 2017 Outline Outline 1 Chapter 8: A C++ Introduction For Python Programmers Function Details Assert Statements

More information

Agenda. The main body and cout. Fundamental data types. Declarations and definitions. Control structures

Agenda. The main body and cout. Fundamental data types. Declarations and definitions. Control structures The main body and cout Agenda 1 Fundamental data types Declarations and definitions Control structures References, pass-by-value vs pass-by-references The main body and cout 2 C++ IS AN OO EXTENSION OF

More information

Chapter 1 INTRODUCTION

Chapter 1 INTRODUCTION Chapter 1 INTRODUCTION A digital computer system consists of hardware and software: The hardware consists of the physical components of the system. The software is the collection of programs that a computer

More information

GEA 2017, Week 4. February 21, 2017

GEA 2017, Week 4. February 21, 2017 GEA 2017, Week 4 February 21, 2017 1. Problem 1 After debugging the program through GDB, we can see that an allocated memory buffer has been freed twice. At the time foo(...) gets called in the main function,

More information

Looping and Counting. Lecture 3 Hartmut Kaiser hkaiser/fall_2012/csc1254.html

Looping and Counting. Lecture 3 Hartmut Kaiser  hkaiser/fall_2012/csc1254.html Looping and Counting Lecture 3 Hartmut Kaiser hkaiser@cct.lsu.edu http://www.cct.lsu.edu/ hkaiser/fall_2012/csc1254.html Abstract First we ll discuss types and type safety. Then we will modify the program

More information

EL2310 Scientific Programming

EL2310 Scientific Programming (pronobis@kth.se) Overview Overview Wrap Up Introduction to Object Oriented Paradigm More on and Members Operator Overloading Last time Intro to C++ Differences between C and C++ Intro to OOP Today Object

More information

Looping and Counting. Lecture 3. Hartmut Kaiser hkaiser/fall_2011/csc1254.html

Looping and Counting. Lecture 3. Hartmut Kaiser  hkaiser/fall_2011/csc1254.html Hartmut Kaiser hkaiser@cct.lsu.edu http://www.cct.lsu.edu/ hkaiser/fall_2011/csc1254.html 2 Abstract First we ll discuss types and type safety. Then we will modify the program we developed last time (Framing

More information

4. Structure of a C++ program

4. Structure of a C++ program 4.1 Basic Structure 4. Structure of a C++ program The best way to learn a programming language is by writing programs. Typically, the first program beginners write is a program called "Hello World", which

More information

1. Introduction. 27. Juni 2011

1. Introduction. 27. Juni 2011 27. Juni 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 41 Outline The Course The Motivation The Introduction What is a computer? von-neuman architecture What is

More information

PIC 10A. Lecture 17: Classes III, overloading

PIC 10A. Lecture 17: Classes III, overloading PIC 10A Lecture 17: Classes III, overloading Function overloading Having multiple constructors with same name is example of something called function overloading. You are allowed to have functions with

More information

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture 04 Programs with IO and Loop We will now discuss the module 2,

More information

Introduction to C++ IT 1033: Fundamentals of Programming

Introduction to C++ IT 1033: Fundamentals of Programming 2 Introduction to C++ IT 1033: Fundamentals of Programming Budditha Hettige Department of Computer Science C++ C++ is a middle-level programming language Developed by Bjarne Stroustrup Starting in 1979

More information

QUIZ. What are 3 differences between C and C++ const variables?

QUIZ. What are 3 differences between C and C++ const variables? QUIZ What are 3 differences between C and C++ const variables? Solution QUIZ Source: http://stackoverflow.com/questions/17349387/scope-of-macros-in-c Solution The C/C++ preprocessor substitutes mechanically,

More information

Arrays. Comp Sci 1570 Introduction to C++ Array basics. arrays. Arrays as parameters to functions. Sorting arrays. Random stuff

Arrays. Comp Sci 1570 Introduction to C++ Array basics. arrays. Arrays as parameters to functions. Sorting arrays. Random stuff and Arrays Comp Sci 1570 Introduction to C++ Outline and 1 2 Multi-dimensional and 3 4 5 Outline and 1 2 Multi-dimensional and 3 4 5 Array declaration and An array is a series of elements of the same type

More information

Functions and Recursion

Functions and Recursion Functions and Recursion 1 Storage Classes Scope Rules Functions with Empty Parameter Lists Inline Functions References and Reference Parameters Default Arguments Unary Scope Resolution Operator Function

More information

The University Of Michigan. EECS402 Lecture 09. Andrew M. Morgan. Savitch Ch Compiling With Multiple Files Make Utility.

The University Of Michigan. EECS402 Lecture 09. Andrew M. Morgan. Savitch Ch Compiling With Multiple Files Make Utility. The University Of Michigan Lecture 09 Andrew M. Morgan Savitch Ch. 11.1 Compiling With Multiple Files Make Utility Recall ADT Abstract Data Type (ADT: A data type, which has its implementation details

More information

EL6483: Brief Overview of C Programming Language

EL6483: Brief Overview of C Programming Language EL6483: Brief Overview of C Programming Language EL6483 Spring 2016 EL6483 EL6483: Brief Overview of C Programming Language Spring 2016 1 / 30 Preprocessor macros, Syntax for comments Macro definitions

More information

Understanding main() function Input/Output Streams

Understanding main() function Input/Output Streams Understanding main() function Input/Output Streams Structure of a program // my first program in C++ #include int main () { cout

More information

Short Notes of CS201

Short Notes of CS201 #includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

More information

The Four Polymorphisms in C++ Subtype Polymorphism (Runtime Polymorphism) Polymorphism in C

The Four Polymorphisms in C++ Subtype Polymorphism (Runtime Polymorphism) Polymorphism in C The Four Polymorphisms in C++ When people talk about polymorphism in C++ they usually mean the thing of using a derived class through the base class pointer or reference, which is called subtype polymorphism.

More information

Programming, numerics and optimization

Programming, numerics and optimization Programming, numerics and optimization Lecture A-2: Programming basics II Łukasz Jankowski ljank@ippt.pan.pl Institute of Fundamental Technological Research Room 4.32, Phone +22.8261281 ext. 428 March

More information

C++ Support Classes (Data and Variables)

C++ Support Classes (Data and Variables) C++ Support Classes (Data and Variables) School of Mathematics 2018 Today s lecture Topics: Computers and Programs; Syntax and Structure of a Program; Data and Variables; Aims: Understand the idea of programming

More information

Lab 1: First Steps in C++ - Eclipse

Lab 1: First Steps in C++ - Eclipse Lab 1: First Steps in C++ - Eclipse Step Zero: Select workspace 1. Upon launching eclipse, we are ask to chose a workspace: 2. We select a new workspace directory (e.g., C:\Courses ): 3. We accept the

More information

Program Organization and Comments

Program Organization and Comments C / C++ PROGRAMMING Program Organization and Comments Copyright 2013 Dan McElroy Programming Organization The layout of a program should be fairly straight forward and simple. Although it may just look

More information

CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

More information

Programming. Computer. Program. Programming Language. Execute sequence of simple (primitive) instructions What instructions should be provided?

Programming. Computer. Program. Programming Language. Execute sequence of simple (primitive) instructions What instructions should be provided? C++ Basics Programming Computer Execute sequence of simple (primitive) instructions What instructions should be provided? Is there a minimum set? (See Turing Machine) Generic Reduce future limitations

More information

Default Values for Functions Enumeration constant Member Functions

Default Values for Functions Enumeration constant Member Functions Default Values for Functions Enumeration constant Member Functions Shahram Rahatlou University of Rome La Sapienza Corso di Programmazione++ Roma, 22 May 2006 Today s Lecture Go through your solutions

More information

Control flow and string example. C and C++ Functions. Function type-system nasties. 2. Functions Preprocessor. Alastair R. Beresford.

Control flow and string example. C and C++ Functions. Function type-system nasties. 2. Functions Preprocessor. Alastair R. Beresford. Control flow and string example C and C++ 2. Functions Preprocessor Alastair R. Beresford University of Cambridge Lent Term 2007 #include char s[]="university of Cambridge Computer Laboratory";

More information

C++ Basic Elements of COMPUTER PROGRAMMING. Special symbols include: Word symbols. Objectives. Programming. Symbols. Symbols.

C++ Basic Elements of COMPUTER PROGRAMMING. Special symbols include: Word symbols. Objectives. Programming. Symbols. Symbols. EEE-117 COMPUTER PROGRAMMING Basic Elements of C++ Objectives General Questions Become familiar with the basic components of a C++ program functions, special symbols, and identifiers Data types Arithmetic

More information

CSCE 110 PROGRAMMING FUNDAMENTALS

CSCE 110 PROGRAMMING FUNDAMENTALS CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++ Prof. Amr Goneid AUC Part 15. Dictionaries (1): A Key Table Class Prof. amr Goneid, AUC 1 Dictionaries(1): A Key Table Class Prof. Amr Goneid, AUC 2 A Key Table

More information

CS Exam 2 Study Suggestions

CS Exam 2 Study Suggestions CS 131 - Fall 2009 p. 1 last modified: 11-10-09 CS 131 - * Remember: anything covered in lecture, in lab, or on a homework, is FAIR GAME. * You are responsible for all of the material covered through Week

More information

Functions, Arrays & Structs

Functions, Arrays & Structs Functions, Arrays & Structs Unit 1 Chapters 6-7, 11 Function Definitions! Function definition pattern: datatype identifier (parameter1, parameter2,...) { statements... Where a parameter is: datatype identifier

More information

Tutorial 13 Salary Survey Application: Introducing One- Dimensional Arrays

Tutorial 13 Salary Survey Application: Introducing One- Dimensional Arrays Tutorial 13 Salary Survey Application: Introducing One- Dimensional Arrays Outline 13.1 Test-Driving the Salary Survey Application 13.2 Introducing Arrays 13.3 Declaring and Initializing Arrays 13.4 Constructing

More information

CS242 COMPUTER PROGRAMMING

CS242 COMPUTER PROGRAMMING CS242 COMPUTER PROGRAMMING I.Safa a Alawneh Variables Outline 2 Data Type C++ Built-in Data Types o o o o bool Data Type char Data Type int Data Type Floating-Point Data Types Variable Declaration Initializing

More information

Week 3. Function Definitions. Example: Function. Function Call, Return Statement. Functions & Arrays. Gaddis: Chapters 6 and 7.

Week 3. Function Definitions. Example: Function. Function Call, Return Statement. Functions & Arrays. Gaddis: Chapters 6 and 7. Week 3 Functions & Arrays Gaddis: Chapters 6 and 7 CS 5301 Fall 2015 Jill Seaman 1 Function Definitions! Function definition pattern: datatype identifier (parameter1, parameter2,...) { statements... Where

More information

a data type is Types

a data type is Types Pointers Class 2 a data type is Types Types a data type is a set of values a set of operations defined on those values in C++ (and most languages) there are two flavors of types primitive or fundamental

More information

Variables and Constants

Variables and Constants HOUR 3 Variables and Constants Programs need a way to store the data they use. Variables and constants offer various ways to work with numbers and other values. In this hour you learn: How to declare and

More information

COMP322 - Introduction to C++

COMP322 - Introduction to C++ COMP322 - Introduction to C++ Winter 2011 Lecture 2 - Language Basics Milena Scaccia School of Computer Science McGill University January 11, 2011 Course Web Tools Announcements, Lecture Notes, Assignments

More information

Week 3. Function Definitions. Example: Function. Function Call, Return Statement. Functions & Arrays. Gaddis: Chapters 6 and 7. CS 5301 Spring 2018

Week 3. Function Definitions. Example: Function. Function Call, Return Statement. Functions & Arrays. Gaddis: Chapters 6 and 7. CS 5301 Spring 2018 Week 3 Functions & Arrays Gaddis: Chapters 6 and 7 CS 5301 Spring 2018 Jill Seaman 1 Function Definitions l Function definition pattern: datatype identifier (parameter1, parameter2,...) { statements...

More information

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011 More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors

More information

Exercise 1.1 Hello world

Exercise 1.1 Hello world Exercise 1.1 Hello world The goal of this exercise is to verify that computer and compiler setup are functioning correctly. To verify that your setup runs fine, compile and run the hello world example

More information

11. Arrays. For example, an array containing 5 integer values of type int called foo could be represented as:

11. Arrays. For example, an array containing 5 integer values of type int called foo could be represented as: 11. Arrays An array is a series of elements of the same type placed in contiguous memory locations that can be individually referenced by adding an index to a unique identifier. That means that, for example,

More information

IDE: Integrated Development Environment

IDE: Integrated Development Environment Name: Student ID: Lab Instructor: Borja Sotomayor Do not write in this area 1 2 3 TOTAL Maximum possible points: 30 One of the goals of this lab is to introduce the Eclipse IDE, a software environment

More information

EL2310 Scientific Programming

EL2310 Scientific Programming Lecture 14: Object Oriented Programming in C++ (ramviyas@kth.se) Overview Overview Lecture 14: Object Oriented Programming in C++ Classes (cont d) More on Classes and Members Group presentations Last time

More information

Class Destructors constant member functions

Class Destructors constant member functions Dynamic Memory Management Class Destructors constant member functions Shahram Rahatlou Corso di Programmazione++ Roma, 6 April 2009 Using Class Constructors #include Using std::vector; Datum average(vector&

More information

Chapter 1 Introduction to Computers and C++ Programming

Chapter 1 Introduction to Computers and C++ Programming Chapter 1 Introduction to Computers and C++ Programming 1 Outline 1.1 Introduction 1.2 What is a Computer? 1.3 Computer Organization 1.7 History of C and C++ 1.14 Basics of a Typical C++ Environment 1.20

More information

CMSC 202 Midterm Exam 1 Fall 2015

CMSC 202 Midterm Exam 1 Fall 2015 1. (15 points) There are six logic or syntax errors in the following program; find five of them. Circle each of the five errors you find and write the line number and correction in the space provided below.

More information

C++ Programming for Non-C Programmers. Supplement

C++ Programming for Non-C Programmers. Supplement C++ Programming for Non-C Programmers Supplement C++ Programming for Non-C Programmers C++ Programming for Non-C Programmers Published by ITCourseware, 7245 S. Havana St, Suite 100, Centennial, CO 80112

More information

CHAPTER 4 FUNCTIONS. 4.1 Introduction

CHAPTER 4 FUNCTIONS. 4.1 Introduction CHAPTER 4 FUNCTIONS 4.1 Introduction Functions are the building blocks of C++ programs. Functions are also the executable segments in a program. The starting point for the execution of a program is main

More information

C++ basics Getting started with, and Data Types.

C++ basics Getting started with, and Data Types. C++ basics Getting started with, and Data Types pm_jat@daiict.ac.in Recap Last Lecture We talked about Variables - Variables, their binding to type, storage etc., Categorization based on storage binding

More information

Multiple Choice (Questions 1 14) 28 Points Select all correct answers (multiple correct answers are possible)

Multiple Choice (Questions 1 14) 28 Points Select all correct answers (multiple correct answers are possible) Name Closed notes, book and neighbor. If you have any questions ask them. Notes: Segment of code necessary C++ statements to perform the action described not a complete program Program a complete C++ program

More information

Cpt S 122 Data Structures. Introduction to C++ Part II

Cpt S 122 Data Structures. Introduction to C++ Part II Cpt S 122 Data Structures Introduction to C++ Part II Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Topics Objectives Defining class with a member function

More information

Operator overloading

Operator overloading 1 Introduction 2 The copy constructor 3 Operator Overloading 4 Eg 1: Adding two vectors 5 The -> operator 6 The this pointer 7 Overloading = 8 Unary operators 9 Overloading for the matrix class 10 The

More information

Programming. C++ Basics

Programming. C++ Basics Programming C++ Basics Introduction to C++ C is a programming language developed in the 1970s with the UNIX operating system C programs are efficient and portable across different hardware platforms C++

More information

Professor Terje Haukaas University of British Columbia, Vancouver C++ Programming

Professor Terje Haukaas University of British Columbia, Vancouver  C++ Programming C++ Programming C++ code is essentially a collection of statements terminated by a semicolon, such as (spaces not needed): a = b + c; Most C++ code is organized into header files and cpp files, i.e., C++

More information

By the end of this section you should: Understand what the variables are and why they are used. Use C++ built in data types to create program

By the end of this section you should: Understand what the variables are and why they are used. Use C++ built in data types to create program 1 By the end of this section you should: Understand what the variables are and why they are used. Use C++ built in data types to create program variables. Apply C++ syntax rules to declare variables, initialize

More information

These are notes for the third lecture; if statements and loops.

These are notes for the third lecture; if statements and loops. These are notes for the third lecture; if statements and loops. 1 Yeah, this is going to be the second slide in a lot of lectures. 2 - Dominant language for desktop application development - Most modern

More information

pointers + memory double x; string a; int x; main overhead int y; main overhead

pointers + memory double x; string a; int x; main overhead int y; main overhead pointers + memory computer have memory to store data. every program gets a piece of it to use as we create and use more variables, more space is allocated to a program memory int x; double x; string a;

More information

CSCI 171 Chapter Outlines

CSCI 171 Chapter Outlines Contents CSCI 171 Chapter 1 Overview... 2 CSCI 171 Chapter 2 Programming Components... 3 CSCI 171 Chapter 3 (Sections 1 4) Selection Structures... 5 CSCI 171 Chapter 3 (Sections 5 & 6) Iteration Structures

More information

OBJECT ORIENTED PROGRAMMING

OBJECT ORIENTED PROGRAMMING Classes and Objects So far you have explored the structure of a simple program that starts execution at main() and enables you to declare local and global variables and constants and branch your execution

More information

Come and join us at WebLyceum

Come and join us at WebLyceum Come and join us at WebLyceum For Past Papers, Quiz, Assignments, GDBs, Video Lectures etc Go to http://www.weblyceum.com and click Register In Case of any Problem Contact Administrators Rana Muhammad

More information

Multimedia-Programmierung Übung 3

Multimedia-Programmierung Übung 3 Multimedia-Programmierung Übung 3 Ludwig-Maximilians-Universität München Sommersemester 2016 Ludwig-Maximilians-Universität München Multimedia-Programmierung 1-1 Today Ludwig-Maximilians-Universität München

More information

The Compilation Process

The Compilation Process The Compilation Process Olaf Lenz http://wwwicpuni-stuttgartde Institut für Computerphysik Universität Stuttgart March 17-21, 2014 Separate Compilation http://wwwicpuni-stuttgartde So far, all programs

More information