Ok This is obviously your homework. The idea is that YOU practise to reinforce a concept or idea studied in class. At least attempt to do it and then post code if and when you go wrong. Expecting us to just do it for you means you will never learn anything.
The question is well written and gives you a decent strategy for how to approach the problem.
The question doesnt specify wether you must use Global variables or arguments to pass data but it is a minor difference in implementation which can be ignored for pseudo code.
In reality I wouldnt use the initialise code given below, but for language independant pseudo code it is the easiest description.
A histogram should by definition include some form of graphical output, wether it is asterisks or blobs or the character itself. How you scale it is then the next problem, By percentage may be the best approach.
PSEUDO CODE
FUNCTION Initialise
..LOOP FOR EACH element of the data array
....data[element] = 0
..END LOOP
END
FUNCTION readData
prompt Enter Filename
get filename
OPEN file called filename
Clear Character count
IF ( File Exists ) THEN
..LOOP WHILE NOT End Of File
....Read character from File
....Increment CharacterCount
....IF ( Character is Alpha ) THEN
......Increment Data Array counter for this character
....ELSE
......Increment Other Character counter
....END IF
..END LOOP
..Close File
ELSE
..output Unable to open specified file!
END IF
result = CharacterCount
END
FUNCTION printResults
prompt Enter Output Filename
get filename
OPEN file called filename for writing
IF ( File Exists ) THEN
..output to file Total Characters read (CharacterCount)
..LOOP FOR EACH element of the data array
....output to file Character ID Character count data[element]
..END LOOP
..output to file Other Character counter
..Close File
ELSE
..output Unable to open specified file!
END IF
END
MAIN ENTRY POINT
..Call Initialise
..Call readData
..Call PrintResults
END