Попросту говоря, структурное - без использования оператора goto, процедурное - с использованием подпрограмм, а модульное - деление программы на независимые части, каждая из которых выполняет свои задачи и передает результат другим модулям. Естественно, можно (и нужно) использовать все три принципа вместе.