JavaRush /בלוג Java /Random-HE /חומרים נוספים להרצאות CS50: שבוע 1 (הרצאות 3 ו-4)
Masha
רָמָה

חומרים נוספים להרצאות CS50: שבוע 1 (הרצאות 3 ו-4)

פורסם בקבוצה
cs50 ברוסית חומרים נוספים משימות שבוע 1

יעדי שבוע ראשון

  • הכר את פקודות לינוקס בסיסיות
  • למד תחביר C בסיסי ופתור כמה בעיות
  • תתחיל לחשוב יותר ברור =)
IDE CS50
להשלמת משימות, CS50 מציע IDE (סביבת פיתוח משולבת) בענן. כדי להשתמש בו, צור חשבון בפלטפורמת edX והירשם לקורס המקורי . לאחר מכן:
1. עבור אל cs50.io, בחר edX מהרשימה, הזן את פרטי הכניסה והסיסמה שלך, לחץ על שלח 2. הזן את פרטי חשבון edX שלך, לחץ על חזרה ל-ID.CS50.NET . cs50.io 3. אנחנו מחכים: המרחב הוירטואלי שלך נוצר. מרחב וירטואלי cs50 4. נעשה! cs50 רעיון
שורת הפקודה והשקת CS50 IDE
בחלק התחתון של חלון CS50 IDE, בלשונית מסוף, יש חלון מסוף או חלונית שורת פקודה. אתה יכול להזין כאן פקודות מחרוזת: אתה יכול לעשות את אותו הדבר כמו עם ממשק החלון, למשל, להפעיל אפליקציות, למחוק וליצור קבצים, להתקין תוכנה. אם מעולם לא עבדת עם שורת הפקודה, שיטה זו כנראה נראית מסורבלת: עליך לזכור פקודות ולהקליד אותן במקום ללחוץ על סמלים וכפתורים. במידה מסוימת זה נכון, אז הומצא ממשק החלון. עם זאת, שורת הפקודה זמינה בכל מערכות ההפעלה ומנהלי מערכת אוהבים אותה. והכל בגלל שלפעמים אי אפשר לחיות בלעדיו. בחלון ה-IDE בטרמינל, תראה שורה מסתורית: שם משתמש:~/workspace $ במקום "שם משתמש" יהיה שם שנוצר באופן אוטומטי (בהתבסס על נתוני הרישום שלך). לחץ על חלון המסוף, הקלד: update50 הקש Enter. הפקודה מבקשת מהמערכת לעדכן. תראה שורות מופיעות בטרמינל המתארות את תהליך ההתקנה. אל תסגור את CS50 IDE עד שתראה את העדכון הושלם! . לאחר מכן, שורת ברירת המחדל תופיע שוב, זו עם שמך.
עבודה ב-IDE
בוא ניצור תיקיה שבה הקבצים שלך יאוחסנו. לחץ לחיצה ימנית על ~/workspace (ספריית השורש שלך) בפינה השמאלית העליונה של CS50 IDE , בחר תיקיה חדשה . שנה את שם התיקיה pset1 (אם אייתת את השם שגוי, לחץ לחיצה ימנית על התיקיה שלך ובחר שנה שם ). cs50 ide שינוי שם התיקיה לאחר מכן לחץ לחיצה ימנית על התיקיה pset1 ובחר קובץ חדש . הקובץ Untilted מופיע, בואו נשנה את שמו hello.txt . cs50 רעיון לחץ פעמיים על hello.txt. ב-CS50 IDE תראה לשונית חדשה ושדה בצד ימין שבו תוכל להקליד. אם עשית זאת, שימו לב לסמל הכוכבית (*) המופיע לפני שם הקובץ בלשונית - אינדיקטור לכך שבוצעו שינויים בקובץ, אך לא נשמרו. חומרים נוספים להרצאות CS50: שבוע 1 (הרצאות 3 ו-4) - 1 שמור את הקובץ על ידי מעבר אל *קובץ > שמור או שימוש ב- command + S (במכונות Apple) או Ctrl + S (במחשבים אישיים). הכוכבית אמורה להיעלם. בוא נבדוק אם הקובץ נמצא היכן שהוא צריך להיות. בואו נעשה זאת באמצעות שורת הפקודה, הגיע הזמן להתרגל לזה :). כמו בעבר, השורה הפעילה בטרמינל נראית כך: username:~/workspace $ Workspace - ספריית העבודה הנוכחית (זו שפתוחה בסביבת העבודה). הטילדה (~) מציינת את ספריית השורש (סביבת העבודה ממוקמת בה). שים לב שמרחב העבודה בטרמינל זהה לסמל ~/workspace בפינה השמאלית העליונה של ה-CS50 IDE. בוא נתאמן. לחץ במקום כלשהו בטרמינל והקלד בשורת הפקודה ls והקש Enter. שתי האותיות הקטנות הללו - קיצור של "רשימה" - יציגו רשימה של קבצים ותיקיות הנמצאות בתוך ספריית סביבת העבודה הנוכחית. בין היתר, תראה את ה-pset1 שיצרת ! עכשיו בואו נפתח את התיקיה שלנו באמצעות הפקודה. אנו מקלידים cd pset1 או בצורה מילולית יותר: cd ~/workspace/pset1 הפקודה cd (change directory) משנה את ה-active directory, במקרה שלנו ~/pset1 לשורה הפעילה השתנתה ל- username:~/workspace/pset1 $ זה מאשר שאתה נמצא כעת בספרייה ~/workspace/pset1 (השורה מייצגת "I am in pset1 inside the workspace" תיקיה, שנמצאת בתיקיית השורש, מסומנת על ידי ~"). כעת הקלד ls תראה את הקובץ hello.txt ! אם תלחץ על השם בטרמינל, לא קורה כלום: זה טקסט, והוא לא נותן קובץ אקטיבי הקישור, אבל הוא מאשר שה-hello.txt נמצא היכן שהוא צריך להיות. הקלד cd אם אתה כותב רק את הפקודה cd עצמה, אבל לא מספק ארגומנט (כלומר, שם התיקיה שאליה הוא צריך ללכת), הוא יחזיר לך לספריית השורש המוגדרת כברירת מחדל, כך שתראה את התמונה הבאה בשורה הפעילה: username:~ $ כדי לחזור לתיקיה pset1, חייג cd workspace והקש Enter. ואז cd pset1 הכנס שוב. אתה יכול גם להחליף את שתי הפקודות האלה באחת, אותנטית יותר: cd workspace/pset1
שלום, C!
סוף סוף הגיע הרגע הזה! בואו נתחיל לתכנת. בתוך תיקיית pset1 שלנו ב-IDE, צור קובץ בשם hello.c (הסיומת נדרשת), פתח אותו בלשונית חדשה (אנחנו חושבים שאתה זוכר איך עושים זאת מהפסקה הקודמת). חָשׁוּב! האותיות חייבות להיות קטנות, לינוקס היא תלוית רישיות. Hello.c ו-hello.c הם קבצים שונים. בצד ימין של חלון CS50 IDE, הקלד בדיוק את אותו הטקסט כפי שאתה רואה למטה. כן, אתה יכול להעתיק אותו, אבל יותר שימושי להקליד אותו. האותיות הן בצבעים שונים מכיוון של-CS50 IDE יש הדגשת תחביר. זה מדגיש בלוקים של טקסט עם צבע לקריאות טובה יותר. הצבעים אינם נשמרים בקובץ עצמו; הם גלויים רק ב-IDE. אם הם שם, אז ה-IDE מבין את C, וציינת שזה C בסיומת הקובץ (*.c). אם קראת לאותו קובץ hello.txt, הטקסט יהיה בצבע אחד. ודא שהקלדת הכל בדיוק כמו בדוגמה, אחרת תתפוס את הבאג הראשון =). שוב אנו מפנים את תשומת לבך להבדל בין אותיות קטנות לאותיות גדולות. התו \n מעביר את הסמן לשורה הבאה, והטקסט שהוזן לאחר מכן לא ייצמד לפלט של התוכנית. אה כן, ואל תשכחו את הנקודה-פסיק (;). זהו מפריד חשוב להצהרות תוכנית; C לא ירצה לעבוד בלעדיהם. לחץ על קובץ > שמור (או פקודה או Ctrl-s). שמתם לב שהכוכבית שלפני שם הקובץ נעלמה? אם כן, השינויים נשמרו. לחץ במקום כלשהו בחלון הטרמינל מתחת לקוד שלך וודא שאתה בתוך ~/workspace/pset1 (אם אתה לא, לחץ על cd והקש Enter, ואז cd workspace/pset1 ו-Enter שוב). השורה הפעילה שלך צריכה להיראות כך: בוא נוודא שקובץ hello.c נמצא בדיוק היכן שהוא צריך להיות. הקלד והקש Enter. אתה רואה גם hello.c? אם לא, חזור כמה שלבים אחורה וצור שוב את הקובץ בספרייה הרצויה. ... עכשיו מגיע הרגע החגיגי: מצליבים אצבעות ו... מקלידים: ובאצבעות מחזיקות אצבעות לוחצים על אנטר. בדיוק שלום, לא שלום.ג. אם כל מה שאתה רואה לפניך אחרי הפעולה הזו הוא השורה הפעילה השנייה, שנראית בדיוק כמו הקודמת, אז הכל עובד! קוד המקור שלך תורגם לקוד מכונה או אובייקט (כלומר, ברצף של 0 ו-1). כעת ניתן להפעיל את הקוד הזה (כלומר, ניתן להפעיל את התוכנית!). כדי לעשות זאת, הקלד: בשורת הפקודה, הקש Enter. אם לא שינית את הטקסט המוקף בין ה""ים, תראה למטה: אם תקליד כעת את הפקודה ותלחץ על Enter, תראה קובץ hello חדש, יחד עם hello.c ו-hello.txt. בשלום הראשון אמורה להיות כוכבית אחרי השם, מה שמסמן שמדובר בקובץ הפעלה, כלומר, זה שאיתו אתה מפעיל את התוכנית. #include int main(void) { printf("hello, world\n"); } username:~/workspace/pset1 $lsmake hello./hellohello, worldls
באגים?
אם לאחר הפקודה make אתה רואה שגיאות, הגיע הזמן לניפוי הבאגים הראשון! כתובות כמו "הצהרה צפויה" אומרות שעשית שגיאת הקלדה איפשהו. בדוק שוב את הקוד למעלה, רק היזהר מאוד לגבי כל הפרטים. תשומת הלב! תיאורי שגיאות מסופקים באנגלית. אם זה לא ברור, השתמש במנוע חיפוש, Google Translate, או שאל שאלה בתגובות. לאחר שתיקנת את השגיאות, אל תשכח לשמור את הקוד שלך באמצעות קובץ > שמור (או פקודה או Ctrl-s), לחץ שוב על החלק הפנימי של חלון המסוף והקלד make hello (רק ודא שאתה ב-~ /workspace/pset1 תחילה ). אם אין שגיאות נוספות, הפעל את התוכנית ע"י הקלדת הפקודה. ./hello בתיאוריה, הביטוי היקר אמור להופיע לפניך, מוקף במרכאות של האופרטור printf, הפוקד "הדפס". אם חלון הטרמינל נראה קטן מדי, לחץ על סמל הפלוס (+) בעיגול ליד hello.c.
בודק נכונות
היישום check50 מובנה ב-CS50 IDE. זה עובד משורת הפקודה ובודק חלק מהתוכניות לאיתור שגיאות. אם אתה עדיין לא שם, עבור לספריית ~/workspace/pset1 על ידי הפעלת הפקודה בטרמינל: cd ~/workspace/pset1 כעת הפעל ls תראה לפחות קובץ hello.c. ודא ששם הקובץ נראה כך ולא, נגיד, Hello.c או Hello.C. ניתן לשנות שם של קובץ על ידי הפעלת mv source destination מקור הפקודה - שם הקובץ הנוכחי, יעד - שם הקובץ החדש. mv (מהמהלך האנגלי) הוא כלי לשינוי שם. אם קראת בטעות לקובץ Hello.c, הקלד את השורה: mv Hello.c hello.c לאחר שווידאת שהקובץ נקרא בדיוק hello.c, בואו נקרא לתוכנית check50 check. שים לב ש-2015.fall.pset1.hello הוא מזהה ייחודי לבעיית "שלום עולם". check50 2015.fall.pset1.hello hello.c אם התוכנית מופעלת כהלכה, תראה: חומרים נוספים להרצאות CS50: שבוע 1 (הרצאות 3 ו-4) - 2 פרצופי סמיילי ירוקים פירושם שהמבחן עבר. אתה יכול גם לראות את כתובת האתר בתחתית הפלט של check50, אבל זה מיועד רק לעובדים (עם זאת, אם אתה מעוניין, בדוק את זה!). check50 מריץ 3 בדיקות: האם הקובץ hello.c קיים, האם hello.c מבצע קומפילציה והאם האפליקציה מייצרת שורה שאומרת "hello, world\n". אם אתה רואה אמוטיקונים אדומים עצובים, זה אומר שיש לך באג. :( hello.c exists \ expected hello.c to exist :| hello.c compiles \ can't check until a frown turns upside down :| prints "hello, world\n" \ can't check until a frown turns upside down כאן check50 לא מצא את hello.c, והסמיילי האדום מציין שעשית טעות בשם או שהעלית את הקובץ למקום הלא נכון. סמלים צהובים "נייטרליים" פירושם שהבדיקות לא פעלו. ומאיפה הם יכולים להתחיל אם התוכנה לא מוצאת את הקובץ שצריך לבדוק? הנה אפשרות נוספת שתצוץ אם תשנה את הטקסט שהפונקציה printf() צריכה להוציא: :) hello.c exists :) hello.c compiles :( prints "hello, world\n" \ expected output, but not "hello, world" check50 מדווח שהשורה hello, world\n צפויה, אבל משהו אחר הופיע. check50 אינו סופר נקודות עבור סיום הקורס, אלא בודק האם תוצאת המטלה שונה מהמצופה. וזה מאפשר לך לאמת זאת לפני אישור נכונות המשימה במסגרת הקורס (נספר לך כיצד לעשות זאת בהמשך).
יסודות C: השוואה עם Scratch
שלום עולם בסקראץ' ו-C:
חומרים נוספים להרצאות CS50: שבוע 1 (הרצאות 3 ו-4) - 3 #include int main(void) { printf("hello, world\n"); }
  • חומרים נוספים להרצאות CS50: שבוע 1 (הרצאות 3 ו-4) - 4מייצג פונקציה שמדפיסה את ה"מילים" של ספרייט לתוך בועה קומית ב-Scratch, יש פונקציה printf ב-C שעושה את אותו הדבר, רק בלי הקריקטורות.
  • main - באנגלית - "main". נקודת כניסה לתוכנית. כמו חומרים נוספים להרצאות CS50: שבוע 1 (הרצאות 3 ו-4) - 5.
מחזור אינסופי
חומרים נוספים להרצאות CS50: שבוע 1 (הרצאות 3 ו-4) - 6 מתורגם ל-C: while (true) { printf("hello, world\n"); } while (true) עושה את אותו הדבר: הלולאה ממשיכה את עבודתה בעוד (בעוד) הערך נכון (הביטוי הבוליאני "true" או "one"). הלולאה הזו תפעל בלי סוף.
לולאה המציגה ביטוי על המסך 10 פעמים
Scratch חומרים נוספים להרצאות CS50: שבוע 1 (הרצאות 3 ו-4) - 7 C for (int i = 0; i < 10; i++) { printf("hello, world!\n"); } i הוא משתנה נגד; הערך שלו משתנה על ידי אופרטור ההגדלה i++, ומגדיל אותו ב-1 בכל איטרציה של הלולאה. בתחילה, i מוקצה הערך 0 באמצעות אופרטור ההקצאה =. תשומת הלב! כמו ב-Java, ב-C השוויון מסומן על ידי ==, אופרטור ההקצאה =. כלומר, a = 5 פירושו שלמשתנה a הוקצה הערך 5, ו- (a= =5) פירושו ביטוי בולון (אם a שווה ל-5, אז הביטוי נכון, אם לא שווה, אז false) . הלולאה תיעצר כאשר אני "יגדל" ל-9. קל לחשב, הלולאה תתבצע 10 פעמים. לכן, אם אתה צריך לחזור על משהו מספר מסוים של פעמים, ב-C אתה מגדיר לולאה for (int i = 0; i < 10; i++). דוגמה נוספת: חומרים נוספים להרצאות CS50: שבוע 1 (הרצאות 3 ו-4) - 8 ואותו דבר מתורגם ל-C: int counter = 0; while (true) { printf("%i\n", counter); counter++; }
  • מונה מאחסן ערך ב-C וב-Scratch. ב-C אנו קובעים int counter = 0 במקום Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 9.
  • נסמן את סוג המשתנה כ-int להבהרה: i הוא מספר שלם (מהאנגלית integer, whole).
  • הסימן %i בו אנו משתמשים ב-printf בשורה ארבע הוא מציין מיקום שאומר לנו להדפיס את המספר השלם העשרוני, בדיוק כפי שאנו אומרים ל-printf להחליף את מציין המיקום בערך שלוקח משתנה המונה.
ביטויים בוליאניים
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 10 זה אותו דבר כמו (x < y) ((x < y) && (y < z))
תנאים
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 11 והמקבילה ל"חרא": Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12 מה עם הביטוי הבלתי מובן הראשון? עוד על כך בהמשך, בסעיף "ספריות". #include
הצהרות על תנאי
החבר'ה האלה בודקים אם תנאי כלשהו (ביטוי לוגי, שאלה שניתן לענות עליה רק ​​ב"כן" או "לא") הוא נכון, ואם כן, אז הם מבצעים כמה פעולות הקשורות לתנאי זה. דוגמה מהחיים: אם יורד גשם (בהנחה שיורד גשם) ואני בחוץ (אני בחוץ כשיורד גשם), אני פותח את המטריה שלי. if (condition) { //исполнить, если meaning истинно } אפשרות מסובכת יותר: אם התנאי מתקיים, בצע פעולה; אם לא, בצע פעולה נוספת. if (condition) { //выполнить действие } else { //выполнить другое действие, если condition ложно } דוגמה: אם אתה מעל גיל 18, אשר גישה. אם פחות, אל תאשר. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12
מפעיל בחירה
switch (n) { case const1: // если n equals const1, выполнить break; // condition совершилось — выйти из выбора case const2: // если n equals const2, выполнить break; ... default: // если n не equals ни одной из констант, выполнить break; } דוגמה: אם n = 50, הדפס "CS50 הוא מבוא למדעי המחשב I", אם n = 51, הדפס "CS51 הוא מבוא למדעי המחשב II", אחרת הדפס "מצטער, אני לא מכיר את המחלקה הזו!" switch (n) { case 50: printf("CS50 is Introduction to Computer Science I\n"); break; case 51: printf("CS51 is Introduction to Computer Science II\n"); break; default: printf("Sorry, I'm not familiar with that class!\n"); break; }
מחזורים
while: בודק את התנאי, ואז מבצע את הפעולה בעוד התנאי הוא אמיתי while (condition) { // выполнять, пока истина } do/while שונה בכך שבפעם הראשונה הוא מבצע את הפעולה מבלי לבדוק את התנאי, ואז רק בודק אותו. אם התנאי נכון, הוא חוזר על הפעולה עד שהתנאי הופך לא נכון. do { ) // выполнять, пока истина } while (condition); לולאת for חוזרת על פעולה מספר מוגדר של פעמים. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 13 ניתן לקנן לולאות זו בתוך זו. במקרה זה, בכל שלב של הלולאה החיצונית, הלולאה הפנימית תתבצע לחלוטין. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 14
סוגי נתונים בסיסיים ב-C
основные типы данных в C
ספריות ג
בטח כבר תהיתם מה משמעות השורה הראשונה של תוכנית C: מה תפקידה והאם אפשר בלעדיה? השורה #include עושה דבר חשוב מאוד: היא כוללת ספריות של קוד שכבר נכתב בתוכנית שלך. שם הספרייה המחוברת מוקף בסוגריים זווית (<>) ויש לו סיומת (.h). אם לא היו ספריות, אז כל פעולה, אפילו הבסיסית ביותר, הייתה צריכה להיות מתוארת שוב ושוב בכל פעם. ספריה שחיברנו#include מכיל פונקציות קלט/פלט. זה מה שמאפשר לנו להשתמש בפונקציה printf() כדי להדפיס למסך. כלומר, אם לא היינו כותבים את השורה #include , אבל השארנו את הפונקציה printf() בגוף התוכנית; כאשר ניסינו להפעיל אותה, היינו מקבלים שגיאה! כי בלי הספרייה הזו המהדר לא יודע מה זה printf(). יש ספריות סטנדרטיות, הן מהוות את אוצר המילים של השפה. הפונקציה printf() אינה מובנית במחשב, אך היא כלולה בספריית C. כלומר, מתכנת כלשהו כתב אותה בעבר וכלל אותה בספריה. עכשיו אחרים יכולים להשתמש בו מבלי להמציא את הגלגל מחדש. כדי שהמהדר "יבין" את זה, אנחנו מתחברים . ישנן ספריות סטנדרטיות אחרות המשמשות בתהליך CS50. לדוגמה, ספריית מחרוזות, המתארת ​​פעולות עם מחרוזות (קביעת אורך, חיבור וכו'). בהשוואה לשפות תכנות פופולריות אחרות, מספר ספריות C הסטנדרטיות קטן מאוד. אבל יש ספריות בכתב עצמי, לרוב יותר מיוחדות. כן, ספריה נוצר במיוחד עבור תלמידי CS50. זה הזמן לרשום הערה חשובה: מלבד כתיבת תוכנות ופתרון בעיות באמצעות קוד משלך, למפתח טוב יש מיומנות חשובה נוספת: ידע בכלים שכבר נכתבו והיכולת להשתמש בהם (ספריות של אחרים) כך לא לבזבז זמן על המצאה מחדש של "הגלגל". לכן, אם אתה בתהליך של פתרון בעיה מייגעת או מורכבת שנראית די שכיחה, למד לשאול את עצמך את השאלה: "האם מישהו אחר כתב את הפתרון?" רוב הסיכויים שזה המצב, ואתה יכול למצוא את הפונקציה הזו בספרייה קיימת. במונחים טכניים, ספרייה היא קובץ בינארי המיוצר על ידי שילוב של אוסף קבצי אובייקט באמצעות מקשר. קבצי אובייקט הם אותם קבצים עם סיומת (*.o) שאתה מקבל בעת קומפילציה של יישומים.
מבנה ספריות C
Когда программист пишет библиотеку, code распределяется по двум типам файлов — заголовочный файл (header, расширение *.h) и файл реализации (implementation, расширение *.c). Заголовочный файл содержит code, описывающий ресурсы библиотеки, которые вы можете использовать. То есть описания переменных, функций, структур, типов и прочее. Если вам интересно, что содержит та or иная библиотека, нужно заглянуть именно в заголовочный файл. В терминале CS50 IDE (и других средах Linux) вы можете вызвать приложение less для просмотра файлов и открыть с его помощью интересующую вас библиотеку: less /usr/include/stdio.h Файл откроется прямо в терминале. Правда, для новичков он будет очень трудночитаемым. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 15 Whatбы выйти из less, нажмите q на клавиатуре. Заголовочный файл не содержит code функций, что служит примером очень важного понятия — сокрытия данных or инкапсуляции. Пользователю системы незачем знать «внутренности» библиотек, ему достаточно, чтобы она работала. Если вы прошерстите stdio.h, то не найдете там реализации printf(), хотя How её использовать, вы уже знаете. Это сделано для того, чтобы защитить данные от вмешательства, которое порой может плохо отразиться на системе. Так, если кто-то изменит реализацию функции printf() в библиотеке, это отразится на всех тех программах, которые её используют. Любознательным будет интересно, где спрятана реализация. Согласно конвенции (соглашения, принятые в мире программирования) такой code хранят в файле с расширением (*.c). После компиляции библиотеки на основе двух файлов с одинаковым именем, но разным расширением создается an objectный файл, который собран так, чтобы создать файл с двоичным codeом библиотеки. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 16 Author библиотеки передает программисту, который хочет её использовать, два file — с двоичным codeом, а также заголовочный файл. Таким образом, файл с исходным codeом программисту не нужен. Точнее, он может быть нужен, если программист хочет что-то поменять в самой библиотеке и перекомпorровать её под собственные нужды. Whatбы воспользоваться функциями библиотеки в своей программе нужно проделать следующее: 1. Включить заголовочный файл в программу с помощью строки #include В случае стандартных библиотек достаточно указать Name библиотеки в угловых скобках: #include <Name_библиотеки.h> Если библиотека, которую вы хотите подключить, лежит в той же папке, что и ваша программа, подключайте её следующим образом: #include “Name_библиотеки.h” 2.Присоединить бинарный файл для компиляции. Это очень важный шаг, поскольку, How мы говорor выше, заголовочный файл не содержит реализации элементов библиотеки. Whatбы это сделать, нужно вызвать компилятор clang с флагом –l и идущим непосредственно за ним названием библиотеки. Например, компонуем библиотеку cs50: clang hello –lcs50 Clang — один из компиляторов. Для компиляции можно также использовать уже знакомую вам программу make. По сути, она вызывает clang с определенными аргументами командной строки.
И снова Hello C: разбор синтаксиса простейших программ
Директива #include подключает библиотеку ввода/вывода . Программы в C состоят из функций, а те — из операторов и переменных. Функция — это кусок codeа, в котором уже есть or подаются Howие-то данные, а Howие-то данные получают в результате её исполнения. Фигурные скобки { } ограничивают тело функции — описание того, что она должна делать. printf() из стандартной библиотеки stdio выводит любую строку на экран. Строки заключаются в двойные кавычки, а символ “\n” означает перевод курсора на новую строку. Пример: функция «посчитать квадрат целого числа». Передаем функции данные, в нашем случае — число, которое нужно возвести в квадрат. Затем в ней прописывается алгоритм умножения числа на самое себя, и результат этого умножения она выдает на выходе. int sqr(int a) { return a*a; } int sqr(int a) — название функции. В скобках — её аргумент a, это то, что подается на вход функции. Это How переменная в уравнении. То есть, если мы хотим узнать квадрат числа 5, то мы вызовем нашу функцию в виде sqr(5) и получим результат 25. int — тип данных (от англ. integer — целые числа). Наша функция написана так, что мы не можем вызвать её с аргументом a = 5.5. Такая попытка выдаст ошибку, поскольку 5.5 — число дробное, а наше число должно быть целым. int перед именем функции означает тип, который должна эта функция возвращать. Он не обязательно совпадает с типом аргумента. Пример: функция, которая отнимает от целого числа 0.5: double bit_less(int a) { double b; b = a – 0.5; return b; } int main (void) — название главной функции. В одной программе может быть много функций, но, чтобы начать её выполнять, нужна функция под названием main. Слово void в скобках означает, что у этой функции нет аргументов. Внимание! main всегда возвращает int, но return для неё не обязателен. Пример функции не возвращающей значения: void sayhello(void) { printf(“hello everyone!\n”); } При вызове функции в главной программе, она выведет приветствие. Давайте напишем одну программу, в которой будет несколько функций. Тех, что мы уже создали выше. Две созданные нами функции вызовем через главную функцию main(). В C, How и любом языке, есть такой элемент, How комментарий or примечание в коле программы, предназначенное не для компьютера, а для понимания людей. Например, описание, что именно делает code. Компилятор комментариев не видит. Комментирование программ — очень важный момент, поскольку порой разобраться в чужом (и даже своем) codeе очень сложно. //пример однострочного комментария /** а это – многострочного **/ #include //функция возведения в квадрат числа a int sqr(int a) { return a*a; } //выводит приветствие void test(void) { printf ("hello everyone!\n"); } //главная функция int main(void) { test(); printf("%d\n", sqr(5)); } Почти всё, что есть в этой программе вы уже видели. Две функции — возведения в квадрат и приветствия и главная функция main, где мы последовательно вызываем эти две функции. В результате выполнения программы у нас сначала выведется приветствие, на следующей строке — квадрат 5. Обратите внимание, функция test() вызывается с пустыми скобками, потому что её аргументы определены How void.
Еще немного о вводе/выводе в C
Вы, наверное, уже успели заметить странные символы %d и %f в скобках оператора printf. Дело в том, что функция printf выводит данные в следующем обобщенном виде: рrintf ("управляющая строка", аргумент1, аргумент2,...); Управляющая строка содержит компоненты трех типов:
  • символы, которые выводятся на экран дисплея;
  • спецификаторы преобразования, которые вызывают вывод на экран очередного аргумента из последующего списка;
  • управляющие символьные константы.
Спецификатор преобразования начинается со знака % и заканчивается символом, задающим преобразование. Некоторые из таких символов:
  • с: meaningм аргумента является символ;
  • d or i: десятичное целое число;
  • f: десятичное число с плавающей точкой;
  • s: строка символов.
То есть, %d означает, что на экране появится целое десятичное, а %f — десятичное с плавающей запятой. What если нам нужно, чтобы пользователь ввёл данные с клавиатуры? Для этого можно использовать функцию scanf( ), прототип которой также лежит в библиотеке stdio. Whatбы считать с экрана вещественное число, в программе нужно написать строку scanf("%d", &a); Давайте перепишем нашу программу так, чтобы пользователь сам вводил число, которое нужно возвести в квадрат. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 17
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION