Edx.org - CS50x - מבוא למדעי מחשב בהארוורד - עמוד 3 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

Edx.org - CS50x - מבוא למדעי מחשב בהארוורד


Aternus

Recommended Posts

VMWare Workstation עובד מעולה...

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

אישית התעצלתי בשבועיים האחרונים ולא עשיתי את ה PS1 עדיין, מקווה להשלים פערים ביומיים הבאים ולעדכן... :)

קישור לתוכן
שתף באתרים אחרים

  • תגובות 60
  • נוצר
  • תגובה אחרונה

כמעט הגעתי לסיום של pset3, אבל נתקעתי עם הבדיקה של הקוד (check50).

מימשתי את הפונקציות:

  • draw
  • lookup
  • scramble
  • שיניתי את הקוד בכדי שאפשר יהיה לקבל uppercase\lowercase

מריץ

check50 2012/pset3/scramble scramble.c 

ומקבל: http://dpaste.com/838494/

עשיתי update50 אבל זה כבר מעודכן.

רעיונות?

--------------------------------

עריכה

ענו לי כאן http://apps.cs50.edx.org/discuss/thread/15018

זה איכשהו קשור לקטע קוד שאני הופך תוים מ-lowercase ל-uppercase. צריך לעביר את הקטע הזה מתחת ל-GetString() אז שמתי את זה בדיוק לפני fprintf(log, "%s\n", s);

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

קישור לתוכן
שתף באתרים אחרים

נראה לי שיש לי בעיה.

זה נראה כאילו main לא קוראת לlookup.

אפילו כשאני עושה b lookup בgdb, אני לא מקבל תוצאות.

מישהו יכול לכוון אותי?

יצאתי פיתה, שלחתי אותיות lowercase ואז הוא לא קיבל TRUE בfind(), אז הוא גם לא נכנס לlookup(), ובתודה לtranq כבר נמנעתי מבאג של כתיבה ללוג אחרי המרה.

עכשיו נשאר רק לסדר את החיפוש הבינארי.

השתמשתם בstrcmp ?

חשבתי לחצות את הרשימה אות אחרי אות.

קישור לתוכן
שתף באתרים אחרים

תודה על ההערות! :)

בכיף!

עכשיו נשאר רק לסדר את החיפוש הבינארי.

השתמשתם בstrcmp ?

חשבתי לחצות את הרשימה אות אחרי אות.

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

קישור לתוכן
שתף באתרים אחרים

מצאתי שני באגים כרגע (שאמשיך לעבוד עליהם השבוע)

התוכנה מגיבה (נכנסת לlookup) לeat, אבל לא לdiet, (לדוגמה) ושניהם במסך. וזה מוזר, כי גם אם הייתי מכניס XXZ והיה את האותיות האלה במסך זה אמור לעבור לחיפוש במילון. (בעצם, מה החוקים של המשחק בכלל? אותיות סמוכות? :silly: )

עוד באג באלגוריתם של החיפוש, צריך להפריד בין הmin,max של החיפוש, לבין ה i של ההתקדמות במחרוזת (או לפחות ככה זה נראה בינתיים).

-אתם הוצאתם את החיפוש לפונקציה רקורסיבית נוספת?

קישור לתוכן
שתף באתרים אחרים

כמה נקודות חשובות מה SHORTS של W1:


/*= Libraries
************************************************/
* In programming a Library is a collection of related, pre-written code

* An essential concept in programming is knowing which tools are available for your disposal - it's always better to use available tools rather then inventing them again

* Libraries typically include:
- header files (*.h)
-> declares the library's resources (functions, variables, structs, type definitions - a.k.a the "interface")
-> no function definitions - driven by the concept of "information hiding" (encapsulation)
- implementation files (*.c)
-> used for function definitions

* implementation (*.c) + header (*.h) = object (*.o)

* libraries are usually distributed as:
- object (binary) + header files
-> implementation files are not needed because we have the already compiled object code (binary) files - unless you want to compile the library from scratch

* To use a C library:
1) include the library's header files in the source code of your program

- typical location for library's header files: "/usr/include"

- allows the compiler to know about library's resources and generate the appropriate assembly code
-> to include a header file inside the typical include directory (/usr/include): #include <library.h>
-> to include a header file inside the current directory (working directory): #include "library.h"

2) link in the library's binary files

- typical location for library's object files: "/usr/lib"
- because the header files does not include the implementation code of the library we need to link in the object code files of the library
- you can link library's object files either by specifying the *.o files directly or using clang's -l[lib] parameter
-> to include an object code file of a library in clang: clang hello.c ... -l[lib]


/*= Functions
************************************************/
* Function prototype = the declaration line for the function

* return_type = void
- return nothing

* function_name = main
- run as soon as the program is executed
- must return an integer (0 = all well, other = error codes)

* arg = void
- take no arguments

return_type function_name(arg_type arg1, arg_type arg2, arg_type argX)
{
// function body
}


/*= Compilers
************************************************/
.c = C implementation file extension - (source code)
.h = C header file extension
.o = C object code file extension - (binary)
.s = assembly file extension

* Compiling = Transferring code from a higer level language to a lower level language.
* When linking object code files together there should be only one "main" function.
* Clang's -l argument should refer to the libraries used inside the source code file + must be the last argument.

1) preprocessing - goes over the source code file and processes the preprocessor directives, #, (include, define, etc.)
2) compilation - converts the source code to assembly code
3) assembling - translates assembly code to machine/object code
4) linking - linking object files together to make an executable (you can specifiy .o files directly without using -l)

clang -E hello.c = run preprocessor (outputs to stdout)
clang -S hello.c = run preprocessor + compiler (outputs hello.s)
clang -c hello.c = run preprocessor + compiler + assembler (outputs hello.o, which is a binary file)
clang hello.c -l[library] = run preprocessor + compiler + assembler + linker & include additional libraries object code (outputs an executable)
clang hello.o stdio.o cs50.o = run linker on the object code file(s) directly

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

כרגע רק להרצאות יש NOTES מוכנים מראש.

קישור לתוכן
שתף באתרים אחרים

התוכנה מגיבה (נכנסת לlookup) לeat, אבל לא לdiet, (לדוגמה) ושניהם במסך. וזה מוזר, כי גם אם הייתי מכניס XXZ והיה את האותיות האלה במסך זה אמור לעבור לחיפוש במילון. (בעצם, מה החוקים של המשחק בכלל? אותיות סמוכות?

)

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

בתוך הלולאת while, לקראת הסוף יש if (find(s) && lookup(s) {..}

במידה ו-find מחזיר false (הוא לא מוצא מילה על הלוח) אז ה-lookup בכלל לא יתבצע כי כמו שאתה בטח זוכר, כדי לקבל בתנאי true עם-&& שני האגפים צריכים להחזיר true ואין טעם לבדוק את האגף השני אם הראשון החזיר false.

מקווה לא סיבכתי :)

-אתם הוצאתם את החיפוש לפונקציה רקורסיבית נוספת?

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

קישור לתוכן
שתף באתרים אחרים

עצוב לי :(

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

א. תלמדו את C רק דרך Programming in C - 3rd Edition - תחסכו לעצמכם זמן ותדלגו על כל השורטס של W1 ופשוט תקראו את הספר עד פרק 6. :kopfpatsch:

ב. בSECTION של W1 מדברים על BITWISE OPERATIONS שזה חומר שנלמד ב W6 (לא פחות ולא יותר חחח), לכן תעשו בחוכמה אם תראו את שני הקטעים עכשיו כדי שיהיה לכם מושג על מה מדובר ב אחרי זה.

ג. שערים לוגיים אתה כבר יודעים? לא? אז תלמדו... למה? כי הלוגיקה הבינארית מבוססת בדיוק על זה.

http://computer.howstuffworks.com/boolean.htm/printable

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

קישור לתוכן
שתף באתרים אחרים

בינתיים בedX הם תקעו אותנו על week4, ובלי pset.

לפי ההרצאה, אחרי זה מגיע quiz 0.. מעניין למה הם מעקבים את הedX ככה.

אני בינתיים זורם עם ההרצאות. את הבסיס לC קיבלתי מ howstuffworks.

בshorts השתמשתי מתי שרציתי לחדד נקודות. לדוגמא סוגי המיונים, והחיפוש הבינארי.

קישור לתוכן
שתף באתרים אחרים

  • 2 שבועות מאוחר יותר...

טוב, אז העולם לא חרב למרות הכל - לפחות לבינתיים... :)

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

מישהו מעוניין? חשבתי לעשות בעזריאלי, כמו בימים הטובים של HW.

קישור לתוכן
שתף באתרים אחרים

אני גר בגליל העליון אז ככה שזה פחות רלוונטי לי.

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

לעדכונכם - WEEK 5 עלה, ביחד עם quiz 0.

קישור לבוחן - https://x.cs50.net/2013/quizzes/0/.

מי שרוצה להתקדם עוד בקורס, יש את כל ההרצאות בyoutube כולל הכתוביות באנגלית.

רושם כללי לגבי ה pset של אותו שבוע אפשר לקבל באתר של הקורס http://cs50.net

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

עדכונים בנוגע לקורס - בטוויטר https://twitter.com/cs50

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.


×
  • צור חדש...