top of page

משתנה מסוג- CHAR

עד כה למדנו והשתמשנו במשתנים לאחסון מספרים. משתנים מסוג: INT ו- LONG למספרים שלמים, ומסוג FLOAT ו- DOUBLE למשספרים עשרוניים. בשיעור זה נכיר משתנה מסוג CHAR המאפשר לשמור בתוכו תו - כל סימן שאנו יכולים להקליד במקלדת, למשל: אותיות A-Z , סימנים !@#$%^&*)(-+ ועוד.

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

תחביר ההגדרה:

char [variable name] = [initial value];

variable name - שם המשתנה לפי כל כללי מתן שמות למשתנים שלמדנו.

initial value - ערך התחלתי שניתן בין שני סימני גרש בודד, למשל 'D'

דוגמא בסיסית להגדרה:

char answer = 'y';

char usd = '$';

דוגמא בסיסית לתוכנית:

void setup() {
   char ch = 'a';
   Serial.begin(9600);
   Serial.println(ch);
}
void loop() {
}

התוכנית תדפיס למסך את התו a.

איך מיוצגים תווים בתוכנה - קוד ASCII

במקלדת המחשב יש כל מיני תווים שאנחנו רואים על המסך וישנם גם כאלה שאנחנו לא רואים, כמו מקש שורה חדשה (ENTER) או מקש יציאה (ESC) או מקש מרווח (TAB) וכ"ד. למרות שלא רואים אותם על המסך המחשב יודע לזהות שהמקש נלחץ ומגיב בהתאם לפי מה שמוגדר בתוכנית.

האופן בו המחשב מזהה את כל התווים הללו נעשה בעזרת קודים - כל תו מקבל קוד מספרי מתאים ויש 256 קודים המכסים את כל התווים. למשל: הסיפרה אפס מיוצגת על ידי הקוד 48, הסיפרה 1 מיוצגת על ידי הקוד 49 וכן הלאה עד הסיפרה 9. האות a מיוצגת על ידי הקוד 97 , האות b על ידי הקוד 98 וכן הלאה.

ניתן לראות את כל הקודים בטבלה הבאה:

בכל עמודה יש 3 ערכים, השמאלי הוא הקוד בבסיס 10, האמצעי הוא הקוד בבסיס 16 והימני הוא התו המקודד.​ ניתן לראות שכל הקוד עד ערך 31 הם קודים של תווים שלא ניתן לראות על המסך. מקוד 32 מתחילים לזהות תווים שניתן לראות על המסך, עד ערך קוד 127. הקודים מעבר לערך 127 גם ניתו לראות על המסך אך אינם מופיעים במקלדת, ותוכניות עושות בהם שימוש בדרך כלל לעיצוב ממשק המשתמש.

ascii1.png
ascii2.png
שדבןן3.png

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

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

​​​​​​​​​​

charExample1.png

בשורת ההדפסה הראשונה אנחנו מדפיסים את ערך המשתנה מסוג CHAR כמו בדוגמא הבסיסית ואכן מקבלים על המסך את התו המתאים. בשורה הבאה אנחנו מוסיפים למשתנה 1 - פעולת חיבור של CHAR עם INT. מכוון שאלה שני סוגים שונים של משתנים המחשב יודע במצב כזה לעבור לעשות פעולת חיבור עם הקוד של התו השמור במשתנה. ערך הקוד הוא 97 (ראו בטבלה למעלה) ולכן כשמוסיפים 1,2 או 3 מקבלים 98, 99, 100

באופן דומה, ניתן לתת ערך למשתנה מסוג CHAR גם כמספר עשרוני המתאים לקוד שלו והמחשב ידע לתרגם את הקוד לתו המתאים - ראו בדוגמא הבאה:

בשורה 2 הגדרנו משתנה מסוג CHAR ובמקום לאתחל אותו עם תו בין גרשים, נתנו לו ערך מספרי 109 המתאים לקוד ASCII של האות m. כשהדפסנו את ערך המשתנה, המחשב תרגם את הערך המספרי לתו המתאים והציג אותו. בשורות 5-6 אנחנו רואים שפעולות החשבון על המשתנים מתנהגות בהתאם.

בשורה 7 אנחנו רואים דוגמא הפוכה, הדפסת תו על המסך מתוך ערך קוד ASCII שלו. השימוש בסימון (char) נקראת Cast שהמשמעות שלו להכריח את הערך שיבוא מיד להיות לפי סוג המשתנה שרשום בתוך הסוגריים, ולכן התוכנית תרגמה את הערך 115 לתו S.

charExample2.png

שימוש בתווים בקבלת מידע מהמקלדת:

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

Serial.parseInt

Serial.parseFloat

כדי לקבל מהמקלדת תוים נשתמש בפקודה:

Serial.read()

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

בשורות 3-5 אנחנו קולטים מידע מהמשתמש ושומרים בתוך משתנה מסוג CHAR. כמשדפיסים את ערך המשתנה שקלטנו מופיע התו המתאים על המסך.

בשורות 8-10 אנחנו שוב קולטים מידע מהמשתמש אך הפעם שומרים את המידע במשתנה מסוג INT. כשמדפיסים את ערך המשתנה השני שקלטנו מקבלים את קוד ASCII של התו Y שהקלדנו.

charExample3.png

שימוש בתווים עם לולאת FOR:

התכונה של תרגום תו לערך מספרי ולהפך מאפשרת לנו גם להשתמש במשתנה מסוג CHAR בלולאת FOR. בדוגמא הבאה רואים לולאה שסופרת מהתו "a" ועד התו "z" ומדפיסה למסך את ערך מונה הלולאה:

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

charExample4.png

תרגילים:

1. כתבו תוכנית שמגדירה מספר משתנים מסוג CHAR (למשל: CH1, CH2, CH3...) כמספר התווים בשמכם כפי שהוא נכתב באנגלית. לכל תו תנו ערך התחלתי שהוא האות המתאימה בשמכם.

2. הוסיפו לתוכנית מתרגיל 1, הדפסה של שמכם על ידי הדפסת כל ערכי המשתנים המכילים את אותיות שמכם, בשורה אחת

3. שנו את התוכנית מתרגיל 2 כך שתצפין את המידע (שמכם) על ידי הזזת התווים 3 מקומות קדימה, למשל: אם שמי הוא GABBY, הזזה של האות G 3 מקומות יתן את האות J, הזזה של האות A שלוש מקומות יתן את האות D, הזזה של האות B שלוש מקומות יתן  את האות E. יש לבצע את ההזה על ידי שימוש בקוד ASCII והדפסה בעזרת CAST.

4. (אתגר) כתבו תוכנית של מחשבון 4 פעולות. התוכנית תבקש מהמשתמש להקליט מספר, סימן של אחת מ-4 פעולות החשבון, ומספר נוסף. בהתאם לפעולת החשבון שנבחרה (IF) התוכנית תחשב ותדפיס את התרגיל שבוצע ואת תוצאתו, למשל:

3+7=10

bottom of page