Here are the locations of existing free tutorial content that I have reviewed, and seen fit to refer to:
The first portion of this exercise is to complete the TutorialsPoint C-Environment Setup tutorial phase (but skip the “Try It Option Online” part).
Once that is complete, proceed with:
.c
filemake
commandMakefile
to build your programMakefile
also supports a clean
target, which removes products of compilationMakefile
to ensure it operates as expectedRemember 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:
PGM = hello all : $(PGM) @echo Done clean : @rm -f $(PGM) *.o $(PGM) : hello.c gcc -g -o $(PGM) hello.c
Read these sections in the TutorialsPoint tutorial:
… 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 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.
Read these sections in the TutorialsPoint tutorial:
… then, alter your program to start with one number (as one of your variables), and compute the result of n2 - 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 this TutorialsPoint section, and then move your calculations into a function that takes the beginning and ending for your loop as parameters.
Read this section in the TutorialsPoint tutorial:
… 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 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.
Read this section in the TutorialsPoint tutorial, in this order:
… 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.
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. After reading this TutorialsPoint section on C headers, proceed with:
.c
files, with your functions located in whichever files makes the most sense to you.h
) file with function prototypes for all the functions that will need to be called from the “main” functionMakefile
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.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 changesRead this section of the TutorialsPoint tutorial: Command Line Arguments, then:
Read this section of the TutorialsPoint tutorial: C Input & Output, and then refactor your program to get some of its information from input instead of command-line arguments:
Read this section of the TutorialsPoint tutorial: C File IO, and then refactor your program to determine some of its behavior by values read from a configuration file:
Read this section of the TutorialsPoint tutorial: C Memory Management, and then refactor your program to save a history of user interaction, as a fifo queue of segments that can be used to dump a history report: