• Aucun résultat trouvé

Chapitre 7 Documentation, tableaux et chaînes de caractères

N/A
N/A
Protected

Academic year: 2022

Partager "Chapitre 7 Documentation, tableaux et chaînes de caractères"

Copied!
23
0
0

Texte intégral

(1)

Chapitre 7

Documentation, tableaux et chaînes de caractères

Jean Privat

Université du Québec à Montréal

INF2170 — Organisation des ordinateurs et assembleur Automne 2013

(2)

Plan

1 Documentation

2 Tableaux

3 Chaînes de caractères

(3)

Plan

1 Documentation

2 Tableaux

3 Chaînes de caractères

(4)

Historique

Programmation en langage machine On se met au niveau de la machine

Programmation en assembleur

On facilite la mise au niveau de la machine

Programmation en langage de plus haut niveau On s’éloigne du niveau de la machine

On s’approche d’un niveau plus humain

(5)

Trois niveaux de la programmation

Exactitude

Le programme fait ce qu’il est sensé faire Même dans les cas limites : robustesse

Clarté

Le programme est lisible et compréhensible par un informaticien humain

Même à 3 heures du matin

Efficacité

Le programme est exécuté par la machine avec le moins de ressource possible (processeur, mémoire, énergie)

(6)

Exactitude des programmes

Un programme dit ce qu’il fait Documentation

Piège : documentation implicite et perception de l’utilisateur

Un programme fait ce qu’il dit Sinon c’est un bogue

(7)

Sévérité des bogues

Critique

Rend inexploitable des programmes qui ne lui sont pourtant pas associés, ou casse globalement le système, ou cause de sévères pertes de données, ou encore crée une faille dans la sécurité du système

Grave

Rend le programme en question inutilisable ou

presque, ou cause des pertes de données, ou introduit une faille de sécurité permettant l’accès aux comptes des utilisateurs qui se servent du programme

(8)

Sévérité des bogues (suite)

Important

A un effet majeur sur l’utilité du programme, tout en ne le rendant pas complètement inutilisable

Normal

La valeur par défaut

Mineur

N’affecte pas l’utilité du programme, et qui est a priori simple à résoudre

Souhait

Demande d’une fonctionnalité, mais aussi pour une limitation due à la conception du programme

(9)

Bogues

"There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies." — C.A.R. Hoare.

"If debugging is the process of removing software bugs, then programming must be the process of putting them in." — Anonyme.

"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." — Anonyme.

(10)

Bogues

"The only difference between a bug and a feature is the documentation." — Anonyme.

"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." — Brian W. Kernighan.

(11)

Signaler un bug à un programmeur

Règles

Dire précisément ce qui ne fonctionne pas Dire précisément ce qui était attendu

Dire précisément comment arriver à ce résultat incorrect (utilisation pas-à-pas)

Décrire les symptômes

(et non proposer un diagnostic)

http://www.chiark.greenend.org.uk/

~sgtatham/bugs-fr.html

(12)

Clarté des programmes

Un programme

Représente un algorithme sous une forme interprétable par une machine

Est destiné à être modifié, corrigé et revu : maintenance

Donc

On doit programmer en pensant à la fois à la machine et à l’humain

(13)

Relecture de code

(14)

Rendre un programme clair

Règles

Documenter au fur et a mesure Utiliser des identifiants sémantiques Structurer

Factoriser

En Pep/8

Plusieurs niveaux de commentaires : programme, fonctions, gros blocs, groupe d’instructions

Déclaration de constantes (.EQUATE)

Réservation de mémoire et de variables globales Utiliser les structures de bases (while, if, etc.)

(15)

Efficacité des programmes

Principe 1

On n’optimise que les parties les plus exécutées (sur le chemin critique)

Corollaire

Toute partie non critique d’un programme peut être désoptimisée

Principe 2

L’optimisation ne doit pas nuire à la correction et à la clarté

(16)

Efficacité des programmes (suite)

Moyens

Réduire le nombre d’instructions

Changer les structures de données et les algorithmes

Dilemme

Parfois il faut choisir entre plusieurs ressources Mémoire et temps

Latence et débit

(17)

Plan

1 Documentation

2 Tableaux

3 Chaînes de caractères

(18)

Rappel sur les tableaux

Principe

Un tableau est une séquence continue de valeurs en mémoire

Exercice

Écrire un programme qui lit 10 entiers et les affiche dans l’ordre croissant

(19)

Tableau à deux dimensions

Matrices

n lignes et m colonnes

Idée : un grand tableau à une dimension Travailler avec un tableau tab de nm cases La case (i,j) se trouve à mem[tab + (i∗n+j)∗size]

Pièges

Si i > n, on est encore dans le tableau Pas de multiplication en Pep/8

Exercice

Lire une matrice 4 par 3 et afficher sa transposée

(20)

Tableau à deux dimensions (suite)

Colonnes pas homogènes

Chaque ligne n’a pas le même nombre de colonnes

Idée : un tableau de pointeurs vers des tableaux La case (i,j) se trouve à mem[mem[tab+i∗2]+j∗size]

Piège

Comment stocker les dimensions ?

Exercice

Refaire l’exercice sur l’alphabet phonétique de l’OTAN

(21)

Plan

1 Documentation

2 Tableaux

3 Chaînes de caractères

(22)

Chaîne de caractères

Saisie d’une chaîne Idée écrire STRI

Pièges

Quand s’arrêter ? Où stocker ?

Comment ne pas déborder ? Exercice

Le faire

(23)

Chaînes de caractères

Saisies de plusieurs chaînes

En général, on ne lit pas une seule chaîne

Piège

Comment ne pas gaspiller la place

Exercice

Écrire un programme qui lit plusieurs lignes puis les affiche dans l’ordre inverse

Références

Documents relatifs

Nous avons recueilli sur trois saisons (1988/1989, 1994/1995 (dernière saison avant la professionnalisation) et 2004/2005) au niveau de deux clubs régionaux, le Biarritz Olympique

C’est ainsi qu’à la lecture de l’arrêté du 28 mars 2009 déléguant au CNOSF les crédits destinés au AP, les magistrats de cette juridiction qualifient le Comité, en

Dans l'industrie pharmaceutique, il peut participer à la mise au point de nouveaux médicaments, animer un atelier de fabrication ou superviser le contrôle qualité.. Ces

Les valeurs des paramètres des méthodes peuvent être de 2 types : soit une référence vers l’instance d’une classe, soit une valeur d’un type atomique. Si le paramètre de

* Appuyez sur "save" (sauvegarder) pour sortir ou appuyez sur l'icône "Milk Setup" (configuration de lait) pour passer à l'écran suivant.... Exemple illustré

La Française vient de plus en plus souvent conclure ses points au filet... Avoir un grand service est devenu incontournable pour ceux et celles qui veulent atteindre le très haut

En C++, les chaînes de caractères sont stockées dans des variables de type string : string prenom = "Robert"; // string pour les chaînes de caractères.. Les chaînes

Pour toutes les applica- tions de détection des seuils de niveau, convient particulièrement aux adhérences, au process NEP et aux médias avec différentes valeurs de