TD de Langage C Programmation Structurée L3 - EEA Université de Marne La Vallée

Documents pareils

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

Introduction au langage C

Conventions d écriture et outils de mise au point

Algorithmique I. Algorithmique I p.1/??

Cours Informatique Master STEP

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

I. Introduction aux fonctions : les fonctions standards

CORRECTION EXERCICES ALGORITHME 1

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Algorithmique et Programmation, IMA

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

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

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

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

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

ACTIVITÉ DE PROGRAMMATION

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

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)

Java Licence Professionnelle CISII,

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

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

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Initiation à la programmation en Python

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Algorithmique et programmation : les bases (VBA) Corrigé

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

Le langage C. Séance n 4

Langage Éric Guérin 5 octobre 2010

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

STAGE IREM 0- Premiers pas en Python

Les arbres binaires de recherche

Cours 1 : Qu est-ce que la programmation?

Examen Médian - 1 heure 30

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

TP, première séquence d exercices.

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

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

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

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

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

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

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

Recherche dans un tableau

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

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

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

Informatique Générale

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

Corrigé des TD 1 à 5

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Simulation d un système de paiement par carte bancaire

1. Structure d'un programme FORTRAN 95

Programmation système I Les entrées/sorties

Rappels d architecture

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

Application 1- VBA : Test de comportements d'investissements

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

Outils pour la pratique

Programmation sous QT

Programmation Objet - Cours II

Programmer en JAVA. par Tama

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

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

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

Chapitre 2 Devine mon nombre!

Le prototype de la fonction main()

Correction TD algorithmique

1 Lecture de fichiers

Solutions du chapitre 4

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

Représentation d un entier en base b

Initiation à l algorithmique

TP 1. Prise en main du langage Python

Poker. A rendre pour le 25 avril

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

as Architecture des Systèmes d Information

Qualité du logiciel: Méthodes de test

Programmation en Java IUT GEII (MC-II1) 1

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

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

Correction TD Algorithmique 5.3 Pile Liste 5.3 Pile

V- Manipulations de nombres en binaire

Notions fondamentales du langage C# Version 1.0

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

Cours d Algorithmique et de Langage C v 3.0

Claude Delannoy. 3 e édition C++

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

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

Programmation en langage C

TD1 Signaux, énergie et puissance, signaux aléatoires

Cours 14 Les fichiers

Transcription:

TD de Langage C Programmation Structurée L3 - EEA Université de Marne La Vallée 2009-2010 Gautard Valérie, Christophe FLOUZAT 18 février 2010 Résumé Ces TD seront effectués sous un environnement Linux. La compilation se fera à l'aide du compilateur GCC. Les codes sources seront édités à l'aide d'un éditeur de texte simple au choix (VI, EMACS, NANO, gedit, kate,...). Chaque section correspond à une séance de TD. Chaque sous section correspond à un exercice. Les exercices marqués d'une * sont facultatifs, il est entendu par là qu'ils pourront être omis par manque de temps. Aucune autre raison ne sera acceptée. A vos claviers... Pour compiler un programme C on utilise la commande suivante : gcc -o fichierexe source.c

1 Saisie, affichage et opérations arithmétiques de base 1.1 Hello world Faire un programme affichant sur le terminal le message suivant : *********** * bonjour * *********** 1.2 Afficher des nombres Ecrire un programme qui affiche sur le terminal : Un entier (forme standard) Un entier sous forme hexadécimal Un flottant Un flottant en notation scientifique (ex : 2500 => 2.5e3) 1.3 Saisie de nombres Ecrire un programme qui lit successivement 2 entiers et renvoie leur somme. Modifier le programme pour 2 flottants, puis pour un entier et un flottant (deux solutions) 1.4 Arithmétique de base Ecrire un programme de conversion degrés Celsius/Fahrenheit. Pour rappel : F =9/5 C + 32 1.5 Saisie multiple* Ecrire un programme de résolution d'équation du premier degré qui prend en entrée une expression du type : a.x+b=c (ex : 2x+3=11) où a, b et c sont des entiers (dans un premier temps)... Dans la suite, pour chaque question il sera demandé de créer une ou plusieurs fonctions par exercice, la fonction main ne contiendra alors que des appels à ces fonctions et les entrées/sorties nécessaires pour tester ces fonctions. 2 Structures conditionnelles 2.1 If then else... Créer pour chaque test possible entre 2 entiers (=,>=,<=,>,<,!= ) une fonction qui affiche le résultat. ex : a=1 b=2 affiche "A n'est pas égal a B" 2.2 Test de parité

Ecrire une fonction qui renvoie sous forme booléenne (0 pour pair, 1 pour impair) la parité d'un entier passé en paramètre. 2.3 Logique booléenne Pour chaque cas, écrire une fonction déterminant si 3 entiers sont tous égaux si au moins deux des trois entiers sont égaux. 2.4 Test alternatifs* Reprendre la question 2.1 en donnant cette fois une version alternative des tests d'égalité et de différence. 2.5 Switch case... Créer une fonction qui affiche les entiers de 0 a 10 en toutes lettres. ex : 0 affiche "zero", 1 affiche "un",... Si l'entier entré n'est pas compris entre 0 et 10, afficher un message d'erreur. * Reprendre la question en retournant un code erreur en cas d'erreur 3 Les boucles 3.1 Compteur Réaliser une fonction qui affiche à l écran les entiers de 0 à 100 compris en utilisant trois types de boucle (while,do while,for). 3.2 Verification de saisie Ecrire un programme qui demande à un utilisateur d'entrer un nombre entre 0 et 10 inclus. Si le nombre entré n'est pas compris entre 0 et 10, demander a l utilisateur une nouvelle saisie jusqu'à ce que le nombre entré soit valide. 3.3 Plus ou moins Réaliser un jeu de plus ou moins... Le jeu de plus ou moins consiste à deviner un nombre tiré aléatoirement. Le joueur propose un nombre et le jeu lui répond si celui-ci est au dessus ou en dessous du nombre à trouver. Si le joueur découvre le nombre exact en moins de dix coups il a gagné, sinon il a perdu. Pour réaliser ce programme, c'est à vous de découper judicieusement les traitements en différentes fonctions. Pour générer un nombre aléatoire, utiliser la bibliothèque "alea.h" (alea.h et alea.c sont à récupérer sur le compte de l'enseignant). Cette bibliothèque fournit deux fonctions : _ void initrand(int max) permet d'initialiser la séquence pseudo-aléatoire. _ int nrand() renvoie un entier aléatoire entre 0 et max. 3.4 Prototype et bibliotheques *

Reprendre la question précédente en prenant soin de déclarer les prototypes de chaque fonction créée. Inspirer vous des sources alea.h et alea.c pour créer une bibliothèque plusoumoins.h qui contiendra toutes vos fonctions. 4 Récursivité 4.1 Factorielle Ecrire une fonction qui renvoie la factorielle d'un entier positif. Pour cela utiliser la propriété récursive de la factorielle : Pour rappel : n! = n (n-1)! 0!=1 *Générez un message d'erreur si le nombre entré est négatif. 5 Les tableaux 5.1 Création de tableau Créer un tableau contenant 10 entiers générés aléatoirement. 5.2 Fonction d'affichage Écrire une fonction qui affiche un tableau d'entiers. 5.3 Fonction de tri Écrire une fonction qui trie les valeurs d'un tableau d'entier. *proposer 3 algorithmes différents pour cette fonction. 6 Les Pointeurs 6.1 Les bases... Écrire un programme simple...(juste le main())...déclarer un pointeur sur un entier P...déclarer deux entiers A et B, leur donner une valeur...faire pointer P sur l'adresse de A...afficher la valeur de A en passant par P...afficher l'adresse de B

6.2 Pointeur et tableau Réécrivez la fonction de tri de tableau d'entier en utilisant la notation par pointeur. 7 Allocation dynamique 7.1 Tableau dynamique Déclarer un tableau d'entier d'une case. Créer une fonction permettant d'ajouter une valeur à un tableau qui prend en paramètre la valeur à ajouter et un pointeur sur le tableau et qui renvoie un pointeur sur le tableau résultant. 8 Structures et énumérations 8.1 Les énumérations Déclarer une énumération permettant de nommer les jours de la semaine en toutes lettres. Créer un type "jdls" pour cette énumération. Tester le type que vous venez de créer. 8.2 Les structures Créer une structure "heure" qui contient trois champs de type entier sur 8bits, "h" pour les heures, "m" pour les minutes et "s" pour les secondes. Créer le type associé. Ecrire une fonction "heure scanheure()" qui renvoie un pointeur sur une structure de type "heure" et permet de saisir au clavier une heure complète. Ecrivez une fonction "void printheure(heure h)" qui permet d'afficher l'heure "h" sous la forme h :m :s. Ecrivez une fonction "*heure addheure(heure *h1,*h2)" qui allouera dynamiquement une nouvelle structure de type "heure" pour y ranger le résultat de l'addition des heures h1 et h2 (dont les pointeurs sont passés en paramètres) et renverra un pointeur sur cette nouvelle structure. 8.3 Un peu plus de structures* Créer une structure "evenement" avec un nom, un jour de la semaine et une heure (utiliser les types créés précédemment). Déclarer le type associé à la structure "evenement". Ecrire enfin les fonctions "void printevent(evenement e)" permettant l'affichage d'un événement, et "*evenement scanevent()" permettant de saisir un événement (l'événement en question sera créé dynamiquement). Créer un tableau dynamique de pointeur vers des éléments de type "evenement" (vide a l'initialisation) ainsi que les fonctions "*evenement addevent(evenement e)","*evenement remevent(char nom[])" pour ajouter et supprimer un événement, et enfin "void printevents(evenement **evtab)" pour afficher tout les événements de notre tableau. Tester...