Programming learning updates & discussion
Moderators: ~xpr'd~, tyteen4a03, Stinky, Emerald141, Qloof234, jdl
Programming learning updates & discussion
Hello everyone!
I just recently started learning C++ (a programming language) and made this thread for me to post little programs I have made and also for people to
discuss programming of any kind (Java, Gamemaker, etc.)
So far my best program is one that takes a number and multiplies it by another number and gives a result
Here it is:
#include <iostream>
//This is put at the beginning of every program
int multiply(int x , int y)
{
return x * y;
}
//This chunk here creates a new function that
//multiplys x and y and returns the number to the system
int main()
{
using namespace std;
cout << "This program will multiply your two numbers" <<endl;
cout << "Type in a number:" << endl;
int x;
int y;
cin >> x >> y;
cout << "This is " << x << " times " << y << ": " << multiply(x , y) << endl;
}
//This part here takes two numbers that you type in
// multiplies them and gives you the result
Yay!
I just recently started learning C++ (a programming language) and made this thread for me to post little programs I have made and also for people to
discuss programming of any kind (Java, Gamemaker, etc.)
So far my best program is one that takes a number and multiplies it by another number and gives a result
Here it is:
#include <iostream>
//This is put at the beginning of every program
int multiply(int x , int y)
{
return x * y;
}
//This chunk here creates a new function that
//multiplys x and y and returns the number to the system
int main()
{
using namespace std;
cout << "This program will multiply your two numbers" <<endl;
cout << "Type in a number:" << endl;
int x;
int y;
cin >> x >> y;
cout << "This is " << x << " times " << y << ": " << multiply(x , y) << endl;
}
//This part here takes two numbers that you type in
// multiplies them and gives you the result
Yay!
no
Re: Programming learning updates & discussion
Excellent.boh123321 wrote:main()
{
using namespace std;
cout << "I am the zombie. Goodbye!" << endl;
return 0
}
Currently I'm using Blitz3D and Pelles C together.
You can use Pelles C to created DLLs which can be accessed by other languages including Blitz.
What version of C++ do you use? I've tried some C++ before, but am
currently just using plain C, ( which is Pelles C ).
Pelles C:
http://www.christian-heffner.de/index.p ... rt&lang=en
http://www.christian-heffner.de/index.p ... ad&lang=en
Blitz3D:
http://www.blitzbasic.com/Home/_index_.php
On the Blitz Community Forum, I go by the same username as I do here, = VirtLands .
Last edited by VirtLands on Thu Oct 10, 2013 7:59 pm, edited 1 time in total.
- tyteen4a03
- Rainbow AllStar
- Posts: 4383
- Joined: Wed Jul 12, 2006 7:16 am
- Contact:
JetBrained
Getting Jetbrained.tyteen4a03 wrote: I never really liked Eclipse because of how much RAM it ate - I like JetBrains products better.
Only these 4 programs from JetBrains are apparently FREE :
Pycharm 3.0 Community Edition { Python IDE }
http://www.jetbrains.com/pycharm/download/
IntelliJ IDEA 12 { Java IDE }
http://www.jetbrains.com/idea/download/
Meta Programming System :
http://www.jetbrains.com/mps/
Kotlin ... a statically typed programming language that compiles to JVM byte codes and JavaScript
http://kotlin.jetbrains.org/
Last edited by VirtLands on Thu Oct 10, 2013 7:56 pm, edited 1 time in total.
I've done a bit of coding in my times. I know quite a few languages, but my strength at the moment is C# (and XNA).
I've worked a bit with C++ and Java for a bit of Minecraft Modding.
In terms of programs used, I've worked around with Game Maker, Visual Studio, Dreamweaver and Eclipse.
I've worked a bit with C++ and Java for a bit of Minecraft Modding.
In terms of programs used, I've worked around with Game Maker, Visual Studio, Dreamweaver and Eclipse.
If you bothered to copy and paste this signature, or zoom in, to make it possible to read, then I wasted 5-10 seconds of your life.
It took me forever to figure out which programming language I wanted to learn. Seriously, it took 2 weeks!Sammy_P wrote:I've been learning some C lately.
Do you mean C++ 10 or C++ 11? I honestly don't know.Virtlands wrote:What version of C++ do you use? I've tried some C++ before, but am
currently just using plain C, ( which is Pelles C ).
by the way, i use code::blocks for my programming.
My new best program is a mini calculator (the code is kinda long and don't really want to right now)
After learning C++ (probably will take 1-2 years) I am considering learning either Java or C#. what do you peoples think.
I am going to buy C++ primer edition 5, which is probably the best C++ book ever (over 1000 pages!)
toodles
no
- tyteen4a03
- Rainbow AllStar
- Posts: 4383
- Joined: Wed Jul 12, 2006 7:16 am
- Contact:
Yeah, it took me quite some time too. I was kind of going back and forth between languages.boh123321 wrote:It took me forever to figure out which programming language I wanted to learn. Seriously, it took 2 weeks!Sammy_P wrote:I've been learning some C lately.
In the end, I ended up earning a little bit of them all, with a few languages that I learnt more than others.
If you bothered to copy and paste this signature, or zoom in, to make it possible to read, then I wasted 5-10 seconds of your life.
- tyteen4a03
- Rainbow AllStar
- Posts: 4383
- Joined: Wed Jul 12, 2006 7:16 am
- Contact:
Blitz Research Products
Also, try these:
PureBasic demo
http://www.purebasic.com/download.php
Purebasic has over 300 user supplied add-ons (online, in Zip form), so in many cases you don't have to start from scratch.
( The difference between PureBasic demo vs PureBasic FULL is that the demo has the following limitations:
No Win32 API support
No DLL creation
Code size limitation (about 800 lines)
Nag screen
)
DarkBasic Pro -Free version
http://www.thegamecreators.com/?id=2000 ... &page=free
Pelles C - is FREE .
http://www.smorgasbordet.com/pellesc/
Pelles C is an awesome language collection;
it includes loads of free user supplied libraries as well as lots of add-ons.
Show here is a brief display of my Pelles directories.
10/13/2013 04:05 PM <DIR> .
10/13/2013 04:05 PM <DIR> ..
09/21/2013 02:12 PM <DIR> Bin
03/05/2013 07:28 PM <DIR> downloaded
08/23/2013 01:20 PM <DIR> Include
08/23/2013 01:30 PM <DIR> Lib
08/22/2013 02:38 PM <DIR> _Add-ins
08/22/2013 03:01 PM <DIR> _Common Controls
08/22/2013 03:00 PM <DIR> _Custom Controls
08/22/2013 02:49 PM <DIR> _Games
08/22/2013 03:30 PM <DIR> _GdiPlus Examples
08/22/2013 03:31 PM <DIR> _General Graphics
08/22/2013 03:14 PM <DIR> _General Windows
08/22/2013 03:34 PM <DIR> _Graphics (OpenGL_DirectX)
08/22/2013 03:21 PM <DIR> _Libraries
08/22/2013 03:28 PM <DIR> _OLE & COM
08/22/2013 03:10 PM <DIR> _Utilities
08/22/2013 03:25 PM <DIR> _Wizards
0 File(s) 0 bytes
18 Dir(s) 43,573,547,008 bytes free
-----------------------------------------------------------------------------
http://www.blitzbasic.com/Products/_index_.php
Blitz3D has over 12000 user made programs ready for download.
BlitzMax has over 5000 user made programs lready for download.
PureBasic demo
http://www.purebasic.com/download.php
Purebasic has over 300 user supplied add-ons (online, in Zip form), so in many cases you don't have to start from scratch.
( The difference between PureBasic demo vs PureBasic FULL is that the demo has the following limitations:
No Win32 API support
No DLL creation
Code size limitation (about 800 lines)
Nag screen
)
DarkBasic Pro -Free version
http://www.thegamecreators.com/?id=2000 ... &page=free
Pelles C - is FREE .
http://www.smorgasbordet.com/pellesc/
Pelles C is an awesome language collection;
it includes loads of free user supplied libraries as well as lots of add-ons.
Show here is a brief display of my Pelles directories.
10/13/2013 04:05 PM <DIR> .
10/13/2013 04:05 PM <DIR> ..
09/21/2013 02:12 PM <DIR> Bin
03/05/2013 07:28 PM <DIR> downloaded
08/23/2013 01:20 PM <DIR> Include
08/23/2013 01:30 PM <DIR> Lib
08/22/2013 02:38 PM <DIR> _Add-ins
08/22/2013 03:01 PM <DIR> _Common Controls
08/22/2013 03:00 PM <DIR> _Custom Controls
08/22/2013 02:49 PM <DIR> _Games
08/22/2013 03:30 PM <DIR> _GdiPlus Examples
08/22/2013 03:31 PM <DIR> _General Graphics
08/22/2013 03:14 PM <DIR> _General Windows
08/22/2013 03:34 PM <DIR> _Graphics (OpenGL_DirectX)
08/22/2013 03:21 PM <DIR> _Libraries
08/22/2013 03:28 PM <DIR> _OLE & COM
08/22/2013 03:10 PM <DIR> _Utilities
08/22/2013 03:25 PM <DIR> _Wizards
0 File(s) 0 bytes
18 Dir(s) 43,573,547,008 bytes free
-----------------------------------------------------------------------------
http://www.blitzbasic.com/Products/_index_.php
Blitz3D has over 12000 user made programs ready for download.
BlitzMax has over 5000 user made programs lready for download.
- tyteen4a03
- Rainbow AllStar
- Posts: 4383
- Joined: Wed Jul 12, 2006 7:16 am
- Contact:
C++ pointers
It's a fascinating book/topic .
Since I've spent most of my time on regular C instead of C++,
I still assume that the two languages are very similar.
on page 84, you'll start the pointers subject, ...
on page 324, you'll start pointers to functions, ...
Pointers can be really fun, you can do multiple levels of indirection (dereferences).
-----------------------------------------------------------------------------
Here is some strange idea that I dreamed up: ©
You can create a 2 dimensional array of function pointers, where each function itself takes 2 parameters as input;
The 2 parameter type -combo per each function determines that function's placement within that 2D array.
So,...
you call each function directly by means of a function pointer
residing in that 2D array, where their position in the array is dictated
directly by the parameter types.
Each parameter can itself be a pointer to a (data-type + value) structure, ( = abstract data type).
But, for even more data flexibility, the data can be placed in circular "byte" queues instead of structures. Structures would be an inefficient
container to store data, because we don't know ahead of time
what kind of data-types are needed, nor the size of those data types.
For example: Create 2 circular (memory) queues as follows:
DIM Q_D(10000) ; allocate 10,000 bytes for data values
DIM Q_T(10000) ; allocate 10,000 bytes for data-type descriptions
{ Worst case scenario for Q_T() is that each byte in Q_D() is a CHAR data type, and each CHAR is only 1 byte long. }
An example enumeration of data types, can be like this::
UNSIGNED_CHAR, SIGNED_CHAR, UNSIGNED_SHORT, SIGNED_SHORT, UNSIGNED INT, SIGNED INT,...
etc, and starting with enumeration value "1".
So,...., in abstract pseudo-code .....
Quick_sum( INT *i, SIGNED_CHAR *sc) is called by computing
where in a 2D function pointer array that specific combo is.
The benefits of this weird logic are as follows:
(a) Create a generic collection of functions whose parameters can be multiple data types,
the concept is like "parameter overloading", but not exactly.
Each parameter would actually be a pointer to a (data-type & value)structure.
______________
A minor variation of this logic is to use a 1-D (linear) array of function
pointers instead of a 2D array of function pointers.
Each function's position within the linear array can be calculated quickly
as a BOOLEAN SUM of the 2 parameter types:
For example: Quick_Sum( SIGNED_CHAR_type *sc, UNSIGNED_INT_type *ui)
would look for the enumeration reference of SIGNED_CHAR_type=2, and UNSIGNED_INT_type=16,
add them together,
then call function pointer index 18, .... which would be a
dedicated function created just to add a SIGNED char to an UNSIGNED int.
Note that if the parameter types traded places, the result is the same,
( 2+16 = 16+2 =18 ), they would point to the same
dedicated function in a linear array of function pointers.
There would be many dedicated functions, and each would return
an appropriate { data-type + value } structure.
Since there are approximately 14 "C" data types, then there
are approximately 196 (=14*14) combinations of those data types, taken two at a time,
where each data type has an opportunity to meld with any other data type by means of dedicated functions.
A list of C data types:
https://en.wikipedia.org/wiki/C_data_types
Why do all this?
The reason is basically that Blitz3D has only a limited collection of
'data types' and ways it uses them.
Blitz3D has no "DOUBLES", and it has no LONG LONGs (=64 bit).
My ultimate goal is to allow for the flexibility of any data type to mingle
with any other data type (within reason), and to add data types 64-bits and higher .
To be specific, each function would return a reference to a { data-type + value } structure, allowing dedicated functions to be conveniently nested.
These structures in turn can be (optionally) taken from of a circular queue
of previously allocated memory, instead of creating brand new structure
instances each time.
The benefit of this is that "old variables" get automatically reused
after a reasonable queue cycle. There's no chance of overloading your PC's memory.
The downside is that you have to be alert, because if you don't use your
variables in time, their values may CHANGE.
These are Short-Lived variables. ©
_______________________________________
( Note that Blitz3D can't do DOUBLES, so a special DOUBLE function has
to be invented. )
An awkward old style Function for DOUBLES is like this:
Does send the sum of (a+b) into dest. THis formation cannot be nested.
DOUBLE_ADD( DOUBLE *a, DOUBLE *b, DOUBLE *dest ) ;
_______________________________________________
My improved version that I have in mind would work like this (if I ever make it):
Returns a reference to a queue memory (byte offset) that represents (a+b):
This formation can be nested.
dest *d = DOUBLE_ADD( DOUBLE *a, DOUBLE *b)
And, here's a nesting example:
dest *e = DOUBLE_ADD( DOUBLE_ADD(*a, *b), DOUBLE_ADD( *c, *d) )
e gets the successful result of (a+b+c+d), using a dedicated DOUBLES function.
©©©
Yup, this is crazy stuff.
Since I've spent most of my time on regular C instead of C++,
I still assume that the two languages are very similar.
on page 84, you'll start the pointers subject, ...
on page 324, you'll start pointers to functions, ...
Pointers can be really fun, you can do multiple levels of indirection (dereferences).
-----------------------------------------------------------------------------
Here is some strange idea that I dreamed up: ©
You can create a 2 dimensional array of function pointers, where each function itself takes 2 parameters as input;
The 2 parameter type -combo per each function determines that function's placement within that 2D array.
So,...
you call each function directly by means of a function pointer
residing in that 2D array, where their position in the array is dictated
directly by the parameter types.
Each parameter can itself be a pointer to a (data-type + value) structure, ( = abstract data type).
But, for even more data flexibility, the data can be placed in circular "byte" queues instead of structures. Structures would be an inefficient
container to store data, because we don't know ahead of time
what kind of data-types are needed, nor the size of those data types.
For example: Create 2 circular (memory) queues as follows:
DIM Q_D(10000) ; allocate 10,000 bytes for data values
DIM Q_T(10000) ; allocate 10,000 bytes for data-type descriptions
{ Worst case scenario for Q_T() is that each byte in Q_D() is a CHAR data type, and each CHAR is only 1 byte long. }
An example enumeration of data types, can be like this::
UNSIGNED_CHAR, SIGNED_CHAR, UNSIGNED_SHORT, SIGNED_SHORT, UNSIGNED INT, SIGNED INT,...
etc, and starting with enumeration value "1".
So,...., in abstract pseudo-code .....
Quick_sum( INT *i, SIGNED_CHAR *sc) is called by computing
where in a 2D function pointer array that specific combo is.
The benefits of this weird logic are as follows:
(a) Create a generic collection of functions whose parameters can be multiple data types,
the concept is like "parameter overloading", but not exactly.
Each parameter would actually be a pointer to a (data-type & value)structure.
______________
A minor variation of this logic is to use a 1-D (linear) array of function
pointers instead of a 2D array of function pointers.
Each function's position within the linear array can be calculated quickly
as a BOOLEAN SUM of the 2 parameter types:
For example: Quick_Sum( SIGNED_CHAR_type *sc, UNSIGNED_INT_type *ui)
would look for the enumeration reference of SIGNED_CHAR_type=2, and UNSIGNED_INT_type=16,
add them together,
then call function pointer index 18, .... which would be a
dedicated function created just to add a SIGNED char to an UNSIGNED int.
Note that if the parameter types traded places, the result is the same,
( 2+16 = 16+2 =18 ), they would point to the same
dedicated function in a linear array of function pointers.
There would be many dedicated functions, and each would return
an appropriate { data-type + value } structure.
Since there are approximately 14 "C" data types, then there
are approximately 196 (=14*14) combinations of those data types, taken two at a time,
where each data type has an opportunity to meld with any other data type by means of dedicated functions.
A list of C data types:
https://en.wikipedia.org/wiki/C_data_types
Why do all this?
The reason is basically that Blitz3D has only a limited collection of
'data types' and ways it uses them.
Blitz3D has no "DOUBLES", and it has no LONG LONGs (=64 bit).
My ultimate goal is to allow for the flexibility of any data type to mingle
with any other data type (within reason), and to add data types 64-bits and higher .
To be specific, each function would return a reference to a { data-type + value } structure, allowing dedicated functions to be conveniently nested.
These structures in turn can be (optionally) taken from of a circular queue
of previously allocated memory, instead of creating brand new structure
instances each time.
The benefit of this is that "old variables" get automatically reused
after a reasonable queue cycle. There's no chance of overloading your PC's memory.
The downside is that you have to be alert, because if you don't use your
variables in time, their values may CHANGE.
These are Short-Lived variables. ©
_______________________________________
( Note that Blitz3D can't do DOUBLES, so a special DOUBLE function has
to be invented. )
An awkward old style Function for DOUBLES is like this:
Does send the sum of (a+b) into dest. THis formation cannot be nested.
DOUBLE_ADD( DOUBLE *a, DOUBLE *b, DOUBLE *dest ) ;
_______________________________________________
My improved version that I have in mind would work like this (if I ever make it):
Returns a reference to a queue memory (byte offset) that represents (a+b):
This formation can be nested.
dest *d = DOUBLE_ADD( DOUBLE *a, DOUBLE *b)
And, here's a nesting example:
dest *e = DOUBLE_ADD( DOUBLE_ADD(*a, *b), DOUBLE_ADD( *c, *d) )
e gets the successful result of (a+b+c+d), using a dedicated DOUBLES function.
©©©
Yup, this is crazy stuff.
Last edited by VirtLands on Mon Oct 21, 2013 5:46 pm, edited 1 time in total.