1 מבוא למדעי המחשב ארגומנטים לתוכנית בזמן ריצה קבצים הקדם מעבד Preprocessor טיפוסים סדורים Enumerated Types Typedef.

Slides:



Advertisements
Similar presentations
קבצים קרן כליף.
Advertisements

Files 1 יום חמישי 16 אפריל 2015 יום חמישי 16 אפריל 2015 יום חמישי 16 אפריל 2015 יום חמישי 16 אפריל 2015 יום חמישי 16 אפריל 2015 יום חמישי 16 אפריל 2015.
מבוא למדעי המחשב לתעשייה וניהול
מבוא למדעי המחשב לתעשייה וניהול דוגמאות ותרגול נוסף במערך חד ממדי הרצאה 12.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
מבוא כללי למדעי המחשב תרגול 1. כתיבת התוכנה כתיבת התוכנית עצמה נעשית ע " י כתיבת קובץ טקסט רגיל אשר תוכנו מקיים את כללי שפת C כתיבת התוכנית עצמה נעשית.
1 מבוא למדעי המחשב הקצאה דינאמית. 2 הקצאת זיכרון דינאמית  כאשר אנו משתמשים במערכים, אנו מקצים אוטומטית את הזיכרון המקסימלי שנצטרך.  בפועל, אנו משתמשים.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
תרגול מס' 2  העברת פרמטרים לתוכניות ב-C  קלט ופלט ב-C  I/O redirection  זיכרון דינמי  מצביעים  מערכים  גישות לא חוקיות לזיכרון.
מבוא למדעי המחשב תרגול 2 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
דוד שוורץ, עידן זק, נטע צור וחיה כהן. הפונקציונאליות : המשתמש יבחר קובץ שעליו הוא רוצה לבצע את האנליזה, וילחץ עליו עם כפתור ימני בעכבר. יפתח תפריט ובו.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
1 מבוא למדעי המחשב משתנים. 2  סוגי משתנים בשפת C  ההבדלים בין סוגי המשתנים השונים.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
1 מבוא למדעי המחשב תרגול מספר 2. 2 בשיעור הקודם... הגדרות שפת מחשב, שפה עילית, קומפיילר, תוכנית בשפת C, קובץ הרצה קובץ (טקסט) המכיל תוכנית בשפת C (hello.c)
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
רקורסיות נושאי השיעור מהן רקורסיות פתרון רקורסיות : שיטת ההצבה שיטת איטרציות שיטת המסטר 14 יוני יוני יוני 1514 יוני יוני יוני 1514.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
מבוא למדעי המחשב תרגול 8 - מחרוזות שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תרגול 2 העברת פרמטרים לתוכניות ב -C קלט ופלט ב -C I/O redirection זיכרון דינמי מצביעים מערכים גישות לא חוקיות לזיכרון.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
מבוא כללי למדעי המחשב תרגול. הבית האדום כתובת : רחוב קוקוריקו 2 הבית הירוק כתובת : רחוב קוקוריקו 4 הבית הצהוב כתובת : רחוב קוקוריקו 1 הבית הורוד כתובת.
תוכנה 1 - חזרה שולי לב יהודי 2 Arrays and Strings מערך - אוסף משתנים בעלי שם משותף. הפנייה לכל איבר נעשית ע ” י אינדקס. ב -C מערך מוגדר.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
1 מבוא למדעי המחשב מבנה של תכנית. 2 מבנה של תכנית – חלוקה לקבצים  תכנית בשפת C הינה אוסף של הגדרות של:  משתנים (חיצוניים)  פונקציות  ניתן לפרוש תכנית.
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
מבוא למדעי המחשב מחרוזות, מצביעים וכתובות
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מערכות הפעלה ( אביב 2009) חגית עטיה ©1 מערכת קבצים log-structured  ה log הוא העותק היחיד של הנתונים  כאשר משנים בלוק (data, header) פשוט כותבים את הבלוק.
תרגול 2 העברת פרמטרים לתוכניות ב -C קלט ופלט ב -C I/O redirection זיכרון דינמי מצביעים מערכים גישות לא חוקיות לזיכרון.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
תוכנה 1 - תרגול שיעור 10 Pointers (2) שולי לב יהודי
1 עבודה עם קבצי טקסט  סוגי קבצים  קובץ טקסט  קובץ בינארי  פתיחה וסגירה של קובץ  פונקציות לקריאה ולכתיבת תו  פונקציות לקריאה ולכתיבת שורה  פונקציות.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Points on a perimeter (Convex Hull) קורס – מבוא לעבוד מקבילי מבצעים – אריאל פנדלר יאיר ברעם.
תכנות תרגול 12 שבוע : מבנים מטרת המבנים היא לאפשר למתכנת להגדיר טיפוסי משתנים חדשים אשר מתאימים ספציפית לבעיה שאותה התוכנית פותרת. מטרת המבנים.
1 מבוא למדעי המחשב backtracking. 2 מוטיבציה בעיית n המלכות: נתון: לוח שחמט בגודל. המטרה: לסדר על הלוח n מלכות כך שאף אחת לא תאיים על השנייה. דוגמא: עבור.
מבוא למדעי המחשב תרגול 5 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 1 שבוע : צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. דואר אלקטרוני :
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
File Handling Spring 2013Programming and Data Structure1.
File IO and command line input CSE 2451 Rong Shi.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
קורס תכנות שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
תוכנה 1 תרגול 2: טיפוסי שפה, מחרוזות, מערכים ושגיאות.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
6/9/2016Course material created by D. Woit 1 CPS 393 Introduction to Unix and C START OF WEEK 10 (C-4)
Overview of C#. Agenda Structure of a C# Program Basic Input/Output Operations Compiling, Running, and Debugging Namespaces.
מחרוזות – הטיפוס String
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
מבוא למדעי המחשב לתעשייה וניהול
Chapter 22 – part a Stream refer to any source of input or any destination for output. Many small programs, obtain all their input from one stream usually.
מבוא למדעי המחשב סיבוכיות.
מצביעים קרן כליף.
תירגול 14: מבני נתונים דינאמיים
מבוא כללי למדעי המחשב תרגול 6
סוגי משתנים קרן כליף.
תיכון אהל שם, רמת גן קורס PHP – הרצאה מס' 10
מערכים של מצביעים הקצאה דינאמית
תוכנה 1 תרגול 13 – סיכום.
תכנות מכוון עצמים ו- C++ יחידה 02 העמסת פונקציות, ערכי ברירת מחדל, enum, קימפול מותנה קרן כליף.
Presentation transcript:

1 מבוא למדעי המחשב ארגומנטים לתוכנית בזמן ריצה קבצים הקדם מעבד Preprocessor טיפוסים סדורים Enumerated Types Typedef

2 ארגומנטים בזמן ריצה Command line arguments  ניתן בשפת C להעביר ארגומנטים לתכנית ← לפונקציה main.  main נקראת (ע"י מערכת ההפעלה) עם שני ארגומנטים: 1. argc – מספר הארגומנטים שהועברו למערכת ההפעלה. 2. argv:  מצביע למערך של מחרוזות המכילות את הארגומנטים, כל ארגומנט במחרוזת נפרדת.  argv[0] מכיל את שם התכנית, לכן, argc≥1.  הארגומנט הראשון הוא argv[1] והאחרון argv[argc-1].

3 ארגומנטים בזמן ריצה - דוגמא /* echo1.c */ /* echo command-line arguments to output */ #include int main(int argc, char *argv[]) { int i; for (i=1; i<argc; i++) { printf("%s ", argv[i]); } printf("\n"); return 0; }

4 ארגומנטים בזמן ריצה - דוגמא /* echo2.c */ /* echo command-line arguments to output */ #include int main(int argc, char *argv[]) { while (--argc>0) { printf("%s ", *++argv); } printf("\n"); return 0; }

5 ארגומנטים בזמן ריצה - הערות  הנתונים מתקבלים (ע"י argv) כמחרוזות.  אם אנו מעוניינים שהתכנית תקבל ערכים מספריים יש לבצע המרה ממחרוזות לטיפוס המספרי המתאים.  המרה כזאת ניתן לבצע בעזרת הפונקציות (הנמצאות בספריה stdlib.h):  int atoi (char *) – מבצעת המרה ממחרוזת למספר שלם (asci to integer).  float atof (char *) – מבצעת המרה ממחרוזת למספר ממשי (asci to float).  long atol (char *) – מבצעת המרה ממחרוזת למספר שלם גדול (asci to long).

6 קבצים Files  קובץ הוא סדרה של תווים.  אין גישה אקראית למקום כלשהוא בקובץ, אלא יש לקרוא תו אחר תו ולהגיע לתו שאנו מחפשים (להבדיל ממערך).  עד כה כל התכניות שכתבנו קראו מקובץ הקלט הסטנדרטי (בעזרת הפונקציות scanf() ו- getchar() ) וכתבו לקובץ הפלט הסנדרטי (בעזרת הפונקציות printf() ו- putchar()).  בשפת C ניתן לקרוא מקבצים ולכתוב לקבצים ישירות מהתכנית עצמה.

7 קבצים בשפת C  FILE הינו טיפוס נתונים שמחזיק אינפורמציה על קבצים ומוגדר ב-.  יש לעבוד תמיד עם מצביע ל- FILE. FILE *fp; /* FILE הוא מצביע לרשומת fp */  בקובץ מוגדרים שלושה מצביעים לטיפוס FILE והם: 1. stdin – מצביע לקובץ הקלט הסטנדרטי. 2. stdout – מצביע לקובץ הפלט הסטנדרטי. 3. stderr – מצביע לקובץ השגיאות הסטנדרטי.  הקבצים אשר מוצבעים ע"י המצביעים הנ"ל נפתחים ע"י מערכת ההפעלה עם התחלת ביצוע התכנית.  אבל, לעיתים נרצה להשתמש גם בקבצים נוספים...

8 קבצים בשפת C מה צריך לדעת?  פתיחת קובץ  כתיבה לקובץ  קריאה מקובץ  סגירת קובץ

9 פתיחת קבצים בשפת C פתיחת קובץ – ע"י fopen: FILE *fopen (char *filename, char *mode);  filename – מחרוזת תווים המכילה את שם הקובץ אשר מעוניינים לפתוח.  mode – מחרוזת תווים אשר מציינת את מטרת פתיחת הקובץ:  “r” – פתיחת קובץ לקריאה.  “w” – פתיחת קובץ לכתיבה (מוחק את תוכנו הקיים).  “a” – פתיחת קובץ להוספה בסופו (append).  הפונקציה fopen מחזירה מצביע לקובץ במידה ופתיחתו הצליחה, אחרת מחזירה NULL.  אם קובץ לא קיים, הוא ייווצר, במידת האפשר. FILE *data; data=fopen(“mydata.txt”,”r”);

10 סגירת קבצים בשפת C סגירת קובץ – ע"י fclose: int fclose (FILE *pfile); הפונקציה מחזירה 0 במידה והסגירה הצליחה.  בסיום השימוש בקובץ חובה לסגור את הקובץ.  הפקודה exit מבצעת fclose לכל הקבצים הפתוחים, להבדיל מהפקודה return. לכן, כשעובדים עם קבצים כדאי להשתמש בפקודה exit.

11 קבצים - קריאה וכתיבה של תווים בודדים  על מנת לקרוא תו מקובץ נשתמש בפונקציה int fgetc (FILE *fp) פונקציה זו פועלת בדיוק כמו הפונקציה getchar(), רק שהקלט הוא מהקובץ שמצביעו fp במקום מקובץ הקלט הסטנדרטי. הפונקציה מחזירה EOF בסוף הקובץ או במקרה של טעות.  על מנת לכתוב תו מקובץ נשתמש בפונקציה int fputc (int c, FILE *fp) פונקציה זו פועלת בדיוק כמו הפונקציה putchar(), רק שהפלט הוא לקובץ שמצביעו fp במקום לקובץ הפלט הסטנדרטי. הפונקציה מחזירה את התו שנכתב או EOF במקרה של טעות.

12 קבצים - קריאה וכתיבה  int fscanf (FILE *fp, …) פונקציה זו פועלת בדיוק כמו הפונקציה scanf(), רק שהקלט הוא מהקובץ שמצביעו fp במקום מקובץ הקלט הסטנדרטי.  int fprintff (FILE *fp, …) פונקציה זו פועלת בדיוק כמו הפונקציה printf(), רק שהפלט הוא לקובץ שמצביעו fp במקום לקובץ הפלט הסטנדרטי.

קבצים - דוגמא /* mycat.c - append the content of the first file to the second file */ #include int main(int argc, char *argv[]){ FILE *f1, *f2; int c; if (argc != 3){/* not enough argument files */ printf("Incorrect number of arguments\n"); return 1; } if ((f1=fopen(argv[1],"r"))==NULL){ printf("Can't open file %s\n",argv[1]); return 1; } if ((f2=fopen(argv[2],"a"))==NULL){ printf("Can't open file %s\n",argv[2]); return 1; } while ((c=fgetc(f1))!=EOF){ fputc(c,f2); } fclose(f1); fclose(f2); return 0; }

14 הקדם מעבד pre processor הקדם מעבד הינו הצעד הראשון של קומפילציה. הוא מספק מספר אפשרויות. למשל:  File inclusion ההנחיה #include “filename” #include גורמת לתוכן הקובץ filename "להישתל" במקום בו היא מופיעה. קובץ מוכל יכול להכיל בעצמו שורות include. כאשר קובץ מוכל משתנה יש לקמפל מחדש את כל הקבצים שטוענים אותו.

15 הקדם מעבד pre processor  Macros ההנחיה#define name text גורמת להחלפת כל המופעים של name ב- text. תחום ההחלפה: מנקודת ההגדרה עד סוף הקובץ. text יכול להימשך מעבר לשורה אחת ע"י השימוש בתו "\" בסוף השורה. דוגמאות: #define MAX 100 #define forever for(;;)

16 הקדם מעבד pre processor  Macros - המשך ניתן להגדיר macros עם ארגומנטים. למשל: #define MAX(A,B) ((A)>(B) ? (A):(B)) : z=MAX(x,y); : z=(x)>(y) ? (x):(y); : קוד מקורי לאחר פעולת ה - pre processor ההבדלים בין macros לפונקציות :  אין כל התייחסות לסוג הפרמטרים  אין כל קריאה לפונקציה ב - macros

17 הקדם מעבד pre processor  Macros - המשך השימוש ב- macros ודרך כתיבתם דורשים זהירות רבה! דוגמאות:  #define MAX(A,B) ((A)>(B) ? (A):(B)) : z=MAX(i++,j++);  #define square(x) x*x : z=square(i+1)

18 טיפוסים סדורים Enumerated Types  הגדרת סידרה של קבועים שלאבריה יש משהוא משותף (ע"י הגדרת טיפוס נתונים חדש).  דוגמא: #define Jan 1 #deine Feb 2 : #define Dec12 enum months {Jan=1, Feb=2, …, Dec=12}; enum months {Jan=1, Feb, …, Dec};

19 טיפוסים סדורים Enumerated Types  דוגמא: #define TRUE 1 #deine FALSE 0 enum boolean {FALSE,TRUE};

20 Typedef  לא מייצר טיפוסי משתנים חדשים.  מאפשר למתכנת לקחת טיפוס נתונים קיים, ולקרוא לו בשם נוסף.  דוגמא: typedef int Length; : Length len, maxlen; Length length[20];  יתרונות:  מקל על המשתמש ועל המתכנת בקריאת קוד התכנית וקישורו למטרתה.  עזרה בתיעוד הקוד.  פורטביליות – ע"י הגדרת טיפוסי נתונים בעזרת typedef, עם שינוי טיפוס הנתונים מספיק לשנות את ה- typedef ולא את כל המופעים בקוד.