GEF 243B Programmation Informatique Appliquée

Slides:



Advertisements
Présentations similaires
GEF 243B Programmation informatique appliquée Listes chaînées I – Tableaux de structures §15.1 – 15.2.
Advertisements

GEF 243B Programmation informatique appliquée
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
GEF 243B Programmation informatique appliquée
Premier programme en C :
Portée des variables VBA & Excel
Les Prepositions.
GEF 243B Programmation informatique appliquée Boucles §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Structures §12.3.
GEF 243B Programmation informatique appliquée Expressions et opérateurs §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Tableaux et pointeurs §10.1.
GEF 243B Programmation informatique appliquée Listes chaînées II §15.1 – 15.2.
GEF 243B Programmation informatique appliquée Pointeurs et adresses §9.1.
GEF 243B Programmation informatique appliquée Décisions de design avec structures de données §15.1 – 15.2.
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Types, variables et constantes.
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Modules et masquage dinformation.
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Tableaux et pointeurs §10.1.
C.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Les fonctions.
Langage C Révision.
Récursivité.
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
Programme de baccalauréat en informatique Algorithmique et programmation IFT-1001 Thierry EUDE Hatem Mahbouli Laboratoire #12 Département dinformatique.
TRAITEMENT DE STRUCTURES
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
IFT-2000: Structures de données
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
Notre calendrier français MARS 2014
IFT 6800 Atelier en Technologies d’information
COURS DE PROGRAMMATION ORIENTEE OBJET :
C'est pour bientôt.....
Veuillez trouver ci-joint
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Structures des données
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Le langage C Rappel Pointeurs & Allocation de mémoire.
CALENDRIER-PLAYBOY 2020.
Centre d’échange d’informations sur la Convention sur la Diversité Biologique Bienvenue dans le cours sur l’ajout d’une page web sur un site web développé.
LES PILES ET FILES.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
La notion de type revisitée en POO
et quelques rappels sur certains éléments du langage C
8PRO107 Éléments de programmation Les chaînes de caractères.
Labo 4 : Les structures et les entrées et sorties
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Tutorat en bio-informatique
Chaînes de caractères en langage c, c'est en fait un tableau
Mettre en formeExaminerManipuler Les fonctions printf() et sprintf Le traitement de chaîne de caractère La fonction printf() formate le contenu d'une chaîne.
1 Les caractères En informatique, les caractères sont très importants puisqu’ils sont utilisés pour la communication personne-machine. Puisque les ordinateurs.
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Transcription de la présentation:

GEF 243B Programmation Informatique Appliquée Strings §11.1 - 11.3 Note that during this lecture we only introduce the concepts that are needed to understand the strings in C. We do not cover the entire taxonomy of strings. We also delay the presentation of dynamic allocation of variable string lengths until the lecture of arrays of pointers and ragged arrays.

Revue Que veut-on dire par déréférencer un pointeur? Étant donné ce qui suit: int a = 8; int* p; char b = 'v'; char* r; p=&a; Peut-on faire ceci? r = p; *p=(int)b; Qu’est-ce qu’un type dérivé? Decimal, a way of printing an integer or long or… Character, we will see a bit more of that today Pointer, ah pointers, a way of printing an hexadecimal value of your pointer. You could also print an address using %d to get it as a natural number. Float 5 positions precision of two after the decimal XXX.YY (note that the . is included in the number of positions. A derived type builds on another type and changes its range of values and the operations done on the original type JGA Beaulieu

Synopsis Les Strings en générale et comment ils sont traités en C Les Strings de longueur fixe Les Strings de longueur variable avec Tableaux Les Strings de longueur variable avec Pointeurs Le caractère délimitant Quelques des fonctions les plus utiles en C pour les strings Formatage de sortie JGA Beaulieu

"Généralités" Jusqu’à maintenant nous avons traité les strings de façon superficiel. Nous comprenons qu’un string représente une “chose” dans l’environnement que l’on nomme Nous nommons les choses pour faire l’abstraction de ce qu’elles sont La pluparts des langages fournissent un type spécifique pour les strings tel que Pascal ou Java En C on utilise deux types dérivés pour entreposer les strings Tableaux (Arrays) Pointeurs Remind them what a derived type is. JGA Beaulieu

"Généralités\0" Un string est une unité logique de stockage dérivée du type de stockage physique char Ce qui est intéressant avec les strings c’est qu’ils peuvent et doivent varier en longueur Surnom… pas tous de la même longueur Marque de voiture Couleur… Comment sélectionnons-nous le bon type dérivé et la structure de données approprié? Here point out that all our last names do not have the same length… JGA Beaulieu

Taxonomie des Strings Dans une vue globale, les chaînes de caractères (strings) viennent en deux saveurs: Longueur fixe ou variable JGA Beaulieu

"Généralités\0" Longueur fixe – Tableau de caractères qui stocke toujours le même nombre de caractères char numDeCollege[5]; //code de 5 alphanum Pointeur à un littéral de longueur fixe char* province1 = "ON"; //Abrévi de 3 char char province2[] = "AB"; //3 char array Note “ON” is actually 3 characters ON\0 JGA Beaulieu

"Généralités\0" Longueur variable – Tableau de caractères avec délimiteur char surnom[30] = '\0'; //string vide … surnom[0] = 'B'; surnom[1] = 'e'; surnom[2] = 'a'; //…le reste de mon nom surnom[8] = 'u'; surnom[9] = '\0'; //J’ai fini Here we fill the array one letter at a time to show them what they must do, the functions are coming. JGA Beaulieu

"Généralités\0" Longueur variable – Pointeur à un littéral de longueur maximal char* nom = "Superfragelisticespialladotious\0"; //Ceci est dangereux pcq vous devez trouver //le nom le plus long et planifier l’utilisation // Le \0 n’est pas requis et est ajouté // automatiquement par le compilateur pour les //double guillemets C’est presque identique à char nom[] = "Superfragelisticespialladotious"; Point out that either they are using arrays or pointers, they must reserve the space that will be required for their longest string that they will have to store in the variable. That is because without the use of dynamic memory we must plan for the worst case. NOTE the \0 is not required and will result in 2 \0 at the end of name. JGA Beaulieu

"Généralités\0" Dans les deux strings de longueur variable que nous avons utilisé, on a un \0 \0 est utilisé en C comme arrêt logique pour dire à nos fonctions que nous avons fini. Nous aurions pu utiliser n’importe quel caractère dans l’alphabet. ASCII fournit 128 caractères Nous aurions pu utiliser un espace ou la lettre a Mais le caractère n’aurait pas pu être utilisé pour autre but que de signifier la fin logique du string Tell them again that strings are built on a derived type from the base type char. We must have some way of saying that our abstraction’s name is finished. JGA Beaulieu

Des choses spéciales pour les strings JGA Beaulieu

Une chose logique à faire… Donc pourquoi dire que un string est un type dérivé logique : Fait partie du Tableau mais pas du string Stockage logique un string qui finit avec \0 Stockage physique un tableau de 11 char JGA Beaulieu

Initialisation des strings Les strings peuvent être initialisés de la même façon que les autres tableaux avec ou sans dimension ou avec un pointeur char str[9] = "Good Day"; char str[9] = {'G','o','o','d',' ','D', 'a', 'y'}; char mois[]= "janvier"; char* pStr = "Good Day"; JGA Beaulieu

Des fonctions utiles pour les strings de stdio.h printf gets fgets puts fputs de string.h strcat strncat strlen itoa JGA Beaulieu

Formatage de Sorties On peut utiliser scanf() pour lire les strings du clavier et printf() pour afficher à l’écran float x = 233.12; printf("La taxe est $%8.2f dollars cette année.\n", x); La taxe est $233.12 dollars cette année. int y = 2010; printf((“La taxe est $%8.2f dollars en %d.\n", x, y); La taxe est $233.12 en 2010. JGA Beaulieu

Formatage de Sorties Voici les spécifications de format pour scanf() et printf(). JGA Beaulieu

Formatage de Sorties Voici les flags et code de conversion pour printf(). JGA Beaulieu

printf() un caractère à la fois JGA Beaulieu

printf() un caractère à la fois JGA Beaulieu

Entrée de string Les fonctions gets() et fgets() prennent une ligne terminé par \n et la convertissent en string terminé par \0 JGA Beaulieu

Sortie de string Les fonctions puts() et fputs() prennent une ligne de la mémoire et l’écrivent à l’écran ou au fichier JGA Beaulieu

strcpy() Utilisez strcpy() pour copier un string vers un autre Attention à la longueur des strings In the second example, s3 is damaged because s1 was not long enough to hold s2! JGA Beaulieu

strcmp() Utilisez strcmp() pour comparer deux strings Attention à la longueur des strings retourne 0 si s1==s2 retourne -1 si s1< s2 retourne 1 si s1>s2 In the second example, s3 is damaged because s1 was not long enough to hold s2! JGA Beaulieu

strcat() Utilisez strcat() pour concaténer deux strings On peut spécifier combien de char à concaténer avec strncat() In the second example, s3 is damaged because s1 was not long enough to hold s2! JGA Beaulieu

La longueur d’un string strlen() retourne le nombre de caractères dans un string avant le premier \0 sizeof() va retourner le nombre de caractères alloués pour le tableau (array) NOTE: sizeof() et strlen() ne retourne PAS la même chose!! JGA Beaulieu

La longueur d’un string #include <stdio.h> #include <stdlib.h> #include <strings.h> int main(int argc, char *argv[]) { char test[25] = "This is a test"; printf(“%s\n”,test); printf("strlen(): %d sizeof %d\n",strlen(test),sizeof(test)); getch(); return 0; } JGA Beaulieu

itoa(int value, char *outString, int radix) printf, scanf, et sprintf demande beaucoup de mémoire! Pour les systèmes imbriqués comme le robot les petites fonctions avec moins de fonctionnalités sont utilisées itoa(int value, char *outString, int radix) Convertie les valeurs integer en string et met le résultat dans outString La valeur peut être converti en binaire, décimal, ou hexadécimal comme indiqué par le radix JGA Beaulieu

itoa(int value, char *outString, int radix) outString est un pointeur dans la définition de la fonction En appelant itoa(), outString doit pointer à de la mémoire allouée { char* convertedInt; itoa(17,convertedInt,10); } /* Erreur pas de mémoire allouée */ { char* convertedInt[10]; itoa(17,convertedInt,10); } //OK JGA Beaulieu

Danger Will Robinson! Aucune des fonctions vérifie si vous avez assez de mémoire allouée! Vous pouvez causer un Écrasement du noyau sur la brique si vous écrivez sur un string qui est initialisée ou trop court! En Dev-C++ vous allez avoir un erreur d’exécution si vous allez en dehors d’un tableau de char! En Dev-C++ c’est beaucoup plus facile de déboguer un programme avec des pointeurs!!! JGA Beaulieu

Il y a bien plus de fonctions pour les string Forouzan Appendice F Ou le site gnu http://www.gnu.org/software/libc/ Faites un recherche sur votre ordi ou google pour les fonctions de string \0 est votre ami et il fonctionne. Vérifiez les fonctions de string dur le site web du cours et lisez les descriptions avant la prochaine période de labo. JGA Beaulieu

Quiz Time Quelles sont les deux types de strings Pourquoi dit-on que les strings sont un type dérivé logique? Comment est-ce que le stockage logique est implémenté? Donnez le code pour convertir la valeur integer 127 en string décimal. Fixed length and variable length It is derived from a basic type by using a pointer or an array and it uses a portion of the physical storage to represent a logical value With the use of the null character as a delimiter. { char convertedInt[10]; itoa(127,convertedInt,10); } JGA Beaulieu