Tableaux (introduction) et types de base



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

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


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

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

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

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

Algorithmique et Programmation, IMA

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours d Algorithmique et de Langage C v 3.0

Utilisation d objets : String et ArrayList

TP 1. Prise en main du langage Python

Logiciel de Base. I. Représentation des nombres

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

Informatique Générale

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Notions fondamentales du langage C# Version 1.0

Introduction au langage C

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

Rappels Entrées -Sorties

SUPPORT DE COURS. Langage C

Programmer en JAVA. par Tama

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)

STAGE IREM 0- Premiers pas en Python

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Claude Delannoy. 3 e édition C++

Algorithmique et programmation : les bases (VBA) Corrigé

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

ALGORITHMIQUE ET PROGRAMMATION En C

INF 321 : mémento de la syntaxe de Java

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Recherche dans un tableau

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

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

Java Licence Professionnelle CISII,

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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

Présentation du langage et premières fonctions

Algorithme. Table des matières

Représentation des Nombres

Programmation en langage C

Architecture de l ordinateur

Codage d information. Codage d information : -Définition-

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

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

Représentation d un entier en base b

Solutions du chapitre 4

as Architecture des Systèmes d Information

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

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

Une introduction à Java

2 Comment fonctionne un ordinateur, dans les grandes lignes

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

Le langage C. Introduction, guide de reference

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Conversion d un entier. Méthode par soustraction

IFT2880 Organisation des ordinateurs et systèmes

Initiation à la programmation en Python

Introduction à MATLAB R

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Définitions. Numéro à préciser. (Durée : )

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

V- Manipulations de nombres en binaire

TP : Gestion d une image au format PGM

Programmation en Java IUT GEII (MC-II1) 1

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

Initiation à la Programmation en Logique avec SISCtus Prolog

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

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

Chapitre 10 Arithmétique réelle

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Découverte de Python

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

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

INITIATION A LA PROGRAMMATION

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

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

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

Les structures. Chapitre 3

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

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

ACTIVITÉ DE PROGRAMMATION

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

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

PROGRAMMER EN MQL4. Apprenez à automatiser vos stratégies sur MetaTrader 4

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

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

Chapitre 2 Devine mon nombre!

1 Introduction au codage

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

Cours 1 : Qu est-ce que la programmation?

1 Recherche en table par balayage

Les structures de données. Rajae El Ouazzani

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

Architecture matérielle des systèmes informatiques

Cours Informatique Master STEP

Initiation à l algorithmique

Transcription:

Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux....................................... 8 D. Utilisation des tableaux........................................ 17 E. Retour sur les fonctions récursives et les tests.................... 21 F. Types de base et représentation des données..................... 22 Les entiers : types int, long Les réels : types float, double Les caractères : type char Les chaînes de caractères : type string Les booléens : type bool

Résumé des épisodes précédents... Pour le moment nous avons vu les instructions suivantes : Lecture : cin >> variable ; Écriture : cout << expression ; Affectation : variable = expression Instruction conditionnelle : if Instructions itératives : while, do... while, for Fonctions

Résumé des épisodes précédents... Pour le moment nous avons vu les instructions suivantes : Lecture : cin >> variable ; Écriture : cout << expression ; Affectation : variable = expression Instruction conditionnelle : if Instructions itératives : while, do... while, for Fonctions Pourquoi aller plus loin?

Résumé des épisodes précédents... Pour le moment nous avons vu les instructions suivantes : Lecture : cin >> variable ; Écriture : cout << expression ; Affectation : variable = expression Instruction conditionnelle : if Instructions itératives : while, do... while, for Fonctions Pourquoi aller plus loin? Passage à l échelle!

Résumé des épisodes précédents... Pour le moment nous avons vu les instructions suivantes : Lecture : cin >> variable ; Écriture : cout << expression ; Affectation : variable = expression Instruction conditionnelle : if Instructions itératives : while, do... while, for Fonctions Pourquoi aller plus loin? Passage à l échelle! Manipuler de grosses quantités de données

A. Motivation Exemple (Fil conducteur) Implantation d un annuaire

B. Les tableaux À retenir Un tableau est une valeur composite formée de plusieurs valeurs du même type Une valeur (ou élément) d un tableau t est désignée par son index i dans le tableau ; on la note t[i]. En C++ : cet index est un entier entre 0 et l 1, où l est le nombre d éléments du tableau

B. Les tableaux À retenir Un tableau est une valeur composite formée de plusieurs valeurs du même type Une valeur (ou élément) d un tableau t est désignée par son index i dans le tableau ; on la note t[i]. En C++ : cet index est un entier entre 0 et l 1, où l est le nombre d éléments du tableau Exemple Voici un tableaux d entiers : 1 4 1 5 9 2 6 5 3 5 Avec cet exemple, t[0] vaut 1, t[1] vaut 4, t[2] vaut 1,... Noter que l ordre et les répétitions sont importantes!

Les tableaux en C++ Exemple vector<int> t; t = vector<int>(10); t[0] = 1; t[1] = 4; t[2] = 1; t[3] = 5; t[4] = 9; t[5] = 2; t[6] = 6; t[7] = 5; t[8] = 3; t[9] = 5; cout << t[5] + t[9] << endl;

C. Construction des tableaux Déclaration d un tableau d entiers vector<int> t;

C. Construction des tableaux Déclaration d un tableau d entiers vector<int> t; Pour un tableau de nombres réels, on utiliserait vector<double>, etc.

C. Construction des tableaux Déclaration d un tableau d entiers vector<int> t; Pour un tableau de nombres réels, on utiliserait vector<double>, etc. vector est un template

C. Construction des tableaux Déclaration d un tableau d entiers vector<int> t; Pour un tableau de nombres réels, on utiliserait vector<double>, etc. vector est un template Allocation d un tableau de 10 entiers t = vector<int>(10);

C. Construction des tableaux Déclaration d un tableau d entiers vector<int> t; Pour un tableau de nombres réels, on utiliserait vector<double>, etc. vector est un template Allocation d un tableau de 10 entiers t = vector<int>(10); Initialisation du tableau t[0] = 1; t[1] = 4;

Les trois étapes de la construction d un tableau À retenir Une variable de type tableau se construit en trois étapes :

Les trois étapes de la construction d un tableau À retenir Une variable de type tableau se construit en trois étapes : 1. Déclaration 2. Allocation Sans elle : faute de segmentation (au mieux!) 3. Initialisation Sans elle : même problème qu avec les variables usuelles

Les trois étapes de la construction d un tableau À retenir Une variable de type tableau se construit en trois étapes : 1. Déclaration 2. Allocation Sans elle : faute de segmentation (au mieux!) 3. Initialisation Sans elle : même problème qu avec les variables usuelles Raccourci Déclaration, allocation et initialisation en un coup : vector<int> t = { 1, 4, 1, 5, 9, 2, 6, 5, 3, 5 };

Les trois étapes de la construction d un tableau À retenir Une variable de type tableau se construit en trois étapes : 1. Déclaration 2. Allocation Sans elle : faute de segmentation (au mieux!) 3. Initialisation Sans elle : même problème qu avec les variables usuelles Raccourci Déclaration, allocation et initialisation en un coup : vector<int> t = { 1, 4, 1, 5, 9, 2, 6, 5, 3, 5 }; Introduit par la norme C++ de 2011!

D. Utilisation des tableaux Syntaxe t[i] s utilise comme une variable usuelle : // Exemple d accès en lecture x = t[2] + 3*t[5]; y = sin(t[3]*3.14); // Exemple d accès en écriture t[4] = 2 + 3*x; cin >> t[5];

D. Utilisation des tableaux Syntaxe t[i] s utilise comme une variable usuelle : // Exemple d accès en lecture x = t[2] + 3*t[5]; y = sin(t[3]*3.14); // Exemple d accès en écriture t[4] = 2 + 3*x; cin >> t[5]; Attention! En C++ les indices ne sont pas vérifiés! Le comportement de t[i] n est pas spécifié en cas de débordement Source no 1 des trous de sécurité!!!

D. Utilisation des tableaux Syntaxe t[i] s utilise comme une variable usuelle : // Exemple d accès en lecture x = t[2] + 3*t[5]; y = sin(t[3]*3.14); // Exemple d accès en écriture t[4] = 2 + 3*x; cin >> t[5]; Attention! En C++ les indices ne sont pas vérifiés! Le comportement de t[i] n est pas spécifié en cas de débordement Source no 1 des trous de sécurité!!! Accès avec vérifications : t.at(i) au lieu de t[i]

Quelques autres opérations sur les tableaux t.size(); // Taille du tableau t.push_back(3); // Ajout d un élément à la fin Fonctions et tableaux void affiche(vector<int> tableau) { for ( int i=0; i < tableau.size(); i++ ) { cout << tableau[i] << " "; } cout << endl; } int main() { vector<int> t = { 1, 2, 3, 4 }; affiche(t); }

E. Retour sur les fonctions récursives et les tests Exécuter pas-à-pas l exécution du programme suivant pour n = 4 : int factorielle(int n) { if (n == 0) { return 1; } else { return n * factorielle(n-1); } } int main() { int n; cin >> n; cout << n << "! = " << factorielle(n) << endl; return 0; }

F. Types de base et représentation des données

F. Types de base et représentation des données Questions Quelle information peut-on représenter sur 1 bit?

F. Types de base et représentation des données Questions Quelle information peut-on représenter sur 1 bit? Sur deux bits?

F. Types de base et représentation des données Questions Quelle information peut-on représenter sur 1 bit? Sur deux bits? Sur quatre bits?

F. Types de base et représentation des données Questions Quelle information peut-on représenter sur 1 bit? Sur deux bits? Sur quatre bits? Sur huit bits?

F. Types de base et représentation des données Questions Quelle information peut-on représenter sur 1 bit? Sur deux bits? Sur quatre bits? Sur huit bits? À retenir Le type d une variable décrit la structure de donnée : Comment l information est représentée par une suite de bits

F. 1. Les entiers : types int, long Entiers machine Représentés sur un mot machine

F. 1. Les entiers : types int, long Entiers machine Représentés sur un mot machine Sur une machine à n bits on peut représenter 2 n entiers, soit les entiers compris entre 2 n 1 et 2 n 1 1 Les bornes sont données par -INT_MAX-1 et INT_MAX Voir Exemples/int.cpp

F. 1. Les entiers : types int, long Entiers machine Représentés sur un mot machine Sur une machine à n bits on peut représenter 2 n entiers, soit les entiers compris entre 2 n 1 et 2 n 1 1 Les bornes sont données par -INT_MAX-1 et INT_MAX Voir Exemples/int.cpp Attention! Différence entier machine / entier mathématique!

F. 1. Les entiers : types int, long Entiers machine Représentés sur un mot machine Sur une machine à n bits on peut représenter 2 n entiers, soit les entiers compris entre 2 n 1 et 2 n 1 1 Les bornes sont données par -INT_MAX-1 et INT_MAX Voir Exemples/int.cpp Attention! Différence entier machine / entier mathématique! Il est aussi possible de calculer avec des «vrais» entiers!

Quelques variantes Entiers longs : long ; voir Exemples/long.cpp Entiers courts : short ; voir Exemples/long.cpp Entiers non signés : unsigned int, unsigned long,... Remarque Le nombre de bits utilisés (et donc les bornes) dépendent du compilateur, du système d exploitation, du processeur,...

Les opérations sur les entiers L opposé (opération unaire, notée -) L addition (opération binaire, notée +) La soustraction (opération binaire, notée -) La multiplication (opération binaire, notée *) La division entière (opération binaire, notée /) Le reste de la division entière (opération binaire, notée %)

Les opérations sur les entiers L opposé (opération unaire, notée -) L addition (opération binaire, notée +) La soustraction (opération binaire, notée -) La multiplication (opération binaire, notée *) La division entière (opération binaire, notée /) Le reste de la division entière (opération binaire, notée %) Attention! La multiplication n est pas implicite, le symbole * doit toujours être indiqué explicitement entre les deux opérandes

Les opérations sur les entiers L opposé (opération unaire, notée -) L addition (opération binaire, notée +) La soustraction (opération binaire, notée -) La multiplication (opération binaire, notée *) La division entière (opération binaire, notée /) Le reste de la division entière (opération binaire, notée %) Attention! La multiplication n est pas implicite, le symbole * doit toujours être indiqué explicitement entre les deux opérandes Opérations en place Incrémentation (opérateur ++) : n++ raccourci pour n = n+1

Les opérations sur les entiers L opposé (opération unaire, notée -) L addition (opération binaire, notée +) La soustraction (opération binaire, notée -) La multiplication (opération binaire, notée *) La division entière (opération binaire, notée /) Le reste de la division entière (opération binaire, notée %) Attention! La multiplication n est pas implicite, le symbole * doit toujours être indiqué explicitement entre les deux opérandes Opérations en place Incrémentation (opérateur ++) : n++ raccourci pour n = n+1 Décrémentation (opérateur --) n-- raccourci pour n = n-1

Les opérations sur les entiers (2) Exemples opération résultat 17 + 5 22 17-5 12 17 * 5 85 17 / 5 3 17 % 5 2

F. 2. Les réels : types float, double Motivation Représenter des nombres réels?

F. 2. Les réels : types float, double Motivation Représenter des nombres réels? Nombres approchés (chiffres significatifs) Grande variations d ordres de grandeur

F. 2. Les réels : types float, double Motivation Représenter des nombres réels? Nombres approchés (chiffres significatifs) Grande variations d ordres de grandeur Nombres à virgule flottante Représentation par mantisse et exposant : 3.423420e+05

F. 2. Les réels : types float, double Motivation Représenter des nombres réels? Nombres approchés (chiffres significatifs) Grande variations d ordres de grandeur Nombres à virgule flottante Représentation par mantisse et exposant : 3.423420e+05 Voir : Exemples/float.cpp et Exemples/double.cpp.

F. 2. Les réels : types float, double Motivation Représenter des nombres réels? Nombres approchés (chiffres significatifs) Grande variations d ordres de grandeur Nombres à virgule flottante Représentation par mantisse et exposant : 3.423420e+05 Voir : Exemples/float.cpp et Exemples/double.cpp. Un certain nombre de bits pour la mantisse Les bits restant pour l exposant Les détails de la représentation varient suivant les langages de programmation, les machines et les normes utilisées Normes IEEE très précises sur les règles d arrondis

Opérations sur les réels Notes L opposé (opération unaire, notée -) L addition (opération binaire, notée +) La soustraction (opération binaire, notée -) La multiplication (opération binaire, notée *) La division (opération binaire, notée /)

Les opérations sur les réels Exemples opération résultat notation scientifique 13.6 + 6.9 20.5 2.05E+01 13.6-6.9 6.7 6.7E+00 13.6 * 6.9 93.84 9.384E+01 13.6 / 6.9 1.9710145 1.9710145E+00 Voir Exemples/float.cpp

F. 3. Les caractères : type char Permettent de stocker un seul caractère : Une lettre de l alphabet (sans accent) : a,..., z, A,..., Z Un chiffre 0,..., 9 Un caractères du clavier ( @, +, /, ) Quelques caractères spéciaux

F. 3. Les caractères : type char Permettent de stocker un seul caractère : Une lettre de l alphabet (sans accent) : a,..., z, A,..., Z Un chiffre 0,..., 9 Un caractères du clavier ( @, +, /, ) Quelques caractères spéciaux Notés entre apostrophes (exempler : A ) pour distinguer le caractère A de la variable A

F. 3. Les caractères : type char Permettent de stocker un seul caractère : Une lettre de l alphabet (sans accent) : a,..., z, A,..., Z Un chiffre 0,..., 9 Un caractères du clavier ( @, +, /, ) Quelques caractères spéciaux Notés entre apostrophes (exempler : A ) pour distinguer le caractère A de la variable A La table ASCII associe un numéro unique entre 0 et 127 à chaque caractère, ce qui permet d introduire un ordre

F. 3. Les caractères : type char Permettent de stocker un seul caractère : Une lettre de l alphabet (sans accent) : a,..., z, A,..., Z Un chiffre 0,..., 9 Un caractères du clavier ( @, +, /, ) Quelques caractères spéciaux Notés entre apostrophes (exempler : A ) pour distinguer le caractère A de la variable A La table ASCII associe un numéro unique entre 0 et 127 à chaque caractère, ce qui permet d introduire un ordre Et les lettres accentuées? Les caractères chinois?...

F. 3. Les caractères : type char Permettent de stocker un seul caractère : Une lettre de l alphabet (sans accent) : a,..., z, A,..., Z Un chiffre 0,..., 9 Un caractères du clavier ( @, +, /, ) Quelques caractères spéciaux Notés entre apostrophes (exempler : A ) pour distinguer le caractère A de la variable A La table ASCII associe un numéro unique entre 0 et 127 à chaque caractère, ce qui permet d introduire un ordre Et les lettres accentuées? Les caractères chinois?... Voir : Unicode, UTF-8 Voir Exemples/char.cpp

F. 4. Les chaînes de caractères : type string Permettent de stocker une suite de caractères : un mot, une phrase,... Notées entre guillemets doubles Exemple : "Bonjour" Se comportent essentiellement comme des tableaux de caractères Opérations opération exemple résultat concaténation "bonjour"+ "toto" "bonjourtoto" indexation "bonjour"[3] j longueur "bonjour".length()" 7

F. 5. Les booléens : type bool Notes Les variables booléennes ne peuvent prendre que deux valeurs : vrai (mot clé true) faux (mot clé false) Les opérations possibles sur les booléens sont : la négation (opération unaire, mot clé not) la conjonction (opération binaire, mot clé and) la disjonction (opération binaire, mot clé or)...

Les tables de vérité not false true true false and false true false false false true false true or false true false false true true true true De plus le type booléen est ordonné : false < true.

Expressions booléennes : comparaisons La condition dans une expression booléenne résulte dans la majorité des cas d une ou plusieurs comparaisons : symbole C++ symbole mathématique < < <= == =!= >= > >

Expressions booléennes : encadrements Attention! Les encadrements ne peuvent pas être écrits directement en C++ Ils doivent être réalisés à l aide de deux comparaisons connectées par l opérateur and Exemple L encadrement mathématique : 0 x 15 se traduit en C++ par l expression booléenne : (0 <= x) and (x <= 15)

Évaluation paresseuse des expressions booléennes Exemple Quelle est la valeur des expressions suivantes : false and ( 3*x + 1 >= 2 or 1/(1+x) < 42 ) true or ( 3*x + 1 >= 2 or 1/(1+x) < 42 ) Deux possibilités : l évaluation complète : évaluer tous les opérandes des expressions booléennes

Évaluation paresseuse des expressions booléennes Exemple Quelle est la valeur des expressions suivantes : false and ( 3*x + 1 >= 2 or 1/(1+x) < 42 ) true or ( 3*x + 1 >= 2 or 1/(1+x) < 42 ) Deux possibilités : l évaluation complète : évaluer tous les opérandes des expressions booléennes l évaluation paresseuse : stopper l évaluation dès que l on peut : Pour une conjonction a and b on peut s arrêter si a est faux Pour une disjonction a or b on peut s arrêter si a est vrai

Les expressions Une expression peut être : une valeur constante Exemples : 2, 56.7, u ou true une variable toute combinaison d opérations valides mettant en œuvre des constantes et/ou des variables

Ordre de priorité Exercice Quelle est la valeur des expressions suivantes : 6 / 3 * 2 6 + 3 * 2 3 + 4 <= 2 * 8 not 1 < 2 and 1 == 2

Ordre de priorité Exercice Quelle est la valeur des expressions suivantes : 6 / 3 * 2 6 + 3 * 2 3 + 4 <= 2 * 8 not 1 < 2 and 1 == 2 Notes Les expressions sont évaluées de gauche à droite suivant l ordre de priorité décroissante suivant : Unaire Binaire not * / % and + - + - or <, <=, =,!=, >= >

Le parenthésage Notes Les parenthèses servent à modifier l ordre de priorité Exemples opérations valeurs 5 + 4 * 2 13 (5 + 4) * 2 18