Université Sidi Mohamed Ben Abdellah Faculté des Sciences et Techniques Fès Dép
Université Sidi Mohamed Ben Abdellah Faculté des Sciences et Techniques Fès Département Informatique IEEA-TELECOM Programmation en langage C Zahi, Azeddine 2005-2006 A.Zahi/DI/FSTF 1 Table des matières Chapitre 0 : Introduction à l’algorithmique............................................... 6 1. Introduction.................................................................................................... 6 1.1. Définition ............................................................................................. 6 1.2. Structure d’un algorithme................................................................. 6 1.3. Démarche méthodologique................................................................ 7 2. Objets d’un algorithme ................................................................................. 8 2.1. Identificateur....................................................................................... 8 2.2. Types prédéfinis.................................................................................. 9 2.3. Déclaration........................................................................................... 9 2.4. Expressions........................................................................................ 10 3. Instructions d’un algorithme...................................................................... 11 3.1. Affectation ......................................................................................... 11 3.2. Lecture /écriture ............................................................................... 12 3.3. Bloc d’instructions............................................................................ 13 3.4. Choix .................................................................................................. 13 3.4.1. Choix sans alternative __________________________ 13 3.4.2. Choix avec alternative __________________________ 15 3.4.3. Choix imbriqué________________________________ 17 3.4.4. Choix multiple_________________________________ 20 3.5. Répétition........................................................................................... 22 3.5.1. Présentation des boucles ________________________ 22 3.5.2. Boucle tant que ________________________________ 22 3.5.3. Boucle répéter_________________________________ 26 3.5.4. Boucle pour ___________________________________ 29 Chapitre 1: Eléments du langage C.......................................................... 32 1. Eléments lexicaux......................................................................................... 32 1.1. Identificateurs ................................................................................... 32 1.2. Mots clés............................................................................................. 32 2. Structure d’un programme C..................................................................... 32 2.1. Les commentaires ............................................................................. 33 2.2. Instructions........................................................................................ 33 A.Zahi/DI/FSTF 2 2.2.1. Instructions directement exécutables ______________ 33 2.2.2. Instructions du préprocesseur____________________ 34 2.3. Fonctions............................................................................................ 34 2.4. Compilation d’un programme C .................................................... 36 3. Variables et Types de base.......................................................................... 36 3.1. Types de base..................................................................................... 36 3.1.1. Les caractères _________________________________ 37 3.1.2. Les entiers ____________________________________ 37 3.1.3. Les réels______________________________________ 37 3.2. Variables............................................................................................ 38 3.2.1. Déclaration ___________________________________ 38 3.2.2. Initialisation __________________________________ 38 4. Les constantes............................................................................................... 39 4.1. Constantes littérales.......................................................................... 39 4.1.1. Constantes réels _______________________________ 39 4.1.2. Constantes entières_____________________________ 39 4.1.3. Constantes caractères___________________________ 40 4.1.4. Constantes chaînes de caractères _________________ 40 4.2. Constantes symboliques................................................................... 41 4.2.1. Pseudo-constantes______________________________ 41 4.2.2. Constantes variables____________________________ 41 5. Fonctions standards d’entrée/sortie........................................................... 42 5.1. Fonction printf .................................................................................. 42 5.2. Fonction sacnf ................................................................................... 43 5.3. Fonctions getchar() et putchar() ..................................................... 43 6. Expressions et Opérateurs.......................................................................... 44 6.1. Opérateurs arithmétiques................................................................ 44 6.2. Affectation ......................................................................................... 45 6.3. Incrémentation décrémentation...................................................... 46 6.4. Opérateurs Logique.......................................................................... 47 6.5. Opérateur conditionnel.................................................................... 47 6.6. Expression.......................................................................................... 48 7. Structures de contrôle ................................................................................. 48 7.1. Le choix.............................................................................................. 48 7.1.1. if sans else ____________________________________ 48 7.1.2. if avec else ____________________________________ 49 A.Zahi/DI/FSTF 3 7.1.3. Imbrication des tests____________________________ 50 7.1.4. Switch _______________________________________ 52 7.2. Boucles................................................................................................ 53 7.2.1. Boucle while __________________________________ 53 7.2.2. Boucle do while________________________________ 55 7.2.3. Boucle for ____________________________________ 56 7.3. Instructions d’échappement............................................................ 58 7.3.1. Instruction break ______________________________ 58 7.3.2. Instruction continue ____________________________ 58 7.3.3. Instruction return______________________________ 59 7.3.4. Instruction exit ________________________________ 60 8. Les Pointeurs ................................................................................................ 60 8.1. Mémoire de l’ordinateur.................................................................. 60 8.2. Notion de pointeur............................................................................ 61 8.3. Déclaration......................................................................................... 62 8.4. Initialisation....................................................................................... 62 8.4.1. initialisation à l’aide de l’opérateur d’adressage &___ 62 8.4.2. Initialisation à l’aide de la fonction malloc ()________ 63 8.5. Indirection ......................................................................................... 63 8.6. Libération de l’espace ...................................................................... 64 9. Les fonctions ................................................................................................. 65 9.1. Analyse descendante......................................................................... 65 9.2. Pseudo-fonction................................................................................. 66 9.3. Déclaration des fonctions utilisateur.............................................. 67 9.3.1. Prototype d’une fonction ________________________ 67 9.3.2. Corps de la fonction ____________________________ 68 9.3.3. Comment obtenir une fonction ___________________ 69 9.4. Appel d’une fonction ........................................................................ 69 9.4.1. Principe ______________________________________ 69 9.4.2. Syntaxe de l’appel______________________________ 70 9.4.3. Passage des paramètres _________________________ 71 9.4.4. Porté des variables _____________________________ 73 Chapitre 2: Tableaux et Chaînes de caractères .................................. 76 1. Tableaux uni dimensionnels ....................................................................... 76 1.1. Déclaration......................................................................................... 76 1.2 Initialisation d’un tableau................................................................ 77 1.3. Accès à un élément du tableau ........................................................ 78 1.4. Pointeurs et Tableaux....................................................................... 79 1.4.1. Le nom d’un tableau ___________________________ 79 1.4.2. Incrémentation et décrémentation ________________ 80 A.Zahi/DI/FSTF 4 1.4.3. Indexation du tableau __________________________ 81 1.4.4. Tableaux dynamiques __________________________ 81 1.5. Tableau paramètre d’une fonction................................................. 82 2. Tableaux de dimension deux ...................................................................... 84 2.1. Déclaration......................................................................................... 85 2.2. Initialisation....................................................................................... 85 2.3. Accès à un élément............................................................................ 86 2.4. Tableau de dimension deux paramètre d’une fonction ............... 87 3. Chaînes de caractères.................................................................................. 89 3.1. Déclaration......................................................................................... 89 3.2. Initialisation....................................................................................... 89 3.3. Fonctions de manipulation .............................................................. 90 3.3.1. Affichage d’une chaîne__________________________ 90 3.3.2. Saisie d’une chaîne _____________________________ 91 3.3.3. Longueur d’une chaîne _________________________ 91 3.3.4. Copie de chaînes _______________________________ 92 3.3.5. Concaténation_________________________________ 93 3.3.6. Comparaison__________________________________ 93 Chapitre 3: Structures..................................................................................... 95 1. Le mot clé typedef........................................................................................ 95 2. Enumérations ............................................................................................... 96 2.1. Définition d’une énumération ......................................................... 96 2.2. Opérations sur les énumérations .................................................... 97 3. Les Structures............................................................................................... 98 3.1. Définition d’une structure ............................................................... 98 3.2. Déclaration......................................................................................... 99 3.3. Opérations sur les structures......................................................... 100 3.3.1. Accès aux membres ___________________________ 100 3.3.2. Initialisation _________________________________ 101 3.3.3. Affectation___________________________________ 102 3.4. Structure paramètre d’une fonction ............................................ 102 3.5. Tableau de structures..................................................................... 104 3.6. Tableau membre d’une structure................................................. 106 3.7. Structures imbriquées.................................................................... 108 A.Zahi/DI/FSTF 5 Chapitre 4: Fichiers ....................................................................................... 110 1. Définition..................................................................................................... 110 2. Mémoire tampon........................................................................................ 110 3. Accès à un fichier ....................................................................................... 111 3.1. Le type FILE* ................................................................................. 111 3.2. Ouverture/fermeture...................................................................... 111 4. Lecture /écriture......................................................................................... 113 4.1. Lecture et écriture par caractère.................................................. 113 4.2. Lecture et écriture par chaînes de caractères ............................. 114 4.3. Lecture et écriture formatées........................................................ 114 4.4. Lecture et écriture par blocs ......................................................... 117 5. Accès directe ............................................................................................... 118 A.Zahi/DI/FSTF 6 Chapitre 0 : Introduction à l’algorithmique 1. Introduction 1.1. Définition Un algorithme est une notion qui remonte à très loin, Il prend ses racines dans le mot "Algorisme" introduit par le mathématicien Persse AlKhawarsimi dans son livre " hisabo aljabri wa almoqabala". Ce n‘est donc pas une notion propre à l’informatique. Un algorithme sert dans la résolution d’un certain nombre de problèmes tels que : chercher le plus grand commun diviseur de deux entiers, résoudre un système linéaires, résoudre une équation différentielle, trouver le chemin optimal dans une ville, chercher une stratégie pour attaquer un marché financier etc. Il permet de décrire le processus résolution de façon précise et non ambiguë ne laissant place ni à l’interprétation ni à l’intuition. Un algorithme est considéré comme une suite finie et ordonnée d’actions élémentaires, instructions, effectuées sur des données pour aboutir à des résultats. En général, il y a plusieurs algorithmes (plusieurs solutions) qui résolvent le même problème. Le meilleur algorithme (solution optimale) est celui qui contient moins d’instructions. Figure 1 : Schéma d’un algorithme 1.2. Structure d’un algorithme Un algorithme est composé de deux parties : • Partie déclaration : contient les objets (données et résultats) utilisés pour résoudre le problème. • Partie traitement : contient les instructions (actions) qui permettent de résoudre le problème. Algorithme Résultats Données A.Zahi/DI/FSTF 7 Partie déclaration Partie traitement La forme générale d’un algorithme se présente comme suit: algorithme nom_algorithme constantes Déclaration des constantes types Déclaration des nouveaux types variables Déclaration des variables début Instructions fin Exemple algorithme surface constantes PI = 3.14 rayon = 12.5 variables : air : réel début air ← rayon*rayon*PI ecrire(air) fin 1.3. Démarche méthodologique L’élaboration d’un algorithme se déroule selon les étapes suivantes : • La phase d’analyse, consiste à : Identifier les paramètres qui décrivent le problème i.e., les paramètres qui constituent les données (ce qu’on a) et les paramètres qui constituent les résultats (ce qu’on cherche). Formuler le problème en termes, de formules, d’équations mathématique etc., et proposer des méthodes de résolution en termes de méthodes mathématique ou de règles de gestion. • La phase de conception, consiste à : Représenter les paramètres du problème par des objets algorithmiques tels que les variables, les constantes, les structures de données etc. Exprimer les méthodes de résolution sous forme d’instructions algorithmique tels que les opérateurs, le choix, les boucles, les fonctions etc. A.Zahi/DI/FSTF 8 Exemple : Calculer le pgcd de deux entiers Analyse • Entrées : a, b deux entiers • Sorties : pgcd(a,b) • Méthode : l’algorithme d’Euclide, pgcd(a,b)=pgcd(b,q) Conception • Variables : a,b, et pgcd : entiers • Algorithme r Å a mod b tant que (r != 0) faire a Åb b Å a div b r Å a mod b fintantque 2. Objets d’un algorithme Deux types d’objets sont utilisés pour représenter les paramètres d’un problème dans un algorithme: les constantes et les variables. Une variable est un objet qui peut changer de valeur au cours de l’exécution de l’algorithme, tandis qu’une constante ne change jamais de valeur. Un objet est caractérisé par : • Un identificateur qui permet de désigner un objet dans l’algorithme. • Un type qui permet de définir l’ensemble des valeurs susceptibles d’être prises par un objet ainsi que les opérateurs qu’on peut lui appliquer. • Un état qui correspond à la valeur prise à un instant de l’exécution de l’agorithme. 2.1. Identificateur Un identificateur permet d’identifier un objet parmi les autres objets. C’est une suite de caractères alphanumériques qui respecte les contraintes suivantes: • Un identificateur ne doit contenir que les caractères alphabétiques, les chiffres et le caractère souligné " _", • Un identificateur doit toujours commencer par un caractère alphabétique, • Un identificateur ne doit pas contenir les caractères accentués et spéciaux, A.Zahi/DI/FSTF 9 • Un identificateur doit refléter l'objet auquel il est associé. Par exemple pour représenter le salaire d'un employé, il vaut mieux choisir l'identificateur salaire. Exemples Identificateur valide Identificateur non valide Salaire1 1salaire Etudiant étudiant note_examen note d’examen 2.2. Types prédéfinis Les types prédéfinis peuvent être utilisés sans qu’ils fassent l’objet d’une déclaration. Ces types sont : les entiers, les booléens, les réels et les caractères. • Entier : c’est l’ensemble uploads/Ingenierie_Lourd/ langage-c 2 .pdf
Documents similaires










-
31
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Fev 23, 2021
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 0.8134MB