Qu'est-ce qu'un algorithme de recherche classique ?
C'est un algorithme utilisé pour vérifier l’existence d’un élément, la position d’un élément, ou le nombre d’éléments selon un critère dans un tableau, liste, fichier, etc.
Quelle est la taille du tableau statique de pointeurs dans l'exemple donné ?
10 éléments.
1/195
p.2
Algorithmes de recherche

Qu'est-ce qu'un algorithme de recherche classique ?

C'est un algorithme utilisé pour vérifier l’existence d’un élément, la position d’un élément, ou le nombre d’éléments selon un critère dans un tableau, liste, fichier, etc.

p.60
Allocation dynamique en C++

Quelle est la taille du tableau statique de pointeurs dans l'exemple donné ?

10 éléments.

p.42
Allocation dynamique en C++

Comment déclarer un tableau dynamique en C++ ?

int * tab = new int[10];

p.19
Complexité algorithmique

Quelle est la complexité logarithmique ?

O(log(n)).

p.7
Complexité algorithmique

Quelles sont les deux sortes de complexités algorithmiques?

1) De temps 2) D’espace

p.51
Allocation dynamique en C++

Comment assigner une valeur à un élément d'un tableau de pointeurs en C++ ?

Utilisez '*tab[i] = valeur;' après avoir alloué de la mémoire avec 'new'.

p.54
Programmation orientée objet en C++

Comment accéder aux méthodes d'une instance de classe déclarée sur la stack ?

On utilise l'opérateur d'accès « . » pour accéder aux méthodes ou propriétés, par exemple : e.attaquer();

p.44
Allocation dynamique en C++

Qu'est-ce que l'allocation dynamique en C++?

L'allocation dynamique en C++ permet de réserver de la mémoire pendant l'exécution d'un programme, plutôt qu'à la compilation.

p.63
Allocation dynamique en C++

Que se passe-t-il lorsqu'une classe alloue dynamiquement une autre classe ?

Habituellement, la classe qui alloue la mémoire s'occupe de la libérer.

p.10
Algorithmes de tri

Quel est l'algorithme considéré comme le pire pour le tri par sélection ?

Le tri par sélection est considéré comme le pire algorithme car il compare systématiquement toutes les entrées restantes à chaque tour.

p.52
Allocation dynamique en C++

Que se passe-t-il si le constructeur de la classe Ennemi a des paramètres ?

Il faudra mettre les parenthèses lors de l'allocation dynamique.

p.33
Allocation dynamique en C++

Que reçoit pData lors de l'allocation d'un tableau?

pData reçoit l'adresse du premier élément du tableau.

p.56
Programmation orientée objet en C++

Quand le destructeur d'une classe est-il appelé?

Le destructeur est appelé à la sortie d'une méthode lorsque la mémoire de la variable locale est libérée.

p.27
Architecture de la mémoire

Comment se décompose la zone allouée aux données?

La zone allouée aux données se décompose en plusieurs zones.

p.9
Complexité algorithmique

Dans quel contexte la complexité de temps est-elle particulièrement étudiée ?

Dans un contexte où la mémoire n’est pas vraiment un obstacle.

p.53
Allocation dynamique en C++

Comment libérer la mémoire d'une instance créée avec 'new' en C++ ?

On utilise l'instruction 'delete' suivie du pointeur, par exemple: delete ptrEnnemi.

p.26
Algorithmes de tri

Quels sont les principaux types d'algorithmes de tri ?

Les principaux types d'algorithmes de tri incluent le tri à bulles, le tri par insertion, le tri par sélection, le tri fusion et le tri rapide.

p.5
Algorithmes de tri

Quels sont quelques exemples d'algorithmes de tri rapides ?

Tri fusion, tri rapide, etc.

p.33
Allocation dynamique en C++

Quelle est la caractéristique de la mémoire allouée pour un tableau?

La mémoire est consécutive en mémoire comme un tableau standard.

p.48
Allocation dynamique en C++

Quelles sont les deux possibilités pour utiliser des tableaux de pointeurs en C++?

1) Stocker des références vers des entiers : int * tab[10]; int a = 12; tab[0] = &a;

p.7
Complexité de temps et d'espace

Que mesure la complexité de temps d'un algorithme?

Le nombre d’opérations élémentaires effectuées par un algorithme.

p.51
Allocation dynamique en C++

Pourquoi est-il important de faire attention à l'étoile lors de l'utilisation de tableaux de pointeurs ?

L'étoile est utilisée pour accéder à la valeur pointée par le pointeur, ce qui est crucial pour éviter des erreurs.

p.3
Recherche linéaire et dichotomique

Quelle condition doit-on respecter avant de procéder à une recherche dichotomique ?

Les données doivent être triées.

p.63
Programmation orientée objet en C++

Que fait une classe lorsqu'elle garde la référence d'une autre classe dans une de ses variables ?

Habituellement, on ne touche pas à cette référence, on laisse la stack faire son travail !

p.4
Algorithmes de tri

Où peut-on observer le nombre de comparaisons effectuées lors d'un algorithme de tri ?

Il apparaît en haut à gauche dans la vidéo mentionnée.

p.47
Architecture de la mémoire

Que représente l'instruction 'int * tab[10];'?

C'est un tableau statique de 10 pointeurs vers des entiers.

p.12
Algorithmes de tri

Quelle est la formule de la complexité du tri par sélection ?

La formule est n(n-1)/2, ce qui indique une complexité quadratique.

p.66
Programmation orientée objet en C++

Qu'est-ce qu'une agrégation dans un diagramme de classes?

La classe « A » possède un pointeur sur un objet de la classe « B » parmi ses attributs mais n’est pas responsable de la destruction de celui-ci.

p.48
Allocation dynamique en C++

Où sont stockées les données lorsque l'on utilise un tableau de pointeurs sans allocation dynamique?

Tout est sur la stack.

p.11
Algorithmes de tri

Quel est le total de comparaisons effectuées lors des 9 tours du tri par sélection?

45 comparaisons

p.68
Programmation orientée objet en C++

Que contient le fichier .cpp en C++ ?

Le fichier .cpp contient la définition de la classe, incluant les définitions des attributs statiques et le corps des méthodes.

p.68
Programmation orientée objet en C++

Pourquoi C++ nécessite-t-il deux fichiers pour une classe ?

Contrairement à C# et Java, C++ nécessite deux fichiers pour séparer les déclarations (dans le fichier .h) des définitions (dans le fichier .cpp).

p.30
Programmation orientée objet en C++

Quelle est la valeur de 'valeurDeA' si 'a' est initialisé à 52 et que 'ptrA' pointe vers 'a' ?

valeurDeA aura la même valeur que 'a', soit 52.

p.31
Allocation dynamique en C++

Qu'est-ce qu'un pointeur en C++?

Un pointeur est une adresse qui stocke l'emplacement d'une variable en mémoire.

p.45
Allocation dynamique en C++

Quels types d'exercices peut-on faire pour pratiquer l'allocation dynamique en C++ ?

On peut réaliser des exercices tels que la création de tableaux dynamiques, la gestion de classes avec des pointeurs, et l'implémentation de destructeurs pour éviter les fuites de mémoire.

p.67
Programmation orientée objet en C++

Quelles sont les trois visibilités possibles pour les attributs et méthodes?

Les trois visibilités sont : public, protected et private.

p.15
Algorithmes de tri

Qu'est-ce que le Tri-Fusion ?

C'est un algorithme récursif qui implique des opérations de scindage, de tri et de fusion.

p.9
Complexité algorithmique

Quelles sont les opérations élémentaires à surveiller dans la complexité de temps ?

Comparaison, Affectation, Opérations arithmétiques.

p.37
Allocation dynamique en C++

Que fait l'instruction 'int * p = new int;' en C++?

Elle alloue un bloc mémoire pouvant contenir un entier et la variable p reçoit l'adresse du premier octet de ce bloc.

p.5
Algorithmes de tri

Quelles sont les deux catégories principales des algorithmes de tri ?

Les algorithmes de tri sont classés en deux catégories : les lents et les rapides.

p.4
Algorithmes de tri

Quel type d'algorithmes est mentionné dans le texte ?

Algorithmes de tri.

p.19
Complexité algorithmique

Quelle est la complexité linéaire ?

O(n), exemple : Tri par sélection.

p.56
Programmation orientée objet en C++

Qu'est-ce qu'un destructeur dans une classe en C++?

Le destructeur est une méthode spéciale préfixée du symbole « ~ » qui est appelée avant la suppression définitive de l'instance en mémoire.

p.43
Allocation dynamique en C++

Pourquoi ne faut-il pas utiliser une boucle pour désallouer un tableau dynamique en C++ ?

Utiliser une boucle détruit la structure puisque la désallocation doit être consécutive.

p.32
Allocation dynamique en C++

Quel est le risque associé à la fonction 'doIt' dans le code donné?

La mémoire allouée par 'new int' n'est pas libérée, ce qui cause une fuite de mémoire.

p.30
Programmation orientée objet en C++

Quels sont les deux modes de passage en paramètre en programmation ?

Par valeur et par référence.

p.40
Architecture de la mémoire

Où sont stockées les variables locales?

Les variables locales sont stockées dans la 'stack'.

p.32
Allocation dynamique en C++

Que se passe-t-il si l'on met un pointeur à nullptr?

Mettre le pointeur à nullptr ne libère pas la mémoire et peut provoquer une fuite de mémoire.

p.40
Architecture de la mémoire

Où se trouve le code compilé?

Le code compilé se trouve dans la section 'code'.

p.34
Allocation dynamique en C++

Que se passe-t-il si on utilise delete pData au lieu de delete[] pData?

Cela ne libérera que le premier élément du tableau et créera une fuite de mémoire.

p.24
Complexité algorithmique

Quelle est la complexité linéaire et donnez un exemple.

O(n), exemple : Recherche linéaire.

p.28
Architecture de la mémoire

Quel est le rôle de 'static int cptInstance' dans la classe Ennemi ?

'cptInstance' est une variable statique qui est partagée entre toutes les instances de la classe Ennemi et est stockée dans la zone de données.

p.67
Programmation orientée objet en C++

Que signifie la visibilité 'public'?

Les membres sont accessibles à l’extérieur et à l’intérieur de la classe.

p.50
Allocation dynamique en C++

Pourquoi l'instruction delete[] tab; ne fonctionne-t-elle pas avec des tableaux de pointeurs ?

Cette instruction ne fonctionne pas ici car elle était valide uniquement lorsqu'on avait l'adresse du premier octet vers un tableau dynamique.

p.17
Algorithmes de tri

Quelle est la complexité de la fusion de deux ensembles dans le tri-fusion?

La complexité de la fusion de deux ensembles est O(n), ce qui signifie qu'elle s'effectue en n opérations.

p.53
Allocation dynamique en C++

Que fait l'instruction 'new' en C++ ?

Chaque instruction 'new' crée une nouvelle instance de la classe Ennemi.

p.25
Complexité algorithmique

La complexité d'un algorithme est-elle toujours liée à sa difficulté de code ?

Non, un algorithme peut être 'compliqué' comme un algorithme récursif, mais avoir une faible complexité.

p.16
Algorithmes de tri

Comment scinder un tableau de N éléments en 2 lors du tri-fusion ?

Chercher la valeur telle que : 2 x = N, en doublant nos unités jusqu’à l’obtention du nombre N.

p.52
Allocation dynamique en C++

Quelle est la syntaxe pour allouer dynamiquement une instance de la classe Ennemi ?

Ennemi * prtEnnemi = new Ennemi();

p.19
Complexité algorithmique

Quelle est la complexité linéarithmique et donnez un exemple ?

O(n*log(n)), exemple : Tri fusion.

p.52
Allocation dynamique en C++

Que représente la variable ptrEnnemi après l'allocation dynamique ?

Elle reçoit l'adresse du premier bloc de la structure de la classe Ennemi.

p.57
Allocation dynamique en C++

Que se passe-t-il lorsque 'delete ptrEnnemi' est exécuté ?

L'objet Ennemi est détruit et le destructeur de la classe Ennemi est appelé.

p.49
Allocation dynamique en C++

Comment stocker des pointeurs vers des entiers alloués dynamiquement en C++?

On peut utiliser un tableau de pointeurs, par exemple : int * tab[10]; puis allouer dynamiquement avec tab[0] = new int; et assigner une valeur avec *tab[0] = 12.

p.59
Allocation dynamique en C++

Que signifie 'tabEnnemis[0].attaquer();' dans le contexte des tableaux de pointeurs ?

Cela appelle la méthode attaquer() sur la première instance de la classe Ennemi dans le tableau.

p.58
Allocation dynamique en C++

Que reçoit la variable tabEnnemis lors de l'allocation dynamique d'un tableau d'instances d'une classe ?

La variable tabEnnemis reçoit l'adresse du premier bloc alloué en mémoire.

p.58
Allocation dynamique en C++

Quelles règles doivent être suivies lors de l'utilisation de tableaux dynamiques en C++ ?

Il faut suivre les règles pour le stockage et la suppression des blocs alloués.

p.21
Algorithmes de tri

Quelle est la complexité d'un algorithme de tri fusion ?

O(n*log(n)), ce qui indique une complexité linéarithmique.

p.28
Architecture de la mémoire

Quel type de variable est 'e1' dans le programme ?

'e1' est un pointeur vers un objet de la classe Ennemi, alloué dynamiquement dans le Tas.

p.24
Complexité algorithmique

Quelle est la complexité logarithmique et donnez un exemple.

O(log(n)), exemple : Recherche dichotomique.

p.67
Programmation orientée objet en C++

Qu'est-ce qu'un objet en programmation orientée objet?

Un objet est une 'instance' d’une classe, représentant un élément tangible, par exemple, Fido est un objet de la classe Chien.

p.65
Programmation orientée objet en C++

Quel est l'objectif d'un diagramme de classe dans la composition de classes?

Illustrer le comportement désiré et fournir des indices précieux sur le design à effectuer.

p.14
Algorithmes de tri

Qu'est-ce que le tri-fusion ?

Le tri-fusion est un algorithme de tri qui divise les données en sous-ensembles, les trie individuellement, puis les fusionne pour obtenir un ensemble trié.

p.61
Programmation orientée objet en C++

Que stocke le tableau tabEnnemis dans la classe Ennemi ?

Des adresses vers des instances de la classe Ennemi.

p.25
Complexité algorithmique

Quels éléments influencent la complexité d'un algorithme ?

La complexité se joue au niveau des comparaisons, des affectations et de l'arithmétique.

p.33
Allocation dynamique en C++

Comment allouer un tableau en C++?

On utilise l'opérateur [] avec la syntaxe : int* pData = new int[10];

p.60
Allocation dynamique en C++

Comment déclarer un tableau statique de pointeurs vers des instances d'une classe en C++ ?

Ennemi * tabEnnemis[10];

p.55
Allocation dynamique en C++

Quel opérateur est utilisé pour accéder aux membres d'un objet en allocation dynamique en C++?

L'opérateur d'accès est « -> ».

p.47
Architecture de la mémoire

Quelle est la différence entre 'int tab[10];' et 'int * tab[10];'?

'int tab[10];' est un tableau statique de 10 entiers, tandis que 'int * tab[10];' est un tableau statique de 10 pointeurs vers des entiers.

p.56
Programmation orientée objet en C++

Quel est l'effet de la sortie d'une méthode sur les variables locales en C++?

À la sortie de la méthode, la stack est libérée des variables locales, et le destructeur de la classe correspondante est appelé.

p.13
Notation Big O

Comment dénote-t-on la complexité d'un algorithme ?

Avec le symbole 'O'.

p.55
Allocation dynamique en C++

Que se passe-t-il si ptrEnnemi est null ou invalide?

L'exécution va s'arrêter avec une erreur de mémoire.

p.13
Complexité algorithmique

Quelle est la complexité linéaire d'un algorithme ?

O(n).

p.29
Architecture de la mémoire

À quelle adresse mémoire la variable 'a' est-elle déclarée dans l'exemple donné?

0x00effc08

p.29
Architecture de la mémoire

Quelle commande permet de voir la valeur de l'octet à l'adresse mémoire de 'a'?

*((unsigned char *)&a)

p.28
Architecture de la mémoire

Où est stockée la variable 'nombre1' dans le programme ?

La variable 'nombre1' est stockée dans la zone de données, car elle est déclarée globalement.

p.67
Programmation orientée objet en C++

Qu'est-ce qu'un attribut dans une classe?

Un attribut, aussi appelé membre ou propriété d’une classe, contient un élément d’information d’une classe (dans une variable).

p.51
Allocation dynamique en C++

Quelle est la méthode pour libérer la mémoire allouée pour un tableau de pointeurs en C++ ?

Utilisez 'delete tab[j];' pour chaque élément après utilisation.

p.8
Complexité algorithmique

Comment la complexité algorithmique est-elle influencée par le contexte d'exécution ?

La complexité est relative au contexte ; par exemple, sur une plateforme avec peu de mémoire, les algorithmes seront plus complexes que sur une plateforme avec plus de ressources.

p.64
Programmation orientée objet en C++

Qu'est-ce que la composition faible dans la composition de classes ?

Une classe garde la référence d’une autre classe dans une de ses variables, et on ne touche pas à cette référence, laissant la stack faire son travail.

p.4
Algorithmes de tri

Quels sont les critères de performance importants pour les algorithmes de tri ?

Le nombre de comparaisons effectuées est un critère de performance très important.

p.36
Allocation dynamique en C++

Que représente &a dans le code 'int a = 5;' ?

&a est la référence (l’adresse) du premier octet de la structure (ici, un entier).

p.43
Allocation dynamique en C++

Comment désallouer un tableau dynamique en C++ ?

On utilise la syntaxe : delete [] tab;

p.57
Allocation dynamique en C++

Quel est le rôle du destructeur dans l'exemple donné ?

Le destructeur de la classe Ennemi est appelé lorsque l'objet est supprimé avec 'delete ptrEnnemi'.

p.48
Allocation dynamique en C++

Que se passe-t-il si on essaie de faire un delete sur tab[0] dans un tableau de pointeurs?

L'exécution va planter car tab[0] ne réfère pas à une allocation dynamique.

p.40
Allocation dynamique en C++

Qu'est-ce qui se passe avec un pointeur local après un 'delete'?

Le pointeur est dépilé de la 'stack' lors de sa fin de vie, aucune trace ne reste en mémoire.

p.12
Complexité algorithmique

Comment peut-on exprimer la complexité du tri par sélection ?

On peut l'exprimer comme n².

p.30
Programmation orientée objet en C++

Que se passe-t-il lors d'un passage par valeur ?

On obtient deux emplacements mémoire distincts contenant les mêmes valeurs.

p.30
Allocation dynamique en C++

Comment obtient-on l'adresse d'une variable en C++ ?

En utilisant l'opérateur &.

p.13
Complexité algorithmique

Quelle est la complexité linéarithmique d'un algorithme ?

O(n*log(n)).

p.24
Complexité algorithmique

Quelle est la complexité quadratique et donnez un exemple.

O(n^2), exemple : Tri par sélection.

p.29
Architecture de la mémoire

Que représente '&a' dans le contexte de la gestion de la mémoire?

L'emplacement mémoire de 'a', également appelé un pointeur vers 'a'.

p.67
Programmation orientée objet en C++

Quelle est la définition d'une classe?

Une classe est une structure regroupant les données (attributs ou membres) et les opérations (méthodes) pour un concept donné.

p.27
Architecture de la mémoire

Quelles sont les principales zones de mémoire dans l'architecture de la mémoire?

Les principales zones de mémoire sont la Pile (Stack) pour les variables locales, le Tas (Heap) pour l'allocation dynamique, le Code (code segment) pour le code compilé, et les Données (Data segment) pour les variables globales et statiques.

p.27
Architecture de la mémoire

Que se passe-t-il lorsque l'on démarre un programme?

Lorsque l'on démarre un programme, le système d'exploitation alloue un espace mémoire pour notre programme.

p.51
Allocation dynamique en C++

Comment allouer de la mémoire pour un tableau de pointeurs en C++ ?

On peut utiliser 'int * tab[10];' suivi de 'tab[i] = new int;' pour chaque élément.

p.22
Recherche linéaire et dichotomique

Si notre ensemble est trié, on peut mettre en place la recherche ____________ ?

dichotomique

p.38
Allocation dynamique en C++

Quel opérateur est utilisé pour affecter une valeur à un pointeur en C++?

L'opérateur « * » est utilisé pour affecter une valeur du type qui a été déclaré.

p.46
Allocation dynamique en C++

Que représente la déclaration 'int * a = new int[10];'?

Ceci représente un tableau dynamique de 10 entiers, où 'a' est un pointeur vers le premier octet de la structure d'entiers.

p.62
Programmation orientée objet en C++

Quels sont les deux cas de composition de classes présentés ?

1) Une classe garde la référence d’une autre classe dans une de ses variables. 2) Une classe alloue dynamiquement une autre classe et stocke l’adresse reçue dans une variable.

p.3
Recherche linéaire et dichotomique

Quels sont les deux grands types d'algorithme de recherche ?

Recherche linéaire et recherche dichotomique.

p.18
Algorithmes de tri

Quelle est la complexité de l'algorithme de tri-fusion ?

O(n*log 2 (n))

p.8
Complexité algorithmique

Quelle est une solution pour gérer la complexité algorithmique sur des plateformes à faible mémoire ?

Utiliser un algorithme moins gourmand en espace mémoire mais plus complexe en temps.

p.6
Complexité algorithmique

Que désigne le terme 'complexité algorithmique'?

Il désigne l'efficacité d'un algorithme et non la complexité de son implémentation.

p.41
Allocation dynamique en C++

Comment déclarer un tableau dynamique en C++ ?

int * tab = new int[10];

p.37
Allocation dynamique en C++

Que contient le bloc mémoire après l'allocation avec 'new int'?

Le bloc contient une donnée invalide, souvent appelée 'junk'.

p.41
Allocation dynamique en C++

Que fait la déclaration 'int * tab = new int[10];' ?

Elle alloue dynamiquement 10 blocs consécutifs pour des entiers en mémoire et la variable tab reçoit l’adresse du premier bloc.

p.6
Complexité algorithmique

Quel est le lien entre complexité et efficacité d'un algorithme?

Plus un algorithme est complexe, moins il est efficace.

p.44
Architecture de la mémoire

Comment les adresses mémoire sont-elles utilisées en programmation?

Les adresses mémoire sont utilisées pour accéder aux emplacements de mémoire où les données sont stockées, permettant ainsi la manipulation de ces données.

p.64
Programmation orientée objet en C++

Qu'est-ce que la composition forte dans la composition de classes ?

Une classe alloue dynamiquement une autre classe et stocke l’adresse reçue dans une variable, et la classe qui alloue la mémoire s’occupe de la libérer.

p.61
Programmation orientée objet en C++

Comment appelle-t-on la méthode attaquer sur le premier élément du tableau tabEnnemis ?

tabEnnemis[0] -> attaquer();

p.5
Algorithmes de tri

Quels sont quelques exemples d'algorithmes de tri lents ?

Tri par sélection, tri par insertion, tri à bulles, etc.

p.26
Algorithmes de recherche

Qu'est-ce qu'un algorithme de recherche ?

Un algorithme de recherche est une méthode utilisée pour trouver un élément spécifique dans une structure de données, comme une liste ou un tableau.

p.61
Programmation orientée objet en C++

Quel type de données est utilisé dans le tableau tabEnnemis ?

Des pointeurs vers des instances de la classe Ennemi.

p.19
Complexité algorithmique

Quelle est la complexité quadratique et donnez un exemple ?

O(n^2), exemple : Tri par sélection.

p.16
Complexité algorithmique

Quelle est la complexité de la méthode pour scinder un tableau dans le tri-fusion ?

La complexité est O(log 2 (n)).

p.43
Allocation dynamique en C++

Comment allouer un tableau dynamique en C++ ?

On utilise la syntaxe : int * tab = new int[10];

p.2
Recherche linéaire et dichotomique

Comment se déroule la recherche dans un tableau non trié ?

La recherche s’effectue linéairement si les éléments ne sont pas triés.

p.23
Recherche linéaire et dichotomique

Qu'est-ce que l'algorithme de recherche dichotomique?

C'est un algorithme qui divise un ensemble en deux jusqu'à isoler la valeur cherchée.

p.10
Complexité algorithmique

Comment calcule-t-on la complexité algorithmique du tri par sélection ?

On s'attarde au pire cas que l'algorithme peut rencontrer.

p.36
Allocation dynamique en C++

Quel type de variable est 'p' dans 'int * p;' ?

p est une variable de type adresse pouvant recueillir la référence (adresse) d’un entier stocké en mémoire.

p.66
Programmation orientée objet en C++

Quel est le symbole représentant une association dans un diagramme de classes?

--- - ----- >

p.60
Allocation dynamique en C++

Quelles règles doivent être suivies lors de l'utilisation d'un tableau de pointeurs vers des instances de classe ?

Il faut suivre les règles pour le stockage et la suppression.

p.7
Complexité de temps et d'espace

Que mesure la complexité d’espace d'un algorithme?

Le nombre d’espace physique (essentiellement de la mémoire) occupé par l’algorithme.

p.32
Allocation dynamique en C++

Quelle est la règle du pouce concernant l'allocation de mémoire?

Une fonction ou une méthode qui alloue de la mémoire est généralement responsable de la libérer.

p.39
Allocation dynamique en C++

Que fait l'instruction 'int * p = new int;' en C++?

Elle alloue dynamiquement de la mémoire pour un entier et assigne l'adresse à un pointeur 'p'.

p.39
Allocation dynamique en C++

Pourquoi est-il important de désallouer la mémoire en C++?

Pour éviter les fuites de mémoire en libérant la mémoire qui a été allouée dynamiquement.

p.30
Allocation dynamique en C++

Que fait l'opérateur * en C++ ?

Il permet d'accéder à la valeur à une adresse mémoire.

p.45
Allocation dynamique en C++

Qu'est-ce qu'un tableau de pointeurs ?

Un tableau de pointeurs est une structure de données qui contient des adresses de mémoire pointant vers d'autres variables ou objets.

p.24
Complexité algorithmique

Quelle est la complexité linéarithmique et donnez un exemple.

O(n*log(n)), exemple : Tri fusion.

p.23
Complexité algorithmique

Quelle est la complexité de l'opération de scindage dans la recherche dichotomique?

La complexité de l'opération de scindage est O(log 2 n).

p.36
Allocation dynamique en C++

Que fait l'instruction 'p = &a;' ?

L'instruction 'p = &a;' assigne à p l'adresse de la variable a.

p.55
Allocation dynamique en C++

Comment créer un objet de la classe Ennemi en utilisant l'allocation dynamique?

En utilisant la syntaxe : Ennemi * ptrEnnemi = new Ennemi();

p.66
Programmation orientée objet en C++

Quelle est la différence entre agrégation et composition?

Dans l'agrégation, la classe « A » ne détruit pas l'objet de la classe « B », tandis que dans la composition, la classe « A » est responsable de la destruction de l'objet de la classe « B ».

p.34
Allocation dynamique en C++

Comment accède-t-on à un élément d'un tableau en C++?

On utilise l'opérateur []. Par exemple, std::cout << pData[4]; est équivalent à std::cout << *(pData + 4);

p.20
Complexité de temps et d'espace

Quelle est la complexité dans le pire cas de la recherche linéaire?

La complexité dans le pire cas est de O(n), ce qui signifie qu'il faut n comparaisons.

p.11
Algorithmes de tri

Pour un tableau de 10 éléments, combien de comparaisons sont nécessaires dans le tri par sélection?

45 comparaisons

p.13
Complexité algorithmique

Quelle est la complexité logarithmique d'un algorithme ?

O(log(n)).

p.45
Programmation orientée objet en C++

Quel est le rôle d'un destructeur dans une classe ?

Le destructeur d'une classe est une méthode spéciale qui est appelée lorsque l'objet est détruit, permettant de libérer les ressources allouées dynamiquement.

p.31
Allocation dynamique en C++

Comment allouer de la mémoire dynamique pour un int en C++?

On utilise l'opérateur new : 'int* pData = new int;'.

p.67
Programmation orientée objet en C++

Que signifie la visibilité 'protected'?

Les membres sont accessibles dans les classes dérivées et à l’intérieur de la classe.

p.32
Allocation dynamique en C++

Que se passe-t-il lorsque l'on utilise 'delete pData'?

Le pointeur peut être réutilisé pour un autre emplacement mémoire, mais le contenu pointé devient indéterminé.

p.12
Complexité algorithmique

Quel est le degré du polynôme associé à la complexité du tri par sélection ?

Le degré du polynôme est 2.

p.55
Allocation dynamique en C++

Quelle est l'équivalence de ptrEnnemi -> attaquer();?

C'est équivalent à *(ptrEnnemi).attaquer();

p.42
Allocation dynamique en C++

Quelle valeur a tab[9] après le remplissage du tableau ?

tab[9] vaut 19.

p.59
Allocation dynamique en C++

Quelle est une distinction importante à garder à l'esprit concernant 'tabEnnemis' ?

Il ne s'agit pas de pointeurs, mais d'un tableau d'instances de la classe Ennemi.

p.39
Allocation dynamique en C++

Que signifie 'delete p;' dans le contexte de la gestion de la mémoire?

Cela libère la mémoire qui a été allouée dynamiquement pour l'entier pointé par 'p'.

p.24
Notation Big O

Comment dénote-t-on la complexité d'un algorithme ?

Avec le symbole 'O'.

p.29
Architecture de la mémoire

Quelle est la valeur du premier octet qui suit l'adresse mémoire de 'a'?

0

p.31
Allocation dynamique en C++

Comment accéder au contenu d'un pointeur en C++?

On utilise l'opérateur * : par exemple, 'std::cout << *pData;' ou '*pData = 80;'.

p.67
Programmation orientée objet en C++

Que signifie la visibilité 'private'?

Les membres sont accessibles uniquement à l’intérieur de la classe.

p.59
Allocation dynamique en C++

Que fait l'instruction 'Ennemi * tabEnnemis = new Ennemi[10];' ?

Elle prépare 10 instances de la classe Ennemi en mémoire.

p.11
Algorithmes de tri

Combien de comparaisons sont effectuées lors du premier tour du tri par sélection?

9 comparaisons

p.57
Allocation dynamique en C++

Quel type de mémoire est utilisé pour 'ptrEnnemi' dans cet exemple ?

La mémoire utilisée pour 'ptrEnnemi' est la heap, car l'objet est créé avec 'new'.

p.49
Allocation dynamique en C++

Pourquoi est-il important de supprimer les adresses stockées dans un tableau de pointeurs?

Il est crucial de supprimer les adresses pour éviter les fuites de mémoire, car chaque pointeur dans le tableau pointe vers un bloc de mémoire alloué dynamiquement.

p.40
Architecture de la mémoire

Où sont stockées les variables statiques et globales?

Les variables statiques et globales sont stockées dans la 'data'.

p.29
Architecture de la mémoire

Quelle est la taille en octets réservée pour un int lors de la déclaration 'int a = 52;'?

4 octets

p.28
Architecture de la mémoire

Quelles zones mémoire sont allouées pour les variables dans le programme donné ?

Les zones mémoire allouées sont : Pile pour les variables locales comme nombre2 et nombre3, Tas pour l'objet e1 créé avec 'new Ennemi', et Code pour le code de la fonction UneFonction et main().

p.28
Architecture de la mémoire

Quelle est la portée de la variable 'nombre3' dans le programme ?

La variable 'nombre3' a une portée locale à la fonction UneFonction.

p.31
Allocation dynamique en C++

Que doit-on faire après avoir utilisé 'new' pour allouer de la mémoire?

Il faut libérer la mémoire allouée avec l'opérateur delete lorsqu'elle n'est plus nécessaire.

p.67
Programmation orientée objet en C++

Quelle est la pratique recommandée concernant les méthodes get/set?

Il est recommandé de coder les get/set pour tous les attributs et de rendre private les setters qui ne sont pas nécessaires à l’extérieur de la classe.

p.42
Allocation dynamique en C++

Comment remplir un tableau dynamique en C++ ?

Utiliser une boucle for pour assigner des valeurs, par exemple : for(int i = 0; i < 10; i++) { tab[i] = i + 10; }

p.42
Allocation dynamique en C++

Quelle valeur a tab[0] après le remplissage du tableau ?

tab[0] vaut 10.

p.20
Recherche linéaire et dichotomique

Qu'est-ce que la recherche linéaire?

La recherche linéaire consiste à parcourir le tableau au complet, c'est un algorithme glouton.

p.13
Complexité algorithmique

Quelle est la complexité d'un algorithme de tri par sélection ?

O(n^2), ce qui correspond à une complexité quadratique.

p.34
Architecture de la mémoire

Pourquoi les tableaux sont-ils indexés à partir de 0 en C++?

C'est parce que l'indice correspond au décalage par rapport à l'adresse du tableau.

p.39
Allocation dynamique en C++

Quel est l'effet de 'p = null;' après avoir utilisé 'delete p;'?

Cela rend le pointeur 'p' nul, ce qui peut aider à éviter des accès à une mémoire déjà libérée.

p.45
Allocation dynamique en C++

Comment fonctionne l'allocation dynamique d'une classe en C++ ?

L'allocation dynamique d'une classe en C++ se fait généralement à l'aide de l'opérateur 'new', qui réserve de la mémoire pour un objet de la classe à l'exécution.

p.31
Allocation dynamique en C++

Que se passe-t-il lorsque l'on exécute 'int* pValeur = ptrA + 1;'?

La valeur de pValeur sera celle de ptrA augmentée de 4 octets, car un int occupe 4 octets en mémoire.

p.67
Programmation orientée objet en C++

Comment définit-on une méthode dans une classe?

Une méthode est une opération d’une classe, contenant du code, et on évite les termes fonctions et procédures.

p.20
Algorithmes de recherche

Pourquoi est-il recommandé d'effectuer un tri préalable avant d'appliquer un algorithme de recherche?

Un tri préalable permet de gagner en performance sur l'algorithme de recherche.

p.68
Programmation orientée objet en C++

Quel est le rôle du fichier .h en C++ ?

Le fichier .h contient la déclaration de la classe, incluant le nom de la classe, les modificateurs de visibilité, et les déclarations des attributs et des méthodes, sans les définitions.

p.21
Notation Big O

Comment dénote-t-on la complexité d'un algorithme ?

Avec le symbole 'O'.

p.11
Algorithmes de tri

Quelle est la formule générale pour le nombre de comparaisons dans le tri par sélection?

n(n-1)/2 comparaisons

p.21
Recherche linéaire et dichotomique

Quelle est la complexité d'une recherche linéaire ?

O(n), ce qui indique une complexité linéaire.

p.29
Architecture de la mémoire

Comment peut-on visualiser le contenu de la mémoire d'une variable en C++?

En transtyant l'adresse de la variable en pointeur de caractères (unsigned char*)

p.31
Architecture de la mémoire

Quelle est la taille d'un pointeur en configuration x86?

En configuration x86, un pointeur est stocké sur 32 bits.

p.31
Allocation dynamique en C++

Que se passe-t-il si l'on lit le contenu d'un emplacement mémoire avant d'y affecter une valeur?

Le contenu est indéterminé.

p.59
Allocation dynamique en C++

Pourquoi est-il important de créer les instances avant d'accéder à leurs méthodes ?

Pour savoir combien d'octets allouer en mémoire.

p.58
Allocation dynamique en C++

Comment allouer dynamiquement un tableau d'instances d'une classe en C++ ?

En utilisant la syntaxe : Ennemi * tabEnnemis = new Ennemi[10]; pour allouer 10 blocs consécutifs en mémoire.

p.66
Programmation orientée objet en C++

Quand un objet de la classe « B » est-il généralement instancié dans le cas d'une composition?

L'objet de la classe « B » est généralement instancié à l’intérieur de la classe « A », souvent lors de la construction.

p.21
Complexité algorithmique

Quelle est la complexité d'un algorithme de tri par sélection ?

O(n²), ce qui indique une complexité quadratique.

p.34
Allocation dynamique en C++

Comment libérer un tableau en C++?

On doit utiliser l'opérateur delete avec []. Par exemple, delete[] pData; et non delete pData;

p.21
Complexité algorithmique

Quelle est la complexité logarithmique ?

O(log(n)).

p.45
Programmation orientée objet en C++

Qu'est-ce que la composition dans un diagramme de classes ?

La composition dans un diagramme de classes représente une relation forte entre deux classes, où une classe (le tout) contient des instances d'une autre classe (les parties).

p.67
Programmation orientée objet en C++

Qu'est-ce que l'encapsulation en programmation orientée objet?

C'est le fait de masquer les détails d'implémentation d'un concept (d'une classe).

Study Smarter, Not Harder
Study Smarter, Not Harder