0% ont trouvé ce document utile (0 vote)
25 vues8 pages

Notes 1

Le document traite des langages de programmation, en particulier du langage C, en expliquant son évolution, ses types, et ses structures. Il aborde également les concepts de compilation, d'interprétation, et les différents types de données ainsi que les instructions et déclarations en C. Enfin, il présente les spécificateurs de classe de mémorisation et les conversions de type.

Transféré par

diere bodian
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
25 vues8 pages

Notes 1

Le document traite des langages de programmation, en particulier du langage C, en expliquant son évolution, ses types, et ses structures. Il aborde également les concepts de compilation, d'interprétation, et les différents types de données ainsi que les instructions et déclarations en C. Enfin, il présente les spécificateurs de classe de mémorisation et les conversions de type.

Transféré par

diere bodian
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Instructions au préprocesseurs (instructions diézé ex : #include #define

etc).

on est parti des langages machines aux langages structurés (C par


exemple).

C est un langage compilé :

le langage machine c’est tout simplement le langage binaire, les directives


que reçoit la machine sont des directives transformées en binaire pour la
machine.

Langage d’assemblage : qui est associé à des assembleurs (transformateur


des instructions du langage donné en binaire).

Les ordinateurs n’ont pas tous exactement le même répertoire


d’instructions machine.

Langage orienté machine : l’emploi de l’assembleur nécessite une bonne


connaissance du fonctionnement de l’ordinateur utilisé.

Langage évolué (orienté problème) : utilisation sur toutes les machines


(ex : langage C).

Langage compilé : traduire l’ensemble d’un programme écrit en langage


évolué (programme source) en un programme machine (programme
objet), la compilation est réalisée par un compilateur. Un programme
objet est directement exécuté par le système d’exploitation (un
exécutable).

Langage interprété : le code peut passer par le compilateur ou pas mais


finit toujours dans l’interpréteur (un agent du SE). Le code n’est pas
transformé en binaire.

Un logiciel est un système (quand il manipule les ressources du système)


ou une application (quand ça se situe sur les hautes couches).

Le langage C est un langage non portable.


Langage structuré : langage utilisant des structures de contrôle.
Langage procédural : langage utilisant des fonctions pour résoudre un
problème.

(antivirus, pilotes, virus, clavier, etc. c’est programmé en C)

C et ses différentes versions :


K&R version de Kermighan et Ritchie (1978)
après le succès de UNIX, normes ANSI (américain)

- version ANSI C (ou C89) en 1989 (norme américaine)


- ISO C ou C90 (norme internationale)
- version plus récentes (C99, C11)

depuis 1999 (C99 la version la plus supportée) il n’y a pas eu de


changement majeur

- Décembre 2011 (adoption de ISO C11)


structures anonymes,
support unicode amélioré,
suppression de gets() : qui ne marche pas par moment

Structure générale d’un programme

le compilateur comprends 3 sous parties : le préprocesseur (il s’occupe des


instructions diézé, ensuite il produit un fichier), le vrai compilateur
(analyse syntactique et sémantique), éditeur de lien (génération de fichier
exécutable).

Inclusion de fichier
#include<stdio.h>
#include<<mon_fic.h>> (on dit à l’environnement où trouver le fichier).

Jeu de caractères

l’Unicode permet de représenter théoriquement tous les langues du monde,


même les caractères qui ne font pas parti du code ASCII.
Jeu de caractère source : l’ensemble des caractères qu’on peut trouver dans
un code source (permettant d’écrire les programme source).

Jeu de caractère d’exécution : l’ensemble des caractère qu’on trouver à


l’exécution (retour à la ligne par exemple).

Jeu de caractère étendu : l’ensemble de tous les caractères pouvant être


utilisés

caractères multi-octets : ANSI C99 définit le type wchar_t permettant de


déclarer des caractères n’appartenant pas au tableau ASCII

les trigraphes

suite de 3 caractères exemple :??=,??(

les identificateurs (on les utilise pour définir les noms des fonctions,
macro-instructions, types, variable, etc)

tout ce qui suit le # est une macro

les 4 catégories d’identificateurs

- les noms d’étiquettes


- les marqueurs de structures, d’unions et d’énumérations
- les noms des membres d’une structure ou d’une union
- les identificateurs ordinaires (tout autre que les 3 premiers)

des identificateurs appartenants à des catégories différentes peuvent être


identiques. Les mêmes noms peuvent être utilisés pour des champs de
structures différentes.

Portée d’un identificateur

en C il existe 4 portées :
- prototype d’une fonction (portée la plus limitée)
- fonction
- bloc
- fichier
la notion de type

le type d’une variable :


- détermine l’espace requis pour le stockage ,
- détermine la façon de coder, d’interpréter
- d’exploiter l’information dans la zone réservée.

Le type d’une fonction : détermine la façon d’interpréter et d’exploiter sa


valeur de retour

nous avons 2types de type :

- les types prédéfinis :


- types de base (entiers, flottantes)
- type void
- types dérivés

Type _Bool

introduit par C99


1= true, 0= false

dans stdbool.h
bool est défini pour _Bool

true et false sont des macros

les constantes défini dans limits.h

CHAR_MIN : la valeur minimal d’un char


SCHAR_MIN : la valeur minimal d’un char signé
UCHAR_MIN : la valeur minimal d’un char non signé

Exercice : Ecrire un programme qui permet d’afficher les valeurs qui se


trouves dans le tableaux des intervalles de valeurs usuels (p48).

De plus le fichier définit les constantes CHAR_BIT et


MB_LEN_MAX pour respectivement désigner le nombre de bits dans un
bytes (8 habituellement) et le nombre maximum d’octets dans un caractère
multi-octets.

Type à taille définie

Introduit en C99
ils sont définis dans stdint.h

intN_t : la taille de la variable est exactement N bits


int_leastN_t : la taille est au moins N bits
int_fastN_t : le type le plus rapide d’une taille d’au moins N bits
intmax_t : le type entier de plus grande taille implémenté
intptr_t : assez grand pour implémenter un pointeur

s’il s’agit de types non signé on rajoute un u

pour les utiliser on inclus stdint.h

constantes définies dans stdint.h

wchar_t, wint_t, size_t on remplace le t par MIN ou MAX

page51 (deimal xol ko)

Type flottants (réels et complexes)

le fichier float.h définit les constantes symboliques qui décrivent tous les
aspects d’une présentation donnée réelle flottante (p56 et 57 démal xoliko
boubaax).

Le type d’une constante est déterminée par 2 choses


- sa valeur
- sa notion (parfois elle seule suffit)

CONSTANTE CARACTERE

tout ce qui se trouve entre des simples cotes sont des caractères (selon le
standard). Même si c’est plusieurs caractères.
Expressions et opérateurs

Expression : suite syntaxiquement correcte d’opérateurs et d’opérande


(f(25) est une expression, les parenthèses représente l’opérateur et le
paramètre correspond à l’opérande).

Lvalue (expression qui désigne une zone mémoire, comme une variable) ,
rvalue (l’ordre d’égalité) l’ordre correcte est lvalue = rvalue
par exemple on ne peut pas faire 5=x mais plutôt x=5. Somme (x,y) et non
(x,y) Somme.

Une expression a un type et une valeur (si le type n’est pas void)

En C l’opérateur % n’est permis que pour les entiers

Du point de vue du nombre de leurs opérandes, on a 3 types d’opérateurs :


- les opérateurs unaires (ont tous la même priorité)
- les opérateurs binaires
- les opérateurs ternaires

Autres opérateurs

- appel de fonction ( ) (ce qui vient avant les parenthèses est un pointeur
- conversion de type, (int)x
x doit être de type scalaire, c’est à dire pointeur ou type arithmétique
- sizeof
- opérateur séquentiel (ou virgule), (a=2,b=7 renvoie 7)
- opérateur ternaire

les opérateurs (and, or, xor etc …) sont définies dans le fichier iso646.h
on peut inclure donc ce fichier pour utiliser ‘and’ au lieu de ‘&&’.

page 86 (maîtrisé le tableau).

Exercice : Afficher le motif binaire d’une valeur sans utiliser l’opérateur


de la division arithmétique, mais en utilisant les opérateurs bit à bit.
Les conversions de type
implicite : effectué automatiquement par le compilateur
explicite : exprimée avec l’aide de l’opérateur de conversion (cast)

page(90) à connaître (relatif aux conversion de type)

les instructions et déclaration

Exercice :
1. #define N 25
2. int f(int x) ;
3. void g( ){…..}
4. int i ;
5. const int i=5 ;
6. #define double(x) 2*(x)

Déclaration : fixer l’interprétation et les propriétés d’un ou de plusieurs


identificateurs en leur associant un type. (prototypes de fonctions,
définitions de type)

Définition : c’est une déclaration qui alloue de l’espace mémoire à un


objet ou une fonction.

Instructions : préciser les actions à effectuer, contrôler le déroulement


d’un programme. Elles sont traitées de façon séquentielle en générale sauf
lorsque l’une d’elles déclenche un saut . Une instruction qui n’est pas un
bloc doit se terminer par un point virgule.
Instruction-expression ( expression suivie de point virgule f(int a); )

page 105 à 115.

classes de mémorisation (sur les variables) : p128


classes d’allocations (
statique : la variable est créée et initialisée une seule fois, avant le début
du programme. Elle existera tout au long de l’exécution.
Automatique : la variable est créée à chaque fois que le programme entre
dans le bloc où elle est définie. lorsque ce bloc fini, la mémoire occupée
par elle est libérée
)

les spécificateurs de classe de mémorisation

auto
register
static
extern

Vous aimerez peut-être aussi