[Powered by Google Translate] [איבערבליק] [קוויז 0] [לעקסי ראָסס, טאַמי מאַקווילליאַם, לוקאַס פרעיטאַס, יוסף אָנג] [האַרוואַרד אוניווערסיטעט] [דאס איז קס50.] [CS50.TV] היי, אַלעמען. באַגריסונג צו די באריכטן סעסיע פֿאַר קוויז 0, וואָס איז גענומען אָרט דעם מיטוואך. וואָס מיר רע געגאנגען צו טאָן הייַנט בייַ נאַכט, איך בין מיט 3 אנדערע טפס, און צוזאַמען מיר רע געגאנגען צו גיין דורך אַ באריכטן פון וואָס מיר ווע געטאן אין דעם קורס אַזוי ווייַט. עס ס ניט געגאנגען צו זייַן 100% פולשטענדיק, אָבער עס זאָל געבן איר אַ בעסער געדאַנק פון וואָס איר שוין האָבן אַראָפּ און וואָס איר נאָך דאַרפֿן צו לערנען איידער מיטוואך. און פילן פֿרייַ צו כאַפּן דיין האַנט מיט שאלות ווי מיר רע געגאנגען צוזאמען, אָבער האַלטן אין גייַסט אַז מיר וועט אויך האָבן אַ קליין ביסל פון צייַט בייַ די סוף- אויב מיר באַקומען דורך מיט אַ ביסל מינוט צו ספּער-צו טאָן גענעראַל שאלות, אַזוי האַלטן אַז אין גייַסט, און אַזוי מיר רע געגאנגען צו אָנהייבן בייַ די אָנהייב מיט וואָך 0. [קוויז 0 איבערבליק!] [חלק 0] [לעקסי ראָסס] אבער איידער מיר טאָן וואָס לאָזן ס רעדן וועגן די לאָגיסטיקס פון די ויספרעג. [לאָגיסטיקס] [קוויז נעמט אָרט אויף מיטוואך 10/10 אין לו פון לעקציע] [(זע http://cdn.cs50.net/2012/fall/quizzes/0/about0.pdf פֿאַר פרטים)] עס איז אויף מיטוואך אקטאבער 10. אַז ס דעם מיטוואך, און אויב איר גיין צו דעם URL דאָ, וואָס איז אויך צוטריטלעך פון CS50.net-דאָרט 'ס אַ לינק צו עס- איר קענען זען אינפֿאָרמאַציע וועגן ווו צו גיין באזירט אויף דיין לעצטע נאָמען אָדער שולע אַפילייישאַן ווי געזונט ווי עס דערציילט וועגן פּונקט וואָס די ויספרעג וועט דעקן און די טייפּס פון שאלות וואָס איר ניטאָ געגאנגען צו באַקומען. האַלטן אין גייַסט אַז איר וועט אויך האָבן אַ געלעגנהייַט צו באריכטן פֿאַר די ויספרעג אין אָפּטיילונג, אַזוי דיין טפס זאָל זייַן געגאנגען איבער עטלעכע פיר פּראָבלעמס, און אַז ס 'אנדערן גוט געלעגנהייַט צו זען ווו איר נאָך דאַרפֿן צו לערנען זיך פֿאַר די ויספרעג. זאל ס אָנהייבן בייַ די אָנהייב מיט ביץ 'N' ביטעס. געדענק אַ ביסל איז נאָר אַ 0 אָדער אַ 1, און אַ ביטע איז אַ זאַמלונג פון 8 פון יענע ביטן. זאל ס קוק אין דעם זאַמלונג פון ביטן רעכט דאָ. מיר זאָל זייַן ביכולת צו רעכענען אויס ווי פילע ביטן עס זענען. ווו מיר ציילן דאָרט ס נאָר 8 פון זיי, אַכט 0 אָדער 1 וניץ. און זינט עס ס 8 ביטן, אַז ס 1 ביטע, און לאָזן ס בייַטן עס צו העקסאַדעסימאַל. העקסאַדעסימאַל איז באַזע 16, און עס ס שיין גרינג צו בייַטן אַ נומער אין ביינערי, וואָס איז וואָס אַז איז, צו אַ נומער אין העקסאַדעסימאַל. אַלע מיר טאָן איז מיר קוקן אין גרופּעס פון 4, און מיר בייַטן זיי צו די צונעמען העקסאַדעסימאַל ציפֿער. מיר אָנהייבן מיט די רעכט-רובֿ גרופּע פון ​​4, אַזוי 0011. אַז ס 'געגאנגען צו זייַן איינער 1 און איינער 2, אַזוי צוזאַמען וואָס מאכט 3. און דעריבער לאָזן ס קוק בייַ די אנדערע בלאָק פון 4. 1101. אַז ס 'געגאנגען צו זייַן איינער 1, איינער 4, און איינער 8. צוזאַמען אַז ס 'געגאנגען צו זייַן 13, וואָס מאכט די און מיר וועט געדענקען אַז אין העקסאַדעסימאַל מיר טאָן ניט נאָר גיין 0 דורך 9. מיר גיין 0 דורך ף, אַזוי נאָך 9, 10 קאָראַספּאַנדז צו א, 11 צו בייטן, עט סעטעראַ ווו ף איז 15. דאָ 13 איז אַ ד, אַזוי צו בייַטן עס צו דעצימאַל אַלע מיר טאָן איז מיר פאקטיש מייַכל יעדער שטעלע ווי אַ מאַכט פון 2. אַז ס איינער 1, איינער 2, נול 4ס, נול 8ס, איינער 16, עט סעטעראַ, און עס ס אַ ביסל שווער צו צונויפרעכענען אין דיין קאָפּ, אָבער אויב מיר גיין צו די ווייַטער רוק מיר קענען זען די ענטפער צו וואָס. יסענשאַלי מיר רע געגאנגען אַריבער פון רעכט צוריק צו לינקס, און מיר רע מאַלטאַפּלייינג יעדער ציפֿער דורך די קאָראַספּאַנדינג מאַכט פון 2. און געדענקען, פֿאַר העקסאַדעסימאַל מיר דינאָוט די נומערן מיט 0קס אין די אָנהייב אַזוי מיר טאָן ניט צעטומלען עס מיט אַ דעצימאַל נומער. ממשיך אויף, דאָס איז אַ אַסקי טיש, און וואָס מיר נוצן אַסקי פֿאַר איז צו מאַפּע פון ​​אותיות צו נומעריקאַל וואַלועס. געדענקען אין די קריפּטאָגראַפי פּסעט מיר געמאכט ברייט נוצן פון די אַסקי טיש אין סדר צו נוצן פארשידענע מעטהאָדס פון קריפּטאָגראַפי, דער קיסר און דעם וויגענèרע סייפער, צו בייַטן פאַרשידענע אותיות אין אַ שטריקל לויט צו די שליסל געגעבן דורך די באַניצער. זאל ס קוק אין אַ קליין ביסל פון אַסקי מאַט. קוקן בייַ 'פּ' + 1, אין כאַראַקטער פאָרעם וואָס וואָלט זייַן ק, און געדענקען אַז '5 '≠ 5. און ווי פּונקט וואָלט מיר בייַטן צווישן יענע 2 פארמען? עס ס נישט פאקטיש אויך שווער. אין סדר צו באַקומען 5 מיר אַראָפּרעכענען '0 ' ווייַל עס זענען 5 ערטער צווישן די '0 'און די '5.' אין סדר צו גיין די אנדערע וועג מיר נאָר לייגן דעם 0, אַזוי עס ס סאָרט פון ווי רעגולער אַריטמעטיק. נאָר געדענקען אַז ווען עפּעס האט ציטירט אַרום עס עס ס אַ כאַראַקטער און אַזוי קאָראַספּאַנדז צו אַ ווערט אין די אַסקי טיש. מאָווינג אין מער אַלגעמיין קאָמפּיוטער וויסנשאַפֿט סוגיות. מיר געלערנט וואָס אַ אַלגערידאַם איז און ווי מיר נוצן פּראָגראַממינג צו מאַכשער אַלגערידאַמז. עטלעכע ביישפילן פון אַלגערידאַמז זענען עפּעס טאַקע פּשוט ווי קאָנטראָלירונג צי אַ נומער איז אַפֿילו אָדער מאָדנע. פֿאַר וואָס געדענקען מיר מאָד די נומער דורך 2 און טשעק אויב די רעזולטאַט איז 0. אויב אַזוי, עס ס אַפֿילו. אויב נישט, עס ס מאָדנע. און אַז ס אַ בייַשפּיל פון אַ טאַקע יקערדיק אַלגערידאַם. א קליין ביסל פון אַ מער ינוואַלווד איינער איז ביינערי זוכן, וואָס מיר וועט גיין איבער שפּעטער אין די באריכטן סעסיע. און פּראָגראַממינג איז דער טערמין מיר נוצן פֿאַר גענומען אַ אַלגערידאַם און קאַנווערטינג עס צו קאָד די קאָמפּיוטער קענען לייענען. 2 ביישפילן פון פּראָגראַממינג איז סקראַטטש, וואָס איז וואָס מיר האבן אין וואָך 0. אפילו כאָטש מיר טאָן נישט פאקטיש טיפּ אויס דעם קאָד עס ס אַ וועג פון ימפּלאַמענינג דעם אַלגערידאַם, וואָס איז דרוקן די נומערן 1-10, און דאָ מיר טאָן די זעלבע אין די C פּראָגראַממינג שפּראַך. די ביסט פאַנגקשאַנאַלי עקוויוואַלענט, נאָר געשריבן אין פאַרשידענע שפּראַכן אָדער סינטאַקס. מיר דעמאָלט לעאַרנעד וועגן בוליאַן אויסדרוקן, און אַ בוליאַן איז אַ ווערט אַז ס אָדער אמת אָדער פאַלש, און דאָ אָפאַנטיימז בוליאַן אויסדרוקן גיין ין פון באדינגונגען, אַזוי אויב (x ≤ 5), געזונט, מיר שוין שטעלן X = 5, אַזוי אַז צושטאַנד איז געגאנגען צו אָפּשאַצן צו אמת. און אויב עס ס 'אמת, וועלכער קאָד איז ונטער דער צושטאַנד איז געגאנגען צו זייַן עוואַלואַטעד דורך די קאָמפּיוטער, אַזוי אַז שטריקל איז געגאנגען צו זייַן געדרוקט צו נאָרמאַל רעזולטאַט, און דער טערמין צושטאַנד רעפערס צו וועלכער איז ין די קלאַמערן פון דעם אויב סטאַטעמענט. געדענקען אַלע די אָפּערייטערז. געדענק עס ס && און | | ווען מיר רע טריינג צו פאַרבינדן 2 אָדער מער באדינגונגען, == ניט = צו קאָנטראָלירן צי 2 זאכן זענען גלייַך. געדענקען אַז = איז פֿאַר אַסיינמאַנט וועראַז == איז אַ בוליאַן אָפּעראַטאָר. ≤, ≥ און דעריבער די לעצט 2 זענען זיך-יקספּלאַנאַטאָרי. א גענעראַל באריכטן פון בוליאַן לאָגיק דאָ. און בוליאַן אויסדרוקן זענען אויך וויכטיק אין לופּס, וואָס מיר וועט גיין איבער איצט. מיר לעאַרנעד וועגן 3 טייפּס פון לופּס אַזוי ווייַט אין קס50, פֿאַר, בעת, און טאָן בשעת. און עס ס וויכטיק צו וויסן אַז בשעת פֿאַר רובֿ צוועקן מיר קענען פאקטיש נוצן קיין טיפּ פון שלייף בכלל עס זענען זיכער טייפּס פון צוועקן אָדער פּראָסט פּאַטערנז אין פּראָגראַממינג אַז ספּאַסיפיקלי רופן פֿאַר איינער פון די לופּס וואָס מאַכן עס די מערסט עפעקטיוו אָדער עלעגאַנט צו קאָד עס אין אַז וועג. זאל ס גיין איבער וואָס יעדער פון די לופּס טענדז צו זייַן געניצט פֿאַר רובֿ אָפֿט. אין אַ פֿאַר שלייף מיר בכלל שוין וויסן ווי פילע מאל מיר ווילן צו יטעראַטע. אַז ס וואָס מיר שטעלן אין די צושטאַנד. פֿאַר, איך = 0, איך <10, פֿאַר בייַשפּיל. מיר שוין וויסן אַז מיר ווילן צו טאָן עפּעס 10 מאל. איצט, פֿאַר אַ בשעת שלייף, בכלל מיר טאָן ניט דאַווקע וויסן ווי פילע מאל מיר ווילן די שלייף צו לויפן. אבער מיר טאָן וויסן עטלעכע סאָרט פון צושטאַנד אַז מיר ווילן עס צו שטענדיק זייַן אמת אָדער שטענדיק זייַן פאַלש. פֿאַר בייַשפּיל, בשעת איז שטעלן. זאל ס זאָגן אַז ס אַ בוליאַן בייַטעוודיק. בשעת אַז ס 'אמת מיר ווילן די קאָד צו אָפּשאַצן, אַזוי אַ קליין ביסל מער עקסטענסיבלע, אַ קליין ביסל מער אַלגעמיינע ווי אַ פֿאַר שלייף, אָבער קיין פֿאַר שלייף קענען אויך זייַן קאָנווערטעד צו אַ בשעת שלייף. צום סוף, טאָן בשעת לופּס, וואָס זאל זייַן די טריקיאַסט צו באַגרייַפן רעכט אַוועק, זענען אָפֿט געניצט ווען מיר ווילן צו אָפּשאַצן די קאָד ערשטער איידער דער ערשטער צייַט מיר קאָנטראָלירן די צושטאַנד. א פּראָסט נוצן פאַל פֿאַר אַ טאָן בשעת שלייף איז ווען איר ווילן צו באַקומען באַניצער אַרייַנשרייַב, און איר וויסן איר ווילן צו פרעגן די באַניצער פֿאַר אַרייַנשרייַב בייַ מינדסטער אַמאָל, אָבער אויב זיי טאָן ניט געבן איר גוט אַרייַנשרייַב רעכט אַוועק איר ווילן צו האַלטן אַסקינג זיי ביז זיי געבן איר די גוט אַרייַנשרייַב. אַז ס די מערסט פּראָסט נוצן פון אַ טאָן בשעת שלייף, און לאָזן ס קוק בייַ די פאַקטיש סטרוקטור פון די לופּס. זיי טיפּיקלי שטענדיק טענד צו נאָכפאָלגן די פּאַטערנז. אויף די פֿאַר שלייף ין איר האָבן 3 קאַמפּאָונאַנץ: יניטיאַליזאַטיאָן, טיפּיקלי עפּעס ווי ינט איך = 0 ווו איך איז די קאָונטער, צושטאַנד, ווו מיר ווילן צו זאָגן לויפן דעם פֿאַר שלייף ווי לאַנג ווי דעם צושטאַנד נאָך האלט, ווי איך <10, און דעריבער לעסאָף, דערהייַנטיקן, וואָס איז ווי מיר ינקראַמאַנט די קאָונטער בייַטעוודיק בייַ יעדער פונט אין די שלייף. א פּראָסט זאַך צו זען עס איז נאָר איך + +, וואָס מיטל ינקראַמאַנט איך דורך 1 יעדער צייַט. איר קען אויך טאָן עפּעס ווי איך + = 2, וואָס מיטל לייגן 2 צו איך יעדער צייַט איר גיין דורך די שלייף. און דעריבער די טאָן דעם נאָר רעפערס צו קיין קאָד אַז פאקטיש לויפט ווי טייל פון די שלייף. און פֿאַר אַ בשעת שלייף, דאָס מאָל מיר פאקטיש האָבן די יניטיאַליזאַטיאָן אַרויס פון די שלייף, אַזוי פֿאַר בייַשפּיל, לאָזן ס זאָגן מיר רע טריינג צו טאָן די זעלבע טיפּ פון שלייף ווי איך נאָר דיסקרייבד. מיר וואָלט זאָגן ינט איך = 0 איידער די שלייף הייבט. דעמאָלט מיר געקענט זאָגן בשעת איך <10 טאָן דעם, אַזוי דער זעלביקער בלאָק פון קאָד ווי פריער, און דאָס מאָל די דערהייַנטיקן טייל פון דעם קאָד, פֿאַר בייַשפּיל, איך + +, פאקטיש גייט ין פון די שלייף. און לעסאָף, פֿאַר אַ טאָן בשעת, עס ס ענלעך צו די בשעת שלייף, אָבער מיר האָבן צו געדענקען אַז די קאָד וועט אָפּשאַצן אַמאָל איידער דער צושטאַנד איז אָפּגעשטעלט, אַזוי עס מאכט אַ פּלאַץ מער זינען אויב איר קוק בייַ אים אין סדר פון שפּיץ צו דנאָ. אין אַ טאָן בשעת שלייף די קאָד יוואַליוייץ איידער איר אַפֿילו קוקן בייַ די בשעת צושטאַנד, וועראַז אַ בשעת שלייף, עס טשעקס ערשטער. סטייטמאַנץ און וועריאַבאַלז. ווען מיר ווילן צו שאַפֿן אַ נייַ בייַטעוודיק מיר ערשטער ווילן צו ינישאַלייז עס. פֿאַר בייַשפּיל, ינט באַר יניטיאַליזעס די בייַטעוודיק באַר, אָבער עס טוט נישט געבן עס אַ ווערט, אַזוי וואָס איז באַר ס ווערט איצט? מיר טאָן ניט וויסן. עס קען זייַן עטלעכע מיסט ווערט וואָס איז געווען פריער סטאָרד אין זכּרון דאָרט, און מיר טאָן נישט וועלן צו נוצן אַז בייַטעוודיק ביז מיר פאקטיש געבן עס אַ ווערט, אַזוי מיר דערקלערן עס דאָ. דעמאָלט מיר ינישאַלייז עס צו זייַן 42 אונטן. איצט, פון קורס, מיר וויסן דעם קענען זייַן געטאן אויף איין שורה, ינט באַר = 42. אבער נאָר צו זייַן קלאָר די קייפל טריט אַז ביסט געגאנגען אויף, די דערקלערונג און די יניטיאַליזאַטיאָן זענען געשעעניש סעפּעראַטלי דאָ. עס כאַפּאַנז אויף איין שריט, און די ווייַטער איינער, ינט באַז = באַר + 1, דעם סטאַטעמענט ווייטער, אַז ינגקראַמאַנץ באַז, אַזוי אין די סוף פון דעם קאָד פאַרשפּאַרן אויב מיר זענען געווען צו דרוקן די ווערט פון באַז עס וואָלט זייַן 44 ווייַל מיר דערקלערן און ינישאַלייז עס צו זייַן 1> באַר, און דעמאָלט מיר ינקראַמאַנט עס אַמאָל מער מיט די + +. מיר געגאנגען איבער דעם שיין בעקיצער, אָבער עס ס 'גוט צו האָבן אַ גענעראַל פארשטאנד פון וואָס פֿעדעם און געשעענישן זענען. מיר דער הויפּט האט דאָס אין סקראַטטש, אַזוי איר קענען טראַכטן פון פֿעדעם ווי קייפל סיקוואַנסיז פון קאָד פליסנדיק אין דער זעלביקער צייַט. אין אַקטשאַוואַלאַטי, עס מיסטאָמע איז נישט פליסנדיק אין דער זעלביקער צייַט, אָבער סאָרט פון אַבסטראַקטלי מיר קענען טראַכטן פון עס אין אַז וועג. אין סקראַטטש, פֿאַר בייַשפּיל, מיר האט דער קייפל ספּריטעס. עס קען זייַן עקסאַקיוטינג פאַרשידענע קאָד אין דער זעלביקער צייַט. איינער קען זייַן גיין בשעת די אנדערע איז געזאגט עפּעס אין אַ אַנדערש טייל פון דעם עקראַן. געשעענישן זענען אנדערן וועג פון סעפּערייטינג אויס די לאָגיק צווישן פאַרשידענע עלעמענטן פון דיין קאָד, און אין סקראַטטש מיר זענען ביכולת צו סימולירן געשעענישן ניצן די בראָאַדקאַסט, און אַז ס 'פאקטיש ווען איך באַקומען, נישט ווען איך הערן, אָבער יסענשאַלי עס ס אַ וועג צו יבערשיקן אינפֿאָרמאַציע פון איין ספּרייט צו אנדערן. פֿאַר בייַשפּיל, איר זאלט ​​ווילן צו יבערשיקן שפּיל איבער, און ווען אנדערן ספּרייט נעמט שפּיל איבער, עס ריספּאַנדז אין אַ זיכער וועג. עס ס אַ וויכטיק מאָדעל צו פֿאַרשטיין פֿאַר פּראָגראַממינג. נאָר צו גיין איבער די גרונט וואָך 0, וואָס מיר ווע ניטאָ איבער אַזוי ווייַט, לאָזן ס קוק אין דעם פּשוט C פּראָגראַם. דער טעקסט זאל זייַן אַ קליין ביסל קליין פון דאָ, אָבער איך וועט גיין איבער עס טאַקע שנעל. מיר רע אַרייַנגערעכנט 2 כעדער טעקעס בייַ די שפּיץ, קס50.ה און סטדיאָ.ה. מיר רע דעמאָלט דיפיינינג אַ קעסיידערדיק גערופן שיעור צו זייַן 100. מיר רע דעמאָלט ימפּלאַמענינג אונדזער הויפּט פֿונקציע. זינט מיר טאָן ניט נוצן באַפֿעל שורה טענות דאָ מיר דאַרפֿן צו שטעלן פּאָסל ווי די טענות פֿאַר הויפּט. מיר זען ינט אויבן הויפּט. אַז ס די צוריקקומען טיפּ, דערפאר צוריקקומען 0 בייַ די דנאָ. און מיר רע ניצן קס50 ביבליאָטעק פונקציאָנירן באַקומען ינט צו פרעגן די באַניצער פֿאַר אַרייַנשרייַב, און מיר קראָם עס אין דעם בייַטעוודיק X, אַזוי מיר דערקלערן X אויבן, און מיר ינישאַלייז עס מיט X = געטינט. מיר דעמאָלט טשעק צו זען אויב דער באַניצער געגעבן אונדז גוט אַרייַנשרייַב. אויב עס ס ≥ שיעור מיר ווילן צו צוריקקומען אַ טעות קאָד פון 1 און דרוקן אַ טעות אָנזאָג. און לעסאָף, אויב דער באַניצער האט געגעבן אונדז גוט אַרייַנשרייַב מיר רע געגאנגען צו קוואַדראַט דעם נומער און דרוק אויס אַז רעזולטאַט. נאָר צו מאַכן זיכער אַז יענע אַלע שלאָגן היים איר קענען זען די לאַבעלס פון פאַרשידענע טיילן פון דער קאָד דאָ. איך דערמאנט קעסיידערדיק, כעדער טעקעס. אָה, ינט X. מאַכן זיכער צו געדענקען אַז ס אַ היגע בייַטעוודיק. אַז קאַנטראַס עס פון אַ גלאבאלע בייַטעוודיק, וואָס מיר וועט רעדן וועגן אַ קליין ביסל שפּעטער אין די באריכטן סעסיע, און מיר זענען פאַך די ביבליאָטעק פונקציאָנירן פּרינטף, אַזוי אויב מיר האבן נישט אַרייַנגערעכנט די סטדיאָ.ה כעדער טעקע מיר וואָלט ניט זייַן ביכולת צו רופן פּרינטף. און איך גלויבן די פייַל וואָס גאַט שנייַדן אַוועק דאָ איז פּוינטינג צו דער% ד, וואָס איז אַ פאָרמאַטטינג שטריקל אין פּרינטף. עס זאגט דרוקן אויס דעם בייַטעוודיק ווי אַ נומער,% ד. און וואָס איז עס פֿאַר וואָך 0. איצט לוקאַס איז געגאנגען צו פאָרזעצן. היי, גייז. מייַן נאָמען איז לוקאַס. איך בין אַ סאַפמאָר אין דער בעסטער הויז אויף קאַמפּאַס, מאַדער, און איך בין געגאנגען צו רעדן אַ ביסל ביסל וועגן וואָך 1 און 2.1. [וואָך 1 און 2.1!] [לוקאַס פרעיטאַס] ווי לעקסי האט געזאגט, ווען מיר אנגעהויבן איבערזעצן דיין קאָד פון קראַצן צו C איינער פון די זאכן וואָס מיר באמערקט איז אַז איר קענען ניט נאָר שרייַבן דיין קאָד און לויפן עס ניצן אַ גרין פאָן ענימאָר. פאקטיש, איר האָבן צו נוצן עטלעכע טריט צו מאַכן דיין C פּראָגראַם ווערן אַ עקסעקוטאַבלע טעקע. בייסיקלי וואָס איר טאָן ווען איר ניטאָ שרייבן אַ פּראָגראַם איז אַז איר איבערזעצן דיין געדאַנק אין אַ שפּראַך וואָס אַ קאַמפּיילער קענען פֿאַרשטיין, אַזוי ווען איר ניטאָ שרייבן אַ פּראָגראַם אין C וואָס איר ניטאָ טאן איז פאקטיש שרייבן עפּעס אַז אייער קאַמפּיילער איז געגאנגען צו פֿאַרשטיין, און דעמאָלט דער קאַמפּיילער איז געגאנגען צו איבערזעצן אַז קאָד אין עפּעס אַז דיין קאָמפּיוטער וועט פֿאַרשטיין. און די זאַך איז, דיין קאָמפּיוטער איז פאקטיש זייער שטום. דיין קאָמפּיוטער קענען בלויז פֿאַרשטיין 0ס און 1ס, אַזוי פאקטיש אין דער ערשטער קאָמפּיוטערס מענטשן יוזשאַוואַלי פּראָוגראַמד ניצן 0ס און 1ס, אָבער נישט ענימאָר, דאַנקען גאָט. מיר טאָן ניט האָבן צו מעמערייז די סיקוואַנסיז פֿאַר 0ס און 1ס פֿאַר אַ פֿאַר שלייף אָדער פֿאַר אַ בשעת שלייף און אַזוי אויף. אַז ס 'וואָס מיר האָבן אַ קאַמפּיילער. וואָס אַ קאַמפּיילער טוט איז עס בייסיקלי טראַנזלייץ ​​די C קאָד, אין אונדזער פאַל, צו אַ שפּראַך וואָס דיין קאָמפּיוטער וועט פֿאַרשטיין, וואָס איז די כייפעץ קאָד, און דער קאַמפּיילער אַז מיר רע ניצן איז גערופן קלאַנג, אַזוי דאָס איז פאקטיש די סימבאָל פֿאַר קלאַנג. ווען איר האָבן דיין פּראָגראַם, איר האָבן צו טאָן 2 זאכן. ערשטער, איר האָבן צו צונויפנעמען דיין פּראָגראַם, און דאַן איר ניטאָ געגאנגען צו לויפן דיין פּראָגראַם. צו צונויפנעמען דיין פּראָגראַם איר האָבן אַ פּלאַץ פון אָפּציעס צו טאָן אַזוי. דער ערשטער איינער איז צו טאָן קלאַנג פּראָגראַמ.ק אין וואָס פּראָגראַם איז די נאָמען פון דיין פּראָגראַם. אין דעם פאַל איר קענען זען זיי ניטאָ נאָר געזאגט "היי, צונויפנעמען מיין פּראָגראַם". איר ניטאָ ניט געזאגט "איך ווילן דעם נאָמען פֿאַר מיין פּראָגראַם" אָדער עפּעס. די רגע אָפּציע איז געבן אַ נאָמען צו דיין פּראָגראַם. איר קענען זאָגן קלאַנג-אָ און דעמאָלט דער נאָמען וואָס איר ווילן די עקסעקוטאַבלע טעקע צו זייַן געהייסן ווי און דעמאָלט פּראָגראַמ.ק. און איר קענען אויך טאָן מאַכן פּראָגראַם, און זען ווי אין דער ערשטער 2 פאלן איך שטעלן. C, און אין די דריט איינער איך נאָר האָבן מגילה? יאָ, איר פאקטיש זאָל ניט שטעלן. C ווען איר נוצן מאַכן. אַנדערש דער קאַמפּיילער איז פאקטיש געגאנגען צו שרייַען בייַ איר. און אויך, איך טאָן ניט וויסן אויב איר גייז געדענקען, אָבער אַ פּלאַץ פון מאל מיר אויך געניצט-לקס50 אָדער-לם. וואָס איז גערופן פֿאַרבינדונג. עס נאָר דערציילט דער קאַמפּיילער אַז איר וועט נוצן יענע לייברעריז רעכט דאָרט, אַזוי אויב איר ווילן צו נוצן קס50.ה איר פאקטיש האָבן צו טיפּ קלאַנג פּראָגראַמ.ק-לקס50. אויב איר טאָן ניט טאָן אַז, דער קאַמפּיילער איז נישט געגאנגען צו וויסן אַז איר ניטאָ ניצן יענע פאַנגקשאַנז אין קס50.ה. און ווען איר ווילן צו לויפן דיין פּראָגראַם איר האָבן 2 אָפּציעס. אויב איר האט קלאַנג פּראָגראַמ.ק איר האט נישט געבן אַ נאָמען צו דיין פּראָגראַם. איר האָבן צו לויפן עס ניצן. / אַ.אָוט. אַ.אָוט איז אַ נאָרמאַל נאָמען אַז קלאַנג גיט דיין פּראָגראַם אויב איר טאָן ניט געבן עס אַ נאָמען. אַנדערש איר ניטאָ געגאנגען צו טאָן. / פּראָגראַם אויב איר געגעבן אַ נאָמען צו דיין פּראָגראַם, און אויך אויב איר האט מאַכן פּראָגראַם די נאָמען וואָס אַ פּראָגראַם איז געגאנגען צו באַקומען איז שוין געגאנגען צו זייַן פּראָוגראַמד די זעלבע נאָמען ווי די C טעקע. דעמאָלט מיר גערעדט וועגן דאַטן טייפּס און דאַטן. בייסיקלי דאַטן טייפּס זענען די זעלבע זאַך ווי קליין באָקסעס זיי נוצן צו קראָם וואַלועס, אַזוי דאַטן טייפּס זענען פאקטיש פּונקט ווי פּאָקéמאָנס. זיי קומען אין אַלע סיזעס און טייפּס. איך טאָן ניט וויסן אויב אַז אַנאַלאַדזשי מאכט זינען. די דאַטן גרייס פאקטיש דעפּענדס אויף די מאַשין אַרקאַטעקטשער. כל די דאַטן סיזעס אַז איך בין געגאנגען צו ווייַזן דאָ זענען פאקטיש פֿאַר אַ 32-ביסל מאַשין, וואָס איז די פאַל פון אונדזער אַפּפּליאַנסע, אָבער אויב איר זענט פאקטיש קאָודינג דיין מעק אָדער אין אַ פֿענצטער אויך מיסטאָמע איר ניטאָ געגאנגען צו האָבן אַ 64-ביסל מאַשין, אַזוי געדענקען אַז די דאַטן סיזעס אַז איך בין געגאנגען צו ווייַזן דאָ ביסט פֿאַר די 32-ביסל מאַשין. דער ערשטער איין אַז מיר געזען איז געווען אַ ינט, וואָס איז שיין סטרייטפאָרווערד. איר נוצן ינט צו קראָם אַ ינטעגער. מיר אויך געזען דעם כאַראַקטער, די טשאַר. אויב איר ווילן צו נוצן אַ בריוו אָדער אַ ביסל סימבאָל איר ניטאָ מיסטאָמע געגאנגען צו נוצן אַ טשאַר. א טשאַר האט 1 ביטע, וואָס מיטל 8 ביטן, ווי לעקסי געזאגט. בייסיקלי מיר האָבן אַ אַסקי טיש וואָס האט 256 מעגלעך קאַמבאַניישאַנז פון 0ס און 1ס, און דעריבער ווען איר טיפּ אַ טשאַר עס ס געגאנגען צו איבערזעצן די כאַראַקטער וואָס ינפּוץ איר אַ נומער וואָס איר האָבן אין די אַסקי טיש, ווי לעקסי געזאגט. מיר אויך האָבן די לאָזנ שווימען, וואָס מיר נוצן צו קראָם דעצימאַל נומערן. אויב איר ווילן צו קלייַבן 3.14, פֿאַר בייַשפּיל, איר ניטאָ געגאנגען צו נוצן אַ לאָזנ שווימען אָדער אַ טאָפּל וואָס האט מער פּינטלעכקייַט. א לאָזנ שווימען האט 4 ביטעס. א טאָפּל האט 8 ביטעס, אַזוי די בלויז חילוק איז די פּינטלעכקייַט. מיר אויך האָבן אַ לאַנג וואָס איז געניצט פֿאַר ינטאַדזשערז, און איר קענען זען פֿאַר אַ 32-ביסל מאַשין אַ ינט און אַ לאַנג האָבן די זעלבע גרייס, אַזוי עס טוט ניט טאַקע מאַכן זינען צו נוצן אַ לאַנג אין אַ 32-ביסל מאַשין. אבער אויב איר ניטאָ ניצן אַ מעק און 64-ביסל מאַשין, פאקטיש אַ לאַנג האט נומער 8, אַזוי עס טאַקע דעפּענדס אויף די אַרקאַטעקטשער. פֿאַר די 32-ביסל מאַשין עס טוט נישט מאַכן זינען צו נוצן אַ לאַנג טאַקע. און דעמאָלט אַ לאַנג לאַנג, אויף די אנדערע האַנט, האט 8 ביטעס, אַזוי עס איז זייער גוט אויב איר ווילן צו האָבן אַ מער ינטעגער. און לעסאָף, מיר האָבן שטריקל, וואָס איז פאקטיש אַ טשאַר *, וואָס איז אַ טייַטל צו אַ טשאַר. עס ס זייער גרינג צו טראַכטן אַז די גרייס פון דעם שטריקל איז געגאנגען צו זייַן ווי די נומער פון אותיות וואָס איר האָט עס, אָבער פאקטיש די טשאַר * זיך האט דער גרייס פון אַ טייַטל צו אַ טשאַר, וואָס איז 4 ביטעס. די גרייס פון אַ טשאַר * איז 4 ביטעס. עס טוט נישט ענין אויב איר האָבן אַ קליין וואָרט אָדער אַ בריוו אָדער עפּעס. עס ס געגאנגען צו זייַן 4 ביטעס. מיר אויך געלערנט אַ קליין ביסל וועגן קאַסטינג, אַזוי ווי איר קענען זען, אויב איר האָבן, פֿאַר בייַשפּיל, אַ פּראָגראַם וואָס זאגט ינט X = 3 און דאַן פּרינטף ("% ד", X / 2) טאָן איר גייז וויסן וואָס עס ס געגאנגען צו דרוקן אויף פאַרשטעלן? עמעצער? >> [סטודענטן] 2. 1. >> 1, יאָ. ווען איר טאָן 3/2 עס ס געגאנגען צו באַקומען 1.5, אָבער זינט מיר רע ניצן אַ ינטעגער עס ס געגאנגען צו איגנאָרירן די דעצימאַל טייל, און איר ניטאָ געגאנגען צו האָבן 1. אויב איר טאָן ניט וועלן, אז צו פּאַסירן וואָס איר קענען טאָן, פֿאַר בייַשפּיל, איז דערקלערן אַ לאָזנ שווימען י = X. דעמאָלט X אַז געניצט צו זייַן 3 איז איצט געגאנגען צו זייַן 3.000 אין י. און דאַן איר קענען דרוקן דעם י / 2. פאקטיש, איך זאָל האָבן אַ 2. איבער דאָרט. עס ס געגאנגען צו טאָן 3.00/2.00, און איר ניטאָ געגאנגען צו באַקומען 1.5. און מיר האָבן דעם .2 F נאָר צו פרעגן פֿאַר 2 דעצימאַל וניץ אין די דעצימאַל טייל. אויב איר האָט .3 F עס ס געגאנגען צו האָבן פאקטיש 1.500. אויב עס ס 2 עס ס געגאנגען צו זייַן 1.50. מיר אויך האָבן דעם פאַל דאָ. אויב איר טאָן לאָזנ שווימען X = 3.14 און דאַן איר פּרינטף X איר ניטאָ געגאנגען צו באַקומען 3.14. און אויב איר טאָן X = דער ינט פון X, וואָס מיטל מייַכל X ווי אַ ינט און איר דרוקן X איצט איר ניטאָ געגאנגען צו האָבן 3.00. טוט וואָס מאַכן זינען? ווייַל איר ניטאָ ערשטער טרעאַטינג X ווי אַ ינטעגער, אַזוי איר ניטאָ יגנאָרינג די דעצימאַל טייל, און דאַן איר ניטאָ דרוקן X. און לעסאָף, איר קענען אויך טאָן דעם, ינט X = 65, און דאַן איר דערקלערן אַ טשאַר C = X, און דעריבער אויב איר דרוקן די C איר ניטאָ פאקטיש געגאנגען צו באַקומען א, אַזוי בייסיקלי וואָס איר ניטאָ טאן דאָ איז איבערזעצן די ינטעגער אין די כאַראַקטער, פּונקט ווי די אַסקי בּלאַט טוט. מיר אויך גערעדט וועגן מאַט אָפּערייטערז. רובֿ פון זיי זענען שיין סטרייטפאָרווערד, אַזוי +, -, *, /, און אויך מיר גערעדט וועגן מאָד, וואָס איז די רעשט פון אַ טייל פון 2 נומערן. אויב איר האָט 10% 3, פֿאַר בייַשפּיל, עס מיטל טיילן 10 דורך 3, און וואָס איז די רעשט? עס ס געגאנגען צו זייַן 1, אַזוי עס ס 'פאקטיש זייער נוצלעך פֿאַר אַ פּלאַץ פון די מגילה. פֿאַר וויגענèרע און קיסר איך בין שיין זיכער אַז אַלע פון ​​איר גייז געניצט מאָד. וועגן מאַט אָפּערייטערז, זייַן זייער אָפּגעהיט ווען קאַמביינינג * און /. פֿאַר בייַשפּיל, אויב איר טאָן (3/2) * 2 וואָס זענען איר געגאנגען צו באַקומען? [סטודענטן] 2. יאָ, 2, ווייַל 3/2 איז געגאנגען צו זייַן 1.5, אָבער זינט איר ניטאָ טאן אַפּעריישאַנז צווישן 2 ינטאַדזשערז איר ניטאָ פאקטיש נאָר געגאנגען צו באַטראַכטן 1, און דעמאָלט 1 * 2 איז געגאנגען צו זייַן 2, אַזוי זייַן זייער, זייער אָפּגעהיט ווען טאן אַריטמעטיק מיט ינטאַדזשערז ווייַל איר זאל באַקומען אַז 2 = 3, אין אַז פאַל. און אויך זייַן זייער אָפּגעהיט וועגן פאָרהאַנט. איר זאָל יוזשאַוואַלי נוצן קלאַמערן צו זייַן זיכער אַז איר וויסן וואָס איר ניטאָ טאן. עטלעכע נוצלעך שאָרטקאַץ, פון קורס, איינער איז איך + + אָדער איך + = 1 אָדער ניצן + =. וואָס איז די זעלבע זאַך ווי טאן איך = איך + 1. איר קענען אויך טאָן איך - אָדער איך - = 1, וואָס איז די זעלבע זאַך ווי איך = איך -1, עפּעס איר גייז נוצן אַ פּלאַץ אין פֿאַר לופּס, בייַ מינדסטער. אויך, פֿאַר *, אויב איר נוצן * = און אויב איר טאָן, פֿאַר בייַשפּיל, איך * = 2 איז די זעלבע זאַך ווי זאגן איך = איך * 2, און די זעלבע זאַך פֿאַר טייל. אויב איר טאָן איך / = 2 עס ס די זעלבע זאַך ווי איך = איך / 2. איצט וועגן פאַנגקשאַנז. איר גייז געלערנט אַז פאַנגקשאַנז זענען אַ זייער גוט סטראַטעגיע צו ראַטעווען קאָד בשעת איר ניטאָ פּראָגראַממינג, אַזוי אויב איר ווילן צו דורכפירן די זעלבע אַרבעט אין קאָד ווידער און ווידער, מיסטאָמע איר ווילן צו נוצן אַ פֿונקציע נאָר אַזוי איר טאָן ניט האָבן צו צייכענען און פּאַפּ די קאָד איבער און איבער ווידער. פאקטיש, הויפּט איז אַ פֿונקציע, און ווען איך ווייַזן איר דעם פֿאָרמאַט פון אַ פֿונקציע איר ניטאָ געגאנגען צו זען אַז וואָס איז שיין קלאָר ווי דער טאָג. מיר אויך נוצן פאַנגקשאַנז פון עטלעכע לייברעריז, פֿאַר בייַשפּיל, פּרינטף, געטין, וואָס איז פון די קס50 ביבליאָטעק, און אנדערע פאַנגקשאַנז ווי טאָופּפּער. אַלע פון ​​יענע פאַנגקשאַנז זענען פאקטיש ימפּלאַמענטאַד אין אנדערע לייברעריז, און ווען איר שטעלן יענע טעדער טעקעס אין די אָנהייב פון דיין פּראָגראַם איר ניטאָ זאגן קענען איר ביטע געבן מיר דעם קאָד פֿאַר יענע פאַנגקשאַנז אַזוי איך טאָן ניט האָבן צו מאַכשער זיי דורך זיך? און איר קענען אויך שרייַבן דיין אייגן פאַנגקשאַנז, אַזוי ווען איר אָנהייב פּראָגראַממינג איר פאַרשטיין אַז לייברעריז טאָן ניט האָבן אַלע די פאַנגקשאַנז אַז איר דאַרפֿן. פֿאַר די לעצטע פּסעט, פֿאַר בייַשפּיל, מיר געשריבן ציען, שטופּנ, און לאָאָקופּ, און עס ס 'זייער, זייער וויכטיק צו זייַן ביכולת צו שרייַבן פאַנגקשאַנז ווייַל זיי זענען נוצלעך, און מיר נוצן זיי אַלע די צייַט אין פּראָגראַממינג, און עס סאַוועס אַ פּלאַץ פון קאָד. די פֿאָרמאַט פון אַ פֿונקציע איז דאָס איין. מיר האָבן צוריקקומען טיפּ אין די אָנהייב. וואָס איז די צוריקקומען טיפּ? עס ס נאָר ווען דיין פֿונקציע איז געגאנגען צו צוריקקומען. אויב איר האָבן אַ פֿונקציע, פֿאַר בייַשפּיל, פאַקטאָריאַל, וואָס איז געגאנגען צו רעכענען אַ פאַקטאָריאַל פון אַ ינטעגער, מיסטאָמע עס ס געגאנגען צו צוריקקומען אַן ינטעגער אויך. דעריבער די צוריקקומען טיפּ איז געגאנגען צו זייַן ינט. פּרינטף פאקטיש האט אַ צוריקקומען טיפּ פּאָסל ווייַל איר ניטאָ ניט אומגעקערט עפּעס. איר רע נאָר דרוקן דאס צו די פאַרשטעלן און קוויטינג די פֿונקציע דערנאָכדעם. דעמאָלט איר האָבן די נאָמען פון די פֿונקציע אַז איר קענען קלייַבן. איר זאָל זייַן אַ ביסל גלייַך, ווי טאָן ניט קלייַבן אַ נאָמען ווי קסיז אָדער ווי קס2ף. פּרובירן צו מאַכן זיך אַ נאָמען וואָס מאכט זינען. פֿאַר בייַשפּיל, אויב עס ס פאַקטאָריאַל, זאָגן פאַקטאָריאַל. אויב עס ס אַ פֿונקציע וואָס איז געגאנגען צו ציען עפּעס, נאָמען עס ציען. און דעמאָלט מיר האָבן די פּאַראַמעטערס, וואָס זענען אויך גערופן טענות, וואָס זענען ווי די רעסורסן אַז אייער פונקציאָנירן דאַרף פון דיין קאָד צו דורכפירן זייַן אַרבעט. אויב איר ווילן צו רעכענען די פאַקטאָריאַל פון אַ נומער מיסטאָמע איר דאַרפֿן צו האָבן אַ נומער צו רעכענען אַ פאַקטאָריאַל. איינער פון די טענות אַז איר ניטאָ געגאנגען צו האָבן איז די נומער זיך. און דעמאָלט עס ס געגאנגען צו טאָן עפּעס און צוריקקומען די ווערט בייַ די סוף סייַדן עס ס אַ פּאָסל פונקציאָנירן. זאל ס זען אַ בייַשפּיל. אויב איך ווילן צו שרייַבן אַ פֿונקציע וואָס סאַמז אַלע די נומערן אין אַ מענגע פון ​​ינטאַדזשערז, ערשטער פון אַלע, די צוריקקומען טיפּ איז געגאנגען צו זייַן ינט ווייַל איך האָבן אַ מענגע פון ​​ינטאַדזשערז. און דעמאָלט איך בין געגאנגען צו האָבן די פֿונקציע נאָמען ווי סומאַררייַ, און דעמאָלט עס ס געגאנגען צו נעמען די מענגע זיך, צו ינט נומס, און דעריבער די לענג פון די מענגע אַזוי איך וויסן ווי פילע נומערן איך האָבן צו סאַכאַקל. דעמאָלט איך האָבן צו ינישאַלייז אַ בייַטעוודיק גערופן סאַכאַקל, פֿאַר בייַשפּיל, צו 0, און יעדער מאָל איך זען אַן עלעמענט אין דער מענגע איך זאָל לייגן עס צו סאַכאַקל, אַזוי איך האט אַ פֿאַר שלייף. פּונקט ווי לעקסי געזאגט, איר טאָן ינט איך = 0, איך <לענג און איך + +. און פֿאַר יעדער עלעמענט אין דער מענגע איך האט סאַכאַקל + = נומס [איך], און דעמאָלט איך אומגעקערט די סאַכאַקל, אַזוי עס ס 'זייער פּשוט, און עס סאַוועס אַ פּלאַץ פון קאָד אויב איר ניטאָ ניצן דעם פֿונקציע אַ פּלאַץ פון מאל. דעמאָלט מיר גענומען אַ קוק בייַ באדינגונגען. מיר האָבן אויב, אַנדערש, און אַנדערש אויב. זאל ס זען וואָס איז דער חילוק צווישן יענע. נעמען אַ קוק אין די 2 קאָודז. וואָס איז דער חילוק צווישן זיי? דער ערשטער איינער האט-בייסיקלי די קאָודז ווילן איר צו זאָגן אויב אַ נומער איז +, -, אָדער 0. דער ערשטער איינער זאגט אויב עס ס> 0 דעמאָלט עס ס positive. אויב עס ס = צו 0 דעמאָלט עס ס 0, און אויב עס ס <0 דעמאָלט עס ס נעגאַטיוו. און די אנדערע איינער איז טאן אויב, אַנדערש אויב, אַנדערש. די חילוק צווישן די צוויי איז אַז דאָס איינער איז פאקטיש געגאנגען צו טשעק אויב> 0, <0 אָדער = 0 דרייַ מאל, אַזוי אויב איר האָבן די נומער 2, פֿאַר בייַשפּיל, עס ס געגאנגען צו קומען דאָ און זאָגן אויב (X> 0), און עס ס געגאנגען צו זאָגן יאָ, אַזוי איך דרוק positive. אבער אַפֿילו כאָטש איך וויסן אַז עס ס> 0 און עס ס ניט געגאנגען צו זייַן 0 אָדער <0 איך בין נאָך געגאנגען צו טאָן איז עס 0, איז עס <0, אַזוי איך בין פאקטיש געגאנגען ין פון יפס אַז איך האט ניט האָבן צו ווייַל איך שוין וויסן אַז עס ס ניט געגאנגען צו באַפרידיקן קיין פון די באדינגונגען. איך קענען נוצן דעם אויב, אַנדערש אויב, אַנדערש סטאַטעמענט. עס בייסיקלי זאגט אויב X = 0 איך דרוק דעם positive. אויב עס ס נישט, איך בין געגאנגען צו אויך פּרובירן דאָס. אויב עס ס 2 ניט איך בין געגאנגען צו טאָן דעם. בייסיקלי אויב איך האט X = 2 איר וואָלט זאָגן אויב (X> 0), יאָ, אַזוי דרוקן דעם. איצט אַז איך וויסן אַז עס ס> 0 און אַז עס צופֿרידן דער ערשטער אויב איך בין נישט אַפֿילו געגאנגען צו לויפן דעם קאָד. די קאָד לויפט פאַסטער, פאקטיש, 3 מאל פאַסטער אויב איר נוצן דעם. מיר אויך געלערנט וועגן און און אָדער. איך בין נישט געגאנגען צו גיין דורך דעם ווייַל לעקסי שוין גערעדט וועגן זיי. עס ס נאָר די && און | | אָפּעראַטאָר. דער בלויז זאַך איך וועט זאָגן איז זייַן אָפּגעהיט ווען איר האָבן 3 באדינגונגען. ניצן קלאַמערן ווייַל עס ס 'זייער קאַנפיוזינג ווען איר האָט אַ צושטאַנד און אנדערן איינער אָדער אנדערן איינער. ניצן קלאַמערן נאָר צו זייַן זיכער אַז דיין באדינגונגען מאַכן זינען ווייַל אין אַז פאַל, פֿאַר בייַשפּיל, איר קענען ימאַדזשאַן אַז עס קען זייַן די ערשטער צושטאַנד און איינער אָדער די אנדערע אָדער די 2 באדינגונגען קאַמביינד אין אַן און אָדער די דריט איינער, אַזוי נאָר זייַן אָפּגעהיט. און לעסאָף, מיר גערעדט וועגן סוויטשיז. א באַשטימען איז זייער נוצלעך ווען איר האָט אַ בייַטעוודיק. זאל ס זאָגן אַז איר האָט אַ בייַטעוודיק ווי N וואָס קענען זייַן 0, 1, אָדער 2, און פֿאַר יעדער פון יענע פאלן איר ניטאָ געגאנגען צו דורכפירן אַ אַרבעט. איר קענען זאָגן באַשטימען די בייַטעוודיק, און עס ינדיקייץ אַז די ווערט דעמאָלט איז ווי וואַלוע1 איך בין געגאנגען צו טאָן דאָס, און דעמאָלט איך ברעכן, וואָס מיטל איך בין נישט געגאנגען צו קוקן אין קיין פון די אנדערע פאלן ווייַל מיר שוין צופֿרידן אַז פאַל און דעמאָלט וואַלוע2 און אַזוי אויף, און איך אויך קענען האָבן אַ פעליקייַט באַשטימען. אַז מיטל אויב עס טוט ניט באַפרידיקן קיין פון די פאלן, וואס איך האט אַז איך בין געגאנגען צו טאָן עפּעס אַנדערש, אָבער אַז ס אַפּשאַנאַל. אַז ס אַלע פֿאַר מיר. איצט לאָזן ס האָבן טאַמי. אַלע רעכט, דאָס איז געגאנגען צו זייַן וואָך 3-יידישע. דאס זענען עטלעכע פון ​​די סוגיות מיר וועט זייַן קאַווערינג, קריפּטאָו, פאַרנעם, ערייז, עט סעטעראַ. נאָר אַ שנעל וואָרט אויף קריפּטאָו. מיר ניטאָ ניט געגאנגען צו האַמער דעם היים. מיר האט דאָס אין פּסעט 2, אָבער פֿאַר די ויספרעג מאַכן זיכער איר וויסן דעם חילוק צווישן די קיסר סייפער און די וויגענèרע סייפער, ווי ביידע פון ​​יענע סיפערס אַרבעט און וואָס עס ס ווי צו ינקריפּט און דעקריפּט טעקסט ניצן יענע 2 סיפערס. געדענקען, דער קיסר סייפער פשוט ראָוטייץ יעדער כאַראַקטער דורך די זעלבע סומע, מאכן זיכער איר מאָד דורך די נומער פון אותיות אין די אלפאבעט. און די וויגענèרע סייפער, אויף די אנדערע האַנט, ראָוטייץ יעדער כאַראַקטער דורך אַ אַנדערש סומע, אַזוי אלא ווי געזאגט יעדער כאַראַקטער ראָוטייטיד דורך 3 וויגענèרע וועט דרייען יעדער כאַראַקטער דורך אַ אַנדערש סומע דיפּענדינג אויף עטלעכע קיווערד ווו יעדער בריוו אין די קיווערד רעפּראַזענץ עטלעכע פאַרשידענע סומע צו דרייען דעם קלאָר טעקסט דורך. זאל ס ערשטער רעדן וועגן בייַטעוודיק פאַרנעם. עס זענען 2 פאַרשידענע טייפּס פון וועריאַבאַלז. מיר האָבן היגע וועריאַבאַלז, און די ביסט געגאנגען צו זייַן דיפיינד אַרויס פון הויפּט אָדער אַרויס קיין פֿונקציע אָדער פאַרשפּאַרן, און די וועט זייַן צוטריטלעך ערגעץ אין דיין פּראָגראַם. אויב איר האָבן אַ פונקציאָנירן און אין וואָס פונקציאָנירן איז אַ בשעת שלייף די גרויס גלאבאלע בייַטעוודיק איז צוטריטלעך אומעטום. א היגע בייַטעוודיק, אויף די אנדערע האַנט, איז סקאָפּעד צו דער אָרט ווו עס איז דיפיינד. אויב איר האָבן אַ פֿונקציע דאָ, פֿאַר בייַשפּיל, מיר האָבן דעם פֿונקציע ג, און ין פון ג עס איז אַ בייַטעוודיק דאָ גערופן י, און אַז מיטל אַז דאָס איז אַ היגע בייַטעוודיק. אפילו כאָטש דעם בייַטעוודיק איז גערופן י און דעם בייַטעוודיק איז גערופן י די 2 פאַנגקשאַנז האָבן קיין געדאַנק וואָס יעדער אנדערע ס היגע וועריאַבאַלז זענען. אויף די אנדערע האַנט, זיך דאָ מיר זאָגן ינט X = 5, און דאָס איז אַרויס דער פאַרנעם פון קיין פונקציאָנירן. עס ס אַרויס דעם פאַרנעם פון הויפּט, אַזוי דאָס איז אַ גלאבאלע בייַטעוודיק. אַז מיטל וואָס ין פון די 2 פאַנגקשאַנז ווען איך זאָגן X - אָדער X + + איך בין אַקסעסינג דער זעלביקער X ווערביי דעם י און דעם י זענען פאַרשידענע וועריאַבאַלז. אַז ס די חילוק צווישן אַ גלאבאלע בייַטעוודיק און אַ היגע בייַטעוודיק. ווי ווייַט ווי פּלאַן איז זארגן, מאל עס ס מיסטאָמע אַ בעסער געדאַנק צו האַלטן וועריאַבאַלז היגע ווען איר עפשער קענען זינט ווייל אַ בינטל פון גלאבאלע וועריאַבאַלז קענען באַקומען טאַקע קאַנפיוזינג. אויב איר האָבן אַ בינטל פון פאַנגקשאַנז אַלע מאַדאַפייינג די זעלבע זאַך איר זאל פאַרגעסן וואָס אויב דאָס פונקציאָנירן אַקסאַדענאַלי מאַדאַפייז דעם גלאבאלע, און דאָס אנדערע פֿונקציע טוט ניט וויסן וועגן אים, און עס טוט באַקומען שיין קאַנפיוזינג ווי איר באַקומען מער קאָד. בעכעסקעם וועריאַבאַלז היגע ווען איר עפשער קענען איז נאָר גוט פּלאַן. ערייז, געדענקען, זענען פשוט רשימות פון עלעמענטן פון דער זעלביקער טיפּ. ין פון סי קענען נישט האָבן אַ רשימה ווי 1, 2.0, העלא. מיר נאָר קענען נישט טאָן אַז. ווען מיר דערקלערן אַ מענגע אין C אַלע פון ​​די עלעמענטן האָבן צו זייַן פון דער זעלביקער טיפּ. דאָ איך האָבן אַ מענגע פון ​​3 ינטאַדזשערז. דאָ איך האָבן די לענג פון די מענגע, אָבער אויב איך בין נאָר דיקלערינג עס אין דעם סינטאַקס ווו איך ספּעציפיצירן וואָס אַלע פון ​​די עלעמענטן זענען איך טאָן ניט טעקניקלי דאַרפֿן דעם 3. דער קאַמפּיילער איז קלוג גענוג צו רעכענען אויס ווי גרויס די מענגע זאָל זייַן. איצט ווען איך ווילן צו באַקומען אָדער שטעלן די ווערט פון אַ מענגע דאָס איז די סינטאַקס צו טאָן וואָס. דאס וועט פאקטיש מאָדיפיצירן די רגע עלעמענט פון דער מענגע ווייַל, געדענקען, נאַמבערינג סטאַרץ בייַ 0, נישט בייַ 1. אויב איך ווילן צו לייענען וואָס ווערט איך קענען זאָגן עפּעס ווי ינט X = מענגע [1]. אָדער אויב איך ווילן צו שטעלן וואָס ווערט, ווי איך בין טאן דאָ, איך קענען זאָגן מענגע [1] = 4. אַז צייַט אַקסעסינג יסודות דורך זייער אינדעקס אָדער זייער שטעלע אָדער ווו זיי זענען אין די מענגע, און אַז ליסטינג סטאַרץ בייַ 0. מיר קענען אויך האָבן ערייז פון ערייז, און דאָס איז גערופן אַ מאַלטי-דימענשאַנאַל מענגע. ווען מיר האָבן אַ מאַלטי-דימענשאַנאַל מענגע אַז מיטל מיר קענען האָבן עפּעס ווי ראָוז און שפאלטן, און דאָס איז נאָר איין וועג פון וויזשוואַלייזינג דעם אָדער טראכטן וועגן אים. ווען איך האָבן אַ מאַלטי-דימענשאַנאַל מענגע אַז מיטל איך בין געגאנגען צו אָנהייבן נידינג מער ווי 1 אינדעקס ווייַל אויב איך האָבן אַ גריד נאָר זאגן וואָס רודערן איר ניטאָ אין טוט נישט געבן אונדז אַ נומער. אַז ס 'טאַקע נאָר געגאנגען צו געבן אונדז אַ רשימה פון נומערן. זאל ס זאָגן איך האָבן דעם מענגע דאָ. איך האָבן אַ מענגע גערופן גריד, און איך בין זאגן עס ס 2 ראָוז און 3 שפאלטן, און אַזוי דאָס איז איין וועג פון וויזשוואַלייזינג עס. ווען איך זאָגן איך ווילן צו באַקומען די עלעמענט אין [1] [2] אַז מיטל אַז ווייַל די ביסט ראָוז ערשטער און דעמאָלט שפאלטן איך בין געגאנגען צו שפּרינגען צו רודערן 1 זינט איך געזאגט 1. דעמאָלט איך בין געגאנגען צו קומען איבער דאָ צו זייַל 2, און איך בין געגאנגען צו באַקומען די ווערט 6. מאַכן זינען? Multi-דימענשאַנאַל ערייז, געדענקען, זענען טעקניקלי נאָר אַ מענגע פון ​​ערייז. מיר קענען האָבן ערייז פון ערייז פון ערייז. מיר קענען האַלטן געגאנגען, אָבער טאַקע איין וועג צו טראַכטן וועגן ווי דאָס איז זייַענדיק געלייגט אויס און וואָס ס 'געגאנגען אויף איז צו וויזשוואַלייז עס אין אַ גריד ווי דעם. ווען מיר פאָרן ערייז צו פאַנגקשאַנז, זיי ניטאָ געגאנגען צו ביכייוו אַ קליין ביסל דיפערענטלי ווי ווען מיר פאָרן רעגולער וועריאַבאַלז צו פאַנגקשאַנז ווי גייט פארביי אַ ינט אָדער אַ לאָזנ שווימען. ווען מיר פאָרן אין אַ ינט אָדער טשאַר אָדער קיין פון די אנדערע דאַטן טייפּס מיר נאָר גענומען אַ קוק אין אויב די פֿונקציע מאַדאַפייז די ווערט פון וואָס בייַטעוודיק אַז ענדערונג איז נישט געגאנגען צו פאַרמערן אַרויף צו די פאַך פונקציאָנירן. מיט אַ מענגע, אויף די אנדערע האַנט, וואָס וועט פּאַסירן. אויב איך פאָרן אין אַ מענגע צו עטלעכע פונקציאָנירן און וואָס פונקציאָנירן ענדערונגען עטלעכע פון ​​די עלעמענטן, ווען איך קומען צוריק אַרויף צו די פֿונקציע אַז גערופן עס מיין מענגע איז איצט געגאנגען צו זייַן אַנדערש, און די וואָקאַבולאַרי פֿאַר וואָס איז ערייז זענען דורכגעגאנגען דורך דערמאָנען, ווי מיר וועט זען שפּעטער. דאס איז שייַכות צו ווי פּוינטערז אַרבעט, ווו די גרונט דאַטן טייפּס, אויף די אנדערע האַנט, זענען דורכגעגאנגען דורך ווערט. מיר קענען טראַכטן פון וואָס ווי מאכן אַ קאָפּיע פון ​​עטלעכע בייַטעוודיק און דעמאָלט גייט פארביי אין די קאָפּיע. עס טוט נישט ענין וואָס מיר טאָן מיט וואָס בייַטעוודיק. די פאַך פונקציאָנירן וועט נישט זייַן אַווער אַז עס איז געווען געביטן. ערייז זענען נאָר אַ קליין ביסל אַנדערש אין אַז אַכטונג. פֿאַר בייַשפּיל, ווי מיר נאָר געזען, הויפּט איז פשוט אַ פֿונקציע וואָס קענען נעמען אין 2 טענות. דער ערשטער אַרגומענט צו דער הויפּט פֿונקציע איז אַרגק, אָדער די נומער פון טענות, און די רגע אַרגומענט איז גערופן אַרגוו, און יענע זענען די פאַקטיש וואַלועס פון יענע טענות. זאל ס זאָגן איך האָבן אַ פּראָגראַם גערופן טהיס.ק, און איך זאָגן מאַכן דעם, און איך בין געגאנגען צו לויפן דעם אין די באַפֿעל שורה. איצט צו פאָרן אין עטלעכע טענות צו מיין פּראָגראַם גערופן דעם, איך קען זאָגן עפּעס ווי. / דעם איז קס 50. דאס איז וואָס מיר ימאַדזשאַן דוד צו טאָן יעדער טאָג בייַ דער וואָקזאַל. אבער איצט דער הויפּט פֿונקציע ין פון וואָס פּראָגראַם האט די וואַלועס, אַזוי אַרגק איז 4. עס זאל זייַן אַ ביסל קאַנפיוזינג ווייַל טאַקע מיר רע בלויז גייט פארביי אין איז קס 50. אַז ס נאָר 3. אבער געדענקען, אז דער ערשטער עלעמענט פון אַרגוו אָדער דער ערשטער אַרגומענט איז די נאָמען פון די פֿונקציע זיך. אַזוי אַז מיטל וואָס מיר האָבן 4 זאכן דאָ, און דער ערשטער עלעמענט איז געגאנגען צו זייַן. / דעם. און דאָס וועט זייַן רעפּריזענטיד ווי אַ שטריקל. דעריבער די רוען עלעמענטן זענען וואָס מיר טייפּט אין נאָך די נאָמען פון דעם פּראָגראַם. אַזוי נאָר ווי אַ באַזונדער, ווי מיר מיסטאָמע געזען אין פּסעט 2, געדענקען אַז די שטריקל 50 איז ≠ די ינטעגער 50. אַזוי מיר קענען נישט זאָגן עפּעס ווי, 'ינט X = אַרגוו 3.' אַז ס נאָר ניט געגאנגען צו מאַכן זינען, ווייַל דאָס איז אַ שטריקל, און דאָס איז אַ ינטעגער. אַזוי אויב איר ווילן צו בייַטן צווישן די 2, געדענקען, מיר רע געגאנגען צו האָבן דעם מאַגיש פונקציאָנירן גערופן אַטאָי. וואָס נעמט אַ שטריקל און קערט די ינטעגער רעפּריזענטיד ין פון וואָס שטריקל. אַזוי אַז ס 'אַ גרינג גרייַז צו מאַכן אויף די ויספרעג, נאָר טראכטן אַז דאָס וועט אויטאָמאַטיש זייַן די ריכטיק טיפּ. אבער נאָר וויסן אַז די וועט שטענדיק זייַן סטרינגס אַפֿילו אויב די שטריקל נאָר כּולל אַ ינטעגער אָדער אַ כאַראַקטער אָדער אַ לאָזנ שווימען. אַזוי איצט לאָזן ס רעדן וועגן פליסנדיק צייַט. ווען מיר האָבן אַלע די אַלגערידאַמז אַז טאָן אַלע די משוגע זאכן, עס ווערט טאַקע נוצלעך צו פרעגן די קשיא, "ווי לאַנג טאָן זיי נעמען?" מיר פאָרשטעלן אַז מיט עפּעס גערופן אַסימפּטאָטיק נאָוטיישאַן. אַזוי דעם מיטל וואָס - געזונט, לאָזן ס זאָגן מיר געבן אונדזער אַלגערידאַם עטלעכע טאַקע, טאַקע, טאַקע גרויס אַרייַנשרייַב. מיר ווילן צו פרעגן די קשיא, "ווי לאַנג איז עס געגאנגען צו נעמען? ווי פילע טריט וועט עס נעמען אונדזער אַלגערידאַם צו לויפן ווי אַ פֿונקציע פון ​​די גרייס פון דעם אַרייַנשרייַב? " אַזוי דער ערשטער וועג מיר קענען באַשרייַבן לויפן צייַט איז מיט גרויס אָו און דאָס איז אונדזער ערגסט-פאַל פליסנדיק צייַט. אַזוי אויב מיר ווילן צו סאָרט אַ מענגע, און מיר געבן אונדזער אַלגערידאַם אַ מענגע אַז ס אין אראפנידערן סדר ווען עס זאָל זייַן אין אַסענדינג סדר, אַז ס 'געגאנגען צו זייַן די ערגסט פאַל. דאס איז אונדזער אויבערשטער געבונדן אין די מאַקסימום לענג פון צייַט אונדזער אַלגערידאַם וועט נעמען. אויף די אנדערע האַנט, דעם Ω איז געגאנגען צו באַשרייַבן בעסטער-פאַל פליסנדיק צייַט. אַזוי אויב מיר געבן אַן שוין אויסגעשטעלט מענגע צו אַ סאָרטינג אַלגערידאַם, ווי לאַנג וועט עס נעמען צו סאָרט עס? און דעם, דעמאָלט, באשרייבט אַ נידעריקער געבונדן אויף פליסנדיק צייַט. אַזוי דאָ זענען נאָר עטלעכע ווערטער וואָס באַשרייַבן עטלעכע פּראָסט פליסנדיק מאל. די ביסט אין אַסענדינג סדר. די פאַסטאַסט פליסנדיק צייַט מיר האָבן איז גערופן קעסיידערדיק. אַז מיטל קיין ענין ווי פילע יסודות מיר געבן אונדזער אַלגערידאַם, קיין ענין ווי גרויס אונדזער מענגע איז, סאָרטינג עס אָדער טאן וועלכער מיר רע טאן צו די מענגע וועט שטענדיק נעמען די זעלבע סומע פון ​​צייַט. אַזוי מיר קענען פאָרשטעלן אַז נאָר מיט אַ 1, וואָס איז אַ קעסיידערדיק. מיר אויך געקוקט אין לאַגערידמיק לויפן צייַט. אַזוי עפּעס ווי ביינערי זוכן איז לאַגערידמיק, ווו מיר שנייַדן די פּראָבלעם אין העלפט יעדער צייַט און דעמאָלט זאכן נאָר באַקומען העכער פון דאָרט. און אויב איר ניטאָ אלץ שרייבן אַן אָ פון קיין פאַקטאָריאַל אַלגערידאַם, איר מיסטאָמע זאָל נישט באַטראַכטן דעם ווי דיין טאָג אַרבעט. ווען מיר פאַרגלייַכן פליסנדיק מאל עס ס וויכטיק צו האַלטן אין גייַסט די זאכן. אַזוי אויב איך האָבן אַ אַלגערידאַם אַז ס אָ (N), און עמעצער אַנדערש האט אַ אַלגערידאַם פון אָ (2ן) די זענען פאקטיש אַסימפּטאָטיקאַללי עקוויוואַלענט. אַזוי אויב מיר ימאַדזשאַן N צו זייַן אַ גרויס נומער ווי עלעווענטי ביליאָן: אַזוי ווען מיר רע קאַמפּערינג עלעווענטי ביליאָן צו עפּעס ווי עלעווענטי ביליאָן + 3, פּלוצלינג אַז +3 טוט ניט טאַקע מאַכן אַ גרויס חילוק ענימאָר. אַז ס וואָס מיר רע געגאנגען צו אָנהייבן קאָנסידערינג די זאכן צו זייַן עקוויוואַלענט. אַזוי זאכן ווי די קאַנסטאַנץ דאָ, דאָרט ס 2 X דעם, אָדער אַדינג אַ 3, די ביסט נאָר קאַנסטאַנץ, און די ביסט געגאנגען צו קאַפּ אַרויף. אַזוי אַז ס וואָס אַלע 3 פון די לויפן מאל זענען די זעלבע ווי געזאגט זיי ניטאָ אָ (N). סימילאַרלי, אויב מיר האָבן 2 אנדערע לויפן מאל, לאָזן 'ס זאָגן אָ (N ³ + 2ן ²), מיר קענען לייגן + N, + 7, און דאַן מיר האָבן אן אנדער לויפן צייַט וואָס ס 'נאָר אָ (N ³). ווידער, די ביסט די זעלבע זאַך ווייַל די - די זענען נישט די זעלבע. דאס זענען די זעלבע זאכן, אנטשולדיגט. אַזוי די ביסט די זעלבע ווייַל דעם N ³ איז געגאנגען צו באַהערשן דעם 2ן ². וואָס איז ניט די זעלבע זאַך איז אויב מיר האָבן לויפן מאל ווי אָ (N ³) און אָ (N ²) ווייַל דאָס N ³ איז פיל גרעסערע ווי דעם N ². אַזוי אויב מיר האָבן יקספּאָונאַנץ, פּלוצלינג דעם סטאַרץ צו ענין, אָבער ווען מיר רע נאָר דילינג מיט סיבות ווי מיר זענען זיך דאָ, דעמאָלט עס ס ניט געגאנגען צו ענין ווייַל זיי זענען נאָר געגאנגען צו פאַלן אויס. זאל ס נעמען אַ קוק בייַ עטלעכע פון ​​די אַלגערידאַמז מיר ווע געזען אַזוי ווייַט און רעדן וועגן זייער לויפן צייַט. דער ערשטער וועג פון קוקן פֿאַר אַ נומער אין אַ רשימה, אַז מיר געזען, איז געווען לינעאַר זוכן. און די ימפּלאַמענטיישאַן פון לינעאַר זוכן איז סופּער סטרייטפאָרווערד. מיר נאָר האָבן אַ רשימה, און מיר רע געגאנגען צו קוקן בייַ יעדער איין עלעמענט אין דער רשימה ביז מיר געפֿינען די נומער מיר רע קוקן פֿאַר. אַזוי אַז מיטל אַז אין די ערגסט פאַל, דעם אָ (N). און די ערגסט פאַל דאָ קען זייַן אויב דער עלעמענט איז די לעצטע עלעמענט, דעמאָלט ניצן לינעאַר זוכן מיר האָבן צו קוקן בייַ יעדער איין עלעמענט ביז מיר באַקומען צו די לעצטע איינער אין סדר צו וויסן אַז עס איז פאקטיש אין די רשימה. מיר קענען ניט נאָר געבן אַרויף אַפנ האַלבנ וועג און זאָגן, "עס ס מיסטאָמע נישט דאָרט." מיט לינעאַר זוכן מיר האָבן צו קוקן אין די גאנצע זאַך. דער בעסטער-פאַל פליסנדיק צייַט, אויף די אנדערע האַנט, איז קעסיידערדיק ווייַל אין די בעסטער פאַל די עלעמענט מיר רע קוקן פֿאַר איז נאָר דער ערשטער איין אין דער רשימה. אַזוי עס ס געגאנגען צו נעמען אונדז פּונקט 1 שריט, קיין ענין ווי גרויס די רשימה איז אויב מיר רע קוקן פֿאַר דער ערשטער עלעמענט יעדער צייַט. אַזוי ווען איר זוכן, געדענקען, עס טוט נישט דאַרפן אַז אונדזער רשימה זייַן אויסגעשטעלט. ווייַל מיר רע פשוט געגאנגען צו קוקן איבער יעדער איין עלעמענט, און עס טוט ניט טאַקע ענין וואָס סדר יענע עלעמענטן זענען ין א מער ינטעליגענט זוכן אַלגערידאַם איז עפּעס ווי ביינערי זוכן. געדענקען, דער ימפּלאַמענטיישאַן פון ביינערי זוכן איז ווען איר ניטאָ געגאנגען צו האַלטן קוקן אין די מיטן פון די רשימה. און ווייַל מיר רע קוקן אין די מיטל, מיר דאַרפן אַז די רשימה איז אויסגעשטעלט אָדער אַנדערש מיר טאָן ניט וויסן ווו די מיטל איז, און מיר האָבן צו קוקן איבער די גאנצע רשימה צו געפֿינען עס, און דאַן בייַ אַז פונט מיר רע נאָר ווייסטינג צייַט. אַזוי אויב מיר האָבן אַ אויסגעשטעלט רשימה און מיר געפֿינען די מיטל, מיר רע געגאנגען צו פאַרגלייַכן דעם מיטל צו דעם עלעמענט מיר רע קוקן פֿאַר. אויב עס ס אויך הויך, דעמאָלט מיר קענען פאַרגעסן די רעכט האַלב ווייַל מיר וויסן אַז אויב אונדזער עלעמענט איז שוין אויך הויך און אַלץ צו די רעכט פון דעם עלעמענט איז אַפֿילו העכער, דעמאָלט מיר טאָן ניט דאַרפֿן צו קוקן דאָרט ענימאָר. ווו אויף די אנדערע האַנט, אויב אונדזער עלעמענט איז אויך נידעריק, מיר וויסן אַלץ צו די לינקס פון וואָס עלעמענט איז אויך אויך נידעריק, אַזוי עס טוט ניט טאַקע מאַכן זינען צו קוקן דאָרט, אָדער. דעם וועג, מיט יעדער שריט און יעדער צייַט מיר קוקן אין די מידפּוינט פון דער רשימה, מיר רע געגאנגען צו שנייַדן אונדזער פּראָבלעם אין האַלב ווייַל פּלוצלינג מיר וויסן אַ גאַנץ בינטל פון נומערן וואָס קענען נישט זייַן די איין מיר רע קוקן פֿאַר. אין פּסעודאָקאָדע דעם וואָלט קוק עפּעס ווי דעם, און ווייַל מיר רע קאַטינג די רשימה אין העלפט יעדער איין מאָל, אונדזער ערגסט-פאַל לויפן צייַט דזשאַמפּס פון לינעאַר צו לאַגערידמיק. אַזוי פּלוצלינג מיר האָבן קלאָץ-אין טריט אין סדר צו געפֿינען אַן עלעמענט אין אַ רשימה. דער בעסטער-פאַל פליסנדיק צייַט, כאָטש, איז נאָך קעסיידערדיק ווייַל איצט, לאָזן ס נאָר זאָגן אַז די עלעמענט מיר רע קוקן פֿאַר איז שטענדיק די פּינטלעך מיטן פון דער אָריגינעל רשימה. אַזוי מיר קענען וואַקסן אונדזער רשימה ווי גרויס ווי מיר ווילן, אָבער אויב דער עלעמענט מיר רע קוקן פֿאַר איז בייַ די מיטל, דעמאָלט עס ס נאָר געגאנגען צו נעמען אונדז 1 שריט. אַזוי אַז ס וואָס מיר ניטאָ אָ (קלאָץ N) און Ω (1) אָדער קעסיידערדיק. זאל ס 'פאקטיש לויפן ביינערי זוכן אויף דעם רשימה. אַזוי לאָזן 'ס זאָגן אַז מיר רע קוקן פֿאַר דעם עלעמענט 164. דער ערשטער זאַך מיר זענען געגאנגען צו טאָן איז געפֿינען די מידפּוינט פון דעם רשימה. עס פּונקט אַזוי כאַפּאַנז אַז די מידפּוינט איז געגאנגען צו פאַלן אין צווישן די 2 נומערן, אַזוי לאָזן ס נאָר אַרביטרעראַלי זאָגן, יעדער מאָל די מידפּוינט פאלס צווישן 2 נומערן, לאָזן ס נאָר קייַלעכיק אַרויף. מיר נאָר דאַרפֿן צו מאַכן זיכער מיר טאָן דעם יעדער שריט פון די וועג. אַזוי מיר רע געגאנגען צו קייַלעכיק אַרויף, און מיר רע געגאנגען צו זאָגן אַז 161 איז דער מיטל פון אונדזער רשימה. אַזוי 161 <164, און יעדער עלעמענט צו די לינקס פון 161 איז אויך <164, אַזוי מיר וויסן אַז עס ס ניט געגאנגען צו העלפן אונדז אין אַלע צו אָנהייבן זוכן איבער דאָ ווייַל די עלעמענט מיר רע קוקן פֿאַר קענען נישט זייַן דאָרט. אַזוי וואָס מיר קענען טאָן איז מיר קענען נאָר פאַרגעסן וועגן אַז גאַנץ לינקס העלפט פון דער רשימה, און איצט בלויז באַטראַכטן פון די רעכט פון די 161 פאָרויס. אַזוי ווידער, דאָס איז די מידפּוינט; לאָזן ס נאָר קייַלעכיק אַרויף. איצט 175 איז אויך גרויס. אַזוי מיר וויסן עס ס ניט געגאנגען צו העלפן אונדז קוקן דאָ אָדער דאָ, אַזוי מיר קענען נאָר וואַרפן אַז אַוועק, און יווענטשאַוואַלי מיר וועט שלאָגן די 164. קיין שאלות אויף ביינערי זוכן? זאל ס 'מאַך אויף פון שאַרף דורך אַן שוין-אויסגעשטעלט רשימה צו פאקטיש גענומען אַ רשימה פון נומערן אין קיין סדר און מאכן אַז רשימה אין אַסענדינג סדר. דער ערשטער אַלגערידאַם מיר געקוקט בייַ איז געווען גערופן בלאָז סאָרט. און דאָס וואָלט זייַן סימפּלער פון די אַלגערידאַמז מיר געזען. בלאָז סאָרט זאגט אַז ווען קיין 2 יסודות ין דער רשימה זענען אויס פון אָרט, טייַטש עס איז אַ העכער נומער צו די לינקס פון אַ נידעריקער נומער, דעמאָלט מיר רע געגאנגען צו ויסבייַטן זיי, ווייַל אַז מיטל אַז די רשימה וועט זייַן "מער אויסגעשטעלט" ווי עס איז געווען פריער. און מיר רע נאָר געגאנגען צו פאָרזעצן דעם פּראָצעס ווידער און ווידער און ווידער ביז יווענטשאַוואַלי די יסודות מין פון בלאָז צו זייער ריכטיק אָרט און מיר האָבן אַ אויסגעשטעלט רשימה. די לויפן צייַט פון דעם איז געגאנגען צו זייַן אָ (N ²). פארוואס? גוט, ווייַל אין די ערגסט פאַל, מיר רע געגאנגען צו נעמען יעדער עלעמענט, און מיר רע געגאנגען צו סוף אַרויף קאַמפּערינג עס צו יעדער אַנדערער עלעמענט אין דער רשימה. אבער אין דער בעסטער פאַל, מיר האָבן אַן שוין אויסגעשטעלט רשימה, בלאָז סאָרט ס נאָר געגאנגען צו גיין דורך אַמאָל, זאָגן "נאָופּ. איך האט נישט מאַכן קיין סוואַפּס, אַזוי איך בין געטאן." אַזוי מיר האָבן אַ בעסטער-פאַל פליסנדיק צייַט פון Ω (N). זאל ס 'לויפן בלאָז סאָרט אויף אַ רשימה. אָדער ערשטער, לאָזן ס נאָר קוק אין עטלעכע פּסעודאָקאָדע טאַקע געשווינד. מיר ווילן צו זאָגן מיר ווילן צו האַלטן שפּור פון, אין יעדער יטעראַטיאָן פון די שלייף, האַלטן שפּור פון צי אָדער נישט מיר געביטן קיין יסודות. אַזוי די סיבה פֿאַר וואָס איז, מיר רע געגאנגען צו האַלטן ווען מיר האָבן נישט סוואָפּט קיין יסודות. אַזוי בייַ די אָנהייב פון אונדזער שלייף מיר האָבן נישט סוואָפּט עפּעס, אַזוי מיר וועט זאָגן אַז ס פאַלש. איצט, מיר רע געגאנגען צו גיין דורך דער רשימה און פאַרגלייַכן עלעמענט איך צו עלעמענט איך + 1 און אויב עס איז דער פאַל אַז עס איז אַ ביגער נומער צו די לינקס פון אַ קלענערער נומער, דעמאָלט מיר רע נאָר געגאנגען צו ויסבייַטן זיי. און דעמאָלט מיר רע געגאנגען צו געדענקען אַז מיר סוואָפּט אַן עלעמענט. אַז מיטל אַז מיר דאַרפֿן צו גיין דורך דער רשימה בייַ מינדסטער 1 מער צייַט ווייַל די צושטאַנד אין וואָס מיר פארשטאפט איז ווען די גאנצע רשימה איז שוין אויסגעשטעלט, טייַטש מיר האָבן נישט געמאכט קיין סוואַפּס. אַזוי אַז ס וואָס אונדזער צושטאַנד אַראָפּ דאָ איז 'בשעת עטלעכע יסודות האָבן שוין סוואָפּט.' אַזוי איצט לאָזן ס נאָר קוק אין דעם פליסנדיק אויף אַ רשימה. איך האָבן די רשימה 5,0,1,6,4. בלאָז סאָרט איז געגאנגען צו אָנהייבן אַלע די וועג בייַ די לינקס, און עס ס געגאנגען צו פאַרגלייַכן די איך יסודות, אַזוי 0 צו איך + 1, וואָס איז עלעמענט 1. עס ס געגאנגען צו זאָגן, געזונט 5> 0, אָבער רעכט איצט 5 איז צו די לינקס, אַזוי איך דאַרפֿן צו ויסבייַטן די 5 און די 0. ווען איך ויסבייַטן זיי, פּלוצלינג איך באַקומען דעם פאַרשידענע רשימה. איצט 5> 1, אַזוי מיר רע געגאנגען צו ויסבייַטן זיי. 5 איז נישט> 6, אַזוי מיר טאָן ניט דאַרפֿן צו טאָן עפּעס דאָ. אבער 6> 4, אַזוי מיר דאַרפֿן צו ויסבייַטן. ווידער, מיר דאַרפֿן צו לויפן דורך די גאנצע רשימה צו יווענטשאַוואַלי אַנטדעקן אַז די ביסט אויס פון סדר; מיר ויסבייַטן זיי, און בייַ דעם פונט מיר דאַרפֿן צו לויפן דורך דער רשימה 1 מער צייַט צו מאַכן זיכער אַז אַלץ ס אין זייַן סדר, און בייַ דעם פונט בלאָז סאָרט האט פאַרטיק. א אַנדערש אַלגערידאַם פֿאַר גענומען עטלעכע יסודות און סאָרטינג זיי איז סעלעקציע סאָרט. דער געדאַנק הינטער סעלעקציע סאָרט איז אַז מיר רע געגאנגען צו בויען אַרויף אַ אויסגעשטעלט חלק פון די רשימה 1 עלעמענט אין אַ צייַט. און דער וועג מיר רע געגאנגען צו טאָן וואָס איז דורך בנין אַרויף די לינקס אָפּשניט פון דער רשימה. און בייסיקלי, יעדער - אויף יעדער שריט, מיר רע געגאנגען צו נעמען די קלענסטער עלעמענט מיר האָבן לינקס וואָס האט ניט געווען אויסגעשטעלט נאָך, און מיר רע געגאנגען צו מאַך עס אין אַז אויסגעשטעלט אָפּשניט. אַז מיטל מיר דאַרפֿן צו קאַנטיניואַסלי געפֿינען די מינימום ונסאָרטעד עלעמענט און דאַן נעמען אַז מינימום עלעמענט און ויסבייַטן עס מיט וועלכער לינקס-רובֿ עלעמענט וואָס איז נישט אויסגעשטעלט. די לויפן צייַט פון דעם איז געגאנגען צו זייַן אָ (N ²) ווייַל אין די ערגסט פאַל מיר דאַרפֿן צו פאַרגלייַכן יעדער איין עלעמענט צו יעדער אַנדערער עלעמענט. ווייַל מיר רע געזאגט אַז אויב מיר אָנהייבן בייַ די לינקס העלפט פון דער רשימה, מיר דאַרפֿן צו גיין דורך די גאנצע רעכט אָפּשניט צו געפֿינען די קלענסטער עלעמענט. און דעמאָלט, ווידער, מיר דאַרפֿן צו גיין איבער די גאנצע רעכט אָפּשניט און האַלטן געגאנגען איבער אַז איבער און איבער און איבער ווידער. אַז ס 'געגאנגען צו זייַן N ². מיר רע געגאנגען צו דאַרפֿן אַ פֿאַר שלייף ין פון אנדערן פֿאַר שלייף וואָס סאַגדזשעס N ². אין דער בעסטער פאַל געדאַנק, לאָזן ס זאָגן מיר געבן עס אַן שוין אויסגעשטעלט רשימה; מיר פאקטיש טאָן ניט טאָן קיין בעסער ווי N ². ווייַל סעלעקציע סאָרט האט קיין וועג פון געוואוסט אַז די מינימום עלעמענט איז נאָר די איין איך פּאַסירן צו זייַן קוקן בייַ. עס נאָך דאַרף צו מאַכן זיכער אַז דאָס איז פאקטיש די מינימום. און דער נאָר וועג צו מאַכן זיכער אַז עס ס דעם מינימום, ניצן דעם אַלגערידאַם, איז צו קוקן בייַ יעדער איין עלעמענט ווידער. אַזוי טאַקע, אויב איר געבן עס - אויב איר געבן סעלעקציע סאָרט אַן שוין אויסגעשטעלט רשימה, עס ס ניט געגאנגען צו טאָן קיין בעסער ווי געבן עס אַ רשימה וואָס איז נישט אויסגעשטעלט נאָך. דורך די וועג, אויב עס כאַפּאַנז צו זייַן די פאַל אַז עפּעס איז אָ (עפּעס) און די תוו פון עפּעס, מיר קענען נאָר זאָגן מער סאַקסינגקטלי אַז עס ס θ פון עפּעס. אַזוי אויב איר זען וואָס קומען אַרויף ערגעץ, אַז ס וואָס וואָס נאָר מיטל. אויב עפּעס איז טייטאַ פון N ², עס איז ביידע גרויס אָ (N ²) און Ω (N ²). אַזוי בעסטער פאַל און ערגסט פאַל, עס טוט נישט מאַכן אַ חילוק, די אַלגערידאַם איז געגאנגען צו טאָן די זעלבע זאַך יעדער צייַט. אַזוי דאָס איז וואָס פּסעודאָקאָדע פֿאַר סעלעקציע סאָרט געקענט קוקן ווי. מיר רע בייסיקלי געגאנגען צו זאָגן אַז איך ווילן צו יטעראַטע איבער די רשימה פון לינקס צו רעכט, און אין יעדער יטעראַטיאָן פון די שלייף, איך בין געגאנגען צו באַוועגן די מינימום עלעמענט אין דעם אויסגעשטעלט חלק פון די רשימה. און אַמאָל איך מאַך עפּעס דאָרט, איך קיינמאָל דאַרפֿן צו קוקן בייַ אַז עלעמענט ווידער. ווייַל ווי באַלד ווי איך ויסבייַטן אַן עלעמענט אין צו די לינקס אָפּשניט פון דער רשימה, עס ס אויסגעשטעלט ווייַל מיר רע טאן אַלץ אין אַסענדינג סדר דורך ניצן מינימאַמז. אַזוי מיר געזאגט, אָוקיי, מיר ניטאָ בייַ שטעלע איך, און מיר דאַרפֿן צו קוקן אין אַלע פון ​​די יסודות צו די רעכט פון איך אין סדר צו געפֿינען די מינימום. אַזוי אַז מיטל מיר ווילן צו קוקן פון איך + 1 צו די סוף פון די רשימה. און איצט, אויב דער עלעמענט וואָס מיר רע דערווייַל קוקן אין איז ווייניקער ווי אונדזער מינימום אַזוי ווייַט, וואָס, געדענקען, מיר רע סטאַרטינג די מינימום אַוועק צו נאָר זייַן וועלכער עלעמענט מיר רע דערווייַל בייַ; איך וועט יבערנעמען אַז ס די מינימום. אויב איך געפֿינען אַן עלעמענט אַז ס קלענערער ווי אַז, דאַן איך בין געגאנגען צו זאָגן, אָוקיי, גוט, איך האב געפונען אַ נייַ מינימום. איך בין געגאנגען צו געדענקען ווו אַז מינימום איז געווען. אַזוי איצט, אַמאָל איך ווע ניטאָ דורך אַז רעכט ונסאָרטעד אָפּשניט, איך קענען זאָגן איך בין געגאנגען צו ויסבייַטן די מינימום עלעמענט מיט דעם עלעמענט, וואס איז אין שטעלע איך. אַז ס 'געגאנגען צו בויען אַרויף מיין ליסטע, מיין אויסגעשטעלט חלק פון די רשימה פון לינקס צו רעכט, און מיר טאָן ניט אלץ דאַרפֿן צו קוקן בייַ אַן עלעמענט ווידער אַמאָל עס ס אין אַז חלק. אַמאָל מיר ווע סוואָפּט עס. אַזוי לאָזן ס לויפן סעלעקציע סאָרט אויף דעם רשימה. די בלוי עלעמענט דאָ איז געגאנגען צו זייַן די איך, און די רויט עלעמענט איז געגאנגען צו זייַן די מינימום עלעמענט. אַזוי איך סטאַרץ אַלע די וועג בייַ די לינקס פון דער רשימה, אַזוי בייַ 5. איצט מיר דאַרפֿן צו געפֿינען די מינימום ונסאָרטעד עלעמענט. אַזוי מיר זאָגן 0 <5, אַזוי 0 איז מיין נייַ מינימום. אבער איך קען נישט האַלטן דאָרט, ווייַל אַפֿילו כאָטש מיר קענען דערקענען אַז 0 איז דער קלענסטער, מיר דאַרפֿן צו לויפן דורך יעדער אַנדערער עלעמענט פון דער רשימה צו מאַכן זיכער. אַזוי 1 איז ביגער, 6 איז ביגער, 4 איז ביגער. אַז מיטל אַז נאָך קוקן אין אַלע פון ​​די עלעמענטן, איך ווע באשלאסן 0 איז דער קלענסטער. אַזוי איך בין געגאנגען צו ויסבייַטן די 5 און די 0. אַמאָל איך ויסבייַטן וואָס, איך בין געגאנגען צו באַקומען אַ נייע רשימה, און איך וויסן אַז איך קיינמאָל דאַרפֿן צו קוקן אין וואָס 0 ווידער ווייַל אַמאָל איך ווע סוואָפּט עס, איך ווע אויסגעשטעלט עס און מיר רע געטאן. איצט עס פּונקט אַזוי כאַפּאַנז אַז די בלוי עלעמענט איז ווידער די 5, און מיר דאַרפֿן צו קוקן אין די 1, די 6 און די 4 צו באַשליסן אַז 1 איז דער קלענסטער מינימום עלעמענט, אַזוי מיר וועט ויסבייַטן די 1 און דער 5. ווידער, מיר דאַרפֿן צו קוקן בייַ - פאַרגלייַכן די 5 צו די 6 און די 4, און מיר רע געגאנגען צו ויסבייַטן די 4 און די 5, און ענדלעך, פאַרגלייַכן יענע 2 נומערן און ויסבייַטן זיי ביז מיר באַקומען אונדזער אויסגעשטעלט רשימה. קיין שאלות אויף סעלעקציע סאָרט? אָוקיי. זאל ס מאַך צו די לעצטע טעמע דאָ, און וואָס איז רעקורסיאָן. רעקורסיאָן, געדענקען, איז דאָס טאַקע מעטאַ זאַך ווו אַ פֿונקציע ריפּיטידלי רופט זיך. אַזוי בייַ עטלעכע פונט, בשעת אונדזער פוקטיאָן איז ריפּיטידלי פאַך זיך, עס דאַרף צו זייַן עטלעכע פונט אין וואָס מיר האַלטן פאַך זיך. ווייַל אויב מיר טאָן ניט טאָן אַז, דעמאָלט מיר רע נאָר געגאנגען צו פאָרזעצן צו טאָן דעם אייביק, און אונדזער פּראָגראַם איז נאָר נישט געגאנגען צו פאַרענדיקן. מיר רופן דעם צושטאַנד די באַזע פאַל. און די באַזע פאַל זאגט, אלא ווי פאַך אַ פֿונקציע ווידער, איך בין נאָר געגאנגען צו צוריקקומען עטלעכע ווערט. אַזוי אַמאָל מיר ווע אומגעקערט אַ ווערט, מיר ווע פארשטאפט פאַך זיך, און די מנוחה פון דעם רופט מיר ווע געמאכט אַזוי ווייַט קענען אויך צוריקקומען. דער פאַרקערט פון די באַזע פאַל איז די רעקורסיווע פאַל. און דאָס איז ווען מיר וועלן צו מאַכן אן אנדער רופן צו די פֿונקציע אַז מיר רע דערווייַל ין און מיר מיסטאָמע, כאָטש ניט שטענדיק, ווילן צו נוצן פאַרשידענע טענות. אַזוי אויב מיר האָבן אַ פֿונקציע גערופן F, און F נאָר גערופן נעמען 1 אַרגומענט, און מיר נאָר האַלטן פאַך F (1), F (1), F (1), און עס פּונקט אַזוי כאַפּאַנז אַז דער אַרגומענט 1 פאלס אין רעקורסיווע פאַל, מיר ניטאָ נאָך קיינמאָל געגאנגען צו האַלטן. אפילו אויב מיר האָבן אַ באַזע פאַל, מיר דאַרפֿן צו מאַכן זיכער אַז יווענטשאַוואַלי מיר רע געגאנגען צו שלאָגן אַז באַזע פאַל. מיר טאָן ניט נאָר האַלטן סטייינג אין דעם רעקורסיווע פאַל. בכלל, ווען מיר רופן זיך, מיר רע מיסטאָמע געגאנגען צו האָבן אַ אַנדערש אַרגומענט יעדער צייַט. דאָ איז אַ טאַקע פּשוט רעקורסיווע פונקציאָנירן. אַזוי דעם וועט צונויפרעכענען די פאַקטאָריאַל פון אַ נומער. אַרויף שפּיץ דאָ מיר האָבן אונדזער באַזע פאַל. אין דעם פאַל אַז N ≤ 1, מיר ניטאָ ניט געגאנגען צו רופן פאַקטאָריאַל ווידער. מיר רע געגאנגען צו האַלטן; מיר רע נאָר געגאנגען צו צוריקקומען עטלעכע ווערט. אויב דאָס איז נישט אמת, דעמאָלט מיר רע געגאנגען צו שלאָגן אונדזער רעקורסיווע פאַל. נאָטיץ דאָ אַז מיר ניטאָ ניט נאָר פאַך פאַקטאָריאַל (N), ווייַל וואָס וואָלט ניט זייַן זייער נוציק. מיר רע געגאנגען צו רופן פאַקטאָריאַל פון עפּעס אַנדערש. און אַזוי איר קענען זען, יווענטשאַוואַלי אויב מיר פאָרן אַ פאַקטאָריאַל (5) אָדער עפּעס, מיר רע געגאנגען צו רופן פאַקטאָריאַל (4) און אַזוי אויף, און יווענטשאַוואַלי מיר רע געגאנגען צו שלאָגן דעם באַזע פאַל. אַזוי דאָס קוקט גוט. זאל ס זען וואָס כאַפּאַנז ווען מיר פאקטיש לויפן דעם. דאס איז די אָנלייגן, און לאָזן 'ס זאָגן אַז הויפּט איז געגאנגען צו רופן דעם פֿונקציע מיט אַן אַרגומענט (4). אַזוי אַמאָל פאַקטאָריאַל זעט און = 4, פאַקטאָריאַל וועט רופן זיך. איצט, פּלוצלינג, מיר האָבן פאַקטאָריאַל (3). אַזוי די פאַנגקשאַנז זענען געגאנגען צו האַלטן גראָוינג ביז יווענטשאַוואַלי מיר שלאָגן אונדזער באַזע פאַל. אין דעם פונט, די צוריקקומען ווערט פון דעם איז די צוריקקומען (נקס די צוריקקומען ווערט פון דעם), די צוריקקומען ווערט פון דעם איז נקס די צוריקקומען ווערט פון דעם. יווענטשאַוואַלי מיר דאַרפֿן צו שלאָגן עטלעכע נומער. אין די שפּיץ דאָ, מיר זאָגן צוריקקומען 1. אַז מיטל אַז אַמאָל מיר צוריקקומען אַז נומער, מיר קענען קנאַל דעם אַוועק דעם אָנלייגן. אַזוי דעם פאַקטאָריאַל (1) איז געטאן. ווען 1 קערט, דעם פאַקטאָריאַל (1) קערט, דאָס צוריקקומען צו 1. די צוריקקומען ווערט פון דעם, געדענקען, איז געווען נקס די צוריקקומען ווערט פון דעם. אַזוי פּלוצלינג, דעם באָכער ווייסט אַז איך ווילן צו צוריקקומען 2. אַזוי געדענקען, צוריקקומען ווערט פון דעם איז נאָר נקס די צוריקקומען ווערט אַרויף דאָ. אַזוי איצט מיר קענען זאָגן 3 X 2, און ענדלעך, דאָ מיר קענען זאָגן דאָס איז נאָר געגאנגען צו זייַן 4 X 3 X 2. און אַמאָל דעם קערט, מיר באַקומען אַראָפּ צו אַ איין ינטעגער ין פון הויפּט. קיין שאלות אויף רעקורסיאָן? אַלע רעכט. אַזוי דאָרט ס מער צייַט פֿאַר שאלות אין די סוף, אָבער איצט יוסף וועט דעקן די רוען סוגיות. [יוסף אָנג] אַלע רעכט. אַזוי איצט אַז מיר ווע גערעדט וועגן רעקורסיאָנס, לאָזן ס רעדן אַ קליין ביסל וועגן וואָס צונויפגיסן סאָרט איז. צונויפגיסן סאָרט איז בייסיקלי אנדערן וועג פון סאָרטינג אַ רשימה פון נומערן. און ווי עס אַרבעט איז, מיט צונויפגיסן סאָרט איר האָבן אַ רשימה, און וואָס מיר טאָן איז מיר זאָגן, לאָזן ס שפּאַלטן דעם אין 2 כאַווז. מיר וועט ערשטער לויפן צונויפגיסן סאָרט ווידער אויף די לינקס האַלב, דעמאָלט מיר וועט לויפן צונויפגיסן סאָרט אויף די רעכט האַלב, און וואָס גיט אונדז איצט 2 כאַווז וואָס זענען אויסגעשטעלט, און איצט מיר רע געגאנגען צו פאַרבינדן יענע כאַווז צוזאַמען. עס ס אַ ביסל שווער צו זען אָן אַ בייַשפּיל, אַזוי מיר וועט גיין דורך די מאָושאַנז און זען וואָס כאַפּאַנז. אַזוי איר אָנהייבן מיט דעם רשימה, מיר שפּאַלטן עס אין 2 כאַווז. מיר לויפן צונויפגיסן סאָרט אויף די לינקס האַלב ערשטער. אַזוי אַז ס די לינקס האַלב, און איצט מיר לויפן זיי דורך דעם רשימה ווידער וואָס געץ דורכגעגאנגען אין צונויפגיסן סאָרט, און דאַן מיר קוקן, ווידער, בייַ די לינקס זייַט פון דעם רשימה און מיר לויפן צונויפגיסן סאָרט אויף עס. איצט, מיר באַקומען אַראָפּ צו אַ רשימה פון 2 נומערן, און איצט די לינקס האַלב איז בלויז 1 עלעמענט לאַנג, און מיר קענען נישט שפּאַלטן אַ רשימה אַז ס בלויז 1 עלעמענט אין האַלב, אַזוי מיר נאָר זאָגן, אַמאָל מיר האָבן 50, וואָס איז נאָר 1 עלעמענט, עס ס 'שוין אויסגעשטעלט. אַמאָל מיר רע געטאן מיט וואָס, מיר קענען זען אַז מיר קענען מאַך אויף צו די רעכט האַלב פון דעם רשימה, און 3 איז אויך אויסגעשטעלט, און אַזוי איצט אַז ביידע כאַווז פון דעם רשימה זענען אויסגעשטעלט מיר קענען פאַרבינדן די נומערן צוריק צוזאַמען. אַזוי מיר קוקן בייַ 50 און 3; 3 איז קלענערער ווי 50, אַזוי עס גייט אין ערשטער און דעמאָלט 50 קומט ין איצט, אַז ס געטאן; מיר גיין צוריק אַרויף צו אַז רשימה און סאָרט עס ס רעכט האַלב. 42 איז עס ס אייגן נומער, אַזוי עס ס 'שוין אויסגעשטעלט. אַזוי איצט מיר פאַרגלייַכן די 2 און 3 איז קלענערער ווי 42, אַזוי אַז געץ שטעלן אין ערשטער, איצט 42 געץ שטעלן אין, און 50 געץ שטעלן ין איצט, אַז ס אויסגעשטעלט, מיר גיין אַלע די וועג צוריק צו די שפּיץ, 1337 און 15. נו, מיר איצט קוק בייַ די לינקס האַלב פון דעם רשימה; 1337 איז דורך זיך אַזוי עס ס אויסגעשטעלט און זעלביקער מיט 15. אַזוי איצט מיר פאַרבינדן די 2 נומערן צו סאָרט אַז אָריגינעל רשימה, 15 <1337, אַזוי עס גייט אין ערשטער, דעמאָלט 1337 גייט ין און איצט מיר אויסגעשטעלט ביידע כאַווז פון דער אָריגינעל רשימה אַרויף שפּיץ. און אַלע מיר האָבן צו טאָן איז פאַרבינדן די. מיר קוקן אין די ערשטער 2 נומערן פון דעם רשימה, 3 <15, אַזוי עס גייט אין די סאָרט מענגע ערשטער. 15 <42, אַזוי עס גייט ין איצט, 42 <1337, וואָס גייט ין 50 <1337, אַזוי עס גייט ין און באַמערקן אַז מיר נאָר גענומען 2 נומערן אַוועק פון דעם רשימה. אַזוי מיר ניטאָ ניט נאָר אָלטערנייטינג צווישן די 2 רשימות. מיר רע נאָר קוקן אין די אָנהייב, און מיר רע גענומען די עלעמענט אַז ס קלענערער און דעמאָלט פּאַטינג עס אין אונדזער מענגע. איצט מיר ווע מערדזשד אַלע די כאַווז און מיר רע געטאן. קיין שאלות וועגן צונויפגיסן סאָרט? יא? [תּלמיד] אויב עס ס ספּליטינג אין פאַרשידענע גרופּעס, וואָס טאָן ניט זיי נאָר שפּאַלטן עס אַמאָל און איר האָט 3 און 2 אין אַ גרופּע? [רעסט פון קשיא אַנינטעלאַדזשאַבאַל] די סיבה - אַזוי די קשיא איז, וואָס קענען נישט מיר נאָר צונויפגיסן זיי בייַ אַז ערשטער שריט נאָך מיר האָבן זיי? די סיבה מיר קענען טאָן דעם, אָנהייבן בייַ די לינקס-רובֿ עלעמענטן פון ביידע זייטן, און דאַן נעמען די קלענערער איין און שטעלן אים אין, איז אַז מיר וויסן אַז די יחיד רשימות זענען אין אויסגעשטעלט אָרדערס. אַזוי אויב איך בין קוקן בייַ די לינקס-רובֿ עלעמענטן פון ביידע כאַווז, איך וויסן זיי ניטאָ געגאנגען צו זייַן דער קלענסטער יסודות פון יענע רשימות. אַזוי איך קענען שטעלן זיי אין די קלענסטער עלעמענט ספּאַץ פון דעם גרויס רשימה. אויף די אנדערע האַנט, אויב איך קוק בייַ יענע 2 רשימות אין די רגע מדרגה איבער דאָרט, 50, 3, 42, 1337 און 15, יענע זענען נישט אויסגעשטעלט. אַזוי אויב איך קוק בייַ 50 און 1337, איך בין געגאנגען צו שטעלן 50 אין מיין רשימה ערשטער. אבער וואָס טוט ניט טאַקע מאַכן זינען, ווייַל 3 איז דער קלענסטער עלעמענט אויס פון אַלע פון ​​יענע. אַזוי דער בלויז סיבה מיר קענען טאָן דעם קאַמביינינג שריט איז ווייַל אונדזער רשימות זענען שוין אויסגעשטעלט. וואָס איז וואָס מיר האָבן צו באַקומען אַראָפּ אַלע די וועג צו די דנאָ ווייַל ווען מיר האָבן נאָר אַ איין נומער, איר וויסן אַז אַ איין נומער אין און פון זיך איז שוין אַ אויסגעשטעלט רשימה. קיין שאלות? ניין? קאַמפּלעקסיטי? נו, איר קענען זען אַז אין יעדער שריט דאָרט ס סוף נומערן, און מיר קענען טיילן אַ רשימה אין האַלב קלאָץ N מאל, וואָס איז ווו מיר באַקומען דעם N X קלאָץ N קאַמפּלעקסיטי. און איר וועט זען די בעסטער פאַל פֿאַר צונויפגיסן סאָרט איז N קלאָץ ען, און עס פּונקט אַזוי כאַפּאַנז אַז די ערגסט פאַל, אָדער די Ω איבער דאָרט, איז אויך N קלאָץ ען. עפּעס צו האַלטן אין מיינונג. מאָווינג אויף, לאָזן ס גיין אויף צו עטלעכע סופּער יקערדיק טעקע איך / אָו אויב איר געקוקט בייַ סקראַמבלע, איר וועט באַמערקן מיר האט עטלעכע סאָרט פון סיסטעם ווו איר קען שרייַבן צו אַ קלאָץ טעקע אויב איר לייענען דורך די קאָד. זאל ס זען ווי איר זאל טאָן וואָס. נו, מיר האָבן פפּרינטף, וואָס איר קענען טראַכטן פון ווי נאָר פּרינטף, אָבער נאָר דרוק צו אַ טעקע אַנשטאָט, און דערפאר די F בייַ די אָנהייב. דעם סאָרט פון קאָד אַרויף דאָ, וואָס עס טוט איז, ווי איר זאל האָבן געזען אין סקראַמבלע, עס גייט דורך דיין 2-דימענשאַנאַל מענגע דרוקן אויס רודערן דורך רודערן וואָס די נומערן זענען. אין דעם פאַל, פּרינטף פּרינץ אויס צו דיין וואָקזאַל אָדער וואָס מיר רופן דעם נאָרמאַל רעזולטאַט פון אָפּטיילונג. און איצט, אין דעם פאַל, אַלע מיר האָבן צו טאָן איז פאַרבייַטן פּרינטף מיט פפּרינטף, זאָגן אים וואָס טעקע איר ווילן צו דרוקן צו, און אין דעם פאַל עס נאָר פּרינץ עס אויס צו אַז טעקע אַנשטאָט פון דרוקן עס אויס צו דיין וואָקזאַל. גוט, דעריבער אַז בעגס די קשיא: וואו טאָן מיר באַקומען דעם סאָרט פון טעקע פון, רעכט? מיר דורכגעגאנגען קלאָץ אין צו דעם פפּרינטף פוקטיאָן אָבער מיר האבן קיין געדאַנק ווו עס געקומען פון. נו, פרי אין די קאָד, וואָס מיר האבן געווען דעם פּייַדע פון ​​קאָד איבער דאָ, וואָס בייסיקלי זאגט אַז עפענען די טעקע רופט לאָג.טקסט. וואָס מיר טאָן נאָך וואָס איז מיר האָבן צו מאַכן זיכער אַז די טעקע איז פאקטיש געעפנט הצלחה. אַזוי עס זאל פאַרלאָזן פֿאַר קייפל סיבות; איר טאָן נישט האָבן גענוג אָרט אויף דיין קאָמפּיוטער, פֿאַר בייַשפּיל. אַזוי עס ס שטענדיק וויכטיק איידער איר טאָן קיין אַפּעריישאַנז מיט דער טעקע אַז מיר קאָנטראָלירן צי אַז טעקע האט געעפנט הצלחה. אַזוי וואָס אַז אַ, אַז ס אַן אַרגומענט צו פאָפּען, געזונט, מיר קענען עפענען אַ טעקע אין פילע וועגן. וואָס מיר קענען טאָן איז, מיר קענען פאָרן עס וו, וואָס מיטל אָוועררידע דער טעקע אויב עס עקסאַץ שוין, מיר קענען פאָרן אַ אַ, וואָס זיי צוגעבן צו דער סוף פון דער טעקע אַנשטאָט פון אָוווערריידינג עס, אָדער מיר קענען ספּעציפיצירן ר, וואָס מיטל, לאָזן ס עפענען די טעקע ווי לייענען-נאָר. אַזוי אויב דער פּראָגראַם פרוווט צו מאַכן קיין ענדערונגען צו דער טעקע, שרייַען בייַ זיי און טאָן ניט לאָזן זיי טאָן עס. צום סוף, אַמאָל מיר רע געטאן מיט דער טעקע, געטאן טאן אַפּעריישאַנז אויף עס, מיר דאַרפֿן צו מאַכן זיכער מיר נאָענט די טעקע. און אַזוי אין די סוף פון דיין פּראָגראַם, איר זענט געגאנגען צו פאָרן זיי ווידער דעם טעקע אַז איר געעפנט, און נאָר נאָענט עס. אַזוי דאָס איז עפּעס וויכטיק אַז איר האָבן צו מאַכן זיכער איר טאָן. אַזוי געדענקען איר קענען עפענען אַ טעקע, דעמאָלט איר קענען שרייַבן צו דער טעקע, טאָן אַפּעריישאַנז אין דער טעקע, אָבער דעמאָלט איר האָבן צו נאָענט די טעקע אין די סוף. קיין שאלות אויף יקערדיק טעקע איך / אָ? יא? [תּלמיד קשיא, אַנינטעלאַדזשאַבאַל] רעכט דאָ. די קשיא איז, ווו טוט דעם לאָג.טקסט טעקע דערשייַנען? נו, אויב איר נאָר געבן עס לאָג.טקסט, עס קריייץ עס אין דער זעלביקער וועגווייַזער ווי די עקסעקוטאַבלע. אַזוי אויב יור - >> [תּלמיד קשיא, אַנינטעלאַדזשאַבאַל] יא. אין דער זעלביקער טעקע, אָדער אין די זעלבע דירעקטארי, ווי איר רופן עס. איצט זכּרון, אָנלייגן, און קופּע. אַזוי ווי איז זכּרון געלייגט אויס אין די קאָמפּיוטער? נו, איר קענען ימאַדזשאַן זכּרון ווי סאָרט פון דעם בלאָק דאָ. און אין זכּרון מיר האָבן וואָס ס גערופן די קופּע סטאַק איבער דאָרט, און די אָנלייגן אַז ס אַראָפּ דאָרט. און די קופּע וואקסט דאַונווערד און די אָנלייגן וואקסט אַרוף. אַזוי ווי טאַמי דערמאנט - אָה, גוט, און מיר האָבן די אנדערע 4 סעגמאַנץ וואָס איך וועט באַקומען צו אין אַ רגע - ווי טאַמי געזאגט פריער, איר וויסן ווי זייַן פאַנגקשאַנז רופן זיך און רופן יעדער אנדערע? זיי בויען זיך דעם סאָרט פון אָנלייגן ראַם. נו, אויב הויפּט רופט פו, פו געץ שטעלן אויף די אָנלייגן. פו רופט באַר, באַר באַקומען ס שטעלן אויף די אָנלייגן, און אַז געץ שטעלן אויף די אָנלייגן נאָך. און ווי זיי צוריקקומען, זיי יעדער באַקומען גענומען אַוועק דעם אָנלייגן. וואָס טאָן יעדער פון די לאָוקיישאַנז און זכּרון האַלטן? נו, די שפּיץ, וואָס איז די טעקסט אָפּשניט, כּולל די פּראָגראַם זיך. אַזוי דער מאַשין קאָד, אַז ס דאָרט, אַמאָל איר צונויפנעמען דיין פּראָגראַם. ווייַטער, קיין ינישאַלייזד גלאבאלע וועריאַבאַלז. אַזוי איר האָבן גלאבאלע וועריאַבאַלז אין דיין פּראָגראַם, און איר זאָגן ווי, אַ = 5, אַז געץ שטעלן אין אַז אָפּשניט, און רעכט אונטער אַז, איר האָבן קיין וניניטיאַליזעד גלאבאלע דאַטן, וואָס איז נאָר ינט אַ, אָבער איר טאָן ניט זאָגן עס ס גלייַך צו עפּעס. פאַרשטיין די ביסט גלאבאלע וועריאַבאַלז, אַזוי זיי ניטאָ אַרויס פון הויפּט. אַזוי דעם מיטל קיין גלאבאלע וועריאַבאַלז וואָס זענען דערקלערט אָבער ביסט נישט ינישאַלייזד. אַזוי וואָס ס אין די קופּע? זכּרון אַלאַקייטיד ניצן מאַללאָק, וואָס מיר וועט באַקומען צו אין אַ קליין ביסל. און לעסאָף, מיט דעם אָנלייגן איר האָבן קיין היגע וועריאַבאַלז און קיין פאַנגקשאַנז איר זאל רופן אין קיין פון זייער פּאַראַמעטערס. די לעצטע זאַך, איר טאָן ניט טאַקע האָבן צו וויסן וואָס די סוויווע וועריאַבאַלז טאָן, אָבער ווען איר לויפן פּראָגראַם, עס איז עפּעס פארבונדן, ווי דאָס איז דער נאמען פון דעם מענטש וואס געלאפן די פּראָגראַם. און אַז ס 'געגאנגען צו זייַן סאָרט פון בייַ די דנאָ. אין טערמינען פון זכּרון ווענדט, וואָס זענען העקסאַדעסימאַל וואַלועס, די וואַלועס בייַ די שפּיץ אָנהייבן בייַ 0, און זיי גיין אַלע די וועג אַראָפּ צו די דנאָ. אין דעם פאַל, אויב איר ניטאָ אויף דער 32-ביסל סיסטעם, דער אַדרעס אין די דנאָ איז געגאנגען צו זייַן 0קס, נאכגעגאנגען דורך פון, ווייַל אַז ס 32 ביטן, וואָס איז 8 ביטעס, און אין דעם פאַל 8 ביטעס קאָראַספּאַנדז צו 8 העקסאַדעסימאַל דידזשאַץ. אַזוי אַראָפּ דאָ איר ניטאָ געגאנגען צו האָבן, ווי, 0קספפפפפף, און אַרויף דאָרט איר ניטאָ געגאנגען צו האָבן 0. אַזוי וואָס זענען פּוינטערז? עטלעכע פון ​​איר זאלט ​​ניט האָבן באדעקט דעם אין אָפּטיילונג פריער. אָבער מיר האט גיין איבער אים אין לעקציע, אַזוי אַ טייַטל איז נאָר אַ דאַטן טיפּ וואָס סטאָרז, אַנשטאָט פון עטלעכע סאָרט פון ווערט ווי 50, עס סטאָרז די אַדרעס פון עטלעכע אָרט אין זכּרון. ווי אַז זכּרון [אַנינטעלאַדזשאַבאַל]. אַזוי אין דעם פאַל, וואָס מיר האָבן איז, מיר האָבן אַ טייַטל צו אַ ינטעגער אָדער אַ ינט *, און עס כּולל דעם העקסאַדעסימאַל אַדרעס פון 0קסדעאַדבעעף. אַזוי וואָס מיר האָבן איז, איצט, דעם טייַטל פונקטן אין עטלעכע אָרט אין זכּרון, און אַז ס 'נאָר אַ, די ווערט 50 איז בייַ דעם זכּרון אָרט. אויף עטלעכע 32-ביסל סיסטעמען, אויף אַלע 32-ביסל סיסטעמען, פּוינטערז נעמען אַרויף 32 ביטן אָדער 4 ביטעס. אבער, פֿאַר בייַשפּיל, אויף אַ 64-ביסל סיסטעם, פּוינטערז זענען 64 ביטן. אַזוי אַז ס 'עפּעס איר וועט וועלן צו האַלטן אין מיינונג. אַזוי אויף אַ סוף-ביסל סיסטעם, אַ טייַטל איז סוף ביטן לאַנג. פּאָינטערס זענען סאָרט פון שווער צו קיצער אָן עקסטרע זאכן, אַזוי לאָזן ס גיין דורך אַ בייַשפּיל פון דינאַמיש זכּרון אַלאַקיישאַן. וואָס דינאַמיש זכּרון אַלאַקיישאַן טוט פֿאַר איר, אָדער וואָס מיר רופן מאַללאָק, עס לעץ איר אַלאַקייט עטלעכע סאָרט פון דאַטן אַרויס פון די שטעלן. אַזוי דעם דאַטן איז סאָרט פון מער שטענדיק פֿאַר דער געדויער פון דער פּראָגראַם. ווייַל ווי איר וויסן, אויב איר דערקלערן X ין פון אַ פונקציאָנירן, און וואָס פונקציאָנירן קערט, איר ניט מער האָבן צוטריט צו די דאַטן וואָס איז געווען סטאָרד אין X. וואָס פּוינטערז לאָזן אונדז טאָן איז זיי לאָזן אונדז קראָם זכּרון אָדער קראָם וואַלועס אין אַ אַנדערש אָפּשניט פון זכּרון, ניימלי די קופּע. איצט אַמאָל מיר צוריקקומען אויס פון פונקציאָנירן, ווי לאַנג ווי מיר האָבן אַ טייַטל צו וואָס אָרט אין זכּרון, דעמאָלט וואָס מיר קענען טאָן איז מיר קענען נאָר קוק אין די וואַלועס דאָרט. זאל ס קוק בייַ אַ בייַשפּיל: דאס איז אונדזער זכּרון אויסלייג ווידער. און מיר האָבן דעם פֿונקציע, הויפּט. וואָס עס טוט איז - אָוקיי, אַזוי פּשוט, רעכט? - ינט X = 5, אַז ס 'נאָר אַ בייַטעוודיק אויף דעם אָנלייגן אין הויפּט. אויף די אנדערע האַנט, איצט מיר דערקלערן אַ טייַטל וואָס רופט די פֿונקציע גיוועמעטהרעעינץ. און אַזוי איצט מיר גיין אין דעם פֿונקציע און מיר מאַכן אַ נייַ אָנלייגן ראַם פֿאַר עס. אבער, אין דעם אָנלייגן ראַם, מיר דערקלערן ינט * טעמפּ, וואָס אין מאַללאָקס 3 ינטאַדזשערז פֿאַר אונדז. אַזוי גרייס פון ינט וועט געבן אונדז ווי פילע ביטעס דעם ינט איז, און מאַללאָק גיט אונדז אַז פילע ביטעס פון פּלאַץ אויף די קופּע. אַזוי אין דעם פאַל, מיר האָבן באשאפן גענוג פּלאַץ פֿאַר 3 ינטאַדזשערז, און די קופּע איז וועג אַרויף דאָרט, וואָס איז וואָס איך ווע ציען עס העכער אַרויף. אַמאָל מיר רע געטאן, מיר קומען צוריק אַרויף דאָ, איר נאָר דאַרפֿן 3 ינץ אומגעקערט, און עס קערט די אַדרעס, אין דעם פאַל איבער ווו אַז זכּרון איז. און מיר שטעלן טייַטל = באַשטימען, און אַרויף דאָרט מיר האָבן נאָר אן אנדער טייַטל. אבער וואָס וואָס פונקציאָנירן קערט איז סטאַקט דאָ און פארשווינדט. אַזוי טעמפּ פארשווינדט, אָבער מיר נאָך טייַנען די אַדרעס פון ווו יענע 3 ינטאַדזשערז זענען ין פון מיינז. אַזוי אין דעם גאַנג, די פּוינטערז זענען סקאָפּעד לאָוקאַלי פֿאַר די סטאַקט ראַם, אָבער דער זכּרון צו וואָס זיי אָפּשיקן איז אין די קופּע. טוט וואָס מאַכן זינען? [תּלמיד] קען איר איבערחזרן אַז? >> [יוסף] יא. אַזוי אויב איך גיין צוריק נאָר אַ קליין ביסל, איר זען אַז טעמפּ אַלאַקייטיד עטלעכע זכּרון אויף די קופּע אַרויף דאָרט. אַזוי ווען דעם פֿונקציע, גיוועמעטהרעעינץ קערט, דעם אָנלייגן דאָ איז געגאנגען צו פאַרשווינדן. און מיט אים קיין פון די וועריאַבאַלז, אין דעם פאַל, דעם טייַטל וואָס איז געווען אַלאַקייטיד אין סטאַקט ראַם. וואָס איז געגאנגען צו פאַרשווינדן, אָבער זינט מיר אומגעקערט טעמפּ און מיר שטעלן טייַטל = טעמפּ, טייַטל 'ס איצט געגאנגען צו פונט די זעלבע זכּרון פון אָרט ווי טעמפּ איז געווען. אַזוי איצט, אַפֿילו כאָטש מיר פאַרלירן טעמפּ, אַז היגע טייַטל, מיר נאָך ריטיין די זכּרון אַדרעס פון וואָס עס איז געווען פּוינטינג צו ין פון וואָס בייַטעוודיק טייַטל. שאלות? וואָס קענען זייַן מין פון אַ קאַנפיוזינג טעמע אויב איר האָט ניט פאַרבייַ איבער אים אין אָפּטיילונג. מיר קענען, דיין טף וועט באשטימט גיין איבער אים און פון קורס מיר קענען ענטפֿערן שאלות אין די סוף פון די באריכטן סעסיע פֿאַר דעם. אבער דאָס איז סאָרט פון אַ קאָמפּלעקס טעמע, און איך האָבן מער ביישפילן וואָס זענען געגאנגען צו ווייַזן אַרויף וואָס וועט העלפן דערקלערן וואָס פּוינטערז פאקטיש זענען. אין דעם פאַל, פּוינטערז זענען עקוויוואַלענט צו ערייז, אַזוי איך קען נאָר נוצן דעם טייַטל ווי די זעלבע זאַך ווי אַ ינט מענגע. אַזוי איך בין ינדעקסינג אין 0, און טשאַנגינג דער ערשטער ינטעגער צו 1, טשאַנגינג די רגע ינטעגער צו 2, און די 3 ינטעגער צו 3. אַזוי מער אויף פּוינטערז. נו, צוריקרופן בינקי. אין דעם פאַל מיר ווע אַלאַקייטיד אַ טייַטל, אָדער מיר דערקלערט אַ טייַטל, אָבער טכילעס, ווען איך נאָר דערקלערט אַ טייַטל, עס ס נישט פּוינטינג צו ערגעץ אין זכּרון. עס ס נאָר מיסט וואַלועס ין פון עס. אַזוי איך האב קיין געדאַנק ווו דעם טייַטל איז פּוינטינג צו. עס האט אַן אַדרעס וואָס איז נאָר אָנגעפילט מיט 0 ס און 1 ס ווו עס איז געווען טכילעס דערקלערט. איך קען נישט טאָן עפּעס מיט דעם ביז איך רופן מאַללאָק אויף עס און דעמאָלט עס גיט מיר אַ ביסל פּלאַץ אויף די קופּע ווו איך קענען לייגן וואַלועס ין. דעמאָלט ווידער, איך טאָן ניט וויסן וואָס ס 'ין פון דעם זכּרון. אַזוי דער ערשטער זאַך איך האָבן צו טאָן איז קאָנטראָלירן צי די סיסטעם האט גענוג זכּרון צו געבן מיר צוריק 1 ינטעגער אין דער ערשטער אָרט, וואָס איז וואָס איך בין טאן דעם טשעק. אויב טייַטל איז נאַל, אַז מיטל אַז עס האט נישט האָבן גענוג פּלאַץ אָדער עטלעכע אנדערע טעות פארגעקומען, אַזוי איך זאָל אַרויסגאַנג אויס פון מיין פּראָגראַם.  אבער אויב עס האט מצליח, איצט איך קענען נוצן אַז טייַטל און וואָס * טייַטל טוט איז עס גייט ווו דער אַדרעס איז צו ווו וואָס ווערט איז, און עס שטעלט עס גלייַך צו 1. אַזוי איבער דאָ, מיר רע קאָנטראָלירונג אויב אַז זכּרון געווען. אַמאָל איר וויסן עס יגזיסץ, איר קענען שטעלן אין עס וואָס ווערט איר ווילן צו שטעלן אין אים; אין דעם פאַל 1. אַמאָל מיר רע געטאן מיט אים, איר דאַרפֿן צו פֿרייַ אַז טייַטל ווייַל מיר דאַרפֿן צו באַקומען צוריק צו דער סיסטעם אַז זכּרון אַז איר געבעטן פֿאַר אין דער ערשטער אָרט. ווייַל דער קאָמפּיוטער טוט ניט וויסן ווען מיר רע געטאן מיט אים. אין דעם פאַל מיר רע בפירוש טעלינג עס, אָוקיי, מיר רע געטאן מיט וואָס זכּרון. אויב עטלעכע אנדערע פּראָצעס דאַרף עס, עטלעכע אנדערע פּראָגראַם דאַרף עס, פילן פֿרייַ צו גיין פאָרויס און נעמען עס. וואָס מיר קענען אויך טאָן איז מיר קענען נאָר באַקומען דעם אַדרעס פון היגע וועריאַבאַלז אויף דעם גאַנג. אַזוי ינט X איז ין די סטאַקט ראַם פון הויפּט. און ווען מיר נוצן דעם אַמפּערסאַנד, דעם און אָפּעראַטאָר, וואָס עס טוט איז עס נעמט X, און X איז נאָר עטלעכע דאַטן אין זכּרון, אָבער עס האט אַן אַדרעס. עס ס ליגן ערגעץ. אַזוי דורך פאַך & X, וואָס דאָס טוט איז עס גיט אונדז די אַדרעס פון X. דורך טאן דאָס, מיר רע מאכן טייַטל פונט צו ווו x איז אין זכּרון. איצט מיר נאָר טאָן עפּעס ווי * X, מיר רע געגאנגען צו באַקומען 5 צוריק. דער שטערן איז גערופן דערעפערענסינג עס. איר נאָכפאָלגן די אַדרעס און איר באַקומען די ווערט פון אים סטאָרד דאָרט. קיין שאלות? יא? [תּלמיד] אויב איר טאָן ניט טאָן די 3-שפּיציק זאַך, טוט עס נאָך צונויפנעמען? יא. אויב איר טאָן ניט טאָן די 3-טייַטל זאַך, עס ס נאָך געגאנגען צו צונויפנעמען, אָבער איך וועט ווייַזן איר וואָס כאַפּאַנז אין אַ רגע, און אָן טאן אַז, אַז ס וואָס מיר רופן אַ זכּרון רינען. איר ניטאָ ניט געבן דעם סיסטעם צוריק זייַן זכּרון, אַזוי נאָך אַ בשעת די פּראָגראַם איז געגאנגען צו אָנקלייַבן זכּרון אַז עס ס נישט ניצן, און גאָרנישט אַנדערש קענען נוצן עס. אויב איר ווע אלץ געזען פירעפאָקס מיט 1,500,000 קילאבייט אויף דיין קאָמפּיוטער, אין די אַרבעט פאַרוואַלטער, אַז ס 'וואָס ס געגאנגען אויף. איר האָבן אַ זכּרון רינען אין די פּראָגראַם אַז זיי ניטאָ ניט האַנדלינג. אַזוי ווי טוט טייַטל אַריטמעטיק אַרבעט? נו, טייַטל אַריטמעטיק איז סאָרט פון ווי ינדעקסינג אין אַ מענגע. אין דעם פאַל, איך האב אַ טייַטל, און וואָס איך טאָן איז איך מאַכן טייַטל פונט צו די ערשטער עלעמענט פון דעם מענגע פון ​​3 ינטאַדזשערז אַז איך ווע אַלאַקייטיד. אַזוי איצט וואָס איך טאָן, שטערן טייַטל נאָר ענדערונגען דער ערשטער עלעמענט אין דער רשימה. שטערן טייַטל +1 פונקטן איבער דאָ. אַזוי טייַטל איז איבער דאָ, טייַטל +1 איז איבער דאָ, טייַטל +2 איז איבער דאָ. אַזוי נאָר אַדינג 1 איז די זעלבע זאַך ווי מאָווינג צוזאמען דעם מענגע. וואָס מיר טאָן איז, ווען מיר טאָן טייַטל +1 איר באַקומען דעם אַדרעס איבער דאָ, און אין סדר צו באַקומען די ווערט אין דאָ, איר שטעלן אַ שטערן אין פון די גאנצע אויסדרוק צו דערעפערענסע עס. אַזוי, אין דעם פאַל, איך בין באַשטעטיקן דער ערשטער אָרט אין דעם מענגע צו 1, רגע אָרט צו 2, און דריט אָרט צו 3. דעמאָלט וואָס איך בין טאן איבער דאָ איז איך בין דרוקן אונדזער טייַטל +1, וואָס נאָר גיט מיר 2. איצט איך בין ינקרעמענטינג טייַטל, אַזוי טייַטל יקוואַלז טייַטל +1, וואָס באוועגט עס פאָרויס. און אַזוי איצט אויב איך דרוקן אויס טייַטל +1, טייַטל +1 איז איצט 3, וואָס אין דעם פאַל פּרינץ אויס 3. און אין סדר צו פֿרייַ עפּעס, די טייַטל אַז איך געבן עס מוזן זייַן פּוינטינג אין די אָנהייב פון די מענגע וואָס איך גאַט צוריק פון מאַללאָק. אַזוי, אין דעם פאַל, אויב איך געווען צו רופן 3 רעכט דאָ, דאָס וואָלט נישט זייַן רעכט, ווייַל עס ס אין די מיטן פון די מענגע. איך האָבן צו אַראָפּרעכענען צו באַקומען צו דער אָריגינעל אָרט די ערשט ערשטער אָרט איידער איך קענען פֿרייַ עס. אַזוי, דאָ ס אַ מער ינוואַלווד בייַשפּיל. אין דעם פאַל, מיר רע אַלאַקייטינג 7 אותיות אין אַ כאַראַקטער מענגע. און אין דעם פאַל וואָס מיר רע טאן איז מיר רע לופּינג איבער דער ערשטער 6 פון זיי, און מיר רע באַשטעטיקן זיי צו ז אַזוי, פֿאַר ינט איך = 0, איך> 6, איך + +, אַזוי, טייַטל + איך וועל נאָר געבן אונדז, אין דעם פאַל, טייַטל, טייַטל +1, טייַטל +2, טייַטל +3, און אַזוי אויף און אַזוי אַרויס אין די שלייף. וואָס עס ס געגאנגען צו טאָן איז עס געץ וואָס אַדרעס, דערעפערענסעס עס צו באַקומען די ווערט, און ענדערונגען, וואס ווערט צו אַ ז דעמאָלט אין די סוף געדענקען דעם איז אַ שטריקל, רעכט? כל סטרינגס האָבן צו סוף מיט די נאַל טערמאַנייטינג כאַראַקטער. אַזוי, וואָס איך טאָן איז אין טייַטל 6 איך שטעלן די נאַל טערמינאַטאָר כאַראַקטער ין און איצט וואָס איך בין בייסיקלי טאן איבער דאָ איז ימפּלאַמענינג פּרינטף פֿאַר אַ שטריקל, רעכט? אַזוי, ווען טוט פּרינטף איצט ווען עס ס 'ריטשט די סוף פון אַ שטריקל? ווען עס היץ די נאַל טערמאַנייטינג כאַראַקטער. אַזוי, אין דעם פאַל, מיין אָריגינעל טייַטל פונקטן צו די אָנהייב פון דעם מענגע. איך דרוק די ערשטער כאַראַקטער אויס. איך מאַך עס איבער איין. איך דרוקן אַז כאַראַקטער אויס. איך מאַך עס איבער. און איך האַלטן טאן דעם ביז איך דערגרייכן די סוף. און איצט דער סוף * טייַטל וועט דערעפערענסע דעם און באַקומען די נאַל טערמאַנייטינג כאַראַקטער צוריק. און אַזוי מיין בשעת שלייף לויפט נאָר ווען וואָס ווערט איז ניט די נאַל טערמאַנייטינג כאַראַקטער. אַזוי, איצט איך אַרויסגאַנג אויס פון דעם שלייף. און אַזוי אויב איך אַראָפּרעכענען 6 פון דעם טייַטל, איך גיין צוריק אַלע די וועג צו די אָנהייב. געדענק, איך בין טאן דעם ווייַל איך האָבן צו גיין צו די אָנהייב אין סדר צו פֿרייַ עס. אַזוי, איך וויסן וואָס איז געווען אַ פּלאַץ. זענען דאָרט קיין שאלות? ביטע, יאָ? [תּלמיד קשיא אַנינטעלאַדזשאַבאַל] קענען איר זאָגן אַז לאַודער? אנטשולדיגט. [תּלמיד] אויף די לעצטע רוק רעכט איידער איר באפרייט די טייַטל, ווו זענען איר פאקטיש טשאַנגינג די ווערט פון די טייַטל? [יוסף] אזוי, רעכט דאָ. >> [תּלמיד] אָה, אָוקיי. [יוסף] אזוי, איך האב אַ טייַטל מינוס מינוס, רעכט, וואָס באוועגט די זאַך צוריק איין, און דעמאָלט איך פֿרייַ עס, ווייַל דעם טייַטל האט צו זייַן אנגעוויזן צו די אָנהייב פון די מענגע. [תּלמיד] אבער וואָס וואָלט ניט זייַן דארף האט איר פארשטאפט נאָך אַז שורה. [יוסף] אזוי, אויב איך האט פארשטאפט נאָך דעם, דאָס וואָלט זייַן געהאלטן אַ זכּרון רינען, ווייַל איך האט נישט לויפן די פֿרייַ. [תּלמיד] איך [אַנינטעלאַדזשאַבאַל] נאָך די ערשטער דרייַ שורות ווו איר האט טייַטל +1 [אַנינטעלאַדזשאַבאַל]. [יוסף] וה-כאַ. אַזוי, וואָס ס די קשיא דאָרט? אנטשולדיגט. ניין, ניט. גיין, גיין, ביטע. [תּלמיד] אזוי, איר ניטאָ ניט טשאַנגינג די ווערט פון פּוינטערז. איר וואָלט ניט האָבן געהאט צו טאָן טייַטל מינוס מינוס. [יוסף] יא, פּונקט. אַזוי, ווען איך טאָן טייַטל +1 און טייַטל +2, איך בין נישט טאן טייַטל יקוואַלז טייַטל +1. אַזוי, די טייַטל נאָר סטייז פּוינטינג אין די אָנהייב פון די מענגע. עס ס נאָר ווען איך טאָן פּלוס פּלוס וואָס עס שטעלט דעם ווערט צוריק ין די טייַטל, אַז עס פאקטיש באוועגט דעם צוזאמען. אַלע רעכט. מער שאלות? ווידער, אויב דאָס איז סאָרט פון אָוווערוועלמינג, דאָס וועט זייַן באדעקט אין סעסיע. פרעגן דיין לערנען יונגערמאַן וועגן אים, און מיר קענען ענטפֿערן שאלות אין די סוף. און יוזשאַוואַלי מיר טאָן ניט ווי צו טאָן דאָס מינוס זאַך. דאס האט צו דאַרפן מיר בעכעסקעם שפּור פון ווי פיל איך ווע פאָטאָ אין די מענגע. אַזוי, אין אַלגעמיין, דאָס איז נאָר צו דערקלערן ווי טייַטל אַריטמעטיק אַרבעט. אבער וואָס מיר יוזשאַוואַלי ווי צו טאָן איז מיר ווי צו מאַכן אַ קאָפּיע פון ​​דעם טייַטל, און דעמאָלט מיר וועט נוצן אַז קאָפּיע ווען מיר רע מאָווינג אַרום אין די שטריקל. אַזוי, אין די פאַל איר נוצן די קאָפּיע צו דרוקן די גאנצע שטריקל, אָבער מיר טאָן ניט האָבן צו טאָן ווי טייַטל מינוס 6 אָדער האַלטן שפּור פון ווי פיל מיר אריבערגעפארן אין דעם, נאָר ווייַל מיר וויסן אַז אונדזער אָריגינעל פונט איז נאָך אנגעוויזן צו די אָנהייב פון די רשימה און אַלע וואָס מיר אָלטערד איז געווען דעם קאָפּיע. אַזוי, אין אַלגעמיין, יבערבייַטן קאפיעס פון דיין אָריגינעל טייַטל. דו זאלסט נישט פּרובירן צו סאָרט פון ווי - דאָון יבערבייַטן אָריגינעל קאפיעס. טריינג צו יבערבייַטן בלויז קאפיעס פון דיין אָריגינעל. אַזוי, איר באַמערקן ווען מיר פאָרן די שטריקל אין פּרינטף איר טאָן ניט האָבן צו שטעלן אַ שטערן אין פראָנט פון אים ווי מיר האבן מיט אַלע די אנדערע דערעפערענסעס, רעכט? אַזוי, אויב איר דרוקן אויס די גאנצע שטריקל% s יקספּעקץ איז אַן אַדרעס, און אין דעם פאַל אַ טייַטל אָדער אין דעם פאַל ווי אַ מענגע פון ​​אותיות. אותיות, טשאַר * ס, און ערייז זענען די זעלבע זאַך. טייַטל איז צו אותיות, און כאַראַקטער ערייז זענען די זעלבע זאַך. און אַזוי, אַלע מיר האָבן צו טאָן איז פאָרן אין טייַטל. מיר טאָן ניט האָבן צו פאָרן אין ווי * טייַטל אָדער עפּעס ווי אַז. אַזוי, ערייז און פּוינטערז זענען די זעלבע זאַך. ווען איר ניטאָ טאן עפּעס ווי X [י] איבער דאָ פֿאַר אַ מענגע, וואָס עס ס טאן אונטער די קאַפּטער איז עס ס זאגן, אָוקיי, עס ס אַ כאַראַקטער מענגע, אַזוי עס ס אַ טייַטל. און אַזוי X זענען די זעלבע זאַך, און אַזוי וואָס עס טוט איז עס מוסיף י צו X, וואָס איז די זעלבע זאַך ווי מאָווינג פאָרויס אין זכּרון אַז פיל. און איצט X + י גיט אונדז עטלעכע סאָרט פון אַדרעס, און מיר דערעפערענסע די אַדרעס אָדער נאָכפאָלגן די פייַל צו ווו אַז אָרט אין זכּרון איז און מיר באַקומען דעם ווערט אויס פון וואָס אָרט אין זכּרון. אַזוי, אַזוי די צוויי זענען פּונקט די זעלבע זאַך. עס ס נאָר אַ סינטאַקטיק צוקער. זיי טאָן די זעלבע זאַך. זיי ניטאָ נאָר פאַרשידענע סינטאַקטיקס פֿאַר יעדער אַנדערער. אַזוי, וואָס קענען גיין אומרעכט מיט פּוינטערז? ווי, אַ פּלאַץ. אָוקיי. אַזוי, שלעכט זאכן. עטלעכע שלעכט זאכן איר קענען טאָן זענען נישט קאָנטראָלירונג אויב דיין מאַללאָק רופן קערט נאַל, רעכט? אין דעם פאַל, איך בין אַסקינג די סיסטעם צו געבן מיר - וואָס איז וואָס נומער? ווי 2000000000 מאל 4, ווייַל די גרייס פון אַ ינטעגער איז 4 ביטעס. איך בין אַסקינג עס פֿאַר ווי 8000000000 ביטעס. פון לויף מיין קאָמפּיוטער איז נישט געגאנגען צו זייַן ביכולת צו געבן מיר אַז פיל זכּרון צוריק. און מיר האט ניט טשעק אויב דאָס איז נאַל, אַזוי ווען מיר פּרובירן צו דערעפערענסע עס איבער דאָרט - נאָכפאָלגן די פייַל צו ווו עס ס געגאנגען צו - מיר טאָן נישט האָבן וואָס זכּרון. דאס איז וואָס מיר רופן דערעפערענסינג אַ נאַל טייַטל. און דעם יסענשאַלי ז איר צו סעגפאַולט. דאס איז איינער פון די וועגן איר קענען סעגפאַולט. אנדערע שלעכט זאכן איר קענען טאָן - טאַקע געזונט. וואָס איז געווען דערעפערענסינג אַ נאַל טייַטל. אָוקיי. אנדערע שלעכט זאכן - געזונט, צו פאַרריכטן אַז איר נאָר לייגן אַ טשעק אין דאָרט אַז טשעקס צי די טייַטל איז נאַל און אַרויסגאַנג אויס פון די פּראָגראַם אויב עס כאַפּאַנז אַז מאַללאָק קערט אַ נאַל טייַטל. אַז ס די קסקקד קאָמיקער. מען פֿאַרשטיין עס איצט. סאָרט פון. אַזוי, זכּרון. און איך געגאנגען איבער דעם. מיר רע פאַך מאַללאָק אין אַ שלייף, אָבער יעדער צייַט מיר רופן מאַללאָק מיר רע לוזינג שפּור פון ווו דעם טייַטל איז פּוינטינג צו, ווייַל מיר רע קלאַבערינג עס. אַזוי, די ערשט רופן צו מאַללאָק גיט מיר זכּרון איבער דאָ. מייַן טייַטל פּוינטערז צו דעם. איצט, איך טאָן ניט פֿרייַ עס, אַזוי איצט איך רופן מאַללאָק ווידער. איצט עס ווייזט איבער דאָ. איצט מיין זכּרון איז פּוינטינג איבער דאָ. פּוינטינג איבער דאָ. פּוינטינג איבער דאָ. אבער איך ווע פאַרפאַלן שפּור פון די ווענדט פון אַלע די זכּרון איבער דאָ וואָס איך אַלאַקייטיד. און אַזוי איצט איך טאָן ניט האָבן קיין דערמאָנען צו זיי ענימאָר. אַזוי, איך קען נישט פֿרייַ זיי אַרויס פון דעם שלייף. און אַזוי אין סדר צו פאַרריכטן עפּעס ווי דעם, אויב איר פאַרגעסן צו פֿרייַ זכּרון און איר באַקומען דעם זכּרון רינען, איר האָבן צו פֿרייַ די זכּרון ין פון דעם שלייף אַמאָל איר ניטאָ געטאן מיט אים. נו, דאָס איז וואָס כאַפּאַנז. איך וויסן גורל פון איר האַס דאָס. אבער איצט - ייי! איר באַקומען ווי 44,000 קילאבייט. אַזוי, איר פּאָטער עס אין די סוף פון די שלייף, און אַז ס 'געגאנגען צו נאָר פֿרייַ די זכּרון יעדער צייַט. יסענשאַלי, דיין פּראָגראַם טוט נישט האָבן אַ זכּרון רינען ענימאָר. און איצט עפּעס אַנדערש איר קענען טאָן איז פֿרייַ עטלעכע זכּרון אַז איר ווע געבעטן פֿאַר צוויי מאָל. אין דעם פאַל, איר מאַללאָק עפּעס, איר טוישן זייַן ווערט. איר פּאָטער עס אַמאָל ווייַל איר האט געזאגט איר האבן געטאן מיט אים. אבער דעמאָלט מיר באפרייט עס ווידער. דאס איז עפּעס אַז ס 'שיין שלעכט. עס ס ניט געגאנגען צו טכילעס סעגפאַולט, אָבער נאָך אַ בשעת וואָס דאָס טוט איז טאָפּל פריינג דעם קעראַפּץ דיין קופּע סטרוקטור, און איר וועט לערנען אַ קליין ביסל מער וועגן דעם אויב איר קלייַבן צו נעמען אַ סאָרט ווי קס61. אבער יסענשאַלי נאָך אַ בשעת דיין קאָמפּיוטער איז געגאנגען צו באַקומען צעמישט וועגן וואָס זכּרון לאָוקיישאַנז זענען ווו און ווו עס ס סטאָרד - ווו דאַטן איז סטאָרד אין זכּרון. און אַזוי פריינג אַ טייַטל צוויי מאָל איז אַ שלעכט זאַך וואָס איר טאָן נישט וועלן צו טאָן. אנדערע זאכן וואָס קענען גיין אומרעכט איז נישט ניצן סיזעאָף. אַזוי, אין דעם פאַל איר מאַללאָק 8 ביטעס, און אַז ס די זעלבע זאַך ווי צוויי ינטאַדזשערז, רעכט? אַזוי, אַז ס בישליימעס זיכער, אָבער איז עס? נו, ווי לוקאַס גערעדט וועגן אויף פאַרשידענע אַרקאַטעקטשערז, ינטאַדזשערז זענען פון פאַרשידענע לענגקטס. אַזוי, אויף די אַפּפּליאַנסע אַז איר ניטאָ ניצן, ינטאַדזשערז זענען וועגן 4 ביטעס, אָבער אויף עטלעכע אנדערע סיסטעם זיי זאל זייַן 8 ביטעס אָדער זיי זאל זייַן 16 ביטעס. אַזוי, אויב איך נאָר נוצן דעם נומער איבער דאָ, דעם פּראָגראַם זאל אַרבעטן אויף דעם אַפּפּליאַנסע, אָבער עס ס ניט געגאנגען צו אַלאַקייט גענוג זכּרון אויף עטלעכע אנדערע סיסטעם. אין דעם פאַל, דאָס איז וואָס די סיזעאָף אָפּעראַטאָר איז געניצט פֿאַר. ווען מיר רופן סיזעאָף (ינט), וואָס דאָס טוט איז  עס גיט אונדז די גרייס פון אַ ינטעגער אויף די סיסטעם אַז דער פּראָגראַם איז פליסנדיק. אַזוי, אין דעם פאַל, סיזעאָף (ינט) וועט צוריקקומען 4 אויף עפּעס ווי די אַפּפּליאַנסע, און איצט דעם וועט 4 * 2, וואָס איז 8, וואָס איז נאָר די סומע פון ​​פּלאַץ נייטיק פֿאַר צוויי ינטאַדזשערז. אויף אַ אַנדערש סיסטעם, אויב אַ ינט איז ווי 16 ביטעס אָדער 8 ביטעס, עס ס נאָר געגאנגען צו צוריקקומען גענוג ביטעס צו קראָם אַז סומע. און לעסאָף, סטרוקץ. אַזוי, אויב איר געוואלט צו קראָם אַ סודאָקו ברעט אין זכּרון, ווי זאל מיר טאָן דעם? איר זאל טראַכטן פון ווי אַ בייַטעוודיק פֿאַר דער ערשטער זאַך, אַ בייַטעוודיק פֿאַר די רגע זאַך, אַ בייַטעוודיק פֿאַר די דריט זאַך, אַ בייַטעוודיק פֿאַר דער פערט זאַך - שלעכט, רעכט? אַזוי, איינער פֿאַרבעסערונג איר קענען מאַכן אויף שפּיץ פון דעם איז צו מאַכן אַ 9 X 9 מענגע. אַז ס פייַן, אָבער וואָס אויב איר געוואלט צו מיטאַרבעטער אנדערע זאכן מיט די סודאָקו ברעט ווי וואָס די שוועריקייט פון די ברעט איז, אָדער, פֿאַר בייַשפּיל, וואָס דיין כעזשבן איז, אָדער ווי פיל צייַט עס ס גענומען איר צו סאָלווע דעם ברעט? נו, וואָס איר קענען טאָן איז איר קענען שאַפֿן אַ סטרוקט. וואָס איך בין בייסיקלי געזאגט איז איך בין דיפיינינג דעם סטרוקטור איבער דאָ, און איך בין דיפיינינג אַ סודאָקו ברעט וואָס באשטייט פון אַ ראַט וואָס איז 9 X 9. און וואָס עס האט עס האט פּוינטערז צו די נאָמען פון די מדרגה. עס אויך האט X און י, וואָס זענען די קאָואָרדאַנאַץ פון ווו איך בין רעכט איצט. עס אויך האט צייַט פארבראכט [אַנינטעלאַדזשאַבאַל], און עס האט די גאַנץ נומער פון באוועגט איך ווע ינפּוטטעד אַזוי ווייַט. און אַזוי אין דעם פאַל, איך קענען גרופּע אַ גאַנץ בינטל פון דאַטן אין נאָר איין סטרוקטור אַנשטאָט פון בעת ​​עס ווי פליענדיק אַרום אין ווי פאַרשידענע וועריאַבאַלז אַז איך קענען ניט טאַקע האַלטן שפּור פון. און דעם לעץ אונדז האָבן נאָר פייַן סינטאַקס פֿאַר סאָרט פון רעפעראַנסינג פאַרשידענע זאכן ין פון דעם סטרוקט. איך קען נאָר טאָן באָאַרד.באָאַרד, און איך באַקומען די סודאָקו ברעט צוריק. באָאַרד.לעוועל, איך באַקומען ווי האַרט עס איז. באָאַרד.קס און באָאַרד.י געבן מיר דעם קאָואָרדאַנאַץ פון ווו איך זאל זייַן אין דעם ברעט. און אַזוי איך בין אַקסעסינג וואָס מיר רופן פעלדער אין די סטרוקט. דאס דיפיינז סודאָקובאָאַרד, וואָס איז אַ טיפּ אַז איך האָבן. און איצט מיר רע דאָ. איך האָבן אַ בייַטעוודיק גערופן "ברעט" פון טיפּ סודאָקובאָאַרד. און אַזוי איצט איך קענען צוטריט אַלע די פעלדער וואָס מאַכן זיך דעם סטרוקטור איבער דאָ. קיין שאלות וועגן סטרוקץ? יא? [תּלמיד] פֿאַר ינט X, י, איר דערקלערט ביידע אויף איין שורה? >> [יוסף] וה-כאַ. [תּלמיד] אזוי, קען איר נאָר טאָן אַז מיט אַלע פון ​​זיי? ווי אין X, י קאָמע מאל אַז גאַנץ? [יוסף] יא, איר קען באשטימט טאָן וואָס, אָבער די סיבה איך שטעלן X און י אויף די זעלבע שורה - און די קשיא איז וואָס קענען מיר נאָר טאָן דאָס אויף די זעלבע שורה? פארוואס טאָן נישט מיר נאָר שטעלן אַלע פון ​​די אויף די זעלבע שורה איז X און י ביסט שייַכות צו יעדער אַנדערער, און דאָס איז נאָר סטייליסטיקלי מער ריכטיק, אין אַ געפיל, ווייַל עס ס גרופּינג צוויי זאכן אויף די זעלבע שורה אַז ווי סאָרט פון פאַרבינדן צו די זעלבע זאַך. און איך נאָר שפּאַלטן די באַזונדער. עס ס נאָר אַ נוסח זאַך. עס פאַנגקשאַנאַלי מאכט קיין חילוק כוואַצאָועווער. קיין אנדערע שאלות אויף סטרוקץ? איר קענען דעפינירן אַ פּאָקéדעקס מיט אַ סטרוקט. א פּאָקעמאָן האט אַ נומער און עס האט אַ בריוו, אַ באַזיצער, אַ טיפּ. און דעריבער אויב איר האָבן אַ מענגע פון ​​פּאָקעמאָן, איר קענען מאַכן זיך אַ פּאָקéדעקס, רעכט? אָוקיי, קיל. אַזוי, פראגעס אויף סטרוקץ. יענע זענען שייַכות צו סטרוקץ. צום סוף, גדב. וואָס טוט גדב לאָזן איר טאָן? עס לעץ איר דעבוג דיין פּראָגראַם. און אויב איר האָט ניט געוויינט גדב, איך וואָלט רעקאַמענדיד וואַטשינג די קורץ און נאָר געגאנגען איבער וואָס גדב איז, ווי איר אַרבעט מיט אים, ווי איר זאל נוצן עס, און פּרובירן עס אויף אַ פּראָגראַם. און אַזוי וואָס גדב לעץ איר טאָן איז עס לעץ פּויזע די [אַנינטעלאַדזשאַבאַל] אַרויף דיין פּראָגראַם און אַ פּראַקטיש שורה. פֿאַר בייַשפּיל, איך ווילן צו פּויזע דורכפירונג אין ווי שורה 3 פון מיין פּראָגראַם, און בשעת איך בין בייַ שורה 3 איך קענען דרוקן אויס אַלע די וואַלועס וואָס זענען דאָרט. און אַזוי וואָס מיר רופן ווי פּאָזינג אין אַ שורה איז מיר רופן דעם פּאַטינג אַ ברעאַקפּאָינט בייַ אַז שורה און דעמאָלט מיר קענען דרוקן אויס די וועריאַבאַלז בייַ די שטאַט פון די פּראָגראַם אין אַז צייַט. מיר קענען דעריבער פון דאָרט שריט דורך די פּראָגראַם שורה-דורך-שורה. און דעמאָלט מיר קענען קוקן אין די שטאַט פון דעם אָנלייגן אין די צייַט. און אַזוי אין סדר צו נוצן גדב, וואָס מיר טאָן איז מיר רופן קלאַנג אויף די C טעקע, אָבער מיר האָבן צו פאָרן עס דער-גגדב פאָן. און אַמאָל מיר רע געטאן מיט וואָס מיר נאָר לויפן גדב אויף די ריזאַלטינג רעזולטאַט טעקע. און אַזוי איר באַקומען עטלעכע ווי מאַסע פון ​​טעקסט ווי דעם, אָבער טאַקע אַלע איר האָבן צו טאָן איז טיפּ אין קאַמאַנדז אין די אָנהייב. ברעכן הויפּט לייגט אַ ברעאַקפּאָינט אין הויפּט. רשימה 400 רשימות די שורות פון קאָד אַרום שורה 400. און אַזוי אין דעם פאַל איר קענען נאָר קוק אַרום און זאָגן, טאַקע, איך ווילן צו שטעלן אַ ברעאַקפּאָינט בייַ שורה 397, וואָס איז דעם שורה, און דעמאָלט דיין פּראָגראַם לויפט אין אַז שריט און עס ס געגאנגען צו ברעכן. עס ס געגאנגען צו פּויזע דאָרט, און איר קענען דרוקן אויס, פֿאַר בייַשפּיל, ווערט פון נידעריק אָדער הויך. און אַזוי עס זענען אַ בינטל פון קאַמאַנדז איר דאַרפֿן צו וויסן, און דעם סלידעשאָוו וועט גיין אַרויף אויף דער וועבזייַטל, אַזוי אויב איר נאָר ווילן צו דערמאָנען די אָדער ווי שטעלן זיי אויף דיין אָפּנאַרן שיץ, פילן פֿרייַ. קיל. וואָס איז געווען קוויז איבערבליק 0, און מיר וועט שטעקן אַרום אויב איר האָט קיין שאלות. אַלע רעכט.  [אַפּלאָדיסמענטן] [CS50.TV]