2. Variables et types simples

Documents pareils
Rappels Entrées -Sorties

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

Introduction au langage C

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

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

Le langage C. Séance n 4

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Les chaînes de caractères

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

Programmation en langage C

Algorithmique et Programmation, IMA

Programmation système I Les entrées/sorties

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

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


Chap III : Les tableaux

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

SUPPORT DE COURS. Langage C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Chapitre 1 : La gestion dynamique de la mémoire

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

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

Programmation impérative

Claude Delannoy. 3 e édition C++

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

Les structures. Chapitre 3

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

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

Le langage C. Introduction, guide de reference

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

Programmation Structurée en Langage C

INITIATION A LA PROGRAMMATION

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)

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Programmation Classique en langage C

Algorithmique, Structures de données et langage C

Cours d initiation à la programmation en C++ Johann Cuenin

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

Plan du cours. Historique du langage Nouveautés de Java 7

Programmation système de commandes en C

Conventions d écriture et outils de mise au point

Structure d un programme

MINIMUM. connaissances nécessaires à la programmation des microcontrôleurs PIC18 en langage C (une introduction au langage c A.N.S.

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Java Licence Professionnelle CISII,

Langage Éric Guérin 5 octobre 2010

as Architecture des Systèmes d Information

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Support de Cours de Langage C. Christian Bac

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

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

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

INF 104 (SELC) Introduction au langage C

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Les fichiers. Chapitre 4

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

Structurer ses données : les tableaux. Introduction à la programmation

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

Cours d Algorithmique et de Langage C v 3.0

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Premiers Pas en Programmation Objet : les Classes et les Objets

Cours 1: Java et les objets

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

Introduction au Langage de Programmation C

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

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Utilisation d objets : String et ArrayList

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

COURS D'INFORMATIQUE: LANGAGE C NOTES DE COURS

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

Introduction à la Programmation Parallèle: MPI

Plan du cours Cours théoriques. 29 septembre 2014

TD3: tableaux avancées, première classe et chaînes

INF 321 : mémento de la syntaxe de Java

Travaux Dirigés n 1 : chaînes de caractères

Programmation en Java IUT GEII (MC-II1) 1

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Généralités sur le Langage Java et éléments syntaxiques.

Langage Java. Classe de première SI

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

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

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

TP, première séquence d exercices.

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

1.6- Génération de nombres aléatoires

Programmer en JAVA. par Tama

Architecture de l ordinateur

Le prototype de la fonction main()

Transcription:

1 2. Variables et types simples Déclarations de variables Types scalaires Conversions de types Tableau Espaces de visibilité et classes d allocation

2 Types et variables Tout objet doit être déclaré avant d être utilisé Déclaration associe un type à un identificateur En C, on dispose des types : fondamentaux : int, float, char, void composés : tableau, structure, énumération pointeurs

3 Variables scalaires Entiers déclaration : int i; int resultat ; ou int i, resultat; taille varie selon les machines (2, ou 4 octets (linux)), entier signé par défaut Variable non initialisée: contient une valeur aléatoire. déclaration avec initialisation : (facultative) int i=3; int j=3, resultat=2; Initialisation a posteriori : i=3; resultat=4;

4 Variables scalaires qualificatifs : short, long, unsigned, signed Type Octets (linux) Format (printf) Valeurs admisses short,signed short 2 %hi -32 768 32 767 unsigned short 2 %hu 0 65535 unsigned 4 %u 0 4 294 967 295 signed 4 %i, %d -2 147 483 648 2 147 483 647 unsigned long 4 %lu 0 4 294 967 295 long 4 %li, %ld -2 147 483 648 2 147 483 647 long long 8 %lli, %lld -9.22 E+8 9.22 E+18 exemples : short j; idem short int j ; (int facultatif) unsigned u = 2;

5 Variables scalaires Réels (à virgule) déclaration : float i; float resultat ; float i, resultat; précision : Type Octets (linux) Format (printf) float 4 (mantisse+exposant) %f, %e double 8 (mantisse+exposant) %lf, %le initialisation : (facultative) float i=3.2; double resultat= 3.4e-2 ; ou float i; i=0.4e-1;

6 Variables scalaires Caractères codé sur 1 octet d après le code ASCII standard ( 0 127) déclaration : char c, d, e ; qualificateur : Type Octets (Linux) unsigned char f ; Ø Si 1 char est utilisé pour un usage autre que stocker un caractère imprimable: préciser signed ou unsigned. Format (printf) Valeurs admissibles dans le calcul avec 1 entier unsigned char 1 %c, %hhu, %u 0 255 signed char 1 %c, %hhi, %i -128 127 char 1 %c? signé ou non, dépend machine Mais caractère du code ascii standard positif (0-127)

7 Variables scalaires Initialisation : c = A ; idem que char c = 65; char line = \n ; c = A ; d = 66 ; e = c + 5 ; c d e 65 66 70 Caractères particuliers \n (retour à la ligne, code ascii =9 ) \t (tabulation, code ascii = 10 (10) )

8 Conversion de types Conversions implicites (en l absence d unsigned) : Lors d une opération à 2 opérandes (+, -, *, / ) : «le type le + petit est promu dans le type du plus grand» Exemple: float a, b=3.2; int c=2; a=b+c; Conversion implicite en float (a=3.2+ 2.0) -> a=5.2 Promotion double float long int int short char

9 Conversion de types Conversions implicites : Lors d une affectation (a = b) : «le type de b est converti dans le type du résultat a» Exemple 1: b=c+a; (b=5.0) float b=3.2; int a=3, c=2; c=b+a; =5, int =6.2, float (1.implicite conversion de a) Conversion implicite en float (c=6) 2.conversion implicite en int (troncature de la partie fractionnaire )

10 Conversion de types Conversions implicites : Lors d une affectation (a = b) : «le type de b est converti dans le type du résultat a» Exemple 2 : b=c; (b=0x0002) short b=0x010b; (utilise 2 octets) char c=0x02; Conversion implicite en short c=b; (c=0x0b) Conversion implicite en char(troncature des bits de poids fort)

11 Conversion de types Conversions explicite : operateur de cast (type) L utilisateur peut forcer la conversion d une variable dans un autre Exemple 1: float f; int k=3, j=2; f=k/j; (f=1.0) Idem f=(float)(k/j); f=(float)k/j; =1, division entière k float Conversion (-> implicite conversion de j en float) implicite en float =1.5, float (f=1.5) Idem (float)k/(float)j

12 Void Type introduit tardivement, utilisé pour : Indiquer qu une fonction ne renvoie pas de valeur void function (int x, int y) Un pointeur générique, ne pointe sur aucun type en particulier: void* (à voir plus tard)

Définitions et déclarations 13 Un tableau est une collection d'éléments de même type, stockés de façon contiguë en mémoire. Déclaration : < type nom [taille] > Exemples : int tab[5] ; char ligne[80] ; Chaque élément est repéré par un indice tab[0] tab[1] tab[2] tab[3] tab[4]

14 Accès aux composants int t[5] ; t[0] t[1] t[2] t[3] t[4] t[0] = 23 ; 23 t[0] t[1] t[2] t[3] t[4] t[3] = t[0] + 4 ; 23 27 t[0] t[1] t[2] t[3] t[4] t[2] = t[3] + t[0] ; 23 50 27 t[0] t[1] t[2] t[3] t[4]

Initialisations 15 int t[4] = {12,34,56,78}; 12 34 56 78 t[0] t[1] t[2] t[3] int t[4] = {1,2}; int t[3] = {21,43,65,87}; 1 2 t[0] t[1] t[2] t[3] 21 43 65 t[0] t[1] t[2] int t[] = {3,2,1} ; 3 2 1 t[0] t[1] t[2]

16 Chaînes de caractères tableau de caractères se termine par ' \0 (backlash 0) avec initialisation : char tab[80] = "hello!"; idem char tab[80] ={ h, e, l, l, o,!, \0 }; tableau assez grand pour contenir les caractères de la chaîne + le delimiteur de fin \0 accès identiques aux tableaux : tab[4]= o ; constantes chaînes entre guillemets : "bonjour"

17 Chaînes de caractères char str1[6] = "hello" ; printf("1: %s? \n", str1); scanf( "%s",str1); ou pour lire au plus 5 caractères: scanf ("%5s",str1); str1 h e l l o \0 A l écran: hello? loic c Hello loic! printf("hello %s!\n", str1); Note: scanf("%s", ) stoppe la lecture au premier espace blanc

18 Chaînes de caractères fonctions de manipulation dans les bibliothèques standards : strlen : calcul la longueur d une chaîne strcomp : compare 2 chaînes strstr: recherche une chaîne de caractère à l intérieur d une autre chaîne

19 Espace de validité et classe d allocation Variable locale définie à l intérieur d un bloc (fonction ou sous-bloc) connue et accessible, valide à l intérieur de ce bloc uniquement Classe automatique (par défaut) allouer dynamiquement à l exécution du bloc et libérée à la fin du bloc contenu est perdu entre deux exécutions allocation se fait sur une pile de travail il faut les initialiser avant de les utiliser classe par défaut, donc auto int j ; équivalent à int j ;

20 Espace de validité et classe d allocation #include <stdio.h> Variable locale void main() { int i=1; { int k=2; printf( > %d %d\n",i,k); } } Compilation: OK Sortie écran : > 1 2

21 Espace de validité et classe d allocation #include <stdio.h> Variable locale void main() { int i=1; { int k=2; } printf( > %d %d\n",i,k); } Compilation: Erreur! In function main : 10: error: k undeclared

22 Espace de validité et classe d allocation #include <stdio.h> Variable locale void main() { int i=1; { int i=2; printf( > %d\n",i); } } Compilation: OK Sortie écran: > 2 Note: le i le plus local est utilisé. Mais mauvaise idée! è Utiliser des noms différents

23 Espace de validité et classe d allocation Variable locale Classe statique allocation permanente pas détruite lors de la sortie de la fonction (bloc) valeur conservée entre 2 appels mais visibilité toujours limité au bloc, inaccessible hors du bloc static int i ; static float f ;

24 Espace de validité et classe d allocation #include <stdio.h> void plus() { int i, j = 1 ; static int k = 1; j = j + 1; k = k + 1; printf( i=%d j=%d k=%d\n, i,j,k); } int main() { plus(); plus(); plus(); return(0); } Sortie écran: i=0 j=2 k=2 i=0 j=2 k=3 i=0 j=2 k=4 Note : i pas initialisé Hasard, si i=0.

25 Espace de validité et classe d allocation Variables globales définies hors du corps d une fonction connues et accessibles tout au long du programme (globalement visibles par n importe quelle fonction) permettent de partager l information entre toutes les fonctions int i; { int j ; } { int k ; } Global variable Ne pas abuser des variables globales: -garder local ce qui est local, pour avoir des fonctions réutilisables (bibliothèque)) Fichier source

26 Espace de validité et classe d allocation int j; /* GLOBAL VARIABLE*/ void plus() { int i = 1 ; static int k = 1; j = j + 1; k = k + 1; printf("i=%d j=%d k=%d \n", i,j,k); i= i+1; } Sortie écran: i = 1 j = 7 k = 2 i = 1 j = 8 k = 3 i = 1 j = 9 k = 4 void main() { j=6; plus(); plus(); plus(); }

27 Espace de validité et classe d allocation Variables globales pour un programme sur plusieurs fichiers Définition : réserve de la place mémoire Allusion : représente les propriétés (déclaration) extern Classe statique pour une variable globale: portée, visibilité, de la variable globale limitée au fichier int i; fonction 1 définition extern int i; static int j; fonction 3 allusion fonction 2 Fichier a Fichier b