SlideShare une entreprise Scribd logo
1  sur  24
Brought to you by
www.HalzWeek.com
   This tutorial offers several things.
     You’ll see some neat features of the language.
     You’ll learn the right things to google.
     You’ll find a list of useful books and web pages.


   But don’t expect too much!
     It’s complicated, and you’ll learn by doing.
     But I’ll give it my best shot, okay?
   Basic syntax
   Compiling your program
   Argument passing
   Dynamic memory
   Object-oriented programming
#include <iostream>           Includes function definitions
using namespace std;           for
                               console input and output.
float c(float x) {
   return x*x*x;              Function declaration.
}                             Function definition.

int main() {
   float x;                   Program starts here.
   cin >> x;                  Local variable declaration.
   cout << c(x) << endl;
                              Console input.
    return 0;                 Console output.
}                             Exit main function.
// This is main.cc             // This is mymath.h
#include <iostream>            #ifndef MYMATH
#include “mymath.h”            #define MYMATH
using namespace std;
                               float c(float x);
int main() {                   float d(float x);
   // ...stuff...
}                              #endif



    Functions are declared in m at h. h, but not defined.
                               ym
      They are implemented separately in m at h. c c .
                                          ym
main.cc              mymath.cc             mydraw.cc

      ↓                     ↓                     ↓
g++ -c main.cc       g++ -c mymath.cc     g++ -c mydraw.cc

      ↓                     ↓                     ↓
    main.o               mymath.o             mydraw.o

      ↓                     ↓                     ↓
     g++ -o myprogram main.o mathstuff.o drawstuff.o

      ↓
  myprogram      →
// This is main.cc
#include <GL/glut.h>                  Include OpenGL functions.
#include <iostream>                   Include standard IO
using namespace std;                   functions.
                                      Long and tedious
int main() {                           explanation.
   cout << “Hello!” << endl;
   glVertex3d(1,2,3);
   return 0;                          Calls function from standard
}                                      IO.
                                      Calls function from OpenGL.




% g++ -c main.cc                      Make object file.
                                      Make executable, link GLUT.
% g++ -o myprogram –lglut main.o      Execute program.
% ./myprogram
   Software engineering reasons.
     Separate interface from implementation.
     Promote modularity.
     The headers are a contract.


   Technical reasons.
     Only rebuild object files for modified source files.
     This is much more efficient for huge programs.
Most assignments include
INCFLAGS = 
       -
       I/afs/csail/group/graphics/courses/6.837/public/includ

                                                                makef i l es , which describe
       e
LINKFLAGS = 
       -L/afs/csail/group/graphics/courses/6.837/public/lib 

CFLAGS
       -lglut -lvl
          = -g -Wall -ansi
                                                                the files, dependencies, and
CC
SRCS
          = g++
          = main.cc parse.cc curve.cc surf.cc camera.cc            steps for compilation.
OBJS      = $(SRCS:.cc=.o)
PROG      = a1



                                                                  You can just type m
all: $(SRCS) $(PROG)

$(PROG): $(OBJS)
                                                                                     ake.
        $(CC) $(CFLAGS) $(OBJS) -o $@ $(LINKFLAGS)

.cc.o:

                                                                So you don’t have to know
          $(CC) $(CFLAGS) $< -c -o $@ $(INCFLAGS)



                                                                the stuff from the past few
depend:
          makedepend $(INCFLAGS) -Y $(SRCS)

clean:
          rm $(OBJS) $(PROG)                                                slides.
main.o: parse.h curve.h tuple.h



                                                                   But it’s nice to know.
# ... LOTS MORE ...
#include <iostream>
using namespace std;

int main() {                  Arrays must have known
   int n;
                               sizes at compile time.
   cin >> n;
   float f[n];
                               This doesn’t compile.
    for (int i=0; i<n; i++)
       f[i] = i;

    return 0;
}
#include <iostream>
                              Allocate the array during
using namespace std;
                                 runtime using new.
int main() {
   int n;
   cin >> n;                  No garbage collection, so
   float *f = new float[n];    you have to delete.
    for (int i=0; i<n; i++)
       f[i] = i;                Dynamic memory is
                               useful when you don’t
    delete [] f;
    return 0;                  know how much space
}                                    you need.
#include <iostream>
                              STL vector is a resizable
#include <vector>
using namespace std;           array with all dynamic
                              memory handled for you.
int main() {
   int n;
   cin >> n;                   STL has other cool stuff,
   vector<float> f(n);         such as strings and sets.
    for (int i=0; i<n; i++)
       f[i] = i;
                               If you can, use the STL
    return 0;                    and avoid dynamic
}                                     memory.
#include <iostream>
#include <vector>
using namespace std;           An alternative method
                              that does the same thing.
int main() {
   int n;
   cin >> n;                   Methods are called with
   vector<float> f;
                              the dot operator (same as
    for (int i=0; i<n; i++)             Java).
       f.push_back(i);

    return 0;                 vector is poorly named,
}                             it’s actually just an array.
float twice1(float x) {    This works as expected.
   return 2*x;
}

void twice2(float x) {
   x = 2*x;
                           This does nothing.
}

int main() {
   float x = 3;
   twice2(x);
   cout << x << endl;      The variable is
   return 0;                 unchanged.
}
vector<float>
twice(vector<float> x) {
   int n = x.size();           There is an incredible
   for (int i=0; i<n; i++)   amount of overhead here.
      x[i] = 2*x[i];
   return x;
}
                             This copies a huge array
int main() {                  two times. It’s stupid.
   vector<float>
   y(9000000);
   y = twice(y);              Maybe the compiler’s
   return 0;                 smart. Maybe not. Why
}
                                     risk it?
void twice3(float *x) {    Pass pointer by value
   (*x) = 2*(*x);
                             and
}
                             access data using
void twice4(float &x) {      asterisk.
   x = 2*x;
}
                           Pass by reference.
int main() {
   float x = 3;
   twice3(&x);
   twice4(x);
   return 0;
}                          Address of variable.
                           The answer is 12.
   You’ll often see objects passed by reference.
     Functions can modify objects without copying.
     To avoid copying objects (often const references).


   Pointers are kind of old school, but still useful.
     For super-efficient low-level code.
     Within objects to handle dynamic memory.
     You shouldn’t need pointers for this class.
     Use the STL instead, if at all possible.
   Classes implement objects.
     You’ve probably seen these in 6.170.
     C++ does things a little differently.


   Let’s implement a simple image object.
     Show stuff we’ve seen, like dynamic memory.
     Introduce constructors, destructors, const, and
      operator overloading.
     I’ll probably make mistakes, so some debugging too.
Live Demo!
   The C++ Programming Language
     A book by Bjarne Stroustrup, inventor of C++.
     My favorite C++ book.


   The STL Programmer’s Guide
     Contains documentation for the standard template library.
     http://www.sgi.com/tech/stl/


   Java to C++ Transition Tutorial
     Probably the most helpful, since you’ve all taken 6.170.
     http://www.cs.brown.edu/courses/cs123/javatoc.shtml
C++totural file

Contenu connexe

Tendances

Imugi: Compiler made with Python
Imugi: Compiler made with PythonImugi: Compiler made with Python
Imugi: Compiler made with PythonHan Lee
 
iOS Development with Blocks
iOS Development with BlocksiOS Development with Blocks
iOS Development with BlocksJeff Kelley
 
NativeBoost
NativeBoostNativeBoost
NativeBoostESUG
 
Explaining ES6: JavaScript History and What is to Come
Explaining ES6: JavaScript History and What is to ComeExplaining ES6: JavaScript History and What is to Come
Explaining ES6: JavaScript History and What is to ComeCory Forsyth
 
Free Monads Getting Started
Free Monads Getting StartedFree Monads Getting Started
Free Monads Getting StartedKent Ohashi
 
Arrry structure Stacks in data structure
Arrry structure Stacks  in data structureArrry structure Stacks  in data structure
Arrry structure Stacks in data structurelodhran-hayat
 
Objective-C Blocks and Grand Central Dispatch
Objective-C Blocks and Grand Central DispatchObjective-C Blocks and Grand Central Dispatch
Objective-C Blocks and Grand Central DispatchMatteo Battaglio
 
Building fast interpreters in Rust
Building fast interpreters in RustBuilding fast interpreters in Rust
Building fast interpreters in RustIngvar Stepanyan
 
Study of aloha protocol using ns2 network java proram
Study of aloha protocol using ns2 network java proramStudy of aloha protocol using ns2 network java proram
Study of aloha protocol using ns2 network java proramMeenakshi Devi
 
Advance features of C++
Advance features of C++Advance features of C++
Advance features of C++vidyamittal
 
Python opcodes
Python opcodesPython opcodes
Python opcodesalexgolec
 
Advance C++notes
Advance C++notesAdvance C++notes
Advance C++notesRajiv Gupta
 
Swiftの関数型っぽい部分
Swiftの関数型っぽい部分Swiftの関数型っぽい部分
Swiftの関数型っぽい部分bob_is_strange
 
TCO in Python via bytecode manipulation.
TCO in Python via bytecode manipulation.TCO in Python via bytecode manipulation.
TCO in Python via bytecode manipulation.lnikolaeva
 
Dynamic C++ ACCU 2013
Dynamic C++ ACCU 2013Dynamic C++ ACCU 2013
Dynamic C++ ACCU 2013aleks-f
 

Tendances (20)

Imugi: Compiler made with Python
Imugi: Compiler made with PythonImugi: Compiler made with Python
Imugi: Compiler made with Python
 
iOS Development with Blocks
iOS Development with BlocksiOS Development with Blocks
iOS Development with Blocks
 
NativeBoost
NativeBoostNativeBoost
NativeBoost
 
Explaining ES6: JavaScript History and What is to Come
Explaining ES6: JavaScript History and What is to ComeExplaining ES6: JavaScript History and What is to Come
Explaining ES6: JavaScript History and What is to Come
 
Free Monads Getting Started
Free Monads Getting StartedFree Monads Getting Started
Free Monads Getting Started
 
Arrry structure Stacks in data structure
Arrry structure Stacks  in data structureArrry structure Stacks  in data structure
Arrry structure Stacks in data structure
 
Objective-C Blocks and Grand Central Dispatch
Objective-C Blocks and Grand Central DispatchObjective-C Blocks and Grand Central Dispatch
Objective-C Blocks and Grand Central Dispatch
 
Building fast interpreters in Rust
Building fast interpreters in RustBuilding fast interpreters in Rust
Building fast interpreters in Rust
 
Study of aloha protocol using ns2 network java proram
Study of aloha protocol using ns2 network java proramStudy of aloha protocol using ns2 network java proram
Study of aloha protocol using ns2 network java proram
 
Why rust?
Why rust?Why rust?
Why rust?
 
Advance features of C++
Advance features of C++Advance features of C++
Advance features of C++
 
Python opcodes
Python opcodesPython opcodes
Python opcodes
 
Advance C++notes
Advance C++notesAdvance C++notes
Advance C++notes
 
ECMAScript 6
ECMAScript 6ECMAScript 6
ECMAScript 6
 
Swiftの関数型っぽい部分
Swiftの関数型っぽい部分Swiftの関数型っぽい部分
Swiftの関数型っぽい部分
 
TCO in Python via bytecode manipulation.
TCO in Python via bytecode manipulation.TCO in Python via bytecode manipulation.
TCO in Python via bytecode manipulation.
 
EcmaScript 6
EcmaScript 6 EcmaScript 6
EcmaScript 6
 
Rust言語紹介
Rust言語紹介Rust言語紹介
Rust言語紹介
 
C++11
C++11C++11
C++11
 
Dynamic C++ ACCU 2013
Dynamic C++ ACCU 2013Dynamic C++ ACCU 2013
Dynamic C++ ACCU 2013
 

Similaire à C++totural file

C++tutorial
C++tutorialC++tutorial
C++tutorialdips17
 
Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]
Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]
Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]Chris Adamson
 
C++11: Feel the New Language
C++11: Feel the New LanguageC++11: Feel the New Language
C++11: Feel the New Languagemspline
 
3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib웅식 전
 
Take advantage of C++ from Python
Take advantage of C++ from PythonTake advantage of C++ from Python
Take advantage of C++ from PythonYung-Yu Chen
 
Introduction to c++
Introduction to c++Introduction to c++
Introduction to c++somu rajesh
 
2 BytesC++ course_2014_c3_ function basics&parameters and overloading
2 BytesC++ course_2014_c3_ function basics&parameters and overloading2 BytesC++ course_2014_c3_ function basics&parameters and overloading
2 BytesC++ course_2014_c3_ function basics&parameters and overloadingkinan keshkeh
 
Pydiomatic
PydiomaticPydiomatic
Pydiomaticrik0
 
Cocoa for Web Developers
Cocoa for Web DevelopersCocoa for Web Developers
Cocoa for Web Developersgeorgebrock
 
Lecture 3, c++(complete reference,herbet sheidt)chapter-13
Lecture 3, c++(complete reference,herbet sheidt)chapter-13Lecture 3, c++(complete reference,herbet sheidt)chapter-13
Lecture 3, c++(complete reference,herbet sheidt)chapter-13Abu Saleh
 

Similaire à C++totural file (20)

Cpp tutorial
Cpp tutorialCpp tutorial
Cpp tutorial
 
CppTutorial.ppt
CppTutorial.pptCppTutorial.ppt
CppTutorial.ppt
 
C++tutorial
C++tutorialC++tutorial
C++tutorial
 
Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]
Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]
Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]
 
Day 1
Day 1Day 1
Day 1
 
C++11: Feel the New Language
C++11: Feel the New LanguageC++11: Feel the New Language
C++11: Feel the New Language
 
C++ idioms.pptx
C++ idioms.pptxC++ idioms.pptx
C++ idioms.pptx
 
3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib
 
Take advantage of C++ from Python
Take advantage of C++ from PythonTake advantage of C++ from Python
Take advantage of C++ from Python
 
Introduction to c++
Introduction to c++Introduction to c++
Introduction to c++
 
2 BytesC++ course_2014_c3_ function basics&parameters and overloading
2 BytesC++ course_2014_c3_ function basics&parameters and overloading2 BytesC++ course_2014_c3_ function basics&parameters and overloading
2 BytesC++ course_2014_c3_ function basics&parameters and overloading
 
Pydiomatic
PydiomaticPydiomatic
Pydiomatic
 
Python idiomatico
Python idiomaticoPython idiomatico
Python idiomatico
 
Cocoa for Web Developers
Cocoa for Web DevelopersCocoa for Web Developers
Cocoa for Web Developers
 
Oops lecture 1
Oops lecture 1Oops lecture 1
Oops lecture 1
 
C++ Overview PPT
C++ Overview PPTC++ Overview PPT
C++ Overview PPT
 
C++
C++C++
C++
 
Blazing Fast Windows 8 Apps using Visual C++
Blazing Fast Windows 8 Apps using Visual C++Blazing Fast Windows 8 Apps using Visual C++
Blazing Fast Windows 8 Apps using Visual C++
 
Lecture 3, c++(complete reference,herbet sheidt)chapter-13
Lecture 3, c++(complete reference,herbet sheidt)chapter-13Lecture 3, c++(complete reference,herbet sheidt)chapter-13
Lecture 3, c++(complete reference,herbet sheidt)chapter-13
 
Objective c intro (1)
Objective c intro (1)Objective c intro (1)
Objective c intro (1)
 

Dernier

一比一原版(Otago毕业证书)奥塔哥理工学院毕业证成绩单学位证靠谱定制
一比一原版(Otago毕业证书)奥塔哥理工学院毕业证成绩单学位证靠谱定制一比一原版(Otago毕业证书)奥塔哥理工学院毕业证成绩单学位证靠谱定制
一比一原版(Otago毕业证书)奥塔哥理工学院毕业证成绩单学位证靠谱定制uodye
 
LANDSLIDE MONITORING AND ALERT SYSTEM FINAL YEAR PROJECT BROCHURE
LANDSLIDE MONITORING AND ALERT SYSTEM FINAL YEAR PROJECT BROCHURELANDSLIDE MONITORING AND ALERT SYSTEM FINAL YEAR PROJECT BROCHURE
LANDSLIDE MONITORING AND ALERT SYSTEM FINAL YEAR PROJECT BROCHUREF2081syahirahliyana
 
怎样办理昆士兰大学毕业证(UQ毕业证书)成绩单留信认证
怎样办理昆士兰大学毕业证(UQ毕业证书)成绩单留信认证怎样办理昆士兰大学毕业证(UQ毕业证书)成绩单留信认证
怎样办理昆士兰大学毕业证(UQ毕业证书)成绩单留信认证ehyxf
 
在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一
在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一
在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一ougvy
 
在线办理(scu毕业证)南十字星大学毕业证电子版学位证书注册证明信
在线办理(scu毕业证)南十字星大学毕业证电子版学位证书注册证明信在线办理(scu毕业证)南十字星大学毕业证电子版学位证书注册证明信
在线办理(scu毕业证)南十字星大学毕业证电子版学位证书注册证明信oopacde
 
Abortion pills in Jeddah +966572737505 <> buy cytotec <> unwanted kit Saudi A...
Abortion pills in Jeddah +966572737505 <> buy cytotec <> unwanted kit Saudi A...Abortion pills in Jeddah +966572737505 <> buy cytotec <> unwanted kit Saudi A...
Abortion pills in Jeddah +966572737505 <> buy cytotec <> unwanted kit Saudi A...samsungultra782445
 
怎样办理伍伦贡大学毕业证(UOW毕业证书)成绩单留信认证
怎样办理伍伦贡大学毕业证(UOW毕业证书)成绩单留信认证怎样办理伍伦贡大学毕业证(UOW毕业证书)成绩单留信认证
怎样办理伍伦贡大学毕业证(UOW毕业证书)成绩单留信认证ehyxf
 
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证tufbav
 
Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...gajnagarg
 
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in DammamAbortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammamahmedjiabur940
 
怎样办理斯威本科技大学毕业证(SUT毕业证书)成绩单留信认证
怎样办理斯威本科技大学毕业证(SUT毕业证书)成绩单留信认证怎样办理斯威本科技大学毕业证(SUT毕业证书)成绩单留信认证
怎样办理斯威本科技大学毕业证(SUT毕业证书)成绩单留信认证tufbav
 
Hilti's Latest Battery - Hire Depot.pptx
Hilti's Latest Battery - Hire Depot.pptxHilti's Latest Battery - Hire Depot.pptx
Hilti's Latest Battery - Hire Depot.pptxhiredepot6
 
一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证
一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证
一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证wpkuukw
 
一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理
一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理
一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理uodye
 
怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证
怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证
怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证ehyxf
 
Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...nirzagarg
 
CRISIS COMMUNICATION presentation=-Rishabh(11195)-group ppt (4).pptx
CRISIS COMMUNICATION presentation=-Rishabh(11195)-group ppt (4).pptxCRISIS COMMUNICATION presentation=-Rishabh(11195)-group ppt (4).pptx
CRISIS COMMUNICATION presentation=-Rishabh(11195)-group ppt (4).pptxRishabh332761
 
一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证
一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证
一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证wpkuukw
 
怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证
怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证
怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证ehyxf
 

Dernier (20)

一比一原版(Otago毕业证书)奥塔哥理工学院毕业证成绩单学位证靠谱定制
一比一原版(Otago毕业证书)奥塔哥理工学院毕业证成绩单学位证靠谱定制一比一原版(Otago毕业证书)奥塔哥理工学院毕业证成绩单学位证靠谱定制
一比一原版(Otago毕业证书)奥塔哥理工学院毕业证成绩单学位证靠谱定制
 
LANDSLIDE MONITORING AND ALERT SYSTEM FINAL YEAR PROJECT BROCHURE
LANDSLIDE MONITORING AND ALERT SYSTEM FINAL YEAR PROJECT BROCHURELANDSLIDE MONITORING AND ALERT SYSTEM FINAL YEAR PROJECT BROCHURE
LANDSLIDE MONITORING AND ALERT SYSTEM FINAL YEAR PROJECT BROCHURE
 
怎样办理昆士兰大学毕业证(UQ毕业证书)成绩单留信认证
怎样办理昆士兰大学毕业证(UQ毕业证书)成绩单留信认证怎样办理昆士兰大学毕业证(UQ毕业证书)成绩单留信认证
怎样办理昆士兰大学毕业证(UQ毕业证书)成绩单留信认证
 
在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一
在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一
在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一
 
在线办理(scu毕业证)南十字星大学毕业证电子版学位证书注册证明信
在线办理(scu毕业证)南十字星大学毕业证电子版学位证书注册证明信在线办理(scu毕业证)南十字星大学毕业证电子版学位证书注册证明信
在线办理(scu毕业证)南十字星大学毕业证电子版学位证书注册证明信
 
Abortion pills in Jeddah +966572737505 <> buy cytotec <> unwanted kit Saudi A...
Abortion pills in Jeddah +966572737505 <> buy cytotec <> unwanted kit Saudi A...Abortion pills in Jeddah +966572737505 <> buy cytotec <> unwanted kit Saudi A...
Abortion pills in Jeddah +966572737505 <> buy cytotec <> unwanted kit Saudi A...
 
怎样办理伍伦贡大学毕业证(UOW毕业证书)成绩单留信认证
怎样办理伍伦贡大学毕业证(UOW毕业证书)成绩单留信认证怎样办理伍伦贡大学毕业证(UOW毕业证书)成绩单留信认证
怎样办理伍伦贡大学毕业证(UOW毕业证书)成绩单留信认证
 
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
 
Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...
 
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in DammamAbortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
 
怎样办理斯威本科技大学毕业证(SUT毕业证书)成绩单留信认证
怎样办理斯威本科技大学毕业证(SUT毕业证书)成绩单留信认证怎样办理斯威本科技大学毕业证(SUT毕业证书)成绩单留信认证
怎样办理斯威本科技大学毕业证(SUT毕业证书)成绩单留信认证
 
Abortion pills in Jeddah |+966572737505 | Get Cytotec
Abortion pills in Jeddah |+966572737505 | Get CytotecAbortion pills in Jeddah |+966572737505 | Get Cytotec
Abortion pills in Jeddah |+966572737505 | Get Cytotec
 
Hilti's Latest Battery - Hire Depot.pptx
Hilti's Latest Battery - Hire Depot.pptxHilti's Latest Battery - Hire Depot.pptx
Hilti's Latest Battery - Hire Depot.pptx
 
一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证
一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证
一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证
 
一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理
一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理
一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理
 
怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证
怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证
怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证
 
Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...
 
CRISIS COMMUNICATION presentation=-Rishabh(11195)-group ppt (4).pptx
CRISIS COMMUNICATION presentation=-Rishabh(11195)-group ppt (4).pptxCRISIS COMMUNICATION presentation=-Rishabh(11195)-group ppt (4).pptx
CRISIS COMMUNICATION presentation=-Rishabh(11195)-group ppt (4).pptx
 
一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证
一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证
一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证
 
怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证
怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证
怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证
 

C++totural file

  • 1. Brought to you by www.HalzWeek.com
  • 2. This tutorial offers several things.  You’ll see some neat features of the language.  You’ll learn the right things to google.  You’ll find a list of useful books and web pages.  But don’t expect too much!  It’s complicated, and you’ll learn by doing.  But I’ll give it my best shot, okay?
  • 3. Basic syntax  Compiling your program  Argument passing  Dynamic memory  Object-oriented programming
  • 4. #include <iostream>  Includes function definitions using namespace std; for console input and output. float c(float x) { return x*x*x;  Function declaration. }  Function definition. int main() { float x;  Program starts here. cin >> x;  Local variable declaration. cout << c(x) << endl;  Console input. return 0;  Console output. }  Exit main function.
  • 5.
  • 6. // This is main.cc // This is mymath.h #include <iostream> #ifndef MYMATH #include “mymath.h” #define MYMATH using namespace std; float c(float x); int main() { float d(float x); // ...stuff... } #endif Functions are declared in m at h. h, but not defined. ym They are implemented separately in m at h. c c . ym
  • 7. main.cc mymath.cc mydraw.cc ↓ ↓ ↓ g++ -c main.cc g++ -c mymath.cc g++ -c mydraw.cc ↓ ↓ ↓ main.o mymath.o mydraw.o ↓ ↓ ↓ g++ -o myprogram main.o mathstuff.o drawstuff.o ↓ myprogram →
  • 8. // This is main.cc #include <GL/glut.h>  Include OpenGL functions. #include <iostream>  Include standard IO using namespace std; functions.  Long and tedious int main() { explanation. cout << “Hello!” << endl; glVertex3d(1,2,3); return 0;  Calls function from standard } IO.  Calls function from OpenGL. % g++ -c main.cc  Make object file.  Make executable, link GLUT. % g++ -o myprogram –lglut main.o  Execute program. % ./myprogram
  • 9. Software engineering reasons.  Separate interface from implementation.  Promote modularity.  The headers are a contract.  Technical reasons.  Only rebuild object files for modified source files.  This is much more efficient for huge programs.
  • 10. Most assignments include INCFLAGS = - I/afs/csail/group/graphics/courses/6.837/public/includ makef i l es , which describe e LINKFLAGS = -L/afs/csail/group/graphics/courses/6.837/public/lib CFLAGS -lglut -lvl = -g -Wall -ansi the files, dependencies, and CC SRCS = g++ = main.cc parse.cc curve.cc surf.cc camera.cc steps for compilation. OBJS = $(SRCS:.cc=.o) PROG = a1 You can just type m all: $(SRCS) $(PROG) $(PROG): $(OBJS) ake. $(CC) $(CFLAGS) $(OBJS) -o $@ $(LINKFLAGS) .cc.o: So you don’t have to know $(CC) $(CFLAGS) $< -c -o $@ $(INCFLAGS) the stuff from the past few depend: makedepend $(INCFLAGS) -Y $(SRCS) clean: rm $(OBJS) $(PROG) slides. main.o: parse.h curve.h tuple.h But it’s nice to know. # ... LOTS MORE ...
  • 11.
  • 12. #include <iostream> using namespace std; int main() { Arrays must have known int n; sizes at compile time. cin >> n; float f[n]; This doesn’t compile. for (int i=0; i<n; i++) f[i] = i; return 0; }
  • 13. #include <iostream> Allocate the array during using namespace std; runtime using new. int main() { int n; cin >> n; No garbage collection, so float *f = new float[n]; you have to delete. for (int i=0; i<n; i++) f[i] = i; Dynamic memory is useful when you don’t delete [] f; return 0; know how much space } you need.
  • 14. #include <iostream> STL vector is a resizable #include <vector> using namespace std; array with all dynamic memory handled for you. int main() { int n; cin >> n; STL has other cool stuff, vector<float> f(n); such as strings and sets. for (int i=0; i<n; i++) f[i] = i; If you can, use the STL return 0; and avoid dynamic } memory.
  • 15. #include <iostream> #include <vector> using namespace std; An alternative method that does the same thing. int main() { int n; cin >> n; Methods are called with vector<float> f; the dot operator (same as for (int i=0; i<n; i++) Java). f.push_back(i); return 0; vector is poorly named, } it’s actually just an array.
  • 16. float twice1(float x) {  This works as expected. return 2*x; } void twice2(float x) { x = 2*x;  This does nothing. } int main() { float x = 3; twice2(x); cout << x << endl;  The variable is return 0; unchanged. }
  • 17. vector<float> twice(vector<float> x) { int n = x.size(); There is an incredible for (int i=0; i<n; i++) amount of overhead here. x[i] = 2*x[i]; return x; } This copies a huge array int main() { two times. It’s stupid. vector<float> y(9000000); y = twice(y); Maybe the compiler’s return 0; smart. Maybe not. Why } risk it?
  • 18. void twice3(float *x) {  Pass pointer by value (*x) = 2*(*x); and } access data using void twice4(float &x) { asterisk. x = 2*x; }  Pass by reference. int main() { float x = 3; twice3(&x); twice4(x); return 0; }  Address of variable.  The answer is 12.
  • 19. You’ll often see objects passed by reference.  Functions can modify objects without copying.  To avoid copying objects (often const references).  Pointers are kind of old school, but still useful.  For super-efficient low-level code.  Within objects to handle dynamic memory.  You shouldn’t need pointers for this class.  Use the STL instead, if at all possible.
  • 20.
  • 21. Classes implement objects.  You’ve probably seen these in 6.170.  C++ does things a little differently.  Let’s implement a simple image object.  Show stuff we’ve seen, like dynamic memory.  Introduce constructors, destructors, const, and operator overloading.  I’ll probably make mistakes, so some debugging too.
  • 23. The C++ Programming Language  A book by Bjarne Stroustrup, inventor of C++.  My favorite C++ book.  The STL Programmer’s Guide  Contains documentation for the standard template library.  http://www.sgi.com/tech/stl/  Java to C++ Transition Tutorial  Probably the most helpful, since you’ve all taken 6.170.  http://www.cs.brown.edu/courses/cs123/javatoc.shtml

Notes de l'éditeur

  1. about as simple as it gets – just get a feel for the syntax but you’ll have more complicated programs so you want to organize better first way to do that is by separating into multiple files
  2. same program, but we’ve pulled c functions out we put it in a separate file … or rather, two separate files header file (you see on the right) declares the functions – that is, gives name, parameters, return type. but doesn’t include the implementation, which is done in a separate file. so when you code up the main program file, you can include the header file, and call the functions because in c++ you can only call functions that are declared.
  3. so here’s the basic setup you write a bunch of cc files that implement functions (or objects, as we’ll see later) the headers include the declarations of functions (or objects) include the headers in the cc files if you’re using those functions compile to object files link all object files together get program make graphics
  4. almost all c++ will make use of libraries bunch of convenient functions that you can use two libraries you’ll be using for almost assignments are glut (exp) and iostream (exp) so main here actually calls functions defined in both these libraries and here’s how we might compile
  5. why? examples of purely functional programming languages… haskell, basic scheme…
  6. why? examples of purely functional programming languages… haskell, basic scheme…
  7. why? examples of purely functional programming languages… haskell, basic scheme…
  8. why? examples of purely functional programming languages… haskell, basic scheme…
  9. So why don’t we just use the first function?
  10. So why don’t we just use the first function?
  11. So why don’t we just use the first function?