“For” is used when you are using a specific period of time: one week, three hours, five years, etc.
I have been working on my homework for two hours.
Father has been sick for a week.
Tom has been attending college for three years.
She’s been waiting for the bus for a long time.
“Since” is used when you indicate the beginning of a specified period of time. The period of time continues until the present.
I have been working on my homework since 1 o’clock.
Father has been sick since Sunday.
Tom has been attending college since 2005.
She’s been waiting for the bus since this morning.
“Ago,” on the other hand, just refers to some time in the past. “Ago” uses the simple past tense. You can think of “ago” = “before now.”
I worked on my homework four days ago. (= “I worked on my homework four days before now.”)
John came home from college a month ago. (= “John came home from college one month before now.”)
People lived in caves a long time ago.
I have been practicing the piano ____________ 3 o’clock. → I have been practicing the piano since 3 o’clock.
I have been practicing the piano ____________ 90 minutes. → I have been practicing the piano for 90 minutes.
I went on vacation (three weeks). → I went on vacation three weeks ago.
I have been on vacation (a week). → I have been on vacation for a week.
Already means that something happened earlier than we expected. With Present Perfect already usually goes after have or has and before the main verb.
– We’ve already had our breakfast.
– When are you going to do your homework?
– But I’ve already done it!
– Do you want a cup of coffee?
– No, thanks. I’ve already had one.”
Yet means that something that we expected has happened or hasn’t happened. We usually put it at the end of a sentence.
– Has the post arrived yet?
– Have you done your homework?
– Not yet.
– Haven’t you got ready yet? Look at the time!