Fiche d’exercices Algorithmiques types de données élémentaires et opérations de base
Dissertation : Fiche d’exercices Algorithmiques types de données élémentaires et opérations de base. Recherche parmi 300 000+ dissertationsPar yvired • 21 Mars 2023 • Dissertation • 822 Mots (4 Pages) • 706 Vues
Fiche d’exercices Algorithmiques types de données élémentaires et opérations de base
Rappels de cours
Type | Taille | Intervalle |
byte | 8 bits | -128 � 127 |
short | 16 bits | -32768 � 32767 |
int | 32 bits | -2147483648 � 2147483647 |
long | 64 bits | -9223372036854775808 � 9223372036854775807 |
float | 32 bits | 3.40282347E+28 � 1.40239846E-45 Signe=1 bit, mantisse=23 bits, exposant =8bits |
double | 64 bits | 1.79769313486231570E+308 � 4.9406545841246544E-324 Signe=1 bit, mantisse=52 bits, exposant=11 bits |
Exercice
- Définir pour un type élémentaire les notions d’amplitude, de précision locale et de taille
- Lister les types élémentaires courants de données, en précisant pour chacun d’entre eux les ordres de grandeur d’amplitude et de précision, ainsi que le nombre de bits utilisés pour leur représentation dans les langages java, C et dans les langages java, C et C# :
null, byte, short, int, long, float, double, boolean, and char, Decimal, String et Array, Date.
Donner les conséquences possibles d’un débordement d’amplitude
- Donner les conséquences possibles d’un manque de précision
- Impact de la précision sur la division entière
- Définition de l’epsilon de la machine
- Pseudo-comparaison des réels
Exercice
- Quels sont les résultats des opérations suivantes en java ou en C(on pourra essayer certaines de ces opérations sous Excel ou avec une calculatrice) :
- Y=(1/2)*3 =……. ; Y=1*3/2=…….Y=1*(3/2) …..Y=1.0*3/2……….
- Y=100 000 000 + 1/3 -1/3 =……. Double Y=100 000 000.0+ 1/3 -1/3
- Quelle est la taille du trou en x=1030 pour un réel double en java ? en C ?.
- On considère l’algorithme qui calcule la racine carrée d’un nombre, en utilisant la suite de newton.
- Quel type de donnée convient pour la déclaration d’un tel nombre ?
- Quel est le critère d’arrêt à utiliser pour mettre fin aux itérations ?
- Quel est le critère à utiliser dans le programme de test pour vérifier la validité de notre algorithme ?
- Quel est le plus grand entier qui peut être représenté
- sous forme de réel double avec une erreur absolue maximale de 1 ?
- sous forme de réel simple avec une erreur absolue maximale de 1 ?
Exercice : Clés de bd.
- Dans les bases de données, on utilise très souvent un entier (de java) comme type du champ clé (champ servant à identifier les lignes). Pour éviter que deux clés attribuées par deux personnes distinctes aient le même code, on donne aux clés la forme préfixe+compteur, où le préfixe est un entier dépendant de celui qui donne la clé, et le compteur est une valeur numérique séquentielle. Si on suppose que la longueur totale de la clé est de dix caractères, quelle est la valeur maximale du préfixe ? Qu’adviendra-t-il si un préfixe dépassant cette valeur de 2 est donné ?
Exercice : Somme de séries
- Proposer un algorithme pour le calcul efficace et précis des séries suivantes :
- Sn=somme(k=1 à n){xk/k!}
- Sn=somme(k=1 à n){1/k2}
- Sn=somme(k=1 à n){1/k }
Calcul de grandes fonctions
- Quel est le plus grand nombre dont le factoriel peut être calculé en tant que entier long ?
- A partir de ce nombre, quelle est l’erreur absolue et l’erreur relative maximale commise sur l’inverse de factorielle n, factorielle étant calculée comme réel double ?
- Proposer un algorithme pour le calcul de Ckn=combinaisons de k dans n
Comparaison de réels
- Quels dangers potentiels posent le code suivant ?
Int n=8;
double h=1/n ; double x=0;
int i=0 ;
While(x !=1) {x=h*i;i=i+1;}
- Le modifier pour avoir un code correct
Exercice
- Enoncer le principe DRY
- Donner les règles d’application du principe DRY pour les constantes et pour les blocs de codes
- Proposer un fragment de code non conforme au principe DRY. Le modifier pour en assurer la conformité.
Pb de représentation (TP)
A essayer avec des valeur initiales pour a et b qui sont des puissances de 4 + 0.1, pour d’autres valeurs, ou en changeant les double en float ...( http://prevert.upmf-grenoble.fr/Prog/Java/CoursJava/TypeDeDonneePrimitifs.html)
public void xxx(){
double a = 64.1;
double b = 63.1;
// pour d’autres valeurs de a et b
// la suite des x est (1, 1, 1, ...
double x = 1.0;
for (int i=1; i <= 14; i++){
System.out.println(""+i+" "+x);
...