[? DAN אַרמאַדאַראַס:?] הי, איך בין [? דן אַרמאַדאַראַס?]. הייַנט, מיר רע געגאנגען צו זיין קוקן בייַ דיבאַגינג. ניט בלויז זענען מיר געגאנגען צו רעדן וועגן עטלעכע טעקניקס, אָבער אויך מיר ניטאָ געגאנגען צו קוקן אין עטלעכע פון ​​די פֿעיִקייטן קאַנטיינד ין די קס50 ייד אַז לאָזן איר צו לייכט דיבאַג אַ פּראָגראַם. נאָר איין בייַשפּיל פון עפּעס אַז קענען גיין אומרעכט און עס ס אַקטשאַוואַלי עפּעס אַז מיר ווע שוין געזען פריער. אין דעם פאַל, דאָס איז אַ C פּראָגראַם אַז אַקסעפּץ אַ ינטאַדזשער פון דער באַניצער, דיוויידז עס דורך צוויי, און גיט דער רעזולטאַט צוריק צו דער באַניצער. איצט פון וואָס מיר ווע געזען פריער אין רעפֿעראַטן, מיר וויסן אַז דאָס וועט אַקטשאַוואַלי גרונט ספּעציפיש טייפּס פון אָפּטייל פּראָבלעמס ווען מיר האָבן מאָדנע נומערן. ספּעסיפיקאַללי, מיר וועט נאָר וואַרפן אַוועק עפּעס נאָך די דעצימאַל פונט. איצט, מיר וויסן אַז דאָס כאַפּאַנז צו זיין די קאַסטן. און אויב מיר לויפן עס, מיר קענען באַשטעטיקן אונדזער סאַספּישאַנז, ערשטער, דורך קאַמפּיילינג. און דעריבער, דורך פליסנדיק און קומט אַ מאָדנע נומער. דאס איז גאָרנישט נייַ. אבער דעם איז אַקטשאַוואַלי אַ לעמאָשל פון אַ זשוק אַז קענען עקסיסטירן ין אַ גרעסערע פּראָגראַם וואָס ווערט האַרדער צו שפּור אַראָפּ. אַפֿילו כאָטש מיר וויסן וואָס די אַרויסגעבן איז, דער אמת קרוקס פון דעם ענין זאל זיין טריינג צו ידענטיפיצירן ספּעסיפיקאַללי ווו די טעות אַקערז, ידענטיפיינג וואָס אַז פּראָבלעם איז, און דעמאָלט פיקסיר עס. אַזוי צושטעלן דעם ווי אַ בייַשפּיל פון וואָס זאל זיין עפּעס וואָס מיר שוין וויסן אָבער קענען זיין בעריד ין אנדערע עלעמענטן פון די קאָד. אַזוי עפן דעם אנדערע מקור קאָד טעקע ווי אַ משל, דעם אָפּטייל פּראָבלעם איז איצט טייל פון אַ גרעסערע פּראָגראַם. נאָך זאל זיין אַ ביסל ביסל קאַנטרייווד, און מיר זאל קענען צו לייכט ידענטיפיצירן עס, ספּעציעל זינט מיר ניטאָ פּונקט דיסקאַסינג דעם. אבער מיר קענען רעכענען אויס אַז דעם פּראָבלעם קענען עקסיסטירן אויף אַ גרעסערע וואָג. אויב איך צונויפנעמען דעם און איצט לויפן עס, אַרייַן אַ מאָדנע נומער, מיר קענען זען אַז מיר טאָן ניט באַקומען דווקא דער רעזולטאַט אַז מיר זאלן האָבן געריכט. אין דעם באַזונדער פאַל, מיר זאלן זאָגן אַז מיר ווילן צו ציילן אַלע פון ​​די נומערן פֿון איין אַרויף צו עטלעכע ספּעציפיש נומער. און מיר קענען זען אַז מיר האָבן אַ פאַרשיידנקייַט פון ישוז דאָ אויב מיר ניטאָ אָוטפּוטטינג, נאָר, 0 און 1 ווען מיר צושטעלן אַ ינפּוט פון 5. אַזוי מיר שוין וויסן אַז עס ס אַ פּראָבלעם דאָ. אבער מיר זאל ניט וויסן דווקא ווו דעם אַרויסגעבן אַקטשאַוואַלי יגזיסס. איצט איינער פון די וועגן אַז מיר קענען פּרובירן צו פאַרריכטן דעם איז עפּעס אַז מיר ווע שוין באַקענענ צו. מיר קענען נאָר נוצן עס אויף אַ גרעסערע וואָג. אויף שורה 14, מיר האָבן דעם פּרינטף פונקציאָנירן, וואָס אַלאַוז אונדז צו דרוקן אויס די שטאַט פון פאַרשידן ברעקלעך פון אינפֿאָרמאַציע. און דעם איז עפּעס אַז איר זאָל לעווראַדזש ין דיין פּראָגראַם צו פּרובירן צו רעכענען אויס פּונקט וואָס ס געשעעניש אין פאַרשידן שורות פון קאָד. אַזוי אַפֿילו אויב דאָס איז נישט דער לעצט רעזולטאַט אַז מיר אַקטשאַוואַלי ווילן צו פּראָדוצירן פון דעם פּראָגראַם, מיר נאָך זאל האָבן עטלעכע דיבאַג סטייטמאַנץ ווו מיר קענען פּרובירן צו רעכענען אויס דווקא וואָס איז געשעעניש ין פון אונדזער קאָד. אַזוי אין דעם פאַל, אויב איך וועל פּרינטף מיט די דיבאַג קוויטל. אין דעם פאַל, דאָס איז נאָר אַ דיבאַג שטריקל אַז איך בין זיך-פּאַטינג אַזוי אַז עס ווערט זייער קלאָר אין די פּראָדוקציע פון ​​מיין קאָד וואָס עס איז אַז איך ווילן צו ווייַזן. און רעזולטאַט דאָ די נומער אַז מיר האָבן קאַמפּיוטאַד. אין דעם פאַל, איך זאל ווילן צו וויסן דווקא וואָס איז געשעעניש איידער און נאָך עטלעכע ספּעציפיש קאַמפּיאַטיישאַן. אזוי איך זאל נוצן אַ פּרינטף איידער און נאָך אַז שורה פון קאָד. אין דעם פאַל, איך קען אַפֿילו מאַכן עס אַ קליין ביסל מער קלאָר דורך זאגן דיבאַג איידער און דיבאַג נאָך אַזוי אַז איך טאָן ניט צעמישן זיך מיט קייפל שורות אַז קוקן יידעניקאַל. איצט אויב מיר רעקאָמפּילע דעם און לויפן עס, אַרייַן אַ נומער ווי פינף ווידער, מיר קענען זען אַז מיר האָבן איצט רעזולטאַט איידער און נאָך און געפֿינען אַז מיר האָבן נישט געטאן אַ קלאָר אָפּטייל אָדער קלאָר ווייל פון די נומער אַז מיר אַקטשאַוואַלי ווילן צו טאָן. איצט אין דעם פאַל, דאָס איז ניט טאַקע אַ קלאָר פּראָדוקציע. עס ס ניט טאַקע אַ קלאָר אַוטקאַם אַז מיר ווילן אויס פון דעם באַזונדער פּראָגראַם. און דאָס איז, ווידער, אַ ביסל קאַנטרייווד. אבער, טאָמער, איינער פון די זאכן וואָס מיר קען טאָן אויב די באַשרייַבונג געזאגט אַז מיר ווילן צו טיילן דעם דורך 2 און לייגן 1-- אַזוי אין אנדערע ווערטער, מיר ווילן צו קייַלעכיק ופּ-- דעמאָלט מיר זאלן וויסן אַז מיר קען טאָן אַז באַזונדער זאַך, אין דעם פאַל. איצט דאָ מיר וויסן אַז מיר וועט זיין קענען צו לייגן 1 צו אונדזער כאַווד נומער. זאל ס רעקאָמפּילע דעם און באַשטעטיקן אַז דעם איז ביכייווינג די וועג וואָס מיר ווילן צו. מיר קענען זען אַז איצט איידער ווייל, מיר האָבן די נומער 5. נאך געהאט, מיר האָבן די נומער 3, וואָס לויט צו אונדזער באַשרייַבונג, איז וואָס מיר געוואלט צו טאָן. אבער אויב מיר קוקן אין די רעזולטאַט דאָ, מיר קענען זען אַז מיר זאלן האָבן אן אנדער זשוק בעסאַכאַקל, וואָס איז אַז מיר זענען סטאַרטינג אונדזער ציילן פון 0. איצט ווידער, דעם איז עפּעס אַז מיר האָבן געזען אין די פאַרגאַנגענהייַט און מיר קענען פאַרריכטן גאַנץ גרינג. אבער אין דעם פאַל, מיר אויך האט די נוץ פון ניצן די פּרינטף סטאַטעמענט גלייַך ין פון די פֿאַר שלייף צו וויסן דווקא ווו אַז טעות איז געשעעניש. אַזוי פּרינטף סטייטמאַנץ זענען זייער נוצלעך אין העלפּינג איר באַשליסן ווו, גראד אין דיין מקור קאָד, אַ ספּעציפיש טעות איז געשעעניש. און עס ס אויך וויכטיק צו פאַרשטיין אַז, ווי מיר ניטאָ שרייבן קאָד, מיר זאלן האָבן אַסאַמפּשאַנז וועגן די שטאַט פון אַ פּראָגראַם. אָדער מיר זאל האָבן אַסאַמפּשאַנז וועגן וואָס אַ טייל פֿון דער פּראָגראַם איז טאקע ריכטיק אָדער פאַלש ווען שפּעטער אויף ווי מיר בויען אויף אַז פּראָגראַם און מאַכן עס טייל פון אַ קאָמפּלעקס און גרעסערע פּראָגראַם אַז מיר פאַרשטיין אַז עטלעכע אַספּעקט פון וואָס איז אַקטשאַוואַלי וואָגן. ניצן פּרינטף קענען טאַקע העלפן שמאָל אַראָפּ און ידענטיפיצירן די געגנטן פון אַ פּראָגראַם וואס זאל ניט זיין ביכייווינג פּונקט די וועג אַז מיר דערוואַרטן, באזירט אויף אונדזער אַסאַמפּשאַנז. אבער עס ס אנדערע מכשירים פאַראַנען, ווי געזונט, אַז לאָזן אונדז צו פּרובירן צו רעכענען אויס ווו אַ טעות איז געשעעניש און אויך, ספּעסיפיקאַללי, וואָס זאכן זענען געשעעניש ין פון דעם פּראָגראַם. אַזוי ניצן פּרינטף איז זייער נוציק ווען מיר ווילן צו ידענטיפיצירן ספּעציפֿיש געביטן פון אַ פּראָגראַם וואס האָבן עטלעכע זשוק. אבער עס אויך ווערט טידיאַס נאָך אַ בשעת. אין דעם פאַל, דאָס איז אַ לעפיערעך פּשוט פּראָגראַם מיט נאָר איינער אָדער צוויי וועריאַבאַלז. און עס ווערט זייער גרינג פֿאַר אונדז צו דרוקן אויס די ווערט פון די וועריאַבאַלז אין דעם קאָנטעקסט פון די גרעסערע פּראָגראַם. אבער מיר זאל האָבן אַ אַנדערש פּראָגראַם וואָס האט פילע וועריאַבאַלז. און עס קען ניט זיין גאַנץ אַזוי גרינג צו נוצן פּרינטף צו פּרובירן צו אָפּשאַצן וואָס איז געשעעניש צו יעדער איינער פון יענע וועריאַבאַלז ווי די פּראָגראַם איז עקסאַקיוטינג. עס ס אַ פּראָגראַם אַז יגזיסץ גערופֿן אַ דעבוגגער פּראָגראַם. אין דעם פאַל, די איין אַז מיר וועלן נוצן איז די GNU דעבוגגער, אָדער גדב, אַז אַלאַוז אונדז צו דורכקוקן די ינערלעך ווערקינגז פון אַ פּראָגראַם אין אַ פיל מער דיטיילד וועג. מיר קענען אַקטשאַוואַלי ויספירן גדב פון די באַפֿעל שורה דאָ דורך נאָר טייפּינג גדב און די באַפֿעל אַז מיר ווילן צו דיבאַג. אין דעם פאַל, גראף. איצט אין דעם פאַל, מיר קענען זען אַז עס ברענגט אונדז צו אַ פּינטלעך אַז זאגט גדב. און מיר קענען אַקטשאַוואַלי ויספירן קאַמאַנדז צו גדב צו אַקטשאַוואַלי אָנהייבן דורכפירונג פון די פּראָגראַם, האַלטן עס אין זיכער ווייזט, אָפּשאַצן די וועריאַבאַלז און דורכקוקן די וועריאַבאַלז אַז עקסיסטירן אין די פּראָגראַם שטאַט אין אַז באַזונדער מאָמענט, און אַזוי אויף און אַזוי אַרויס. עס גיט אַ פּלאַץ פון מאַכט צו אונדז. אבער עס נאָר אַזוי כאַפּאַנז אַז די קס50 ייד אויך גיט אַ גוי אָדער אַ באַניצער צובינד פֿאַר גדב אַז אַלאַוז אונדז צו טאָן דעם אָן נידינג די באַפֿעלן שורה צובינד כוואַצאָועווער אָדער בייַ אַלע אַפֿילו. די וועג אַז איך קענען צוטריט אַז איז דורך ניצן די דיבאַג קנעפּל אין דער זייער שפּיץ פון די קס50 ייד. איצט אין די פאַרגאַנגענהייַט, וואָס מיר האָבן געזען איז אַז מיר נוצן די באַפֿעל שורה צו צונויפנעמען און דעמאָלט לויפן אַ פּראָגראַם. די דיבאַג קנעפּל טוט ביידע פון ​​די טריט. אבער עס אויך וועט ברענגען אַרויף די דעבוגגער קוויטל אויף די ווייַט רעכט אַז אַלאַוז אונדז צו דורכקוקן אַ פאַרשיידנקייַט פון פּראָפּערטיעס פון די פּראָגראַם ווי עס איז עקסאַקיוטינג. אויב איך גיט דיבאַג, אין דעם פאַל, עס וועט ברענגען אַרויף אַ נייע קוויטל אין די קאַנסאָול פֿענצטער אין דער זייער דנאָ. און איר קענען זען אַז דעם קוויטל האט עטלעכע אינפֿאָרמאַציע אין די זייער שפּיץ. און מיר קענען לאַרגעלי איגנאָרירן דעם. אבער איין פון די זאכן אַז מיר ווילן צו באַמערקן איז אַז עס אַוטפּוץ די זעלבע זאַך אַז מיר וואָלט באַקומען אויב מיר פּרובירן צו לויפן מאַכן אויף די C פּראָגראַם אין דער וואָקזאַל פֿענצטער. דאָ, מיר קענען זען עס ס פליסנדיק קלאַנג, און עס האט אַ פאַרשיידנקייַט פון flags, און עס איז קאַמפּיילינג אונדזער קאָונט.ק טעקע, וואָס איז געווען די אויסגעקליבן קוויטל בייַ די צייַט אַז איך שלאָגן דיבאַג. אזוי דעם איז זייער נוצלעך ווייַל איצט ניצן דעם דיבאַג קנעפּל, מיר קענען סיימאַלטייניאַסלי צונויפנעמען און דעמאָלט ויספירן די פּראָגראַם אַז מיר אַקטשאַוואַלי ווילן צו לויפן. איינער פון די flags וואָס איז וויכטיק, אין דעם פאַל, מיר ווע אַקטשאַוואַלי שוין ניצן פֿאַר די לאָנגעסט צייַט אָבער אויך נאָר האט עטלעכע האַנט ווייווינג [ינאָדאַבאַל], וואָס איז דאָס איין רעכט דאָ. אין קלאַנג, עס זאגט -גגדב3. אין דעם פאַל, וואָס מיר זענען טעלינג קלאַנג, אונדזער קאַמפּיילער, איז אַז מיר ווילן צו צונויפנעמען אונדזער פּראָגראַם. אָבער אויך צושטעלן וואָס זענען גערופֿן סימבאָל אינפֿאָרמאַציע אַזוי אַז די קאַמפּיילער אַקטשאַוואַלי האט צוטריט צו אַ פּלאַץ פון די אַנדערלייינג אינפֿאָרמאַציע קאַנטיינד ין דעם פּראָגראַם. מער ספּעסיפיקאַללי, די נומער פון פֿעיִקייטן אַז איך האָבן, די נעמען פון די פֿעיִקייטן, די וועריאַבאַלז, די טייפּס אַז די וועריאַבאַלז זענען, און אַ פאַרשיידנקייַט פון אנדערע זאכן וואָס העלפן די דעבוגגער דורכפירן זייַן אָפּעראַציע. איצט דאָרט ס עפּעס אַנדערש וואָס ס וויכטיק צו דערמאָנען ווען מיר ניטאָ דיסקאַסינג פליסנדיק אַ פּראָגראַם אין דעם וועג. באַמערקן אַז עס האט טאקע געבראכט אַרויף אַ נייַ קוויטל אין אונדזער קאַנסאָול צוזאמען די דנאָ. מיר ניט מער האָבן צו ינטעראַקט גלייַך מיט די וואָקזאַל פֿענצטער. אבער דעם נייַ קוויטל איז אַקשלי אַ וואָקזאַל פֿענצטער. עס נאָר איז ספּעציפיש צו די פליסנדיק פּראָגראַם אַז מיר האָבן Created. נאָטיץ אַז בייַ די דנאָ, אין קאָמבינאַציע מיט עטלעכע רעזולטאַט דורך קלאַנג די קאַמפּיילער און גדב, וואָס מיר קענען לאַרגעלי איגנאָרירן, עס אַקשלי ווייזט די רעזולטאַט פון אונדזער פּראָגראַם אין די זייער דנאָ. איצט עס ס וויכטיק צו פאַרשטיין אַז דעם איין פֿענצטער אַקטשאַוואַלי וועט ווייַזן איר די רעזולטאַט פון דיין פּראָגראַם אָבער אויך קענען אָננעמען ינפּוט פֿאַר אַז פּראָגראַם, ווי געזונט. אַזוי באַמערקן אַז זאגט ביטע אַרייַן אַ נומער, וואָס איז דער זעלביקער רעזולטאַט אַז מיר האבן האט אין דער וואָקזאַל פֿענצטער איידער. אבער עס ס איצט געוויזן אין דעם נייַ קוויטל. איך קענען ינפּוט אַ נומער. און עס וועט אַקשלי פונקציאָנירן ווי מיר דערוואַרטן ווייַזונג אונדז אונדזער דיבאַג, פּראָדוקציע, דער רעזולטאַט אַז זאל זיין וואָגן, ווי מיר ווע געזען פריער. און אין דער זייער דנאָ, עס אַקשלי האט עטלעכע נאָך רעזולטאַט פון גדפּ נאָר געזאגט אַז דעם פּראָגראַם האט געענדיקט. איצט ווי איר געזען אין דעם באַזונדער לויפן דורך, עס איז נישט דער הויפּט נוציק ווייַל אַפֿילו כאָטש מיר האבן די דעבוגגער מעניו קומען אַרויף, דאָס איז געווען נאָך אַ פליסנדיק פּראָגראַם. אין קיין פונט האט עס טאקע פּויזע דורכפירונג פֿאַר אונדז צו קענען צו דורכקוקן אַלע פון די וועריאַבאַלז קאַנטיינד ין. עס ס עפּעס אַנדערש אַז מיר האָבן צו טאָן אין סדר צו באַקומען גדב צו דערקענען אַז מיר ווילן צו פּויזע דורכפירונג פון דער פּראָגראַם און ניט נאָר לאָזן עס צו גיינ ווייַטער נאָרמאַלי ווי מיר וואָלט אין קיין אנדערע פאַל. אין סדר צו פּויזע דורכפירונג, אין עטלעכע ספּעציפיש שורה, מיר דאַרפֿן צו שאַפֿן וואָס ס גערופֿן אַ ברעכן פונט. און אַ ברעכן פונט איז זייער לייכט Created אין דעם קס50 ייד דורך גענומען דיין מויז און געבן אַ קליק גלייַך צו די לינקס פון עטלעכע ספּעציפיש שורה נומער. אַמאָל איך טאָן אַז, אַ רויט פּונקט אויס, וואָס ינדיקייץ אַז אַז שורה איז איצט אַ ברעכן פונט. און די ווייַטער צייַט אַז איך לויפן גדב, עס וועט האַלטן דורכפירונג אין אַז ברעכן פונט ווען עס ריטשאַז אַז שורה פון קאָד. איצט דעם איז אַ וויכטיק זאַך צו פאַרשטיין אַז עס ס ניט דאַווקע דער פאַל אַז יעדער שורה פון קאָד איז אַקטשאַוואַלי צוטריטלעך. אויב איך געווען צו שאַפֿן אַ פֿונקציע אַרויף דאָ, פֿאַר עקסאַמפּלע-- פּאָסל פ-- און נאָר טאָן אַ דרוק שורה הערע-- העלא וואָרלד-- אויב איך קיינמאָל רופן דעם פֿונקציע, עס וועט זיין די פאַל אַז, אויב איך שטעלן אַ ברעכן פונט דאָ, די פֿונקציע וועט קיינמאָל זיין גערופֿן. און דעריבער, דעם באַזונדער ברעכן פונט וועט קיינמאָל אַקטשאַוואַלי פּויזע דורכפירונג פון דער פּראָגראַם. אזוי לאָזן ס זאָגן אַז איך ריכטיק מאַכן אַ ברעכן פונט אויף עטלעכע שורה פון קאָד וואָס וועט אַקטשאַוואַלי זיין עקסאַקיוטאַד. איצט אין דעם פאַל, דאָס איז די ערשטער שורה אין די הויפּט פֿונקציע. אַזוי עס וועט זיכער זיין די קאַסטן וואָס, ווי באַלד ווי איך אָנהייבן דורכפירונג, די זייער ערשטער שורה וועט זיין ריטשט. גדב וועט פּויזע דורכפירונג. און דעמאָלט, איך וועט קענען צו ינטעראַקט מיט די דעבוגגער. איר קענען שטעלן קייפל שורות ווי ברעאַקפּאָינץ, אויב איר וואָלט ווי. מיר קענען אויך שאַפֿן אַ שורה אַרויף דאָ אין דעם אָפּשניט פון קאָד אַז וועט קיינמאָל זיין ריטשט. און מיר קענען אויך שטעלן איין ווייַטער אונטן. די סיבה אַז מיר וואָלט ווילן צו טאָן דעם מיר וועט גיין אין אַ קליין ביסל מער דעטאַל אין נאָר אַ מאָמענט. אַזוי פֿאַר איצט, לאָזן מיר נאָר דיסייבאַל די נאָך ברעכן ווייזט אַזוי אַז מיר קענען קוקן אין וואָס כאַפּאַנז ווען איך האָבן איין איין צעברעכן פונט אין מיין פּראָגראַם. איך האב געמאכט עטלעכע ענדערונגען צו דעם פּראָגראַם. אַזוי איך דאַרפֿן צו ראַטעווען עס. איך וועל גיט דיבאַג אַזוי אַז איך קענען נעמען די זאַמלונג און דעמאָלט דורכפירונג פון די דעבוגגער. מיר וועלן זען אַז, נאָך מאָומאַנץ, די שורה אַז מיר אויסגעקליבן ווי די ברעכן פונט איז כיילייטיד אין געל. מיר קענען אויך באַמערקן אַז אין די אויבערשטער רעכט אין די דיבאַג טאַפליע אַז די פּויזע ייקאַן האט זיך אין אַ קליין שפּיל בילדל. דעם מיטל אַז מיר האָבן פּויזע דורכפירונג, אין דעם באַזונדער פאַל. און היטטינג די שפּיל קנעפּל וואָלט לאָזן אונדז צו נעמענ זיכ ווידער דורכפירונג אין אַז ספּעציפיש פונט. נאָטיץ אַז עס ס אַ פּאָר פון אנדערע קנעפּלעך בנימצא אין דעם דיבאַג טאַפליע, ווי געזונט. שריט איבער, וואָס אַלאַוז מיר צו ויספירן אַז איין שורה פון קאָד און שריט איבער צו אַז שורה צו דער ווייַטער איינער, וואָס, אין דעם פאַל, וואָלט מיינען אַז די פּרינטף דערקלערונג איז עקסאַקיוטאַד. און עס וועט דעריבער פּויזע דורכפירונג אויף שורה 13, ווי אַזוי. און עס ס אויך אַ שריט אין פֿונקציע, וואָס איז נוצלעך אויב איך האָבן Created אנדערע פֿעיִקייטן אנדערש אין דער מקור קאָד. און איך ווילן צו שריט אין יענע פֿעיִקייטן אלא ווי ויספירן אַז פונקציאָנירן ווי אַ גאַנץ. אבער מיר וועט קוקן מער אין די שריט אין פונקציאָנירן אין נאָר אַ מאָמענט. איצט באַמערקן עטלעכע אנדערע זאכן וואָס אַקטשאַוואַלי עקסיסטירן ין דעם דיבאַג טאַפליע. מיר האָבן דעם טאַפליע גערופֿן דעם רופן אָנלייגן, וואָס ווייזט אונדז ווו פּונקט מיר זענען. אין דעם פאַל, מיר זענען ין פון די הויפּט פֿונקציע. אונדזער שריפט איז גערופֿן קאָונט.ק. און מיר פּאַסירן צו זיין אויף שורה 13, זייַל איינער, וואָס איז דווקא וואָס די כיילייטיד געגנט פון די מקור קאָד ינדיקייץ, ווי געזונט. איצט באַמערקן אַז דאָס אויך ווייזט אונטער די היגע בייַטעוודיק אָפּטיילונג אַלע פון ​​די וועריאַבאַלז אַז עקסיסטירן ין דעם פֿונקציע. עס ס וויכטיק צו טאָן אַז אַלע פון ​​די וועריאַבאַלז וועט דערשייַנען אין דעם היגע בייַטעוודיק אָפּטיילונג ין אַ פֿונקציע, אַפֿילו איידער זיי זענען Defined. מיר קענען זען דאָ אַז מיר האָבן אַ בייַטעוודיק גערופֿן NUM, האט אַ ניט ויסצאָלן ווערט פון 0, און עס איז פון טיפּ ינט. איצט איידער מיר אַקטשאַוואַלי ינישאַלייז אַלע פון ​​די וועריאַבאַלז, מיר ניטאָ ניט דאַווקע געראַנטיד צו זען אַ ווערט פון 0. און דיפּענדינג אויף אנדערע עקסאַקיושאַנז אַז איר האָבן געטאן און די שטאַט פון אייער זיקאָרן ווען איר אַקטשאַוואַלי לויפן דעם פּראָגראַם, איר זאל געפֿינען אַז איר טאָן ניט זען וואַלועס פון 0 און, אַנשטאָט, עטלעכע אנדערע משוגע נומערן. אבער טאָן ניט זאָרג וועגן אַז. עס ס ניט געגאנגען צו זיין באַטייַטיק ביז איר אַקטשאַוואַלי ינישאַלייז די ווערט. איצט אין דעם פאַל, מיר קענען זען אַז איך האָבן געטאן עטלעכע אַוטפּוץ. און איך בין, רעכט איצט, פּאָזד דורכפירונג. אבער אין דעם פאַל, וואָס איך טאַקע ווילן צו טאָן איז צו איצט שריט איבער דעם ליניע פון קאָד אַזוי אַז איך קענען אַקטשאַוואַלי אָנפֿרעג די באַניצער פֿאַר אַז ינט אַז מיר ווילן צו נוצן אין אונדזער פּראָגראַם. איצט אין דעם פאַל, ווען איך שלאָגן שריט איבער, באַמערקן אַז די פּויזע אָדער גאַנץ דער נעמענ זיכ ווידער קנעפּל האט געביטן צו דעם פּויזע קנעפּל ווייַל דעם קאָד איז אַקטשאַוואַלי עקסאַקיוטינג. וואָס איז געשעעניש רעכט איצט איז אַז עס איז ווארטן פֿאַר אונדז צו ינפּוט עטלעכע אינפֿאָרמאַציע ווי מיר קענען זען דורך אונדזער רעזולטאַט טעקסט אין דער זייער דנאָ. אַזוי רעכט איצט, דאָס איז ניט אַקטשאַוואַלי פּאָזד, אַפֿילו כאָטש עס, סאָרט פון, אויס צו זיין ווייַל גאָרנישט איז געשעעניש. אבער עס נאָר אַזוי כאַפּאַנז אַז אין מיין ספּעציפיש פאַל אויף שורה 13, איך בין ווארטן פֿאַר וסערס ינפּוט. און אַזוי גדב איז ניט ביכולת צו דורכקוקן אַ פּראָגראַם ווי עס איז פליסנדיק. איצט דער ווייַטער צייַט אַז איך אַרייַן עטלעכע ינפּוט-- אַזוי איך וועט קומען אַז נומער 5, ווי מיר ווע געזען אין די פּאַסט-- שלאָגן צוריק, און מיר באַמערקן אַז, מיד, גדב פּאָזאַז און, ווידער, כיילייץ די ווייַטער שורה. אבער באַמערקן אַז איצט, ווי אַ רעזולטאַט פון אונדזער ינפּוטטינג אַ ווערט, מיר האָבן ופּדאַטעד וואָס ווערט ין פון אונדזער היגע וועריאַבאַלז, וואָס איז זייער נוצלעך צו וויסן דווקא וואָס אַז נומער איז אין זיקאָרן. איצט איך קענען לאָזן דעם פּראָגראַם צו פאָרזעצן פּלייינג ביז דעם סוף פון זייַן דורכפירונג דורך היטטינג נעמענ זיכ ווידער. מיר קענען זען אַז זייער געשווינד טוט דעם פּראָגראַם ענדיקן עקסאַקיוטינג מיט דער זעלביקער רעזולטאַט אַז מיר האט איידער, די דעבוגגער קלאָוזיז, און איצט דעם פּראָגראַם האט סטאַפּט גאָר. איך ווייַזן אַז נאָר פֿאַר די צוועקן פון געזען וואָס כאַפּאַנז ווען מיר אַקטשאַוואַלי שלאָגן נעמענ זיכ ווידער. אבער מיר אַקטשאַוואַלי זענען געגאנגען צו ווילן צו גיין צוריק אין דעם פּראָגראַם אַזוי אַז מיר קענען פּרובירן צו דיבאַג דווקא וואָס איז געשעעניש. איצט אַז איך בין ניצן די דעבוגגער, איך קען ניט דאַרפֿן די דיבאַג פּרינטף סטייטמאַנץ. אַזוי איך קען צונעמען זיי ווי איך וועל טאָן איצט נאָר צו גיין צוריק צו אונדזער סימפּלער קאָד אַז מיר האבן אַ מאָמענט צוריק. איצט ווען איך ראַטעווען די פּראָגראַם און ויספירן עס, עס וועט, ווידער, גיין צו אַז ערשט ברעכן פונט אַז איך געהאט אויף שורה 11. און איך וועט קענען צו דורכקוקן מיין וועריאַבאַלז ווי איך ווילן צו טאָן. עס פּונקט אַזוי כאַפּאַנז אַז דעם טייל איז נישט זייער טשיקאַווע, און איך וויסן אַז איך בין געגאנגען צו דרוקן אויס דעם דערקלערונג. ביטע אַרייַן אַ נומער. און דעמאָלט, איך וויסן אַז איך בין געגאנגען צו פרעגן די באַניצער פֿאַר אַז ינטעגער. אַזוי טאָמער, איך אַקטשאַוואַלי ווילן צו מאַך מיין ברעכן פונט אַ ביסל ווייַטער אַראָפּ. איר קענען אַראָפּנעמען ברעכן ווייזט דורך געבן אַ קליק, ווידער, גלייַך צו די לינקס פון אַז שורה נומער. אַז רויט פּונקט וועט פאַרשווינדן, ינדאַקייטינג אַז וואָס ברעכן פונט איז איצט ניטאָ. איצט אין דעם פאַל, דורכפירונג האט שוין פּאָזד. און אַזוי עס ס ניט אַקשלי געגאנגען צו נעמענ זיכ ווידער אין אַז באַזונדער בייַשפּיל. אבער איך קענען שטעלן אַ ברעכן פונט אַ ביסל שפּעטער. און ווען איך איצט נעמענ זיכ ווידער מיין קאָד, עס וועט נעמענ זיכ ווידער און זאָגן די פונט פון וואָס ברעכן פונט. ווידער, איך שלאָגן נעמענ זיכ ווידער. טוט ניט ויסקומען ווי עפּעס איז געשעעניש. אבער אַז ס ווייַל מיין קאָד איז ווארטן פֿאַר ינפּוט. איך וועט קומען אַ נומער 5, שלאָגן קומען, און איצט די ווייַטער ברעכן פונט וועט זיין שלאָגן. איצט אין דעם פאַל, דעם איז די שורה פון קאָד אַז, איידער, מיר געוואוסט געשען צו זיין וואָגן. אַזוי לאָזן ס אָפּשאַצן וואָס כאַפּאַנז אין דעם באַזונדער פונט אין צייַט. ווען אַ שורה איז כיילייטיד, דעם שורה האט נישט נאָך געווען עקסאַקיוטאַד. אַזוי אין דעם פאַל, מיר קענען זען אַז איך האָבן אַ נומער, וואָס איך האָבן אַ ינטאַדזשער גערופֿן NUM וואָס האט אַ ווערט 5. און איך בין געגאנגען צו זיין Performing עטלעכע מאַט אויף אַז נומער. אויב איך שריט איבער אַז, מיר קענען באַמערקן אַז די ווערט פֿאַר NUM האט געביטן אין לויט מיט די אַריטמעטיק אַז מיר'ווע אַקטשאַוואַלי געטאן. און איצט אַז מיר זענען ין פון דעם פֿאַר שלייף אָדער איצט אַז די פֿאַר שלייף זיך איז כיילייטיד, מיר זען אַז מיר האָבן אַ נייַ בייַטעוודיק געהייסן איך אַז איז געגאנגען צו זיין געניצט אין אַז פֿאַר שלייף. איצט געדענקען איידער אַז איך דערמאנט אַז מאל איר ניטאָ געגאנגען צו זען עטלעכע מין פון משוגע נומערן ווי ניט ויסצאָלן איידער אַז נומער אָדער אַז בייַטעוודיק איז אַקטשאַוואַלי יניטיאַליזעד. מיר קענען זען אַז דווקא דאָ אין די דעם בייַטעוודיק גערופֿן איך, וואָס האט ניט נאָך געווען יניטיאַליזעד אין דער צייַט פון כיילייטינג. אבער מיר קענען זען אַז עס האט עטלעכע נומער אַז מיר וואָלט ניט אַקטשאַוואַלי דערוואַרטן. אַז ס גוט. דו זאלסט נישט זאָרג וועגן עס ווייַל מיר האָבן ניט אַקטשאַוואַלי יניטיאַליזעד אַז נומער ביז איך שריט איבער דעם ליניע און די ווערט איך האט שוין יניטיאַליזעד צו די ווערט 1. אַזוי צו זען אַז אַז ס אַקשלי די פאַל, לאָזן ס שריט איבער. מיר קענען איצט זען אַז אַז שורה האט שוין עקסאַקיוטאַד. און מיר זענען איצט כיילייטינג דעם פּרינטף שורה. און מיר קענען איצט זען ווי אונדזער וואַלועס פון איך און 3 האָבן געביטן איבער צייַט. דעם איז זייער נוצלעך צו טאָן, אין פאַקט, איז צו שריט איבער שורות ריפּיטידלי. און איר קענען געפֿינען וואָס אַקטשאַוואַלי כאַפּאַנז ין פון דיין פֿאַר שלייף און וואָס כאַפּאַנז צו די וועריאַבאַלז ין פון אַז פֿאַר שלייף ווי אַז פּראָגראַם דורכפירונג אַקערז איין שריט אין אַ צייַט. איצט אין דעם פונט, איך סטעפּט איבער פּונקט גענוג אַז איך איצט בין אין די סוף פון מיין פּראָגראַם. אויב איך שריט איבער אַז, עס וועט אַקטשאַוואַלי ופהערן דורכפירונג ווי מיר האָבן געזען אין די פאַרגאַנגענהייַט. זאל מיר ריסטאַרט דעם, נאָך ווידער, אַזוי אַז איך קענען פונט עפּעס אַנדערש אויס, ווי געזונט. אין דעם פאַל, עס איז איצט אַסקינג מיר, ווידער, פֿאַר אַ נומער, וואָס איך וועל, ווידער, אַרייַן. אבער דאָס מאָל, איך בין געגאנגען צו קומען אין אַ גרעסערע נומער אַזוי אַז די פֿאַר שלייף וועט יטעראַטע מער מאל. אין דעם פאַל, איך בין געגאנגען צו אַרייַן אַ ווערט פון 11. איצט ווידער ווייַל איך 'ד שטעלן אַ ברעכן פונט אין שורה 15, עס ס געגאנגען צו הויכפּונקט אַז ליניע. מיר קענען זען אַז אונדזער נומער 11 איז ריכטיק רעפּריזענטיד אין אונדזער היגע וועריאַבאַלז. סטעפּפּינג איבער אַז, מיר קענען איצט היטן וואָס כאַפּאַנז צו אונדזער ווערט פון איך ווי מיר גיינ ווייַטער ין פון דעם פֿאַר שלייף. עס געץ ינקרעמענטעד יעדער מאָל מיר דערגרייכן די שפּיץ פון אַז פֿאַר שלייף. איצט איינער פון די זאכן וואָס זאל זיין נוצלעך צו טאָן בעשאַס דורכפירונג פון דעם פּראָגראַם איז פֿאַר מיר צו אַקטשאַוואַלי טוישן די וועריאַבאַלז מידסטרים צו זען וואָס כאַפּאַנז צו מיין פּראָגראַם. אין דעם פאַל, איך קענען אַקטשאַוואַלי טאָפּל גיט די ווערט. נאָטיץ אַז עס ווערט אַ טעקסט פעלד. איצט איך קענען אַרייַן פאַרשידענע ווערט בעסאַכאַקל צו זען ווי מיין פּראָגראַם ביכייווז ווען איך ווע געביטן אַז בייַטעוודיק. איצט אין דעם פאַל, די בייַטעוודיק איך איצט כּולל די ווערט 10. אבער די פּראָגראַם איז נאָך פּאָזד אין דורכפירונג. ווען איך שריט איבער, איך זען אַז די ווערט איך, וואָס איך אריין ווי 10, איז נישט גרעסער ווי די ווערט פון NUM, וואָס מיד ז די פֿאַר שלייף צו האַלטן עקסאַקיוטינג. איצט אַז ס ניט די בלויז סיבה וואָס איר וואָלט ווילן צו מאָדיפיצירן די בייַטעוודיק אין פּלאַץ. איר זאל אַקטשאַוואַלי ווילן צו פּרובירן צו מאָדיפיצירן עס אַזוי אַז איר קענען פאָרזעצן דורכפירונג פון אַ שלייף אָדער אַזוי אַז איר קענען מאָדיפיצירן עטלעכע ווערט איידער עס ריטשאַז עטלעכע ספּעציפיש שטעלן פון אַריטמעטיק וואָס איר זענט וועגן צו דורכפירן. אַזוי איצט אַז מיר אַקטשאַוואַלי טוישן די ווערט פון איך ווי דער פּראָגראַם איז געווען עקסאַקיוטינג, עס האָט געפֿירט די פֿאַר שלייף צו פאַרלאָזן פּרימאַטשורלי ווייַל, אַלע פון ​​אַ פּלוצעמדיק, איך געשען צו זיין גרעסער ווי די ווערט פון NUM, טייַטש אַז אַז פֿאַר שלייף ניט מער דארף צו זיין עקסאַקיוטאַד. ווייטער, עס איז צו זיין דעם פאַל אַז מיר געביטן די ווערט פון איך ווען די שורה 17 איז כיילייטיד, וואָס איז געווען די פונט אין צייַט אַז די פֿאַר שלייף דורכפירונג איז אַקשלי ווייל עוואַלואַטעד. אויב איך האט געביטן דעם ווערט פון איך אויף אַ אַנדערש שורה, זאָגן 19, מיר וואָלט האָבן געזען אַנדערש נאַטור ווייַל שורה 19 וואָלט האָבן עקסאַקיוטאַד איידער די שלייף צושטאַנד איז רעעוואַלואַטעד. איצט אין דעם פונט, איך בין, ווידער, אין די סוף פון דעם פּראָגראַם. און איך קענען לאָזן דעם צו גיינ ווייַטער צו לאָזן מיין פּראָגראַם צו פאַרלאָזן געוויינטלעך. אבער עס ס אַ פּאָר פון זאכן וואס זענען וויכטיק צו נעמען אַוועק פון דעם באַזונדער דיסקוסיע. איר דאַרפֿן צו אָפּשאַצן אייער אייגן אַסאַמפּשאַנז וועגן ווי די קאָד זאָל זיין ביכייווינג. קיין מאָל איר טראַכטן אַז עטלעכע שטיק פון קאָד איר וויסן כאַפּאַנז צו אַרבעטן, אַז זאל זיין אַ רויט פאָן צו גיין צוריק און אָפּשאַצן, און זיין זיכער אַז אייער האַשאָרע פון ווי אַז קאָד איז אַפּערייטינג איז טאקע אמת צו ווי עס איז אויסגעדריקט אין דיין מקור קאָד. אבער אַפֿילו מער צו פונט איז געווען, ווען מיר זענען ניצן די דעבוגגער, איר קענען שטעלן ברעאַקפּאָינץ אין אַנדערש שורות פון קאָד, וואָס וועט גרונט די דעבוגגער צו פּויזע דורכפירונג אין יעדער פון די שורות אַזוי אַז איר קענען אָפּשאַצן די זיקאָרן אָדער אַפֿילו טוישן עס אין פּלאַץ. און ווידער, געדענקען אַז איר קענען שאַפֿן קייפל ברעאַקפּאָינץ אַזוי אַז איר קענען אויך נעמענ זיכ ווידער דורכפירונג, האָפּקען איבער גרויס פּאָרשאַנז פון קאָד, און עס וועט אויטאָמאַטיש פּויזע אין דער ווייַטער ברעכן פונט. עס ס אַקטשאַוואַלי מער אַוואַנסירטע פֿעיִקייטן פון די דעבוגגער, ווי גוט. אבער מיר וועט האָבן צו אָפּשיקן איר צו עטלעכע סאַבסאַקוואַנט ווידיאס אין סדר צו טאַקע רייצנ באַזונדער ווי צו נוצן די באַזונדער פֿעיִקייטן. פֿאַר איצט, דאַנקען איר זייער פיל פֿאַר וואַטשינג. און גוט גליק דיבאַגינג.