The definition
A function f is continuous at a if three things hold: f(a) is defined, the limit of f(x) as x -> a exists, and the two are equal. Folding these together gives a self-contained epsilon–delta statement: f is continuous at a when for every epsilon > 0 there is delta > 0 such that |x - a| < delta (within the domain) implies |f(x) - f(a)| < epsilon.
A continuous function on a set S is one that is continuous at every point of S. By the sequential criterion for continuity (also called Heine continuity), f is continuous at a if and only if x_n -> a implies f(x_n) -> f(a). This sequential form is often the quickest route to proofs that sums, products, and compositions of continuous functions are continuous, since it inherits the algebra of sequence limits.
How continuity can fail
When f is not continuous at a we have a discontinuity, and there is a tidy classification. A removable discontinuity is one where the two-sided limit exists but disagrees with (or replaces a missing) f(a) — you could “repair” it by redefining one value. A jump discontinuity is where both one-sided limits exist but are unequal. Anything else (a side fails to have a finite limit at all) is an essential discontinuity.
Removable: g(x) = (x^2 - 1)/(x - 1) for x != 1, undefined at 1.
For x != 1, g(x) = x + 1, so lim_{x->1} g(x) = 2.
The limit exists; just set g(1) = 2 to make it continuous.
Jump: h(x) = floor(x) at x = 2.
lim_{x->2-} h = 1, lim_{x->2+} h = 2. Both exist but differ -> jump of size 1.
Essential: sin(1/x) at 0.
Neither one-sided limit exists (oscillation) -> not removable, not a jump.The diagnostic is always the same: compute both one-sided limits and compare them with each other and with f(a). This is exactly why the previous guide's machinery of one-sided and sequential limits pays off here.