הרצאה 03 אבני היסוד של תוכנית ב- C

Slides:



Advertisements
Similar presentations
CS31 You Lu CS31-1K TA. Hello World! Variable Out of the Range You input , but it outputs another different number.
Advertisements

1 Objectives Understand streamed input and output.
More on Functions Programming. COMP104 Lecture 19 / Slide 2 Passing Parameters by Reference l To have a function with multiple outputs, we have to use.
// Functions that take no arguments #include using namespace std; void function1(); void function2( void ); int main() { function1(); function2(); return.
CS31: Introduction to Computer Science I Discussion 1A 4/2/2010 Sungwon Yang
How Create a C++ Program. #include using namespace std; void main() { cout
Selection Statements in C++ If Statement in C++ Semantics: These statements have the same meaning as in the algorithmic language. 2- Two way selection:
February 11, 2005 More Pointers Dynamic Memory Allocation.
Data & Data Types & Simple Math Operation 1 Data and Data Type Standard I/O Simple Math operation.
Current Assignments Homework 3 is due tonight. Iteration and basic functions. Exam 1 on Monday.
CSE1222: Lecture 3The Ohio State University1. Assignment Operations  The C++ assignment operator is: =  Examples: x = 3 * 5; y = x – 7; y = y + 4; Do.
ITEC 320 C++ Examples.
Liang, Introduction to Programming with C++, Second Edition, (c) 2010 Pearson Education, Inc. All rights reserved Chapter 2 Elementary Programming.
CSC1201: Programming Language 2 Lecture 1 Level 2 Course Nouf Aljaffan (C) CSC 1201 Course at KSU1.
CS221 Random Numbers. Random numbers are often very important in programming Suppose you are writing a program to play the game of roulette The numbers.
A first program 1. #include 2. using namespace std; 3. int main() { 4. cout
Lecture 7: Making Decisions Professor: Dr. Miguel Alonso Jr. Fall 2008 CGS2423/COP1220.
CS Class 03 Topics  Sequence statements Input Output Assignment  Expressions Read pages Read pages 40 – 49 for next time.
Think First, Code Second Understand the problem Work out step by step procedure for solving the problem (algorithm) top down design and stepwise refinement.
CSC1201: Programming Language 2 1 Functions. 2 Function declaration: return_type FuncName( Type arg1, Type arg2,….. Type argN) { function body } A program.
13/15/2016CS150 Introduction to Computer Science 1 Summary  Assignment due on Wednesday, October 29,  Tutor will be in the lab on Tuesday evening,
Mathematical Manipulation Data types Operator precedence Standard mathematical functions Worked examples.
משפטי תנאי ( לוגיקה ) קרן כליף. 2 © Keren Kalif ביחידה זו נלמד :  משפטי תנאי  משפט switch  משפט if מקוצר.
Constants, Data Types and Variables
Looping I (while statement). CSCE 1062 Outline  Looping/repetition construct  while statement (section 5.1)
Pointers What is the data type of pointer variables?
C++ First Steps.
TK1913 C++ Programming Basic Elements of C++.
Computing Fundamentals
Arrays Part-1 Armen Keshishian.
Pointers and Pointer-Based Strings
Introduction to C++ October 2, 2017.
Programming Fundamentals
Pointers Psst… over there.
C++ Arrays.
לולאות קרן כליף.
הקצאות דינאמיות בשילוב מבנים
Dynamic Memory Allocation Reference Variables
Pointers Psst… over there.
Function Basics.
Programming -2 برمجة -2 المحاضرة-5 Lecture-5.
Lab 1 Introduction to C++.
Variables with Memory Diagram
Chapter 2 Elementary Programming
CS 1430: Programming in C++ Turn in your Quiz1-2 No time to cover HiC.
CSC1201: Programming Language 2
Random Number Generation
הקצאות דינאמיות קרן כליף.
C++ fundamentals Lecture 1, Chapter 2 – pp /22/2018 Y K Choi.
אבני היסוד של תוכנית ב- C
אבני היסוד של תוכנית ב- C++
אבני היסוד של תוכנית ב- C++
Screen output // Definition and use of variables
CS150 Introduction to Computer Science 1
Counting Loops.
Starting Out with C++: From Control Structures through Objects
Pointers & Functions.
Code::Block vs Visual C++
Lab 1 Introduction to C++.
Pass by Reference.
Arrays of Two-Dimensions
Engineering Problem Solving with C++ An Object Based Approach
CS150 Introduction to Computer Science 1
Statements and flow control
Pointers and Pointer-Based Strings
CSC1201: Programming Language 2
Pointers & Functions.
CS1201: Programming Language 2
The switch Statement When we want to compare a variable against several values to see which one it has, we can use the switch statement: switch (status)
CSE Module 1 A Programming Primer
Presentation transcript:

הרצאה 03 אבני היסוד של תוכנית ב- C קרן כליף

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

תוכנית ב- C++ קוד ב- ++C הוא קובץ טקסט הכתוב מאוסף מילים מסוימות באנגלית יש מילים מסוימות שהן פקודות מוכרות למחשב המחשב אינו יודע אנגלית, אלא רק מכיר את הספרות 0 ו-1 (בינארית) ולכן עלינו לתרגם עבורו את הקוד שלנו, בתהליך הנקרא קומפילציה לאחר תהליך הקומפילציה יש תהליך שנקרא link המייצר קובץ שאותו ניתן להריץ ומבצע את הפקודות שכתבנו

כתיבת תוכנית ראשונה ב- C++ main היא פונקציה המורצת עם הרצת התוכנית בכל תוכנית תהייה פונקצית main אחת בדיוק ספריה המכילה פקודות בסיסיות אשר המחשב מכיר #include <iostream> using namespace std; void main() { … } במקום 3 נקודות נשים את אוסף הפקודות שנרצה שהתוכנית תבצע

הרצה של התוכנית הזו תדפיס הדפסה למסך אחת הפקודות שהמחשב מכיר היא הדפסה למסך #include <iostream> using namespace std; void main() { cout << “Hello World!” << endl; } הרצה של התוכנית הזו תדפיס למסך את המחרוזת Hello World!

הדפסה למסך (2) #include <iostream> using namespace std; void main() { cout << “6 is a number” << endl; } הרצה של תוכנית זו תדפיס למסך את המחרוזת 6 is a number

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

קבלת קלט מהמשתמש (2) פקודה נוספת שהמחשב מכיר היא קריאת נתון מהשתמש מה זה x? x הוא השם של המקום שבו נאכסן את הערך המתקבל מהמשתמש כדי להקצות עבורנו מקום זה עלינו להגדיר משתנה מה זה int? נראה בהמשך #include <iostream> using namespace std; void main() { int x; cin >> x; } פירוש הפקודה cin: אחסן את הערך שיתקבל מהמשתמש במשתנה הנקרא x

אחסון ערכים כאשר מריצים תוכנית נרצה לשמור משתנים מסוימים כדי שישמשו אותנו בפקודות בהמשך כאשר התוכנית רצה, היא מקבלת שטח בזיכרון בו היא יכולה לאחסן משתנים אלו. שטח זה נקרא מחסנית (stack) המחסנית מורכבת מתאים, ולכל תא יש כתובת כל תא נקרא byte (בייט) יש משתנים שערכם מאוחסן בבייט אחד, ויש משתנים שערכם מאוחסן ביותר (נראה בהמשך) 1000 1001 1002 1003 1004 1005

אחסון ערכים (2) #include <iostream> using namespace std; void main() { int x; cin >> x; } בתוכנית זו הגדרנו את המשתנה x, ולכן התוכנית מקצה תא במחסנית למשתנה זה כאשר המשתמש מקליד מספר, המספר נכנס לתוך התא המוקצה עבור x int:x 4 1000 1004 1008 1012 1016 1020 int:x 1000 1004 1008 1012 1016 1020

הדפסת ערכו של משתנה #include <iostream> using namespace std; void main() { int x; cout << “Please enter a number: “; cin >> x; cout << x << “ is a number” << endl; } פקודת ההדפסה מדפיסה את התוכן של התא המוקצה עבור המשתנה x ולכן יודפס למסך 4 is a number כדי שהתוכנית שלנו תהייה ידידותית נציג הודעה מתאימה int:x 4 1000 1004 1008 1012 1016 1020 int:x 1000 1004 1008 1012 1016 1020 לאחר הקלדת 4

ייצוג בינארי אבל מחשב מכיר רק את 0 ו- 1 (יש חשמל או אין חשמל). לכן הזיכרון לא באמת נראה כך.. בכל תא זיכרון יש קומבינציה של 0 ו-1 המייצגות את הערך הנמצא בתוך התא כל byte מורכב מ-8 יחידות בסיסיות הנקראות bit (סיבית) bit מכיל 0 או 1 int: n1 00000100 00000000 1000 int: n2 00011000 1004 int : n3 10101011 11111111 1008 1012 int: n1 4 1000 int: n2 24 1004 int : n3 -85 1008 1012

טיפוסי משתנים בתוכנית הקודמת ראינו כיצד קולטים מהמשתמש מספר שלם ניתן לקלוט גם מספר עשרוני, מספר שלילי או תו אבל צריך לידע את המחשב עם איזה סוג של נתונים אנחנו רוצים לעבוד בתוכנית הגדרנו: #include <iostream> using namespace std; void main() { int x; cin >> x; } כאשר כתבנו את השורה int x; הגדרנו משתנה שמכיל מספרים שלמים

טיפוסי משתנים Data Types ישנם סוגים שונים של משתנים הנבדלים ב: בתוכן אותו הם יכולים להכיל (שלם, עשרוני, תו, שליליים) בכמות ה- byte שהמשתנה תופס בזיכרון, ומכאן טווח הערכים שמשתנה מהטיפוס יכול להכיל שימו לב: טווח הערכים של טיפוסים מסוימים יכול להיות שונה ממערכת הפעלה אחת לאחרת

טיפוסי נתונים ב- C Definition Size Range char תו (‘a’, ‘A’, ‘6’,’!’) 1 byte -27…27-1 (-128..127) int מספר שלם (3,7,8234-) 4 bytes -231…231-1 double מספר ממשי (3.6, 89-, 5.2) 8 bytes

הגדרת משתנים בתוכנית שמות המשתנים יכולים להכיל אותיות גדולות וקטנות, מספרים וקו תחתון בלבד לא ניתן להתחיל שם משתנה במספר יש לתת שמות משמעותיים!!! שם משתנה לא יכיל רווחים יש הבדל בין אותיות גדולות לקטנות אין להשתמש המילים שמורות של השפה דוגמאות: int x, _y, _average, avg, x1,x2; int 5, 1x, #x, !!2; // error!

הגדרת משתנים בתוכנית (2) #include <iostream> void main() { int n1 = 4; double n2 = 5.2; char ch = ‘f’; int n3 = 7, n4 = 77; } למה ההפרש בין הכתובות שונה? כי כל סוג משתנה תופס כמות שונה של בייטים הגדרת משתנים: <type> <var name>[=init value][,<var name2>…]; int: n1 4 1000 double: n2 5.2 1004 char: ch ‘f’ 1012 int: n3 7 1013 int: n4 77 1017 int מורכב מ- 4 byte char מורכב מ- 1byte

ייצוג תווים עד כה ראינו ייצוג של מספרים, אבל איך מייצגים אותיות ע"י קומבינציה של 0 ו- 1? לכל תו יש קוד מספרי הנקרא "קוד ASCII", ניתן לראות את הקוד של כל תו ב"טבלת ASCII" כאשר מאחסנים את ערכו של משתנה מטיפוס char למעשה שומרים את הערך ה- ASCII שלו מאחר וגודלו של char הוא 1byte, כלומר 8bit, ניתן לאחסן במשתנה זה 256 (28) ערכים שונים בטבלת ה- ASCII הבסיסית יש רק 127 ערכים American Standard for Code Information Interchange

טבלת ASCII http://www.asciitable.com/ 19 © Keren Kalif

טבלת ASCII- דגשים http://www.asciitable.com/ 20 © Keren Kalif

הגדרת משתנים מטיפוס char #include <iostream> using namespace std; void main { char ch1 = ‘a’; char ch2 = 97; } משתנה מטיפוס char מכיל תו, ולכן ניתן לשים בו תו, או מספר כאשר שמים מספר הכוונה לתו שמספר זה מייצג בטבלת ה- ASCII בשני המקרים הללו הערך בתא הזיכרון זהה (משום שהערך ASCII של ‘a’ הוא 97) char: ch1 01100001 1000 char: ch2 1001 1002

הגדרת משתנים מטיפוס char (2) לכן ערך ה- ASCII של התו '8' (56) נשמר, ולא 8 בבינארית לעומתו, ב- ch2 נשמר המספר 8 #include <iostream> using namespace std; void main() { char ch1 = '8'; char ch2 = 8; cout << "ch1 as char: |" << ch1 << "| and as int: " << (int)ch1 << endl; cout << "ch2 as char: |" << ch2 << "| and as int: " << (int)ch2 << endl; } char: ch1 01010110 1000 char: ch2 00001000 1001 הוראה לקומפיילר להדפיס את המשתנה כמספר

ההבדל בין מספר לתו מאחר ותו מיוצג כמספר, צריך לידע את המחשב בתור איזה טיפוס אנחנו רוצים להתייחס אליו: #include <iostream> using namespace std; void main() { cout << "int=" << (int)'Z' << ", char=" << 'Z' << endl; cout << "int=" << 97 << ", char=" << (char)97 << endl; }

הדפסת וקליטת משתנים מטיפוסים שונים #include <iostream> using namespace std; void main() { int n1; double n2; char ch; cout << “Please enter an int, double and char: “; cin >> n1 >> n2 >> ch; cout << “values are: “ << n1 << “ “ << n2 << “ “ << ch << endl; }

הדפסת תווים מיוחדים \n ירידת שורה \t tab \a צלצול \\ \ \” " #include <iostream> using namespace std; void main() { cout << “Hello World!”; cout << “Hello World!\n”; cout << “\”Hello World!\”\n”; cout << “Hello\tWorld!\n”; } \n ירידת שורה \t tab \a צלצול \\ \ \” "

אתחול והשמת משתנים כאשר מגדירים משתנה ערכו הוא זבל, אלא אם הוא אותחל עם הגדרתו פעולת השמה היא נתינת ערך למשתנה: <variable> = <expression> נקרא גם: L-Value = R-Value ראשית חישוב הביטוי מתבצע ואז ערכו מושם לתוך המשתנה #include <iostream> using namespace std; void main() { int x, y; int z = 9; x = 5; y = x*3 ; x = y = 17; } int: x 17 1000 int: y 1004 int: z 9 1008 int: x 5 1000 int: y 15 1004 int: z 9 1008 int: x 5 1000 int: y ??? 1004 int: z 9 1008 int: x ??? 1000 int: y 1004 int: z 9 1008

השמות בין טיפוסים שונים L-value R-value Translation method char int Calculated value mod 256 as byte double Integer value of calculated value mod 256 Same value Integer value of calculated value mod 32,768 char\int

השמות בין טיפוסים שונים – דוגמא #include <iostream> void main() { int n = 3; double d = 97.2; char ch = ‘d’; n = ch; ch = d; n = d; } כל פעם כשיש השמה מטיפוס המכיל יותר בתים לטיפוס המכיל פחות בתים נקבל את ה- warning: possible lost of data //  n= 100 //  ch = ‘a’, warning: possible lost of data! //  n=97 , warning: possible lost of data!

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