[{"data":1,"prerenderedAt":915},["ShallowReactive",2],{"page-\u002Fcpp\u002Fpremier-programme":3,"pieces-cpp":872,"autour-\u002Fcpp\u002Fpremier-programme":898,"prerequis-\u002Fcpp\u002Fpremier-programme":903,"plan-cpp":904},{"id":4,"title":5,"body":6,"description":844,"extension":845,"ligne":49,"meta":846,"motsCles":847,"navigation":71,"niveau":851,"path":852,"prerequis":853,"ressources":854,"seo":863,"sources":864,"stem":870,"__hash__":871},"docs\u002Fcpp\u002F01.premier-programme.md","Premier programme",{"type":7,"value":8,"toc":833},"minimark",[9,14,32,36,44,130,141,156,160,171,206,209,263,277,283,287,298,363,366,439,449,453,456,486,497,501,508,549,555,585,591,599,603,619,714,727,744,748,751,779,783,829],[10,11,13],"h2",{"id":12},"ce-que-tu-vas-apprendre","Ce que tu vas apprendre",[15,16,17,21,24],"ul",{},[18,19,20],"li",{},"Écrire, compiler et lancer un programme C++.",[18,22,23],{},"Déclarer des variables et choisir leur type.",[18,25,26,27,31],{},"Afficher du texte et lire une saisie avec ",[28,29,30],"code",{},"iostream",".",[10,33,35],{"id":34},"un-programme-minimal","Un programme minimal",[37,38,39,40,43],"p",{},"Crée un fichier ",[28,41,42],{},"recettes.cpp"," :",[45,46,51],"pre",{"className":47,"code":48,"filename":42,"language":49,"meta":50,"style":50},"language-cpp shiki shiki-themes github-light-default github-dark-default github-dark-default","#include \u003Ciostream>\n\nint main() {\n    std::cout \u003C\u003C \"Bienvenue sur le site de recettes !\\n\";\n    return 0;\n}\n","cpp","",[28,52,53,66,73,87,112,124],{"__ignoreMap":50},[54,55,58,62],"span",{"class":56,"line":57},"line",1,[54,59,61],{"class":60},"sOnC1","#include",[54,63,65],{"class":64},"shWOn"," \u003Ciostream>\n",[54,67,69],{"class":56,"line":68},2,[54,70,72],{"emptyLinePlaceholder":71},true,"\n",[54,74,76,79,83],{"class":56,"line":75},3,[54,77,78],{"class":60},"int",[54,80,82],{"class":81},"syCW7"," main",[54,84,86],{"class":85},"scfrF","() {\n",[54,88,90,94,97,100,103,106,109],{"class":56,"line":89},4,[54,91,93],{"class":92},"sIXEE","    std",[54,95,96],{"class":85},"::cout ",[54,98,99],{"class":60},"\u003C\u003C",[54,101,102],{"class":64}," \"Bienvenue sur le site de recettes !",[54,104,105],{"class":60},"\\n",[54,107,108],{"class":64},"\"",[54,110,111],{"class":85},";\n",[54,113,115,118,122],{"class":56,"line":114},5,[54,116,117],{"class":60},"    return",[54,119,121],{"class":120},"s5iOY"," 0",[54,123,111],{"class":85},[54,125,127],{"class":56,"line":126},6,[54,128,129],{"class":85},"}\n",[37,131,132,133,136,137,140],{},"La ligne ",[28,134,135],{},"#include \u003Ciostream>"," demande au compilateur d'inclure la bibliothèque d'entrées-sorties. Sans elle, ",[28,138,139],{},"std::cout"," est inconnu.",[37,142,143,146,147,151,152,155],{},[28,144,145],{},"main"," est la ",[148,149,150],"strong",{},"fonction principale"," : l'ordinateur démarre toujours le programme ici. Le ",[28,153,154],{},"return 0"," signale que tout s'est bien passé.",[10,157,159],{"id":158},"compiler-et-lancer","Compiler et lancer",[37,161,162,163,166,167,170],{},"C++ est un langage ",[148,164,165],{},"compilé"," : un programme appelé ",[148,168,169],{},"compilateur"," traduit ton code en un fichier exécutable. Avec g++ ou clang++, la commande est la même :",[45,172,176],{"className":173,"code":174,"language":175,"meta":50,"style":50},"language-bash shiki shiki-themes github-light-default github-dark-default github-dark-default","g++ -std=c++17 -Wall -Wextra recettes.cpp -o recettes\n.\u002Frecettes\n","bash",[28,177,178,201],{"__ignoreMap":50},[54,179,180,183,186,189,192,195,198],{"class":56,"line":57},[54,181,182],{"class":92},"g++",[54,184,185],{"class":120}," -std=c++17",[54,187,188],{"class":120}," -Wall",[54,190,191],{"class":120}," -Wextra",[54,193,194],{"class":64}," recettes.cpp",[54,196,197],{"class":120}," -o",[54,199,200],{"class":64}," recettes\n",[54,202,203],{"class":56,"line":68},[54,204,205],{"class":92},".\u002Frecettes\n",[37,207,208],{},"Décryptage des options :",[210,211,212,225],"table",{},[213,214,215],"thead",{},[216,217,218,222],"tr",{},[219,220,221],"th",{},"Option",[219,223,224],{},"Rôle",[226,227,228,243,253],"tbody",{},[216,229,230,236],{},[231,232,233],"td",{},[28,234,235],{},"-std=c++17",[231,237,238,239,242],{},"Choisit la version du langage (",[28,240,241],{},"-std=c++20"," pour C++20).",[216,244,245,250],{},[231,246,247],{},[28,248,249],{},"-Wall -Wextra",[231,251,252],{},"Active les avertissements utiles.",[216,254,255,260],{},[231,256,257],{},[28,258,259],{},"-o recettes",[231,261,262],{},"Nomme l'exécutable produit.",[37,264,265,266,269,270,273,274,276],{},"Sous Windows, l'exécutable s'appelle ",[28,267,268],{},"recettes.exe"," et se lance avec ",[28,271,272],{},".\\recettes",". Dans tous les cours de cette ligne, on compile avec ",[28,275,235],{}," au minimum.",[278,279,280],"tip",{},[37,281,282],{},"Lis toujours les avertissements du compilateur. Ils signalent souvent un vrai bug avant même que tu lances le programme.",[10,284,286],{"id":285},"les-variables","Les variables",[37,288,289,290,293,294,297],{},"Une ",[148,291,292],{},"variable"," est un nom associé à une valeur en mémoire. En C++, chaque variable a un ",[148,295,296],{},"type"," fixé à sa déclaration :",[45,299,301],{"className":47,"code":300,"language":49,"meta":50,"style":50},"int nbPersonnes = 4;\ndouble prix = 12.5;\nchar initiale = 'T';\nbool vegetarien = true;\n",[28,302,303,318,333,348],{"__ignoreMap":50},[54,304,305,307,310,313,316],{"class":56,"line":57},[54,306,78],{"class":60},[54,308,309],{"class":85}," nbPersonnes ",[54,311,312],{"class":60},"=",[54,314,315],{"class":120}," 4",[54,317,111],{"class":85},[54,319,320,323,326,328,331],{"class":56,"line":68},[54,321,322],{"class":60},"double",[54,324,325],{"class":85}," prix ",[54,327,312],{"class":60},[54,329,330],{"class":120}," 12.5",[54,332,111],{"class":85},[54,334,335,338,341,343,346],{"class":56,"line":75},[54,336,337],{"class":60},"char",[54,339,340],{"class":85}," initiale ",[54,342,312],{"class":60},[54,344,345],{"class":64}," 'T'",[54,347,111],{"class":85},[54,349,350,353,356,358,361],{"class":56,"line":89},[54,351,352],{"class":60},"bool",[54,354,355],{"class":85}," vegetarien ",[54,357,312],{"class":60},[54,359,360],{"class":120}," true",[54,362,111],{"class":85},[37,364,365],{},"Les types de base à connaître :",[210,367,368,381],{},[213,369,370],{},[216,371,372,375,378],{},[219,373,374],{},"Type",[219,376,377],{},"Contenu",[219,379,380],{},"Exemple",[226,382,383,397,411,425],{},[216,384,385,389,392],{},[231,386,387],{},[28,388,78],{},[231,390,391],{},"Nombre entier",[231,393,394],{},[28,395,396],{},"42",[216,398,399,403,406],{},[231,400,401],{},[28,402,322],{},[231,404,405],{},"Nombre à virgule",[231,407,408],{},[28,409,410],{},"3.14",[216,412,413,417,420],{},[231,414,415],{},[28,416,337],{},[231,418,419],{},"Un seul caractère",[231,421,422],{},[28,423,424],{},"'a'",[216,426,427,431,434],{},[231,428,429],{},[28,430,352],{},[231,432,433],{},"Vrai ou faux",[231,435,436],{},[28,437,438],{},"true",[37,440,441,442,445,446,448],{},"Pour du texte, on utilise ",[28,443,444],{},"std::string",", vue au cours 03. Les types numériques ont une taille limitée : un ",[28,447,78],{}," ne peut pas contenir n'importe quel entier.",[10,450,452],{"id":451},"initialiser-avec-des-accolades","Initialiser avec des accolades",[37,454,455],{},"Une variable non initialisée contient une valeur imprévisible. Prends l'habitude de toujours lui donner une valeur.",[45,457,459],{"className":47,"code":458,"language":49,"meta":50,"style":50},"int portions{4};\ndouble sel{2.5};\n",[28,460,461,474],{"__ignoreMap":50},[54,462,463,465,468,471],{"class":56,"line":57},[54,464,78],{"class":60},[54,466,467],{"class":85}," portions{",[54,469,470],{"class":120},"4",[54,472,473],{"class":85},"};\n",[54,475,476,478,481,484],{"class":56,"line":68},[54,477,322],{"class":60},[54,479,480],{"class":85}," sel{",[54,482,483],{"class":120},"2.5",[54,485,473],{"class":85},[37,487,488,489,492,493,496],{},"Cette forme avec accolades refuse les conversions qui perdent de l'information. Par exemple ",[28,490,491],{},"int x{2.5};"," est une erreur de compilation, alors que ",[28,494,495],{},"int x = 2.5;"," tronque en silence.",[10,498,500],{"id":499},"auto-et-const","auto et const",[37,502,503,504,507],{},"Le mot-clé ",[28,505,506],{},"auto"," laisse le compilateur déduire le type à partir de la valeur :",[45,509,511],{"className":47,"code":510,"language":49,"meta":50,"style":50},"auto duree = 45;      \u002F\u002F int\nauto note = 4.5;      \u002F\u002F double\n",[28,512,513,532],{"__ignoreMap":50},[54,514,515,517,520,522,525,528],{"class":56,"line":57},[54,516,506],{"class":60},[54,518,519],{"class":85}," duree ",[54,521,312],{"class":60},[54,523,524],{"class":120}," 45",[54,526,527],{"class":85},";",[54,529,531],{"class":530},"sd6ml","      \u002F\u002F int\n",[54,533,534,536,539,541,544,546],{"class":56,"line":68},[54,535,506],{"class":60},[54,537,538],{"class":85}," note ",[54,540,312],{"class":60},[54,542,543],{"class":120}," 4.5",[54,545,527],{"class":85},[54,547,548],{"class":530},"      \u002F\u002F double\n",[37,550,503,551,554],{},[28,552,553],{},"const"," rend une variable non modifiable après son initialisation :",[45,556,558],{"className":47,"code":557,"language":49,"meta":50,"style":50},"const int tempsCuisson = 30;\n\u002F\u002F tempsCuisson = 40;  \u002F\u002F erreur de compilation\n",[28,559,560,577],{"__ignoreMap":50},[54,561,562,564,567,570,572,575],{"class":56,"line":57},[54,563,553],{"class":60},[54,565,566],{"class":60}," int",[54,568,569],{"class":85}," tempsCuisson ",[54,571,312],{"class":60},[54,573,574],{"class":120}," 30",[54,576,111],{"class":85},[54,578,579,582],{"class":56,"line":68},[54,580,581],{"class":530},"\u002F\u002F tempsCuisson = 40;",[54,583,584],{"class":530},"  \u002F\u002F erreur de compilation\n",[37,586,587,588,590],{},"Utilise ",[28,589,553],{}," dès que la valeur ne doit pas changer. Le compilateur te protège alors de toi-même.",[592,593,594],"note",{},[37,595,596,598],{},[28,597,506],{}," ne rend pas C++ dynamique. Le type est bien fixé à la compilation, il est simplement déduit.",[10,600,602],{"id":601},"afficher-et-lire","Afficher et lire",[37,604,605,607,608,611,612,614,615,618],{},[28,606,139],{}," affiche, ",[28,609,610],{},"std::cin"," lit. Les opérateurs ",[28,613,99],{}," et ",[28,616,617],{},">>"," indiquent le sens de circulation des données :",[45,620,622],{"className":47,"code":621,"filename":42,"language":49,"meta":50,"style":50},"#include \u003Ciostream>\n\nint main() {\n    int nbPersonnes{};\n    std::cout \u003C\u003C \"Pour combien de personnes ? \";\n    std::cin >> nbPersonnes;\n    std::cout \u003C\u003C \"Il faut \" \u003C\u003C nbPersonnes * 2 \u003C\u003C \" oeufs.\\n\";\n}\n",[28,623,624,630,634,642,650,663,675,709],{"__ignoreMap":50},[54,625,626,628],{"class":56,"line":57},[54,627,61],{"class":60},[54,629,65],{"class":64},[54,631,632],{"class":56,"line":68},[54,633,72],{"emptyLinePlaceholder":71},[54,635,636,638,640],{"class":56,"line":75},[54,637,78],{"class":60},[54,639,82],{"class":81},[54,641,86],{"class":85},[54,643,644,647],{"class":56,"line":89},[54,645,646],{"class":60},"    int",[54,648,649],{"class":85}," nbPersonnes{};\n",[54,651,652,654,656,658,661],{"class":56,"line":114},[54,653,93],{"class":92},[54,655,96],{"class":85},[54,657,99],{"class":60},[54,659,660],{"class":64}," \"Pour combien de personnes ? \"",[54,662,111],{"class":85},[54,664,665,667,670,672],{"class":56,"line":126},[54,666,93],{"class":92},[54,668,669],{"class":85},"::cin ",[54,671,617],{"class":60},[54,673,674],{"class":85}," nbPersonnes;\n",[54,676,678,680,682,684,687,690,692,695,698,700,703,705,707],{"class":56,"line":677},7,[54,679,93],{"class":92},[54,681,96],{"class":85},[54,683,99],{"class":60},[54,685,686],{"class":64}," \"Il faut \"",[54,688,689],{"class":60}," \u003C\u003C",[54,691,309],{"class":85},[54,693,694],{"class":60},"*",[54,696,697],{"class":120}," 2",[54,699,689],{"class":60},[54,701,702],{"class":64}," \" oeufs.",[54,704,105],{"class":60},[54,706,108],{"class":64},[54,708,111],{"class":85},[54,710,712],{"class":56,"line":711},8,[54,713,129],{"class":85},[37,715,716,717,719,720,722,723,726],{},"On peut enchaîner plusieurs ",[28,718,99],{}," sur une même ligne. Le ",[28,721,105],{}," passe à la ligne suivante, comme ",[28,724,725],{},"std::endl"," qui vide en plus le tampon d'affichage.",[37,728,729,730,733,734,736,737,740,741,743],{},"Les accolades vides ",[28,731,732],{},"{}"," initialisent l'entier à zéro. Ici ",[28,735,145],{}," n'a pas de ",[28,738,739],{},"return"," : C++ en ajoute un ",[28,742,154],{}," implicite pour cette fonction.",[10,745,747],{"id":746},"erreurs-fréquentes","Erreurs fréquentes",[37,749,750],{},"Quand le programme ne compile pas, le compilateur donne le fichier, la ligne et la raison. Lis le premier message d'erreur, corrige-le, recompile. Les suivants en sont souvent la conséquence.",[752,753,754,760,765],"ol",{},[18,755,756,757,759],{},"Oubli du ",[28,758,527],{}," en fin d'instruction.",[18,761,762,763,31],{},"Oubli de ",[28,764,135],{},[18,766,767,768,771,772,775,776,31],{},"Oubli du préfixe ",[28,769,770],{},"std::"," devant ",[28,773,774],{},"cout"," ou ",[28,777,778],{},"cin",[10,780,782],{"id":781},"à-retenir","À retenir",[15,784,785,791,797,809,812,820],{},[18,786,787,788,790],{},"Un programme C++ part de la fonction ",[28,789,145],{}," et se compile avant d'être lancé.",[18,792,793,794,31],{},"Commande type : ",[28,795,796],{},"g++ -std=c++17 -Wall -Wextra fichier.cpp -o programme",[18,798,799,800,802,803,802,805,802,807,31],{},"Chaque variable a un type fixe : ",[28,801,78],{},", ",[28,804,322],{},[28,806,337],{},[28,808,352],{},[18,810,811],{},"Initialise toujours tes variables, avec des accolades si possible.",[18,813,814,816,817,819],{},[28,815,553],{}," protège une valeur, ",[28,818,506],{}," déduit le type.",[18,821,822,607,825,828],{},[28,823,824],{},"std::cout \u003C\u003C ...",[28,826,827],{},"std::cin >> ..."," lit.",[830,831,832],"style",{},"html pre.shiki code .sOnC1, html code.shiki .sOnC1{--shiki-light:#CF222E;--shiki-default:#FF7B72;--shiki-dark:#FF7B72}html pre.shiki code .shWOn, html code.shiki .shWOn{--shiki-light:#0A3069;--shiki-default:#A5D6FF;--shiki-dark:#A5D6FF}html pre.shiki code .syCW7, html code.shiki .syCW7{--shiki-light:#8250DF;--shiki-default:#D2A8FF;--shiki-dark:#D2A8FF}html pre.shiki code .scfrF, html code.shiki .scfrF{--shiki-light:#1F2328;--shiki-default:#E6EDF3;--shiki-dark:#E6EDF3}html pre.shiki code .sIXEE, html code.shiki .sIXEE{--shiki-light:#953800;--shiki-default:#FFA657;--shiki-dark:#FFA657}html pre.shiki code .s5iOY, html code.shiki .s5iOY{--shiki-light:#0550AE;--shiki-default:#79C0FF;--shiki-dark:#79C0FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sd6ml, html code.shiki .sd6ml{--shiki-light:#6E7781;--shiki-default:#8B949E;--shiki-dark:#8B949E}",{"title":50,"searchDepth":68,"depth":75,"links":834},[835,836,837,838,839,840,841,842,843],{"id":12,"depth":68,"text":13},{"id":34,"depth":68,"text":35},{"id":158,"depth":68,"text":159},{"id":285,"depth":68,"text":286},{"id":451,"depth":68,"text":452},{"id":499,"depth":68,"text":500},{"id":601,"depth":68,"text":602},{"id":746,"depth":68,"text":747},{"id":781,"depth":68,"text":782},"Compiler et lancer un premier programme C++, puis manipuler variables, types de base et entrées-sorties avec iostream.","md",{},[182,848,145,30,139,610,849,850,506],"compilation","variables","types","debutant","\u002Fcpp\u002Fpremier-programme",null,[855,859],{"nom":856,"url":857,"type":858},"OpenClassrooms, Apprenez à programmer en C++","https:\u002F\u002Fopenclassrooms.com\u002Ffr\u002Fcourses\u002F1894236-programmez-avec-le-langage-c","cours",{"nom":860,"url":861,"type":862},"cppreference.com, référence C++ en français","https:\u002F\u002Ffr.cppreference.com\u002Fw\u002Fcpp","doc",{"title":5,"description":844},[865,867],{"nom":866,"url":861},"cppreference.com, référence C++ (version française partielle)",{"nom":868,"url":869},"isocpp.org, Standard C++ Foundation (en anglais)","https:\u002F\u002Fisocpp.org\u002F","cpp\u002F01.premier-programme","ILnTA44-nFk1elSPl8xqqDU3Qa42DbsjejufgiYjGDk",[873,874,878,882,886,890,894],{"path":852,"title":5,"stem":870},{"path":875,"title":876,"stem":877},"\u002Fcpp\u002Fconditions-boucles-fonctions","Conditions, boucles et fonctions","cpp\u002F02.conditions-boucles-fonctions",{"path":879,"title":880,"stem":881},"\u002Fcpp\u002Fstring-et-vector","std::string et std::vector","cpp\u002F03.string-et-vector",{"path":883,"title":884,"stem":885},"\u002Fcpp\u002Freferences-et-pointeurs","Références et pointeurs","cpp\u002F04.references-et-pointeurs",{"path":887,"title":888,"stem":889},"\u002Fcpp\u002Fclasses-et-raii","Classes, constructeurs et RAII","cpp\u002F05.classes-et-raii",{"path":891,"title":892,"stem":893},"\u002Fcpp\u002Fmemoire-et-bibliotheque","Mémoire, pointeurs intelligents et bibliothèque standard","cpp\u002F06.memoire-et-bibliotheque",{"path":895,"title":896,"stem":897},"\u002Fcpp","C++","cpp\u002Findex",[899,901],{"title":896,"path":895,"stem":897,"description":900,"children":-1},"Le mémo de C++ moderne : compilation, types, fonctions, conteneurs, références, classes, pointeurs intelligents et algorithmes.",{"title":876,"path":875,"stem":877,"description":902,"children":-1},"Prendre des décisions avec if et switch, répéter avec for et while, et découper un programme en fonctions.",[],[905,906,907,908,910,911,913],{"path":852,"title":5,"niveau":851,"stem":870},{"path":875,"title":876,"niveau":851,"stem":877},{"path":879,"title":880,"niveau":851,"stem":881},{"path":883,"title":884,"niveau":909,"stem":885},"intermediaire",{"path":887,"title":888,"niveau":909,"stem":889},{"path":891,"title":892,"niveau":912,"stem":893},"avance",{"path":895,"title":896,"niveau":914,"stem":897},"memo",1794583454286]