A propos de types en langage C

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

Rappels Entrées -Sorties

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

Programmation en langage C

Chapitre 1 : La gestion dynamique de la mémoire

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Chap III : Les tableaux

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)

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

Algorithmique et Programmation, IMA

Introduction au langage C

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

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

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

Programmation impérative

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Le langage C. Séance n 4

Les chaînes de caractères

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

V- Manipulations de nombres en binaire

Claude Delannoy. 3 e édition C++

Informatique Générale


SUPPORT DE COURS. Langage C

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

Cours d Algorithmique et de Langage C v 3.0

ALGORITHMIQUE ET PROGRAMMATION En C

Les structures de données. Rajae El Ouazzani

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

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

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

Chapitre 10 Arithmétique réelle

Les structures. Chapitre 3

Conventions d écriture et outils de mise au point

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

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

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

Programmation système I Les entrées/sorties

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

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

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

Le langage C. Introduction, guide de reference

Analyse de sécurité de logiciels système par typage statique

COMPARAISONDESLANGAGESC, C++, JAVA ET

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

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

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

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

INITIATION A LA PROGRAMMATION

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

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

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

Langage Éric Guérin 5 octobre 2010

Programmation Structurée en Langage 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 Classique en langage C

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

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

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

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

Architecture de l ordinateur

Introduction au Langage de Programmation C

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

Compléments de documentation Scilab : affichage de texte et formatage de nombres

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

INTRODUCTION À LA PROGRAMMATION PRATIQUE DU LANGAGE C. M. Le Gonidec

Notions fondamentales du langage C# Version 1.0

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

Objets et Programmation. origine des langages orientés-objet

Algorithmique, Structures de données et langage C

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

Le prototype de la fonction main()

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

as Architecture des Systèmes d Information

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

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

IV- Comment fonctionne un ordinateur?

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

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

Arguments d un programme

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

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

Programmation en C - Sommaire

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

Support de Cours de Langage C. Christian Bac

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

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

COURS D'INFORMATIQUE: LANGAGE C NOTES DE COURS

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

Programme Compte bancaire (code)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Présentation du langage et premières fonctions

I00 Éléments d architecture

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Transcription:

A propos de types en langage C L. Mounier UJF - M2 CCI - PL1 15 septembre 2017 1 / 16

Les types dans les langages de programmation Plan 1 Les types dans les langages de programmation 2 Les types de base du langage C 3 Définitions de type 2 / 16

Les types dans les langages de programmation Notion de type Un type définit : un domaine de valeurs ex : les entiers sur [1..10] un ensemble d opérations possibles sur ce domaine ex : addition, multiplication, etc. On associe un type : aux identificateurs d un programme variables : x : un entier procédures (actions et fonctions) : ecrire : une action (la donnée x : un entier) f : une fonction (un entier) un entier aux valeurs des expressions : x + 3 y, f (x) 5, etc. 3 / 16

Les types dans les langages de programmation Objectifs dy typage programmes corrects x : un entier ; y : un booléen ; x := x + y ; programmes lisibles (maintenables) x : un euros ; y : un dollars ; x := TAUX_CHANGE * y ; programmes efficaces (représentation en machine temps d exécution, mémoire) x : un entier sur 1.. 10 ; y : un entier sur 0.. 50000 ; 4 / 16

Les types dans les langages de programmation Différentes formes de typage Des langages non typés un seul type universel pour toutes les expressions ex : Assembleur, langages de script, etc. Des langages à typage faible autorise des conversions de type implicites ex : langage C, C++, etc. Des langages à typage fort peu/pas de conversions de types ex : Java, CAML, etc. Typage statique : types calculés à la compilation Typage dynamique : types calculés à l exécution Vérification de type vs Inférence de types 5 / 16

Les types dans les langages de programmation Conversions de Types Possibilité de modifier le type d une valeur Implicite : effectué (silencieusement) par le compilateur autorisée par le langage int x ; x = 4.2 ; // valeur 4.2 arrondie à 4 Explicite : notifié par le programmeur vérifié par le compilateur float x ; // x de type reel x = (float) 10 ; // valeur 10 "transformée en reel" 6 / 16

Les types de base du langage C Plan 1 Les types dans les langages de programmation 2 Les types de base du langage C 3 Définitions de type 7 / 16

Les types de base du langage C Types entier Domaine de valeurs, défini par deux paramètres : taille de la représentation mémoire : char, short, long, etc. entiers naturels vs relatifs : unsigned Exemples : char [ 128, 127], unsigned char [0, 255] int [ 2 31, 2 31 1], unsigned int [0, 2 32 1] Domaines de valeurs finis... Opérations : arithmétiques : +, -, *, / (division entière), % (modulo) comparaison : ==,!=, <=, <, >=, > logiques! :, &&,! Débordements arithmétiques possibles! char x ; x = 255 + 1 ; 8 / 16

Les types de base du langage C Type caractère Domaine de valeurs : l ensemble des caractères du clavier......codés par des entiers (code Ascii) en C le type caractère est un type entier! (char) Opérations : arithmétiques... : a + 1, a * 2,... comparaison... : a == b, a < b,... logiques... : a && b,... Quelques constantes utiles : \n : fin de ligne, \t : tabulation \0 : caractère nul 9 / 16

Les types de base du langage C Types réels Deux représentations : float et double Opérations : arithmétiques : +, -, *, / (division réelle) comparaisons : ==, <=,!=, etc librairie math.h (trigo, racine carrée, puissance, etc.) Domaines de valeurs finis : pb de précision pb de débordement 10 / 16

Définitions de type Plan 1 Les types dans les langages de programmation 2 Les types de base du langage C 3 Définitions de type 11 / 16

Définitions de type Opérateur typedef Définition de types utilisateur T : le type xxx typedef xxx T ; Exemple d utilisation : spécialiser un type existant définir un type énuméré définir un produit de types etc. 12 / 16

Définitions de type Spécialiser un Type renommer un type existant Limitations aucune vérification par le compilateur typedef int dollars ; typedef int euros ; dollars x = 3 ; euros y = 2 ; x = x + y ; // autorise impossible de restreindre le domaine de valeurs ex : T : le type entier sur [2, 12] 13 / 16

Définitions de type Types énumérés T : le type [A, B,...Z] typedef enum {A, B,... Z} T ; Exemples : typedef enum {lundi, mardi, mercredi, jeudi, vendredi} Jour ; typedef enum {rouge, bleu, vert, jaune} Couleur ; Remarques : Valeurs des types énumérés sont représentées par des entiers : lundi 0, mardi 1, vert 2, etc. toutes les opérations sur les entiers sont valides... Jour j ; Couleur c ; j = lundi + 2 ; c = vert * 3 ; // c vaut 6, plus une couleur... if (c < vert)... if (c < mercredi)... // pas de verification 14 / 16

Définitions de type Produit de Types T : le type <A : T1, B : T2> typedef struct {T1 A, T2 B;} T ; Exemples : typedef struct { int num ; int denum ; } Fraction ; Fraction f1, f2 ; Accés aux champs de la structure : f1.num = f1.num + f2.num ; f1.denum = 3 ; Limitations : affectation : f1 = f2 ; // OK comparaison : f1 == f2, f1!= f2 // NON! opérations arithmétiques : f1 = f1 + f2 // NON! Entrées-Sorties : printf("...", f1) ; // NON! 15 / 16

Définitions de type Retour sur les Entrées/Sorties Librairie stdio.h Deux fonctions principales : lecture : scanf écriture : printf Spécifier le type des valeurs lues/écrites : entier : %d (décimal), %u (non signé), %x (héxadécimal) caractére : %c réel : %f Exemples : printf("%c", a ) ; // affiche a printf("%d", a ) ; // affiche 97 printf("%c", 98) ; // affiche b 16 / 16