Programming reasources for Rambunction4330
If you are going to write code, you’ll need a place to run it. Unfortunately, this can end up being a larger challenge than the programming itself and differs from platform to platform. If you don’t have much experience, start by playing around in an online editor. I will typically use a local IDE like CLion, Code::Blocks, Xcode, or VSCode. And while it can be annoying and difficult, it is helpful to learn to manually edit and run code from the command line.
- https://www.onlinegdb.com/online_c++_compiler (Online. And run multi-file programs)
- http://cpp.sh (Online)
For actually learning the language, you can find countless tutorials online. Here are a few that I will often go back to when I forget how to do something or need to clarify a concept. Use the one that you like the most.
- https://www.w3schools.com/CPP/default.asp (Recommended)
- https://www.cplusplus.com/doc/tutorial/ (Personal preference)
- https://www.tutorialspoint.com/cplusplus/index.htm (Another good option)
While tutorials are useful, you only really learn by doing. I’ve made a list of some places that will have "practice problems", but those can become extremely boring. If you can find a project of your own it can be more engaging and could create something useful. You might try to recreate Worldle or write a program to do your math homework.
- https://www.w3schools.com/CPP/cpp_exercises.asp (Follows along with the above tutorial)
- https://edabit.com/challenges (Lots of challenge problems on different subjects)
- https://www.programiz.com/cpp-programming/examples (Practice problems and tutorials)
- Build Blackjack or a similar card game (A fun project that Aiden recommends)
When I forget what the name of a function is, these are usually the places I go. Well actually I google it, but google usually brings me to one of these. Also, feel free to ask me anything. It is useful to know which topics are the most difficult so that not only can we help you, but also help others with these difficult concepts during pre-season.
- https://www.cplusplus.com/reference/ (Language reference)
- https://en.cppreference.com/w/ (Language reference)
- https://stackoverflow.com (Forum to ask questions)
- https://google.com (Google)
- and of course me ([email protected]) and Aiden ([email protected])
A lot of the programming for robotics is less writing original code, and instead leveraging the code that FRC has already written for us. It would be difficult to do anything without having a robot, but if you're interested, they have good tutorials explaining the library and the concepts behind it.
- https://first.wpi.edu/wpilib/allwpilib/docs/release/cpp/index.html (Tutorials etc.)
- https://docs.wpilib.org/en/stable/index.html (Reference)
All of the computers on the robot run a version of the Linux operating system. Although this is not required, it can be useful to learn how to use Unix/Linux, especially from the command line, to debug programs running on these computers. Much like learning c++, the best way to learn Linux/Unix is to use it daily. If you are on a mac, try using the terminal regularly. These skills will transfer over to Linux/Unix. If you are on windows, you can look into WSL (Windows Subsystem for Linux) or you can access a Linux machine on the cloud at https://gitpod.io.
- https://www.theodinproject.com/lessons/foundations-command-line-basics (Command line basics)
- http://www.cs.binghamton.edu/~rhainin1/walkthroughs/gccbasics.html (C compiler basics)
- to learn Vim (a command line text editor) just type
vimtutor
into the terminal. (Text editor) - https://www.tutorialspoint.com/unix/index.htm (Unix overview)
- http://www.ee.surrey.ac.uk/Teaching/Unix/ (Unix Overview)