Program structure
Structure du programme
هيكل البرنامج
By the end of this section, you should be able to point to the main parts of a first C++ program, predict simple output exactly, and read one output step as both code and a flowchart.
À la fin de cette section, vous devriez pouvoir repérer les parties principales d'un premier programme C++, prédire exactement une sortie simple et lire une même étape d'affichage à la fois comme code et comme organigramme.
بنهاية هذا القسم، يجب أن تكون قادراً على تمييز الأجزاء الأساسية في أول برنامج C++، وتوقّع المخرجات البسيطة بدقة، وقراءة خطوة إخراج واحدة على شكل كود ومخطط انسيابي معاً.
Start here: what this lesson will teach you
Commencez ici : ce que cette leçon va vous apprendre
ابدأ من هنا: ماذا ستتعلّم في هذا الدرس
Read this first lesson as a simple map, not as a wall of symbols. A tiny beginner program usually does three jobs in order: prepare the tools, run the instructions inside main(), then finish cleanly with return 0;.
| Program part | What this part does |
|---|---|
#include <iostream> |
Prepares stream tools so names such as cout can be used. |
using namespace std; |
Lets you write cout instead of std::cout in this classroom style. |
main() |
Marks the function where execution begins. |
cout |
Sends visible text to the screen. |
// comment |
Explains something to the reader, but the computer ignores it. |
return 0; |
Finishes the program successfully. |
Move line by line. When a question asks for output, separate syntax, printable text, and comments before you decide what the screen shows.
Lisez cette première leçon comme un plan simple, pas comme un mur de symboles. Un petit programme débutant fait généralement trois choses dans l’ordre : préparer les outils, exécuter les instructions à l’intérieur de main(), puis terminer proprement avec return 0;.
| Élément du programme | Rôle de cet élément |
|---|---|
#include <iostream> |
Prépare les outils de flux pour pouvoir utiliser des noms comme cout. |
using namespace std; |
Vous permet d’écrire cout au lieu de std::cout dans ce style de classe. |
main() |
Marque la fonction où l’exécution commence. |
cout |
Envoie du texte visible vers l’écran. |
// commentaire |
Explique quelque chose au lecteur, mais l’ordinateur l’ignore. |
return 0; |
Termine le programme correctement. |
Avancez ligne par ligne. Quand une question demande la sortie, séparez d’abord la syntaxe, le texte affichable et les commentaires avant de décider ce que l’écran montre.
اقرأ هذا الدرس الأول على أنه خريطة بسيطة، لا على أنه مجموعة رموز صعبة. فالبرنامج الصغير للمبتدئين يؤدي عادة ثلاث وظائف بالترتيب: يجهّز الأدوات، ثم ينفّذ التعليمات داخل main()، ثم ينهي العمل بشكل صحيح بواسطة return 0;.
| جزء البرنامج | ماذا يفعل هذا الجزء |
|---|---|
#include <iostream> |
يجهّز أدوات التدفق حتى يمكن استخدام أسماء مثل cout. |
using namespace std; |
يتيح لك كتابة cout بدلاً من std::cout في هذا الأسلوب التعليمي. |
main() |
يحدد الدالة التي يبدأ منها التنفيذ. |
cout |
يرسل نصاً مرئياً إلى الشاشة. |
// comment |
يشرح للقارئ شيئاً ما، لكن الحاسوب يتجاهله. |
return 0; |
ينهي البرنامج بنجاح. |
تقدّم سطراً سطراً. وعندما يطلب منك السؤال المخرجات، افصل أولاً بين الصياغة البرمجية والنص القابل للطباعة والتعليقات قبل أن تحدد ما الذي سيظهر على الشاشة.
Memory rule: prepare, run, finish.
Règle à retenir : préparer, exécuter, terminer.
قاعدة سريعة للحفظ: جهّز، نفّذ، أنهِ.
- Identify the setup lines,
main(), and executable statements in a tiny beginner C++ program.Identifier les lignes de préparation,main()et les instructions exécutables dans un petit programme C++ débutant.تمييز أسطر التهيئة وmain()والتعليمات التنفيذية في برنامج C++ صغير للمبتدئين. - Predict the exact screen output of a one-line
coutstatement.Prédire la sortie exacte à l'écran d'une instructioncoutsur une seule ligne.توقّع النص الدقيق الذي يظهر على الشاشة من تعليمةcoutقصيرة. - Explain what comments do and what
return 0;means.Expliquer le rôle des commentaires et la signification dereturn 0;.شرح وظيفة التعليقات ومعنىreturn 0;.
- Code stays left-to-right even when the interface is Arabic.Le code reste affiché de gauche à droite même quand l'interface est en arabe.يبقى الكود من اليسار إلى اليمين حتى عندما تكون الواجهة بالعربية.
- If a question asks for exact output, type only what appears on the screen.Si une question demande la sortie exacte, tapez seulement ce qui apparaît à l'écran.إذا طلب السؤال المخرجات الدقيقة، فاكتب فقط ما يظهر على الشاشة.
- If a blank asks for exact code, symbols and letter case matter.Si un blanc demande le code exact, les symboles et la casse comptent.إذا طلب منك الفراغ الكود نفسه، فانتبه إلى الرموز وحالة الأحرف.
The anatomy of a C++ program
Anatomie d'un programme C++
تشريح برنامج C++
A beginner C++ program usually has two layers: setup lines before main(), then the executable body inside main(). #include <iostream> makes stream input/output declarations available so names such as cout and cin can be used. using namespace std; is a classroom shortcut that lets you write cout instead of std::cout.
The function main() is the entry point. Execution begins at the opening brace {, reads the statements inside the braces in order, and stops when that body ends. Each statement must follow valid syntax, so a line such as cout << "Hello"; ends with a semicolon. return 0; does not print anything; it reports successful termination to the operating system.
| Line in the sample | Role in the program |
|---|---|
#include <iostream> |
Prepares the library for screen input/output. |
using namespace std; |
Allows the shorter classroom names. |
int main() { |
Opens the part that actually runs. |
cout << "Hello"; |
Prints visible text. |
return 0; |
Reports successful completion. |
} |
Closes the body of main(). |
Un programme C++ débutant possède souvent deux couches : des lignes de préparation avant main(), puis le corps exécutable à l’intérieur de main(). #include <iostream> rend disponibles les déclarations d’entrée/sortie par flux afin que des noms comme cout et cin puissent être utilisés. using namespace std; est un raccourci pédagogique qui permet d’écrire cout au lieu de std::cout.
La fonction main() est le point d’entrée. L’exécution commence à l’accolade ouvrante {, lit les instructions entre les accolades dans l’ordre, puis s’arrête quand ce corps se termine. Chaque instruction doit respecter une syntaxe valide ; c’est pourquoi une ligne comme cout << "Hello"; se termine par un point-virgule. return 0; n’affiche rien ; cette instruction signale au système d’exploitation que le programme s’est terminé correctement.
| Ligne de l’exemple | Rôle dans le programme |
|---|---|
#include <iostream> |
Prépare la bibliothèque pour l’entrée/sortie à l’écran. |
using namespace std; |
Autorise les noms raccourcis utilisés en classe. |
int main() { |
Ouvre la partie qui s’exécute réellement. |
cout << "Hello"; |
Affiche un texte visible. |
return 0; |
Signale une fin correcte du programme. |
} |
Ferme le corps de main(). |
يتكوّن برنامج C++ المبتدئ عادة من طبقتين: أسطر تهيئة قبل main()، ثم جسم تنفيذي داخل main(). التعليمة #include <iostream> تجعل تعريفات الإدخال والإخراج عبر التدفقات متاحة، لذلك يمكن استخدام أسماء مثل cout وcin. أما using namespace std; فهو اختصار تعليمي يتيح لك كتابة cout بدلاً من std::cout.
الدالة main() هي نقطة البداية. يبدأ التنفيذ عند القوس المعقوف المفتوح {، ثم يقرأ التعليمات الموجودة بين الأقواس بالترتيب، ويتوقف عندما ينتهي ذلك الجسم. كل تعليمة يجب أن تتبع صياغة صحيحة، لذلك ينتهي سطر مثل cout << "Hello"; بفاصلة منقوطة. أما return 0; فهي لا تطبع شيئاً، بل تخبر نظام التشغيل أن البرنامج انتهى بنجاح.
| السطر في المثال | دوره داخل البرنامج |
|---|---|
#include <iostream> |
يجهّز المكتبة اللازمة للإدخال والإخراج على الشاشة. |
using namespace std; |
يتيح استخدام الأسماء المختصرة في هذا المستوى التعليمي (بدون كتابة std:: أمام كل اسم). |
int main() { |
يفتح الجزء الذي ينفّذ فعلياً. |
cout << "Hello"; |
يطبع نصاً مرئياً. |
return 0; |
يبلّغ عن انتهاء البرنامج بنجاح. |
} |
يغلق جسم main(). |
When you scan a beginner program, ask three questions in order: what prepares the tools, what actually runs, and what each statement does.
Quand vous parcourez un programme débutant, posez-vous trois questions dans l’ordre : qu’est-ce qui prépare les outils, qu’est-ce qui s’exécute réellement et que fait chaque instruction ?
عندما تتأمل برنامجاً للمبتدئين، اطرح على نفسك ثلاثة أسئلة بالترتيب: ما الذي يجهّز الأدوات؟ ما الذي يُنفّذ فعلاً؟ وماذا تفعل كل تعليمة؟
Worked example: predict the first output
Exemple guidé : prédire la première sortie
مثال محلول: توقّع أول مخرجات
Before you read the explanation, pause and predict the exact output of this program. cout sends text to the screen, and the insertion operator << passes the string literal to the output stream.
The key detail is the string literal "Hello, Lina!". Because it is inside double quotes, those characters are treated as printable text.
Avant de lire l’explication, arrêtez-vous un instant et prédisez la sortie exacte de ce programme. cout envoie du texte à l’écran, et l’opérateur d’insertion << transmet le littéral de chaîne au flux de sortie.
Le détail décisif est le littéral de chaîne "Hello, Lina!". Parce qu’il est écrit entre guillemets doubles, ces caractères sont traités comme un texte à afficher.
قبل أن تقرأ الشرح، توقّف لحظة وحاول أن تتنبأ بالمخرجات الدقيقة لهذا البرنامج. cout يرسل النص إلى الشاشة، والعامل << يمرّر السلسلة النصية إلى مجرى الإخراج.
التفصيل الحاسم هنا هو السلسلة النصية "Hello, Lina!". لأنها مكتوبة بين علامتي اقتباس مزدوجتين، فإن هذه الأحرف تُعامل على أنها نص قابل للطباعة.
Predicted output: Hello, Lina!
Reason: the program has one cout statement, and the string literal inside it is Hello, Lina!. The double quotes belong to the code, so they do not appear on the screen.
Common trap: if you removed the quotes and wrote cout << Hello, Lina!;, the compiler would stop at Hello because it would try to read it as a name in code, not as text to print.
Sortie prévue : Hello, Lina!
Raison : le programme contient une seule instruction cout, et le littéral de chaîne qu’elle envoie est Hello, Lina!. Les guillemets font partie du code ; ils n’apparaissent donc pas à l’écran.
Piège fréquent : si vous retiriez les guillemets et écriviez cout << Hello, Lina!;, le compilateur s’arrêterait sur Hello parce qu’il essaierait de le lire comme un nom dans le code, et non comme un texte à afficher.
المخرجات المتوقعة: Hello, Lina!
السبب: يحتوي البرنامج على تعليمة cout واحدة، والسلسلة النصية الموجودة فيها هي Hello, Lina!. علامتا الاقتباس جزء من الكود، لذلك لا تظهران على الشاشة.
الفخ الشائع: إذا حذفت علامتي الاقتباس وكتبت cout << Hello, Lina!; فسيتوقف المترجم عند Hello لأنه سيحاول قراءتها كاسم داخل الكود، لا كنص مطلوب طباعته.
Comments, syntax, and reading a flowchart
Commentaires, syntaxe et lecture d'un organigramme
التعليقات والصياغة وقراءة المخطط
Comments and output are easy to confuse at first because both appear as text in the source file. They do completely different jobs. In C++, // starts a single-line comment. The compiler ignores that comment entirely, so it cannot create output or change what the program does.
A flowchart expresses the same idea in visual order: start, do an action, end. In the example below, the output box corresponds to the line cout << "Ready";. The Start and End symbols organize the sequence, but only the output step sends visible text to the screen.
Keep these syntax checks in mind:
- text to be printed must stay inside double quotes
- statements must end with a semicolon
- opening and closing braces must match
Commentaires et sortie se confondent facilement au début parce qu’ils apparaissent tous deux comme du texte dans le fichier source. Pourtant, ils jouent des rôles complètement différents. En C++, // commence un commentaire sur une seule ligne. Le compilateur ignore totalement ce commentaire ; il ne peut donc ni produire une sortie ni modifier le comportement du programme.
Un organigramme exprime la même idée dans un ordre visuel : commencer, faire une action, terminer. Dans l’exemple ci-dessous, la boîte de sortie correspond à la ligne cout << "Ready";. Les symboles Début et Fin organisent la séquence, mais seule l’étape de sortie envoie un texte visible à l’écran.
Gardez en tête ces vérifications de syntaxe :
- le texte à afficher doit rester entre guillemets doubles
- chaque instruction doit se terminer par un point-virgule
- les accolades ouvrantes et fermantes doivent correspondre
من السهل في البداية الخلط بين التعليقات والمخرجات لأن كليهما يظهر على شكل نص داخل الملف المصدر. لكن لكل منهما وظيفة مختلفة تماماً. في C++ يبدأ الرمز // تعليقاً لسطر واحد. المترجم يتجاهل هذا التعليق بالكامل، لذلك لا يمكنه أن ينتج مخرجات أو يغيّر ما يفعله البرنامج.
أما المخطط الانسيابي فيعرض الفكرة نفسها بترتيب بصري: ابدأ، نفّذ خطوة، ثم أنهِ. في المثال أدناه، يمثّل شكل الإخراج السطر cout << "Ready";. رمزا البدء والنهاية ينظمان التسلسل، لكن خطوة الإخراج وحدها هي التي ترسل نصاً مرئياً إلى الشاشة.
تذكّر فحوص الصياغة التالية:
- النص المطلوب طباعته يجب أن يبقى بين علامتي اقتباس مزدوجتين
- كل تعليمة يجب أن تنتهي بفاصلة منقوطة
- يجب أن تتطابق الأقواس المعقوفة المفتوحة والمغلقة
If a piece of text is inside a comment, the computer ignores it. If it is inside quotes after cout <<, the program can print it.
Si un texte se trouve dans un commentaire, l’ordinateur l’ignore. S’il se trouve entre guillemets après cout <<, le programme peut l’afficher.
إذا كان النص داخل تعليق، فإن الحاسوب يتجاهله. وإذا كان بين علامتي اقتباس بعد cout <<، فيمكن للبرنامج طباعته.
Use these exercises to check three things: can you read the program skeleton, can you separate code symbols from visible output, and can you explain what the computer does with simple lines of code? When a prompt asks for exact output or exact code, answer exactly.
Utilisez ces exercices pour vérifier trois points : savez-vous lire le squelette du programme, distinguer les symboles du code de la sortie visible et expliquer ce que l’ordinateur fait avec des lignes de code simples ? Quand l’énoncé demande une sortie exacte ou un code exact, répondez exactement.
استخدم هذه التمارين لتتأكد من ثلاثة أمور: هل تستطيع قراءة هيكل البرنامج؟ وهل تميّز بين رموز الكود والمخرجات الظاهرة؟ وهل تستطيع شرح ما يفعله الحاسوب مع الأسطر البسيطة؟ عندما يطلب منك السؤال مخرجات دقيقة أو كوداً دقيقاً، فأجب بالشكل نفسه تماماً.
Hello.Hello.Hello.yes or no.oui ou non.نعم أو لا.cout << "Hello";cout << "Hello";cout << "Hello";return 0; report successful termination? Type yes or no.return 0; signale une fin correcte ? Tapez oui ou non.return 0; إلى انتهاء ناجح؟ اكتب نعم أو لا.Recap: the mental model
Synthèse : le modèle mental
ملخص: النموذج الذهني
Keep this model in your head: setup lines prepare names, main() contains the work, quoted text is what can be printed, comments are for humans, and return 0; reports success. If you can read those roles clearly, later C++ lessons become much easier to follow.
Gardez ce modèle en tête : les lignes de préparation rendent des noms disponibles, main() contient le travail exécuté, le texte entre guillemets est ce qui peut être affiché, les commentaires sont pour les humains et return 0; signale une réussite. Si vous distinguez clairement ces rôles, les leçons C++ suivantes seront bien plus faciles à suivre.
احتفظ بهذا النموذج في ذهنك: أسطر التهيئة تجهّز الأسماء، وmain() تحتوي العمل الذي يُنفّذ، والنص بين علامتي الاقتباس هو ما يمكن طباعته، والتعليقات مخصّصة للبشر، وreturn 0; تعلن النجاح. إذا استطعت قراءة هذه الأدوار بوضوح، فستصبح دروس C++ اللاحقة أسهل بكثير.
#include <iostream>andusing namespace std;prepare names such ascoutfor use.#include <iostream>etusing namespace std;préparent des noms commecoutpour l'utilisation.#include <iostream>وusing namespace std;يجهزان أسماء مثلcoutللاستخدام.main()is where execution begins, and braces mark the body that runs.main()est l'endroit où l'exécution commence, et les accolades délimitent le corps exécuté.main()هي المكان الذي يبدأ منه التنفيذ، والأقواس المعقوفة تحدد الجسم الذي يعمل.- A line such as
cout << "Hello";prints text because the text is written as a quoted string literal.Une ligne commecout << "Hello";affiche du texte parce que ce texte est écrit comme un littéral de chaîne entre guillemets.سطر مثلcout << "Hello";يطبع نصاً لأن النص مكتوب كسلسلة نصية بين علامتي اقتباس. - Comments are for people, and
return 0;tells the operating system the program ended successfully.Les commentaires sont pour les humains, etreturn 0;indique au système d'exploitation que le programme s'est terminé avec succès.التعليقات موجهة للبشر، وreturn 0;تخبر نظام التشغيل أن البرنامج انتهى بنجاح.