Moin Romy,
normalerweise braucht man sich um den Countdown selbst nicht zu kümmern, dafür gibt es in den meisten Programmiersprachen fertige Funktionen oder Klassen.
Zum Algorithmus könnte ich mir vorstellen, dass man technisch nicht rückwärts zählen muß, sondern einfach bei Start der aktuellen Zeitpunkt (z.B. Millisek. nach 1970) ausliest und die Länge des Countdown addiert (=Endzeitpunkt). Anschließend wird solange gewartet, bis aktuelle Zeit > Endzeit.
In 68000er Assembler habe ich sowas ähnliches schon gemacht. Da griff ich direkt auf die Hardware zu, d.h. spezielle Timer-Register, die nach einer bestimmten Zeit einen sog. Interrupt auslösten und damit das laufende Programm unterbrachen, bzw. eine Funktion aufruften.
Was C angeht, kann ich zur Umsetung leider nicht viel sagen aber
eine forschleife von 180 bis Null runterzählen mit Sleep klingt nicht verkehrt. Aber dafür gibt's bestimmt auch eine spezielle Funktion, die im Hintergrund arbeitet...
Schönes Wochenende!
Danny