★ À maîtriser
📌 Une application informatique doit être optimisée selon des critères spécifiques tels que le temps d’exécution, la précision et la consommation de ressources.
Compléments
Concevoir → coder → tester → intégrer
★ À maîtriser
Compléments
Les suffixes des fichiers sont: .c pour les fichiers source, .i pour les fichiers prétraités, .s pour les fichiers assembleur, .o pour les fichiers objet, .a pour les fichiers objets de bibliothèques précompilées
Avec GCC, la commande gcc -Wall -std=c23 hello.c -o hello réalise en une seule commande la compilation et la production de l’exécutable hello avec les avertissements activés et la norme C23.
Préprocesseur → compilation → assemblage → édition de liens
★ À maîtriser
📌 Un identificateur C peut contenir des lettres, des chiffres et des caractères de soulignement, mais ne peut pas commencer par un chiffre ni être un mot-clé du langage.
📌 Une chaîne de caractères C est un tableau de caractères terminé en mémoire par le caractère \0.
📌 Les opérateurs logiques &&, || et ! manipulent des conditions booléennes, tandis que les opérateurs bit à bit &, |, ^, ~, << et >> manipulent les représentations binaires.
Compléments
Syntaxe = forme du code ; sémantique = sens du code
★ À maîtriser
📌 En C, la valeur 0 est fausse et toute valeur différente de 0 est vraie dans une condition.
L’instruction if exécute une première instruction si l’expression est vraie et, avec else, une seconde instruction si l’expression est fausse.
L’instruction switch exécute la liste d’instructions associée à la constante correspondant à l’expression, ou la branche default si aucune constante ne correspond.
La boucle while peut n’exécuter aucune fois son instruction si la condition est fausse au départ, tandis que la boucle do while l’exécute au moins une fois car sa condition est testée à la fin.
Dans main(int argc, char *argv[]), argc donne le nombre d’éléments de la ligne de commande et argv contient ces éléments sous forme d’un tableau de chaînes, argv[0] étant le nom de la commande.
Compléments
while peut ne jamais entrer ; do while exécute au moins une fois
★ À maîtriser
📌 Tous les fichiers de code Go présentés dans le support doivent commencer par la ligne package main.
Compléments
Un programme Go démarre dans package main et s’exécute depuis func main
📌 Un programme Go standard commence par package main, importe éventuellement une bibliothèque comme fmt, et le code exécuté au lancement se trouve dans la fonction main.
📌 En Go, une variable se déclare avec var suivi de son nom et de son type, qui est fixé définitivement après la déclaration.
Les types int, bool et string représentent respectivement un entier, un booléen et une chaîne de caractères.
Les valeurs par défaut sont 0 pour int, false pour bool et la chaîne vide "" pour string.
📌 En Go, toute variable déclarée doit être utilisée ensuite, et une bibliothèque importée doit également être utilisée dans le programme.
📌 L’affectation utilise le signe = : var n int = 1 initialise une variable lors de sa déclaration, tandis que n = 2 modifie une variable déjà déclarée.
📌 Les comparaisons >, >=, <, <=, == et != s’appliquent aux entiers et produisent un résultat booléen.
Déclarer → affecter → calculer
★ À maîtriser
📌 Un tableau d’entiers se déclare avec le type []int et peut être initialisé avec une notation comme []int{1, 2, 3}.
📌 On accède à une case d’un tableau avec son index entre crochets, et la première case porte toujours l’index 0.
Compléments
📌 L’affectation t[i] = valeur modifie uniquement la case d’index i du tableau t.
Un tableau de cases numérotées à partir de 0
★ À maîtriser
📌 Une variable déclarée dans l’initialisation d’une boucle for n’est plus accessible après la fin de cette boucle.
Compléments
📌 Le raccourci i++ augmente la valeur de i de 1.
Une boucle for sans initialisation ni mise à jour peut utiliser seulement une condition, comme dans for reste >= diviseur, et répéter les soustractions jusqu’à ce que la condition devienne fausse.
Le type float64 représente les nombres décimaux et une valeur comme 12.5 s’écrit avec un point comme séparateur décimal.
Initialiser → tester → exécuter → mettre à jour
★ À maîtriser
📌 Dans if condition {code1} else {code2}, code1 est exécuté lorsque la condition est vraie et code2 lorsqu’elle est fausse.
📌 Le mot clé break termine immédiatement la boucle dans laquelle il est rencontré, tandis que continue termine seulement l’itération courante et passe à la suivante.
Compléments
📌 La partie else est facultative : si elle est absente, le code du if est exécuté seulement lorsque la condition est vraie.
if vérifie une condition, else traite le contraire
★ À maîtriser
📌 Une fonction Go se déclare avec func, son nom, ses arguments typés, le type de retour éventuel et un bloc entre accolades.
Compléments
La fonction f(x int) bool { return x < 10 } reçoit un entier et retourne true lorsque cet entier est strictement inférieur à 10.
Une fonction peut recevoir plusieurs arguments séparés par des virgules, et leurs valeurs sont fournies dans le même ordre lors de l’appel.
Une fonction peut retourner plusieurs valeurs en indiquant leurs types entre parenthèses et en les récupérant dans des variables séparées par des virgules.
Les champs d’une structure peuvent être initialisés par leur nom, modifiés indépendamment avec la notation pointée et prennent leur valeur par défaut s’ils ne sont pas initialisés.
Un type structuré ou un champ dont le nom commence par une majuscule est accessible depuis d’autres paquets, tandis qu’un nom commençant par une minuscule reste local au paquet.
Une fonction transforme des arguments en résultats, une structure regroupe des champs
★ À maîtriser
En Go, les arguments sont passés par valeur : la fonction reçoit une copie de la valeur et ne modifie pas directement la variable utilisée lors de l’appel.
Pour obtenir l’adresse d’une variable n, on écrit &n, et pour déréférencer un pointeur a afin d’accéder à la valeur située à son adresse, on écrit *a.
Une fonction peut modifier la variable reçue indirectement en prenant un pointeur en argument et en modifiant la valeur déréférencée, par exemple avec *a = 5.
Compléments
📌 Les types de pointeurs s’écrivent avec une étoile devant le type, ainsi *int est un pointeur vers un entier et **int est un pointeur vers un pointeur vers un entier.
Une variable contient une valeur, un pointeur contient son adresse
★ À maîtriser
📌 Une méthode peut modifier la variable à laquelle elle s’applique seulement si son récepteur est un pointeur, car le passage des arguments se fait par valeur.
Compléments
📌 En Go, on ne peut définir une méthode que sur un type défini dans le même paquet, mais on peut créer un nouveau type correspondant aux entiers et lui associer une méthode.
Méthode avec valeur pour lire, méthode avec pointeur pour modifier
📌 Un array est un tableau de taille fixe dont la longueur fait partie du type, tandis qu’un slice est un tableau de taille variable représenté par une taille, une capacité et un pointeur vers un array.
📌 Les arrays sont des valeurs normales passées par valeur aux fonctions, donc la modification de la copie reçue ne modifie pas l’array d’origine.
📌 Un slice obtenu par découpage partage le même array sous-jacent que le slice de départ, de sorte que modifier l’un peut modifier l’autre.
Array copie ses cases, slice partage un array sous-jacent
★ À maîtriser
📌 La fonction make crée un slice en recevant son type et sa taille, par exemple make([]int, 5), et les éléments sont initialisés à leur valeur par défaut.
📌 La fonction copy reçoit d’abord le slice destination puis le slice source et produit une copie indépendante, de sorte qu’une modification de la destination n’affecte pas la source.
Compléments
📌 La capacité d’un slice peut être fixée comme troisième argument de make et consultée avec la fonction cap.
Capacité suffisante → partage ; capacité insuffisante → copie
★ À maîtriser
📌 La commande go run compile implicitement un fichier Go puis exécute le programme, tandis que go build produit un fichier exécutable pouvant être lancé séparément.
📌 Les arguments récupérés par un programme Go sont des chaînes de caractères, même lorsqu’ils représentent des nombres.
Compléments
📌 La bibliothèque flag permet d’associer un argument typé à une variable, de lui donner une valeur par défaut et de traiter les arguments avec flag.Parse.
Compiler, exécuter, lire, convertir
★ À maîtriser
📌 La fonction fmt.Fprintln écrit une ligne dans le fichier fourni en premier argument et retourne le nombre d’octets écrits ainsi qu’une erreur.
📌 La fonction ioutil.ReadFile lit l’intégralité d’un fichier identifié par son chemin et retourne son contenu sous forme de []byte ainsi qu’une erreur.
Compléments
Créer, écrire, ouvrir, lire, fermer
★ À maîtriser
📌 Lorsqu’une fonction prend en paramètre une interface, elle peut recevoir tout type qui implante cette interface.
Compléments
📐 Formule — Le périmètre d’un carré de côté Cote est calculé par .
📐 Formule — Le périmètre d’un cercle de rayon Rayon est calculé par .
L’interface impose des méthodes, le type concret fournit l’implantation
★ À maîtriser
📌 Lorsqu’une fonction prend en paramètre un type d’interface, tout type qui implante cette interface peut être fourni en argument.
Dans l’exemple Forme, Carre et Cercle implantent l’interface parce qu’ils possèdent chacun une méthode Perimetre() float64, ce qui permet de comparer leurs périmètres avec PlusGrandPerimetre.
Une variable de type fonction peut être déclarée avec une signature telle que func(int, int) int, qui indique deux paramètres entiers et une valeur de retour entière.
En Go, une fonction peut recevoir une autre fonction en paramètre afin d’appliquer un comportement fourni par l’appelant à des données.
La fonction sort.Slice trie un tableau selon une fonction de comparaison fournie en second paramètre, par exemple func(i, j int) bool { return t[i] < t[j] } pour un ordre croissant.
📌 Une fonction Go peut retourner une autre fonction, ce qui permet de générer une fonction à partir de paramètres puis de la réutiliser.
📌 Pour tester file.go avec le paquet testing, il faut créer un fichier file_test.go contenant des fonctions nommées Test<NomFonction> et recevant un pointeur sur testing.T.
Compléments
📐 Formule — Le périmètre d’un carré de côté c est calculé par , tandis que celui d’un cercle de rayon r est calculé par .
Une fonction anonyme peut être appelée immédiatement en plaçant ses arguments entre parenthèses à la suite de sa déclaration, puis son résultat peut être affecté à une variable.
La fonction applique(t []int, f func(x int) int) remplace chaque entier du tableau par le résultat de f appliquée à cet entier.
La fonction plusPetit(t []int) func(i, j int) bool retourne une fonction de comparaison qui utilise t pour indiquer à sort.Slice comment trier ce tableau.
Le paquet testing fournit notamment les fonctions:
La commande go test -run Etudiant lance uniquement les tests dont le nom contient Etudiant.
Une interface décrit des méthodes ; un type l’implante en les possédant toutes.
| Notation | Rôle | Exemple |
|---|---|---|
| n | Valeur d’une variable | n |
| &n | Adresse de la variable n | var a *int = &n |
| *a | Valeur située à l’adresse contenue dans a | *a = 5 |
| Propriété | Array | Slice |
|---|---|---|
| Taille | Fixe et intégrée au type | Variable |
| Passage en fonction | Par valeur | Structure contenant un pointeur |
| Mémoire | Cases directement stockées | Array sous-jacent partagé |
| Modification de l’original | Non après copie | Oui si le même array sous-jacent est partagé |
Teste tes connaissances sur Initiation au développement Go avec 60 questions à choix multiples et corrections détaillées.
1. Quelle activité décrit le mieux le développement informatique pour un client ?
2. Pour quelle raison une application informatique doit-elle être optimisée selon plusieurs critères ?
Mémorisez les concepts clés de Initiation au développement Go avec 84 flashcards interactives.
Qu'est-ce que le développement informatique ?
Concevoir, coder, tester et intégrer une solution informatique pour un client.
Selon quels critères doit-on optimiser une application informatique ?
Le temps d’exécution, la précision et la consommation de ressources.
Quels savoirs de référence sont étudiés en développement informatique ?
Les algorithmes fondamentaux, structures de données, listes, tableaux, collections, piles, files, structures, encapsulation, modularité, qualité et fichiers.
Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.
Générateur de fiches