ההיסטוריה של התהוות של התחביר המודרני של שפת התכנות דומה בקיאות בתהליכי היווצרות היקום. מה ואיך זה היה בהתחלה ... אבל עכשיו הכל פשוט ונגיש.
אלגוריתם בסוף - תמידשרשרת רצופה של פקודות. מקביליות בתכנות היא שילוב של רצפים משולבים איכשהו. אלגוריתם לולאה מעולם לא היה מעשי יותר מאשר שרשרת רציפה או מקבילה של פקודות. תוויות, מעברים ותנאים - רק מספיק לכל החלטה. שפות פונקציונליות שללו את הרעיונות האלה, אבל הצורך לחזור על חלקים מהקוד נשאר.
דפדפן: DOM, שפת + שרת
На JavaScript циклы остались, хотя функциональные לרעיונות יש משמעות מיוחדת. אולי נשאר משהו בליספל ובפרולוג, אבל קרוב לוודאי שהאזור שבו ג 'אווה חי הוא מה שקרה, אבל ספק אם זה הפתרון האחרון.
JavaScript פועל בתוך הדפדפן אשרמקבל את הדף, מנתח אותו ל- DOM ומריץ את התסריט הראשון. כל שאר העמודים, כולל העמודים המופיעים בדף זה, הם עבודתו של מפתח המתפעל את השפה באמצעותה ניתן להתקשר לקוד בשרת ולקבל את התוצאה באמצעות מנגנון AJAX.
הדפדפן מבצע קוד JavaScript שיכולהשתמש באובייקטים של דפדפן, כולל זה המספק העברת מידע לשרת וקבלת תגובה, שיכולה להיות גם סימון HTML וסגנונות וגם הקוד בפועל. את התשובה ניתן לייצג על ידי מערכים וחפצים. המשמעות של שימוש בלולאות ב- JavaScript אבדה, יש הרבה הזדמנויות להסתדר בלעדיהן, והסיכון לתלות את הדפדפן ברצף אינסופי של פקודות הוא לא הפיתרון הטוב ביותר.
לולאות עצמן קיימות ברוב המבנים התחביריים של JavaScript; היזם יכול להשלים את המבנים הסטנדרטיים עם הפונקציות שלו.
מיקום JavaScript במרחב הקוד
מתכנת מודרני אפילו לא חושב על כךהלולאה שהוא משתמש בה (במשך, בזמן, לעשות בזמן, ...) היא בסופו של דבר סדרה של מחזורי מעבד (מחזורים), רצף פשוט של פעולות בינאריות המופרעות על ידי בדיקות נגדיות, כלומר תנאים.
ככזה, אין לולאה ברמת שפת המכונה:יש שילוב של פקודות רגילות, פעולות מותנות וקפיצות. רמה אחת למעלה, בכל כלי שמשמש לפיתוח הדפדפן והמתורגמן של JavaScript, הלולאות יהיו חד משמעיות. יתר על כן, "פיסות קוד" יוצגו בזמנים שונים ועל ידי דורות שונים של מתכנתים. קומה אחת מעל נמצאת "בניין" JavaScript. התחביר שלו מציע לולאות JavaScript מודרניות.
JS היא שפה נהדרת:פרקטי, מודרני ומתפקד לחלוטין. התחביר של כלי זה כולל את כל הקונסטרוקציות שעברו את מבחן הזמן והפכו לבסיס הבלתי מעורער של כל אלגוריתם. אבל האם לולאות באמת נחוצות? ההתקדמות בתכנות שאלה את עצמה לעתים קרובות שאלות בעלות אופי מהותי, אך רק במקרים מעטים היא מצאה פיתרון.
נימוקים אובייקטיביים
המחזור יכול להיות משתי אפשרויות בלבד:לפי תנאי או לפי דלפק, אך למעשה (ברמה הנמוכה ביותר) כל לולאה מותנית בלבד. בחלק מהשפות יש מחזור "לכל אחת". ב- JavaScript, לולאות foreach מיוצגות על ידי אבזר בבניית אובייקט, אך ניתן להשתמש במשתנה array.forEach (...).
בכל מקרה, ישנן שתי אפשרויות:לקוד המכונה שמבצע בסופו של דבר את כל האלגוריתמים של המתכנת, אפילו אלה שכותבים בשפות פרשניות, אין אפשרויות אחרות לחזור על שרשרת הפקודות: הוא יכול לבצע משהו שוב בזמן:
- ספירת הדלפק;
- כל עוד התקיים התנאי.
JavaScript הוא מתורגמן טיפוסי.המוזרות שלו: היא מתפקדת בתוך הדפדפן, משתמשת באובייקטים שלה ומאפשרת ביצוע אלגוריתמים בצד הלקוח, הן כאשר העמוד נטען לדפדפן והן במהלך פעולתו.
לולאה פשוטה לכל אחד
ב- JavaScript, לולאות foreach נראות כמו החלת פונקציה על מערך:
השימוש בלולאות כאלה הוא פשוט. רשמית, אין מחזור ככזה. יש קריאה רציפה של הפונקציה לאלמנטים במערך.
מחזור נגד
לולאות נראות מוכרות יותר ב- JavaScript:
כאן, המונה הוא משתנה, הערךשמשתנה על פי הנוסחה וסיום המחזור מצוין על ידי המצב. הנוסחה והתנאי אינם צריכים לכלול משתנה לולאה. אך השליטה בסוף המחזור נקבעת לחלוטין על פי תוכנם.
לולאות מותנות
בעוד שאפשרות JavaScript מציעה ב-תלוי מתי ברצונך לבדוק את המצב. אם לא ניתן לבצע את גוף המחזור אפילו פעם אחת, זה דבר אחד, אם צריך להוציא את הגוף לפחות פעם אחת, זה שונה:
במקרה הראשון, פרשנות הבנייה בזמן,JavaScript בודק תחילה את התנאי, ואם הוא נכון, הוא לולאה. במקרה השני המחזור יבוצע תחילה. אם, כתוצאה משינוי המשתנים שצוינו במצב הבנייה לעשות בזמן, זה יהיה שקר, והלולאה תפסיק לבצע.
שילובים מאסיביים של אלגוריתמים פשוטים
המשימה העיקרית (החלק המרכיב) של כל אחת מהןאלגוריתם - למצוא, רק אז קבל החלטה מה לעשות הלאה. אפשרות החיפוש הפרימיטיבית ביותר היא גישה למשתנה, התוצאה מתקבלת ישירות. אם ישנם משתנים רבים, או שיש לו ערכים רבים (מערך), אז כדי לבחור ערך, עליך למצוא משהו שיקבע את התנהגותו נוספת של הסקריפט.
דוקטרינה כל כך פשוטה שנעשתה לולאה עם מונה ב- JavaScript היא סוג שלתרופת פלא לכל המטלות. מחשבים מודרניים מהירים. יש מספיק זמן לבצע סקריפטים בדפדפן, אין מה למהר. קל לסדר משהו למען משהו. כתוצאה מכך, ב- JavaScript לולאות הפך פופולרי מאוד.
נראה שאין שום דבר רע בזה. אך מאחורי גישה כזו, המהות שלשמה נכתב אלגוריתם כזה או אחר הולכת לאיבוד בקלות. נתונים לעולם אינם חסרי טעם. כל מה שכל תוכנית נכתבת אליו הגיוני. שותה יותר מדי על JavaScript עבור לולאות, יתכן שהמפתח לא יראה את הישות הרצויה ולא ייצור אלגוריתם הולם.
פונקציונליות, תצוגת מציאות שונה
על ידי פנייה דוגמאות לולאות JavaScript מאותו סוג של קוד ניתן לייצג על ידי פונקציות - האלגוריתם יתמרה באופן מיידי, גוף התסריט הראשי יקטן בגודלו, הכל יהפוך לקריא ומובן.
זה לא פיתרון חדש לחלוטין, אך במהותו הוא אינו חורג ממבני שפה אחרים. בפרט, יניתן למצוא לולאות avaScript בפונקציה split () הקלאסית:
var cResult = "9,8,7,6,5,4";
var תוצאה = cResult.לְפַצֵל(",");
אין כאן לולאה, אך כיצד אחרת מבוצעת פונקציה זו אם לא על ידי חיפוש הדמות "," ובאמצעותה להפריד מספר אחד לאחר.
הפשטה מאופן יישומה באופן פנימיפונקציות split (), ניתן להוסיף JavaScript עם פונקציונליות משלה המשתמשת בלולאות, מנקודת מבט השימוש - נוח יותר. חיוני כי גישה זו תוביל לפיתוח פונקציונליות לכל משימה בהתאמה, אך הגנרל עדיין יהיה בגישה זו.
פונקציות אלה allt (), padc (), padl () ו- padr () הןשאינו נמצא ב- JavaScript, אך לפעמים עליך להסיר רווחים מהמחרוזת או ליישר את אורך המחרוזת לצד שמאל, ימין או שני הצדדים. גוף הפונקציות מכיל לולאות JavaScript. פשוט, משתלם ולעולם לא יקפיא את האלגוריתם המשתמש בו.
וריאציות של פונקציות להמרת מספרים מהקסדצימלי למערכת המספרים העשירית ולהיפך, קל יותר לומר, מתבנית נתונים אחת לאחרת, מבוצעות כאן באמצעות לעשות בזמן לולאות. תחביר שפה קומפקטי ויעיל מאוד.
מחזורים נכונים - הצגת מציאות
JavaScript אינו תואם לשפות תכנות אחרות ואינו שונה במגוון גרסאות, והכי חשוב, הוא מבקש לא לשנות את התחביר, אלא לפתח ולהרחיב אותו.
הלך הרוח של מתכנת המשתמש ב- JS שונה מתוך חשיבה של מתכנת ה- PHP (בפרט ושפות אחרות במצטבר, ובכן, פרט לכך ש"פרולוג "ועוקביו אינם כלולים במיינסטרים), כאשר האלגוריתם אינו מוגבל למשתנים, מערכים, מפעילי הקצאות, קונסטרוקציות לולאה.
אם נדמיין שאין מחזורים, והבעיה נפתרתיש צורך, ואז האפשרות הפשוטה ביותר (כיסוי עיניים) היא להניח שהתוכנית מעבדת נתונים שהם נקודה או מערכת נקודות במרחב המידע. מהי נקודה ומהי מערכת נקודות זה עניין של תחום נושא ספציפי. עבור מתכנת פירוש התזה הזו: יש נתונים פשוטים ויש אוסף של נתונים פשוטים. מטבע הדברים, הנתון הפשוט של רמה אחת לרמה שמתחת יהיה מערכת, ולרמה שמעליה תהיה נקודה.
בגישה זו, עיקר העניין הוא לבטא את המהות שלך באמצעות השיטות שלך. כאשר נקודה נמצאת במערכת על, אזי תפקידה של המערכת לבטא את מהותה כמערכת ישויות של הנקודות הכלולות בה.
גישה זו ישנה כמו רעיון השפותתכנות, אך עדיין לא מצא את השתקפותו הנאותה בתכנות. מתכנתים רבים חושבים נכון, אך תוצאת היצירתיות שלהם מותירה הרבה מהדבר הרצוי.
מועיל ללבוש כיסוי עיניים לפעמים כדי לראות את העולם!