Objectif et contenu Faut-il des connaissances préalables? Organisation et site web Support de cours Modalités de contrôle Comptes et tutorat



Documents pareils
STAGE IREM 0- Premiers pas en Python

MIS 102 Initiation à l Informatique

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

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

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

DM 1 : Montre Autoquartz ETA

Rappels sur les suites - Algorithme

Programmation Web. Madalina Croitoru IUT Montpellier

Représentation d un entier en base b

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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

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)

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

Cours 1 : Qu est-ce que la programmation?

TP 1. Prise en main du langage Python

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

Licence Sciences et Technologies Examen janvier 2010

Algorithmique et Programmation, IMA

Initiation à la programmation en Python

Calculateur quantique: factorisation des entiers

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

Algorithme. Table des matières

Le chiffre est le signe, le nombre est la valeur.

Algorithmique I. Algorithmique I p.1/??

Présentation du langage et premières fonctions

Cours d Informatique

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

S LICENCE INFORMATIQUE Non Alt Alt SS1 S2 S3 S4 S5 S6 Parcours : IL (Ingénierie Logicielle) SRI (Systèmes et Réseaux Informatiques)

Organigramme / Algorigramme Dossier élève 1 SI

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

Programmes des classes préparatoires aux Grandes Ecoles

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Corrigé des TD 1 à 5

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

Cours 1 : La compilation

Introduction au langage C

Programmation Objet - Cours II

Chapitre 2. Eléments pour comprendre un énoncé

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

Algorithmique avec Algobox


1 Recherche en table par balayage

DUT. Informatique, orientation Imagerie Numérique. Domaine : Sciences, Technologies, Santé. Mention : Informatique

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

Certificat Informatique et internet Niveau 1 TD D1. Domaine 1 : Travailler dans un environnement numérique évolutif. 1. Généralités : Filière

Algorithmique et programmation : les bases (VBA) Corrigé

Correction TD algorithmique

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

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

Cours d algorithmique pour la classe de 2nde

ACTIVITÉ DE PROGRAMMATION

Algorithmique et structures de données I

Recherche dans un tableau

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Éléments de programmation et introduction à Java

La mémoire. Un ordinateur. L'octet. Le bit

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

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

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Présentation. Référenciel : textes officiels

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

MPI Activité.10 : Logique binaire Portes logiques

Initiation à l algorithmique

I00 Éléments d architecture

Cours 7 : Utilisation de modules sous python

Guide de configuration de SQL Server pour BusinessObjects Planning

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

Introduction à MATLAB R

Chapitre 2 Devine mon nombre!

L informatique en BCPST

V- Manipulations de nombres en binaire

Cours d Algorithmique et de Langage C v 3.0

Représentation des Nombres

SESSION 2014 ÉPREUVE À OPTION. (durée : 4 heures coefficient : 6 note éliminatoire 4 sur 20)

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

MÉTHODES NUMERIQUES. Cours. Licence de Physique Année Universitaire : Licence Chimie, parcours Physique. Semestre S3

2 Comment fonctionne un ordinateur, dans les grandes lignes

Évaluation et implémentation des langages

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Algorithmes récursifs

Conception de circuits numériques et architecture des ordinateurs

Enseignement secondaire technique

Gestion collaborative de documents

ALGORITHMIQUE ET PROGRAMMATION En C

Master CCI. Compétences Complémentaires en Informatique. Livret de l étudiant

Vous revisiterez tous les nombres rencontrés au collège, en commençant par les nombres entiers pour finir par les nombres réels.

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

S LICENCE INFORMATIQUE Non Alt S Alt S S1 S2 S3 S4 SS5 S6 Parcours : S IL (Ingénierie Logicielle) SRI (Systèmes et Réseaux Informatiques)

2. Comprendre les définitions de classes

Le stockage local de données en HTML5

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Les tablettes. Présentation tablettes Descriptif Fournisseurs Caractéristiques Comparatifs Conseils Perspectives Démonstration

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

B2i. LE B2i Brevet Informatique et Internet. Niveau : tous. 1 S'approprier un environnement informatique de travail. b2ico1.odt.

Bases de données documentaires et distribuées Cours NFE04

Transcription:

2014-15 1. Présentation et organisation 2. Algorithme 3. Programmes 4. Manipulation d images 5. Introduction aux graphes 6. Graphes : définition 7. Degré 8. Chaînes 9. Connexité 10. Graphes Eulériens 11. Coloration Objectif et contenu Faut-il des connaissances préalables? Organisation et site web Support de cours Modalités de contrôle Comptes et tutorat Objectif : Initiation à la programmation et l'algorithmique. Thèmes : Manipulation d images Etude d un objet appelé graphe. Organisation : Généralités, temps de calcul Notions théorique et algorithmes Programmation : TP 4 notions abordées : Images, graphes, algorithmes, programmes, temps de calcul. 1

Non prérequis Connaissance d'un langage, d'un système d'exploitation, Connaissance de la programmation, Connaissance de logiciels destinés au grand public. Prérequis Il sera nécessaire de pouvoir comprendre un raisonnement mathématique pour les preuves des théorèmes. Responsable : Samuel Thibault. Site Web : http://dept-info.labri.fr/initinfo Support de cours. Textes des TD, TP. Annales d examen. Planning; 14 séances de cours intégré (1h20) 14 séances de TP (1h20) dont un TP noté. Travail individuel. Epreuves Durée Coeff CC (Tests) 3*20mn 0,2 1 TP noté 1h20 0,2 1 DS semaine 47 1h30 0,3 1 DST janvier 1h30 0,3 TD/TP au CREMI Bat A28 Tutorat Kiosque pour : Activation de comptes, Prise en main de l'environnement informatique, Soutien pour les cours d'informatique, Lundi-Jeudi de 12h45 à 13h45 (Rez-de-Chaussée bât. A22 en face du guichet unique) à partir de la mi-septembre. 2

Qu'est-ce qu'un algorithme? Efficacité des algorithmes : structures de données et temps de calculs. Un algorithme est une méthode systématique (comme une recette) pour résoudre un problème donné. Il se compose d'une suite d'opérations simples à effectuer pour résoudre un problème. Exemple : faire n tasses de café mettre un filtre Tant que niveau_reservoir < n faire mettre une dose d eau dans le reservoir Fin tant que nb_doses = 0 Tant que nb_doses < n faire mettre une dose de cafe dans le filtre augmenter nb_doses de 1 Fin tant que allumer la cafetiere Un algorithme est une méthode systématique (comme une recette) pour résoudre un problème donné. Il se compose d'une suite d'opérations simples à effectuer pour résoudre un problème. En informatique cette méthode doit être applicable par un ordinateur. 3

Exemple : afficher les diviseurs de l entier n si n > 0 alors pour tout entier i entre 1 et n faire si n est divisible par i alors afficher(i) finsi finpour finsi Pour un problème donné, il y a plusieurs algorithmes. Il est facile d'écrire des algorithmes faux ou inefficaces. Une erreur peut faire la différence entre plusieurs années et quelques minutes de calculs sur une même machine. C'est souvent une question d'utilisation de structures de données ou d'algorithmes connus dans la littérature. Une structure de données est une façon particulière d'organiser les données. Exemple : Construire une ville de 15 maisons en évitant aux livreurs de pizzas qui suivent les rues un trajet trop long depuis la pizzeria. Organisation 1 : Linéaire. Numéros croissants. Pizzeria au numéro 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Dans les deux organisations, le livreur a une méthode simple pour trouver une maison en partant de la pizzeria. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Organisation 2 : Embranchements. À l'ouest de la maison k, n < k, et à l'est, n > k. La pizzeria est au numéro 8. 8 12 14 8 12 14 1 3 5 7 9 11 13 15 1 3 5 7 9 11 13 15 4

Dans les deux organisations, le livreur a une méthode simple pour trouver une maison en partant de la pizzeria. Nombre de maisons Temps avec organisation 1 Temps avec organisation 2 15 14 3 On suppose qu'il faut une unité de temps pour passer d'une maison à une autre (en suivant une rue). Dans le cas le pire, quel est le temps mis par un livreur pour aller jusqu'à une maison depuis la pizzeria? Le temps de calcul (ou complexité) d'un algorithme est la fonction qui à un entier n associe le nombre maximal d'instructions élémentaires que l'algorithme effectue, lorsqu on travaille sur des objets de taille n. En pratique, on se contente d'un ordre de grandeur. Exemples d'opérations élémentaires : additionner, soustraire, multiplier ou diviser deux nombres, tester si une valeur est égale à une autre valeur, affecter une valeur à une variable. Pour déterminer si un algorithme est efficace, on compte le nombre d'opérations nécessaires à effectuer dans le pire des cas et en fonction de la taille de la donnée. Le temps de calcul d'un algorithme est une évaluation du nombre d'opérations élémentaires (opérations arithmétiques) qu'il effectue sur une donnée de taille n. Exemple avec l'organisation 1 de la ville, de taille n maisons, l'algorithme naturel pour trouver une maison a une complexité O(n). avec l'organisation 2 d'une ville de taille n maisons, l'algorithme naturel pour trouver une maison a une complexité O(log_2(n)), ce qui est bien inférieur. 5

Pour notre livreur de pizza : Si n = 10 6, alors log_2 20 Il fait 50 000 fois moins de déplacements si les maisons sont organisés par «embranchements». Si n = 10 9, alors log_2 n 30, il fait alors 30 000 000 fois moins de déplacements. Problème : déterminer si 2 ensembles E1, E2 de n entiers ont une valeur commune. Algorithme 1 : comparer successivement chaque élément de E1 avec chaque élément de E2. Il faudra environ n² comparaisons. 237623 5234 983 83889 9 7363 19 873 111 87321 Problème : déterminer si 2 ensembles E1, E2 de n entiers ont une valeur commune. Algorithme 2 : Avec un structure de données adaptées, on peut résoudre le problème avec environ n*log(n) comparaisons. E1 = E2 Algorithme 1 Algorithme 2 n n 2 n*log(n) 10 100 10 1000 1000000 3000 100000 10000000000 500000 Sur un ordinateur exécutant une instruction élémentaire en 10-9 s. Si les ensembles E1 et E2 ont n = 1 000 000 = 10 6 elts Exécuter n * log n instructions élémentaires nécessite. Exécuter n 2 instructions élémentaires nécessite... soit environ. Si les ensembles E1 et E2 ont n = 10 000 000 = 10 7 éléments Exécuter n * log n instructions élémentaires nécessite.. Exécuter n 2 instructions élémentaires nécessite soit plus d une.. En informatique, on manipule parfois des ensembles énormes Google indexe plusieurs milliards de pages web, Google reçoit près de 8 milliards 640 millions de requêtes/jour. 6

L'informatique même pour non informaticiens. Exemples de domaines de l'informatique Challenges 7

Dans la vie quotidienne : ordinateur avec logiciels, mais aussi En entreprise : un outil de communication et de production. À l'université : une discipline scientifique. Une partie pratique (par exemple, autour de la programmation). Une partie théorique similaire aux maths (objets abstraits). Les objets en mathématiques : nombres, relations, fonction, transformations, etc. Les objets en informatique : algorithmes, programmes, preuves, systèmes de réécriture, images numériques, graphes, etc. Le travail d'un scientifique ou d'un ingénieur nécessite de plus en plus la manipulation de logiciels. Ces logiciels sont de plus en plus sophistiqués. Souvent, ces logiciels nécessitent de la programmation. Il faut des connaissances informatiques (algorithmique et programmation) pour programmer efficacement, maintenir les programmes. Les bases de données : 2 484 915 152 internautes en 2014 +644 millions sites web en 2014. 4 milliards d actions/ jour sur Facebook 33,9 milliards transactions VISA / an (2013) 90% des données numériques datent de moins de 2 ans. 144 milliards e-mails / jour dans le monde Actions : Trouver rapidement un billet d'avion, un trajet, une page web,... Traçabilité des transactions en agro-alimentaire, dans le domaine financier, Croiser les informations des corps policiers au niveau européen, Analyser des systèmes d informations géographiques La sécurité Transports, Médecine, Finance, Communications, Énergie, Systèmes embarqués, 8

Simulation numérique Météorologie Crash-test Conception numérique. Etc. Les logiciels Navigateurs internet Anti-virus Pare-feu ou passerelle Clients de messagerie (mail) Jeux... Les langages de programmation Les langages de programmation sont souvent utilisés dans des domaines spécifiques. HTML, php, javascript pour la création de pages web, SQL pour les bases de données, Java pour les applications embarquées, les serveurs, +... C pour les systèmes d'exploitation (Windows, Unix), +... Python pour... demandez à Image et son MP3, JPEG, MPEG : codage et compression. Voix par IP, numérisation et transformation. Image 3D, jeux vidéos... Impression 3D 9

Que faire des algorithmes des années 60? Calcul parallèle (R.Namyst ( R.Namyst) Que change l informatique nomade? 1,19 MHz Qu implique la limitation physique des processeurs???? Calcul parallèle (R.Namyst ( R.Namyst) 2006 : Sony PS3 Processeur Cell 3.2 GHz Processeur graphique Nvidia RSX La PS3 calcule des millions de fois plus vite! «Le nombre de transistors par unité de surface double tous les 2 ans» 39 10

Si les transistors étaient des personnes On ne peut plus augmenter la fréquence La dissipation thermique et la consommation deviennent problématiques 2300 ~Opéra 134000 ~ Stade de foot 32 millions ~ Pop. de Tokyo 1,3 milliards ~ Pop. Chine Mais avec la finesse de la gravure il y a de la place pour continuer à rajouter des circuits -> Les processeurs multicœurs Toujours sur la surface d'un opéra... Conséquences? Pendant longtemps, l évolution des microprocesseurs a permis d accélérer les calculs sans effort de la part des programmeurs Aujourd hui, le matériel demande des efforts énormes aux programmeurs (qui n y sont pas habitués :-) Calcul parallèle (R.Namyst ( R.Namyst) TITAN: 17,6.10 15 opérations flottantes par seconde; Installée au Oak Ridge Leadership Computing Facility (USA) Calcul parallèle (R.Namyst ( R.Namyst) Curie: 1,3.10 15 opérations flottantes par seconde. «Très Grand Centre de Calcul», Paris (TGCC) 43 11

Calcul parallèle (R.Namyst ( R.Namyst) Accélérateurs pour le calcul parallèle 10 12 flops Notion de programme Quelques instructions du langage Python. 1,5.10 12 flops C'est une suite d'instructions écrites dans un langage de programmation «compréhensible» par l'ordinateur. Cela permet à l'ordinateur d'appliquer un algorithme. Dans un programme l'ordinateur effectue les instructions dans l'ordre. L'ordre des instructions est donc très important Exemple : afficher les diviseurs de n Algorithme : si n > 0 alors pour tout entier i entre 1 et n faire si n est divisible par i alors afficher i finsi finpour finsi Programme : if n > 0: for i in range(1, n+1): if n % i == 0: print (i) Rq : n % i donne le reste de la division de n par i 12

Une variable désigne un emplacement mémoire dans lequel on peut stocker (sauvegarder) une valeur. Une variable a toujours un nom. Pour changer la valeur d une variable on utilise l affectation représentée par le symbole = en python. Exemples : i = 1 x = 2*i+1 i = x+2 i 1 i 1 i? Ce symbole n'a pas la même signification qu'en mathématique. Il signifie calculer la valeur à droite du symbole = et la ranger dans la variable dont le nom se trouve à gauche. x 3 x? Exercices : 1. Que contiennent les variables x,y et z après les instructions suivantes? x=6 x=7 z=x z=x+y 2. Même question : b=3 b=a+2 3. L instruction i=i+1 a-t-elle un sens? Si oui lequel? Et i+1 = i? Le quotient entier q de deux entiers a et b positifs et le reste r sont définis par : a = bq+r avec 0<=r<b En python : Quotient entier de a par b : a//b Reste ou modulo : a%b Exemple : 19//5 donne 3 19%5 donne 4 Exercice : Comment caractériser les entiers pairs? 13

Une expression booléenne est une expression qui n a que 2 valeurs possibles : True (Vrai) False (False) Les tests sont des expressions booléennes égalité x==y inégalité x!=y comparaison x<=y x>y etc. On peut les combiner avec des opérateurs : and, or et not and V F V V F F F F or V F V V V F V F V F or and not F V not and or x>=-5 and x<=5 vaut True si x [-5,5] Exercices : 1. Ecrire une expression booléenne qui vaut True si x [-5,5]. En mathématique une fonction f : x 2x 2 + 1 décrit la façon de calculer f(x) à partir de la donnée x En Python : paramètre 2. Ecrire une expression booléenne qui vaut True si i est un nombre pair inférieur à 6. 3. On considère deux variables n et p. Ecrire une expression booléenne qui vaut True si n divise p. def f(x) : return 2 * x * x + 1 # exemples d appel de la fonction y = 2 * f(2) print (f(5)) argument Définition Utilisations 14

En Python : def f(x) : return 2 * x * x + 1 f Définition Instruction conditionnelle si alors sinon Vrai Faux Test x 2*x*x+1 f(x) Instructions_V Instructions_F Instruction conditionnelle si alors sinon if Test : Instructions_V else : Instructions_F Instruction conditionnelle si alors sinon Exemple i=10 x=6 if i > x : print ("test VRAI" ) print (i, "est supérieur à", x) else : print ("test FAUX") print (i, "n'est pas supérieur à", x) Attention à l indentation! 15

On peut «imbriquer» les if :else On peut «imbriquer» les if :else Vrai Instructions_V1 Faux Test1 Vrai Faux Test2 Instructions_F1V2 Instructions_F1F2 if x<0 : print ("negatif") else : if x%2 ==0: print ("pair" ) else : print ("impair" ) if x<0 : print( "negatif" ) elif x%2 ==0: print( "pair " ) else : print( "impair" ) On peut manipuler des listes d éléments : Exemples : [3,7,4,1] [ d, f, e ] 6 in [3,7,4,1] => False 4 in [3,7,4,1] => True La fonction len retourne la taille de la liste. Len([3,7,4,1]) => 4 La fonction range permet de construire des listes d éléments consécutifs # liste des entiers [a,b[ par pas de c range(a,b,c): Debut Fin Pas Remarque: range(a,b) range(a,b,1) #c=1 range(b) range(0,b,1) #a=0,c=1 Exemple : list ( range(1,9,1)) =>[1,2,3,4,5,6,7,8] list ( range(1, 9, 2)) => [1,3,5,7] 16

Répétition : pour parcourant la liste. La boucle for permet de parcourir les éléments d une liste # parcourir et afficher les entiers de 0 à 9 for i in range(10) : print (i) On peut imbriquer les boucles : for i in range(10): for j in range(3): print(i,j) Répétition : tant que faire i=10 while i > 0 : print (i) i = i - 1 Ou : while i > 0 : i = i 1 print (i) Attention à l ordre des instructions! Affichage ou sortie (print ou return) Position du return (dans la boucle ou après la boucle) def f(x): for i in range(x): print (i) def g(x): for i in range(x): return (i) Quel sera le résultat de : f, g et h pour x=3? def g(x): for i in range(x): return (i) 17