[PDF] Le livre du C pour les vrais debutants en programmationpdf - pssfp
4 1 Canevas général d'écriture d'un programme en langage C ment nous vous apprenons à les exprimer en langage C ce qui vous permet d'emblée de
[PDF] Apprenez à programmer en C / C++ - Free
29 juil 2006 · C'est votre jour de chance Vous venez de tomber sur un cours de programmation pour débutants vraiment pour débutants Il n'y a aucune honte à
[PDF] le-langage-c-1pdf - Zeste de Savoir
3 juil 2022 · Vous souhaitez apprendre à programmer mais vous ne savez pas comment vous y prendre? Vous connaissez déjà le C mais vous avez besoin de
[PDF] Programmer en langage C - Claude Delannoy 5 éditionpdf
– C++ pour les programmeurs C N°12231 2007 620 pages C DELANNOY – Apprendre le C++ N°12135 2007
[PDF] Apprenez rapidement et simplement les bases du langage C
9 Cycle de développement du programme 10 Votre premier programme C La meilleure façon d'apprendre un langage de programmation est de créer et
[PDF] Les bases de la programmation en C - IBISC
Le C est un langage compilé (par opposition aux langages interprétés) Cela signifie qu'un programme C est décrit par un fichier texte appelé fichier
[PDF] Programmation C++ (débutant)/Notions de base
Le langage C est un langage de programmation inventé par MM Dans ce cours nous allons d'abord apprendre les notions non orientées objet du C++ (donc
[PDF] INITIATION AU LANGAGE C - CNRS
Il existe des milliers de langages de programmation informatique : Pascal Java Fortran C C++ etc Ce sont des langages formels avec une syntaxe stricte qui
[PDF] Programmation en C
Le langage C comme tout langage de programmation est un moyen de communication avec l'ordi- nateur plus abordable En effet un interpr`ete le compilateur
Ecole Nationale Sup´erieure
de Techniques Avanc´eesProgrammation en C
Pierre-Alain Fouque et David Pointcheval
E-mail :Pierre-Alain.Fouque@ens.fr
Web :http://www.di.ens.fr/~fouque/
Table des mati`eres
1 Introduction 11
1.1 L"ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 Programmer en C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.1 G´en´eralit´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.2 Un ´editeur de texte :emacs. . . . . . . . . . . . . . . . . . . . . . 12
1.2.3 Analyse du programme . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.4 Un compilateur C :gcc. . . . . . . . . . . . . . . . . . . . . . . . 16
1.3 Quelques g´en´eralit´es sur la syntaxe du langage C . . . . . . . . . . . . . . 17
1.3.1 Mise en page et indentation . . . . . . . . . . . . . . . . . . . . . . 17
1.3.2 Les identificateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.3 Les instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.4 Organisation d"un programme C . . . . . . . . . . . . . . . . . . . . 18
2 Les types 21
2.1 Les types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Les types de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.1 Les types entiers (int,short int,long intetlong long int) . 22
2.2.2 Les types flottants (float,doubleetlong double) . . . . . . . . . 22
2.2.3 Le type caract`ere (char) . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3 Les types structur´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.1 Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.2 Les tableaux `a plusieurs dimensions . . . . . . . . . . . . . . . . . . 24
2.3.3 Les structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4 Les pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5 Nouveaux types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3 Les variables et les constantes 27
3.1 D´eclaration des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.1 D´eclaration des types simples . . . . . . . . . . . . . . . . . . . . . 28
3.1.2 D´eclaration des tableaux et pointeurs . . . . . . . . . . . . . . . . . 28
3.1.3 D´eclaration des objets complexes . . . . . . . . . . . . . . . . . . . 29
3.2 Initialisation des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.1 Types simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.2 Types complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4 Dur´ee de vie et visibilit´e des variables . . . . . . . . . . . . . . . . . . . . . 31
12TABLE DES MATI`ERES
4 Les entr´ees-sorties 35
4.1 L"affichage avecprintf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1.1 Simple affichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1.2 Formattage des sorties . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2 La saisie avecscanf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5 Les op´erateurs et les expressions 39
5.1 Les op´erateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.1.1 Les op´erateurs arithm´etiques . . . . . . . . . . . . . . . . . . . . . . 40
5.1.2 Op´erateur de conversion de type (" cast ") . . . . . . . . . . . . . . 42
5.1.3 Op´erateur de taille . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1.4 Op´erateurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.1.5 Op´erateurs de masquage . . . . . . . . . . . . . . . . . . . . . . . . 43
5.1.6 Op´erateurs de relations . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.1.7 Op´erateur d"affectation . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.1.8 Op´erateurs abr´eg´es . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2 Les expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6 Les structures de contrˆole 45
6.1 Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.2 Les boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.2.1 Les boucleswhile. . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.2.2 Les bouclesfor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.2.3 Les bouclesdo while. . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.3 Les conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.3.1 Conditionif. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.3.2 Conditionswitch. . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.4 Sauts Inconditionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.4.1break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.4.2continue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.4.3return. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.4.4goto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7 Programme Structur´e 53
7.1 Les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
7.1.1 D´eclaration d"une fonction . . . . . . . . . . . . . . . . . . . . . . . 54
7.1.2 Corps de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.1.3 Retour de la r´eponse . . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.1.4 Arguments d"une fonction . . . . . . . . . . . . . . . . . . . . . . . 55
7.1.5 Fonctionmain. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.2 R´ecursivit´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.3 Les modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.3.1 Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.3.2 Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.4 Le pr´eprocesseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.4.1 Inclusions et d´efinitions . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.4.2 Compilation conditionnelle . . . . . . . . . . . . . . . . . . . . . . . 62
David Pointcheval- CNRS-ENS
TABLE DES MATI
`ERES37.4.3 Le pr´eprocesseurgcc. . . . . . . . . . . . . . . . . . . . . . . . . . 62
8 Les pointeurs, les tableaux et les structures 65
8.1 Pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.1.1 D´efinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.1.2 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
8.1.3 Passagepar adresse. . . . . . . . . . . . . . . . . . . . . . . . . . . 66
8.2 Tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8.3 Allocation dynamique de m´emoire . . . . . . . . . . . . . . . . . . . . . . . 67
8.4 Les structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
9 Les structures dynamiques 71
9.1 Structure de liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
9.2 Impl´ementation des listes chaˆın´ees . . . . . . . . . . . . . . . . . . . . . . . 72
9.3 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
9.3.1 Listes doublement chaˆın´ees . . . . . . . . . . . . . . . . . . . . . . . 72
9.3.2 Arbres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
10 L"environnement sous UNIX 75
10.1 Une construction sur mesure :make. . . . . . . . . . . . . . . . . . . . . . 76
10.1.1 Fichier de Configuration :Makefile. . . . . . . . . . . . . . . . . . 76
10.1.2 Wildcards et D´ependances . . . . . . . . . . . . . . . . . . . . . . . 77
10.1.3 Constantes et Variables . . . . . . . . . . . . . . . . . . . . . . . . . 77
10.1.4 Cibles Fictives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
10.1.5 Invocation de la Commandemake. . . . . . . . . . . . . . . . . . . 78
10.2 Une gestion des versions :cvs. . . . . . . . . . . . . . . . . . . . . . . . . 80
10.2.1 Cr´eation d"un projet . . . . . . . . . . . . . . . . . . . . . . . . . . 80
10.2.2 Fichier d"information . . . . . . . . . . . . . . . . . . . . . . . . . . 80
10.2.3 Modifications de la structure . . . . . . . . . . . . . . . . . . . . . . 80
10.2.4 Int´egration des modifications . . . . . . . . . . . . . . . . . . . . . 81
10.2.5 Gestion des versions . . . . . . . . . . . . . . . . . . . . . . . . . . 81
10.2.6 Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
10.3 Le d´ebogueur :gdb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
10.3.1 Lancement du d´ebogueur . . . . . . . . . . . . . . . . . . . . . . . . 82
10.3.2 Commandes de base . . . . . . . . . . . . . . . . . . . . . . . . . . 82
11 Quelques compl´ements 85
11.1 Les chaˆınes de caract`eres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
11.1.1 Structure d"une chaˆıne de caract`eres . . . . . . . . . . . . . . . . . 85
11.1.2 Quelques commandes sur les chaˆınes de caract`eres . . . . . . . . . . 85
11.2 Gestion des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
11.2.1 Type fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
11.2.2 Cr´eation d"un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . 88
11.2.3 Lecture/´Ecriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
11.2.4 Fin de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
11.2.5 Clˆoture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
11.3 C 99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
11.4 La biblioth`eque standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4TABLE DES MATI`ERES
David Pointcheval- CNRS-ENS
Liste des Programmes
1 Introduction 11
1 Hello World (hello.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2 Programme g´en´erique (generique.c) . . . . . . . . . . . . . . . . . . . . . 19
2 Les types 21
3 Tableaux (tableaux.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4 Structure (structure.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5 Typedef (typedef.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3 Les variables et les constantes 27
6 Variables (variables.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7 Variables - annexe (options.c) . . . . . . . . . . . . . . . . . . . . . . . . 33
4 Les entr´ees-sorties 35
8 Entr´ees/Sorties (io.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5 Les op´erateurs et les expressions 39
9 Op´erateurs arithm´etiques (arithmetique.c) . . . . . . . . . . . . . . . . . 40
6 Les structures de contrˆole 45
10 PGCD (pgcd.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
11 Carr´es (carres.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
12 Binaire (binaire.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
13 Parit´e (parite.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
14 Valeur (valeur.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7 Programme Structur´e 53
15 Incr´ementation (incrementation.c) . . . . . . . . . . . . . . . . . . . . . 55
16 Factorielle (fact.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
17 Fibonacci (fibo.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
18 D´eclaration des types et fonctions (complexe.h) . . . . . . . . . . . . . . . 59
19 D´efinition des fonctions (complexe.c) . . . . . . . . . . . . . . . . . . . . . 60
20 Module principal (complexe-main.c) . . . . . . . . . . . . . . . . . . . . . 60
8 Les pointeurs, les tableaux et les structures 65
21 Auto-Incr´ementation (auto-incrementation.c) . . . . . . . . . . . . . . . 66
22 Suite de Fibonacci - tableau (fibo-tableau.c) . . . . . . . . . . . . . . . 69
56LISTE DES PROGRAMMES
9 Les structures dynamiques 71
23 Listes chaˆın´ees (liste.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
10 L"environnement sous UNIX 75
24 Exemple de fichierMakefile(Makefile1) . . . . . . . . . . . . . . . . . . 77
25 Makefile : version compacte (Makefile2) . . . . . . . . . . . . . . . . . . . 78
26 Makefile : classique C (Makefile3) . . . . . . . . . . . . . . . . . . . . . . 79
27 D´ebordement (segmentation.c) . . . . . . . . . . . . . . . . . . . . . . . 83
11 Quelques compl´ements 85
28 Palindrome (palindrome.c) . . . . . . . . . . . . . . . . . . . . . . . . . . 86
29 Tableau vs. Pointeur (tblvsptr.c) . . . . . . . . . . . . . . . . . . . . . . 87
30 Tableau vs. Pointeur (tblvsptr1.c) . . . . . . . . . . . . . . . . . . . . . 88
31 Gestion des fichiers (copie.c) . . . . . . . . . . . . . . . . . . . . . . . . . 91
32 Erreurs dans la biblioth`eque standard (perror.c) . . . . . . . . . . . . . . 92
David Pointcheval- CNRS-ENS
Table des figures
1 Introduction 11
1.1 Organisation d"un ordinateur - Programmation en C . . . . . . . . . . . . 12
1.2 Les ´etapes de la programmation . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3 Raccourcis-clavier sousemacs. . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Options du compilateurgcc. . . . . . . . . . . . . . . . . . . . . . . . . . 16
2 Les types 21
2.1 Types entiers sous GCC/Linux . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2 Types flottants sous GCC/Linux . . . . . . . . . . . . . . . . . . . . . . . 23
3 Les variables et les constantes 27
3.1 D´eclaration des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2 D´eclaration des structures . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Les entr´ees-sorties 35
4.1 Affichage des variables avecprintf. . . . . . . . . . . . . . . . . . . . . . 37
4.2 Saisie avecscanf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5 Les op´erateurs et les expressions 39
5.1 Op´erateurs unaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2 Op´erateurs binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.3 Cast automatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.4 Op´erateurs abr´eg´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6 Les structures de contrˆole 45
7 Programme Structur´e 53
8 Les pointeurs, les tableaux et les structures 65
8.1 Tableau d"entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
78TABLE DES FIGURES
9 Les structures dynamiques 71
9.1 Liste chaˆın´ee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
9.2 Liste doublement chaˆın´ee . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
9.3 Arbres binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
10 L"environnement sous UNIX 75
11 Quelques compl´ements 85
David Pointcheval- CNRS-ENS
Avant-Propos
Ce document regroupe l"essentiel pour g´erer un (gros) projet en C sous un environne- ment de type UNIX. Mais avant tout, `a quoi sert un langage de programmation, tel que le langage C, `a l"heure o`u les ordinateurs ob´eissent `a la voix de leur maˆıtre?quotesdbs_dbs49.pdfusesText_49[PDF] apprenez ? programmer en java (2e édition) telecharger
[PDF] apprenez ? programmer en java - 2e édition pdf
[PDF] apprenez ? programmer en javascript pdf
[PDF] apprenez ? programmer en php pdf
[PDF] apprentissage 2017 salaire
[PDF] apprentissage dans la fonction publique territoriale
[PDF] apprentissage de l'écriture en maternelle
[PDF] apprentissage essec
[PDF] apprentissage fonction publique hospitalière
[PDF] apprentissage martinique
[PDF] apprentissage par le jeu piaget
[PDF] apprentissage par simulation
[PDF] apprentissages essentiels en lien avec le programme cadre de mathématiques
[PDF] approche actionnelle définition