پرش به محتوای اصلی

زمان‌های کامل (Perfect Tenses)

بخشی از بانک سؤال طبقه‌بندی‌شده‌ی این مبحث در کوئیز سنتر — رایگان و بدون نیاز به ثبت‌نام

خلاصه‌ی درسنامه

این خلاصه‌ی 30 درصدی درسنامه اصلی است. متن کامل با همه‌ی نکته‌ها، مثال‌های حل‌شده و جمع‌بندی، با ثبت‌نام رایگان در دسترست قرار می‌گیرد.

بخش اول: Present Perfect با Since و For

Present Perfect=has/have+past participle\text{Present Perfect} = \text{has/have} + \text{past participle}

کاربرد: وقتی وضعیتی از گذشته شروع شده و الان هم ادامه دارد.

تله بزرگ Since در برابر For

Since For
نقطه زمانی مشخص مدت زمان
since 2002, since last May, since nine o'clock for two years, for three months, for ages

مثال طلایی: "Mrs. Oh has been a teacher since 2002." / "She has known him for two months."
تله تستی: ❌ "I have been here for last May" — چون last May نقطه زمانی است، نه مدت. باید "since last May" باشد.

ترفند معلم خصوصی: اگه می‌تونی بگی «از وقتی که...» یا «از تاریخ...» → since. اگه می‌تونی بگی «به مدت...» → for.

Time Clause بعد از Since

Present Perfect+since+Simple Past\text{Present Perfect} + \text{since} + \text{Simple Past}

"I have known Rob since I was in high school.""We have lived in an apartment since we moved to this city."
بعد از since وقتی جمله زمانی می‌آید، فعل آن simple past است — نه present perfect: ❌ "I have known Rob since I have been in high school" غلط است.

خاطره‌ی یادگیری: اگه بخوای بگی «رابرت رو از دبیرستان می‌شناسم»، نمی‌گی "I know Rob since high school" (غلط محض) — باید بگی "I have known Rob since I was in high school" چون شناختنت از گذشته شروع شده و الان هم ادامه داره.

قیدهای زمان نامشخص

قید معنی مثال
ever تا به حال Have you ever seen snow?
never هیچ‌وقت I've never seen snow
yet هنوز (سوالی/منفی) Have you finished yet? / I haven't finished yet
already قبلاً (مثبت) Jack has already finished
just همین الان/تازه Sara has just finished her work
recently/lately اخیراً I've felt tired lately

تله Yet در برابر Already: Yet فقط در جملات سوالی و منفی می‌آید (❌ "I have finished yet" غلط است). Already در جملات مثبت می‌آید (گاهی سوالی برای تعجب: "Have you already finished?").

Present Perfect در برابر Simple Past

Present Perfect Simple Past
زمان نامشخص — "I have met Linda" زمان مشخص — "I met Helen yesterday"
وضعیت همچنان ادامه دارد وضعیت تمام شده
"Sam has been a teacher for ten years" (هنوز معلمه) "Jim was a teacher for ten years, from 2000 to 2010" (الان نیست)

"I have seen him yesterday" ← غلط، چون yesterday زمان مشخص است → باید "I saw him yesterday" باشد.

رویدادهای تکراری هم با present perfect می‌آیند (کلمات کلیدی: so far, twice, several times، many times): "I've been to Paris twice.", "We have had three tests so far this term.", "She has called me several times today."

بخش دوم: Present Perfect Progressive

has/have been+verb-ing\text{has/have been} + \text{verb-ing}

برای فعالیتی در حال انجام که از گذشته شروع شده و ادامه دارد، با تأکید روی مدت: "She has been waiting for the bus for 15 minutes." مقایسه با present progressive ساده (فقط الان: "She is waiting") و present perfect ساده (بدون تأکید بر مدت: "She has waited").

⚠️ فعل‌های حالتی (Stative Verbs) مثل know, believe, want, like, love, hate, need با progressive نمی‌آیند:
"I have been knowing him for years" ← باید "I have known him for years" باشد.

تفاوت ظریف: "I have lived here for 5 years" (تأکید روی وضعیت/نتیجه) در برابر "I have been living here for 5 years" (تأکید روی تداوم فعالیت) — در کنکور دنبال قرینه‌های تأکیدی روی تداوم فعالیت بگرد.

بخش سوم: Past Perfect و Past Perfect Progressive

had+past participlehad been+verb-ing\text{had} + \text{past participle} \qquad \text{had been} + \text{verb-ing}

برای دو اتفاق در گذشته — نشان می‌دهد کدام قبل از دیگری اتفاق افتاده. رویداد قدیمی‌تر با Past Perfect، رویداد جدیدتر با Simple Past:
"By the time Sam came, Ann had already left."

کلمه سیگنال مثال
by the time By the time he arrived, I had finished
before She had eaten before she left
when When I arrived, the film had already started
after After he had studied, he went out
already She had already left when he came

تله کنکوری: ❌ "By the time she came, I finished my work" ← باید "I had finished" باشد چون این اتفاق زودتر از آمدنش رخ داده.

Past Perfect Progressive برای فعالیتی که مدتی قبل از یک رویداد گذشته در جریان بوده و تأکید روی مدت آن است: "The police had been looking for the criminal for two years before they caught him." در مقابل، Past Perfect ساده تأکید روی تکمیل دارد: "Ryan had researched the topic" (تکمیل) در برابر "Ryan had been researching the topic for months" (تداوم).

جدول خلاصه چهار زمان کامل

زمان فرمول سیگنال‌ها
Present Perfect have/has + p.p. ever, never, yet, already, since, for
Present Perfect Progressive have/has been + -ing for/since + فعالیت در جریان
Past Perfect had + p.p. by the time, before, when, already
Past Perfect Progressive had been + -ing for/since + قبل از رویداد گذشته

نکته‌ی طلایی نهایی: stative verbs (know, want, believe) هرگز با progressive نمی‌آیند — نه در present perfect، نه در past perfect.

نمونه تست

پاسخنامه‌ی تحلیلی سه‌بخشی برای هر سؤال

  • چرا گزینه‌ی درست، درست است
  • چرا هر گزینه‌ی دیگر غلط است
  • تله‌ی تستی‌ای که باید بشناسی

1. By the time the rescue team finally reached the isolated village, the residents ___ without fresh water for almost a week.

  • have been surviving
  • had been surviving
  • were surviving
  • have survived

پاسخنامه‌ی تحلیلی

«By the time» به یک نقطهٔ مشخص در گذشته اشاره دارد (رسیدنِ گروه نجات). کمبود آب پیش از آن لحظه شروع شده و تا همان لحظه (نزدیک یک هفته) ادامه داشته است؛ برای عملی که تا پیش از یک نقطهٔ دیگر در گذشته در جریان بوده، از گذشتهٔ کاملِ استمراری استفاده می‌کنیم: had been surviving. بنابراین گزینهٔ «had been surviving» درست است. چرا بقیه نادرست‌اند: «have been surviving» حال کاملِ استمراری است و رابطه را به زمانِ حال وصل می‌کند، در حالی که کل جمله در گذشته اتفاق افتاده (رسیدنِ گروه نجات یک رویدادِ گذشته است). «were surviving» گذشتهٔ استمراریِ ساده فقط نشان می‌دهد عملی در یک لحظهٔ گذشته در جریان بوده، اما رابطهٔ «تا پیش از رسیدنِ گروه نجات» و تداومِ آن را نشان نمی‌دهد. «have survived» حال کاملِ ساده هم به زمانِ حال وصل است و تداومِ عمل تا یک نقطهٔ گذشته را نمی‌رساند. تلهٔ تستی: «By the time + فعل گذشته» یکی از قوی‌ترین نشانه‌های گذشتهٔ کامل (یا کاملِ استمراری) در جملهٔ دیگر است؛ باید به یاد داشته باشی که «حال کامل» فقط برای رابطهٔ گذشته-با-حال به کار می‌رود، نه برای رابطهٔ یک-نقطهٔ‌گذشته-با-نقطهٔ‌دیگرِ‌گذشته.

2. I completely understand your frustration; you ___ for the manager's response since you ___ your application last month.

  • have been waiting / submitted
  • had been waiting / submit
  • have waited / have submitted
  • were waiting / had submitted

پاسخنامه‌ی تحلیلی

انتظار برای پاسخ مدیر از زمانِ فرستادنِ درخواست در ماه گذشته شروع شده و تا همین الان ادامه دارد؛ برای این تداومِ گذشته-تا-حال از حال کاملِ استمراری استفاده می‌کنیم: have been waiting. فرستادنِ درخواست خودش در یک زمانِ کاملاً مشخص و تمام‌شده (last month) رخ داده، پس submitted با گذشتهٔ ساده می‌آید. بنابراین گزینهٔ «have been waiting / submitted» درست است. چرا بقیه نادرست‌اند: «had been waiting / submit» had been waiting رابطه را به گذشته-با-گذشته تبدیل می‌کند، در حالی که انتظار هنوز ادامه دارد (تا الان)؛ submit هم زمانِ نادرستی (حال ساده) برای رویدادِ ماه گذشته است. «have waited / have submitted» have waited به‌تنهایی تداومِ استمراری را کمتر می‌رساند تا have been waiting؛ have submitted هم اشتباه است چون فرستادنِ درخواست در یک زمانِ گذشتهٔ مشخص (last month) رخ داده و باید گذشتهٔ ساده باشد، نه حال کامل. «were waiting / had submitted» were waiting رابطه با زمانِ حال را از بین می‌برد؛ had submitted هم رابطهٔ زمانی را اشتباه به گذشته-پیش-از-گذشته تبدیل می‌کند. تلهٔ تستی: since + رویدادِ گذشتهٔ مشخص (مثل last month) یک الگوی کلاسیک است: بندِ اصلی حال کامل (یا حال کاملِ استمراری) می‌گیرد و بندِ since گذشتهٔ ساده.

3. Despite their long-standing friendship, they ___ each other very well since they ___ from university ten years ago.

  • haven't been understanding / graduated
  • hadn't understood / have graduated
  • haven't understood / graduated
  • didn't understand / had graduated

پاسخنامه‌ی تحلیلی

understand در این معنا فعل حالتی است و تقریباً هرگز استمراری نمی‌شود. مشکلِ درکِ متقابل از زمانِ فارغ‌التحصیلی (ده سال پیش) تا امروز ادامه داشته است؛ پس haven't understood با حال کامل می‌آید. فارغ‌التحصیل‌شدن خودش یک رویدادِ مشخص و تمام‌شده در گذشته است، پس graduated با گذشتهٔ ساده می‌آید. بنابراین گزینهٔ «haven't understood / graduated» درست است. چرا بقیه نادرست‌اند: «haven't been understanding / graduated» understand را نادرست استمراری می‌کند؛ فعل‌های حالتی مثل understand هرگز شکلِ ing نمی‌گیرند، حتی در ساختارهای کامل. «hadn't understood / have graduated» hadn't understood رابطه را به گذشته-با-گذشته تبدیل می‌کند، در حالی که این مشکل هنوز ادامه دارد (تا امروز)؛ have graduated هم اشتباه است چون فارغ‌التحصیلی یک رویدادِ مشخصِ گذشته (ten years ago) است. «didn't understand / had graduated» didn't understand فقط یک وضعیتِ گذشتهٔ ساده را نشان می‌دهد، نه تداومِ آن تا امروز؛ had graduated هم رابطهٔ زمانی را اشتباه می‌کند. تلهٔ تستی: understand درست مثل know یک فعل حالتیِ کلاسیک است که هرگز -ing نمی‌گیرد؛ کنکور این فعل را بارها در ساختارهای مختلف (حال کامل، گذشتهٔ کامل) تکرار می‌کند تا مطمئن شود این قانون کاملاً جا افتاده.

4. My supervisor is quite upset with me because I ___ the preliminary project report ___.

  • haven't finished / already
  • haven't finished / yet
  • didn't finish / already
  • don't finish / yet

پاسخنامه‌ی تحلیلی

ناراحتیِ سرپرست به این علت است که گزارش تا همین الان تمام نشده است؛ برای این وضعیت از حال کاملِ منفی استفاده می‌کنیم: haven't finished. yet معمولاً در جملات منفی یا پرسشی و در پایانِ جمله می‌آید تا بگوید «هنوز نه، اما انتظار می‌رود انجام شود». بنابراین گزینهٔ «haven't finished / yet» درست است. چرا بقیه نادرست‌اند: «haven't finished / already» already معمولاً در جملات مثبت به کار می‌رود («قبلاً انجام شده»)، نه در جملاتِ منفی؛ در جملهٔ منفی باید yet بیاید. «didn't finish / already» گذشتهٔ سادهٔ didn't finish رابطهٔ «تا همین الان» را نمی‌رساند؛ already هم در بافتِ منفی نادرست است. «don't finish / yet» حال سادهٔ don't finish یک عادتِ همیشگی را نشان می‌دهد (مثلاً «او هیچ‌وقت گزارش تمام نمی‌کند»)، نه وضعیتِ خاصِ این گزارش تا الان. تلهٔ تستی: already و yet هر دو با حال کامل همراه می‌شوند، اما already برای جملاتِ مثبت (I have already finished) و yet برای جملاتِ منفی/پرسشی (I haven't finished yet / Have you finished yet?) است.

5. When the devastating earthquake ___, the scientists realized that the seismic activity ___ rapidly over the previous few weeks.

  • struck / has been increasing
  • had struck / increased
  • struck / had been increasing
  • was striking / has increased

پاسخنامه‌ی تحلیلی

زلزله در گذشته و به‌طور کامل رخ داده است، پس struck با گذشتهٔ ساده می‌آید. افزایشِ فعالیتِ لرزه‌ای در چند هفتهٔ پیش از زلزله در جریان بوده است؛ برای این تداومِ گذشته-پیش-از-گذشته از گذشتهٔ کاملِ استمراری استفاده می‌کنیم: had been increasing. بنابراین گزینهٔ «struck / had been increasing» درست است. چرا بقیه نادرست‌اند: «struck / has been increasing» فعل دوم را به حال کاملِ استمراری تبدیل می‌کند که به زمانِ حال وصل است، در حالی که کل روایت در گذشته اتفاق افتاده (دانشمندان در گذشته متوجه شدند). «had struck / increased» had struck ترتیبِ زمانی را اشتباه می‌کند (زلزله باید خودِ رویدادِ اصلی و گذشتهٔ ساده باشد، نه رویدادی پیش از رویدادِ دیگر)؛ increased هم تداومِ چندهفته‌ایِ فعالیتِ لرزه‌ای پیش از زلزله را نشان نمی‌دهد. «was striking / has increased» was striking زلزله را (که یک رویدادِ آنی است) نادرست استمراری می‌کند؛ has increased هم به زمانِ حال وصل است. تلهٔ تستی: وقتی یک جمله دو رویداد در گذشته دارد که یکی (افزایشِ لرزه) پیش از دیگری (زلزله) شروع شده و تا آن ادامه داشته، آن فعالیتِ مقدم باید گذشتهٔ کاملِ استمراری بگیرد، نه حال کامل — نکتهٔ کلیدی این است که کل جمله در گذشته روایت می‌شود.

6. By the time the new environmental regulations ___ into effect, the local factories ___ toxic waste into the river for a decade.

  • went / have been dumping
  • had gone / dumped
  • went / had been dumping
  • were going / have dumped

پاسخنامه‌ی تحلیلی

اجرایی‌شدنِ مقرراتِ جدید یک اتفاقِ کامل و مشخص در گذشته است، پس went into effect می‌آید. کارخانه‌ها پیش از آن لحظه، یک دهه در حالِ ریختنِ پسماند بوده‌اند؛ برای این تداومِ طولانیِ پیش از یک نقطهٔ گذشتهٔ دیگر از گذشتهٔ کاملِ استمراری استفاده می‌کنیم: had been dumping. بنابراین گزینهٔ «went / had been dumping» درست است. چرا بقیه نادرست‌اند: «went / have been dumping» فعلِ دوم را به حال کاملِ استمراری می‌برد که رابطه‌اش با زمانِ حال است، در حالی که کل روایت در گذشته می‌گذرد و اجرایی‌شدنِ مقررات خودش رویدادی گذشته است. «had gone / dumped» ترتیبِ زمانی را برعکس می‌کند: اجرایی‌شدنِ مقررات را (که باید خودِ رویدادِ اصلی و گذشتهٔ ساده باشد) به گذشتهٔ کامل می‌برد، و تداومِ ده‌سالهٔ ریختنِ پسماند را (که باید گذشتهٔ کاملِ استمراری باشد) به گذشتهٔ ساده تبدیل می‌کند. «were going / have dumped» were going into effect غیرطبیعی است (اجرایی‌شدنِ قانون یک رویدادِ لحظه‌ای است، نه فرایندِ کشدار)؛ have dumped هم به زمانِ حال وصل است، در حالی که کل جمله در گذشته روایت می‌شود. تلهٔ تستی: «By the time» نشانهٔ رابطهٔ گذشته-با-گذشته است؛ باید همیشه بررسی کنی کدام فعل خودِ نقطهٔ مرجع است (گذشتهٔ ساده) و کدام فعل پیش از آن در جریان بوده (گذشتهٔ کاملِ استمراری).

7. We ___ our old car for more than five years before we finally ___ to purchase a more fuel-efficient model last week.

  • had had / decided
  • have had / had decided
  • were having / decided
  • have been having / decide

پاسخنامه‌ی تحلیلی

داشتنِ خودروی قدیمی بیش از پنج سال پیش از تصمیمِ هفتهٔ گذشته ادامه داشته است؛ برای این تداومِ گذشته-پیش-از-گذشته با فعلِ حالتیِ have (به‌معنای مالکیت)، از گذشتهٔ کاملِ ساده استفاده می‌کنیم: had had (نه استمراری، چون have در معنای مالکیت حالتی است). تصمیمِ خریدِ مدلِ جدید رویدادی مشخص در هفتهٔ گذشته است، پس decided با گذشتهٔ ساده می‌آید. بنابراین گزینهٔ «had had / decided» درست است. چرا بقیه نادرست‌اند: «have had / had decided» have had به زمانِ حال وصل است، در حالی که کل جمله در گذشته روایت می‌شود (تصمیمِ هفتهٔ گذشته)؛ had decided هم ترتیبِ زمانی را برعکس می‌کند. «were having / decided» were having اشتباه است چون have در معنای مالکیت (نه فعالیت) فعل حالتی است و استمراری نمی‌شود. «have been having / decide» have been having هم به همین دلیل اشتباه است؛ decide هم زمانِ نادرستی (حال) برای تصمیمِ هفتهٔ گذشته است. تلهٔ تستی: had had (دو بار had پشتِ سرِ هم) ممکن است عجیب به نظر برسد، اما کاملاً درست است: had اول فعلِ کمکیِ گذشتهٔ کامل و had دوم فعلِ اصلیِ have (داشتن) است؛ این ساختار یکی از سردرگم‌کننده‌ترین اما رایج‌ترین نمونه‌های گذشتهٔ کامل است.

8. How many times ___ to this magnificent museum since you ___ to our historic city?

  • have you been / moved
  • did you go / have moved
  • had you been / were moving
  • are you going / had moved

پاسخنامه‌ی تحلیلی

پرسش دربارهٔ تعدادِ دفعاتِ بازدید از موزه، از زمانِ نقل‌مکان تا اکنون است؛ برای این بازهٔ گذشته-تا-حال از حال کامل استفاده می‌کنیم: have you been. moved به یک نقطهٔ مشخص و کاملِ گذشته (نقل‌مکان‌کردن) اشاره دارد، پس با گذشتهٔ ساده می‌آید. بنابراین گزینهٔ «have you been / moved» درست است. چرا بقیه نادرست‌اند: «did you go / have moved» did you go گذشتهٔ ساده است و تعدادِ دفعات را در یک بازهٔ گذشته-تا-حال نمی‌سنجد؛ have moved هم اشتباه است چون نقل‌مکان یک نقطهٔ مشخصِ گذشته است، نه رویدادی که به حال وصل باشد. «had you been / were moving» had you been رابطه را به گذشته-با-گذشته می‌برد؛ were moving هم نقل‌مکان را (که یک رویدادِ کامل است) نادرست استمراری می‌کند. «are you going / had moved» are you going زمانِ حالِ ساده برای پرسش نامناسب است؛ had moved هم ترتیبِ زمانی را اشتباه می‌کند. تلهٔ تستی: «How many times + حال کامل + since + گذشتهٔ ساده» یک الگوی بسیار رایج برای شمارشِ تجربیات از یک نقطهٔ مشخص در گذشته تا امروز است.

9. Ever since the controversial policy ___, the citizens ___ strongly against its unfair implications.

  • has been introduced / protested
  • had introduced / have been protesting
  • was introduced / have been protesting
  • introduced / had protested

پاسخنامه‌ی تحلیلی

معرفیِ سیاستِ جنجالی یک رخدادِ مشخص و کامل در گذشته است، پس was introduced با گذشتهٔ ساده (مجهول) می‌آید. اعتراضِ شهروندان از همان زمان شروع شده و تا امروز ادامه دارد؛ برای این تداوم از حال کاملِ استمراری استفاده می‌کنیم: have been protesting. بنابراین گزینهٔ «was introduced / have been protesting» درست است. چرا بقیه نادرست‌اند: «has been introduced / protested» has been introduced اشتباه است چون معرفیِ سیاست یک رویدادِ مشخصِ گذشته است، نه چیزی که به حال وصل باشد؛ protested هم گذشتهٔ ساده است و تداومِ اعتراض تا امروز را نمی‌رساند. «had introduced / have been protesting» had introduced رابطه را به گذشته-با-گذشته می‌برد، در حالی که هیچ رویدادِ دیگری در گذشته وجود ندارد که این را توجیه کند. «introduced / had protested» introduced به‌جای was introduced ساختارِ مجهول را حذف می‌کند (سیاست باید «معرفی شود»، نه اینکه خودش معرفی کند)؛ had protested هم ترتیبِ زمانی را اشتباه می‌کند. تلهٔ تستی: «Ever since + رویدادِ گذشته» دقیقاً مثل since عمل می‌کند: بندِ اصلی حال کامل (یا حال کاملِ استمراری) می‌گیرد و بندِ ever since گذشتهٔ ساده.

10. She ___ the concept of quantum physics, even though she ___ countless books on the subject recently.

  • has never understood / has read
  • had never understood / read
  • never understood / had read
  • has never been understanding / reads

پاسخنامه‌ی تحلیلی

understand فعل حالتی است و با has never understood بیان می‌شود — درکِ مفهومِ فیزیکِ کوانتوم تا امروز محقق نشده است. خواندنِ کتاب‌های فراوان دربارهٔ این موضوع اخیراً تا امروز رخ داده (یک تجربهٔ کامل‌شده با اثرِ ادامه‌دار)، پس has read با حال کامل می‌آید. بنابراین گزینهٔ «has never understood / has read» درست است. چرا بقیه نادرست‌اند: «had never understood / read» had never understood رابطه را به گذشته-با-گذشته می‌برد، در حالی که «even though» نشان می‌دهد این عدمِ درک همچنان تا امروز پابرجاست؛ read هم گذشتهٔ ساده است و تجربهٔ اخیر را به حال وصل نمی‌کند. «never understood / had read» never understood فقط یک وضعیتِ گذشته را نشان می‌دهد؛ had read هم ترتیبِ زمانی را اشتباه می‌کند. «has never been understanding / reads» understand را نادرست استمراری می‌کند؛ reads هم تجربهٔ اخیرِ خواندنِ کتاب‌ها را (که با recently مشخص شده) به‌درستی به حال وصل نمی‌کند. تلهٔ تستی: recently می‌تواند هم با حال کامل (has read recently) و هم با گذشتهٔ ساده (read recently) بیاید، بسته به اینکه آیا تأکید روی «تجربه‌ای که اثرش تا امروز باقی مانده» است یا صرفاً «زمانِ وقوع»؛ اینجا بافتِ جمله (تضاد با «هنوز نفهمیده») تأکید را روی تجربهٔ اخیر می‌گذارد.

مباحث مرتبط

ادامه‌ی این مبحث رو ببین

با ثبت‌نام رایگان، به بانک کامل سؤال، شبیه‌ساز کنکور و تحلیل پیشرفت دسترسی داری

ثبت‌نام رایگان