1 Conversion d'une chaîne de caractères en nombre

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

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

Représentation d un entier en base b

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP


Programme Compte bancaire (code)

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

INFO-F-105 Language de programmation I Séance VI

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)

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

Cours d Algorithmique et de Langage C v 3.0

Rappels Entrées -Sorties

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

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

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

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

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

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

Algorithmique et Programmation, IMA

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

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

Claude Delannoy. 3 e édition C++

Introduction au langage C

Programmation en C/C++

Introduction à l héritage en C++

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

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

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

Licence Sciences et Technologies Examen janvier 2010

Langage Java. Classe de première SI

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

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

IUT ANNECY Département Mesures Physiques Cours d informatique Initiation au langage C

Une introduction à Java

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

INF 321 : mémento de la syntaxe de Java

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Utilitaires méconnus de StrataFrame

Examen Médian - 1 heure 30

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

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

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

Informatique Générale

as Architecture des Systèmes d Information

Notions fondamentales du langage C# Version 1.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.

Initiation à la programmation en Python

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

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

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

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

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

Programmation en Java IUT GEII (MC-II1) 1

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Programmation système I Les entrées/sorties

I. Introduction aux fonctions : les fonctions standards

Les chaînes de caractères

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Langage Éric Guérin 5 octobre 2010

CHAPITRE V. Recherche et tri

Logiciel de Base. I. Représentation des nombres

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

Utilisation d objets : String et ArrayList

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

INITIATION A LA PROGRAMMATION

ALGORITHMIQUE ET PROGRAMMATION En C

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Le langage C. Séance n 4

Programmation en langage C

Introduction au pricing d option en finance

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

Jeux de caracte res et encodage (par Michel Michaud 2014)

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

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

La programmation des PIC en C. Les fonctions, les interruptions.

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

Découverte de Python

COURS et TP DE LANGAGE C++

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

et Programmation Objet

Programmation impérative

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

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

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

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

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

STAGE IREM 0- Premiers pas en Python

SUPPORT DE COURS. Langage C

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Java Licence Professionnelle CISII,

Programmation système de commandes en C

Transcription:

CPP3 Programmation C : Utilitaire de conversion de donnée Système : CodeBlock Durée : 3 heures Travail individuel Compétences : Tester et valider un module logiciel. Réaliser la conception détaillée d un module logiciel. G.COLIN Savoirs : Développement logiciel (Principe de base Algorithme Programmation procédurale) Contexte et démarche L'objectif est de créer des fonctions logicielles de conversion de données, qui seront utiles lors de la réalisation du projet. Ces fonctions logicielles seront placées dans le fichier "utiles.cpp" et la déclaration de ces fonctions dans le fichier "utiles.h". On demande de tester des fonctions données et de valider leur fonctionnement. Une explication sera donnée au préalable par le prof. 1 Conversion d'une chaîne de caractères en nombre 1.1 Ascii hexa vers octet La première fonction à réaliser convertit une chaîne de 2 caractères représentant un octet en notation hexa, en un nombre sur 8 bits. La fonction est la suivante : La fonction ascii_hexa_to_byte reçoit une chaine de 2 caractères représentant un octet en notation hexa Elle retourne un octet correspondant à ce nombre. Algorithme Déclarer variable "a" sur 8 bits Déclarer variable "b" sur 8 bits Mettre dans a le code ascii du 1er caractère - 48 SI a > 9 retirer 7 à a FIN_SI Mettre dans b la valeur de a décalée de 4 bits vers la gauche Mettre dans a le code ascii du 2ème caractère - 48 SI a > 9 retirer 7 à a FIN_SI Ajouter a à b retourner b Programme à placer dans utiles.cpp #include <string> unsigned char ascii_hexa_to_byte(std::string str) unsigned char a,b; a=str[0]-48; b=a*16; a=str[1]-48; b=b+a; return b; Le fichier d'entête utiles.h contient la déclaration de la fonction: unsigned char ascii_hexa_to_byte(std::string str);

Le programme principal de test sera le suivant (à placer dans le fichier main.cpp): #include <iostream> #include <string> #include "utiles.h" using namespace std; int main() string st; int nombre; cout<<"saisir le nombre a convertir sous forme de caracteres"<<endl; cin>>st; nombre=ascii_hexa_to_byte(st); cout << "Resultat en decimal:"<< nombre << endl; cout << "Resultat en hexa:"<< hex << nombre << endl; return 0; On demande de: créer un projet (test_utiles) sous CodeBlock contenant les 3 fichiers (main.cpp; utiles.cpp; utiles.h) tester le programme avec les valeurs suivantes : 12 ; 27; 1C; AE tester le programme avec les valeurs suivantes : 1a; 5; f; 156; AT conclure sur le format que doit avoir la chaîne de caractères à saisir expliquer les résultats obtenus en faisant référence au programme de la fonction ascci_hexa_to_byte et du tableau des codes ascii donné ci-dessous.

1.2 Ascii hexa vers entier On souhaite tester une fonction qui converti une chaîne de caractère représentant un nombre en hexadécimal de 4 chiffres, en un nombre entier correspondant à cette représentation. En entrée la fonction reçoit une chaîne de 4 caractères et retourne un entier. Le programme de cette fonction est le suivant : unsigned int ascii_hexa_to_int16(std::string str) unsigned char a; unsigned int i; a=str[0]-48; i=a*4096; a=str[1]-48; i=i+a*256; a=str[2]-48; i=i+a*16; a=str[3]-48; i=i+a; return i; On demande de: préciser le format de la chaîne de caractères à saisir 1.3 Ascii décimal vers octet On souhaite tester une fonction qui converti une chaîne de caractère représentant un nombre en décimal de 3 chiffres au maximum, en un octet correspondant à cette représentation. En entrée la fonction reçoit une chaîne de caractères et retourne un octet. Le programme de cette fonction est le suivant : unsigned char ascii_dec_to_byte(std::string st) unsigned char a,b,c; if (st.size()==0) return 0; else if (st.size()==1) a=st[0]-0x30;return a; else if (st.size()==2) a=st[0]-0x30;b=st[1]-0x30;a=10*a+b;return a; else if (st.size()==3) a=st[0]-0x30;b=st[1]-0x30;c=st[2]-0x30;a=100*a+b*10+c;return a; else return 0; préciser le format et les limites de la chaîne de caractères à saisir

1.4 Ascii décimal vers entier On demande de créer une fonction : unsigned int ascii_dec_to_int(std::string st) qui converti une chaîne de caractère représentant un nombre en décimal de 4 chiffres au maximum (de 0 à 9999) en un entier correspondant à cette représentation. 2 Vérification du format d'une chaîne de caractères 2.1 Chaîne d'un nombre hexa de 2 caractères La fonction ci-dessous, teste le format d'une chaîne de 2 caractères représentant un nombre en notation hexadécimale. En entrée la fonction reçoit une chaîne de 2 caractères, elle renvoie une chaîne de 2 caractères avec un format correct (avec des majuscules) ou une chaîne vide si le format est incorrect. std::string format_octet_hexa(std::string str) int i,j; char caract_ok[17]="0123456789abcdef"; for (i=0;i<2;i++) switch(str[i]) case 'a':str[i]='a';break; case 'b':str[i]='b';break; case 'c':str[i]='c';break; case 'd':str[i]='d';break; case 'e':str[i]='e';break; case 'f':str[i]='f';break; j=0; for (i=0;i<16;i++) if (str[0]==caract_ok[i]) j++; for (i=0;i<16;i++) if (str[1]==caract_ok[i]) j++; if (j!=2) str=""; return str; préciser le format des caractères acceptés. 2.2 Chaîne d'un nombre hexa de 4 caractères On demande de créer une fonction : std::string format_int16_hexa(std::string str) qui teste le format d'une chaîne de caractère représentant un nombre hexadécimal de 4 chiffres..

3 Conversion d'un nombre en une chaîne de caractères La fonction ci-dessous convertit un nombre sur 8 bits en 2 caractères représentant ce nombre en hexadécimal. En entrée la fonction reçoit un octet (ici a). En sortie la fonction retourne les 2 caractères ascii. Remarque importante : Etant donné que la fonction renvoie 2 données, on passe par des pointeurs (*asc1 et *asc2) Dans le programme principal, pour tester cette fonction : On déclare 1 caractère pour stocker le nombre à convertir : unsigned char a; On déclare 2 caractères pour stocker le résultat de la conversion : char b,c; On place la donnée saisie au clavier dans a On transmet à la fonction les adresses des variables b et c: byte_to_ascii_hexa(a, &b, &c) On affiche le contenu des variables b et c, résultat de la conversion. void byte_to_ascii_hexa(unsigned char a, char* asc1, char* asc2) *asc1=0; *asc2=0; while (a>15) (*asc1)++; a=a-16; *asc2=a; if (*asc2<10) *asc2=*asc2+48; else *asc2=*asc2+55; if (*asc1<10) *asc1=*asc1+48; else *asc1=*asc1+55; préciser les limites du nombre accepté. justifier les 2 dernières lignes du programme (if ) de la fonction.