מבוא למדעי המחשב הרצאה 1: מבוא כללי מה זה מדעי המחשב – מה לומדים בתואר ראשון. מטרות קורס המבוא. דוגמה - אלגוריתם בן אלפיים שנים (לפחות)
מדעי המחשב מדעי המחשב הם נקודת המפגש של מתמטיקה, הנדסה ומדעי הטבע. חוקרים את ההיבטים התיאורטיים, והמעשיים של חישוביות ועיבוד מידע משתמשים בגישות של עיבוד מידע וחישוביות כדי לענות על שאלות מדעיות וטכנולוגיות. מהווים את הבסיס העיקרי לטכנולוגיה העילית. שעות קבלה אתר הקורס אימייל (רק של הקורס) פורום עזרה במעבדה צוות הקורס מעבדות CS עבור ה-Submission system מרכז החישובים עבור חשבונות ומחשבים 3. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד 4. מבנה הקורס ספרים – יש, אך אין ספר מלווה צריך להשיג סיסמאות ממרכז חישובים כמה מילים על דף המידע ההרצאות והתרגולים באתר הקורס כללי משחק 70+(20)+10 6 מטלות לדבר על התרגילונים (קוויזים) עזרה במעבדה במהלך השנה העתקות לכבות טלפונים 02:56:45
מדעי המחשב ותכנות תכנות הוא תחום מעשי חשוב של מדעי המחשב. בעל היבטים תיאורטיים עמוקים. מפרנס הרבה בוגרי מדעי המחשב ועוזר במחקר לאחרים. לכן, מקבל מקום חשוב (אבל לא עיקרי) בלימודי מדעי המחשב. שעות קבלה אתר הקורס אימייל (רק של הקורס) פורום עזרה במעבדה צוות הקורס מעבדות CS עבור ה-Submission system מרכז החישובים עבור חשבונות ומחשבים 3. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד 4. מבנה הקורס ספרים – יש, אך אין ספר מלווה צריך להשיג סיסמאות ממרכז חישובים כמה מילים על דף המידע ההרצאות והתרגולים באתר הקורס כללי משחק 70+(20)+10 6 מטלות לדבר על התרגילונים (קוויזים) עזרה במעבדה במהלך השנה העתקות לכבות טלפונים 02:56:45
המחלקה למדעי המחשב באוניברסיטת בן גוריון קהילה של כאלף אנשים: סטודנטים לכל התארים, וחברי סגל לומדים, מלמדים, וחוקרים מגוון רחב של נושאים תיאורטיים ומעשיים הכוללים: תיאוריה של מדעי המחשב, הצפנה, גיאומטריה חישובית, גרפיקה ממוחשבת, ראיה ממוחשבת, עיבוד מקבילי, עיבוד שפה טבעית, הנדסת תוכנה, לימוד ממוכן, וביואינפורמטיקה. שיתוף פעולה במחקר והוראה עם מתמטיקאים מהנדסים ואנשי מדעי הטבע הרוח והחברה. שעות קבלה אתר הקורס אימייל (רק של הקורס) פורום עזרה במעבדה צוות הקורס מעבדות CS עבור ה-Submission system מרכז החישובים עבור חשבונות ומחשבים 3. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד 4. מבנה הקורס ספרים – יש, אך אין ספר מלווה צריך להשיג סיסמאות ממרכז חישובים כמה מילים על דף המידע ההרצאות והתרגולים באתר הקורס כללי משחק 70+(20)+10 6 מטלות לדבר על התרגילונים (קוויזים) עזרה במעבדה במהלך השנה העתקות לכבות טלפונים 02:56:45
תואר ראשון במדעי המחשב 02:56:45 שעות קבלה אתר הקורס אימייל (רק של הקורס) פורום עזרה במעבדה צוות הקורס מעבדות CS עבור ה-Submission system מרכז החישובים עבור חשבונות ומחשבים 3. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד 4. מבנה הקורס ספרים – יש, אך אין ספר מלווה צריך להשיג סיסמאות ממרכז חישובים כמה מילים על דף המידע ההרצאות והתרגולים באתר הקורס כללי משחק 70+(20)+10 6 מטלות לדבר על התרגילונים (קוויזים) עזרה במעבדה במהלך השנה העתקות לכבות טלפונים 02:56:45
מטרת הקורס מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד לא קורס תכנות. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד “To introduce and to exercise the basic concepts in Computer Science, object-oriented programming, and programming principles, using the Java programming language.” הכרות: יש כאן מגוון של תלמידים – תוכניות לימודים שונות רקע שונה רקע במחשבים ו.או במתמטיקה – לפעמים עוזר, אבל לא נדרש This is not a course on Java, even though we spend time learning this language It’s a course introducing Computer Science, which also means introducing programming (principles are better understood when they are concrete) Java is a means to what we want to accomplish, not an end in itself 02:56:45
הכרות דף המידע אתר הקורס: http://www.cs.bgu.ac.il/~intro111 מצגות פורום דואר: intro111@cs.bgu.ac.il שעות קבלה (לנצל!!) עזרה במעבדה שעות קבלה אתר הקורס אימייל (רק של הקורס) פורום עזרה במעבדה צוות הקורס מעבדות CS עבור ה-Submission system מרכז החישובים עבור חשבונות ומחשבים 3. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד 4. מבנה הקורס ספרים – יש, אך אין ספר מלווה צריך להשיג סיסמאות ממרכז חישובים כמה מילים על דף המידע ההרצאות והתרגולים באתר הקורס כללי משחק 70+(20)+10 6 מטלות לדבר על התרגילונים (קוויזים) עזרה במעבדה במהלך השנה העתקות לכבות טלפונים 02:56:45
שאלות שכיחות ש: אין לי שום ידע במחשבים ותכנות. האם יש לי סיכוי להצליח בקורס? משיחות המסדרון הבנתי שכולם חוץ ממני כבר מתכנתים מהגן. ת: כן, בהחלט. הקורס אינו מניח שום ידע מוקדם. כל שנה מסיימים את הקורס (והתואר) בהצלחה רבה מאות סטודנטים שהגיעו ללא רקע מוקדם. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד “To introduce and to exercise the basic concepts in Computer Science, object-oriented programming, and programming principles, using the Java programming language.” הכרות: יש כאן מגוון של תלמידים – תוכניות לימודים שונות רקע שונה רקע במחשבים ו.או במתמטיקה – לפעמים עוזר, אבל לא נדרש This is not a course on Java, even though we spend time learning this language It’s a course introducing Computer Science, which also means introducing programming (principles are better understood when they are concrete) Java is a means to what we want to accomplish, not an end in itself 02:56:45
שאלות שכיחות ש: אני מתכנת מהגן. יש לי 7 נקודות בגרות במדעי המחשב וביליתי ארבע שנים ביחידת מחשוב שאסור לי אפילו לחשוב על שמה. האם יש לי מה ללמוד בקורס הזה? ת: כנראה שכן. ברור שרקע מוקדם עוזר, אבל מניסיוננו (עשרות תלמידים בשנה) גם לבעלי הרקע הקודם יש עוד די הרבה מה ללמוד בקורס. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד “To introduce and to exercise the basic concepts in Computer Science, object-oriented programming, and programming principles, using the Java programming language.” הכרות: יש כאן מגוון של תלמידים – תוכניות לימודים שונות רקע שונה רקע במחשבים ו.או במתמטיקה – לפעמים עוזר, אבל לא נדרש This is not a course on Java, even though we spend time learning this language It’s a course introducing Computer Science, which also means introducing programming (principles are better understood when they are concrete) Java is a means to what we want to accomplish, not an end in itself 02:56:46
מבנה הקורס עקרונות תיאורטיים ומבנים כלליים הרצאות עקרונות תיאורטיים ומבנים כלליים חזרה מפורטת על העקרונות, דוגמאות תרגולים כיסוי מפורט של הדוגמאות,פתרונות פרקטיים מעבדות מבנה הקורס: הרצאות, תרגולים, תרגילונים, עבודות הגשה, עזרה במעבדה, שעות קבלה ספרים – יש, אך אין ספר מלווה צריך להשיג סיסמאות ממרכז חישובים כמה מילים על דף המידע ההרצאות והתרגולים באתר הקורס כללי משחק 70+20+10 5 מטלות (אולי 80+10+10 אם הבוחן נמוך מהמבחן) ממוצע המבחן וממוצע עבודות ההגשה חייב לעבור (לפחות 56). אסור עבודה עם ציון 0. הפניה לדף באתר המתאר את החוקים לגבי תרגילים לדבר על התרגילונים (קוויזים) להיות פעיל בקורס העתקות לכבות טלפונים מטלת מעבדה - השבוע עבודה מספר 1 – יום ראשון הבא Each layer of the course has a different role Lectures: High-level concepts, overall structures Tirgulim: Detailed coverage of concepts, examples Labs and targilim: Very detailed problems, practical solutions Targilim and labs Very detailed problems, practical solutions ! תרגילים 02:56:46
מושגים בסיסיים מה זה מחשב? כלי אלקטרוני, ניתן לתכנות, שנועד לאכסון, דליה ועיבוד של מידע חומרה (ברזלים): זיכרון,מעבד, קלט, פלט,... תוכנה תוכניות מחשב שמשתמשות בחומרה בהינתן בעיה של עיבוד (נתונים) או חישוב אלגוריתם "מתכון" לפתירת הבעיה תוכנית מחשב אמצעי להביע את האלגוריתם בפני המחשב מה זה מחשב? הגדרה: כלי אלקטרוני, ניתן לתכנות, שנועד לאכסון, דליה ועיבוד של מידע חומרה (ברזלים): זיכרון,מעבד, קלט, פלט,... Hardware is anything you can touch. Chips, boxes, keyboard,screen,discs,cables, mouse,etc. The hardware components need to be given specific orders in order to operate. A program is a collection of such orders that the harware will execute one after the other. Software includes the programs plus the information (data) used by the programs. תוכנה: מערכת הפעלה, קומפיילר, סביבת הרצה,... Together, the hardware and software make up a tool that can be used to solve problems. בעיה – שרוצים לפתור בעזרת מחשב אלגוריתם – "מתכון" לפתירת הבעיה תוכנית – אמצעי להביע את האלגוריתם בפני המחשב שפות מחשב (סוגים, הידור, ... ) דוגמה: בעיה – למצוא מספר טלפון של מישהו האם זו הבעיה הנכונה? עדיף " למצוא מספר טלפון" אלגוריתם – א. נשאל אותו (את מי?). ב. ליניארי ג. בינארי. Exemplify linear search and binary search on a phone book. (מבנה הנתונים – ממוין?) 02:56:46
תאור סכמתי – מחשב (חומרה) אמצעי קלט אמצעי פלט מעבד CPU Calm the students down by saying this is all we need in this course as far as hardware goes. We will focus on software in this course. This course is intended for people with no background in programming, you will have to work hard though. בקורס זה לא ממש נתעניין בחומרה. מדי פעם נתייחס אליו באופן רעיוני – כאל מודל CPU(Central Processing Unit) – the device that executes the orders of the program. Memory: main memory holds the software while the orders are being executed by the CPU. secondary memory holds the programs and data for long term. Example: hard disk, disk on key, CD, etc. Input: keyboard, network cable, wireless I/O, discs, etc. Output: console (screen), printer, discs, etc. זכרון 02:56:46
אלגוריתם סידרת פעולות לביצוע המובילה לפתרון בעיה תיאור סופי לא מתייחס לנתונים עצמם קלט, פלט דוגמה מהחיים - מתכון לתבשיל. תרשים זרימה !!! "מתכון" לפתירת בעיה (של עיבוד נתונים) קבוצת הנחיות לביצוע משימה מסוימת המחשב אמור לפתור את הבעיה על סמך האלגוריתם כיצד לתאר אלגוריתם: אנגלית/עברית תרשים כל שפה ומבנה שיאפשר לדייק – להתבטא חד משמעית 02:56:46
אלגוריתם – אוסף הוראות סופי קלט: 0<X שלם קלט: 0<X שלם counter 1 כן האם X<10 ? פלט: 1 האם X<10 ? כן לא פלט: counter כן האם 0X<10 ? פלט: 2 An algorithm can be represented as a flow chart, we will later in this lecture exemplify this in detail. דוגמה: הבעיה – בהנתן מס' שלם וחיובי, כמה ספרות יש לו??? לא אלגוריתם: אם המספר קטן מ 10, אם קטן מ 100 וכו'. the problem with this option is that the input can be any positive integer (infinite) you can’t write a program that covers all divisions in advance… אח"כ הצגת אלג' ובו מחלקים ב 10 ומקדמים מונה (חלוקת שלמים DIV) לא counter counter+1 לא כן האם 00X<10 ? פלט: 3 02:56:46 X X/10 לא ...
תזכורת n מחלק את m אם ורק אם קיים z כך ש-m=n*z 02:56:46 מה זה GCD ? Greatest Common divisor דוגמא Example: what is the greatest common divisor of 48 and 30? 48 :: 1,2,3, 4,6,8,12,16,24,48 30 :: 1,2,3, 5,6,10,15,30 משותפים: 1 2 3 6 משותף מקסימאלי 6 לכל שני מספרים שלמים חיוביים, קיים GCD הפסקה 02:56:46
דוגמא לבעיה: GCD Greatest Common Divisor מצא את המחלק המשותף המקסימאלי של שני מספרים שלמים חיוביים. פורמלית: קלט: שני מספרים שלמים, חיוביים, mו- n פלט: GCD(m,n) דוגמה: GCD(30,48)=6 מה זה GCD ? Greatest Common divisor דוגמא Example: what is the greatest common divisor of 48 and 30? 48 :: 1,2,3, 4,6,8,12,16,24,48 30 :: 1,2,3, 5,6,10,15,30 משותפים: 1 2 3 6 משותף מקסימאלי 6 לכל שני מספרים שלמים חיוביים, קיים GCD הפסקה 02:56:46
איך מוצאים GCD? פתרון נאיבי קלט: m,n שלמיםm, 0<n , > 0 i m אם i מחלק אתm וגם את n עצור (פלט i) אחרת i i-1 חזור ל- 3 קודם לתאר את הרעיון במילים. אח"כ: תרשים זרימה התאור הוא סופי קלט m,n חיוביים שלמים אין התיחסות לערכים ספציפיים של m,n (עובד לכל הערכים האפשריים) האם האלגוריתם עוצר? מדוע? כן – כי יש מחלק משותף ולא נפספס אותו (דיון) אחד תמיד מחלק משותף האם זה נכון? מדוע? כן – כי שנעצור I מחלק משותף ואין אחר גדול ממנו (דיון) אפשר להחליף את 2 ב: I = min(m,n) This yields a more efficient algorithm 02:56:46
הצגת האלגוריתם כתרשים זרימה קלט: m,n>0 i m האם iמחלק את m וגםi מחלק את n? כן פלט:i בהתחלה: I m ניתן גם לרשום I <- min (m,n) לא i i-1 02:56:46
5 תכונות לאלגוריתם על-פי Knuth: סופיות (עצירה) מוגדרות (כל פעולה צריכה להיות מובנת חד משמעית) קלט (אפס או יותר) פלט (לפחות אחד) אפקטיביות – להיות בר ביצוע (ניתן לפרק לסדרה של פעולות פשוטות מספיק שאדם יכול לעשותם עם נייר ועפרון). קלט כולל בעצם ספספיקציה פלט כולל נכונות אפקטיביות של הפעולות באלגוריתם Effectiveness, according to Knuth, means that the algorithm can be partitioned into small steps such that each step can in turn be solved by a person using a pencil and paper. This issue perhaps regards the practicality of the algorithm. It is not enough to require that it halts. It has to halt fast enough to be practical for the purpose for which it was designed. הדגם על האלגוריתם הקודם Knuth (1968, 1973) has given a list of five properties that are widely accepted as requirements for an algorithm: Finiteness: "An algorithm must always terminate after a finite number of steps" Definiteness: "Each step of an algorithm must be precisely defined; the actions to be carried out must be rigorously and unambiguously specified for each case" Input: "...quantities which are given to it initially before the algorithm begins. These inputs are taken from specified sets of objects" Output: "...quantities which have a specified relation to the inputs" Effectiveness: "... all of the operations to be performed in the algorithm must be sufficiently basic that they can in principle be done exactly and in a finite length of time by a man using paper and pencil" 02:56:46
Donald E. Knuth Born in Milwaukee, Wisconsin, he received his bachelor's degree and master's degree in mathematics (simultaneously, his B.S. work being regarded as deserving a master's degree) in 1960 at the Case Institute of Technology. In 1963, he earned a Ph.D. in mathematics from the California Institute of Technology, where he became a professor and began work on The Art of Computer Programming, originally planned to be a single book, and then planned as a seven-volume series. In 1968, he published the first volume. That same year, he joined the faculty of Stanford University. In 1971, Knuth was the recipient of the first ACM Grace Murray Hopper Award. He has received various other awards including the Turing Award, the National Medal of Science, the John von Neumann Medal and the Kyoto Prize. After producing the third volume of his series in 1976, he expressed such frustration with the nascent state of the then newly developed electronic publishing tools (esp. those which provided input to phototypesetters) that he took time out to work on typesetting and created the TeX and METAFONT tools. In recognition of Knuth's contributions to the field of computer science, in 1990 he was awarded the singular academic title of Professor of The Art of Computer Programming, which has since been revised to Professor Emeritus of The Art of Computer Programming. In 1992 he became an associate of the French Academy of Sciences. Also that year, he retired from regular research and teaching at Stanford University in order to finish The Art of Computer Programming. In 2003 he was elected as a foreign member of the Royal Society. As of 2004, the first three volumes of his series have been re-issued, and Knuth is currently working on volume four, excerpts of which are released periodically on his website. Meanwhile, Knuth gives informal lectures a few times a year at Stanford University, which he calls Computer Musings. He is also a visiting professor at the Oxford University Computing Laboratory in the United Kingdom. 02:56:46
האם התכונות האלו מתקיימות באלגוריתם הפשוט למציאת GCD כדי להוכיח טענות אלו נשתמש : תנאי קדם (pre-condition) – n ו- m שלמים חיוביים. תכונות של GCD - בהינתן n ו- m שלמים חיוביים Min(n,m) GCD(n,m) ≤ 1 הוא מחלק משותף (אולי הגדול ביותר ואולי לא) של כל שני מספרים שלמים חיוביים. שמורה (invariant)- i≥GCD(n,m) תנאי הלולאה – i אינו מחלק את m וגם לא את n תנאי בתר (post-conduition) - i=GCD(n,m) קלט כולל בעצם ספספיקציה פלט כולל נכונות אפקטיביות של הפעולות באלגוריתם Effectiveness, according to Knuth, means that the algorithm can be partitioned into small steps such that each step can in turn be solved by a person using a pencil and paper. This issue perhaps regards the practicality of the algorithm. It is not enough to require that it halts. It has to halt fast enough to be practical for the purpose for which it was designed. הדגם על האלגוריתם הקודם Knuth (1968, 1973) has given a list of five properties that are widely accepted as requirements for an algorithm: Finiteness: "An algorithm must always terminate after a finite number of steps" Definiteness: "Each step of an algorithm must be precisely defined; the actions to be carried out must be rigorously and unambiguously specified for each case" Input: "...quantities which are given to it initially before the algorithm begins. These inputs are taken from specified sets of objects" Output: "...quantities which have a specified relation to the inputs" Effectiveness: "... all of the operations to be performed in the algorithm must be sufficiently basic that they can in principle be done exactly and in a finite length of time by a man using paper and pencil" 02:56:46
תיאור נוסף של אותו אלגוריתם קלט: m,n שלמיםm, 0<n , > 0 i m כל עוד (לא מתקיים: i מחלק את m וגם את(n i i-1 עצור, פלט: i תנאי הלולאה טענת קדם pre-cond. טענה נשמרת invariant גוף הלולאה טענת בתר post-cond. 02:56:46
הוכחת עצירה נניח ללא הגבלת הכלליות m<n אם m=1 אזי לפני הכניסה ללולאה גם i=1 והוא מחלק את m ו- n. לכן תנאי הלולאה לא יתקיים אף פעם והתוכנית תסתיים מיד. אם m>1 אזי לפני הכניסה ללולאה i=m הוא שלם חיובי גדול מ-1 כל צעד מקטין את i ב- 1. ולכן במקרה הגרוע ביותר אחרי מספר סופי של צעדים יתקיים i=1 ותנאי הלולאה לא יתקיים (כי 1 מחלק כל מספר). קלט כולל בעצם ספספיקציה פלט כולל נכונות אפקטיביות של הפעולות באלגוריתם Effectiveness, according to Knuth, means that the algorithm can be partitioned into small steps such that each step can in turn be solved by a person using a pencil and paper. This issue perhaps regards the practicality of the algorithm. It is not enough to require that it halts. It has to halt fast enough to be practical for the purpose for which it was designed. הדגם על האלגוריתם הקודם Knuth (1968, 1973) has given a list of five properties that are widely accepted as requirements for an algorithm: Finiteness: "An algorithm must always terminate after a finite number of steps" Definiteness: "Each step of an algorithm must be precisely defined; the actions to be carried out must be rigorously and unambiguously specified for each case" Input: "...quantities which are given to it initially before the algorithm begins. These inputs are taken from specified sets of objects" Output: "...quantities which have a specified relation to the inputs" Effectiveness: "... all of the operations to be performed in the algorithm must be sufficiently basic that they can in principle be done exactly and in a finite length of time by a man using paper and pencil" שאלה: מה אם n≤m? 02:56:46
הוכחת נכונות נניח לרגע שהשמורה מתקיימת כלומר i≥GCD(n,m) בכל שלב מאז ש i הוגדר לראשונה. אם הגענו לסוף הריצה הרי שתנאי הלולאה אינו מתקיים כלומר i מחלק את m ו- n. נניח בשלילה שתנאי הבתר אינו מתקיים כלומר בסוף הריצה i ≠ GCD(n,m) . מהשמורה נובע לכן i>GCD(n,m) סתירה. נותר רק להוכיח שהשמורה מתקיימת. קלט כולל בעצם ספספיקציה פלט כולל נכונות אפקטיביות של הפעולות באלגוריתם Effectiveness, according to Knuth, means that the algorithm can be partitioned into small steps such that each step can in turn be solved by a person using a pencil and paper. This issue perhaps regards the practicality of the algorithm. It is not enough to require that it halts. It has to halt fast enough to be practical for the purpose for which it was designed. הדגם על האלגוריתם הקודם Knuth (1968, 1973) has given a list of five properties that are widely accepted as requirements for an algorithm: Finiteness: "An algorithm must always terminate after a finite number of steps" Definiteness: "Each step of an algorithm must be precisely defined; the actions to be carried out must be rigorously and unambiguously specified for each case" Input: "...quantities which are given to it initially before the algorithm begins. These inputs are taken from specified sets of objects" Output: "...quantities which have a specified relation to the inputs" Effectiveness: "... all of the operations to be performed in the algorithm must be sufficiently basic that they can in principle be done exactly and in a finite length of time by a man using paper and pencil" תרגיל: הוכיחו לעצמכם את נכונות השמורה. 02:56:46
הגדרה - % פעולת מציאת השארית (modulo). דוגמאות: 7%3=1 3%7=3 8%2=0 בפרט m%i = 0 פירושו i מחלק את m מה זה GCD ? Greatest Common divisor דוגמא Example: what is the greatest common divisor of 48 and 30? 48 :: 1,2,3, 4,6,8,12,16,24,48 30 :: 1,2,3, 5,6,10,15,30 משותפים: 1 2 3 6 משותף מקסימאלי 6 לכל שני מספרים שלמים חיוביים, קיים GCD הפסקה 02:56:46
האלגוריתם של אוקלידס קלט: שלמיםm, 0<n , > 0 i m j n temp j%i j i i temp עצור, פלט: j דוגמה j i j%i 48 30 18 18 12 12 6 6 0 6 0 We will now show an alternative algorithm for computing GCD which is called Euclide’s algorithm. להסביר % דוגמאות שונות: 3%7 7%3 תבנית ביצים 8%2 דוגמת הרצה N M 30 48 18 30 12 18 6 12 ואם נחליף את m,n? דוגנמת הרצה... מתחלפים מיד האם כדאי להחליף??? בדיקת 5 התכונות Input: m, n Output: GCD(m,n) Final: we see that the remainder gets smaller and smaller in each iteration (otherwise the smaller replaces the larger), this is the intuition and a formal proof will be given in the next slides. Effectiveness: each step is one machine order Correctness will be proven in the next slide. נראה כי אלגוריתם זה יצטרך לבצע פחות "סיבובים" לפני שימצא את התשובה מאשר האלגוריתם הנאיבי, כי מתקדם בקפיצות הולכות וקטנות 02:56:46
Euclid of Alexandria 325 BC - 265 BC Euclid of Alexandria is the most prominent mathematician of antiquity best known for his treatise on mathematics The Elements. The long lasting nature of The Elements must make Euclid the leading mathematics teacher of all time. However little is known of Euclid's life except that he taught at Alexandria in Egypt. 02:56:46
הצצה על Java import java.util.Scanner; public class GCD { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int m = scanner.nextInt(); int n = scanner.nextInt(); int i = m; int j = n; while (i != 0) { int temp = j%i; j = i; i = temp; } System.out.println("GCD = "+j); לבית: וודאו את הבנת נכונות האלגוריתם של אוקלידס רשמו תרשים זרימה שלו מטלת מעבדה ראשונה: להגשה באמצע השבוע הבא מטלה ראשונה באמצע השבוע הבא להכנס לאתר לקרוא הודעות באופן קבוע מייק: בסוף חוזרים ל"מה זה מחשב??" כלי שבאמצעותו ניתן לפתור בעיות באמצעות אלגוריתמים 02:56:46
כללי המשחק הציון בקורס ניתן לפי : א. מבחן ב. בוחן אמצע סמסטר ג. עבודות ד. תרגילונים העבודות להגשה ביחידים או בזוגות. ניתן להגיש גם בקבוצות גדולות יותר אבל אז הציון מתחלק ביחס למספר המשתתפים. כלומר רביעייה תקבל חצי מהציון שיקבלו יחיד או זוג. ייחשבו 4 העבודות הטובות ביותר מתוך חמש שינתנו לאורך הסמסטר. הבוחן אינו חובה לבית: וודאו את הבנת נכונות האלגוריתם של אוקלידס רשמו תרשים זרימה שלו מטלת מעבדה ראשונה: להגשה באמצע השבוע הבא מטלה ראשונה באמצע השבוע הבא להכנס לאתר לקרוא הודעות באופן קבוע מייק: בסוף חוזרים ל"מה זה מחשב??" כלי שבאמצעותו ניתן לפתור בעיות באמצעות אלגוריתמים 02:56:46
כללי המשחק הציון לתלמידים שיקבלו במבחן ציון 56 או למטה מזה, יהיה ציון המבחן לכל השאר: הציון לתלמידים שייגשו לבוחן Exam*0.66 + Midterm*0.2 + Assignments*0.12 + quizes*0.02 + 3 הציון לתלמידים שלא ייגשו לבוחן מסיבה כלשהי שאינה שרות מילואים בזמן הבוחן Exam*0.86 + Assignments*0.12 + quizes*0.02 הציון לתלמידים שלא נגשו לבוחן מכיוון שהיו בשרות מילואים Exam*0.86 + Assignments*0.12 + quizes*0.02 + 3 לבית: וודאו את הבנת נכונות האלגוריתם של אוקלידס רשמו תרשים זרימה שלו מטלת מעבדה ראשונה: להגשה באמצע השבוע הבא מטלה ראשונה באמצע השבוע הבא להכנס לאתר לקרוא הודעות באופן קבוע מייק: בסוף חוזרים ל"מה זה מחשב??" כלי שבאמצעותו ניתן לפתור בעיות באמצעות אלגוריתמים 02:56:46
כללי המשחק אנו מקפידים מאוד על נושא האמינות. אם תהיה לנו סיבה טובה לחשוד שעבודה הועתקה העניין יועבר לועדת המשמעת האוניברסיטאית. העונשים שהועדה יכולה לתת לתלמידים מורשעים נעים ביין ציון אפס בתרגילים להרחקה תמידית מהאוניברסיטה. בהתחשב בחלק הקטן של כל תרגיל בציון הסיכון מאוד לא כדאי. למען הסר ספק. אסור להעתיק תוכניות. מותר לדבר על התרגיל, אסור להיעזר האחד בשני בכתיבה. אסור להראות האחד לשני תוכניות. זה עלול ליצור תוכניות דומות שיגרמו לנו לראות בהן תוצר של העתקה. איננו יכולים להבחין בין המעתיק לבין מי שהעתיקו ממנו. אנו נותנים לכם כלים כדי לשמור על פרטיות התוכניות שלכם ואם תוכנית עברה מתלמיד אחד לשני כנראה שהם שיתפו פעולה. אם עבודה מוגשת על ידי זוג. האחריות במקרה של העתקה היא על שני השותפים. טענת אי ידיעה מצד אחד מהם לא תתקבל. אנא אל תעשו שטויות אנחנו די טובים בתפיסת העתקות. לבית: וודאו את הבנת נכונות האלגוריתם של אוקלידס רשמו תרשים זרימה שלו מטלת מעבדה ראשונה: להגשה באמצע השבוע הבא מטלה ראשונה באמצע השבוע הבא להכנס לאתר לקרוא הודעות באופן קבוע מייק: בסוף חוזרים ל"מה זה מחשב??" כלי שבאמצעותו ניתן לפתור בעיות באמצעות אלגוריתמים 02:56:46
כללי המשחק אנא כבו טלפונים סלולאריים בתחילת השיעור. אנא היכנסו בזמן לשיעור. מאחרים מפריעים מאוד לכתה כולה. אנא שימרו על השקט בשיעור. שעור שבו לא נספיק להעביר את כל החומר בגלל הפרעות ייחשב כאילו ניתן במלואו. לבית: וודאו את הבנת נכונות האלגוריתם של אוקלידס רשמו תרשים זרימה שלו מטלת מעבדה ראשונה: להגשה באמצע השבוע הבא מטלה ראשונה באמצע השבוע הבא להכנס לאתר לקרוא הודעות באופן קבוע מייק: בסוף חוזרים ל"מה זה מחשב??" כלי שבאמצעותו ניתן לפתור בעיות באמצעות אלגוריתמים 02:56:46
כללי המשחק פרוט באתר הקורס http://www.cs.bgu.ac.il/~intro111/Main/Syllabus לבית: וודאו את הבנת נכונות האלגוריתם של אוקלידס רשמו תרשים זרימה שלו מטלת מעבדה ראשונה: להגשה באמצע השבוע הבא מטלה ראשונה באמצע השבוע הבא להכנס לאתר לקרוא הודעות באופן קבוע מייק: בסוף חוזרים ל"מה זה מחשב??" כלי שבאמצעותו ניתן לפתור בעיות באמצעות אלגוריתמים 02:56:46