Banniere
Bonjour visiteur!
Rechercher

Les dernières News
Derniers articles
Liens intéressants
Publicité
Article de la catégorie Informatique

Le langage C

I)Introduction



La programmation, c'est la résolution d'un problème par un ordinateur.
Il existe plusieurs types de langages:
Tout d'abord, les langages impératifs(C, Pascal, Fortran, Assembleur, ...) où on donne une séquence d'ordres à la machine). Ensuite, les langages fonctionnels(Scheme, LISP, CAML, ...), les langages orientés objet(C++, Java, SmallTalk, ...), les langages à balisages(HTML, XML, SGML, Latex, ...) et enfin les langages déclaratifs(Prolog, Clisp) où on utilise des connaissances ainsi que la description du problème.

En programmation impérative, le programme est composé d'une séquence d'instructions élémentaires qui définit comment et dans quel ordre les opérations s'enchaînent.



Les structures de données sont passives en programmation impérative, les instructions s'appuient sur les structures de données.

Plan du cour:



- La structure d'un programme C
- Types élémentaires de données, expressions
- Structures de contrôles
- Notion de fonction, entrée/sortie, modularité des programmes
- Tableaux, listes
- Pointeurs et gestion de la mémoire
- Types de données composées, structures, unions
- Récursion


II)La structure d'un programme C





Hello.c
/* Ce programme dit bonjour
*/


#include <stdio.h>

main()
{
printf("Bonjour\n");

}

Pour obtenir un programme exécutable, il y a 2 étapes:
1)la compilation du(ou des) fichier(s) source(s) : gcc -c -O hello.c
2)L'édition de liens : gcc -o hello hello.o
-O active les optimisations
-o permet de choisir le nom de l'executable (output)

Autre exemple:

add2.c

/* ... */
#include <stdio.h>
#include "simpio.h"


main()
{
int n1, n2, total;
printf("Ce programme calcule la somme de 2 entiers\n");
printf(" 1er entier: ");
n1 = getInteger();
printf("2e entier: ");
n2 = getInteger();
total=n1+n2;
printf("La somme vaut: %d\n", total);
}

simpio.h

int getInteger();


simpio.c

#include <stdio.h>
int getInteger()
{
int n;
scanf("d", &n);
return(n);
}


#include: Inclut le fichier définissant les fonctions standard. Pour les entrées/sorties(I/O), il s'agit du fichier stdio.h.

#define: Définit une macro-instruction. A chaque fois que le compilateur la rencontrera dans sa traduction du fichier source, il la remplacera.


III) Les types élémentaires de données



2 attributs:
-ensemble des valeurs possibles (domaine)
-opérations associées.

Types entiers:
IntEntier32bits
short[int]Entier court16 bits
long[int]Entier long32 bits

1bit: [0,1]
2bits: [0,3]
...
32bits [0,232-1] ou [-231,231-1]

Types réels
FloatRéel simple précision32 bits
DoubleRéel double précision64 bits

Et enfin le type caractère : char

Tout ce que l'on vient de voir fait partie des mots réservés du C comme if, then, while, ...
typedef permet de définir un type

typedef double reel;
reel x;
On a redéfini un type réel.

Int n;
float x;
long double y;
printf("Un entier: %d", n);

/!\ Ne pas mettre un float à la place d'un réel!!!

printf("Un float: %e", x);
printf("Un float: %f", x);
printf("Un caractère: %c", 'a');


IV)Les expressions



Les expressions sont constituées de termes et d'opérateurs.

Termes:
-Constantes(entier, réel, caractère, caractères spéciaux)
-Une variable
-Un appel à une fonction
-Une expression entre parenthèses

Evaluation: n1+n2, résultat d'un appel à une fonction.
Variable: 3 attributs: nom, type, (valeurs)
Opérateurs: +,*,-,/ Ils utilisent 2 opérandes, ils sont donc binaires.
-(négatif) est unaire.

/!\ En entier, il y a une troncature mais pas d'arrondies. Cependant si on met 4.0/5 , 4/5.0 ou 4.0/5.0 on a l'évaluation à 0.8 et non pas à 0 comme dans 4/5 .

Précédence des opérateurs:
2*x+3*4=(2*x)+(3*4)

Table de précédence
AssociativitéArité
Opérateurs
GaucheUnaire++, --, -, (type)
DroiteBinaire*, /, %
DroiteBinaire+, -
GaucheBinaire<, >, <=, >=
GaucheBinaire== !=
GaucheBinaire&& ||
DroiteBinaire= op=

Remonter
©Wikiupvd 2007-2009

Valid XHTML 1.0 Strict

Sitemap-Accueil-Inscription
Il y a actuellement 5 internautes connectés.
Page générée en 0.11442 secondes
Tous les articles du site sont disponibles sous les termes de la licence de documentation libre GNU
WikiUPVD n'est pas un site officiel de l'Université de Perpignan Via Domitia.