# "Concept" inventory for Labs 1--5 ## Lab 1 * while / for * conditionals and boolean expressions * functions/procedures * **functions**: printf, sqrt, floor * main function * strings and arrays * **types**: int, bool, float, char *, char ** * **includes**: `stdio.h`, `math.h`, `stdbool.h` * order of functions in file * recursion (not tail recursion) * finite precision of integers ## Lab 2 * own library in separate file * header files * prototype declarations * linking * warnings * macros multiple inclusion problem * do/while * **functions**: strcmp, scanf, getchar, putchar, random (plus initialising with seed etc.) * EOF constant * **includes**: `string.h` * **types**: char [] ## Lab 3 * tail recursion * function pointers * typedefs * unions * **functions:** atof, atoi, strdup ## Lab 4 * Pointers * Pointer arithmetic * Pass by value vs. pass by reference * Pointers to stack variables both on previous frames (legal) and invalidated frames (illegal) * structs * arrays of structs ## Lab 5 * **includes**: `stdio.h` * **functions**: fopen, fclose, fprintf, fgetc, fputc