Introduction au langage C - Cours 1 Girardot/Roelens Septembre 2012 Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 1/38 | Présentation du cours Le contenu 2/38 Le contenu Première partie du cours Langages et Concepts de Programmation concepts élémentaires de la programmation une introduction au langage C une introduction à l’algorithmique une introduction à l’utilisation des ordinateurs Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | ||
Présentation du cours La forme La forme un élève par poste (demi-promo) période « bloquée » intensive 7 séances : 1h30 de cours, 1h30 de TP 1 mini-projet : 4h30 le dernier jour Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 3/38 | Présentation du cours Les documents Les documents polycopié (contenant les sujets des TP) copie des transparents (prise de notes) corrigé d’exercices et de projets antérieurs site web : Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 4/38 |
Présentation du cours Les intervenants 5/38 Les intervenants Marc Roelens, responsable du cours enseignants-chercheurs et doctorants en informatique (Institut Henri Fayol) Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | Présentation du cours Contrôle des connaissances Contrôle des connaissances Évaluation du projet travail individuel Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 6/38 | |||
Structure de l’ordinateur Architecture Structure de l’ordinateur L’architecture de Von Neumann Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 7/38 | Structure de l’ordinateur Processeur Processeur Processeur, ou unité centrale, ou CPU (Central Principal Unit) Unité de commande transfert des instructions depuis la mémoire décodage et exécution des instructions Registres mémoires très rapides situées dans l’UC registres adresses : désignent un élément de la mémoire registres données : représentent une valeur registres d’état : représentent une partie de « l’état » du processeur Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 8/38 | ||
Structure de l’ordinateur Processeur 9/38 Unité arithmétique et logique décodage des fonctions opère sur les registres opérations arithmétiques de base : + ?,×,÷ opérations logiques, décalages : ??? Performances liées à la fréquence d’horloge et à la nature du processeur mesurées en MIPS, Millions of Instructions Per Second . . .ou en MFLOPS, Millions of Floating point Operations Per Second Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | Structure de l’ordinateur Mémoire Mémoire Cases numérotées taille standard d’une case : 8 bits (octets) toute valeur écrite dans une case persiste tant qu’elle n’est pas modifiée (et que la machine fonctionne) on appelle adresse le numéro de la case Contenu instructions du programme données du programme Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 10/38 | |
Structure de l’ordinateur Instructions 11/38 Instructions du processeur Langage machine : l’ensemble des instructions acceptées par un processeur donné Chaque processeur a son propre langage machine Caractéristiques communes : instructions conservées en mémoire centrale composées d’un « code opération », de désignation de registres et/ou d’adresses en mémoire représentées par des nombres, tenant sur 1, 2, 4. . . 8 octets exécutées en séquence, sauf instructions « de saut » transferts entre les registres et la mémoire centrale opérations arithmétiques et logiques sur les registres tests et positionnement des registres d’état commandes des périphériques instructions de « saut », conditionnel ou non Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | Structure de l’ordinateur Assembleur 12/38 Le langage d’assemblage Une représentation « lisible » des instructions de la machine les codes opérations et les registres sont représentés par des mnémoniques l’assembleur permet d’associer des « étiquettes » symboliques à des adresses en mémoire un logiciel spécialisé (« assembleur ») traduit les instructions d’assemblage en langage machine. Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France |
Structure de l’ordinateur Assembleur Exemple (assembleur 68000) : move.l 4(a7),d0 sub.l 8(a7),d0 bvc.s suite or.l #1,ovfl(a5) suite : rts Format typique : étiquette optionnelle, code instruction, opérandes éventuels Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 13/38 | Structure de l’ordinateur Données Représentation des données Objets manipulés par les programmes objets « élémentaires » : nombres, caractères nombres entiers, représentés par 1, 2, 4, ou 8 octets nombres flottants, représentés par 4, 8 ou 16 octets caractères : code ASCII (128 caractères, 1 caractère = 1 octet) code(s) ISO (256 caractères, 1 caractère = 1 octet) code UNICODE (tous les caractères du monde, 1 caractère = 2 ou octets) objets « complexes » : convention d’assemblage des objets élémentaires Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 14/38 4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Structure de l’ordinateur Données Le code ASCII Lecture : A a pour code binaire 100 0001, soit en décimal 65 Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 15/38 | Structure de l’ordinateur Fichiers 16/38 Mémoire secondaire Mémoire vive : les données disparaissent lorsque le courant est coupé ne peut stocker la totalité des données utilisées par un ordinateur Mémoire secondaire : utilise des supports pérennes (plusieurs années) ; taille d’un ordre de magnitude supérieure à la taille de la mémoire vive Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France |
Structure de l’ordinateur Fichiers 17/38 Fichiers Systèmes de fichiers plaquer une organisation « logique » sur l’espace physique disponible permettre un adressage symbolique (par nom) à des groupes de données : les fichiers fournir un index des fichiers disponibles gérer des informations supplémentaires (date de dernière modification, possesseur, droits d’accès. . . ) Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | Structure de l’ordinateur Fichiers 18/38 organiser les fichiers sous forme hiérarchique (arborescence) qui en permet la classification fichiers spécialisés : les répertoires (descriptions de fichiers et de répertoires) autres fichiers « banalisés » : pour le système, un fichier est un (gros) tas d’octets les fichiers sont souvent désignés par un nom comportant un suffixe spécifique, dit « extension », qui permet d’en deviner la nature : toto.c, . . . c:\durant\coursc\toto.c /users/durant/coursc/toto.c Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | |
Utilisation des ordinateurs Système 19/38 Utilisation des ordinateurs L’ordinateur nu est totalement inexploitable Un ordinateur dispose d’un mécanisme d’initialisation, qui permet de charger un programme particulier, le système d’exploitation Le système d’exploitation gère pour l’utilisateur les ressources de la machine et en assure une vision « conviviale » Il existe de multiples systèmes d’exploitation, aux finalités assez voisines Windows (différentes versions) UNIX (porté sur la totalité des machines) Linux (un UNIX écrit spécifiquement pour les PC) Mac-OS (spécifique aux Macintosh) Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | Utilisation des ordinateurs Compilation 20/38 Compilation le langage machine est complexe, difficile à maîtriser, dépendant de la machine on construit les programmes dans des langages plus réguliers, de haut niveau, que l’on transforme en langage machine compilation : le processus qui transforme un programme écrit dans un langage de haut niveau en un ensemble d’instructions exécutables par la machine compilateur : le programme qui effectue le processus de compilation ex : gcc pour le langage C les objets manipulés par le compilateur sont des fichiers : texte source, représenté en ASCII, « lisible » texte exécutable, représenté dans un format propre au système d’exploitation Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France |
Utilisation des ordinateurs Création d’un programme Création d’un programme Le processus de création d’un programme consiste à : se placer dans une fenêtre de commandes Linux : Terminaux?XTerm créer un fichier contenant le texte du programme source en langage de haut niveau, au moyen d’un éditeur de texte Linux : Gedit, Kwrite, voire vi, vim, emacs compiler le programme au moyen du compilateur adéquat Linux : gcc pour le langage C lancer l’exécution du programme exécutable Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 21/38 | Utilisation des ordinateurs Commandes Fenêtre de commande XTerm Linux Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 22/38 | ||
Utilisation des ordinateurs Commandes 23/38 Fenêtre de commandes permet des interactions en mode ligne la commande est lancée par la saisie au clavier d’une ligne de texte terminée par la touche Entrée les informations fournies à la commande sont saisies sous forme de lignes de texte terminées par la touche Entrée les informations fournies par la commande sont affichées dans le terminal sous forme de lignes de texte terminées par un saut de ligne pas d’utilisation de la souris permet d’écrire facilement des petits programmes de commandes (scripts) Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | Utilisation des ordinateurs Commandes Fenêtre de commandes (2) Quelques commandes : exit interrompre l’interaction pwd position du répertoire courant ls liste des fichiers du répertoire courant . représente le répertoire courant .. est la racine du répertoire (« monter » d’un niveau) / est la racine du système (niveau le plus haut) cd changement de répertoire [tp] cd ../durand/cours [tp] cd [tp] ls foo.c toto.c Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 24/38 | |||
Utilisation des ordinateurs Commandes Fenêtre de commandes (3) Interactions en mode ligne cp nom1 nom2 recopier un fichier [tp] cp prog2.c ../durand rm nom supprimer un fichier mv nom1 nom2 renommer ou déplacer « nom1 » mkdir nom créer un nouveau répertoire rmdir nom supprimer un répertoire [tp] mv toto.c truc.c toto exécuter le programme toto [tp] toto [tp] gcc -o titi titi.c ./toto exécuter le programme toto [tp] ./toto Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 25/38 | Utilisation des ordinateurs Édition d’un programme Fenêtre d’édition Fenêtre GEdit Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 26/38 | ||
Programmation Premier exemple Un premier exemple Le programme Hello world /* Premier programme */ #include <stdio.h> int main(int argc, char * argv []) { printf("hello world\n"); return 0; } Son exécution [P]$ gcc -Wall -ansi -pedantic prog1.c -o prog1 [P]$ ./prog1 hello world [P]$ Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 27/38 | Programmation Éléments de C 28/38 Éléments de C (1) Format d’un programme format des instructions : libre blancs et tabulations utilisés pour rendre lisible le programme commentaires : placés entre /* et */ cas particuliers les « commandes » pour le pré-processeur (débutant par #) doivent être sur une ligne unique le programme doit se terminer par un saut de ligne (oublié par certains éditeurs de texte) Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | |||
Programmation Éléments de C Éléments de C (2) Chaîne de caractères : "hello world\n" c’est une donnée du langage (constante) représentée par une suite de caractères, placée entre « double quotes », " le caractère « back-slash » \ permet de représenter des caractères particuliers : \n : un passage à la ligne \t : une tabulation horizontale \" : une double quote \\ : un « back-slash » Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 29/38 | Programmation Éléments de C Éléments de C (3) Impression de résultats procédure du système printf nécessite l’inclusion de stdio.h premier élément : un format sous forme d’une chaîne de caractères autres éléments : les valeurs à imprimer fonctionnement : les caractères du format sont recopiés en sortie le caractère % introduit l’impression d’une valeur le type de la valeur est défini par le caractère qui suit le % d : un nombre « décimal » (un int) f : un nombre « flottant » (un float) la séquence \n provoque un passage à la ligne Exemple int A=3, B=17; printf("A = %d\nB = %d\n",A,B); imprime A = 3 B = 17 Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 30/38 | |
Programmation Un second exemple Un second exemple Calcul de la surface d’un disque de diamètre donné S Programme /* Surface d’un disque */ #include <stdio.h> int main(int argc, char * argv []) { float diametre=12.25,surface; float pi=3.1415926535; surface=pi*(diametre/2)*(diametre/2); printf("La surf. du disque de diam. %f est %f\n", diametre,surface); return 0; } Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 31/38 | Programmation Variables 32/38 Variables représentent les données du programme désignées par un nom dont le premier caractère est alphabétique : {A-Z,a-z,_}, les suivants sont alphanumériques : {A-Z,a-z,0-9,_} ont un type : pour l’instant, int ou float Valeurs numériques ou « constantes » nombres « entiers » ou « flottants » entiers : 0 72451 -200 flottants : 0.0 127.0 -0.246 -1.25e8 1e-17 Déclarations toute variable doit être déclarée une déclaration consiste en un type suivi d’une ou plusieurs variables à une variable peut être associée une valeur initiale exemple : int toto, titi=245, tutu; float facteur=6.55957; Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France |
Programmation Types Quelques types en C
sizeof(char) ? sizeof(short) ? sizeof(int) ? sizeof(long) sizeof(float) ? sizeof(double) Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 33/38 | Programmation Expressions 34/38 Expressions Une expression permet de calculer une valeur dans le programme constante (valeur = valeur de la constante) nom d’une variable (valeur = contenu à cet instant de la variable) expression arithmétique opérandes : expressions opérateurs : + - * / % priorité des opérateurs : moins unairesoustraction multiplication, division et modulo addition et ordre d’évaluation de gauche à droite pour une même priorité parenthèses : modifient l’ordre des opérations type homogène : entier ou flottant Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | |||||||||||||||||||||||
Programmation Expressions 35/38 Expressions (2) Expression d’affectation syntaxe : « variable » = « expression » ; types de la variable et de l’expression homogènes (ou conversion implicite) valeur : valeur de l’expression effet : enregistre la valeur de l’expression dans la variable ordre d’évaluation : de droite à gauche e = a = (b=3)+(c=(d=4)+2) d prend la valeur 4, c prend la valeur 6, b prend la valeur 3, a prend la valeur 9, e prend la valeur 9, la valeur globale de l’expression est 9 Une expression suivie d’un point-virgule est une instruction du programme 24+a; a=3; La première instruction est syntaxiquement correcte, mais ne fait rien (avertissement du compilateur) Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | Programmation Synthèse Synthèse : éléments de C les inclusions du préprocesseur #include <stdio.h> les déclarations de variables int toto; int titi=530; float facteur=6.55957; la procédure main int main(int argc, char * argv []) { « instructions » } Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 36/38 |
Programmation Synthèse Expressions et instructions Expressions : valeurs de variables expressions arithmétiques expressions d’affectation Instructions : affectation : « variable » = « expression »; impression : Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 37/38 | Programmation Synthèse Développement en C Écriture des programmes travailler dans un répertoire spécifique utiliser un éditeur de texte (gedit, kedit, vi, emacs. . . ) respecter les conventions (toto.ctoto.h. . . ) Compilation $ gcc -ansi -pedantic -Wall -o toto toto.c Exécution, mise au point $ toto $ ./toto interruption d’un programme par Control-c Introduction au langage C - Cours 1 - Septembre 2012 Girardot/Roelens - Ecole des Mines de Saint-Etienne, 158 cours Fauriel, 42023 Saint-Etienne, France | 38/38 |