Sunteți pe pagina 1din 32

Algorithmique et programmation

Algorithmique

- 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 dans un langage descriptif, on parle gnralement d'analyse pour dcrire le processus par lequel le problme est formalis. * Le langage de description utilis pour crire le rsultat de l'analyse est appel algorithme. * L'tape suivante consiste traduire l'algorithme dans un langage de programmation spcifique, il s'agit de la phase de programmation.

Algorithmique
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 un langage 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 de programmation, 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 donc important de lever toute ambigut - concis: un algorithme ne doit pas dpasser une page. Si c'est le cas, il faut dcomposer le problme en plusieurs sous-problmes - structur: un algorithme doit tre compos de diffrentes parties facilement identifiables

Les langages de programmation


Le langage de programmation est l'intermdiaire entre l'humain et la machine, il permet 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 doit donc respecter une syntaxe stricte. Un algorithme peut toutefois aboutir plusieurs programmes. On appelle langage informatique un langage destin dcrire l'ensemble des actions conscutives qu'un ordinateur doit excuter. Un langage informatique est ainsi une faon pratique pour nous (humains) de donner des instructions un ordinateur. Les langages servant aux ordinateurs communiquer entre eux n'ont rien voir avec des langages informatiques, on parle dans ce cas de protocoles de communication, ce sont deux notions totalement diffrentes. Un langage informatique est rigoureux : chaque instruction correspond une action du processeur.

Les langages de programmation


Un programme informatique est une succession d'instructions excutables par l'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 de programmation pour crire de faon lisible, c'est--dire avec des instructions comprhensibles 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 machine pour 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;} 00101110 11001100 00110010

compilateur

Les langages de programmation


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 devra correspondre au langage choisi : chaque langage de programmation son compilateur (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 ou librairies) auquel le programme fait rfrence mais qui ne sont pas stocks dans le fichier source. Puis il cre un fichier excutable qui contient tout ce dont il a besoin pour fonctionner de faon autonome, (sous les systmes d'exploitation Microsoft Windows ou MS-Dos le fichier ainsi cr possde l'extension .exe)

Les langages de programmation


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 en deux tapes :

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

Les langages de programmation


Il existe diffrents niveaux dans les langages de programmation: Les langages de niveau lev sont des langages plus facilement compris par lusager, par exemple pour prendre le contenu dune zone de mmoire A et le mettre dans une zone de mmoire 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


L'assembleur est le premier langage informatique qui ait t utilis. Celui-ci est trs proche du langage machine mais reste comprhensible pour des dveloppeurs. Toutefois, un tel langage est tellement proche du langage machine qu'il dpend troitement du type de processeur utilis (chaque type de processeur peut avoir son propre langage machine). Ainsi, un programme dvelopp pour une machine ne pourra pas tre port sur un autre type de machine. Le terme portabilit dsigne l'aptitude d'un programme informatique a tre utilis sur des machines de types diffrents. Pour pouvoir utiliser un programme informatique crit en assembleur sur un autre type de machine, il sera 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 facilit d'adaptation sur des machines de types diffrents

Les familles de languages de programmation

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 ni de langages procduraux ni de langages objets. Ils sont dsutes mme si quelques 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 souplesse tant donn le caractre squentiel des instructions. Il ont t remplacs par les langages fonctionnels.

Les familles de languages de programmation


Langages fonctionnels Un langage fonctionnel (ou langage procdural) est un langage dans lequel le programme est construit par fonctions, retournant un nouvel tat en sortie et prenant en entre la sortie d'autres fonctions par exemple. Ce type de langage permet 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'en simplifier 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 actions pour toute une classe et chaque objet pourra les effectuer.

Interprtation et compilation
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 faut donc 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 souples car on n'a pas besoin recompiler si on fait des modifications.

Interprtation et compilation
Langage compil Un programme crit dans un langage dit compil va tre traduit une fois pour toutes par un programme annexe, appel compilateur, afin de gnrer un nouveau fichier qui sera autonome, c'est--dire qui n'aura plus besoin d'un programme autre que 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, la traduction 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 que les modifications prennent effet. Un programme compil a pour avantage de garantir la scurit du code source. En effet, un langage interprt, tant directement intelligible (lisible), permet n'importe qui de connatre les secrets de fabrication d'un programme et donc de copier le code 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

Langages intermdiaires Certains langages appartiennent en quelque sorte aux deux catgories (LISP, Java, Python, ..) car le programme crit avec ces langages peut dans certaines conditions subir une phase de compilation intermdiaire vers un fichier crit dans un langage qui n'est pas intelligible (donc diffrent du fichier source) et non excutable (ncessit d'un interprteur). Par exemple, les applets Java, petits programmes insrs parfois dans les pages Web, sont des fichiers qui sont compils mais que l'on ne peut excuter qu' partir d'un navigateur.

Exemples de langages de programmation


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 ou pour la programmation de machines industrielles. Basic Ce langage trs ancien (1964) a t amlior par Microsoft, avec un environnement de dveloppement complet (Visual Basic). C'est un langage qui est souvent utilis pour faire des scripts sur les applications de Microsoft (Word, etc...) Pascal Vieux langage (1970), amlior avec les objets, qui impose une programmation structure stricte. Pour l'apprentissage ou crer des applications client/serveur avec Delphi et Kylix.

Exemples de langages de programmation

Lisp, Prolog Langages utiliss en intelligence artificielle qui traitent de essentiellement de listes. Scheme Scheme est une version modernise de Lisp. Les fonctions rcursives sont fortement utilises Fortran Un des premier langages, toujours utilis pour des tches mathmatiques. Il dispose d'une large bibliothque mathmatique.

Exemples de langages de programmation


Cobol Langage de gestion, toujours utilis sur de gros ordinateurs. Sert maintenir de vieux programmes sur les mainframes. Perl Language interprt de scripts. Utilis essentiellement pour traiter les chaines de caractres ou utilis sous forme de CGI (pages Web dynamiques). Tcl Langage de script, facile apprendre, disponible sur toutes les plateformes. Pour faire des scripts (type unix), ventuellement graphique (avec TK) et portable.

Exemples de langages de programmation


C Offre une grande libert, mais aussi un bon exercice de dboguage cause des pointeurs et la gestion de la mmoire. Programmation laborieuse mais programmes rapides. Surtout utiliss pour la programmation systme. C++ C'est du C plus les objets, les templates, une bibliothque tendue, la surcharge des oprateurs. Pour la programmation systme comme C mais permet de plus grand projets et la cration d'applications. C# (C Sharp) Concurrent de Java, tourne sur .Net ou compatible. Plus facile que C++. Peut partager les ressources de .Net avec d'autres langages.

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 dynamiques cot 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. Permet de produire des pages Web dynamiques partir de donnes sous serveur Windows seulement. SQL C'est LE langage d'interrogation de bases de donnes (ce n'est pas un langage de programmation proproment parl)

Exemples de langages de programmation


Smalltalk Un des premiers langages orients objets. Ne peut fonctionner sans son environnement 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 des programmes compacts. Langages original (cr par Carl Sassenrath)

Exemples de langages de programmation


Java Equivalent du C++ ou C# mais conu pour tre portable. Applications multiplateformes (mais plus lentes que les applications natives). Peut galement tre utilis pour programmer des services Web (servlets, jsp). Ruby Conception avec la simplicit en vue. Il est interprt et donc une bibliothque propritaire, mais extensible. Python Un langage interprt moderne avec des fonctions intgres puissantes et la simplification 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

Constitution d'un programme


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 mme principe : 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 haut en bas) jusqu' ce qu'elle rencontre une instruction (appele parfois instruction de branchement) qui lui indique d'aller un endroit prcis du programme. Il s'agit donc d'une sorte de jeu de piste dans lequel la machine doit suivre le fil conducteur et excuter 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 base des langages sont identiques.

Notions de base de la programmation


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 dans lequel 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 quel type de donne (c'est--dire aussi bien un nombre entier qu'un caractre). Ces langages 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

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 est considre (lors de la dclaration) comme une chane mme si on lui assigne plus tard des entiers. Les variables sont des adresses mmoires. La dclaration consiste rserver un espace mmoire cette adresse (avec taille variable selon le type), l'assignation consiste mettre des donnes dans cet espace rserv.

Notions de base de la programmation


La syntaxe Les langages demandent une syntaxe rigoureuse, on ne peut donc pas crire les choses 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 variable nomme "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 caractre spcial). 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


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 dfinit gnralement 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 texte qui ne seront pas prises en compte par le compilateur ou l'interprteur. Ces lignes de textes sont gnralement prcdes (ou encadres) par des caractres spciaux. Les commentaires servent clarifier un programme en donnant des explications. Ils serviront si jamais une autre personne essaie de comprendre le fonctionnement du programme en lisant le fichier source, ou bien la personne qui l'a cr si jamais il relit le fichier source quelques annes aprs l'avoir crit...

Notions de base de la programmation


Les instructions L'instruction est l'lment cl de l'ordinateur car c'est elle qui permet de spcifier au processeur 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


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 - les oprateurs de comparaison - les oprateurs logiques - les oprateurs de bits - les oprateurs d'affectation +, -, *, /, ^ (puissance), / (division entire), % (modulo) == (gal), != (diffrent), >, <, .<=, >= & (et), | (ou), ! (non), xor (ou exclusif) <<, >>, >>>, <<< =, +=, -=, *=, %=, <<=, >>=, >>>=, &=, ^=, |=

- les oprateurs conditionnels, les oprateurs squentiels, ...

Notions de base de la programmation

Les priorits des oprateurs: Dans chaque langage il existe gnralement des priorits d'valuation des oprateurs, afin que l'ordinateur sache dans quel sens valuer les oprateurs lorsque plusieurs d'entre eux sont prsents dans une mme expression

Notions de base de la programmation


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

condition bloc "si" bloc "sinon"

instructions

instructions

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


La notion de fonctions: Une fonction est un morceau de code qui permet de rsoudre un sous-problme du problme 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


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

S-ar putea să vă placă și