Collected notes on programming.

computer science dictionary


Notes on the C programming language.

C is a widely used programming language, developed by Brian Kernighan and Dennis Ritchie during the 1970s. It is closely tied to the development of the Unix operating system.

A program written in C needs to be compiled - I use the Ubuntu pre-installed gcc. C programs can be debugged using GDB.


type *ptrA pointer of type named ptr
*prtThe value of whatever prt is pointed at
*(ptr + i)The value of (whatever prt is pointed at plus i)
&thingThe address of thing
type *ptr = &thingA pointer of type named ptr set to the address of thing

Converting strings to integers



Notes on debugging.

The GNU Project debugger, displays what is going on 'inside' a program while it executes - or what it was doing at the moment it crashed.


gdb ./programstarts gdb
runexecutes the code
ssteps to the next line
njumps over the next function
ccontinues execution
lprints 5 lines above and below current statement
breaksets a breakpoint either at line number of function name
watchstops the execution everytime a variable value changes
displayprints a variable value on execution stops
infodisplays information on breakpoints and watchpoints
clear #removes the breakpoint at line #
condition 1 i == "test"breaks at breakpoint 1 when i is "test"


Notes on shell scripting.

Bash is a Unix shell and command language originally released in 1989. It can read and execute text files called shell script that are useful for automating tasks.

The terminal cheatsheet contains some of the commands that can be run as part of a bash script.

Running a script

Navigate to the directory containing the script and use ./ to execute it.

If the script fails with an permissions error, use chmod 755 to make it executable.

Shebang. Indicates which interpreter a script should be run with: #!/bin/bash

$1, $2, ...
The first, second, etc command line arguments to the script.

To set a value for a variable. Remember, no spaces on either side of =

Quotes " '
Double will do variable substitution, single will not.

if [ ] then else fi
Perform basic conditional logic.

Evaluating the arguments passed to a script

# case example
case $1 in
		echo starting
		echo stoping
		echo restarting
		echo don\'t know


Find and replace.

Regular expressions are useful for extracting information from any text by searching one or more matches of a specific pattern.

A regex usually comes within this form /abc/ where the search pattern is delimited by two slash characters /.


^Thematches any string that starts with The
end$matches a string that ends with end
^The end$exact string match (starts and ends with The end)
longmatches any string that has the text long in it


abc*matches a string that has ab followed by zero or more c
abc+matches a string that has ab followed by one or more c
abc?matches a string that has ab followed by zero or one c

Character classes

User uppercase to negate.

\d*matches a single character that is a digit
\w*matches a word character (alphanumeric character plus underscore)
\s*matches a whitespace character (includes tabs and line breaks)
.*matches any character


In order to be taken literally, you must escape the characters ^.[$()|*+?{\ with a backslash \ as they have special meaning.


gglobaldoes not return after the first match, restarting the subsequent searches from the end of the previous match
mmulti-linewhen enabled ^ and $ will match the start and end of a line, instead of the whole string
iinsensitivemakes the whole expression case-insensitive (for instance /aBc/i would match AbC)

incoming(1) | preonic