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



Documents pareils
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

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51


Programmation en langage C

SUPPORT DE COURS. Langage C

Rappels Entrées -Sorties

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

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

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

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

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

Pensez à vous inscrire... si ce n est pas encore fait

Informatique Générale

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

Programmer en JAVA. par Tama

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

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

Java Licence Professionnelle CISII,

Claude Delannoy. 3 e édition C++

Langage Éric Guérin 5 octobre 2010

Cours d Algorithmique et de Langage C v 3.0

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

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)

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

COMPARAISONDESLANGAGESC, C++, JAVA ET

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Algorithmique et Programmation, IMA

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

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

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

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

Le langage C. Introduction, guide de reference

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

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

Support de Cours de Langage C. Christian Bac

Chap III : Les tableaux

INF 321 : mémento de la syntaxe de Java

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

Notions fondamentales du langage C# Version 1.0

Les structures. Chapitre 3

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

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

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

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

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

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

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

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Chapitre 1 : La gestion dynamique de la mémoire

INITIATION A LA PROGRAMMATION

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

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

Programmation en Java IUT GEII (MC-II1) 1

ALGORITHMIQUE ET PROGRAMMATION En C

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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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

Les structures de données. Rajae El Ouazzani

as Architecture des Systèmes d Information

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

Algorithmique, Structures de données et langage C

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

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

Programmation Classique en langage C

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

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

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

Introduction au Langage de Programmation C

Programmation système I Les entrées/sorties

Logiciel de Base. I. Représentation des nombres

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

Gestion de la mémoire

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

Conventions d écriture et outils de mise au point

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Initiation à l algorithmique

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

V- Manipulations de nombres en binaire

Architecture de l ordinateur

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

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

Programmation en C - Sommaire

Outils pour la pratique

Introduction à MATLAB R

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Notes de Cours - Programmation Pascal Ferraro

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Rappels d architecture

Compilation (INF 564)

Transcription:

Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005

Introduction Types Structures de contrôle Exemple Présentation Évaluation Calendrier Biblio Historique Sommaire 1 Introduction Présentation Évaluation Calendrier Biblio Historique 2 Types Types simples Opérateurs 3 Structures de contrôle 4 Exemple

Introduction Types Structures de contrôle Exemple Présentation Évaluation Calendrier Biblio Historique Présentation du module Module avancé (niveau 200) Objectifs principaux: Gestion explicite de la mémoire Structure de données autoréférentielles: listes, piles, arbres, graphes Itinéraire: Notions d algorithmique Manipulation de fichiers Interfaces graphiques Pensez à vous inscrire...

Introduction Types Structures de contrôle Exemple Présentation Évaluation Calendrier Biblio Historique Évaluation 60% pour l examen final 40% pour le contrôle continu 10% partiel 10% projet 10% pour le TME solitaire 10% pour l appréciation en TD/TME

Introduction Types Structures de contrôle Exemple Présentation Évaluation Calendrier Biblio Historique Calendrier 12 semaines de cours, 12 semaines de TD/TME Les TD/TME commencent la semaine du 14 février Le dernier TD a lieu la semaine du 23 mai 2005 Les partiels auront lieu la semaine du 21 mars TME solitaire la semaine du 11 avril

Introduction Types Structures de contrôle Exemple Présentation Évaluation Calendrier Biblio Historique Calendrier Semaines 1 et 2: révisions Introduction Types Structures de contrôle Expressions Fonctions Fonctions récursives Passages de paramètres

Introduction Types Structures de contrôle Exemple Présentation Évaluation Calendrier Biblio Historique Calendrier Semaines 3 et 4: pointeurs & structures introduction aux pointeurs manipulations et utilisations des pointeurs allocation dynamique structures

Introduction Types Structures de contrôle Exemple Présentation Évaluation Calendrier Biblio Historique Calendrier Semaines 5, 6 et 7: Structures autoréférentielles introduction aux structures autoréférentielles listes chaînées arbres tables de hachage...

Introduction Types Structures de contrôle Exemple Présentation Évaluation Calendrier Biblio Historique Calendrier Semaines 8 à 12: projet Scrabble Interface graphique donnée... Manipulation du chevalet et du damier Gestion du dictionnaire Implémentation d un joueur artificiel

Introduction Types Structures de contrôle Exemple Présentation Évaluation Calendrier Biblio Historique Bibliographie et outils Le langage C: norme ANSI. Brian W. Kernighan & Denis M. Ritchie, Dunod Programmer en langage C. Claude Delannoy, Eyrolles C: a reference manual. Samuel P. Harbison & Guy L. Steele Jr., Prentice Hall C: a software engineering approach. Peter A. Darnell & Philip E. Margolis, Springer... Environnement: Linux. Outils informatiques utilisés: éditeurs: emacs/vi/gvim/gedit compilateur: gcc débogueur: gdb, ddd

Introduction Types Structures de contrôle Exemple Présentation Évaluation Calendrier Biblio Historique Le Langage C Le langage C a été inventé en 1972 par Dennis Ritchie et Ken Thompson (AT&T Bell Laboratories) pour réécrire Unix et développer des programmes sous Unix. En 1978, Brian Kernighan et Dennis Ritchie publient la définition classique du C dans le livre The C Programming language. C est une norme ANSI (ANSI-C) depuis 1989 et un standard ISO depuis 1990. C fait partie de la famille des langages impératifs Toutes les distributions Linux fournissent des compilateurs C.

Introduction Types Structures de contrôle Exemple Types simples Opérateurs Types

Introduction Types Structures de contrôle Exemple Types simples Opérateurs Types entiers Type Signification Taille (o) Plage de valeurs char Caractère 1-128 à 127 unsigned char Caractère 1 0 à 255 short int Entier court 2-32768 à 32767 uns. short int Entier court non s. 2 0 à 65535 int Entier 2 (16 b) -32768 à 32767 4 (32 et 64 b) -2 147 483 648 à 2 147 483 647 unsigned int Entier non signé 2 (16 b) 0 à 65 535 4 (32 et 64 b) 0 à 4 294 967 295 long int Entier long 4-2 147 483 648 à 2 147 483 647 8 (64 b) -9 223 372 036 854 775 080 à 9 223 372 036 854 775 807 uns. long int Entier long non s. 4 0 à 4 294 967 295

Introduction Types Structures de contrôle Exemple Types simples Opérateurs Types à virgule flottante Représentation: signe mantisse base exposant Plage de valeurs donnée pour un système Linux (non normalisé). Type Signification Taille (o) Plage de valeurs float Simple précision 4 +/- 1.175494e-38 à 3.402823e+38 double Double précision 8 +/- 2.225074e-308 à 1.797693e+308 long double Double préc. long 12 +/- 3.362103e-4932 à 1.189731e+4932

Introduction Types Structures de contrôle Exemple Types simples Opérateurs Types à virgule flottante ATTENTION: les flottants sont représentés de manière approchée. Conséquences: L associativité n est plus assurée: a + (b + c) = (a + b) + c Valeur approchée d une somme et somme de valeurs approchées Tests: f l o a t x =0.1, y =0.1; i f ( x+y == 0.2) / peut e t r e v r a i ou f a u x /...

Introduction Types Structures de contrôle Exemple Types simples Opérateurs Caractères il n y a pas vraiment de type Caractères le type char est un type entier (on peut l utiliser pour les calculs) prenant un octet. un caractère est représenté par un entier ; la correspondance (code/caractère) est établie par la table ASCII.Exemple: char c= a ; p r i n t f ( c= %c %d\n, c, c ) ; Donne: c= a 97

Introduction Types Structures de contrôle Exemple Types simples Opérateurs Chaînes de caractères Pas de type string en C mais on utilise la notation. Exemple : p r i n t f ( b o n j o u r ) ; correspond à la déclaration d un tableau de char initialisé avec les codes ASCII (dans la section rodata). En cas de besoin d une variable de type chaîne de caractères, on déclare un tableau de char: char message1 [8]= b o n j o u r ; / 7 l e t t r e s e t \ 0 a l a f i n / char message2 []= b o n j o u r ; p r i n t f ( %s \n, message1 ) ; p r i n t f ( %s \n, message2 ) ;

Introduction Types Structures de contrôle Exemple Types simples Opérateurs Type enuméré Permet de définir une constante énumérée. Exemple : enum mois {JAN = 1, FEV, MAR,... } ; enum mois m=3; enum mois n=jan ; i f ( m == MAR ) { p r i n t f ( m=mar\n ) ; }

Introduction Types Structures de contrôle Exemple Types simples Opérateurs Tableaux Permet de stocker dans un espace mémoire contigu des éléments de même type. i n t T1 [ 3 ] = { 2, 1, 5 } ; i n t T2 [ ] = { 4, 1, 5 } ; i n t T2 [ ] ; i m p o s s i b l e! char TC[ 3 ] [ 2 ] = { {, }, {, }, {, } } ; char message1 []= b o n j o u r ; char message2 [8]= b o n j o u r ;

Introduction Types Structures de contrôle Exemple Types simples Opérateurs Opérateurs Par ordre de précédence: -. référence: () [] ->. -. unaire:! ~ ++ -- + - * & (type) sizeof -. arithmétique: * / % -. arithmétique: + - -. décalage: << >> -. relationnels: < <= > >= -. relationnels: ==!= -. manipulation de bits: & -. manipulation de bits: ^ -. manipulation de bits: -. logique: && -. logique: -. conditionnel:?: -. affectation: = += -= *= /= %= &= ^= = <<= >>=

Introduction Types Structures de contrôle Exemple Types simples Opérateurs Opérateurs Exemples

Introduction Types Structures de contrôle Exemple Structures de contrôle

Introduction Types Structures de contrôle Exemple if i f ( e x p r e s s i o n ) { i n s t r u c t i o n s ; } e l s e { i n s t r u c t i o n s ; }

Introduction Types Structures de contrôle Exemple switch switch ( e x p r e s s i o n ) { case e x p r e s s i o n c o n s t a n t e : i n s t r u c t i o n s ; case e x p r e s s i o n c o n s t a n t e : i n s t r u c t i o n s ; d e f a u l t : i n s t r u c t i o n s ; } ATTENTION au break...

Introduction Types Structures de contrôle Exemple while while ( e x p r e s s i o n ) { i n s t r u c t i o n s ; }

Introduction Types Structures de contrôle Exemple for f o r ( e x p r e s s i o n 1 ; e x p r e s s i o n 2 ; e x p r e s s i o n 3 ) { i n s t r u c t i o n s ; } équivaut à : e x p r e s s i o n 1 ; while ( e x p r e s s i o n 2 ) { i n s t r u c t i o n s ; e x p r e s s i o n 3 ; }

Introduction Types Structures de contrôle Exemple do while très proche du while avec test à la fin: do { i n s t r u c t i o n s ; } while ( e x p r e s s i o n ) ;

Introduction Types Structures de contrôle Exemple perturbation du déroulement des boucles break : interrompt une boucle continue : passe à l itération suivante goto : existe, mais INTERDIT!!

Introduction Types Structures de contrôle Exemple Exemple

Introduction Types Structures de contrôle Exemple Présentation du problème Construction d une bibliothèque besoin de planches de longueur variée (largeur unique) planches vendues dans le commerce de longueur unique: 2 mètres Problème: combien de planches acheter pour pouvoir couper toutes les planches souhaitées? 3 2 1

Introduction Types Structures de contrôle Exemple Algorithme choisi (1 ere version) Hypothèse simplificatrice: 3 planches maximum à découper par planche du commerce. Tant qu il reste des planches à découper Initialiser max à 0 Pour toutes les combinaisons de 3 planches à découper Est-ce qu il reste des planches de ces longueurs à couper? Est-ce que la longueur est inférieure à 2m Si la longueur est supérieure au max, on met à jour le max Fin pour Mise à jour du nombre de planches restantes Afficher résultat Fin tant que

Introduction Types Structures de contrôle Exemple Variables / P l a n c h e s n e c e s s a i r e s / unsigned short i n t l g p l [ PLN ] = { 1 0 7 0, 1 0 5 2,... } ; short i n t n b p l [ PLN ] = { 6, 2, 2, 4, 6, 4,... } ; / i n d i c e s dans l e s t a b l e a u x de p l a n c h e s / i n t mi, mj, mk ; unsigned i n t cumul =0; unsigned i n t max cumul ; unsigned i n t l t =0; short n b p l t =0; i n t i, j, k, l ; unsigned i n t t o t a l p l =0;

Introduction Types Structures de contrôle Exemple Boucle principale max cumul = 0 ; mi= 1;mj= 1;mk= 1; f o r ( l =0; l <PLN PLN PLN ; l ++) { i=l /(PLN PLN ) ; j =( l /PLN)%PLN ; k=l%pln ; i f ( ( n b p l [ i ] <= 0) ( n b p l [ j ] < = 0 ) ( n b p l [ k ] <= 0)) continue ; cumul = l g p l [ i ] + l g p l [ j ] + l g p l [ k ] ; i f ( cumul > LGP ) continue ; i f ( cumul > max cumul ) { max cumul = cumul ; mi=i ; mj=j ; mk=k ; } i f ( cumul == LGP ) break ; }

Introduction Types Structures de contrôle Exemple C est tout pour aujourd hui!