Exam 1 (module 1) Flashcards

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
Q

Chiffre qui représente true (en C++)? Et false?

A

true : 1
false : 0

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

Constantes symboliques vs constantes typées

A

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;

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

Analyse lexicale

A

Le compilateur identifie les différents symboles qui composent le programme

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

Crible

A

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.

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

Analyse syntaxique

A

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.

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

Analyse sémantique

A

Sert à détecter les autres erreurs que l’on peut commettre en
écrivant un programme, comme entre autres, les erreurs de
typage.

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

Qu’arrive-t-il lorsqu’on fait une opération sur des opérandes de types différents?

A

Appel au mécanisme de conversions des types des opérandes.

32
Q

Hiérarchie de conversion de types

A

int → long → float → double → long double

33
Q

valeur de z?

int x;
int y;
int z;
x = 5;
y = 14;
z = y / 3 + y / (x * 1.0f);

A

6 (4 + 2.8)

34
Q

priorité de opérateurs

A

slide p.34 (non ça me temptais pas de recopier le tableau au complet lol)

35
Q

C’est quoi un stream?

A

Séquence de caractères permettant de faire les opérations d’entrées/sorties.

36
Q

ostream vs istream

A

ostream : gère les sorties (output)
ex : cout
istream : gère les entrées (input)
ex : cin

37
Q

cout (&laquo_space;ou&raquo_space;) ?

A

cout «
(et cin&raquo_space;)

38
Q

Une ostream peut être redirigée vers …

A

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
Q

Une istream peut être redirigée vers …

A

o le clavier (cin),
o un fichier (ifstream),
o un espace en mémoire (istringstream)

40
Q

retour de chariot

A

“\n” ou endl

41
Q

Comment demander son nom à l’utilisateur?

A

cout &laquo_space;“Entrez votre nom : “ ;
string nom;
cin&raquo_space; nom;

42
Q

Comment lire une chaîne de caractères comprenant des
espaces ou des tab?

A

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
Q

Comment fonctionne getline()?

A

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
Q

Quoi écrire pour pouvoir utiliser cin/cout?

A

include<iostream></iostream>

using namespace std; (juste dans les .cpp , PAS dans le .h)

45
Q

Structure d’une fonction

A

“type du retour” nomFonction (type arg1, type arg2)
{
“corps de la fonction”
}

46
Q

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?

A

exemple:
int max (int a, int b); //déclaration

int main()
{
blablabla
int max (int a, int b) //implément.
{

}
}

47
Q

Comment fonctionnent les variables locales à une fonction?

A

-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
Q

Passage de paramètres par copie/valeur

A

Ne change pas la valeur des variables en dehors de la fonction
(voir slide p.67)

49
Q

C’est quoi un pointeur?

A

Un pointeur est une variable qui contient l’adresse d’une autre variable.

50
Q

(Vrai ou Faux) Les pointeurs sont tous codés sur le même nombre de bits

A

Vrai

51
Q

(Vrai ou faux) Déclarer un pointeur réserve de la mémoire pour la variable pointée

A

Faux (réserve juste un emplacement pour le pointeur)

52
Q

Comment faire un pointeur p qui pointe vers x (un entier)?

A

int* p; (pointe vers un int)
p = &x;
(& donne l’adresse de x)

53
Q

Que fait * devant un pointeur?

A

Donne le contenu de la variable pointée (donc la valeur au lieu de l’adresse)

54
Q

(Vrai ou faux) On a le droit de modifier l’adresse de variables déclarées dans un programme.

exemple:
int unEntier;
(&unEntier)++;

A

Faux! À ne PAS faire

55
Q

Que signifie ad++ (ad est une adresse)?

A

ad désigne l’objet suivant en mémoire (ad+=10 et ad-=25 sont valides)

56
Q

Qu’est-ce qu’un tableau et quand l’utilise-t-on?

A

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
Q

Déclaration d’un tableau

A

-Donner un nom, un type et une taille
-Exemple:
#include <array>
std::array<int,5> monTableau;</array>

58
Q

Que faire si un tableau a une taille fixe?

A

Définir cette taille par une constante! (plus simple après de la changer)
Exemple :
const int MAX_CASES = 100;
std::array<int, MAX_CASES> monTableau;

59
Q

(Vrai ou faux) monTableau[1] donne le premier élément du tableau

A

Faux, ça donne le deuxième (l’indexation commence à 0 et fini à n-1)

60
Q

Qu’est-ce que ce code fait? Et à quoi sert auto?

for (auto element : monTableau)
{
std::cout &laquo_space;element &laquo_space;” “;
}

A

-code : parcours tout le tableau au complet
-auto : détermine automatiquement le type
(si on veut modifier on passe par &, voir p.85)

61
Q

Qu’est-ce qui est mis dans le tableau?

array<int, 5> monTableau2 {2, 4, 6};

A

2 4 6 0 0 (si on avait écrit {} ça aurait été juste des 0)

62
Q

Comment éviter les problèmes d’accès hors-limite (débordement en dehors du tableau)?

A

➔ 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
Q

Comment déclarer un tableau de 5 lignes et 3 colonnes?

A

array<std::array<int,3>, 5> matrice;

-pour accéder à une case : matrice[0][1] = 5; ou
matrice.at(0).at(1) =5;

64
Q

Comment remplir un tableau de 5 lignes et 3 colonnes?

A

array<std::array<int, 3>, 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
Q

Comment faire afficher un tableau 2d sous le bon format?

A

for (auto ligne : matrice_5x3)
{
for (auto element : ligne)
{
cout &laquo_space;element &laquo_space;“\t”;
}
std::cout &laquo_space;endl;
}

(tab entre les colonnes et retour de chariote entre les lignes)

66
Q

Initialisation d’une chaîne de caractères

A

include <string></string>

string chaine (“un mot”);
ou
string chaine = “un mot”;

67
Q

Définition d’un fichier

A

-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
Q

Ce qu’il faut inclure pour utiliser des fichiers

A

include<fstream></fstream>

69
Q

ofstream vs ifstream

A

ofstream : pour écrire dans un fichier
ifstream : pour lire un fichier

70
Q

Comment ouvrir un fichier en écriture?

A

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
Q

ios::out vs ios::app

A

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
Q

Lecture d’un fichier en mode texte

A

ifstream ifs {“FichierALire.dat”, ios::in};
//le in c’est pour lecture en mode texte sans modification

voir exemple p.105!

73
Q

Passage de paramètres par référence

A

Permet de changer les valeurs des variables même après être sorti de la fonction

voir exemple p.69!

74
Q

À quoi sert le passage de paramètres par référence constante? (pareil comme réf normale mais ajoute const avant le type)

A

-éviter la copie
-protéger la source contre les modifications

75
Q

Passage de paramètres par adresse (pointeurs)

A

-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!