Menu
Coddy logo textTech

חזרה: מברך

חלק מהיחידה תכנות מונחה עצמים במסלול ה-C של Coddy. שיעור 43 מתוך 61.

challenge icon

אתגר

קל

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

תחלק את הקוד שלך בין שלושה קבצים:

  • greeter.h: כאן תגדיר את הממשק של המברך. צור טיפוס של מצביע לפונקציה בשם GreetFunc, שמקבל const char* (שם לברכה) ולא מחזיר דבר. לאחר מכן הגדר מבנה Greeter שמכיל language (מסוג const char*) ומצביע לפונקציה greet מטיפוס GreetFunc.
  • greeter.c: ממש את פונקציות הברכה שמייצגות שפות שונות:
    • greet_english: מדפיסה Hello, name!
    • greet_spanish: מדפיסה Hola, name!
  • main.c: חבר כאן את כל החלקים. צור שני מופעים של Greeter, אחד לאנגלית ואחד לספרדית, וכל אחד מהם יחובר לפונקציית הברכה המתאימה לו. קרא שם מהקלט, ואז קרא לפונקציה greet של שני המברכים כדי להדגים התנהגות פולימורפית.

התוכנית שלך תקבל קלט יחיד: שם לברכה.

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

דוגמת פלט כאשר הקלט הוא Maria:

English: Hello, Maria!
Spanish: Hola, Maria!

דוגמת פלט כאשר הקלט הוא Carlos:

English: Hello, Carlos!
Spanish: Hola, Carlos!

שני המברכים הם מאותו טיפוס Greeter, ובכל זאת הם מפיקים ברכות שונות, משום שלכל אחד מהם משויכת פונקציה שונה לחבר greet. זכור להשתמש בשומרי הכללה בקובץ הכותרת שלך.

נסו בעצמכם

#include <stdio.h>
#include <string.h>
#include "greeter.h"

int main() {
    // קראו את השם שהוזן
    char name[100];
    scanf("%s", name);
    
    // TODO: צרו מברך באנגלית
    // - הגדירו את language ל-"English"
    // - הגדירו את greet לפונקציה greet_english
    
    
    // TODO: צרו מברך בספרדית
    // - הגדירו את language ל-"Spanish"
    // - הגדירו את greet לפונקציה greet_spanish
    
    
    // TODO: עבור כל מברך:
    // 1. הדפיסו את language ואחריו ": "
    // 2. קראו לפונקציה greet עם השם
    
    
    return 0;
}

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר C אונליין