Langages Impératifs 2. Projet 25/01/2010. La Machine à café. Jean-Jacques Bourdin



Documents pareils
Introduction au langage C

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

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

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Rappels Entrées -Sorties

PROJET ALGORITHMIQUE ET PROGRAMMATION II

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

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

Applet pour visualiser les variables «automate» notifiées

Quelques éléments de compilation en C et makefiles

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

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

as Architecture des Systèmes d Information

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

TP : Gestion d une image au format PGM

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

IRL : Simulation distribuée pour les systèmes embarqués

Programmation Orientée Objet Java

ereader compact 9 et reproducteur multimédia portable

Les structures de données. Rajae El Ouazzani

Programmer en JAVA. par Tama

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

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

Cours d Algorithmique et de Langage C v 3.0

Hiver 2013 IMN 259. Introduction à l analyse d images. Par Pierre-Marc Jodoin

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

SUPPORT DE COURS. Langage C

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

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

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

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

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

OS Réseaux et Programmation Système - C5

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

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

Exercices sur SQL server 2000

Systeme d'exploitation

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Introduction à l héritage en C++

Chapitre 10. Les interfaces Comparable et Comparator 1

Version beta. Station Météo 12/11/2012. Réalisation d un Station Météo avec Webserver composée de capteurs Grove et d un module Wifi Flyport.

TP JAVASCRIPT OMI4 TP5 SRC

Configuration de TCPIPconfig.h

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

Les structures. Chapitre 3

Conventions d écriture et outils de mise au point

Structure du format BMP, sa lecture, sa construction et son écriture

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

Programmation en C/C++

Programmation en langage C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

TP SIN Traitement d image

Programmation stochastique

Introduction à CORBA

Gestion de la mémoire

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

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

Le langage C. Introduction, guide de reference

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

Introduction aux bases de données: application en biologie

INITIATION A LA PROGRAMMATION

Dans l Unité 3, nous avons parlé de la

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

Configuration du moteur de recherche de SharePoint Foundation 2013

Programmation en Java IUT GEII (MC-II1) 1

TD : Codage des images

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

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

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

Traitement numérique de l'image. Raphaël Isdant


Formats d images. 1 Introduction

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

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

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

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Utilisation de la Kinect

Informatique Générale

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

Le prototype de la fonction main()

I. Introduction aux fonctions : les fonctions standards

Une introduction à Java

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

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

COMPARAISONDESLANGAGESC, C++, JAVA ET

Cours de numérisation sur Epson Perfection

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

Media queries : gérer différentes zones de visualisation

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

Notions fondamentales du langage C# Version 1.0

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Composants Logiciels. Le modèle de composant de CORBA. Plan

Déployer une application cliente avec le Framework.NET 3.5 Client Profile

Transcription:

Langages Impératifs 2 Projet 25/01/2010 La Machine à café Jean-Jacques Bourdin

#include <stdio.h> #include <stdlib.h> #define OSX #ifndef OSX #include <GL/gl.h> #else #include <GLUT/glut.h> #endif Table 1 Les inclusions Tout informaticien utilise une machine à café. Ça a l air d un truisme mais sachant qu un définition de l informaticien, dûe à Trucmuche [Tru89] est : Un informaticien est une machine qui transforme le café en lignes de code. nous ne pourrons que le remarquer. Notre sujet est donc d étudier non pas les machines à café, ce sujet a été souvent étudié et on trouvera de bonnes synthèses dans la littérature [Clo08, MW10], mais LA machine à café de l informaticien. Introduction La naissance de l Informatique ne manque pas d être un moment particulier. Cette science nouvelle, même si sa base est une théorie mathématique du neuvième siècl e[imak25], n a pu se développer sans l apport important de deux machines : l ordinateur, la machine à café. Nous parlerons donc de la seconde sachant que la première, est, de près ou de loin, au centre des péoccupations de tant d entre nous. 1 Quelques définitions Nous allons maintenant, pour travailler sur des bases sérieuses, définir quelques données et leur type. 1.1 Types utilisés Dans la suite de ce travail nous avons besoin d utiliser des images. Nous avons donc défini des types correspondant. Vous trouverez dans le tableau 2 la définition de notre structure. Bien sûr ceci n autorise pas d ommission du type d images utilisées, ici, le type bmp. Nous trouvons donc au début du fichier bmp.c tout ce qui concerne cela, comme c est visible dans la table 4. 1.2 Quels fichiers? Il faut utiliser des fichiers, bien sûr, en particulier ceux qui sont issus de la librairie standard. Dans notre fichier de tête, nous avons rajouté des inclusions, comme on le voit dans la table 1.

struct Image { unsigned long sizex; unsigned long sizey; GLubyte *data; ; typedef struct Image Image; typedef unsigned short utab [3][3][3]; Table 2 La structure image int ImageLoad(char *filename, Image *image); int ImageSave(char *filename, Image *image); int ImageSaveJPG(char *filename, Image *image); void floattoint3(float, float, float, int *, int *, int *); void inttofloat3(int, int, int, float *, float *, float*); void rgbtohls(float, float, float, float *, float *, float *); void hlstorgb(float, float, float, float *, float *, float *); void modifclr(glubyte *, GLubyte *, int); int gris (Image *), lumineux (Image *), lisse (Image *); 2 Café Table 3 Les prototypes Nous allons passer à la partie la plus difficile, comment obtenir un petit noir à partir d une image déjà fournie. Pour cela, nous pouvons nous appuyer sur l exemple gris donné en cours5. 2.1 Premier essai La fonction gris 5 peut facilement être modifiée pour obtenir du noir. Il suffit pour cela de changer la valeur et d arriver à mettre du noir sur tout l image. C est ce que nous réussissons avec la fonction noir1 (voir la table 6). 2.2 Deuxième essai Nous avons donc tout de suite tenté d améliorer cette solution, pourqu on puisse voir un vrai petit noir. C est ce que nous avons fait avec la fonction noir2 qui est beaucoup plus convaincante (on la trouve dans la table 7). Nous laissons au lecteur le soin de la tester sur machine, ce qui doit être facile puisque les sources sont là. 3 Conclusion Ce travail a été enrichissant. Dommage que notre image produite ressemble si peu à un café. Nous n avons pas su transformer notre ordinateur en machine à café et c est bien l aveu d un

int ImageLoad(char *filename, Image *image) { FILE *file; unsigned long size; unsigned long i; unsigned short int planes; unsigned short int bpp; GLubyte temp; struct { unsigned short int type; /* Magic identifier */ unsigned int size; /* File size in bytes */ unsigned short int reserved1, reserved2; unsigned int offset; /* Offset to image data, bytes */ header; struct { unsigned int size; /* Header size in bytes */ int width,height; /* Width and height of image */ unsigned short int planes; /* Number of colour planes */ unsigned short int bits; /* Bits per pixel */ unsigned int compression; /* Compression type */ unsigned int imagesize; /* Image size in bytes */ int xresolution,yresolution; /* Pixels per meter */ unsigned int ncolours; /* Number of colours */ unsigned int importantcolours; /* Important colours */ infoheader; Table 4 Les types de bmp int gris(image * i) { int j, size; GLubyte * im; size = 3 * i->sizey * i->sizex; im = i->data; for (j = 0; j < size; j ++) { *im++ = (GLubyte) (60); Table 5 la fonction gris

int noir1 (Image * i) { int j, size; GLubyte * im; size = 3 * i->sizey * i->sizex; im = i->data; for (j = 0; j < size; j ++) { Table 6 la première fonction noir int noir1 (Image * i) { int x, y, startx, starty, starti, topx, topy; GLubyte * im; startx = i->sizex / 3; starty = i->sizey / 3; topx = startx + startx; topy = starty + starty; for (y = starty; y < topy; y ++) { im = i->data + 3 * y * i->sizex; for (x = startx; x < topx; x++) { Table 7 la seconde fonction noir

échec que nous devons faire maintenant. Toutefois ce travail n a pas été vain et des pistes ont été défrichées qui nous permettront, dans un proche avenir de réussir ce que, jusqu à présent, nous avons échoué à faire. Références [Clo08] Georges Clowney. Cafés et Cafetières. Ouatte el Ze, 2008. [imak25] Abu Abdullah Muhammad ibn Musa al Khwarizmi. On the Calculation with Hindu Numerals. Bagdad éditions, 825. [MW10] [Tru89] J. Malco-Which. A coffea in paradise. Master s thesis, University of Coffeaville, january 2010. P. Trucmuche. De l informatique et des informaticiens. International Paper of Computer Sience, 1 :47,51, 1989.