What to begin with?

Hi all, I am currently in college seeking a degree in forest management and over the past year or so I have taken an interest in possibly seeking a masters degree in forest biometrics. After talking with several biometricians and working with them a little bit it seems that computer programming is a must have in the field and is not really taught in any classes that they are required to take, but instead learned through trial and error. So what I'm getting at is this, I am trying to learn C++ from the ground up, I have no previous programming experience, this is just what my professor told me would be a good start. I have been researching here and there on the internet about C++ and just bought "Ivor Horton's Beginning Visual C++ 2013". What would be some good free programs to download so that I can easily practice and start to learn the language?

Last edited on
You could get the free (express) version of Visual Studio 2015 (or you can use the other alternative... which is illegal of course, depends on where you live)

I am a beginner as well, but I don't know about Ivor Horton's book, but I can tell you that C++ Primer (Fifth Edition) is a great book. You can download the online version and get started :)

Good luck!
closed account (E0p9LyTq)
What would be some good free programs to download so that I can easily practice and start to learn the language?


You will need a C++ compiler, one designed to create executables for the operating system you use.

For a beginner such as yourself one option is to get an IDE (Integrated Development Environment) that is a combined code editor, compiler and debugger. There are several that are free, one as previously mentioned is MS Visual Studio Community 2015.

Two other free IDEs are Code::Blocks and Orwell's Dev-C++. I personally use Dev-C++.

http://www.codeblocks.org/
http://orwelldevcpp.blogspot.com/

There are also several online tutorials you can look at to get an overview of C++. Two I would recommend are:

The cplusplus tutorial: http://www.cplusplus.com/doc/
LearnCpp: http://www.learncpp.com/
closed account (E0p9LyTq)
Having more than one book on C++ can be helpful, to learn from and as later reference. Here is listings of some books to consider buying (and ones you should avoid).

http://www.cplusplus.com/faq/beginners/books/
Josephreak wrote

...but I can tell you that C++ Primer (Fifth Edition) is a great book. You can download the online version and get started :)

Thank you Thank you Thank you
closed account (E0p9LyTq)
C++ Primer (Fifth Edition) is a great book.


I had added that book to my list of books to consider purchasing, now I can get a legal PDF version. If I find the book useful I know I will be purchasing it.

I also found a C Primer (6th Edition), so I've got some reading to do.

Thanks for the availability info!
FurryGuy if you do download the free pdf, see if you can access the downloadable sample code. My attempt to do so leads me to believe you have to have a registered copy of the book first.
closed account (E0p9LyTq)
@fguy, I prefer typing the code samples from the books. Several books I own have code samples available for download and are full of mistakes in the samples. Mistakes and errors not in the code in the books. Mistakes that can confuse and frustrate a beginner.

Mistakes and errors because often the code is for an earlier book/c++ compiler version. One of the most common mistakes is #include <iostream.h> .
It seems there is downloadable code that is not in the book, for example the questions at the end of chapter 1 about the bookstore require a header file that needs to be downloaded
closed account (E0p9LyTq)
@fguy, I rarely do "the questions" at the end of the books.

I downloaded the eBooks (C++ Primer, C Primer and others) so I could determine if any were actually worth purchasing. After plowing through the text in my PDF reader and trying a few code examples if I find I like what and how the book(s) teach C++ I will be making a purchase so I can get that "bait and switch" header file.

Do you mean Sales_Item.h?

It's available on github, here's the code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*
 * This file contains code from "C++ Primer, Fifth Edition", by Stanley B.
 * Lippman, Josee Lajoie, and Barbara E. Moo, and is covered under the
 * copyright and warranty notices given in that book:
 * 
 * "Copyright (c) 2013 by Objectwrite, Inc., Josee Lajoie, and Barbara E. Moo."
 * 
 * 
 * "The authors and publisher have taken care in the preparation of this book,
 * but make no expressed or implied warranty of any kind and assume no
 * responsibility for errors or omissions. No liability is assumed for
 * incidental or consequential damages in connection with or arising out of the
 * use of the information or programs contained herein."
 * 
 * Permission is granted for this code to be used for educational purposes in
 * association with the book, given proper citation if and when posted or
 * reproduced.Any commercial use of this code requires the explicit written
 * permission of the publisher, Addison-Wesley Professional, a division of
 * Pearson Education, Inc. Send your request for permission, stating clearly
 * what code you would like to use, and in what specific way, to the following
 * address: 
 * 
 *     Pearson Education, Inc.
 *     Rights and Permissions Department
 *     One Lake Street
 *     Upper Saddle River, NJ  07458
 *     Fax: (201) 236-3290
*/ 

/* This file defines the Sales_item class used in chapter 1.
 * The code used in this file will be explained in
 * Chapter 7 (Classes) and Chapter 14 (Overloaded Operators)
 * Readers shouldn't try to understand the code in this file
 * until they have read those chapters.
*/

#ifndef SALESITEM_H
// we're here only if SALESITEM_H has not yet been defined 
#define SALESITEM_H

// Definition of Sales_item class and related functions goes here
#include <iostream>
#include <string>

class Sales_item {
// these declarations are explained section 7.2.1, p. 270 
// and in chapter 14, pages 557, 558, 561
friend std::istream& operator>>(std::istream&, Sales_item&);
friend std::ostream& operator<<(std::ostream&, const Sales_item&);
friend bool operator<(const Sales_item&, const Sales_item&);
friend bool 
operator==(const Sales_item&, const Sales_item&);
public:
    // constructors are explained in section 7.1.4, pages 262 - 265
    // default constructor needed to initialize members of built-in type
    Sales_item() = default;
    Sales_item(const std::string &book): bookNo(book) { }
    Sales_item(std::istream &is) { is >> *this; }
public:
    // operations on Sales_item objects
    // member binary operator: left-hand operand bound to implicit this pointer
    Sales_item& operator+=(const Sales_item&);
    
    // operations on Sales_item objects
    std::string isbn() const { return bookNo; }
    double avg_price() const;
// private members as before
private:
    std::string bookNo;      // implicitly initialized to the empty string
    unsigned units_sold = 0; // explicitly initialized
    double revenue = 0.0;
};

// used in chapter 10
inline
bool compareIsbn(const Sales_item &lhs, const Sales_item &rhs) 
{ return lhs.isbn() == rhs.isbn(); }

// nonmember binary operator: must declare a parameter for each operand
Sales_item operator+(const Sales_item&, const Sales_item&);

inline bool 
operator==(const Sales_item &lhs, const Sales_item &rhs)
{
    // must be made a friend of Sales_item
    return lhs.units_sold == rhs.units_sold &&
           lhs.revenue == rhs.revenue &&
           lhs.isbn() == rhs.isbn();
}

inline bool 
operator!=(const Sales_item &lhs, const Sales_item &rhs)
{
    return !(lhs == rhs); // != defined in terms of operator==
}

// assumes that both objects refer to the same ISBN
Sales_item& Sales_item::operator+=(const Sales_item& rhs) 
{
    units_sold += rhs.units_sold; 
    revenue += rhs.revenue; 
    return *this;
}

// assumes that both objects refer to the same ISBN
Sales_item 
operator+(const Sales_item& lhs, const Sales_item& rhs) 
{
    Sales_item ret(lhs);  // copy (|lhs|) into a local object that we'll return
    ret += rhs;           // add in the contents of (|rhs|) 
    return ret;           // return (|ret|) by value
}

std::istream& 
operator>>(std::istream& in, Sales_item& s)
{
    double price;
    in >> s.bookNo >> s.units_sold >> price;
    // check that the inputs succeeded
    if (in)
        s.revenue = s.units_sold * price;
    else 
        s = Sales_item();  // input failed: reset object to default state
    return in;
}

std::ostream& 
operator<<(std::ostream& out, const Sales_item& s)
{
    out << s.isbn() << " " << s.units_sold << " "
        << s.revenue << " " << s.avg_price();
    return out;
}

double Sales_item::avg_price() const
{
    if (units_sold) 
        return revenue/units_sold; 
    else 
        return 0;
}
#endif 

I also had a problem about a legit copy of the book, but that wasn't an actual problem, to be honest.
Thanks! I assume there will be more samples like this. Do you have a link to where this stuff is stored?
Last edited on
Topic archived. No new replies allowed.