Exam 1 (module 1) Flashcards

(75 cards)

1
Q

Avantage d’un langage compilé?

A

Vitesse d’exécution plus rapide

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Définition de portabilité d’un programme

A

Sa capacité à pouvoir être adapté en vue de fonctionner dans différents environnements d’exécution.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Action de modifier un programme pour qu’il puisse s’exécuter sur un autre environnement.

A

Le portage

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

(Vrai ou faux) Un compilateur donné est toujours spécifique au système d’exploitation pour lequel il a été conçu.

A

Vrai

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Code source -> (1)? -> code source étendu -> (2)? -> il y a des erreurs -> (3)?

A

1-pre-processeur
2-compilateur
3-code source (repart au début)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

compilateur -> pas d’erreurs -> (1)? -> (2)? -> il y a des erreurs -> (3)?

A

1-code objet
2-éditeur de liens
3-code source (retourne au début)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

éditeur de liens -> pas d’erreurs -> ?

A

code exécutable

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

include <iostream></iostream>

Comment cette partie du code s’appelle-t-elle?

#include <math.h>
using namespace std;</math.h>

A

Directives pour la pré-compilation (gérées par le pré-processeur)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Nom de la partie du code qui se trouve où les *?

int main() {***}

A

Bloc principal

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

À quoi sert return 0 à la fin du programme?

A

À indiquer qu’il a bien fonctionné

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Pourquoi déclarer les variables?

A

▪ taille de l’espace mémoire requis
▪ opérations associées
▪ codage, décodage
▪ lisibilité (choix des identificateurs)
▪ détection d’erreurs

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Normes des noms de variables

A

◼ Suite de caractères (alphanumériques).
◼ Premier caractère : une lettre (ou _ ).
◼ Majuscules et minuscules
◼ Seulement les 32 premiers caractères sont « significatifs ».

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Est-ce que la variable suivante est initialisée?

int unEntier;

A

Non, elle est juste déclarée

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Façons d’initialiser une variable (mettons qu’on veut que la valeur de unEntier soit de 5)

A

int unEntier = 5;
int unEntier (5);
int unEntier {5};

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

(Vrai ou faux) Dans un if, le else est nécessaire

A

Faux, else est toujours facultatif

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Autre façon d’écrire:

if ( n > 1 )
{
i = i + 1;
}
else
{
i = i – 1;
}

A

( n > 1 ) ? i = i + 1 : i = i – 1;

<condition>?<valeur>:<valeur>;
</valeur></valeur></condition>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Comment ça marche les switch / case?

switch( variable )
{
case 1 : cout &laquo_space;“un” &laquo_space;endl; break;
case 2 : cout &laquo_space;“deux” &laquo_space;endl; break;
default: cout &laquo_space;“erreur!” &laquo_space;endl;
}

A

La valeur de l’expression (ici c’est variable) est comparée avec la valeur de chaque cas. Si il y a un match, le bloc associé est exécuté. Si aucun match, le bloc par défaut est exécuté. (break et default son optionels)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Structure d’une boucle while

A

while (condition)
{
… ;
}

exemple de condition : i<20

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Structure d’une boucle do while et différence avec la boucle while

A

do
{
…;
} while (condition);

différence : ça rentre dans la boucle au moins une fois

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Structure d’une boucle for

A

for (initialisation; condition d’arrêt; instruction de fin de boucle)
{…}

exemple:
for (int i = 2; i <= 10; i++)
{
…;
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Ça sert à quoi de mettre unsigned devant un type de variable?

A

De forcer à avoir juste des valeurs positives.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

char (nombre de bits et intervalle)

A

8 bits, [-127, 127] (code ASCII)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Différence entre float et double?

A

float : 32 bits (7 chiffres signif.)
double : 64 bits (15 chiffres signif. -> plus de précisoin)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Comment transformer une lettre majuscule en minuscule?

A

+ ‘a’ - ‘A’

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Chiffre qui représente true (en C++)? Et false?
true : 1 false : 0
26
Constantes symboliques vs constantes typées
symboliques: -Avant la compilation, le pré-processeur parcourt l’ensemble du programme et remplace chaque occurrence du symbole par la valeur définie. -ex : #define TAUX_TPS 0.05f typées: -ex : const float TAUX_TPS = 0.05;
27
Analyse lexicale
Le compilateur identifie les différents symboles qui composent le programme
28
Crible
Le compilateur fait le tri parmi les symboles identifiés lors de l’analyse lexicale entre les symboles utiles, les symboles inutiles et les symboles qui s’adressent directement au compilateur.
29
Analyse syntaxique
Le compilateur cherche à retrouver la structure du programme. Cette tâche est accomplie en analysant les symboles lexicaux. C’est également durant cette étape que les erreurs de syntaxe du programmeur sont détectées.
30
Analyse sémantique
Sert à détecter les autres erreurs que l’on peut commettre en écrivant un programme, comme entre autres, les erreurs de typage.
31
Qu'arrive-t-il lorsqu'on fait une opération sur des opérandes de types différents?
Appel au mécanisme de conversions des types des opérandes.
32
Hiérarchie de conversion de types
int → long → float → double → long double
33
valeur de z? int x; int y; int z; x = 5; y = 14; z = y / 3 + y / (x * 1.0f);
6 (4 + 2.8)
34
priorité de opérateurs
slide p.34 (non ça me temptais pas de recopier le tableau au complet lol)
35
C'est quoi un stream?
Séquence de caractères permettant de faire les opérations d'entrées/sorties.
36
ostream vs istream
ostream : gère les sorties (output) ex : cout istream : gère les entrées (input) ex : cin
37
cout (<< ou >>) ?
cout << (et cin >>)
38
Une ostream peut être redirigée vers ...
o l'écran (cout), la console d'erreur (cerr), o le fichier d'historique (clog), o un fichier (ofstream), o un espace en mémoire (ostringstream).
39
Une istream peut être redirigée vers ...
o le clavier (cin), o un fichier (ifstream), o un espace en mémoire (istringstream)
40
retour de chariot
"\n" ou endl
41
Comment demander son nom à l'utilisateur?
cout << "Entrez votre nom : " ; string nom; cin >> nom;
42
Comment lire une chaîne de caractères comprenant des espaces ou des tab?
Faut faire un buffer (un tableau de caractères vide) et mettre ce que le getline prend dedans. (quand il y a un délimiteur en trop on ajoute .ignore() pour l'enlever) char buffer[256]; cin.getline(buffer, 256); string nomCompose; nomCompose = buffer;
43
Comment fonctionne getline()?
getline(là où il stock ce qu'il extrait, nombre max de caractères qu'il extrait, délimiteur) le délimiteur par défaut est \n, car c'est fait pour prendre des lignes
44
Quoi écrire pour pouvoir utiliser cin/cout?
#include using namespace std; (juste dans les .cpp , PAS dans le .h)
45
Structure d'une fonction
"type du retour" nomFonction (type arg1, type arg2) { "corps de la fonction" }
46
D'habitude on déclare le prototype d'une fonction dans le .h et on l'implémente dans le .cpp, mais si il faut le faire dans le même fichier (exam) on fait comment?
exemple: int max (int a, int b); //déclaration int main() { blablabla int max (int a, int b) //implément. { ... } }
47
Comment fonctionnent les variables locales à une fonction?
-portée limitée à la fonction -À chaque appel de fonction, les variables locales sont définies, initialisées, utilisées et détruites après l’exécution de la fonction
48
Passage de paramètres par copie/valeur
Ne change pas la valeur des variables en dehors de la fonction (voir slide p.67)
49
C'est quoi un pointeur?
Un pointeur est une variable qui contient l’adresse d’une autre variable.
50
(Vrai ou Faux) Les pointeurs sont tous codés sur le même nombre de bits
Vrai
51
(Vrai ou faux) Déclarer un pointeur réserve de la mémoire pour la variable pointée
Faux (réserve juste un emplacement pour le pointeur)
52
Comment faire un pointeur p qui pointe vers x (un entier)?
int* p; (pointe vers un int) p = &x; (& donne l'adresse de x)
53
Que fait * devant un pointeur?
Donne le contenu de la variable pointée (donc la valeur au lieu de l'adresse)
54
(Vrai ou faux) On a le droit de modifier l'adresse de variables déclarées dans un programme. exemple: int unEntier; (&unEntier)++;
Faux! À ne PAS faire
55
Que signifie ad++ (ad est une adresse)?
ad désigne l'objet suivant en mémoire (ad+=10 et ad-=25 sont valides)
56
Qu'est-ce qu'un tableau et quand l'utilise-t-on?
Quoi : collection (regroupement) de variables de même type. Quand : * pour conserver les mêmes informations sur plusieurs objets différents. (exemple: les notes des étudiants d'une classe) * pour mémoriser des informations et revenir les traiter plus tard (buffer).
57
Déclaration d'un tableau
-Donner un nom, un type et une taille -Exemple: #include std::array monTableau;
58
Que faire si un tableau a une taille fixe?
Définir cette taille par une constante! (plus simple après de la changer) Exemple : const int MAX_CASES = 100; std::array monTableau;
59
(Vrai ou faux) monTableau[1] donne le premier élément du tableau
Faux, ça donne le deuxième (l'indexation commence à 0 et fini à n-1)
60
Qu'est-ce que ce code fait? Et à quoi sert auto? for (auto element : monTableau) { std::cout << element << " "; }
-code : parcours tout le tableau au complet -auto : détermine automatiquement le type (si on veut modifier on passe par &, voir p.85)
61
Qu'est-ce qui est mis dans le tableau? array monTableau2 {2, 4, 6};
2 4 6 0 0 (si on avait écrit {} ça aurait été juste des 0)
62
Comment éviter les problèmes d'accès hors-limite (débordement en dehors du tableau)?
➔ s'assurer en tout temps que la taille du tableau utilisé est suffisante pour contenir toutes les données que l'on compte utiliser. ➔ s'assurer en tout temps que l'indice utilisé ne dépasse pas les bornes du tableau.
63
Comment déclarer un tableau de 5 lignes et 3 colonnes?
array, 5> matrice; -pour accéder à une case : matrice[0][1] = 5; ou matrice.at(0).at(1) =5;
64
Comment remplir un tableau de 5 lignes et 3 colonnes?
array, 5> matrice2{ { {1, 2, 3}, //une ligne de 3 colonnes {6, 67, 7}, {4, 6, 9}, {2, 1, 2}, {92, 41, 3} //la 5eme ligne } }; //il y a 3 } à la fin (et au début)
65
Comment faire afficher un tableau 2d sous le bon format?
for (auto ligne : matrice_5x3) { for (auto element : ligne) { cout << element << "\t"; } std::cout << endl; } (tab entre les colonnes et retour de chariote entre les lignes)
66
Initialisation d'une chaîne de caractères
#include string chaine ("un mot"); ou string chaine = "un mot";
67
Définition d'un fichier
-Séquence d’octets terminée par une « marque de fin de fichier » (EOF). -Vus comme des flux d’octets ou de caractères
68
Ce qu'il faut inclure pour utiliser des fichiers
#include
69
ofstream vs ifstream
ofstream : pour écrire dans un fichier ifstream : pour lire un fichier
70
Comment ouvrir un fichier en écriture?
ofstream ofs {"FichierAEcrire.dat",ios::out}; ou si on veut l'ouvrir plus tard ofstream ofs; // ... ofs.open("FichierAEcrire.dat",ios::app); voir exemple p.103!
71
ios::out vs ios::app
ios::out : efface tout le contenu si le fichier existait déjà ios::app : écrit après ce qu'il y a dans le fichier (si il existait pas, il est créé dans les deux cas)
72
Lecture d'un fichier en mode texte
ifstream ifs {"FichierALire.dat", ios::in}; //le in c'est pour lecture en mode texte sans modification voir exemple p.105!
73
Passage de paramètres par référence
Permet de changer les valeurs des variables même après être sorti de la fonction voir exemple p.69!
74
À quoi sert le passage de paramètres par référence constante? (pareil comme réf normale mais ajoute const avant le type)
-éviter la copie -protéger la source contre les modifications
75
Passage de paramètres par adresse (pointeurs)
-fonction(&x, &y) -&x c'est l'adresse directement, mais si on avait mis int& ref_x, ça aurait la référence de l'adresse voir exemple p.71!