Lernzettel: Introduction aux commandes Git, tests unitaires en C, pointeurs de fonction, multiprocessus et

📋 Plan du Cours

  1. Commandes Git pour la gestion des branches et des commits
  2. Utilisation de Criterion pour les tests unitaires en C
  3. Déclaration et utilisation des pointeurs de fonction en C
  4. Concepts de multiprocessus en programmation
  5. Lexing et parsing en analyse syntaxique

📖 1. Commandes Git pour la gestion des branches et des commits

🔑 Notions clés & Définitions

  • branche : ligne de développement séparée dans Git, créée et manipulée par des commandes comme git switch -c ou git branch -D.
  • commit : enregistrement d’un état du travail dans l’historique, que l’on peut modifier avec git commit --amend ou appliquer depuis une autre branche avec git cherry-pick <commit-hash>.
  • Combine deux branches avec : opération de fusion qui réunit deux branches ; la source associe cette idée à git rebase dans la proposition « Combine deux branches avec un merge commit », mais la bonne réponse indiquée est le rejet de cette formulation au profit du rebase.
  • deux branches avec un merge : fusion de deux branches par une opération de merge ; la source la distingue du rebase, qui ne crée pas de merge commit.
  • branches avec un merge commit : résultat d’une fusion qui produit un commit de merge ; la source précise que git rebase ne correspond pas à cela.

📝 Points essentiels

  • git switch -c feature/payment crée une branche et bascule dessus en une seule fois.
  • git branch -D nom_branche supprime une branche de force.
  • En cas de conflit, Git insère les marqueurs <<<<<<<, =======, >>>>>>>.
  • git rebase rejoue les commits par-dessus une autre branche.
  • git stash met de côté les modifications non commitées.
  • git commit --amend modifie le dernier commit.
  • git cherry-pick <commit-hash> applique un commit spécifique d’une autre branche sur la branche courante.

💡 À retenir

  • Retenir les commandes de base comme des opérations ciblées sur l’historique, la branche courante et l’état de travail.
  • rebase, stash, amend et cherry-pick agissent chacun sur un aspect précis : l’ordre des commits, les modifications non commitées, le dernier commit ou un commit isolé.

📖 2. Utilisation de Criterion pour les tests unitaires en C

🔑 Notions clés & Définitions

  • Criterion : Fois linké à un programme ?

📝 Points essentiels

  • Quel flag faut-il passer à gcc pour compiler avec Criterion ?
  • Une fois linké à un programme, Criterion remplace la main par une CLI.

💡 À retenir

Quel flag faut-il passer à gcc pour compiler avec Criterion ?

📖 3. Déclaration et utilisation des pointeurs de fonction en C

🔑 Notions clés & Définitions

  • Pointeur de fonction : Type de pointeur destiné à une fonction recevant deux paramètres, ici deux int dans le contexte fourni.

📝 Points essentiels

  • La déclaration d’un pointeur de fonction prenant deux int et retournant un int s’écrit int (*op)(int, int).
  • Pour assigner la fonction add à un pointeur op, quelles syntaxes sont valides ?

💡 À retenir

La forme à mémoriser est int (*op)(int, int) pour un pointeur vers une fonction prenant deux int et renvoyant un int. L’affectation peut se faire avec add ou &add, et typedef sert à rendre ce type plus lisible.

📖 4. Concepts de multiprocessus en programmation

🔑 Notions clés & Définitions

  • processus : flot d’exécution d’un programme, utilisé ici pour comprendre la duplication du flot d’exécution en multiprocessus.
  • processus zombie : processus terminé mais non libéré.
  • Deux fois c) Zéro fois : item de QCM portant sur le nombre de retours de fork() après un appel réussi.
  • Zéro fois d) Trois fois : item de QCM portant sur le nombre de retours de fork() après un appel réussi.
  • fois fork() retourne-t-il après : question de révision sur le nombre de retours de fork() après un appel réussi.

📝 Points essentiels

  • Après un appel réussi, fork() retourne deux fois.
  • Un processus zombie est un processus terminé mais non libéré.

💡 À retenir

Le multiprocessus se comprend par la duplication du flot d’exécution : après un appel réussi, fork() retourne deux fois. La fin de vie des processus compte aussi, car un processus zombie est un processus terminé mais non libéré.

📖 5. Lexing et parsing en analyse syntaxique

🔑 Notions clés & Définitions

  • Recursive Descent Parsing : technique de parsing utilisée pour les expressions mathématiques.
  • LALR parsing : technique de parsing proposée dans les choix, sans indication de définition dans la source.
  • LL(1) parsing : technique de parsing proposée dans les choix, sans indication de définition dans la source.

📝 Points essentiels

  • Un lexer transforme une string en liste de tokens.
  • Le parsing utilisé pour les expressions mathématiques est le Recursive Descent Parsing.

💡 À retenir

  • Le lexer découpe l’entrée en tokens, tandis que le parsing organise la structure syntaxique.
  • Pour les expressions mathématiques, la technique indiquée est le Recursive Descent Parsing.

🧩 Compléments de couverture

  1. La macro Test(suite_name, test_name) déclare un test unitaire dans une suite.
  2. Quelle est la syntaxe d'une assertion d'égalité sur deux entiers 32 bits ?
  3. SET 1 - 20 questions Git 1. Quelle commande crée une branche et bascule dessus en une seule fois ? a) git.

📊 Tableaux de Synthèse

ThèmeÉlémentÀ retenir
Git branches et commitsBrancheLigne de développement séparée, créée/manipulée par git switch -c ou git branch -D
Git branches et commitsCommitEnregistrement d’un état du travail dans l’historique
Git branches et commitsgit switch -c feature/paymentCrée une branche et bascule dessus en une seule fois
Git branches et commitsgit branch -D nom_brancheSupprime une branche de force
Git branches et commitsgit commit --amendModifie le dernier commit
Git branches et commitsgit cherry-pick <commit-hash>Applique un commit spécifique d’une autre branche sur la branche courante
Git branches et commitsgit rebaseRejoue les commits par-dessus une autre branche
Git branches et commitsgit stashMet de côté les modifications non commitées
Git branches et commitsConflit GitMarqueurs <<<<<<<, =======, >>>>>>>
Pointeurs de fonction en CPointeur de fonctionType de pointeur destiné à une fonction recevant deux paramètres, ici deux int
Pointeurs de fonction en CDéclarationint (*op)(int, int)
Pointeurs de fonction en CAffectation valideAvec add ou &add
Pointeurs de fonction en CRôle de typedefRendre le type plus lisible
MultiprocessusProcessusFlot d’exécution d’un programme
Multiprocessusfork() réussiRetourne deux fois
MultiprocessusProcessus zombieProcessus terminé mais non libéré
Lexing / parsingLexerTransforme une string en liste de tokens
Lexing / parsingParsing des expressions mathématiquesRecursive Descent Parsing

⚠️ Pièges & Confusions Fréquentes

  • Confondre git rebase avec un merge commit : la source distingue les deux.
  • Oublier que git commit --amend modifie seulement le dernier commit.
  • Confondre git stash avec un commit : il met de côté des modifications non commitées.
  • Croire que git cherry-pick fusionne des branches : il applique un commit isolé.
  • Oublier les marqueurs exacts d’un conflit Git : <<<<<<<, =======, >>>>>>>.
  • Confondre pointeur de fonction et appel de fonction : la forme correcte est int (*op)(int, int).
  • Mélanger lexer et parsing : le lexer produit des tokens, le parsing organise la structure syntaxique.

✅ Checklist Examen

  • Savoir définir une branche Git et citer ses commandes associées.
  • Savoir définir un commit et citer git commit --amend.
  • Savoir expliquer l’effet de git switch -c feature/payment.
  • Savoir expliquer l’effet de git branch -D nom_branche.
  • Savoir reconnaître les marqueurs d’un conflit Git.
  • Savoir distinguer rebase, stash, amend et cherry-pick.
  • Savoir écrire la déclaration int (*op)(int, int).
  • Savoir dire comment affecter une fonction à un pointeur avec add ou &add.
  • Savoir expliquer le rôle de typedef pour les pointeurs de fonction.
  • Savoir définir un processus et un processus zombie.
  • Savoir que, après un appel réussi, fork() retourne deux fois.
  • Savoir que le lexer transforme une string en liste de tokens et que le Recursive Descent Parsing est utilisé pour les expressions mathématiques.

Teste dein Wissen

Teste dein Wissen zu Introduction aux commandes Git, tests unitaires en C, pointeurs de fonction, multiprocessus et mit 5 Multiple-Choice-Fragen mit detaillierten Korrekturen.

1. Quel effet le parsing a-t-il sur l’entrée après le découpage en tokens ?

2. Quel effet a le fait de lier Criterion à un programme ?

Quiz machen →

Mit Karteikarten lernen

Merke dir die Schlüsselkonzepte von Introduction aux commandes Git, tests unitaires en C, pointeurs de fonction, multiprocessus et mit 10 interaktiven Karteikarten.

Git — créer une branche ?

`git switch -c` ou `git branch -D` pour supprimer

Commit — enregistrement ?

Sauvegarde de l’état du travail

`git rebase` — rôle ?

Rejoue les commits sur une autre branche

Karteikarten ansehen →

Similar courses

Erstelle deine eigenen Lernzettel

Importiere deinen Kurs und die KI erstellt in 30 Sekunden Lernzettel, Quizze und Karteikarten.

Lernzettel-Generator