In order to fulfill the basic functions of our service, the user hereby agrees to allow Xiaomi to collect, process and use personal information which shall include but not be limited to written threads, pictures, comments, replies in the Mi Community, and relevant data types listed in Xiaomi's Private Policy. By selecting "Agree", you agree to Xiaomi's Private Policy and Content Policy .
Agree

Jeux/Détente

[Détente] [JeudiProg] [C] Cours 1 : Dialogue (Gagnez une médaille)

2020-06-11 18:00:00
1411 41
Bonjour à tous,

Si vous aviez manqué le Cours 0 pour l'installation de l'environnement de développement, rendez-vous ici car il est indispensable pour continuer, à moins que vous ayez déjà votre propre environnement installé sur votre ordinateur. Voici la liste des cours qui vous seront proposés, faites les dans l'ordre ;)

Cours 0 : Pré-requis et premier programmeConsulter
Cours 1 : DialogueEn cours
Cours 2 : Types de données et appels de fonctionsConsulter
Cours 3 : Opérateur ternaire et masquageConsulter
Cours 4 : Switch et premiers tableauxConsulter
Cours 5 : Incrémentation, boucles et tri de tableauConsulter
Cours 6 : Les fichiersConsulter
Cours 7 : Tableaux et matricesConsulter
Cours 8 : Chaînes de caractèresConsulter
Cours 9 : Introduction à la programmation objetConsulter




Attention : Du fait des limitations actuelles la communauté, il n'est pas possible d'afficher un code correct, c'est pourquoi je vous fournis ce fichier ZIP contenant l'ensemble des codes de ce cours. Décompressez le dans votre dossier MinGW/code/.

Cours1.zip (1.37 KB, Downloads: 21)

Rappel : Pour pouvoir compiler les fichiers, utilisez l'instruction suivante dans votre Invite de commandes où vous remplacerez bien sûr les 2 ''nom de fichier''.

  1. gcc -ansi -Wall -pedantic -o nomdefichier.exe nomdefichier.c
Copy the Code


La structure des fichiers C

Repartons de notre premier code de la semaine dernière et décomposons le :

hello.c
  1. #include ˂stdio.h˃

  2. int main(void)
  3. {
  4.   printf(ʺHello World!\nʺ);
  5.   return 0;
  6. }
Copy the Code


On retrouve ici 3 parties. La première c'est notre code minimum de C ANSI :

  1. int main(void)
  2. {
  3.   return 0;
  4. }
Copy the Code


Lorsque l'on exécute notre fichier, celui-ci va en premier lieu exécuter la fonction ''main'', en français : la fonction principale. Nous avons donc ci-dessus, la déclaration d'une fonction. On a déjà vu ici que le nom de notre fonction est ''main''.

''int'' désigne le type de données que la fonction va nous retourner, ''int'' signifie Integer, en français : un nombre entier. Et on voit ensuite que la fonction va nous retourner la valeur 0 : ''return 0;''. Ici vous voyez que ce n'est pas très utile mais c'est une obligation de la programmation en C ANSI donc conservez cette habitude.

Entre parenthèses on retrouve ''void'' qui en anglais signifie ''vide''. Ne pas le mettre reviendrait au même ... Mais de cette manière on voit qu'on ne transmet pas d'informations à la fonction car nous verrons très rapidement que l'on peut transmettre des ''paramètres'' aux fonctions.

Enfin, vous notez également la présence des accolades { et }. Elles servent tout simplement à délimiter les instructions de notre fonction : la première ligne est la déclaration de la fonction et entre les accolades on va retrouver toutes les instructions à traiter.

  1. printf(ʺHello World!\nʺ);
Copy the Code


On continue notre décomposition avec une instruction qui est en fait un ''appel'' à la fonction ''printf''. Et là, contrairement à la fonction main, on va transmettre un paramètre à la fonction printf. Ce paramètre est notre texte, notre chaîne de caractères : ''Hello World!\n''. Note : le caractère ''\n'' désigne un retour à la ligne, comme si vous appuyez sur la touche Entrée de votre clavier.

Je pense que vous l'aurez compris, le rôle de cette fonction ''printf'' est tout simplement d'afficher du texte.

  1. #include ˂stdio.h˃
Copy the Code


Mais nous n'avons pas déclaré cette fonction, il faut donc préciser à notre programme où est cette fonction et c'est pourquoi on va ''inclure'' (''include'') la librairie ''stdio.h'' qui contient la déclaration de nombreuses fonctions dont notre fonction ''printf''.

Une nouvelle fonction utile : scanf

Avec printf, nous avons vu que l'on pouvait écrire du texte sur notre invite de commandes mais on pourrait avoir besoin de poser des questions et il est nécessaire alors d'avoir une fonction pour récupérer les valeurs entrées : scanf. Plutôt qu'une longue explication de cette fonction, rentrons dans le concret et on verra les personnalisations si besoin par la suite.

scanf.c
  1. #include ˂stdio.h˃

  2. int main(void)
  3. {
  4.    int reponse;

  5.    printf(ʺAimez-vous Xiaomi ?\n1 - Oui\n2 - Non\nʺ);
  6.    scanf(ʺ%dʺ, &reponse);
  7.    printf(ʺVous avez répondu %d\nʺ, reponse);

  8.    return 0;
  9. }
Copy the Code


Nous avons ici déclaré une variable nommée ''reponse'' qui va pouvoir stocker une données. On l'appelle ''variable'' car la donnée stockée peut changer. La valeur doit toutefois forcément être un nombre entier puisque le type de notre variable est ''int''.

La fonction scanf va donc lire la valeur que l'on va entrer et la stocker dans la variable ''reponse''.

Vous voyez enfin que la fonction printf peut également servir à afficher des variables et pas uniquement un texte brut.

Vous suivez toujours ? Allons un peu plus loin ...

Les instructions conditionnelles

Dans l'exemple précédent, nous avons simplement affiché la valeur entrée, mais si on veut avoir un message personnalisé comment faire ? On va utiliser une instruction conditionnelle :

Si la valeur est 1 alors j'affiche ça ...
Sinon j'affiche ça ...

Voyons tout de suite ce que cela donnerait en version informatique dans notre code :

ifelse.c
  1. #include ˂stdio.h˃

  2. int main(void)
  3. {
  4.    int reponse;

  5.    printf(ʺAimes-tu Xiaomi ?\n1 - Oui\n2 - Non\nʺ)
  6.    scanf(ʺ%dʺ, &reponse);

  7.    if(reponse == 1) printf(ʺBravo ! Tu as tout compris !\nʺ);
  8.    else printf(ʺC'est pas grave, on t'aime quand même !\nʺ);

  9.    return 0;
  10. }
Copy the Code


Quelques opérations mathématiques

On va bien évidemment trouver toutes les opérations mathématiques usuelles en programmation.

Opération
Description
Exemple
AdditionSomme de 2 termes1 + 2 = 3
SoustractionDifférence entre 2 termes3 - 2 = 1
MultiplicationProduit de 2 facteurs4 * 5 = 20
DivisionQuotient de 2 nombres9 / 3 = 3
ModuloReste de la division euclidienne9 % 2 = 1
9 % 3 = 0


Pas trop de difficultés je pense pour les 4 premières opérations, attention toutefois à bien noter les opérateurs de la multiplication (*) et de la division (/).

Pour l'opération modulo, je sais que ça remonte très loin mais souvenez lorsque vous posiez vos divisions. Pour A divisé par B, on écrivait A en haut à gauche et B dans le carré en haut à droite. Vous obteniez alors un quotient en bas à droite et également un reste en bas à gauche. Ce reste n'était plus divisible par B. L'opération modulo vous donne donc directement ce reste (r).



Je vous montre ce que ça peut donner en code informatique :

operations.c
  1. #include ˂stdio.h˃

  2. int main(void)
  3. {
  4.    int resultat1;
  5.    int resultat2;
  6.    int resultat3;
  7.    int resultat4;
  8.    int resultat5;

  9.    resultat1 = 1+2;
  10.    printf(ʺ1 + 2 = %d\nʺ, resultat1);

  11.    resultat2 = 3-1;
  12.    printf(ʺ3 - 1 = %d\nʺ, resultat2);

  13.    resultat3 = 4*5;
  14.    printf(ʺ4 * 5 = %d\nʺ, resultat3);

  15.    resultat4 = 9/3;
  16.    printf(ʺ9 / 3 = %d\nʺ, resultat4);

  17.    resultat5 = 9%2;
  18.    printf(ʺ9 % 2 = %d\nʺ, resultat5);

  19.    return 0;
  20. }
Copy the Code


Mais nos variables sont aussi des entiers donc on pourrait très bien faire des opérations directement sur nos variables. Voici un exemple :

opvar.c
  1. #include ˂stdio.h˃

  2. int main(void)
  3. {
  4.    int quantite;
  5.    int prix;

  6.    printf(ʺCombien de capteurs de température Xiaomi souhaitez vous acheter ?\nʺ);
  7.    scanf(ʺ%dʺ, &quantite);
  8.    prix = 5*quantite;
  9.    printf(ʺVotre facture pour %d capteurs de température Xiaomi s'élève à %d€\nʺ, quantite, prix);

  10.    return 0;
  11. }
Copy the Code


Je pense avoir pas mal travaillé donc maintenant ça va être votre tour ...


Exercice - Gagnez votre médaille

A vous d'être créatif maintenant, vous avez toutes les clés en main. Vous devez concevoir un programme qui va réaliser un quizz de quelques questions ET qui va afficher le nombre de réponses correctes à la fin !
Note : La Communauté faisant encore des siennes, pour pouvoir répondre à ce post sur votre ordinateur vous devez cliquer sur le bouton ''Répondre'' juste au bas du post ou alors cliquez-ici !



Si vous n'avez pas compris quelque chose n'hésitez pas à poser vos questions en commentaires, entraidez-vous ... et toutes les réponses correctes et originales recevront une médaille !
Note : pour partager vos codes, utilisez des captures d'écran car malheureusement la communauté n'est pas encore totalement apte à partager facilement du code !




Rate

Number of participants 1 Experience +4 Pack Reason

View Rating Log

2020-06-11 18:00:00
Favorites24 RateRate
A quoi sert le %d ?
(je crois avoir trouvé, c'est pour écrire la variable que tu mets après le texte)
2020-06-11 23:31:06

Master Bunny

SRB Denis | from app

#2

merci. comme l autre fois de côté
2020-06-11 23:42:44

Moderator

GuillaumeMi Author |

#3

Newexae a posté en 2020-06-11 17:31:06
A quoi sert le %d ?
(je crois avoir trouvé, c'est pour écrire la variable que tu mets après le texte)

Oui c'est exactement ça, le ''%'' sert à dire qu'on veut afficher une variable et le ''d'' précise que c'est un entier. Il ne faut alors pas oublier d'ajouter la variable en paramètre à la fin de notre texte.

Ou dans le cas de la fonction scanf, dire qu'on veut récupérer un entier !
2020-06-11 23:54:59

Advanced Bunny

Newexae | from app

#4

Mais par contre les accents et les signes sont mal gérés, ça affiche des symboles random.
2020-06-12 00:45:07

Moderator

GuillaumeMi Author | from app

#5

Newexae
Mais par contre les accents et les signes sont mal gérés, ça affiche des symboles random.

Ça c'est rapport avec l'encodage par défaut du système. On pourra éventuellement revoir cela mais pour l'instant on pourra se passer des accents. L'important est vraiment les principes de programmation, le texte affiché est accessoire.
2020-06-12 01:11:04
Je veux résoudre les questions, mais où sont les questions
2020-06-12 02:39:44

Moderator

GuillaumeMi Author |

#7

DaMgaSea a posté en 2020-06-11 20:39:44
Je veux résoudre les questions, mais où sont les questions

C'est dans le dernier paragraphe
''Exercice - Gagnez votre médaille''
Les questions du quizz sont à réaliser soi-même, ce qui fera l'originalité du programme ;)
2020-06-12 02:41:17

Master Bunny

şaomi redmi note 8 | from Redmi Note 8

#8

Je veux résoudre les questions, mais où sont les questions
2020-06-12 02:43:48

Moderator

GuillaumeMi Author |

#9

şaomi redmi note 8 a posté en 2020-06-11 20:43:48
Je veux résoudre les questions, mais où sont les questions

Même réponse que le commentaire précédent.
2020-06-12 03:13:45

2020-06-12 04:26:06
please sign in to reply.
Sign In Sign Up

GuillaumeMi

Moderator

Check-in 3 jours
Check-in 7 jours
Check-in 21 jours
Check-in 40 jours
Check-in 70 jours
Check-in 100 jours
MiA2
SBM teaser
Mi band 3
25K
X-Men
Photography contest
30K
Tech Talent
MI9T
MIUI Geek
Three's A Party
Happy July
App Maniac
MIUI 9th Birthday
Global Community
Medalla Encuesta Mi Phone
better together slogan
Global Community
2020
Médaille des 50K
100K abo
Mi Community Üçüncü Anket Madalyası
Mi 10th Birthday Medal
Medalla #GradientsInLife
Window View
বাংলা নববর্ষ ১৪২৭
Android One
Answer Mi #3
Ulang Tahun Xiaomi ke-10
3 Tahun Mi Community
Mobile Game
App Star
Redmi 8
Bookworm
23 Nisan Kutlu Olsun!
Sondage gaming
MIUI Fan
Favorite Goalkeeper
Ramadan Kareem
Meetings from Home
Mi2U April
Lefty Star
Favorite Author
redminote8series
Streaming Geek
Favorite Actor
Favourite Football Team
200mila Mi Fans
Osneip
Redmi Note 8
Mail Lover
Radio
Super Thursday
Redmi Note 8 Series
Redmi Note 8 Pro
Coin
Chipset
Corona Awareness
Map
Redmi 8A
MIUI 12
First Smartphone
Phone Finder
2 anni insieme
Eid Mubarak
TV Series Freak
BougLo Challenge I
Mi to You May
MIUI12
Neues Zuhause
MIUI Boot Animation
200 Mil Mi Fans En México
Favorite Singer
Gadget
Favorite YouTube Channel
Art Challenge
Father's Day
Redmi Note 9S
Mother's Day
UK Community 300K Users Medal
Redmi Note 9
Cloud Storage
30 Million Redmi Note 8 Series
Redmi Note 9 Pro Feature
ContributeTogether
10 years
K2K #3
Redmi 9 Colors
200K Registered Users
2nd Anniversary
MFF2020
Nepal "Happy New Year&amp
Emoji Day
Mi To You July
Redmi Note 9S Feature
Navigation System
Médaille 6
First Anniversary
10th mi fan stories
K2K #4
Favorite Bangladeshi Food
Redmi 9A
Redmi Note 9 Pro Camera
Material Expert
Redmi 9A Feature
MIUI 12 Dark Mode
10 years
Battery Survey
Mi to You September
Agosto Cometas
Moderadores
Mi10 espacio
Facebook Reviewer
Tín đồ Poco
Display Expert
Favorite Radio Station
Top photo France
Mi UK Treasure Hunt
Captain Mitu, Treasure Finder

Read moreGet new

Mi Comm APP

Stay updated on Mi Products and MIUI

Copyright©2010-2020 Xiaomi.com, All Rights Reserved
Content Policy
Quick Reply To Top Return to the list