algo_programmation

Upload: souriant

Post on 07-Apr-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 algo_programmation

    1/32

    Algorithmique et programmation

  • 8/3/2019 algo_programmation

    2/32

    - Lalgorithme est une mthode pour rsoudre un problme- Le programme est le codage lisible par lordinateur de cette mthode

    - Avant dcrire un programme, il est ncessaire davoir un algorithme

    * Il s'agit donc de fournir la solution un problme, la premire tape consiste donc analyser le problme, c'est--dire en cerner les limites et le mettre en forme dansun langage descriptif, on parle gnralement d'analyse pour dcrire le processuspar lequel le problme est formalis.

    * Le langage de description utilis pour crire le rsultat de l'analyse est appelalgorithme.

    * L'tape suivante consiste traduire l'algorithme dans un langage deprogrammation spcifique, il s'agit de la phase de programmation.

    Algorithmique

  • 8/3/2019 algo_programmation

    3/32

    L'algorithme est un moyen pour le programmeur de prsenter son approche du

    problme d'autres personnes. En effet, un algorithme est l'nonc dans unlangage bien dfini d'une suite d'oprations permettant de rpondre au problme.

    Un algorithme doit donc tre :

    - lisible: l'algorithme doit tre comprhensible mme par un non-informaticien

    - de haut niveau: l'algorithme doit pouvoir tre traduit en n'importe quel langage deprogrammation, il ne doit donc pas faire appel des notions techniques relatives un programme particulier ou bien un systme d'exploitation donn

    - prcis: chaque lment de l'algorithme ne doit pas porter confusion, il est doncimportant de lever toute ambigut

    - concis: un algorithme ne doit pas dpasser une page. Si c'est le cas, il fautdcomposer le problme en plusieurs sous-problmes

    - structur: un algorithme doit tre compos de diffrentes parties facilement

    identifiables

    Algorithmique

  • 8/3/2019 algo_programmation

    4/32

    Les langages de programmation

    Le langage de programmation est l'intermdiaire entre l'humain et la machine, ilpermet d'crire dans un langage proche de la machine mais intelligible par l'humain

    les oprations que l'ordinateur doit effectuer.

    Ainsi, tant donn que le langage de programmation est destin l'ordinateur, il doitdonc respecter une syntaxe stricte. Un algorithme peut toutefois aboutir plusieursprogrammes.

    On appelle langage informatique un langage destin dcrire l'ensemble desactions conscutives qu'un ordinateur doit excuter. Un langage informatique estainsi une faon pratique pour nous (humains) de donner des instructions unordinateur.

    Les langages servant aux ordinateurs communiquer entre eux n'ont rien voiravec des langages informatiques, on parle dans ce cas de protocoles decommunication, ce sont deux notions totalement diffrentes.

    Un langage informatique est rigoureux : chaque instruction correspond une actiondu processeur.

  • 8/3/2019 algo_programmation

    5/32

    Un programme informatique est une succession d'instructions excutables parl'ordinateur. Toutefois, l'ordinateur ne sait manipuler que du binaire, c'est--dire une

    succession de 0 et de 1. Il est donc ncessaire d'utiliser un langage deprogrammation pour crire de faon lisible, c'est--dire avec des instructionscomprhensibles par l'humain car proches de son langage, les instructions excuter par l'ordinateur.

    Ensuite, le code crit dans ce type de langage est transform en langage machinepour tre exploitable par le processeur

    La transformation d'un programme en langage machine est appel la compilation.La compilation est une phase ralise par l'ordinateur lui-mme grce un autre

    programme appel compilateur.

    If a>b {a=b;}

    else {b=a;} compilateur

    00101110

    11001100

    00110010

    Les langages de programmation

  • 8/3/2019 algo_programmation

    6/32

    La faon d'crire un programme est intimement lie au langage de programmation

    que l'on a choisi, car il en existe normment. De plus, le compilateur devracorrespondre au langage choisi : chaque langage de programmation soncompilateur (exception faite des langages interprts...).

    Le compilateur fait ensuite appel un diteur de liens (en anglais linker ou binder)qui permet d'intgrer dans le fichier final tous les lments annexes (fonctions oulibrairies) auquel le programme fait rfrence mais qui ne sont pas stocks dans lefichier source.

    Puis il cre un fichier excutable qui contient tout ce dont il a besoin pourfonctionner de faon autonome, (sous les systmes d'exploitation MicrosoftWindows ou MS-Dos le fichier ainsi cr possde l'extension .exe)

    Les langages de programmation

  • 8/3/2019 algo_programmation

    7/32

    D'une faon gnrale, le programme est un simple fichier texte (crit avec un

    traitement de texte ou un diteur de texte), que l'on appelle fichier source.

    Le fichier source contient les lignes de programmes que l'on appelle code source.Ce fichier source une fois termin doit tre compil. La compilation se droule endeux tapes :

    tant donn que chaque type dordinateur a son propre langage machinespcifique, donc pour un langage haut niveau il faut autant de compilateurs (oudinterprteurs) quil y a de types dordinateurs (x86 comme Intel ou AMD, Mac,Sun, etc.) ou de systmes d'exploitations.

    Les langages de programmation

  • 8/3/2019 algo_programmation

    8/32

    Il existe diffrents niveaux dans les langages de programmation:

    Les langages de niveau lev sont des langages plus facilement compris par lusager, parexemple pour prendre le contenu dune zone de mmoire A et le mettre dans une zone demmoire B nous navons qu crire: B = A

    Il existe des milliers de langages de niveau lev, pour tous gots et toutes applications.Quelques uns des plus connus: C, C++, Pascal, Java, python(http://en.wikipedia.org/wiki/Alphabetical_list_of_programming_languages)

    Haut niveau : proche de lhomme, vocabulaire et syntaxe plus riches

    - Python, Rebol, Ruby

    - Php, Perl, Tcl

    - C++, Java

    - Pascal

    - C, Fortran

    - Assembleur

    - Langage machine Bas niveau : proche de la machine, instructions lmentaires

    Les langages de programmation

  • 8/3/2019 algo_programmation

    9/32

    L'assembleurest le premier langage informatique qui ait t utilis. Celui-ci est trsproche du langage machine mais reste comprhensible pour des dveloppeurs.

    Toutefois, un tel langage est tellement proche du langage machine qu'il dpendtroitement du type de processeur utilis (chaque type de processeur peut avoir sonpropre langage machine).

    Ainsi, un programme dvelopp pour une machine ne pourra pas tre port sur unautre type de machine. Le terme portabilit dsigne l'aptitude d'un programmeinformatique a tre utilis sur des machines de types diffrents. Pour pouvoir utiliserun programme informatique crit en assembleur sur un autre type de machine, ilsera parfois ncessaire de rcrire entirement le programme !

    Un langage informatique a donc plusieurs avantages :

    - il est plus facilement comprhensible que le langage machine

    - il permet une plus grande portabilit, c'est--dire une plus grande facilitd'adaptation sur des machines de types diffrents

    Les langages de programmation

  • 8/3/2019 algo_programmation

    10/32

    On distingue habituellement deux grandes familles de langages de programmation:

    - les languages orients procdures (=langages fonctionnels ou procduraux)

    - les languages orients objets (=languages objets)

    Les premiers langages utiliss en informatique sont dit impratifs . Il ne s'agit nide langages procduraux ni de langages objets. Ils sont dsutes mme siquelques langages de ce type existent encore aujourd'hui.

    Un langage impratif organise le programme sous forme d'une srie d'instructions,regroupes par blocs et comprenant des sauts conditionnels permettant de revenir un bloc d'instructions si la condition est ralise.

    Les langages impratifs structurs souffrent nanmoins d'un manque de souplessetant donn le caractre squentiel des instructions. Il ont t remplacs par les

    langages fonctionnels.

    Les familles de languages de programmation

  • 8/3/2019 algo_programmation

    11/32

    Langages fonctionnels

    Un langage fonctionnel (ou langage procdural) est un langage dans lequel leprogramme est construit par fonctions, retournant un nouvel tat en sortie etprenant en entre la sortie d'autres fonctions par exemple. Ce type de langagepermet de diviser un problme complexe en sous-problmes plus simples.Lorsqu'une fonction s'appelle elle-mme, on parle alors de rcursivit.

    Langages objets

    C'est une manire de programmer qui part du principe que des choses peuvent

    avoir des points communs, des similarits en elles-mmes ou en leur faon d'agir.L'ide de la programmation objet est donc de regrouper de tels lments afin d'ensimplifier leur utilisation.

    Un regroupement est appel classe, les entits qu'il regroupe sont appeles objets.

    Ainsi, au lieu de dfinir des actions excuter pour chacun, on dfinira des actionspour toute une classe et chaque objet pourra les effectuer.

    Les familles de languages de programmation

  • 8/3/2019 algo_programmation

    12/32

    Les langages informatiques peuvent tre soit :

    - des langages interprts

    - des langages compils.

    Langages interprts

    Un langage informatique est par dfinition diffrent du langage machine. Il fautdonc le traduire pour le rendre intelligible du point de vue du processeur.

    Un programme crit dans un langage interprt a besoin d'un programme auxiliaire(l'interprteur) pour traduire au fur et mesure les instructions du programme.

    Les langages interprts sont moins rapides que les compils mais plus souplescar on n'a pas besoin recompiler si on fait des modifications.

    Interprtation et compilation

  • 8/3/2019 algo_programmation

    13/32

    Langage compil

    Un programme crit dans un langage dit compil va tre traduit une fois pourtoutes par un programme annexe, appel compilateur, afin de gnrer un nouveaufichier qui sera autonome, c'est--dire qui n'aura plus besoin d'un programme autreque lui pour s'excuter; on dit d'ailleurs que ce fichier est excutable.

    Un programme crit dans un langage compil a comme avantage de ne plus avoir

    besoin, une fois compil, de programme annexe pour s'excuter. De plus, latraduction tant faite une fois pour toute, il est plus rapide l'excution.

    Toutefois il est moins souple qu'un programme crit avec un langage interprt car chaque modification du fichier source il faudra recompiler le programme pour queles modifications prennent effet.

    Un programme compil a pour avantage de garantir la scurit du code source. Eneffet, un langage interprt, tant directement intelligible (lisible), permet n'importequi de connatre les secrets de fabrication d'un programme et donc de copier lecode voire de le modifier. Il y a donc risque de non-respect des droits d'auteur.D'autre part, certaines applications scurises ncessitent la confidentialit du code

    pour viter le piratage

    Interprtation et compilation

  • 8/3/2019 algo_programmation

    14/32

    Langages intermdiaires

    Certains langages appartiennent en quelque sorte aux deux catgories (LISP, Java,

    Python, ..) car le programme crit avec ces langages peut dans certaines conditionssubir une phase de compilation intermdiaire vers un fichier crit dans un langagequi n'est pas intelligible (donc diffrent du fichier source) et non excutable(ncessit d'un interprteur). Par exemple, les applets Java, petits programmesinsrs parfois dans les pages Web, sont des fichiers qui sont compils mais que

    l'on ne peut excuter qu' partir d'un navigateur.

    Interprtation et compilation

  • 8/3/2019 algo_programmation

    15/32

    Assembler

    Proche du langage machine et le plus rapide. Vous ne devriez par avoir l'utiliser,comme le faisaient les anciens programmeurs. Raliser des pilotes de matriel oupour la programmation de machines industrielles.

    Basic

    Ce langage trs ancien (1964) a t amlior par Microsoft, avec un environnementde dveloppement complet (Visual Basic). C'est un langage qui est souvent utilispour faire des scripts sur les applications de Microsoft (Word, etc...)

    Pascal

    Vieux langage (1970), amlior avec les objets, qui impose une programmationstructure stricte. Pour l'apprentissage ou crer des applications client/serveur avecDelphi et Kylix.

    Exemples de langages de programmation

  • 8/3/2019 algo_programmation

    16/32

    Lisp, Prolog

    Langages utiliss en intelligence artificielle qui traitent de essentiellement de listes.

    Scheme

    Scheme est une version modernise de Lisp. Les fonctions rcursives sontfortement utilises

    Fortran

    Un des premier langages, toujours utilis pour des tches mathmatiques. Ildispose d'une large bibliothque mathmatique.

    Exemples de langages de programmation

  • 8/3/2019 algo_programmation

    17/32

    Cobol

    Langage de gestion, toujours utilis sur de gros ordinateurs. Sert maintenir devieux programmes sur les mainframes.

    Perl

    Language interprt de scripts. Utilis essentiellement pour traiter les chaines decaractres ou utilis sous forme de CGI (pages Web dynamiques).

    Tcl

    Langage de script, facile apprendre, disponible sur toutes les plateformes. Pourfaire des scripts (type unix), ventuellement graphique (avec TK) et portable.

    Exemples de langages de programmation

  • 8/3/2019 algo_programmation

    18/32

    C

    Offre une grande libert, mais aussi un bon exercice de dboguage cause despointeurs et la gestion de la mmoire. Programmation laborieuse mais programmesrapides. Surtout utiliss pour la programmation systme.

    C++

    C'est du C plus les objets, les templates, une bibliothque tendue, la surchargedes oprateurs. Pour la programmation systme comme C mais permet de plusgrand projets et la cration d'applications.

    C# (C Sharp)

    Concurrent de Java, tourne sur .Net ou compatible. Plus facile que C++. Peutpartager les ressources de .Net avec d'autres langages.

    Exemples de langages de programmation

  • 8/3/2019 algo_programmation

    19/32

    Exemples de langages de programmation

    JavaScript (+HTML)

    Pour faire des pages web dynamiques cot client.

    Php

    Conu pour tre insr dans le html et construire des pages web dynamiquescot serveur, notamment partir de bases de donnes. Conu pour produire

    rapidement des pages html dynamiques partir de donnes.

    ASP

    Langage de scripts cot serveur par Microsoft, avec la syntaxe de Basic. Permetde produire des pages Web dynamiques partir de donnes sous serveurWindows seulement.

    SQL

    C'est LE langage d'interrogation de bases de donnes (ce n'est pas un langage

    de programmation proproment parl)

  • 8/3/2019 algo_programmation

    20/32

    Smalltalk

    Un des premiers langages orients objets. Ne peut fonctionner sans sonenvironnement de dveloppement.

    Eiffel, Sather

    Orient objets, avec "programmation par contrat" et autres options de scurit.Sather est une implmentation open-source qui est surtout utilis par des hpitaux.

    Rebol

    Langage interprt pour faire des scripts de rseau. Le langage lui-mme peut tre

    augment. Il permet de traiter de l'information sur systmes distribus, avec desprogrammes compacts. Langages original (cr par Carl Sassenrath)

    Exemples de langages de programmation

    E l d l d ti

  • 8/3/2019 algo_programmation

    21/32

    Exemples de langages de programmation

    Java

    Equivalent du C++ ou C# mais conu pour tre portable. Applications multi-plateformes (mais plus lentes que les applications natives). Peut galement treutilis pour programmer des services Web (servlets, jsp).

    Ruby

    Conception avec la simplicit en vue. Il est interprt et donc une bibliothquepropritaire, mais extensible.

    Python

    Un langage interprt moderne avec des fonctions intgres puissantes et lasimplification du code unique par l'indentation.

    La version Jython permet des faire des scripts dans Java.

    Scripts Web possibles si coupl avec le serveur web Zope

    C tit ti d'

  • 8/3/2019 algo_programmation

    22/32

    L'allure d'un programme dpend du type de langage utilis pour faire le

    programme...

    Toutefois, peu prs tous les langages de programmation sont bass sur le mmeprincipe :

    Le programme est constitu d'une suite d'instructions que la machine doit excuter.

    Celle-ci excute les instructions au fur et mesure qu'elle lit le fichier (donc de hauten bas) jusqu' ce qu'elle rencontre une instruction (appele parfois instruction debranchement) qui lui indique d'aller un endroit prcis du programme. Il s'agit doncd'une sorte de jeu de piste dans lequel la machine doit suivre le fil conducteur etexcuter les instructions qu'elle rencontre jusqu' ce qu'elle arrive la fin du

    programme et celui-ci s'arrte.

    Une fois appris programmer dans un langage, il est facile dapprendre programmer dans un autre les syntaxes sont diffrentes mais les principes de basedes langages sont identiques.

    Constitution d'un programme

    N ti d b d l ti

  • 8/3/2019 algo_programmation

    23/32

    La notion de variables et les types de donnes

    Dans la plupart des langages, on travaille gnralement sur des variables, c'est--dire que l'on associe un nom un contenu. On pourra ainsi appeler une variable"toto" et y stocker le chiffre 8.

    Le type de donne conditionne le nombre d'octets sur laquelle la donne est code,c'est--dire l'occupation en mmoire de cette donne ainsi que le format danslequel elle est reprsente.

    C'est la raison pour laquelle certains langages (C, Java) sont des langages typs,cela signifie qu' une variable est associ non seulement un nom mais aussi un

    type de donne qu'il faudra prciser lorsque l'on dclarera la variable.

    Certains langages acceptent que l'on associe un nom de variable n'importe queltype de donne (c'est--dire aussi bien un nombre entier qu'un caractre). Ceslangages sont dits peu ou pas typs, il n'y a pas besoin de dclarer le type des

    variables (dclaration automatique)

    Notions de base de la programmation

    Notions de base de la programmation

  • 8/3/2019 algo_programmation

    24/32

    int i = 4 ;

    type entier (entier : type prdfini int : mot cl du langage)Ici on dclare la variable i et on lui assigne la valeur 4

    String s = Bonjour ;

    type chane La variable contient la chane Bonjour . Cette variable s estconsidre (lors de la dclaration) comme une chane mme si on lui assigneplus tard des entiers.

    Les variables sont des adresses mmoires. La dclaration consiste rserver unespace mmoire cette adresse (avec taille variable selon le type), l'assignationconsiste mettre des donnes dans cet espace rserv.

    Notions de base de la programmation

    Notions de base de la programmation

  • 8/3/2019 algo_programmation

    25/32

    La syntaxe

    Les langages demandent une syntaxe rigoureuse, on ne peut donc pas crire leschoses de la manire dont on le souhaite.

    Ainsi, certains langages sont case sensitive (en franais "sensibles la casse"),cela signifie qu'un nom ne comportant que des minuscules ne sera pas considr

    comme quivalent au mme nom comprenant des majuscules. Ainsi la variablenomme "Toto" sera une variable diffrente de la variable "toto".

    Les noms de variables admettent gnralement une longueur maximale (qui

    dpend du langage) et un jeu de caractres rduit (gnralement alpha-numrique:abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ, 1234567890)

    Ainsi, un espace (" ") est en ralit un caractre part entire, appel caractrespcial). Il est ainsi rare qu'un langage accepte des caractres spciaux dans un

    nom de variable ! (sauf exception comme _ )

    Notions de base de la programmation

    Notions de base de la programmation

  • 8/3/2019 algo_programmation

    26/32

    Mots rservs

    Dans la plupart des langages, il existe quelques mots que l'on ne peut pas attribuer

    aux noms de variables, on les appelle mots rservs.

    Les constantes

    Les constantes sont des donnes dont la valeur ne peut tre modifie. On les dfinitgnralement en dbut de programme. La valeur que la constante contient peut

    tre de tout type, suivant ce que le langage autorise.

    Les commentaires

    Il est gnralement bon de pouvoir ajouter dans un programme des lignes de textequi ne seront pas prises en compte par le compilateur ou l'interprteur. Ces lignesde textes sont gnralement prcdes (ou encadres) par des caractresspciaux. Les commentaires servent clarifier un programme en donnant desexplications. Ils serviront si jamais une autre personne essaie de comprendre lefonctionnement du programme en lisant le fichier source, ou bien la personne quil'a cr si jamais il relit le fichier source quelques annes aprs l'avoir crit...

    Notions de base de la programmation

    Notions de base de la programmation

  • 8/3/2019 algo_programmation

    27/32

    Les instructions

    L'instruction est l'lment cl de l'ordinateur car c'est elle qui permet de spcifier auprocesseur l'action effectuer.

    Une instruction est gnralement compose de deux lments :

    - l'oprateur: action effectuer par le processeur

    - la ou les oprandes: une ou plusieurs donnes sur lequel on va effectuer

    l'opration

    Notions de base de la programmation

    Notions de base de la programmation

  • 8/3/2019 algo_programmation

    28/32

    Les types d'oprateurs :

    On distingue gnralement deux ou trois types d'oprateurs :

    - Les oprateurs unaires: ce sont des oprateurs qui n'admettent qu'une seule oprande

    - Les oprateurs binaires: ce sont des oprateurs qui admettent deux oprandes (binaire dsigne le

    nombre d'oprandes manipules, l'addition, souvent note +, est donc un oprateur binaire)

    - Les oprateurs ternaires: ce sont des oprateurs qui admettent trois oprandes (les oprateurs

    conditionnels sont par exemple des oprateurs ternaires)

    Les oprateurs peuvent tre aussi rpartis selon plusieurs catgories selon le type d'action que leur

    excution dclenche :

    - les oprateurs arithmtiques +, -, *, /, ^ (puissance), / (division entire), % (modulo)

    - les oprateurs de comparaison == (gal), != (diffrent), >, >>,

  • 8/3/2019 algo_programmation

    29/32

    Les priorits des oprateurs:

    Dans chaque langage il existegnralement des priorits d'valuationdes oprateurs, afin que l'ordinateursache dans quel sens valuer lesoprateurs lorsque plusieurs d'entre euxsont prsents dans une mmeexpression

    Notions de base de la programmation

    Notions de base de la programmation

  • 8/3/2019 algo_programmation

    30/32

    Instructions de contrle:

    Branchement conditionnel :

    - if then else ( si alors sinon)

    Les instructions du bloc "si" ne sont excutes que

    si la condition est vrifie.

    Les instructions du bloc "sinon" sont excutes

    seulement dans le cas contraire.- switch case

    Boucle conditionnelle :

    - while do ou do while ( fait tant que )

    Boucle inconditionnelle

    - For

    Une condition est une expression boolenne. Elle est vrifie si elle vaut vrai (true).

    Oprateurs relationnels : =, =, /= ; et (and), ou (or), non (not); ou exclusif (xor); et

    alors (and then), ou sinon (or else); dans (in), dehors (not in)

    Notions de base de la programmation

    condition

    bloc "sinon"

    instructions

    bloc "si"

    instructions

    Notions de base de la programmation

  • 8/3/2019 algo_programmation

    31/32

    La notion de fonctions:

    Une fonction est un morceau de code qui permet de rsoudre un sous-problme duproblme trait

    La dcomposition du code en tches et sous- tches, le rend plus modulaire. Le

    programme est plus clair, plus lisible, plus aisment modifiable

    Les fonctions cachent les dtails dimplmentation : il suffit de savoir ce quelles font

    et non comment elles le font

    Lorsqu'une fonction est dclare dans un programme, il faut 3 lments:

    Nom de la fonction

    Liste des types darguments

    Type de retour de la fonction

    Les procdures sont semblables aux fonctions, mais ne retournent rien (pas de donnes

    renvoyes)

    Notions de base de la programmation

    Notions de base de la programmation

  • 8/3/2019 algo_programmation

    32/32

    p g

    Un bon programme:

    Aisment lisible donc bien spcifi, bien document

    Clair, donc bien structur

    Aisment modifiable

    Facile tester, dbugger

    Robuste (erreurs de lutilisateur)

    Correct

    Efficace