Console.WriteLine
Download
Report
Transcript Console.WriteLine
ניתוח מערכות מידע
תכנות ב C#
נעים להכיר...
1
#C תוכנית ראשונה ב
using System;
class FirstProgram
{
static void Main(string[] args)
{
Console.WriteLine("Let's Learn C#");
}
}
2
;
בסוף כל פקודה יש
;
3
משתנים )(variables
משתנה הוא שם של מקום בזכרון.
משתנה מוגדר ע"י הגדרת השם שלו והטיפוס שלו.
טיפוס – מתאר את סוג המידע שהמשתנה יחזיק.
שם )(variable name
טיפוס )(data type
;int total
;int count, temp, result
4
ניתן לאתחל משתנים בהצהרה
ניתן אף לאתחל מספר משתנים יחד
;int sum = 0
;int base = 32, max = 149
השמה )(assignment
השמה משנה ערך של משתנה
אופרטור ההשמה הוא הסימן =
;total = 25
totalמקבל את הערך .25
הערך שהיה בתוך totalנמחק
אפשר לשים רק ערך שמתאים לטיפוס של המשתנה.
5
דוגמא משתנים והשמה
using System;
... להוסיף
class Program
{
static void Main(string[] args)
{
int x = 5;
int y;
y = 2 * x;
Console.WriteLine(y);
}
}
6
פקודת הקלט והערות
– ReadLine קורא שורה
השורה נקראת כמחרוזת ()String
אם רוצים לקרוא מספר יש להמיר (נראה בהמשך)
ניתן להשתמש בסוף תוכנית כדי לגרום למסך הריצה להשאר
יצא כשנלחץ return
רישום הערות
// this is a comment
/* this is a comment
On more than one line*/
7
טיפול בקלט ופלט- דוגמא
using System;
class IOProgram
{
static void Main(string[] args)
{
Console.WriteLine("Please Type Something:");
String x;
x = Console.ReadLine();
Console.WriteLine("You typed {0}" , x );
Console. ReadKey();
}
}
8
WriteLine
מדפיס למסך את מה שנמצא בין גרשיים ""XXX
ניתן לשלב טיפול במשתנים
הם ממוספרים לפי סדר הופעתם
;) Console.WriteLine("You typed {0}" , x
ידפיס את הערך של x
;) Console.WriteLine("You typed {0,1}" , x , y
ידפיס את הערך של xואז את הערך של y
ניתן לשרשר מחרוזות ע"ישימוש ב +
;(Console.WriteLine)"You typed “ + x + y
9
ידפיס גם כן את הערך של xואז את הערך של y
קלט של מספרים
using System;
class numberProgram
{
static void Main(string[] args)
{
String x;
int y;
Console.WriteLine("Enter a number:");
x = Console.ReadLine();
y = int.Parse(x);
Console.WriteLine("You typed {0}" ,x);
Console.WriteLine("Adding 2 makes: {0} or {1}", x+2, y+2 );
Console. ReadKey();
}
}
10
טיפוסים
מספרים שלמים- integers
byte, short, int, long…
מספרים בעלי נקודה עשרונית- floating point
float, double…
מחרוזות- strings
String
כל דבר בין " " אוטומטית יוגדר מחרוזת
תוים בודדים- characters
char, ‘a’ ‘\0’ ‘\n’ …
בוליאני- boolean
)false אוtrue (מקבל ערךBoolean
11
טבלת תוים מיוחדים לשימוש במחרוזות
התו
משמעות
\’
Single Quote
\”
Double Quote
\\
Backslash
\0
Null, not the same as the C #null value
\a
Bell
\b
Backspace
\f
form Feed
\n
Newline
\r
Carriage Return
\t
Horizontal Tab
\v
Vertical Tab
12
ביטויים מתמטים
פעולות מתמטיות
מוגדרות על טיפוסים מסוג integerוfloating point -
( +חיבור)
(חיסור)* (כפל)
( /חילוק)
( %שארית ,נקרא גם מודולוס)
13
(כמו \ ב )VB
(כמו Modב )VB
פקודת if
פקודת ifנכתבת באופן הבא:
הביטוי ) (conditionחייב להיות ביטוי
בוליאני – כלומר ערכו אמת true -או
שקר false -
if
מילה שמורה
) if ( condition
;statement
אם הביטוי ) (conditionאמת ) (trueמבוצעת ההצהרה )(statement
אם הביטוי ) (conditionשקר ) (falseמדלגים על ההצהרה )(statement
14
if-else פקודת
.if-else ולייצר פקודתelse פקודתif ניתן להוסיף לפקודה
if ( condition )
statement1;
else
statement2;
statement1 בצע אתtrue הואcondition אם ערך הביטוי
statement2 בצע אתfalse הואcondition אם ערך הביטוי
אבל לא שניהםstatement2 אוstatement1 יבוצע או
15
if - דוגמא
using System;
class ifProgram
{
static void Main(string[] args)
{
string x;
x = Console.ReadLine();
if (x == "a" || x == "A")
Console.WriteLine("A is for apple");
else if (x == "b" || x == "B")
Console.WriteLine("B is for Boy");
else
Console.WriteLine("Not defined");
Console.ReadKey();
}
}
16
ביטויים בוליאנים
אופרטורים של השוואה המחזירים ערך בוליאני
==
=!
<
>
=<
=>
( equal toשווה)
( not equal toלא שווה)
( less thanקטו מ)
( greater thanגדול מ)
( less than or equal toקטן או שווה ל)
( greater than or equal toגדול או שווה ל)
שימו לב להבדל בין האופרטור = לאופרטור ==
17
אופרטורים לוגיים
בביטויים בוליאנים אפשר להשתמש גם באופרטורים לוגיים.
!
&&
||
Logical NOT
Logical AND
Logical OR
האופרטורים הלוגיים מקבלים אופרנדים בוליאנים ומחזירים
תוצאה בוליאנית
האופרטור NOTהוא אופרטור אונרי -פועל רק על אופרנד אחד
האופרטורים AND, ORהם אופרטורים בינרים כלומר פועלים
על שני אופרנדים
18
C# לVB הבדלים בין אופרטורים של
Purpose
VB.NET
C#
Integer division
\
/
Modulus (division returning only the
remainder)
Mod
%
Exponentiation
^
n/a
Integer division Assignment
\=
/=
Concatenate
=&NEW
+=
Modulus
n/a
%=
Bitwise-AND
n/a
&=
Bitwise-exclusive-OR
n/a
^=
Bitwise-inclusive-OR
n/a
|=
Equal
=
==
Not equal
><
!=
Compare two object reference variables
Is
==
Compare object reference type
TypeOf x Is Class1
x is Class
1
Concatenate strings
&
+
Shortcircuited Boolean AND
AndAlso
&&
Shortcircuited Boolean OR
OrElse
||
Scope resolution
.
.and base
19
C# לVB הבדלים בין אופרטורים של
...המשך
Purpose
VB.NET
C#
Array element
)(
] [
Type cast
Cint ,CDbl ,... ,CType
(type)
Postfix increment
n/a
++
Postfix decrement
n/a
--
Logical-NOT
Not
!
One's complement
Not
~
Prefix increment
n/a
++
Prefix decrement
n/a
--
Size of type
n/a
sizeof
Bitwise-AND
And
&
Bitwise-exclusive-OR
Xor
^
Bitwise-inclusive-OR
Or
|
Logical-AND
And
&&
Logical-OR
Or
||
Conditional
If Function)(
:?
Pointer to member
n/a
( .Unsafe mode only)
20
קבוצת הצהרות
ניתן לקבץ יחד מספר הצהרות שיבוצעו אם הביטוי
בפקודת ה ifהוא אמת .נשתמש בסוגריים { } על מנת
לתחום את ההצהרות.
)if (total > MAX
{
;)"!!Console.WriteLine ("Error
;errorCount++
}
ניתן גם בפקודות אחרות ב C#לקבץ מספר הצהרות
באותו אופן.
21
לולאת for
סינטקס של פקודת :for
statement
הצהרה מבוצעת עד שהתנאי
condition
נהיה שקר
initialization
אתחול
מבוצע פעם אחת
לפני תחילת ביצוע הלולאה
) for ( initialization ; condition ; increment
;statement
increment
הוספה מבוצעת בסוף כל
איטרציה (סיבוב של הלולאה)
22
הגדרת משתנה באתחול
)for (int count=1; count <= 5; count++
;)Console.WriteLine(count
ניתן להגדיר משתנה בתוך חלק האתחול.
23
for - דוגמא
using System;
class ifProgram
{
static void Main(string[] args)
{
for (int i = 0; i < 100; i++)
Console.WriteLine("The square root of {0} is {1} ", i, Math.Sqrt(i) );
Console.ReadKey();
}
}
24
for ) בלולאתincrement( הוספה
for (int num=0; num < 100; num ++)
Console.WriteLine (num);
בחלק הוספה ניתן לבצע כל פעולה
for (int num=0; num <100; num += 5)
Console.WriteLine (num);
for (int num=100; num > 0; num -= 5)
Console.WriteLine (num);
25
לולאת while
סינטקס של פקודת :while
) while ( condition
;statement
אם התנאי conditionהוא 'אמת' אז ההצהרה statement
מתבצעת
אח"כ התנאי נבדק שוב אם ערכו עדיין 'אמת' ההצהרה מבוצעת שוב
ההצהרה מבוצעת שוב ושוב עד שהתנאי נהיה 'שקר'
26
;int count = 1
)while (count <= 5
{
;)Console.WriteLine(count
;count++
}
דוגמא לשימוש בלולאה – בדיקת קלט
הבעיה:
רוצים לקלוט מספרים מהמשתמש
דרוש לקלוט מספרים בטווח מסויים
פתרון:
נשתמש בלולאה
כל עוד לא קיבלנו קלט מתאים
נבקש ונקלוט קלט נוסף
27
while - דוגמא
using System;
class FirstProgram
{
static void Main(string[] args)
{
int NUM_GAMES = 12;
int won;
double ratio;
Console.WriteLine("Enter num of games won (0 to {0})", NUM_GAMES);
string tmp = Console.ReadLine();
won = int.Parse(tmp);
while (won < 0 || won > NUM_GAMES)
{
Console.WriteLine ("Invalid input. Please reenter: ");
tmp = Console.ReadLine();
won = int.Parse(tmp);
}
ratio = (double)won / NUM_GAMES;
Console.WriteLine ("Winning percentage is: {0}", ratio);
}
}
28
do דוגמא ללולאת
int count = 0;
do
{
count++;
Console.WriteLine (count);
} while (count < 5);
יודפס
12345
! מבוצע לפחות פעם אחתdo הגוף של לולאת
29
switch פקודת
switch
וגם
case
מילים שמורות
switch ( expression )
{
case value1 :
statement-list1
jump-statement
case value2 :
statement-list2
jump-statement
case value3 :
statement-list3
jump-statement
...
}
expression אם
value2-מתאים ל
הבקרה עוברת לכאן
30
שימוש ב break, defaultבתוך switch
ב C#חייבים להשתמש
בפקודת קפיצה כפקודה
האחרונה ברשימת הפקודות
למשל break, continue
ניתן ומקובל לייצר מקרה של
ברירת מחדל בשם default
31
גם כאן יש להשתמש
בפקודת קפיצה
)switch (option
{
case 'A':
;aCount++
;break
case 'B':
;bCount++
;break
case 'C':
;cCount++
;break
default:
;break
}
int grade, category;
Console.WriteLine("Enter a numeric grade (0 to 100): ");
string tmp = Console.ReadLine();
grade = int.Parse(tmp);
category = grade / 10;
switch (category)
{
case 10:
Console.WriteLine("Perfect score. Well done.");
break;
case 9:
Console.WriteLine("Well above average. Excellent.");
break;
case 8:
Console.WriteLine("Above average. Nice job.");
break;
case 7:
Console.WriteLine("Average.");
break;
default:
Console.WriteLine("Study some more.");
break;
}
32
מערכים ב#C
33
מערך (תזכורת?)
נניח שרוצים אוסף של משתנים מאותו הסוג
למשל :רשימת ציונים ,רשימת סטודנטים
מתאים להשתמש במערך
79 87 94 82 67 98 87 81 74 91
Id: 444
Sivan
0 courses
34
Id: 333
Liat
2 courses
Id:111
Id: 222
Michal
Ronit
2 courses 3 courses
grades
students
מערך – הצהרה ויצירה
ניתן להצהיר על מערך באופן הבא:
;int[] scores
הצהרה כנ"ל מגדירה רק קיום של מערך ללא המערך עצמו
scoresמצביע כעת לכתובת null
אם רוצים לייצר מופע ( )instanceשל המערך נשתמש ב :new
;]scores = new int[10
זה יגדיר מערך של int 10
35
דוגמאות להצהרה ויצירה
int[] prices = new int[500];
bool[] flags;
int length = 20;
flags = new bool[length];
char[] codes = new char[1750];
:מערך שגודלו נקבע בזמן ריצה
int n = int.Parse(Console.ReadLine());
int[] a = new int[n];
36
מערכים – גישה לתא בודד
9
8
7
6
5
4
3
2
1
0
79 87 94 82 67 98 87 81 74 91
scores
מתיחסים לתא בודד במערך ע"י [ ] (סוגריים מרובעים)
למשל ] scores[3מתיחס לתא הרביעי במערך ,וערכו .82
התא הראשון הוא ]scores[0
המערך הזה הוא של intולכן בתא בודד ניתן להשתמש כמו כל int
אחר
;]int a = scores[2
;mean = (scores[0] + scores[1])/2
;)]Console.WriteLine ("Top = " + scores[5
37
אורך מערך
Lengthמייצג את מספר האיברים במערך
;int a = scores.Length
ל aיהיה הערך 10
;)Console.WriteLine(scores.Length
ידפיס 10
שימו לב:
Lengthמכיל את מספר האיברים ולא האינדקס הכי גבוה!
38
האינדקס הכי גבוה הוא Length-1
רשימת אתחול
ניתן ליצור מערך ולמלא בו ערכים ע"י שימוש ברשימת
אתחול
}int[] units = {147, 323, 89, 933, 540, 269, 97, 114
;}'char[] letterGrades = {'A', 'B', 'C', 'D', 'F
הערכים מופרדים ע"י פסיק
גודל המערך נקבע לפי אורך הרשימה
אין צורך להשתמש ב new
אפשר להשתמש ברשימת אתחול רק בזמן הגדרת המערך
39
דוגמא - 1הדפסת כל האיברים במערך
יש לעבור על המערך (נעבור על כל התאים שלו)
אורכו arr.Length
נדפיס את התוכן של התא
;}int[] arr = {1,2,3,4,5
)for(int i =0; i<arr.Length; i++
{
;)]Console.WriteLine(arr[i
}
40
דוגמא – 2שימוש בפונקציה
נגדיר מערך
נמלא במספרים את המערך
נשתמש בפונקציה לחיפוש במערך
הפונקציה תחזיר לנו את המיקום של איבר במערך
נדפיס את מיקום האיבר שחיפשנו
41
main - 2 דוגמא
static void Main(string[] args)
{
int[] arr; //define array pointer
arr = new int[10]; // allocate space for array
//fill array
for (int i = 0; i < 10; i++)
arr[i] = i*10;
//look for a number in the array, and print its place
int result, num1 = 20;
!שימו לב
נגדיר פונקציה
שמחפשת במערך
result = find(arr, num1); //call the function find
if (result != -1)
{//check the result returned from the function
Console.WriteLine(" the number {0} is in place {1}", num1, result);
}
}
42
הפונקציה- 2 דוגמא
static int find(int[] arr, int num)
{
for(int i=0; i<arr.Length; i++)
{
if (arr[i] == num)
return i;
}
return -1;
}
43
? – איך מרכיבים את הכל2 דוגמא
class Program
{
static int find(int[] arr, int num)
{
find התוכן של הפונקציה
}
static void Main(string[] args)
{
Main התוכן של הפונקציה
}
}
44
פתיחת פרויקט #C
45
46
הסברים נוספים לטבלת תווים מיוחדים
לשימוש במחרוזות
– Single Quoteמוסיף גרש במחרוזת
’\
– Double Quoteמוסיף גרשיים במחזורת
”\
– Backslashמוסיף קו לכסוני במחרוזת
47
\\
– value nullתו ריק באמצע המחרוזת ,נראה
כמו רווח.
\0
– Bellגורם לצלצול
\a
– Backspaceמוחק תו אחד במחרוזת
\b
- form Feedמעבר לדף הבא – רלוונטי
בהדפסה
\f
- Newlineעובר שורה חדשה במחרוזת
\n
– Carriage Returnחוזר לתחילת שורה
\r
– Horizontal Tabמוסיף רווח של טאב
\t
– Vertical Tabאמור לרדת למטה – הוראה
למדספת
\v
ביטויים מתמטיים – הערה על חילוק
)VB (חילוק) (כמו \ ב/
אם רוצים שהתוצאה לא תתעגל צריך להמיר לטיפוס עשרוני
int x = 5;
int y =3;
int z = 4;
double ans;
ans= x / y;
Console.WriteLine("answer is: " + ans);
ans = (double)x / y;
Console.WriteLine("casting to double is: " + ans);
48
הערה על = ו ==
= פירושו השמה
== פירושו השוואה
לכן הקומפיילר מודיע על שגיאה אם כותבים
)if (x=y
נכון לרשום:
)if (x==y
49