Entrées sorties et variables en C

Documents pareils
Bases de programmation. Cours 5. Structurer les données

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Le langage C. Séance n 4

Rappels Entrées -Sorties

Introduction au langage C

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Algorithmique et Programmation, IMA

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

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

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

Programmation système I Les entrées/sorties

Langages et Concepts de Programmation Introduction à la programmation en langage C

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

INF 104 (SELC) Introduction au langage C

Programmation C. J.-F. Lalande. 15 novembre 2012

Programmation en langage C

ALGORITHMIQUE ET PROGRAMMATION En C

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

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

BTS IRIS Cours et Travaux Pratiques. Programmation C. A. Lebret, TSIRIS, Lycée Diderot, 1995/06. en conformité avec le référentiel du BTS IRIS

Programmation Structurée en Langage C

Chapitre 1 : La gestion dynamique de la mémoire

Cours de programmation avancée. Le langage C. Université du Luxembourg

INITIATION A LA PROGRAMMATION

Cours Programmation Système

Outils pour la pratique

Support de Cours de Langage C. Christian Bac


COURS D'INFORMATIQUE: LANGAGE C NOTES DE COURS

UE C avancé cours 1: introduction et révisions

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Programmation Classique en langage C

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Chap III : Les tableaux

UE Programmation Impérative Licence 2ème Année

Introduction au Langage de Programmation C

Le prototype de la fonction main()

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Gestion de la mémoire

Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2011/2012

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Langage Éric Guérin 5 octobre 2010

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Le langage C. Introduction, guide de reference

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Programmation impérative

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation en C - Sommaire

SUPPORT DE COURS. Langage C

Structure d un programme

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Algorithmique, Structures de données et langage C

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

Les débordements de tampons et les vulnérabilités de chaîne de format 1

Claude Delannoy. 3 e édition C++

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

Programmation en langage C Eléments de syntaxe

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Logiciel de base. Première année ENSIMAG

Notions de Langage C

Cours de C/C++ par la pratique. Hugues Talbot

Les chaînes de caractères

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

COURS DE LANGAGE C. DIAO Oumar. Université de Rennes 1. Master 1

Cours Langage C/C++ Programmation modulaire

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

Les structures. Chapitre 3

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Programmation système de commandes en C

Programmation structurée et Langage C. L informatique à Phelma. Première séance. Lancer un terminal

Conventions d écriture et outils de mise au point

Introduction à l algorithmique et à la programmation M1102 CM n 3

I. Introduction aux fonctions : les fonctions standards

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Quelques éléments de compilation en C et makefiles

Cours d Algorithmique et de Langage C v 3.0

Lier Erlang avec d autres langages de programmation

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Rappels d architecture

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Arguments d un programme

Programmation C++ (débutant)/instructions for, while et do...while

TP, première séquence d exercices.

Compression de Données - Algorithme de Huffman Document de Conception

Initiation à la programmation en Python

Chapitre 10 : Logiciels

Les fichiers. Chapitre 4

Architecture des ordinateurs

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

Méthodes de programmation systèmes UE n NSY103. Notes de cours. Nombre d'heures : 55h (~ cours de 3 heures)

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

Programmation Structurée Langage C

Introduction à C++ et à wxwidgets

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

1. Structure d'un programme FORTRAN 95

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Transcription:

Entrées sorties et variables en C Séance 1 de l'ecue «introduction à la programmation» Bruno Bouzy bruno.bouzy@parisdescartes.fr

Premier programme C // premierprog.c #include <stdio.h> int main() { printf("bonjour.\n"); return (0); } Le «source» Ecrit en langage C avec un éditeur de texte entrées sorties et variables 2

Premier programme C // premierprog.c #include <stdio.h> int main() { printf("bonjour.\n"); return (0); } Titre du fichier source // indique un commentaire sur une ligne entrées sorties et variables 3

Premier programme C // premierprog.c #include <stdio.h> int main() { printf("bonjour.\n"); return (0); } Inclusion de l'en-tête pour les entrées sorties stdio.h: en-tête pour les entrées sorties #include: pour inclure un fichier en-tête entrées sorties et variables 4

Premier programme C // premierprog.c #include <stdio.h> int main() { printf("bonjour.\n"); return (0); } Le «programme principal» main() est une fonction unique et obligatoire int type du retour entrées sorties et variables 5

Premier programme C // premierprog.c #include <stdio.h> int main() { printf("bonjour.\n"); return (0); } Imprimer «Bonjour.» sur l'écran printf() : fonction d'impression usuelle Bonjour.\n : ce que l'on veut imprimer \n: saut de ligne entrées sorties et variables 6

Premier programme C // premierprog.c #include <stdio.h> int main() { printf("bonjour.\n"); return (0); } Fin de l'exécution d'une fonction return : retour de la fonction 0 : la valeur de retour vaut 0 entrées sorties et variables 7

Premier programme C // premierprog.c #include <stdio.h> int main() { } printf("bonjour.\n"); return (0); Une instruction se termine par un ; Un programme est une suite d'instructions. entrées sorties et variables 8

Premier programme C // premierprog.c #include <stdio.h> int main() { } printf("bonjour.\n"); return (0); Les { } marquent le début et la fin d'un «bloc». Un bloc regroupent des instructions. entrées sorties et variables 9

Premier programme C La compilation avec gcc ProgC > gcc premierprog.c ProgC > ls a.out premierprog.c ProgC > gcc : GNU C Compiler gcc s'exécute en ligne de commandes Linux a.out: l'exécutable entrées sorties et variables 10

Premier programme C L'exécution ProgC >./a.out Bonjour. ProgC > a.out: l'exécutable L'exécution de a.out imprime Bonjour. sur l'écran. entrées sorties et variables 11

Premier programme C Résumé On édite avec un éditeur de texte (emacs, textedit, gedit, vi) On compile avec gcc On exécute Sous la forme d'une commande Linux entrées sorties et variables 12

Premier programme C Spécifier le nom de l'exécutable avec l'option -o ProgC > gcc -o toto premierprog.c ProgC > ls toto premierprog.c ProgC >./toto Bonjour. ProgC > toto: l'exécutable L'exécutable est le produit de la compilation. entrées sorties et variables 13

Premier programme C premprog.c (source) gcc Compilation premprog Exécution premprog (exécutable) sortie (écran) entrées sorties et variables 14

Première variable C // var.c #include <stdio.h> int main() { printf("bonjour.\n"); int a; a=3; printf("a = %d\n", a); printf("au revoir.\n"); return (0); } entrées sorties et variables 15

Première variable C int a; Déclaration de la variable a Crée un espace mémoire pour la variable a. Notation graphique: a int? entrées sorties et variables 16

Première variable C a = 3; Met 3 dans l'emplacement mémoire de a. Affectation d'une valeur à la variable a. Notation graphique: a int 3 entrées sorties et variables 17

Première variable C printf("a = %d\n", a); %d est le format correspondant au type int. Affiche a = 3 à l'écran. ProgC > gcc -o var var.c ProgC >./var a = 3 ProgC > entrées sorties et variables 18

Première entrée // varscanf.c #include <stdio.h> int main() { printf("bonjour.\n"); int x; printf("tapez une valeur : "); scanf("%d", &x); printf("vous avez tape <%d>.\n", x); printf("au revoir.\n"); return (0); } entrées sorties et variables 19

Première entrée Compilation exécution: ProgC > gcc varscanf.c ProgC >./a.out Bonjour. Tapez une valeur: 7 Vous avez tape <7>. Au revoir. ProgC > L'utilisateur a tapé 7 et 'entrée' au clavier. entrées sorties et variables 20

compilation exécution entrées sorties prog.c (source) gcc Compilation prog (exécutable) entrée (clavier) prog Exécution sortie (écran) entrées sorties et variables 21

Première opération // varadd.c #include <stdio.h> int main() { int a=3, b=7, c; printf("a = %d\n", a); printf("b = %d\n", b); c = a + b; printf("la somme est %d\n", c); return (0); } entrées sorties et variables 22

Première opération Exécution: ProgC >./a.out a = 3 b = 7 La somme est 10 ProgC > entrées sorties et variables 23

En mémoire: Première opération int a=3, b=7, c; c = a + b; a int 3 a int 3 b int 7 b int 7 c int? c int 10 entrées sorties et variables 24

Première opération Pas de printf: Exécution: // varadd.c #include <stdio.h> int main() { int a=3, b=7, c; c = a + b; return (0); } ProgC >./a.out ProgC > Rien sur l'écran! entrées sorties et variables 25

Première calculette Les opérandes sont entrées au clavier: int main() { int a, b, c; printf("valeur 1? "); scanf("%d", &a); printf("valeur 2? "); scanf("%d", &b); c = a + b; printf("somme = %d\n", c); return (0); } entrées sorties et variables 26

Première calculette Exécution: ProgC >./a.out Valeur 1? 2 Valeur 2? 5 Somme = 7 ProgC > entrées sorties et variables 27

Premier nombre réel int main() { float y; printf("tapez un reel : "); scanf("%f", &y); printf("le reel est %f.\n", y); return (0); } float: type réel «flottant» (avec virgule) %f : format d'entrée sortie des float entrées sorties et variables 28

Premier nombre réel Exécution: ProgC >./a.out Tapez un reel : 2.71 Le reel est 2.710000. ProgC > nombre réel entré: 2 chiffres après la virgule sortie par défaut: 6 chiffres après la virgule entrées sorties et variables 29

Précision int main() { float x = 3.5; int y = 2; float z = x/y; printf("%2.2f / %d = %2.2f\n", x, y, z); printf("%2.4f / %d = %2.4f\n", x, y, z); printf("%10.2f / %d = %10.2f\n", x, y, z); printf("%10.4f / %d = %10.4f\n", x, y, z); return (0); } %m.nf (au lieu de %f) signifie: Largeur d'affichage minimal par défaut = m Precision = n entrées sorties et variables 30

Précision Exécution: ProgC >./a.out 3.50 / 2 = 1.75 3.5000 / 2 = 1.7500 3.50 / 2 = 1.75 3.5000 / 2 = 1.7500 ProgC > Nombre de caractères pour afficher = 4 ou 10 Nombre de chiffres après la virgules = 2 ou 4 entrées sorties et variables 31

Entrée d'un caractère unique En ligne de commandes, un programme demande souvent un caractère à l'utilisateur. ProgC >./a.out caractere? b caractere = b (code ascii=98) ProgC > L'utilisateur a tapé b puis 'entrée'. entrées sorties et variables 32

Entrée d'un caractère unique // scanfchar.c #include <stdio.h> int main() { char m; printf("caractere? "); scanf("%c", &m); printf("caractere = %c\n", m); printf("(code ascii=%d)\n", m); return (0); } %c : format d'entrée sortie pour les char %d : représentation int du char code ascii d'un char : nombre entier de 0 à 255 entrées sorties et variables 33

Entrée de 2 caractères Un programme peut demander 2 caractères: ProgC >./a.out caractere 1? q caractere 1 = q (code ascii=113) caractere 2? w caractere 2 = w (code ascii=119) ProgC > entrées sorties et variables 34

Entrée de 2 caractères int main() { char m, n; printf("caractere 1? "); scanf("%c", &m); printf("caractere 1 = %c\n", m); printf("(code ascii=%d)\n", m); printf("caractere 2? "); scanf("%c", &n); printf("caractere 2 = %c\n", n); printf("(code ascii=%d)\n", n); return (0); } Ce programme ne marche pas. Pourquoi? entrées sorties et variables 35

Entrée de 2 caractères Le scanf de char avec %c lit tous les caractères tapés au clavier. L'utilisateur doit taper 4 caractères: Un premier caractère 'entrée' Un second caractère 'entrée' 'entree' correspond au saut de ligne '\n' de code ascii = 10 entrées sorties et variables 36

Entrée de 2 caractères int main() { char m, n, bidon; printf("caractere 1? "); scanf("%c", &m); scanf("%c", &bidon); printf("caractere 1 = %c\n", m); printf("caractere 2? "); scanf("%c", &n); scanf("%c", &bidon); printf("caractere 2 = %c\n", n); return (0); } Ce programme marche bidon reçoit les '\n' correspondant à 'entrée' entrées sorties et variables 37

Entrée de 2 entiers Pourquoi la première calculette marchait? Elle demandait 2 entiers sans variable bidon! Réponse: %d est une entrée sortie élaborée qui extrait le int à partir des caractères tapés au clavier (les chiffres successifs et le '\n') %c est une entrée sortie du niveau caractère Les autres formats (%f et %s sont élaborés) entrées sorties et variables 38

Entrée de 2 caractères int main() { char m[2], n[2]; printf("caractere 1? "); scanf("%s", m); printf("caractere 1 = %c\n", m[0]); printf("caractere 2? "); scanf("%s", n); printf("caractere 2 = %c\n", n[0]); return (0); } Ce programme marche m et n : tableaux de 2 caractères %s : format tableau de caractères m[0] et n[0] premières cases du tableau entrées sorties et variables 39

En mémoire: Entrée de 2 caractères char m[2], n[2]; m char[2] 'q' '\n' n char[2] 'w' '\n' entrées sorties et variables 40

// constante.c #include <stdio.h> Constante #define CONS 10 int main() { int a, b; printf("valeur? "); scanf("%d", &a); b = a + CONS; printf("valeur + constante %d = %d\n", CONS, b); return (0); } #define définit une «constante» CONS gcc remplace CONS par 10 dans le source entrées sorties et variables 41

fflush fflush : vide le contenu de printf sur la sortie stdout: sortie standard (l'écran, un fichier) int main() { int x; printf("tapez un entier: "); fflush(stdout); scanf("%d", &x); printf("entier = %d\n", x); return (0); } entrées sorties et variables 42

Les types pré-définis (1/2) les plus couramment utilisés... int char float Nombre entier sur 4 octets (32 bits) Caractère ou nombre entier sur 1 octet (8 bits) Nombre réel (flottant) simple (4 octets) double Nombre réel double précision (8 octets) entrées sorties et variables 43

Les types pré-définis (2/2) suite... char * int * Pointeur sur caractère Pointeur sur nombre entier unsigned int Nombre entier positif ou nul (32 bits) unsigned char Nombre entier positif ou nul <= 255 (8 bits) entrées sorties et variables 44

sizeof() sizeof(t) : taille du type t donnée en octets printf("sizeof(char) = %d\n", sizeof(char)); printf("sizeof(short) = %d\n", sizeof(short)); printf("sizeof(int) = %d\n", sizeof(int)); printf("sizeof(long) = %d\n", sizeof(long)); printf("sizeof(long long) = %d\n", sizeof(long long)); printf("sizeof(float) = %d\n", sizeof(float)); printf("sizeof(double) = %d\n", sizeof(double)); printf("sizeof(char *) = %d\n", sizeof(char *)); printf("sizeof(int *) = %d\n", sizeof(int *)); printf("sizeof(unsigned char) = %d\n", sizeof(unsigned char)); printf("sizeof(unsigned int) = %d\n", sizeof(unsigned int)); entrées sorties et variables 45

sizeof() Taille en octets des principaux types pré-définis sizeof(char) = 1 sizeof(short) = 2 sizeof(int) = 4 sizeof(long) = 4 sizeof(long long) = 8 sizeof(float) = 4 sizeof(double) = 8 sizeof(char *) = 4 sizeof(int *) = 4 sizeof(unsigned char) = 1 sizeof(unsigned int) = 4 entrées sorties et variables 46

Résumé de la séance 1 1er programme C compilation (gcc), exécution, source, exécutable entrée, sortie, clavier, écran variable, mémoire, déclaration, affectation opérateur lecture d'entiers, réels, caractères constante, fflush, sizeof entrées sorties et variables 47