Quelle est la taille du tableau statique de pointeurs dans l'exemple donné ?
Click to see answer
10 éléments.
Click to see question
Quelle est la taille du tableau statique de pointeurs dans l'exemple donné ?
10 éléments.
Comment déclarer un tableau dynamique en C++ ?
int * tab = new int[10];
Quelle est la complexité logarithmique ?
O(log(n)).
Quelles sont les deux sortes de complexités algorithmiques?
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'.
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();
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.
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.
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.
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.
Que reçoit pData lors de l'allocation d'un tableau?
pData reçoit l'adresse du premier élément du tableau.
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.
Comment se décompose la zone allouée aux données?
La zone allouée aux données se décompose en plusieurs zones.
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.
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.
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.
Quels sont quelques exemples d'algorithmes de tri rapides ?
Tri fusion, tri rapide, etc.
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.
Quelles sont les deux possibilités pour utiliser des tableaux de pointeurs en C++?
Que mesure la complexité de temps d'un algorithme?
Le nombre d’opérations élémentaires effectuées par un algorithme.
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.
Quelle condition doit-on respecter avant de procéder à une recherche dichotomique ?
Les données doivent être triées.
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 !
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.
Que représente l'instruction 'int * tab[10];'?
C'est un tableau statique de 10 pointeurs vers des entiers.
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.
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.
Où sont stockées les données lorsque l'on utilise un tableau de pointeurs sans allocation dynamique?
Tout est sur la stack.
Quel est le total de comparaisons effectuées lors des 9 tours du tri par sélection?
45 comparaisons
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.
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).
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.
Qu'est-ce qu'un pointeur en C++?
Un pointeur est une adresse qui stocke l'emplacement d'une variable en mémoire.
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.
Quelles sont les trois visibilités possibles pour les attributs et méthodes?
Les trois visibilités sont : public, protected et private.
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.
Quelles sont les opérations élémentaires à surveiller dans la complexité de temps ?
Comparaison, Affectation, Opérations arithmétiques.
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.
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.
Quel type d'algorithmes est mentionné dans le texte ?
Algorithmes de tri.
Quelle est la complexité linéaire ?
O(n), exemple : Tri par sélection.
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.
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.
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.
Quels sont les deux modes de passage en paramètre en programmation ?
Par valeur et par référence.
Où sont stockées les variables locales?
Les variables locales sont stockées dans la 'stack'.
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.
Où se trouve le code compilé?
Le code compilé se trouve dans la section 'code'.
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.
Quelle est la complexité linéaire et donnez un exemple.
O(n), exemple : Recherche linéaire.
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.
Que signifie la visibilité 'public'?
Les membres sont accessibles à l’extérieur et à l’intérieur de la classe.
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.
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.
Que fait l'instruction 'new' en C++ ?
Chaque instruction 'new' crée une nouvelle instance de la classe Ennemi.
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é.
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.
Quelle est la syntaxe pour allouer dynamiquement une instance de la classe Ennemi ?
Ennemi * prtEnnemi = new Ennemi();
Quelle est la complexité linéarithmique et donnez un exemple ?
O(n*log(n)), exemple : Tri fusion.
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.
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é.
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.
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.
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.
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.
Quelle est la complexité d'un algorithme de tri fusion ?
O(n*log(n)), ce qui indique une complexité linéarithmique.
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.
Quelle est la complexité logarithmique et donnez un exemple.
O(log(n)), exemple : Recherche dichotomique.
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.
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.
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é.
Que stocke le tableau tabEnnemis dans la classe Ennemi ?
Des adresses vers des instances de la classe Ennemi.
Quels éléments influencent la complexité d'un algorithme ?
La complexité se joue au niveau des comparaisons, des affectations et de l'arithmétique.
Comment allouer un tableau en C++?
On utilise l'opérateur [] avec la syntaxe : int* pData = new int[10];
Comment déclarer un tableau statique de pointeurs vers des instances d'une classe en C++ ?
Ennemi * tabEnnemis[10];
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 « -> ».
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.
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é.
Comment dénote-t-on la complexité d'un algorithme ?
Avec le symbole 'O'.
Que se passe-t-il si ptrEnnemi est null ou invalide?
L'exécution va s'arrêter avec une erreur de mémoire.
Quelle est la complexité linéaire d'un algorithme ?
O(n).
À quelle adresse mémoire la variable 'a' est-elle déclarée dans l'exemple donné?
0x00effc08
Quelle commande permet de voir la valeur de l'octet à l'adresse mémoire de 'a'?
*((unsigned char *)&a)
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.
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).
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.
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.
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.
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.
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).
Comment désallouer un tableau dynamique en C++ ?
On utilise la syntaxe : delete [] tab;
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'.
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.
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.
Comment peut-on exprimer la complexité du tri par sélection ?
On peut l'exprimer comme n².
Que se passe-t-il lors d'un passage par valeur ?
On obtient deux emplacements mémoire distincts contenant les mêmes valeurs.
Comment obtient-on l'adresse d'une variable en C++ ?
En utilisant l'opérateur &.
Quelle est la complexité linéarithmique d'un algorithme ?
O(n*log(n)).
Quelle est la complexité quadratique et donnez un exemple.
O(n^2), exemple : Tri par sélection.
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'.
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é.
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.
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.
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.
Si notre ensemble est trié, on peut mettre en place la recherche ____________ ?
dichotomique
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é.
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.
Quels sont les deux cas de composition de classes présentés ?
Quels sont les deux grands types d'algorithme de recherche ?
Recherche linéaire et recherche dichotomique.
Quelle est la complexité de l'algorithme de tri-fusion ?
O(n*log 2 (n))
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.
Que désigne le terme 'complexité algorithmique'?
Il désigne l'efficacité d'un algorithme et non la complexité de son implémentation.
Comment déclarer un tableau dynamique en C++ ?
int * tab = new int[10];
Que contient le bloc mémoire après l'allocation avec 'new int'?
Le bloc contient une donnée invalide, souvent appelée 'junk'.
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.
Quel est le lien entre complexité et efficacité d'un algorithme?
Plus un algorithme est complexe, moins il est efficace.
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.
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.
Comment appelle-t-on la méthode attaquer sur le premier élément du tableau tabEnnemis ?
tabEnnemis[0] -> attaquer();
Quels sont quelques exemples d'algorithmes de tri lents ?
Tri par sélection, tri par insertion, tri à bulles, etc.
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.
Quel type de données est utilisé dans le tableau tabEnnemis ?
Des pointeurs vers des instances de la classe Ennemi.
Quelle est la complexité quadratique et donnez un exemple ?
O(n^2), exemple : Tri par sélection.
Quelle est la complexité de la méthode pour scinder un tableau dans le tri-fusion ?
La complexité est O(log 2 (n)).
Comment allouer un tableau dynamique en C++ ?
On utilise la syntaxe : int * tab = new int[10];
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.
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.
Comment calcule-t-on la complexité algorithmique du tri par sélection ?
On s'attarde au pire cas que l'algorithme peut rencontrer.
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.
Quel est le symbole représentant une association dans un diagramme de classes?
--- - ----- >
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.
Que mesure la complexité d’espace d'un algorithme?
Le nombre d’espace physique (essentiellement de la mémoire) occupé par l’algorithme.
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.
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'.
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.
Que fait l'opérateur * en C++ ?
Il permet d'accéder à la valeur à une adresse mémoire.
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.
Quelle est la complexité linéarithmique et donnez un exemple.
O(n*log(n)), exemple : Tri fusion.
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).
Que fait l'instruction 'p = &a;' ?
L'instruction 'p = &a;' assigne à p l'adresse de la variable a.
Comment créer un objet de la classe Ennemi en utilisant l'allocation dynamique?
En utilisant la syntaxe : Ennemi * ptrEnnemi = new Ennemi();
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 ».
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);
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.
Pour un tableau de 10 éléments, combien de comparaisons sont nécessaires dans le tri par sélection?
45 comparaisons
Quelle est la complexité logarithmique d'un algorithme ?
O(log(n)).
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.
Comment allouer de la mémoire dynamique pour un int en C++?
On utilise l'opérateur new : 'int* pData = new int;'.
Que signifie la visibilité 'protected'?
Les membres sont accessibles dans les classes dérivées et à l’intérieur de la classe.
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.
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é.
Quel est le degré du polynôme associé à la complexité du tri par sélection ?
Le degré du polynôme est 2.
Quelle est l'équivalence de ptrEnnemi -> attaquer();?
C'est équivalent à *(ptrEnnemi).attaquer();
Quelle valeur a tab[9] après le remplissage du tableau ?
tab[9] vaut 19.
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.
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'.
Comment dénote-t-on la complexité d'un algorithme ?
Avec le symbole 'O'.
Quelle est la valeur du premier octet qui suit l'adresse mémoire de 'a'?
0
Comment accéder au contenu d'un pointeur en C++?
On utilise l'opérateur * : par exemple, 'std::cout << *pData;' ou '*pData = 80;'.
Que signifie la visibilité 'private'?
Les membres sont accessibles uniquement à l’intérieur de la classe.
Que fait l'instruction 'Ennemi * tabEnnemis = new Ennemi[10];' ?
Elle prépare 10 instances de la classe Ennemi en mémoire.
Combien de comparaisons sont effectuées lors du premier tour du tri par sélection?
9 comparaisons
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'.
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.
Où sont stockées les variables statiques et globales?
Les variables statiques et globales sont stockées dans la 'data'.
Quelle est la taille en octets réservée pour un int lors de la déclaration 'int a = 52;'?
4 octets
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().
Quelle est la portée de la variable 'nombre3' dans le programme ?
La variable 'nombre3' a une portée locale à la fonction UneFonction.
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.
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.
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; }
Quelle valeur a tab[0] après le remplissage du tableau ?
tab[0] vaut 10.
Qu'est-ce que la recherche linéaire?
La recherche linéaire consiste à parcourir le tableau au complet, c'est un algorithme glouton.
Quelle est la complexité d'un algorithme de tri par sélection ?
O(n^2), ce qui correspond à une complexité quadratique.
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.
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.
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.
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.
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.
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.
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.
Comment dénote-t-on la complexité d'un algorithme ?
Avec le symbole 'O'.
Quelle est la formule générale pour le nombre de comparaisons dans le tri par sélection?
n(n-1)/2 comparaisons
Quelle est la complexité d'une recherche linéaire ?
O(n), ce qui indique une complexité linéaire.
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*)
Quelle est la taille d'un pointeur en configuration x86?
En configuration x86, un pointeur est stocké sur 32 bits.
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é.
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.
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.
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.
Quelle est la complexité d'un algorithme de tri par sélection ?
O(n²), ce qui indique une complexité quadratique.
Comment libérer un tableau en C++?
On doit utiliser l'opérateur delete avec []. Par exemple, delete[] pData; et non delete pData;
Quelle est la complexité logarithmique ?
O(log(n)).
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).
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).