Generic selectors
Exact matches only
Search in title
Search in content

מבוא לשפות תכנות באמצעות שפת C פרק 13 – מחרוזות Strings

בפרק 11 של הקורס למדנו על תווים. למדנו כיצד להשתמש בסוג הנתונים char , שאפשר להזין בו תו אחד – איזה שנרצה מהתווים במקלדת. כעת בואו נתקדם לעבר הקונספט הבא.

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


char ch1 = 'ab';
char ch2 = '10';

כמו כן, בפרק 12 של הקורס למדנו כיצד להקים ולהשתמש במערכים על מנת לאכסן מספר ערכים מאותו סוג משתנים במערך אחד. בדוגמה הבאה נקים מערך של 5 משתנים מסוג int:


#include <stdio.h>

int main() {

int number[5] = {10, 20, 30, 40, 50};
int i = 0;

while( i < 5 ) {
printf("number[%d] = %d\n", i, number[i] );
i = i + 1;
}
}

על מנת שנקבל את התוצאה הבאה:

number[0] = 10
number[1] = 20
number[2] = 30
number[3] = 40
number[4] = 50

כעת, ננסה להקים מערך של 5 תווים characters באותו האופן שבו הקמנו מערך של מספרים:


#include <stdio.h>

int main() {

char ch[5] = {'H', 'e', 'l', 'l', 'o'};
int i = 0;

while( i < 5 ) {
printf("ch[%d] = %c\n", i, ch[i] );
i = i + 1;
}
}

על מנת שנקבל את התוצאה הבאה:

ch[0] = H
ch[1] = e
ch[2] = l
ch[3] = l
ch[4] = o

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


#include <stdio.h>

int main() {

char ch[5] = "Hello";
int i = 0;

/* Print as a complete string */
printf("String = %s\n", ch);

/* Print character by character */
while( i < 5 ) {
printf("ch[%d] = %c\n", i, ch[i] );
i = i + 1;
}
}

ומיד תתקבל התוצאה הבאה:

String = Hello
ch[0] = H
ch[1] = e
ch[2] = l
ch[3] = l
ch[4] = o

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

 

טבלה מחרוזות
טבלה מחרוזות

 

כדי להבין איך זה עובד למרות שלא ניתן לראות זאת בדוגמאות, שפת C משתמשת מאחורי הקלעים בתו 0\ null בתור התו האחרון בכל מחרוזת. זה מסמל את סוף המחרוזת, מה שאומר שאם נרצה ליצור מחרוזת בעלת 5 תווים, ניאלץ להקים מערך בן 6 אלמנטים, למרות ששפת C סלחנית בנושא הזה ונוכל להשיג את אותה התוצאה עם מערך של 5 אלמנטים.

דברים שיש לזכור לגבי מחרוזות strings

  • בשפת C נתייחס למחרוזת כמערך של תווים
  • אנו יכולים ליצור מחרוזת בשפת C על ידי הזנת האותיות אחת אחת לתוך מערך של משתנים מסוג char
  • אנו יכולים ליצור מחרוזת בשפת C על ידי הזנת המחרוזת בשלמותה סגורה בגרשיים כפולות " "
  • אנו יכולים להוציא פלט של מחרוזת אות אחר אות על ידי שימוש במערך, או להוציא פלט של מחרוזת בשלמותה על ידי שימוש בשם המערך
  • התו האחרון בכל מחרוזת הוא תו 0\ null
  • בשפות תכנות שונות יש פונקציות רבות ושונות שנועדו להפעיל מניפולציות על מחרוזות strings כמו למשל להוציא תת-מחרוזת מתוך מחרוזת ועוד

מחרוזות strings בשפת Java

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


public class Main {
public static void main(String []args) {
String str = new String("Hello");
System.out.println( "String = " + str );
}
}

וכשנריץ תכנית זו נקבל את התוצאה הבאה:

String = Hello

מחרוזות strings בשפת Python

בשפת Python יצירת מחרוזות היא דבר פשוט כמו יצירת משתנה מכל סוג נתונים אחר. זוהי דוגמה של אותה התוכנית, כאשר הפעם היא נכתבה בשפת Python:


var = 'Hello World!'

print ("String = ", var)

!String = Hello World

רוצים לשתף את המדריך?

שיתוף ב facebook
שיתוף ב twitter
שיתוף ב telegram
שיתוף ב whatsapp
שיתוף ב linkedin
שיתוף ב tumblr
שיתוף ב email
שיתוף ב reddit
שיתוף ב skype
שיתוף ב vk

אהבתכם את המדריך? פתר לכם תקלה?

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

כתיבת תגובה