This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
tech:tutorial:start [2016/11/09 09:24] rk4n3 |
tech:tutorial:start [2017/01/16 00:18] (current) admin |
||
---|---|---|---|
Line 7: | Line 7: | ||
* It is expected that exercises will compel a learner to ask questions, so anyone using this tutorial content should do so while having someone they feel comfortable asking about places they might get stuck on. | * It is expected that exercises will compel a learner to ask questions, so anyone using this tutorial content should do so while having someone they feel comfortable asking about places they might get stuck on. | ||
- | ==== Resources ==== | + | [[tech:tutorial:c_basic|Basic C Tutorial]] |
- | Here are the locations of existing free tutorial content that I have reviewed, and seen fit to refer to: | + | * [[tech:tutorial:c_pointer_cheatsheet|Basic pointer reference card]] |
- | * [[https://www.tutorialspoint.com/cprogramming|TutorialsPoint C tutorial]] | + | |
- | ===== C Programming ===== | + | [[tech:tutorial:c_intermediate|Intermediate C Tutorial]] |
- | ==== Exercise 1 ==== | + | [[tech:tutorial:vid:start|Content for Videos]] |
- | The first portion of this exercise is to complete the [[https://www.tutorialspoint.com/cprogramming/c_environment_setup.htm|TutorialsPoint C-Environment Setup tutorial phase]] (but skip the "Try It Option Online" part). \\ | + | |
- | Once that is complete, proceed with: | + | |
- | * Make sure you have the "Hello world" program from TutorialsPoint in a ''.c'' file | + | |
- | * Compile your program (you can use [[https://www.tutorialspoint.com/cprogramming/c_program_structure.htm|this step]] if you like) | + | |
- | * Read the man page for the GNU ''make'' command | + | |
- | * Write a ''Makefile'' to build your program | + | |
- | * Ensure your ''Makefile'' also supports a ''clean'' target, which removes products of compilation | + | |
- | * Test out all aspects of your ''Makefile'' to ensure it operates as expected | + | |
- | Remember to have your work reviewed by, as well as to seek help/advice from, your instructor. | + | |
- | Here is a sample Makefile as a kick-start: | ||
- | <code> | ||
- | PGM = hello | ||
- | |||
- | all : $(PGM) | ||
- | @echo Done | ||
- | |||
- | clean : | ||
- | @rm -f *.o | ||
- | |||
- | $(PGM) : hello.c | ||
- | gcc -o $(PGM) hello.c | ||
- | </code> | ||
- | |||
- | ==== Exercise 2 ==== | ||
- | Read these sections in the TutorialsPoint tutorial: | ||
- | * [[https://www.tutorialspoint.com/cprogramming/c_basic_syntax.htm|Basic Syntax]] | ||
- | * [[https://www.tutorialspoint.com/cprogramming/c_data_types.htm|Data Types]] | ||
- | * [[https://www.tutorialspoint.com/cprogramming/c_variables.htm|Variables]] | ||
- | |||
- | ... then, read the manpage for ''printf''. \\ | ||
- | |||
- | Once complete with these readings, write a program that stores integer values in four different integer variables, and prints each out using the ''printf'' function, making sure the name of the variable is shown before the value. \\ | ||
- | Once you have completed that, read [[https://www.tutorialspoint.com/cprogramming/c_operators.htm|this TutorialsPoint section]], and then alter your program to do a number of typical arithmetic operations upon your variables, printing out both a label showing the calculation being done and the result for each. | ||
- | |||
- | ==== Exercise 3 ==== | ||
- | Read these sections in the TutorialsPoint tutorial: | ||
- | * [[https://www.tutorialspoint.com/cprogramming/c_decision_making.htm|Decision Making]] | ||
- | * [[https://www.tutorialspoint.com/cprogramming/c_loops.htm|Loops]] | ||
- | ... then, alter your program to start with one number (as one of your variables), and compute the result of ''n<sup>2</sup> - 1'' for ''n'' up to a higher number (as another of your variables). Make sure that the calculation being performed and the result are printed for each iteration. \\ | ||
- | |||
- | When that program is complete, read [[https://www.tutorialspoint.com/cprogramming/c_functions.htm|this TutorialsPoint section]], and then move your calculations into a function that takes the beginning and ending for your loop as parameters. | ||
- | |||
- | ==== Exercise 4 ==== | ||
- | Read this section in the TutorialsPoint tutorial: | ||
- | * [[https://www.tutorialspoint.com/cprogramming/c_arrays.htm|Arrays]] | ||
- | ... then, refactor your program to use an array of integers for ''n'', and perform the calculation for each of the ''n'' in the array. \\ | ||
- | |||
- | Once that is complete and working, read [[https://www.tutorialspoint.com/cprogramming/c_strings.htm|this section at TutorialsPoint]], and then add a new function that creates a string, fills it with some text, and then iterates over the string to print each character out on a separate line. | ||
- | |||
- | ==== Exercise 5 ==== | ||
- | Read this section in the TutorialsPoint tutorial, in this order: | ||
- | * [[https://www.tutorialspoint.com/cprogramming/c_structures.htm|Structures]] | ||
- | * [[https://www.tutorialspoint.com/cprogramming/c_pointers.htm|Pointers]] | ||
- | ... then, create a new function that declares a local variable of a structure type, which you will also have to define at the top of your source file. The structure should have an integer and a character array of a length suitable for your name. In your function, fill the name field of the structure in with your name, set the integer to a value, then print out both. \\ | ||
- | |||
- | Once that is working, refactor this function to take a pointer to your structure type as a parameter, and print out the integer and name from the structure passed in. Initialize a variable of your structure type to pass into the function from where you call it. | ||
- | |||
- | ==== Exercise 6 ==== | ||
- | One important aspect of maintaining the simplicity, extensibility, and managability of your code is "modularity", and there are also various aspects of modularity to pay attention to. \\ | ||
- | For this exercise, we're going to focus on the arrangement of your code into files, and the respective build mechanics: | ||
- | * Refactor all code written so far into functions | ||
- | * Merge all "main" functions into one central "main" function, which will be capable of deciding which functions to call for running the various tests | ||
- | * Make sure that there are multiple ''.c'' files, with your functions located in whichever files makes the most sense to you | ||
- | * Create a header (''.h'') file with function prototypes for all the functions that will need to be called from the "main" function | ||
- | * Refactor your ''Makefile'' with a two-pass process - include rules for building each ''.c'' file into a ''.o'' file, and then linking all ''.o'' files into the executable. | ||
- | * Make sure your ''Makefile'' is driven by dependencies, so that a ''.o'' file is only created when its respective ''.c'' file changes, and the executable is likewise only created when one or more of the ''.o'' files changes | ||
- | |||
- | ==== Exercise 7 ==== | ||