Instructions

User Manual: Pdf

Open the PDF directly: View PDF PDF.
Page Count: 8

3ליגרת–C++תפש
Templateclass,exceptions,MoveSemantics,STLandMultithreading
23:55העשדע10.09.15ישימחםוי:השגהךיראת
12:55העשדע11.09.15ישישםוי:(תודוקנ10תתחפהב)תרחואמהשגה
23:55העשדע10.09.15ישימחםוי:ןחובהלשהשגההךיראת
.1:תובושחתויחנה
.1רתאבםיאצמנםיכמסמהינש.דוקהתביתכןונגסוםיליגרתהתשגהתויחנהבדומעלשיםיליגרתהלכב
.ולאתושירדבהדימעםגלולכידוקינה–סרוקה
.2תורעהףיסוהלםכילעקיפסמרורבוניאםכלשדוקהובהרקמלכב.רורבדוקבותכלםכילעםיליגרתהלכב
.היצקנופלכלשדועיתטרפבודוקה(documentation)דועיתלעדיפקהלשי.דוקהףוגברבסה
.3תאתוריבסמהדוקבתורעהףיסוהלםכילע,יתרגשאלוהשמואדחוימבוציעבםישמתשמםתאוהדימב
.ובםתרחבעודמוםכלשבוציעה
.4ליגרהקנילבאוהשלכץבוקשיגהלרוסיאלח,הבםישמתשמםתאוהכראהםכלשיוהדימבםיליגרתהלכב
ןויצתדרוהבןכתסמםיקנילהינשבםיצבקשיגישימ.(חתפנםרטרוחיאבהשגההקנילםאםג)
.תיתועמשמ
.5.ושרדתשולאלעםיפסונםיצבקשיגהלןיא
.6,תורהזאאללתלפמקתמתינכותהשאדוולוWallWextrapthreadWvlaםילגדהםעלפמקלםכילע
רוקמץבוקמתינכותרוצילידכב,לשמל.ליגרתהןויצבהדרוהרורגתתורהזאםעתלפמקתמשתינכת
:הדוקפהתאץירהלשיex1.cםשב
g++std=c++11WextraWallpthreadWvlaex1.cppoex1
.7יססובמרפסהתיביבשחמבהצירהולופמיקהתושירדלכבםידמועוםיניקתםכלשםיליגרתהשאדוולםכילע
ינפלרפסהתיביבשחמבליגרתהתאץירהלהבוח.(riverתרשה,יול,םוירווקאהיבשחמ)bit64ידבעמ
unamea“הדוקפהתועצמאבbit64תרוצתבונהםידבועםתאוילעבשחמהשאדוולןתינ).השגהה
(x86_64בותכםאלשמל,64איההרוטקטיכראהיכאודיוו
.8םאב.השגההןמזבpresubmissionscriptהמרצונשPDFהץבוקבלבקתמהטלפהוקדב,השגההרחאל
.תודוקנדבאלאלשתנמלעןתואונקת,תואיגשןנשי
,50מליחתיןויצה)תיתועמשמדריונויצpresubmissionscriptהתארובעיאלשליגרת!בלומיש
.ךכלערערעלןתינהיהיאלו(תדרללכויו
.9איהורובע(tests)תויטמוטואתוקידבתביתכידילעםגוותאירקידילעםג,השגההינפלדוקהתקידב
.דוקהתקידבלהצקירקמלעובשיח.םכתוירחא
.10םהבםיטסטהלעטוריפולבקתותויטמטואהתוקידבהוצוריליגרתהתשגהדעומרחאלתנקותמהשגה
קלחהרזחבלבקלוםילקדוקינוקיתרחאלליגרתהתאבוששיגהלןתינהיהיןויצהרופישםשל.םתלפנ
.סרוקהרתאוםורופבומסרופיםיאלמםיטרפתודוקנהמ
.2C++סרוקבםיליגרתהללכלתובושחתויחנה
.1Cלשתויצקנופינפלע(new,delete,coutלשמל)C++לשםיטקייבואותויצקנופבשמתשהלודיפקה
אלו(std::stringב)stringהקלחמבושמתשהטרפב.(malloc,free,printfלשמל)
.Cד(char*)לשתזורחמב
.2ףיסוהלםכילעזאםגו)יחרכהרבדהןכםאאלאCלשאלוC++לשתויטרנדטסתוירפסבשמתשהלשי
.(ךכלתוביסהתאהריבסמההרעה
.3םינתשמכםירדגומםכלשתוקלחמהינתשמיכודיפקה,אמגודל–InformationHidingתונורקעלעודיפקה
.(private)םייטרפ
.4.byreference(ןתינשןכיה)םריבעהלאלא,םידבכםינתשמbyvalueקיתעהלאלודיפקה
.5.תולבקמןהשםירטמרפהותויצקנופהתורדגהבconstהרומשההלימבשומישלעדואמודיפקה
.רטמרפהתרדגהינפלconstופיסוה–םייוסמרטמרפתונשמןניאשתויצקנופ
.הדותמהתרדגהלconstופיסוה–הקלחמהינתשמתאתונשמןניאשהקלחמלשתודותמ
.הפשבםיבושחהתונורקעהדחאאוהםיעובקכC++בתוקלחמ/םינתשמתרדגה:בלומיש
.6(תודותמבןהוםינתשמבןה)םימיאתמהתומוקמב,staticבשומישהלעודיפקה
.7תופילדםכלןיאשקודבלידכvalgrindבושמתשה)םיצקמםתאשןורכיזהלכתאררחשלודיפקה
.(ןורכיז
.3:ףסונבושחעדימ
.1(תיבהמהשגהינפלדוקהתקידבםשללשמל)רפסהתיביבשחמלSSHתועצמאברבחתהלןתינ
http://wiki.cs.huji.ac.il/wiki/Connecting_from_outside
.2scanfוprintfתויצקנופבשומישהתאדוחייבוCתפשלשטלפטלקהתיירפסתאריכהלםכילע
http://www.cplusplus.com/reference/clibrary/cstdio
.1:הזליגרתלתויפיצפסתויחנה
.1.רוזעללוכיvectorאמגודל,STLבשמתשהל(םישרדנףאו)םיאשרםכניההזליגרתב
.2.deleteוnewבשומישלערוסיאלחהזליגרתב
.3תוכירצ,םיקרוזםתאשתוגירחה.exceptionsהןונגנמתועצמאבורכיזתואצקהןולשיכםעדדומתהלםכילע
.תויביטמרופניאתויהלוstd::exceptionמתשרל
.4קרזיהלהלולעהאיגשהםאםגודעת,םיבצמוליאבותקרוזאיההאיגשוזיאהיצקנופלכדועיתלופיסוה
.הבםישמתשמםתאשהיירפסמואתינבומהיצקנופמ
.5דוקבשמתשהלץלמומחותיפןמזבךוסחלידכבןכלעו,1ליגרתלשןוכדעוהבחרהםצעבאוההזליגרת
ליגרתל1ליגרתמתויועטםיררוגאלםתאשבלומיש,תאזםע.ותואןכדעל/ביחרהלו1ליגרתלםתבתכש
.הז
.4:דMatrix
(1עקר
(aשמשלםגלכותהקלחמה.ירנגסופיטמםההצירטמהירביארמולכ,הצירטמלשתירנגהקלחמ
לכמםירביאליכהלםילגוסמהםיירנגהstd::listוstd::vectorלהמודב)אוהשסופיטלכלרנייטנוקכ
תולועפעצבלעדתהקלחמה,שארמתורדגומןובשחתולועפםעםירפסמגציימה(אוהשסופיט
לששומימהוהרהצההתאליכישMatrix.hppץבוקהתאבותכלםכילע.תוצירטמלשבושיח
.Matrixתירנגההקלחמה
(b==,=,*,+=,=,,+םירוטרפואלשומימולשירשאTסופיטלכמהצירטמרוצילןתינ
intלשמל.(הקלחמהלשספאהרביאתארצוייוטנמוגראכ0לבקמ)ספאהיאנבלששומימןכו,<<ו
ספארביאו,תזורחמכגוצייל,ןובשחהתולועפבושיחלהנושךרדתויהלהיושעסופיטלכל.doubleוא
.ולשמ
(2Matrixקשממהםושיי
(cסופיטמהירביאש,תירנגהצירטמראתתש,MatrixהקלחמהתארידגהלםכילעMatrix.hppץבוקב
.(ליעלרדגוהשיפכ)אוהשלכ
(d:תואבהתויצקנופהתאוללכיו.Matrix.hppץבוקבויהיהקלחמהתויצקנופלםישומימה
.0הרביאתאהליכמה1x1דמיממהצירטמריזחמה(םיטנמוגראאלל)לדחמתרירביאנב
הצירטמהידמימתאלבקמהיאנב
Matrix(unsigned int rows, unsigned int cols)
.ספאהירביאתאהליכמהןותנהלדוגבהצירטמלחתאמו
.הקתעהיאנב
(moveconstructor)הרבעהיאנב
:האבההמיתחהתאשממהיאנב
Matrix(unsigned int rows, unsigned int cols, const vector<T>& cells)
רוטקוובםירביאהרדס.ןותנהרוטקוהירביאתאהליכמהןותנהלדוגבהצירטמלחתאמו
.(ןלהלואר)רוטרטיאהתועצמאבהצירטמהירביאלערבעמהרדסתאםאות
.destructor
לשיונישרשפאמהזרוטרפוא.הצירטמתמשהתלועפעוציבםשל('=')המשהרוטרפוא
הצירטמלההזהייהתשךכ,׳=׳הןמיסללאמשמשטקייבואהידילעתגצוימההצירטמה
המשההתלועפ:ורכז.(׳=׳הןומיסלןימימ)רטמרפכרבעומהטקייבואהידילעתגצוימה
.יולתיתלבוההזקתועתורצוויהלתמרוג
.תוצירטמרוביחתולועפעוציבםשל('+')רוביחרוטרפוא
.תוצירטמרוסיחתולועפעוציבםשל('')רוסיחרוטרפוא
. תוצירטמלפכתולועפעוציבםשל('*')לפכרוטרפוא1
.תוצירטמתאוושהתלועפעוציבםשל('=!'ו'==')האוושהירוטרפוא
1
.'-=','+=','*=' םירוטרפואה תא שממל השירדה תא הז ליגרתב ונדרוה המל ובשח
אלא,הלעפוהאיהוילעטקייבואהתאהנשמהניאהיצקנופה.transםשבףולחשתיצקנופ
.שדחטקייבואהריזחמ
.הצירטמהסופיטמךרעהריזחמהtraceםשבהבקעתיצקנופ
לכ :אבה ןפואב ostream טקייבוא םע הצירטמה תספדה םשל '<<' רוטרפוא שומימ
המגודל טלפה תא ואר .םיכרעה ןיב דירפמ tab ו ,תדרפנ הרושב תספדומ םיכרע תרוש
איה םיסיפדמ םתא התוא תזורחמהש אדוול ידכ diff תרזעב וושהו רפסה תיב ןורתפ לש
.הנוכנ
] אתב ךרעה תא ריזחמו (unsigned int,unsigned int) םירטמרפכ לבקמה ()רוטרפוא
תויהל ךירצ המ ובשיח) הז רוטרפואל nonconstו const תאסרג שממל שי .[row,col
.(םירקמהמדחאלכבהרזחההךרע
םיכרע וריזחי ןהש ךכ end ו begin תויצקנופה תא שממל םכילע :םירוטרטיא
רמולכ) const תויהלהז רוטרטיא לע .הצירטמה לכ לע רבועה רוטרטיאל םימיאתמה
לש concept ה תאשממל וילעו (הצירטמה ירביא תא תונשל רשפאמ ונניא אוהה
.(c++11 טרדנטסל םאותה קשממה תא טנרטניאב ושפח) BidirectionalIterator
:תואבהתודותמהתאשממלשי,רמולכ
רדסה יפל הצירטמה יאת לכ לע רוטרטיא הריזחמה begin() םשב הדותמ
:הצירטמהתליחתבליחתמה,ליגרה
(0,0)->(0,1)->...->(0,col-1)->(1,0)->....->(row-1,col-1)
הצירטמהףוסלעיבצמהרוטרטיאהריזחמהend()םשבהדותמ
.טדנדטסבלבוקמכ
תודומעהו תורושה רפסמ תא םאתהב תוריזחמה ,cols() תייצקנופו rows() תיצקנופ
.הצירטמב
םכל הארנש המ יפל ,םכנוצרכ תויטרפ וא תוירוביצ תויצקנופ דוע ףיסוהל ולכות ףסונב
.הקלחמלישומיש
(e:תויחנהוםיפיט
ךוסחלהלוכיהנוכנהריחבו,ליעלתושירדהשומימלעעיפשיהצירטמהלשימינפהשומימה
.הדובעטעמםכל
.םתרדגהלהליבקמהתיטמתמההלועפהתאתועצבמתומיאתמהתויצקנופהלכ
לשמל)םיאתמרבסהםעהגירחקורזלםכילעהלועפהתאעצבלןתינאלובהרקמלכב
(תיעובירהניאהצירטמהשכtraceתייצקנופלהאירק
ןורכזהתניחבמהרוקהמבטיהובשיח.ילאמשהטקייבואהןוכדעעצבתמ'='רוטרפואב
.וזהלועפבקעהידמימתאהנשמהצירטמהרשאכ
לבא ,םכתטלחהל ןותנו םכל בתכומ אל (תויצקנופה לש תומיתחה) קיודמה קשממה
ובשיח .היצקנופה תרדגהל רתויב הבוטה איהש תחא תירקיע ךרד הנשי םירקמה בורב
:לעלשמל
.constכתרדגומתויהלהיצקנופהלעםאה
יאדכ ילוא וא ,by value וא by reference רבעומ תויהל ךירצ טנמוגראה םאה
?constכרדגומתויהלךירצטנמורגאהםאה.עיבצמבשמתשהל
by רבעומ אוה םאהו ,const כ רדגומ תויהל ךירצ הרזחהה ךרע םאה
.byvalueואreference
וסנו הפשב םינבומ םיסופיט לע לעופ םישמממ םתאש רוטרפואה ךיא ובשיח
.הצירטמהרובעםכלששומימבהזירחאתוקחתהל
רביירדה תא םאות םכלש קשממהש אדוול םכילע,ןכ ומכ
.םכלקפוסמשGenericMatrixDriver.cpp
(3Complexסופיטשומימ
(aץבוקבןותנהקשממהיפלComplex.cppץבוקבComplexהקלחמהתאםכרובעונשמימ
םכלששומימהתאהתועצמאבקודבלולכותרשאםיבכרומםירפסמתקלחמיהוז.Complex.h
.תירנגההצירטמל
(b.ולאםיצבקשיגהלןיא
(4.(specialization)תוחמתה
(aיפיצפסשומימםגMatrix.hppץבוקלףיסוהלםכילע,Matrixהקלחמהלשירנגהשומימלףסונב
הצירטמלהנווכה)הצירטמהלש דומצהתאתבשחמה,transהיצקנופליביטנרטלאשומימ:דחא2
.Complexאוהםירביאהלשסופיטהובהרקמהרובע,(תיסאלקאלותיטמרההדומצ
(5:יליבקמתונכית
(a.*ו+םירוטרפואליליבקמשומימקפסלםכילעהזליגרתב
(b,תובילרפסמואםידבעמרפסמידילעתמיוסמהלטמלשתינמזובדוביעאוהיליבקמדוביעעקר
לעססובמןויערה.ירוטדוביעלשהטישמרתוירהמתואצותלעיגהלידכ,םאתהבתלצופמאיהרשאכ
,רתויתונטקתולטמרפסמליהשלכהיעבלשןורתפהךילהתתאלצפלללכךרדבןתינשהדבועה
.םואיתלשתמיוסמהדימםע,תינמזובעצבלןתינןתואש
.ולשתונורסחהותונורתיהתאגלזמההצקלעםעטנויליבקמתונכיתטעמלגרתנהזליגרתב
(c.boolגוסמטנמוגראתלבקמהsetParallelםשבתיטטסהדותמMatrix.hppץבוקברידגהלםכילע
לשרוביח/לפכהתולועפ,trueךרעהםעהדותמלהאירקהרחאל,trueאוהטנמוגראהוהדימב
הקלחמהתאריזחתfalseטנמוגראםעהדותמלהאירק.יליבקמתונכתתועצמאבועצבתיתוצירטמ
.(ליגרכ)ירוטןפואברוביח/לפכתולועפועצבתיהב,הלשתיביטלופידהתוגהנתהל
(d:האבההעדוההתאסיפדהלםכילעהקלחמהתוגהנתהתאהנשמשהדותמלהאירקלכתובקעב
GenericMatrixmodechangedto(parallel|nonparallel)mode.
.יחכונהבצמלתיסחיהקלחמהתוגהנתהביונישהיהםאקרספדותהעדוהה
2
https://en.wikipedia.org/wiki/Conjugate_transpose
(e:םיאבהםיללכהלערומשלםישרדנםתא,םימודויהיםכלשםיעוציבהשידכבוםכילעלקהלתנמלע
.דבלב(+)רוביחהו(*)לפכהירוטרפואןה,יליבקמדומבםגשממלשיןתואתודותמה
תוצירטמלפכלשיביאנהםתירוגלאבשמתשהלםכילע,תורתוימתויוכבתסהעונמלתנמלע
.יליבקמהשומימלםגו(ליגר)ירוטהשומימלםג, IterativeAlgorithm 3
האצותהתצירטמבהרושלכרובעעצבתהליליבקמהתונכתהלעל"נהתולועפהלכב
.(האצותתצירטמבהרושבושיחלכלדרפנthreadבשומיש,רמולכ)ליבקמב
(6:ירוטויליבקמדוביעתאוושה
(aתוהזלהסננו,ירוטהתונכתהלאיליבקמהתונכתהלשתוגהנתהתאהוושנונאליגרתהלשהזקלחב
.םהלשתונורסחהותונורתיהמקלח
(b:םכלםיקפוסמךכםשל
ParllelChecker.cppםשבץבוק
:האוושההעצבתתםתועצמאבםינותנםיליכמהטלקיצבק2
~slabcpp/www/sets/big.txt
~slabcpp/www/sets/small.txt
(קפוסמהביתנהמתורישיותואאורקלםיעיצמונאולודגץבוקbig.txt)
(cדוביעהבצמלומלאירוטהדוביעהבצמבהצירהןמזתאתוושהלתנמלעParllelCheckerבשמתשנונא
.טלקהיצבקמדחאלכרובע,יליבקמה
(d.ךכלםימרוגהםהמוםהינבםילדבהשיםאהןיבהלהסננוםינותנהיצבק2לעוזההאוושההתאהשענונא
(e:שומישתוארוה
:'O'םילגדהםעlinkageוהיצליפמוקועצב
g++std=c++11WextraWallpthreadWvlaO–DNDEBUGParllelChecker.cppComplex.cpp
oParllelChecker
.רתוירהמץורישךכדוקהלעתויצזימיטפואעצבלרלייפמוקלרמואOלגדה
טשפמךא)יחרכהוניארבדה,תחאהרושבlinkageהוהיצליפמוקהתאונעציבוזאמגודב
.(הזהרקמבםייחהתא
יכוהניקתהרוצבתלעופאיהשואדווםינותנהלשםיצבקה2לעהרצונשתינכתהתאוצירה
.הבשמתשהלדציכםיניבמםתא
(f.READMEהץבוקב,האבההלבטבתולועפהמתחאלכרובעספדומהךרעהתאומכס
small
big
+
*
+
*
יליבקמ
3
https://en.wikipedia.org/wiki/Matrix_multiplication_algorithm#Iterative_algorithm
ירוט
(g:תואבהתולאשהלעREADMEהץבוקבונע
(i?הזלדבהעבונהממ?רתוירהמהצרתינכתהבצמהזיאב?םינותנהלשםיטסה2ןיבלדבהשיםאה
(ii?הזלדבהעבונהממ?לפכהלומלא,רוסיחהורוביחהתולועפןיבלדבהשיםאה
(7GenericMatrixDriverרביירדה
(aתירנגה הקלחמה תאיסיסב ןפואבקדובש GenericMatrixDriver.cpp םשב רביירד םכתושרל
.םכנוצרכותונשלוובשמתשהלםינמזומםתא.םכלש
(b.םכלשהירפסהםעדחיבותואץירהלולפמקלםינמזומםתא
(c.הזץבוקשיגהלןיא
.5:רזערמוח
.1:באוצמלןתינרפסתיבהןורתפתא
~slabcpp/www/ex3/schoolSol.tar
גהנתהלהכירצתינכתהךיאתוארלידכותואוצירה
.2:באוצמלןתינליגרתהיצבקתא
~slabcpp/www/ex3/ex3_files.tar
רציילםילוכיםתא.רפסהתיבןורתפלשהלאלםיהזםכלשםיטלפהשואדווםכתינכתתאוקדב
םיטלפםעםכלשתינכתהלשטלפהתאתוושהלו,םיפסונםירקמקודבלידכםיפסונםיברטלקיצבק
ןורתפלשהצירהץבוקלהזהטלקהתאםינתונםתאשכרצונשטלפהםעוא,םירחאםידימלתלש
.רפסהתיב
.3:++Cבoverloadingעוציב
http://www.cprogramming.com/tutorial/operator_overloading.html
http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B
http://www.cplusplus.com/reference/set/set/operators/
.6:valgringםעהדובע
.1ונא.חוקלהלאורורחשינפלדוקבןורכיזתויעברותיאבעייסלםתרטמשקושבתונכותלשלודגידרחבמונשי
.תולועמתואצותתנתונ,תימניחהנכותלתיסחיש,valgrindתנכותבשמתשנ
.2תרושבןה)'g'לגדהםעםכלשדוקלlinkageוהיצליפמוקעצבלםכילעvalgrindתאץירהלידכ
:valgrindוצירהןכמרחאל.(linkageהתרושבןהוהיצליפמוקה
>valgrindleakcheck=fullshowpossiblylost=yes
showreachable=yes–undefvalueerrors=yesGenericMatrixDriver
.3:תואשרהיונישעצבלוכרטצתשןכתי,האיגשתעדוהםתלביקםא
>chmod777GenericMatrixDriver
.4.ןתואןקתלםכילע,םכלשדוקהםעתויעבלעחווידvalgrindםאשןבומכ
.5.סרוקהרתאבשvalgrindלשרצרצקהtutorialבורזעיה
.7:השגה
.1תאוםכלשהקלחמהשומישבםיאצמנהםיצבקהלכתאליכמהex3.tarםשבtarץבוקשיגהלםכילע
:םיאבהםיצבקה
Matrix.hpp
:תואבהתודוקפבךמותהMakefileץבוק
.Matrix.hpp.gchתריציmakeMatrix
.makefileהתודוקפתועצמאבורצונשםיצבקהלכיוקינmakeclean
.'makeMatrix'הדוקפלהלוקשהיהתםירטמרפאללmakeתצרה
.יליבקמהדוביעהלשתולאשלתובושתהםעREADME
.רוחיאבהשגהאיההשגההשהרקמבקרextension.pdf
:םיאבהםיצבקהתאשיגהלןיא
Complex.h,Complex.cpp,GenericMatrixDriver.cpp,ParllelChecker.cpp
םג)םיטנוולראלםיצבקתפסוהמוענמה,םכנוצרכםיפסונםיצבקףיסוהלםילוכיםתאשףאלא!בלומיש
םהבןיאשםיצבקשיגישימלתודוקנדירונונא.(ךכמעגפיאלםכנויצשידכבםגו,םיקדובהלעלקהלידכב
.ךרוצלכ
.2:הדוקפהידילעשורדכtarץבוקרוצילןתינ
tarcvf<tar_name><files>
.3אללותואיגשאללםילפמקתמםיצבקהשואדוותדרפנהיקיתבex3.tarץבוקהתאוחתפ,השגההינפל
.תורהזא
.4.שיגהלםידמועםתאותואדוקהלעםתבתכשםירטסטותויטמוטואתוקידבץירהלםגדואמץלמומ
.5:הדוקפהתרזעבדודיקןונגסרובעתיטמוטואהקידבםכמצעבץירהלםילוכיםתא,ףסונב
~slabcpp/www/codingStyleCheck<fileordirectory>
םיצבקהלכוקדבישהייקיתואקודבלםיצורםתאותואץבוקהםשבףלחומ<directoryorfile>רשאכ
(codingStyleהתוקידבמקלחקרהניהוזתיטמוטואהקידבשבלומיש)הבםיאצמנה
.6התאתרבועםכלשהשגההשואדוו(submission.pdf)טלפהץבוקתאהשגההרחאלקודבלוגאד
.תורהזאואתואיגשאללpresubmissionscript
~slabcpp/www/ex3/presubmit_ex3
!החלצהב

Navigation menu