מדעי המחשב בקהילה - שיעור עצמאי - מוטיבציה

Slides:



Advertisements
Similar presentations
Data Structure HKOI training /4/2010 So Pak Yeung.
Advertisements

Buffer Overflow Prabhaker Mateti Wright State University.
Extendible Hashing - Class Example
Alford Academy Business Education and Computing1 Advanced Higher Computing Based on Heriot-Watt University Scholar Materials Stack and Queues.
Stack buffer overflow.
Data Structures from Cormen, Leiserson, Rivest & Stein.
Chapter 3 Basic Costing. Inventory is also called stock What might the inventory for the following organisations be? What might the inventory for the.
Chapter 5 Inventory planning and management.  Inventory- stock of items held to meet future demand  Level of inventory- investment is minimum and chances.
Damian Gordon.  What is a queue?  It’s a structure that conforms to the principle of First In, First Out (FIFO).  The first item to join the.
© Copyright 2011 by M. Ray Gregg. All Rights Reserved. 1.
CENTURY 21 ACCOUNTING © 2009 South-Western, Cengage Learning LESSON 19-1 Determining the Quantity of Merchandise Inventory.
Introduction: Exploiting Linux. Basic Concepts Vulnerability A flaw in a system that allows an attacker to do something the designer did not intend,
Inventory Costing using FIFO, LIFO and AVERAGE Costing Methods 5-1 Calculate the following: CGS, Gross Profit and Ending Inventory under FIFO, LIFO and.
Chapter 8-1 Valuation of Inventories: A Cost-Basis Approach Chapter8 Intermediate Accounting 12th Edition Kieso, Weygandt, and Warfield Prepared by Coby.
Chapter 9 Inventory (stock) valuation. Inventory (stock) valuation A good estimate of closing stock is provided by three methods of stock valuation: First-In-First-Out.
ACG 2021 Chapter 6 – Inventory Summary. Formula - 1 Beginning Inventory + Purchases Goods Available for Sale - Ending.
USB Project (15 th August) Ian Coulter. Last Week Needed to work error flags and error counting into labview. This seems to work successfully but doesn’t.
Data Structures: Advanced Damian Gordon. Advanced Data Structure We’ll look at: – Linked Lists – Trees – Stacks – Queues.
CENTURY 21 ACCOUNTING © 2009 South-Western, Cengage Learning LESSON 19-2 Determining the Cost of Merchandise Inventory.
STOCK VALUATION  It refers to the technique used to measure the value of a firm’s inventories, be they raw materials, work-in progress and finished 
ITEC 2620M Introduction to Data Structures Instructor: Prof. Z. Yang Course Website: ec2620m.htm Office: Tel 3049.
First In, First Out Inventory (FIFO) Using the price of merchandise purchased first to calculate the cost merchandise sold first. Last In, First Out Inventory.
Chapter 6 Exercises Inventories and Cost of Sales.
CENTURY 21 ACCOUNTING © Thomson/South-Western LESSON 19-2 Determining the Cost of Merchandise Inventory.
IPSN Simple example Theory Background 3 key challenges  Choose an appropriate penalty function  high end-to-end packet delays  Scalability.
Equivalent units ACTG 321 Agenda for Lecture 11. Equivalent Units Beginning of year Activity during the year End of year Units units made.
Digital Logic & Design Dr.Waseem Ikram Lecture No. 43.
1 Data Organization Example 1: A simple text editor –Store the text buffer as a list of lines. –How would we implement the UNDO operation? Example 2: Parsing.
دكتر ميرزا حسن حسيني مولفان: تهيه كننده: دكتر ميرزا حسن حسيني.
Example Two Air Conditioners purchased in Rs. 20,000 each, Rs. 25,000 each in Feb. One sold in March, cost of goods sold: Rs. 20,000 or Rs. 25,000?
BUS 591 Week 3 DQ 2 Inventory Valuation Methods (Ash) Inventory Valuation Methods. Identify the differences between F.I.F.O., L.I.F.O., and the average-cost.
BUA111 Chp. 6: Inventory Dr. K. Moon.
Sami Rollins Spring 2006 CS312 Algorithms Sami Rollins Spring 2006.
INVENTORIES AND THE COST OF GOODS SOLD
FIFO Perpetual Inventory Account
Exercise – On October 26th, Sell 324 Units for $30 each
Intro to Deterministic Analysis
Intro to Deterministic Analysis
LESSON 19-2 Determining the Cost of Merchandise Inventory
Implementation of Convolution using C++
LESSON 19-2 Determining the Cost of Merchandise Inventory
Valuation of Inventory
הארכת גיל הפרישה לנשים גב' ענת לוין.
FIRST-IN, FIRST-OUT INVENTORY COSTING METHOD
استاد :سرکار خانم قوهستانی
מבוא למשפט ויסודות המשפט מרצה: ד"ר הדרה בר-מור
وزارت بهداشت درمان و آموزش پزشكي - دفتر برنامه ريزي منابع مالي و بودجه
Scheduling in Packet Networks
Stack buffer overflow.
المعايير الدولية لإعداد التقارير المالية للمنشآت الصغيرة ومتوسطة الحجم
פתק מס' 6 עמוד קג לא בגדתי התאבדתי
Accounting for Inventory
Determining the Quantity of Merchandise Inventory
Lab Finance, Budgets, and Inventory
Stack A data structure in which elements are inserted and removed only at one end (called the top). Enforces Last-In-First-Out (LIFO) Uses of Stacks Evaluating.
Buffer Overflows.
Ալգորիթմներ Stack, Queue, Tree.
Accounting for Inventory
Inventory Valuation Example
CHAPTER NINETEEN APPENDIX
Comparability By: Graeme & Moose.
[Most of the details about queues are left for to read about and work out in Lab 6.] Def. As a data structure, a queue is an ordered collection of data.
CHAPTER NINETEEN APPENDIX
FIGURE Illustration of Stack Buffer Overflow
Data Management First we check system can handle bandwidths
ආහාර සඳහා වු යහපත් නිෂ්පාදන පිළිවෙත් අවශ්‍යතා
Using RealTek interrupts
Example Exercise 1 Inventory Cost Flow Assumptions
Inventory Costing Methods
EMIS 8374 Search Algorithms: DFS Updated 12 February 2004
Presentation transcript:

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

מה נעשה היום? נדבר על מבני נתונים נסביר מהם מבני נתונים ולמה צריך אותם ניתן דוגמאות למבני נתונים נפוצים נעשה פעילות נחמדה שקשורה למבני נתונים

מגדלי האנוי

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

שנתחיל לשחק? http://www.novelgames.com/en/spgames/tower/

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

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

דוגמאות בסיסיות למידע שהמחשב מאחסן מסמכים תמונות הגדרות ועוד המון דברים נוספים!

למה מבני נתונים? השימוש במבני נתונים נועד לאחסון של מידע במחשב בצורה יעילה: - אחסון כמות גדולה של מידע - הכנסת מידע למבנה בזמן מהיר - שליפת מידע מהמבנה בזמן מהיר - מחיקת מידע מהמבנה בזמן מהיר עכשיו נראה לכם מספר דוגמאות למבני נתונים שונים

מבנה הנתונים הראשון מערך נניח שאנחנו רוצים ליצור תוכנית ששומרת את הציונים של 20 תלמידים ומחשבת ממוצע אחד של כולם. איך נעשה את זה?

מבנה הנתונים הראשון: מערך נניח שאנחנו רוצים ליצור תוכנית ששומרת את הציונים של 20 תלמידים ומחשבת ממוצע אחד של כולם. פיתרון מספר 1 אפשר לשבת ולהגדיר 20 משתנים חדשים כל פעם (כמו בסקראץ'). מה הבעיה עם זה? הבעיה - נצטרך לבחור 20 פעם "צור משתנה" ולבחור לכל אחד שם שונה. זה יקח הרבה זמן ובנוסף גם יהיה מסורבל ומבולגן כי יהיו לנו 20 משתנים פזורים על המסך. בנוסף, מה אם כמות התלמידים תגדל ל- 100? נושא לדיון: נדון עם הילדים האם הפתרון הנ"ל מספיק טוב, וננסה לגרום להם להבין שזהו פתרון בעייתי מבחינות שונות: זמן סרבול לא ריאלי עבור כמות גדולה של תלמידים לא יעיל מבחינת זיכרון

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

מערך נחזור לדוגמת התלמידים והממוצע. נניח שאני מגדיר מערך שיכול להכיל בתוכו מקום ל-20 ציונים וקורא למבנה הזה Students. כעת אני אוכל לשמור 20 ציונים של 20 תלמידים בצורה הבאה: Students[1] => הערך במקום הראשון של המערך Students[20]=> הערך במקום ה20 של המערך

מערך שאלת מחשבה מה יקרה אם המערך שלנו בגודל 20 וכתבנו: Students[30]=“Hello”. נושא לדיון: נדבר על Buffer Overflow: במחשבים, גלישת חוצץ (Buffer Overflow) היא שגיאת תכנות, שמתבטאת בכך שתוכנית מחשב כותבת לאזור בזיכרון המחשב (החוצץ) יותר מידע מאשר אותו אזור מסוגל להכיל. כתוצאה מכך "גולש" חלק מהמידע אל מחוץ לגבולות החוצץ, ומשנה נתונים שלא היו אמורים להשתנות. המידע שנמחק הוא לעתים קרובות הכרחי להמשך ריצתה התקינה של התוכנית, ובשל כך גלישת חוצץ עלולה לגרום לתוכנית להחזיר תוצאות לא נכונות, לקרוס לחלוטין, או אף לאפשר הרצה של "קוד זדוני" הגורם לתוכנית לפעול באופן שלא תוכנן מראש. בשל כך, גלישות חוצץ מהוות בסיס לפרצות אבטחה רבות. ברוב המקרים, גלישת חוצץ תגרום לפחות לקריסה של התוכנית המשתמשת בחוצץ.

מערכים סקרץ' כעת נלמד כיצד ליצור מערכים בסקרץ' וכיצד להשתמש בהם. בלשונית משתנים, נבחר ב"צור רשימה". נקרא לרשימה זו "מערך". כעת סיימנו ליצור מערך ריק

פעולות על מערכים סקרץ' ניתן להוסיף פריטים למערך ניתן למחוק פריטים מהמערך ניתן להחליף פריט במערך עם פריט אחר ניתן לקבל את מספר הפריטים במערך ועוד...

פעילות! צור מערך בסקרץ' בגודל 10. מלא את המערך במספרים אקראיים מ-1 ועד 100. חשב כמה מספרים זוגיים קיימים במערך שיצרת. אם, לדוגמא, זהו המערך שלנו: אז נחזיר 2, כי במערך הזה יש שלושה מספרים, ורק שניים מהם זוגיים. הערה: מאחר ומערך השיעור מועבר ברובו בכיתה (ולא בחדר המחשבים), ניתן לדלג בשלב זה על פעילויות הסקרץ' ולהעביר אותן בשיעור הבא (כך אנו עשינו כשהעברנו את מערך השיעור).

כך הפרויקט שלכם צריך להראות בסוף

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

מבנה נתונים בעל תכונה מסוימת מבנה נתונים שהאיבר האחרון שנכנס אליו הוא האיבר הראשון שיוצא קוראים מבנה שעובד בשיטת LIFO. המשמעות של ראשי התיבות באנגלית הם: Last in first out. כלומר האיבר האחרון שנכנס למבנה – הוא יהיה הראשון לצאת. מבנה נתונים שעובד בצורת FIFO– First in first out, הוא מבנה נתונים שעובד בצורה בה האיבר הראשון שנכנס, הוא יהיה הראשון לצאת. בשקפים הבאים נראה שתי דוגמאות למבני נתונים שעובדים בשיטות אלו שנקראים: "מחסנית" ו"תור".

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

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

מבנה הנתונים - מחסנית

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

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

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

אנחנו צריכים לשמור את רשימת הכתובות שביקרנו בהם במבנה נתונים לא! האם תור יהיה בחירה טובה? תור נותן לנו את האתר הראשון שנשמר ואילו אנחנו צריכים להוציא את האתר האחרון שנשמר.

אז במה כן נשתמש?

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

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

כעת ניתן לעשות את דפי עבודה 1-3

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

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

מבנה נתונים – עץ בינארי נסתכל כעת על העץ בצורה הפוכה: לעץ יש שורש, לשורש שני ילדים, לכל אחד מהילדים ילדים משלו, וכך הלאה...

מבנה נתונים – עץ בינארי במדעי המחשב, עץ הוא מבנה נתונים אשר מדמה היררכיה של עץ – לעץ יש שורש ותתי עצים של ילדים. עץ בינארי הוא עץ שבו לכל צומת יש 2 ילדים לכל היותר. שורש העץ

עץ בינארי - רמות בעץ בינארי קיים המושג "רמה": רמה 0 רמה 1 רמה 2 רמה 3

עץ בינארי - רמות ברמה 0 יש 1 צמתים ברמה 1 יש 2 צמתים ברמה 2 יש 4 צמתים רמה 3 ברמה 0 יש 1 צמתים ברמה 1 יש 2 צמתים ברמה 2 יש 4 צמתים ברמה 3 יש 8 צמתים כמה צמתים יהיו ברמה 4? 20 21 22 23

עץ בינארי בסקרץ' ניתן ליצור ולהשתמש בעץ בינארי בשפת סקרץ, אך זוהי אינה משימה פשוטה! נסתכל בפרויקט מוכן, שבו אנו בוחרים את הרמה הגבוהה ביותר של העץ ומקבלים עץ כמבוקש: http://scratch.mit.edu/projects/13100004/#editor

עץ בינארי בסקרץ' הנה התסריט ליצירת העץ. פשוט, לא? כמובן שאיננו מצפים מהתלמידים להבין את הקוד (יש בו רקורסיה!). המטרה היא לתת לילדים השראה לכמות העצומה של הדברים שניתן לעשות בעזרת תכנות.

עץ בינארי – תת עץ בעץ בינארי קיים המושג "תת עץ": תת עץ הוא כל עץ שניתן ליצור מצומת כלשהו של העץ המקורי, הכולל את הצומת עצמו ואת כל הצאצאים שלו (ילדיו, נכדיו וכו') זהו למשל תת עץ של העץ המקורי. השורש של תת העץ הזה הוא הצומת 7.

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

עץ חיפוש בינארי הכלל הוא כזה: כל צומת חייב להיות גדול מהבן השמאלי שלו ומכל צאצאיו, וקטן מהבן הימני שלו ומכל צאציו. למשל השורש, שהוא 8, גדול מהבן השמאלי שלו – 3 ומכל ילדיו (הצמתים 1,3,6,4,7), וקטן מהבן הימני שלו – 10 ומכל ילדיו (10,14,13)

עץ חיפוש בינארי עכשיו תורכם- נסו למלא את הצמתים הריקים במספרים שימלאו את הכלל: כל צומת גדול מבנו השמאלי וקטן מבנו הימני 12 6 14

שאלה למחשבה האם ניתן למלא את העץ הבא לפי הכלל שהגדרנו? 12 14 6

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

כעת ניתן לעשות את דף עבודה 4