This commit is contained in:
Miloslav Ciz 2024-04-02 22:47:48 +02:00
parent 491c5ff885
commit b9fd8d7532
17 changed files with 1909 additions and 1777 deletions

View file

@ -10,6 +10,19 @@ This tutorial focuses on teaching pure C, i.e. **mostly just command line text-o
If you do two chapters a day (should take like half and hour), in a week you'll know some basic C.
Potentially supplemental articles to this tutorial are:
- [C](c.md)
- [algorithm](algorithm.md)
- [programming tips](programming_tips.md)
- [programming style](programming_style.md)
- [debugging](debugging.md)
- [exercises](exercises.md)
- [C pitfalls](c_pitfalls.md)
- [memory management](memory_management.md)
- [optimization](optimization.md)
- ...
## About C And Programming
[C](c.md) is
@ -2131,6 +2144,8 @@ This code is almost a bare minimum template for SDL that doesn't even perform an
We haven't nearly covered the whole of C, but you should have pretty solid basics now. Now you just have to go and write a lot of C programs, that's the only way to truly master C. WARNING: Do not start with an ambitious project such as a 3D game. You won't make it and you'll get demotivated. Start very simple (a Tetris clone perhaps?). Try to develop some consistent programming style/formatting -- see our [LRS programming style](programming_style.md) you may adopt (it's better than trying to make your own really).
See also supplemental articles at the beginning of this tutorial.
You should definitely learn about common [data structures](data_strucutre.md) ([linked lists](linked_list.md), [binary trees](binary_tree.md), [hash tables](hash.md), ...) and [algorithms](algorithm.md) ([sorting](sorting.md), [searching](search.md), ...). As an advanced programmer you should definitely know a bit about [memory management](memory_management.md). Also take a look at basic [licensing](license.md). Another thing to learn is some [version control system](vcs.md), preferably [git](git.md), because this is how we manage bigger programs and how we collaborate on them. To start making graphical programs you should get familiar with some library such as [SDL](sdl.md).
A great amount of experience can be gained by contributing to some existing project, collaboration really boosts your skill and knowledge of the language. This should only be done when you're at least intermediate. Firstly look up a nice project on some git hosting site, then take a look at the bug tracker and pick a bug or feature that's easy to fix or implement (low hanging fruit).