Introduction à la programmation en C



Documents pareils
La mémoire. Un ordinateur. L'octet. Le bit

Programmation C. Apprendre à développer des programmes simples dans le langage C

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Module : Informatique Générale 1. Les commandes MS-DOS

TD séances n 3 et n 4 Répertoires et Fichiers sous Unix

Outils pour la pratique

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

Structure de base d un ordinateur

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Informatique. Les réponses doivent être données en cochant les cases sur la dernière feuille du sujet, intitulée feuille de réponse

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

L informatique en BCPST

Séance 0 : Linux + Octave : le compromis idéal

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Architecture des Ordinateurs. Partie II:

ACTIVITÉ DE PROGRAMMATION

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

(Langage de commandes) Les commandes sont données par l'utilisateur grâce au clavier, à partir d'une "invite" ou "prompt" (par exemple "c:\>" )

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Permis de conduire info

Cours Informatique 1. Monsieur SADOUNI Salheddine

Cours 1 : Qu est-ce que la programmation?

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Matériel & Logiciels (Hardware & Software)

Transférer et enregistrer les photos sur l'ordinateur

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours 1 : La compilation

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

L ORDINATEUR. Les composants. La carte mère. Le processeur. Fréquence

TP 1 Prise en main de l environnement Unix

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Introduction au langage C

Informatique I. Sciences et Technologies du Vivant (Semestre 1)

AUJOUR'HUI, NOUS ALLONS DÉCOUVRIR

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

C.M. 1 & 2 : Prise en main de Linux

Certificat Informatique et internet Niveau 1 TD D1. Domaine 1 : Travailler dans un environnement numérique évolutif. 1. Généralités : Filière

Organiser vos documents Windows XP

l'ordinateur les bases

Initiation à la programmation en Python

Comment récupérer ses fichiers quand Windows ne démarre plus

TP1 - Prise en main de l environnement Unix.

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Quelques bases sur les ordinateurs

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Cours 420-KEG-LG, Gestion de réseaux et support technique. Atelier 1. Installation de Windows Server 2003 Standard Edition (pour le serveur)

Installation du SLIS 4.1


Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Premiers pas sur l ordinateur Support d initiation

Boot Camp Guide d installation et de configuration

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Installer Windows 8 depuis une clé USB

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Cours d Algorithmique et de Langage C v 3.0

I00 Éléments d architecture

Introduction à l informatique

Quelques éléments de compilation en C et makefiles

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5

Leçon 1 : Les principaux composants d un ordinateur

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Tester Windows 8 sans l'installer avec Virtualbox

Structure et fonctionnement d'un ordinateur : hardware

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

hager Logiciel PC pour configurateur Radio Tebis TX 100 Manuel d utilisation 6T7266

1 Mesure de la performance d un système temps réel : la gigue

TP, première séquence d exercices.

PC, Tablette, Smartphone, comment choisir ce qui me convient le mieux?

Cours Programmation Système

Présentation du langage et premières fonctions

Tsoft et Groupe Eyrolles, 2005, ISBN :

cbox VOS FICHIERS DEVIENNENT MOBILES! POUR CLIENT MAC OS X MANUEL D UTILISATION

Optimisation de logiciels de modélisation sur centre de calcul

Installation de Vmware serveur Windows

ftp & sftp : transférer des fichiers

Ateliers Python+Qt : Premiers pas : Comment développez ses propres interfaces graphiques sur le RaspberryPi?

Gérer ses fichiers et ses dossiers avec l'explorateur Windows. Février 2013

La communication et la gestion de l'information

Ordinateur Logiciel Mémoire. Entrées/sorties Périphériques. Suite d'instructions permettant de réaliser une ou plusieurs tâche(s), de résoudre un

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Dans la série. présentés par le site FRAMASOFT

CUOMO PC Route d Oron Lausanne 021/

Compilation (INF 564)

Licence Sciences et Technologies Examen janvier 2010

2 Comment fonctionne un ordinateur, dans les grandes lignes

cbox VOS FICHIERS DEVIENNENT MOBILES! POUR ORDINATEURS DE BUREAU ET PORTABLES WINDOWS ÉDITION PROFESSIONNELLE MANUEL D UTILISATION

Atelier individuel. Linux 101. Frédérick Lefebvre & Maxime Boissonneault frederick.lefebvre@calculquebec.ca U. Laval - Janv. 2014

L informatique en solo

Programmation système I Les entrées/sorties

Évaluation et implémentation des langages

Projet Administration Réseaux

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

Initiation. àl algorithmique et à la programmation. en C

Emporter Windows XP sur une clé USB

Virtualisation de Windows dans Ubuntu Linux

Transcription:

Introduction à la programmation en C Cours 1 19/12/2012 La compilation : du langage haut niveau au langage machine. Samy BLUSSEAU, Miguel COLOM

Objectifs du cours : - Être capable de construire des programmes en C - De qualité - De façon autonome - Dans un environnement GNU/Linux - En comprenant la machine Déroulement : Nous alternerons pratique et théorie, en développant des projets de traitement du signal (son, image...). 2

Pourquoi en C? Les programmes s'exécutent aussi rapidement que possible C'est un langage standard (ISO/IEC 9899:1990) On peut construire un programme en C pour presque n'importe quelle machine programmable (téléphone portable, tablettes, robot Curiosity...) Les programmes sont pérennes (on peut toujours exécuter un programme en C d'il y a 15 ans, mais pas un programme Matlab vieux de 5 ans) 3

Comprendre la machine CPU : «Central Processing Unit», ou processeur (Pentium, ARM, Intel Core 2 Duo...) Se charge de lire des instructions et des données inscrites dans la mémoire RAM sous forme de séquences de 0 et de 1 Mémoire RAM : «Random Access Memory» Stocke données et instructions servant aux programmes Périphérique : Ce qui permet la communication entre la machine et l'extérieur (souris, clavier, écran, E/S USB...) Horloge : A chaque cycle d'horloge, le CPU réalise une opération (le CPU exécute les instructions en un ou plusieurs cycles d'horloge, selon leurs complexité) C. P. U. Périphérique Entrée/Sortie Horloge Memoire RAM 4

Langages haut/bas niveau Le CPU en comprend que des séquences binaires («011001010...») Il s'agit du «langage machine» : il est non ambigu. C'est le langage plus «bas niveau» qui soit, car le plus proche de la machine Le langage naturel est le langage de plus haut niveau, car le plus proche de nous et le plus éloigné de la machine. Il est ambigu! (Ex : «Alice et Bob ont dit à Carl qu'ils ont gagné au Loto». À qui se réfère «ils»?) Pour communiquer avec la machine, il nous faut donc 1) Un langage non ambigu (pour être compris de la machine), mais d'assez haut niveau (pour être compréhensible par nous) un langage de programmation 2) Un traducteur de ce langage vers le langage machine le compilateur Exemple : Un compilateur de langage C, pour une machine avec processeur Pentium 4 5

Exemples Langage humain : «Faire la somme de 5 et 3» Langage haut niveau : int a = 5; int b = 3 ; int c = a+b ; Langage machine : 0100100011101010 6

Le compilateur C'est un programme. Il procède en 2 phases indépendantes: 1) Analyse du code source Analyse lexicale : Vérifie que tous les «mots» font partie du langage (Ex d'erreurs: «wile» au lieu de «while», «3..14» au lieu de «3.14» ) orthographe, vocabulaire Analyse syntaxique : Vérifie que les structures sont écrites selon la grammaire du langage (Ex. d'erreur : «if (x == 0) y = 4 else else y = 7;» ) Analyse sémantique : vérifie que le code ait un sens (Ex. d'erreur : utiliser la valeur d'une variable qui n'a pas encore été assignée.) Au terme de cette première phase, un code intermédiaire est généré : un code objet, entre code haut niveau et code machine. Les instructions codées ne dépendent plus du langage haut niveau utilisé, et sont encore assez génériques pour être indépendantes de la machine qui les exécutera. 2) Génération de code exécutable (code machine) Le code objet est traduit vers le code machine du CPU que l'on va utiliser pour exécuter le programme. 7

Avant la pratique : un rappel sur les commandes GNU/Linux : man : «Manual», pour voir la documentation relative à une commande (syntaxe, options...) ex. : man mkdir, puis «q» pour quitter. pwd : «Print Working Directory», pour voir où l'on se trouve dans l'arborescence des répertoires cd : «Change Directory», pour changer le répertoire courant ls : «List», pour voir la liste des fichiers et répertoires contenus dans un répertoire ls -l : plus de détails sur (taille, date de dernière modification des fichiers...) mkdir : «make directory» crée un répertoire dans le répertoire courant mv : «move», pour déplacer ou renommer un répertoire ou un fichier cp : «copy» pour copier des fichiers et répertoires 8

Quelques syntaxes : cp /un/repertoire/un_fichier. copier le fichier «un_fichier» du répertoire «/un/repertoire/», dans le répertoire courant, désigné par le point «.» mv proggram.c program.c change le nom «proggram.c» en «program.c» mv /repertoire1/mon_fichier /repertoire2/ Déplace «mon_fichier» de /repertoire1 vers /repertoire2 cd /repertoire/sous_repertoire le répertoire courant devient /repertoire/sous_repertoire cd.. pour se placer dans le répertoire père, représenté par les deux points «..» /repertoire/du/programme/prog exécute le programme «prog», qui se trouve dans le répertoire /repertoire/du/programme/ Pour exécuter un programme, il faut toujours préciser son répertoire. Si «prog» se trouve dans le répertoire courant, il suffit de faire./prog 9

Exercice 1 : compilons! Télécharger le fichier «prog.c». ( http://mcolom.perso.math.cnrs.fr/cours_c/src/prog.c ), L'ouvrir, et essayer de générer le code objet associé, grâce à la commande suivante (où «gcc» est le GNU C Compiler) : gcc -c prog.c Expliquer les erreurs, les corriger, puis essayer de générer le code objet à nouveau (même commande). Quand plus aucun message d'erreur ne s'affiche, vérifier qu'un fichier «prog.o» a été créé, en tapant la commande : ls 10

Exercice 1 (suite) Générer le fichier exécutable «prog», grâce à la commande : gcc prog.o -o prog Cette commande traduit le code objet «prog.o» en code exécutable «prog» (l'option «-o» signifie «output»). Exécuter le programme «prog» en tapant./prog Remarque : Ici les deux étapes de la compilation peuvent se réaliser en une seule commande : gcc prog.c -o prog 11

Exercice 2 : Votre premier programme en C! Faire un programme qui prenne en argument une année (un nombre entier), et détermine si l'année est bissextile (*) ou non. Pour cela, télécharger puis ouvrir le fichier leap.c (http://mcolom.perso.math.cnrs.fr/cours_c/src/leap.c). Le code source est incomplet : La fonction «is_leap_year» est vide. La compléter de manière à ce qu'elle renvoie 1 si l'année d'entrée est bissextile, 0 sinon. Vous pouvez vous aider du fichier «exemples_syntaxes.c» (http://mcolom.perso.math.cnrs.fr/cours_c/src/exemples_syntaxes.c) A mesure que vous complétez le programme, n'oubliez pas d'enregistrer, compiler, exécuter! (*) Rappel : Une année est bissextile si elle est divisible par 4 ET si, soit elle est divisible par 400, soit elle n'est pas divisible par 100. 12