Algorithmique
X Algorithmique a) Pour l’enseignant Ce livre se veut à la fois complet et polyvalent Il se révélera utile pour toutes sortes de cours, depuis un cours de structures de données en deuxième cycle jusqu’à un cours d’algo-rithmique en troisième cycle Un cours trimestriel étant beaucoup trop court pour aborder
Initiation `a l’algorithmique - Télécharger et lire cours
Les 2 premi`eres parties sont souvent rassembl´ees au sein d’une mˆeme structure : le micro-processeur (la « puce »), unit´e centrale de l’ordinateur Dans ce cours, nous ne nous int´eresserons qu’aux aspects logiciels de l’informatique 1 1 2 Algorithmique Exemple 1 1 : Mode d’emploi d’un t´el ´ecopieur
Algorithmique I - Cours et Travaux Dirig´es L3, Ecole Normale
Ce polycopi´e rassemble les cours et travaux dirig´es (avec corrig´es) du module Algorithmique de l’ENS Lyon A l’origine pr´evu pour la premi`ere ann´ee du Magist`ere d’Informatique, le module s’int`egre d´esormais dans la troisi`eme ann´ee de la Licence d’Informatique Et dire que personne ne s’est rendu compte du changement
UE C avancé cours 1: introduction
Semaines 6 Retour sur les premi eres semaines et exemples Semaine 7 Listes cha^ n ees et piles Semaine 8 Arbres Semaine 9 Arbres d’expression Semaine 10 Tables de hachage Semaine 11 G en ericit e Semaine 12 R evisions
SUJET + CORRIGE
en cours a n d’obtenir des algorithmes de rang plus e caces que le pr ec edent Dans toute la suite de l’exercice, vous pourrez utiliser la fonction classique Echange(T,i,j) qui echange les valeurs du tableau T indic ees par i et j def echange(T, i , j ): TMP = T[ i ] T[ i ] = T[ j ] T[ j ] = TMP Algorithme 6: Echange(T,i,j)
Universit´e de Provence Algorithmique et Licence Math-Info
Universit´e de Provence Algorithmique et Licence Math-Info Programmation en Python Premi`ere Ann´ee V Phan Luong TP 1 Exercice 1 : Ex´ecuter les programmes suivants :
Introduction a la programmation en C#
variable Pour utiliser une variable, la premi ere etape est la d eclaration 1 2 1 D eclaration D eclarer une variable, c’est pr evenir le compilateur qu’un nom va ^etre utilis e pour d esigner un empla-cement de la m emoire En C#, on d eclare les variables a l’int erieur du bloc form e par les accolades du Main
Annexe 1 Programmes des classes préparatoires aux Grandes Ecoles
d es la premi ere ann ee sur des exemples simples, et permet de justi er une premi ere approche des int egrales g en eralis ees en analyse, qui sera eto ee en seconde ann ee L’informatique est enseign ee tout au long de l’ann ee en lien direct avec le programme de math e-matiques
[PDF] Algorithmique et Structures de Données
[PDF] Algorithmes et programmation en Pascal TD corrigés - Limuniv-mrsfr
[PDF] ORME 212 : Algorithmique en seconde avec Python
[PDF] algot - Ikea
[PDF] Ali baba et les quarante voleurs - Gomme Gribouillages
[PDF] Commentaire de l 'article 26 du code de droit international privé
[PDF] 1 Biliographie générale : Droit international privé - Droit du
[PDF] L 'ECHO-DOPPLER VASCULAIRE Réglages - Pièges - SFEcho
[PDF] 2 Le rôle des aliments - Académie de Nancy-Metz
[PDF] Usines complètes de production d 'aliments pour - Amandus Kahl
[PDF] La nutrition active pour prévenir et traiter l 'anémie par déficience en fer
[PDF] le ba ba de la vitamine c - RTS
[PDF] Feuille d 'info «Alimentation et allaitement»
[PDF] principes generaux de l 'alimentation animale - La documentation
Introduction a la programmation en C#
Alexandre Mesle
7 mars 2014
Ce document n'est un modeste support de cours. Il est mis a jour au fur et a mesure que je prepare mes cours, et toute remarque permettant de l'ameliorer est, bien entendu, la bienvenue. Il s'adresse a des personnes n'ayant jamais programme, et donc reprend toutes les bases depuis ledebut. Il s'adresse toutefois a un public de futurs professionnels, par consequent il est assez dense et
comporte de nombreux details qui sont souvent omis dans les tutoriaux. Comme je me forme a ce langage en m^eme temps que je redige ce support, j'utilise a la fois le site du zero et mes propres exercices pour apprendre ce langage de programmation. Je vous invite, si voussouhaitez progresser, a consulter ce tutoriel parallelement au mien, vous y trouverez les m^emes concepts
expliques dieremment. Et je vous invite aussi faire les exercices que je propose, ils sont disposes par
ordre de diculte croissante et integralement corriges.Bon courage!
1Table des matieres
1 Notes de cours4
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41.1.1 Denitions et terminologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41.1.2 Hello World! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51.1.3 Quelques explications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71.2.1 Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71.2.2 Aectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71.2.3 Saisie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81.2.4 Achage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81.2.5 Entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81.2.6 Nombre decimaux a point-xe . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91.2.7 Flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91.2.8 Caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
101.2.9 Cha^nes de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
101.3 Operateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
111.3.1 Generalites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
111.3.2 Les operateurs unaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
111.3.3 Les operateurs binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
121.3.4 Formes contractees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
131.3.5 Operations heterogenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
141.3.6 Les priorites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
151.4 Traitements conditionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
161.4.1 Si ... Alors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
161.4.2 Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
181.4.3 Booleens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
191.4.4 Les priorites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
201.5 Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
211.5.1 Denitions et terminologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
211.5.2while. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
1.5.3do...while. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
1.5.4for. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
1.5.5 Accolades super
ues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.6 Cha^nes de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
241.6.1 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
241.6.2 Denition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
241.6.3 Declaration et initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
241.6.4 Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
241.6.5 Cha^nes modiables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
251.7 Tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
271.7.1 Denitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
271.7.2 Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
271.7.3 Initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
282
1.7.4 Acces aux elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
1.7.5 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
281.7.6 L'instructionforeach. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
1.8 Sous-programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
311.8.1 Les procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
311.8.2 Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
331.8.3 Passage de parametres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
341.8.4 Les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
361.8.5 Passages de parametre par reference . . . . . . . . . . . . . . . . . . . . . . . . . .
381.9 Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
401.9.1 Creation d'un type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
401.9.2 L'instanciation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
401.9.3 Les methodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
411.9.4 Le mot-clethis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
2 Exercices46
2.1 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
462.1.1 Saisie et achage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
462.1.2 Entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
472.1.3 Flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
472.1.4 Caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
472.2 Operateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
482.2.1 Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
482.2.2 Operations sur les bits (diciles) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
482.2.3 Morceaux choisis (diciles) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
492.3 Traitements conditionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
502.3.1 Prise en main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
502.3.2 Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
502.3.3 L'echiquier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
512.3.4 Heures et dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
512.3.5 Intervalles et rectangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
522.4 Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
532.4.1 Comprehension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
532.4.2 Utilisation de toutes les boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
542.4.3 Choix de la boucle la plus appropriee . . . . . . . . . . . . . . . . . . . . . . . . .
542.4.4 Morceaux choisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
552.4.5 Extension de la calculatrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
562.4.6 Revisions (SISR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
562.5 Cha^nes de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
572.5.1 Prise en main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
572.5.2 Morceaux choisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
572.6 Tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
582.6.1 Exercices de comprehension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
582.6.2 Prise en main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
582.6.3 Indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
592.6.4 Recherche sequentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
592.6.5 Morceaux choisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
592.7 Sous-programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
612.7.1 Geometrie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
612.7.2 Arithmetique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
642.7.3 Passage de tableaux en parametre . . . . . . . . . . . . . . . . . . . . . . . . . . .
642.7.4 Decomposition en facteurs premiers . . . . . . . . . . . . . . . . . . . . . . . . . .
652.8 Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
672.8.1 Creation d'une classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
672.8.2 Methodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
673
Chapitre 1
Notes de cours
1.1 Introduction
1.1.1 Denitions et terminologie
Un programmeexecutableest une suite d'instructions executee par le processeur. Ces instructions sonttres dicile a comprendre, si par exemple, vous ouvrez avec un editeur de texte (notepad, emacs, etc) un
chier executable, vous verrez s'acher un charabia incomprehensible :00000000
0000001f
0000003e
0000005d
0000007c
0000009b
000000ba
000000d9
000000f8
00000117
00000136
00000155
00000174
00000193
000001b2
000001d1
000001f0
0000020f
0000022e
0000024d
0000026c
0000028b
000002aa
000002c9
000002e8
00000307
Il n'est pas envisageable de creer des programmes en ecrivant des suites de chires et de lettres. Nous
allons donc utiliser des langages de programmation pour ce faire. Un programme C# est unensemble d'instructionsqui se saisit dans un chier.csa l'aide d'un 4editeur, ce type de chier s'appelle unesource. Les instructions qui y sont ecrites s'appellent ducode
ou encore lecode source. Un compilateur est un logiciel qui lit le code source et le convertit en uncode
executable, c'est-a-dire un ensemble d'instructions comprehensible par le processeur. Certains environnement de developpement servent d'editeur, et prennent en charge la compilation et l'execution (eclipse, Microsoft Visual C# 2010 Express, monodevelop, sharpdevelop...).1.1.2 Hello World!
Allez surhttp://msdn.microsoft.com/fr-fr/express/aa975050, telechargez et installez le framework c#. Ouvrez un nouveau projet en mode cohsole nommeHelloWorld, et copiez-collez le code ci-dessousdans l'editeur :usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceConsoleApplication1{
classHelloWorld{ static v oidMain(string[] args){Console.WriteLine("HelloW orld!");}
Dans la barre d'outils cliquez sur la
eche verte et vous pourrez voir votre chier s'executer. Pour que la console soit visible lors de l'execution faites : outils!personnaliser!Commandes! Ajouter une commande!Deboguer!Executer sans debogage, puis cliquez sur la eche verte qui a ete ajoutee lors de cette manipulation.1.1.3 Quelques explications
Corps du programmestaticv oidMain(string[] args){
Console.WriteLine("HelloW orld!");}
On place dans les accolades du main les instructions que l'on souhaite voir s'executer : static v oidMain(string[] args){Remarquez que chaque ligne se termine par un point-virgule. Pour acher une variable en C#, on utilise
Console.WriteLine("messagea afficher ");. Les valeurs entre doubles quotes sont achees telles quelles.Commentaires
Un commentaire est une sequence de caracteres ignoree par le compilateur, on s'en sert pour expliquer
des portions de code. Alors ayez une pensee pour les pauvres programmeurs qui vont reprendre votre 5code apres vous, le pauvre correcteur qui va essayer de comprendre votre pensee profonde, ou bien plus
simplement a vous-m^eme au bout de six mois, quand vous aurez completement oublie ce que vous aviezdans la t^ete en codant. On delimite un commentaire par/*et*/. Par exemple,staticv oidMain(string[] args){
Ceci e st u n c ommentaire L instruction c i dessous a ffiche Hello w orld Ces p hrases s ont i gnorees p ar l e c ompilateur console.WriteLine("Hellow orld!");} 61.2 Variables
Une variable est un emplacement de la memoire dans lequel est stockee une valeur. Chaque variable porte une nom et c'est ce nom qui sert a identier l'emplacement de la memoire represente par cette variable. Pour utiliser une variable, la premiere etape est la declaration.1.2.1 Declaration
Declarer une variable, c'est prevenir le compilateur qu'un nom va ^etre utilise pour designer un empla-
cement de la memoire. En C#, on declare les variables a l'interieur du bloc forme par les accolades du
Main. Il faut toujours declarer les variables avant de s'en servir. Nous ne travaillerons pour le moment que sur les variables de type numerique entier. Le type qui ycorrespond, en C# estint. On declare les variables entieres de la maniere suivante :publics taticv oidMain(string[] args){
intvariable1 , variable2 , ..., variablen;... Cette instruction declare les variablesvariable1, variable2, ..., variablende type entier. Par exemple,intvariable1 , variable2;intautrevariable1 , autrevariable2;1.2.2 Aectation Si on souhaite aecter a la variablevune valeur, on utilise l'operateur=. Par exemple,intv;v = 5;Cet extrait de code declare une variable de type entier que l'on appellev, puis lui aecte la valeur 5.
Comme vous venez de le voir, il est possible d'ecrire directement dans le code une valeur que l'on donne
a une variable.Il est aussi possible d'initialiser une variable en m^eme temps qu'on la declare. Par exemple, l'extrait
ci-dessus se reformuleintv = 5;Les operations arihmetiques disponibles sont l'addition (+), la soustraction (-), la multiplication (*),
la division entiere dans l'ensemble des entiers relatifs (quotient :/, reste :%). Par exemple,intv, w, z;v = 5;
w = v + 1; z = v + w / 2; v = z % 3; v = v * 2; 71.2.3 Saisie
Traduisons en C# l'instructionSaisirla saisie d'un utilisateur et la placer dans une variable
du programme jusqu'a ce que l'utilisateur ait saisi une valeur et presse la touchereturn. La valeur saisie
est alors aetee a la variable
rithmique, l'instructionAfficheren intercalant des valeurs de variables entre les messages aches. Il est
possible de faire de m^eme en C# :Console.WriteLine("lav aleurd el av ariablev e st" + v +".");Les valeurs ou variables achees sont ici separes par des+. Tout ce qui est delimite par des double
quotes est ache tel quel. Cette syntaxe s'etend a volonte :Console.WriteLine("lesv aleursd esv ariablesx ,y e tz s ont" + x +"," + y +"e t" + z);1.2.5 Entiers
Quatre types servent a representer les entiers :nomtaille (t)nombre de valeurs (28t)byte1 octet2
8valeursshort2 octet2
16valeursint4 octets2
32valeurslong8 octets2
64valeursPlages de valeurs
Il necessaire en programmation de representer des valeurs avec des 0 et des 1, m^eme si c# s'en charge
pour vous, il est necessaire de savoir comme il procede pour comprendre ce qu'il se passe en cas deprobleme. On retrouve donc dans la memoire la representation binaire des nombres entiers. Ainsi la plage
de valeur d'unbyte, encodee en binaire, est : f0000 0000;0000 0001;0000 0010;0000 0011;:::;1111 1110;1111 1111gLes nombres entiers positifs sont ceux qui commencent par un 0, ils sont representes sur l'intervalle :
f0000 0000;0000 0001;0000 0010;0000 0011;:::;0111 1100;0111 1101;0111 1110;0111 1111gLes valeurs entieres correspondantes sont :
8 f0;1;2;:::;125;126;127g Et les nombres negatifs, commencant par un 1, sont donc representes sur l'intervalle : f1000 0000;1000 0001;1000 0010;1000 0011;:::;1111 1100;1111 1101;1111 1110;1111 1111gLes nombres negatifs sont disposes du plus eloigne de 0 jusqu'au plus proche de 0, l'intervalle precedent
code les valeurs : f27;(271);(272);(273);:::;4;3;2;1g Par consequent, on represente avec unbyteles valeurs Les operations arithmetiques sont executees assez b^etement, si vous calculez 0111 1111 + 0000 0001, ce qui correspond a (271) + 1, le resultat mathematique est 27, ce qui se code 1000 0000, ce qui est le
codage de27. Soyez donc attentifs, en cas de depassement de capacite d'un nombre entier, vous vousretrouverez avec des nombres qui ne veulent rien dire. Si vous souhaitez faire des calculs sur des reels, un
type ottant sera davantage adapte.Le principe de representation des entiers est le m^eme sur tous les types entiers. On resume cela dans
le tableau suivant :nomtaille (t)nombre de valeurs (2