• Aucun résultat trouvé

Algorithmique et Langage C

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithmique et Langage C"

Copied!
19
0
0

Texte intégral

(1)

Algorithmique et Langage C

Algorithmique et Langage C

www.polytech.unice.fr/žvg/index-xidian.html

Granet Vincent - Vincent.Granet@univ-cotedazur.fr

Xi’an - Octobre 2019 - Avril 2020

(2)

Algorithmique et Langage C Types élémentaires

Types élémentaires

(3)

Algorithmique et Langage C Types élémentaires

Notion de type

Untypeest un ensemble de valeurs qui possèdent les mêmes caractéristiques

langages de programmation typésvsnon typés Typesélémentairesvsstructurés

Types élémentairesprédéfinis entiers

réels booléen caractère

Types élémentairesconstruits énumérés

intervalles

(4)

Algorithmique et Langage C Types élémentaires

Types entiers

Entiers

représente Z, mais ensemblefiniet pas d’associativité (e.g.+) arithmétique exacte

cardinalité2n, pournbits il existe unminet unmax nombres négatifs

complément à 1 :[−2n−1−1,2n−1−1]

complément à 2 :[−2n−1,2n−1−1]

127 = 28−1 = 0 1 1 1 1 1 1 1 35 = 25+ 21+ 20= 0 0 1 0 0 0 1 1

−35 = 1 1 0 1 1 1 0 1

−1 = 1 1 1 1 1 1 1 1

−128 = 1 0 0 0 0 0 0 0

(5)

Algorithmique et Langage C Types élémentaires

Types entiers

Types entiers signés en C

short [ int ] int

long [ int ] long long [ int ]

<limits.h>definit les minimums et maximums pour les types arithmetiques.

#define INT_MIN −32767

Exemples

123 (decimal) 0173 (octal)

0x7B (hexadecimal) 123LL (long long int)

(6)

Algorithmique et Langage C Types élémentaires

Types entiers

Types entiers non signés en C

unsigned short [ int ] unsigned int

unsigned long [ int ] unsigned long long [ int ] 0..2n−1

l’arithmétique est modulo2n i.e.max + 1 == 0

Exemples

123 (decimal) 0173 (octal) Ox7b (hexadecimal) 123u (unsigned int) 123ul (unsigned long)

(7)

Algorithmique et Langage C Types élémentaires

Types réels

Types réels

représente R, mais ensemblefiniet pas d’associativité (e.g.+) type entier6⊂type réel

arithmétique inexacte- résultats approchés représentationvirgule flottante- norme IEE 754 r= (s,e,m) = (−1)s×m×Be

avecs∈ {0,1},−E<e<E et−M<m<M

min - max

32 bits 64 bits min 1.4 10−45 4.9 10−324 max 3.4 1038 1.8 10308

(8)

Algorithmique et Langage C Types élémentaires

Types réels

Types réels en C

float double long double

Exemples

0. .0 2.123 3e1 1.3E-12 2e+23 12.34f 0e-34F 0.0L 98.e-4l

(9)

Algorithmique et Langage C Types élémentaires

Type booléen

Type booléen

ensemble ordonné{faux,vrai}

table de vérité

p q non p p et q p ou q p xou q

faux faux vrai faux faux faux

vrai faux faux faux vrai vrai

faux vrai vrai faux vrai vrai

vrai vrai faux vrai vrai faux

De Morgan

non (p ou q) = non p et non q non (p et q) = non p ou non q

(10)

Algorithmique et Langage C Types élémentaires

Type booléen

En C

en C pas de type booléen !

représentés par des valeurs compatibles avec le type entier 0 = faux et6=0 = vrai

(11)

Algorithmique et Langage C Types élémentaires

Types caractères

Types caractères

différents jeux de caractères normalisés Ascii,Ebcdic,ISO-8859,Unicode

Unicode10.0 (norme ISO/IEC 10646) comprend plus de 136 000 caractères différents, pour 139 écritures

(12)

Algorithmique et Langage C Types élémentaires

Types caractères

Type caractères en C

[ unsigned ] char

valeur entière, codée sur 8 bits, toujours positive (ordinal du caractère) utilisable dans une expression entière

/ '0' <= c <= '9' / i n t x = c − '0' + 10;

/ 10 <= x <= 19 /

Exemples

'a' 'z' '\141' (a-ascii) '\077' (?-ascii) '\'' '\\'

'\a' (audible bell)

'\b' (backspace) '\f' (form feed) '\n' (newline) '\r' (carriage return) '\t' (horizontal tab) '\v' (vertical tab)

(13)

Algorithmique et Langage C Types élémentaires

Types énumérés

Types énumérés

construction du type par énumération des valeurs

couleurs = ( vert, bleu, gris, rouge, jaune ) nbpremiers = ( 1, 3, 5, 7, 11, 13 )

voyelles = ( 'a', 'e', 'i', 'o', 'u', 'y' )

Type énuméré en C

uniquement des identificateurs deconstantes entières, et le compilateur les lie automatiquement vers des entiers en ordre croissant (en partant de 0 par défaut)

enum color {green, red, blue};

enum color {green=0, red=1, blue=2};

(14)

Algorithmique et Langage C Types élémentaires

Types énumérés

les valeurs des constantes de l’énumération peuvent être choisies par le programmeur

enum color {green = 20, red = −10, blue};

/ blue == 9 / enum spaces {

bspace='\b', newline='\n', creturn='\r', tab='\t', vtab='\v'

};

(15)

Algorithmique et Langage C Types élémentaires

Types énumérés

les valeurs peuvent être égales :

enum color {green=20, red=−10, blue=−10};

les identificateurs de constante de plusieurs types énumérés d’un même blocdoiventtous être differents

(16)

Algorithmique et Langage C Types élémentaires

Types intervalles

Types intervalles

permet de construire un intervalle de valeurs sur un type de base.

on spécifie une bornemin et une bornemax, avecmin6max les opérations possibles sur les intervalles sont celles admises sur le type de base.

naturel = [0 ; entmax]

lettres = ['a' ; 'z']

Pas de type intervalle en C !

(17)

Algorithmique et Langage C Types élémentaires

Représentation des types C

Représentations internes en C

les tailles des types élémentaires ne sont pas spécifiées par le langage (elles dépendent de la machine)

par définition sizeof(char) == 1 les entiers :

sizeof(char)6sizeof(short)6sizeof(int)6sizeof(long)6sizeof(long long) idem pour lesunsigned

(8,16,32,32,32 Sparc Sun (32 bits) 8,16,32,64,64 PC (64 bits)

(18)

Algorithmique et Langage C Types élémentaires

Représentation des types C

Représentations internes en C

les réels

sizeof(float)6 sizeof(double)6 sizeof(long double) (32,64,64 DEC Alpha (32 bits)

32,64,128 PC (64 bits)

(19)

Algorithmique et Langage C Types élémentaires

Représentation des types C

Représentations internes en C

les caractères

dépend de l’implémentation(signée, non signée, pseudo-non signée)

c h a r c = 255;

i f (c/−1 == 1) printf("signed\n");

e l s e i f (c/−1 == 0) / K & R / printf("unsigned\n");

e l s e i f (c/−1 == −255)

printf("unsigned (ansi) ou

pseudo−unsigned\n");

e l s e fprintf(stderr,"étrange\n");}

le problème de la constante EOF

Références

Documents relatifs

Il faut déterminer les formules à écrire dans les cellules D2, E2, F2 , D3 et E3 pour pouvoir les faire glisser vers le bas ( copier-glisser).. Fonctions disponibles (aide au bas

En général, le poids moyen d'un circuit pulsatif n'est ni maximal (comme pour les systèmes max-plus) ni minimal (comme pour les systèmes min-plus).. Sous certaines conditions,

Pans la première partie on donne les conditions pour l'existence des points de min-max de Pareto et une condition nécessaire pour les fonctions différentiables en direction.. Dans

Pour produire ce son, il faut dans un premier temps réaliser le montage expérimental, puis dans un deuxième temps, donner les instrucGons au microcontrôleur via le programme

Par exemple dans (Chen et al., 2004), (Chen et al., 2010) les auteurs s’intéressent à la synthèse d’une commande en boucle fermée (retour d’état) pour stabiliser un

Revisit Proposition 5 and remark that if m &lt; (log 1.5874/ log 3)opt(G) ≈ 0.42opt(G), then the parameterized algorithm of Proposition 5 runs faster than that of Proposition 4

L'appareil ne doit pas être branché à l'alimentation électrique lors de l'installation - vous pourriez vous électrocuter.. Au moment de l'installation, assurez-vous que le

Un exercice classique autour de la loi uniforme qui permet en fait (2 ème question) de répondre à un petit « problème pratique »