Program: Checking the Validity of a Credit Card Number

Exercise: Write a program that checks the validity of a credit card number using the Luhn algorithm.

First step: Break the problem down into manageable sub-tasks that can each be solved by a relatively small function

One way:

function ccnToList()-
    Takes a credit card number (a string)
    converts it to a list of all digits in the ccn
    returns this list

function checkLengthPrefix()-
    takes the ccn list produced by ccnToList()
    returns "invalid" if list's length and prefix doesn't match any of our card types
    otherwise returns "American Express", "Visa" or "Master Card"

function reverseList()-
    takes ccn list
    returns reverse list

function luhn()-
    takes ccn list
    calls reverseList() to reverse it
    doubles every other entry of reversed list, and returns resulting list

function luhnSum()-
    takes list produced by luhn()
    returns sum of digits of all numbers in list

function main()-
    reads CCN from user (prompt user to enter number w/o dashes)
    if it's all digits:
        convert to a list
        if the length/prefix match one of our card types:
            apply luhn algorithm
            print a message indicating card type