# data[].attributes.headline
שיעור מערך חד ממדי  - חלק 1 - דוגמאות למערכים

# data[].attributes.subject
שיעור מערך חד ממדי  - חלק 1 - דוגמאות למערכים

# data[].attributes.body
אם הייתי מבקש מכם לשמור ציונים של כיתה על דף, איך הייתם מארגנים את הנתונים?

# data[].attributes.headline
דוגמא של מערך - תיבת דואר

# data[].attributes.subject
דוגמא של מערך - תיבת דואר

# data[].attributes.attachment_link.title
תיבות-דואר-על-קיר-6

# data[].attributes.headline
שיעור מערך חד ממדי  - חלק 2 - הסבר בסיסי ודוגמת קוד

# data[].attributes.subject
שיעור מערך חד ממדי  - חלק 2 - הסבר בסיסי ודוגמת קוד

# data[].attributes.headline
מערך חד-ממדי הוא מבנה נתונים שמאחסן אוסף של פריטים מסוג זהה (למשל מספרים או מילים) באופן מסודר לפי מיקום

# data[].attributes.subject
מערך חד-ממדי הוא מבנה נתונים שמאחסן אוסף של פריטים מסוג זהה (למשל מספרים או מילים) באופן מסודר לפי מיקום

# data[].attributes.headline
דוגמא למערך של ציונים

# data[].attributes.subject
דוגמא למערך של ציונים

# data[].attributes.headline
שיעור מערך חד ממדי  - חלק 3 - הסבר מעמיק וסרטון

# data[].attributes.subject
שיעור מערך חד ממדי  - חלק 3 - הסבר מעמיק וסרטון

# data[].attributes.headline
סרטון של 5 דקות על מערך חד מימדי

# data[].attributes.subject
סרטון של 5 דקות על מערך חד מימדי

# data[].attributes.headline
שאלות הבנה עד כה?

# data[].attributes.subject
שאלות הבנה עד כה?

# data[].attributes.headline
שיעור מערך חד ממדי  - חלק 4 - תרגול עבודה בקבוצות

# data[].attributes.subject
שיעור מערך חד ממדי  - חלק 4 - תרגול עבודה בקבוצות

# data[].attributes.headline
תרגיל (עבודה בקבוצות) - צור מערך של שמות חברי הקבוצה והדפס את השם השלישי במערך.

# data[].attributes.subject
תרגיל (עבודה בקבוצות) - צור מערך של שמות חברי הקבוצה והדפס את השם השלישי במערך.

# data[].attributes.headline
פתרונות לתרגיל - הדביקו את תשובתכם מתחת לכרטיס זה

# data[].attributes.subject
פתרונות לתרגיל - הדביקו את תשובתכם מתחת לכרטיס זה

# data[].attributes.body
my answer

# data[].attributes.headline
שיעור מערך חד ממדי  - חלק 5 - שאלות סקר

# data[].attributes.subject
שיעור מערך חד ממדי  - חלק 5 - שאלות סקר

# data[].attributes.wish_content.attachment_props.question
כיצד אפשר להגדיר מערך של 10 מספרים שלמים בג'אווה?

# data[].attributes.wish_content.attachment_props.poll_choices[].choice_text
שתי האפשרויות נכונות!

# data[].attributes.wish_content.attachment_props.question
איך שומרים במקום ה 3 במערך

# data[].attributes.wish_content.attachment_props.question
Can you define an array with a variable as size? int [] array = new int[size];

# data[].attributes.wish_content.attachment_props.question
איך מעבירים את הערך במקום ה-3 במערך למיקום ה-2? 

# data[].attributes.wish_content.attachment_props.question
האם ניתן להגדיר מערך של משתנים מסוג bool או string?

# data[].attributes.wish_content.attachment_props.poll_choices[].choice_text
אפשר לשני הסוגים

# data[].attributes.wish_content.attachment_props.poll_choices[].choice_text
אי אפשר להגדיר לשניהם!

# data[].attributes.headline
שיעור מערך חד ממדי  - חלק 6 - תרגול עצמי

# data[].attributes.subject
שיעור מערך חד ממדי  - חלק 6 - תרגול עצמי

# data[].attributes.body
Please write a short program that performs the following:

Defines an integers array of size of 10

Receives 10 integers, each is a different student grade

calculate the average grade (double) of the entire class

prints the output average grade

# data[].attributes.headline
ויקיפדיה - מערך

# data[].attributes.subject
ויקיפדיה - מערך

# data[].attributes.attachment_link.readable_text
ב מדעי המחשב, מערך (Array) הוא אחד מ מבני הנתונים הפשוטים ביותר: מערך הוא אוסף פריטים שניתן לגשת אליהם בצורה ישירה באמצעות אינדקס.

באופן עקרוני, מערך הוא בעצם מקרה ספציפי של מילון בו המפתחות הם מספרים טבעיים או תווים, ו סיבוכיות גישה ישירה לכל נתון בודד באוסף לפי אינדקס היא קבועה ( ). ולכן הוא סוג של מבנה נתונים מופשט. עם זאת, מערכים הם טיפוס נתונים פרימיטיבי ברוב שפות התכנות (האימפרטיביות) ולכן כשמדברים על מערך מתכוונים לרוב ל מימוש נפוץ כלשהו שלו.

תכונה נוספת של המבנה היא דרישות ה זיכרון שלו - מבנה הנתונים דורש בדיוק את הזיכרון הנדרש עבור הנתונים עצמם, ובכך הוא החסכוני מבין כל מבני הנתונים.

למערך שני חסרונות בולטים שקשורים למבנה הסטאטי שלו:

1. הראשון שבהם הוא חוסר הגמישות שבו: קשה למחוק איברים ממערך תוך שמשאירים את האיברים הנותרים סמוכים זה לזה, שכן אם נמחק את אחד האיברים נצטרך להעביר את כל האיברים שאחריו מקום אחד אחורה בזיכרון, פעולה שהיא בסיבוכיות , כאשר הוא מספר התאים שיש להזיז.

2. כמו כן, אין זה פשוט להוסיף למערך איברים חדשים. ייתכן שתאי הזיכרון שאחרי המקום האחרון במערך כבר נתפסו למטרה אחרת, ולפיכך כדי להגדיל את המערך יש להעתיק את כולו מחדש לרצף תאים פנויים במספר הנדרש. אומנם, ניתן להראות שהעלות המשוערכת של הוספת תאים חדשים בדרך חכמה (על פי רוב, הכפלת המערך פי שניים בכל פעם שנדרשים להגדיל אותו) לא תעלה על .

ב תכנות מערכים ממומשים בדרך כלל על ידי קטע רציף של זיכרון אשר מחולק בין כל הנתונים באוסף. למשתנה המסמל את הרצף זה יש שם יחיד, וכל אחד מהנתונים נקרא איבר של המערך. אל כל איבר באוסף מתייחסים באמצעות שם המערך ואינדקס של הערך (לרוב מספרו הסידורי של האיבר בתוך האוסף).

ישנן שתי שיטות מקובלות להגדרה של מיקומי האיברים במערך: מרחק מתחילת המערך, ומספור הערך במערך. בשיטה הראשונה, ה מיון מתבצע לפי המרחק של הערך מהערך הראשון במערך, כך שהערך הראשון במערך מקבל מיקום 0, הערך השני - מיקום 1, והערך ה- -י - את המיקום ה- . בשיטה השנייה, מספור הערך במערך, המיון מתבצע לפי מספר הערך במערך, כך הערך הראשון יהיה במיקום 1, הערך השני במיקום 2, והערך ה- -י - במיקום ה- .

השיטה הראשונה מייצגת באופן ברור יותר את המימוש של מערך כגוש זיכרון רצוף, ומהווה למעשה את הדרך בה ה מחשב מתייחס למערך. השיטה השנייה מייצגת באופן יותר ברור את מיקום הערכים כפי שמקובל בשפת אדם, ויותר פשוטה להבנה.

בשפת Pascal ממומש מיון הערכים במערך בדרך השנייה (זאת אומרת, הערך הראשון במערך יקבל מען 1). בשפת C לעומת זאת משתמשים בשיטה הראשונה.

נניח שרוצים לאחסן את הרשימה של המספרים הריבועיים {1,4,9} בזיכרון המחשב. יש להגדיר מערך שיכונה בשם כלשהו, למשל square, כמערך שיכול להכיל שלושה מספרים שלמים. ולהציב:

square[0]=1
square[1]=4
square[2]=9

כאן אנו מציגים דרך סטנדרטית לגישה למערכים: שם המערך נכתב ראשון, ואחריו, בסוגריים מרובעים, נכתב האינדקס של האיבר שאת ערכו אנו רוצים לשנות. נשים לב כי במקרה זה, לאיבר הראשון במערך יש את האינדקס 0. זוהי בחירה שרירותית - ב שפות תכנות מסוימות (דוגמת C) זה כך, ובשפות אחרות זה אחרת.

דרך גישה מסורבלת יותר למערכים, שב אסמבלר היא היחידה האפשרית, היא באמצעות שימוש במצביעים לתאי זיכרון. אין הבדל של ממש בין השיטות: הביטוי square[0] מתורגם בפועל לכתובת הזיכרון בה מאוחסן הנתון. עם זאת ב מטריצות שימוש כזה עשוי להיות יעיל משמעותית.

למערך ישנם כמה חסרונות שדורשות התייחסות בעבודה עם המבנה במהלך תכנות:

אם מספר האיברים אשר יוכנסו למערך לא ידוע מראש, יכול להיווצר מצב שמערך שהוגדר יהיה קטן מדי ותהיה דרישה להגדילו. פעילות כזאת תדרוש, לעיתים, העתקת כל הנתונים הקיימים למקום אחר שממנו אפשר להגדיל את הרצף בזיכרון, דבר שמכביד מבחינת ביצועי התוכנה. שפות תכנות מסוימות מאפשרות טיפוסים מובנים שמבצעים את ההגדלה הדינאמית (כדוגמת Visual Basic, הטיפוס הפרימיטיבי list בשפת Python, וכדומה), ושפות אחרות דורשות מהמתכנת לבצע את הפעולה בפירוש, תוך הגדרה של גודל החדש.

במקרים שבהם זקוקים למערך דליל (מערך בעל טווח ערכים גדול במיוחד, אף שרוב תאיו לא ינוצלו), אין זה מן הנמנע שבזיכרון הפנוי במחשב לא יימצא כלל מקום לרצף התאים שנתבקש, והקצאת המערך לא תתאפשר, וגם אם תתאפשר הקצאת המערך תגרום לבזבוז רב של זיכרון. למשל: אם משתמשים במערך כדי לייצג את כל תושבי מדינת ישראל, כך שהאינדקס של כל איבר במערך יהיה מספר תעודת הזהות של התושב, יהיה מספר עצום של תאים ( ) שרק חלק זעום מהם יהיה תפוס. לבעיות מטיפוס כזה מתאימים מבני נתונים אחרים, כדוגמת טבלת גיבוב או מטריצה דלילה.

נוסף למערך הרגיל שמייצג למעשה וקטור, ניתן ליצור גם מערך דו־ממדי השקול ל מטריצה ואף מערך רב ממדי. הייצוג הפנימי המקובל למערך דו־ממדי הוא אחסון שורות המטריצה ברצף בזיכרון המחשב, שורה אחר שורה. כאשר מבקשים לפנות למידע תוך התבססות על שני הממדים של האיבר שאותו מבקשים, המערך הדו־ממדי מיוצג על ידי מערך חד־ממדי, שכל אחד מאבריו הוא מערך חד־ממדי בעצמו. למשל, אם שם המערך הדו הממדי הוא והמשתמש רוצה את האיבר בשורה השנייה ובעמודה החמישית, הוא יבקש את האיבר (דבר השקול לבקשת האיבר החמישי במערך ששמור במקום השני במערך החד־ממדי ).

הסדר של המטריצה שונה משפת תכנות אחת לשנייה. לרוב הסידור הוא סידור לפי שורות: קודם התאים של השורה הראשונה ולאחר מכן התאים של השורה השנייה וכך הלאה. בחלק משפות התכנות כגון Fortran הסידור הוא לפי עמודות, כלומר קודם העמודה הראשונה, אחר השנייה וכך הלאה.

באמצעות מערך רב ממדי ניתן לייצג טנזור כללי, בעל מספר ממדים כלשהו.

ישנם שימושים רבים מאוד למבנה הנתונים הזה, ולהלן העיקריים שבהם:

אלטרנטיבה מקובלת למערך במקרה של מספר נתונים משתנה היא רשימה מקושרת, המאופיינת בגמישות בהוספה ובמחיקה של איברים.

# data[].attributes.attachment_link.authors[].name
תורמים למיזמי ויקימדיה

# data[].attributes.attachment_link.title
מערך (מבנה נתונים) – ויקיפדיה

# data[].attributes.attachment_link.description
במדעי המחשב, מערך (Array) הוא אחד ממבני הנתונים הפשוטים ביותר: מערך הוא אוסף פריטים שניתן לגשת אליהם בצורה ישירה באמצעות אינדקס.