Structures SequentiellesAvertissement : version p´eliminaire1 Types Simples vs Types ComplexesUntype estun ensembled’´el´ementssimilaires: leur repr´esentationen machineet lesop´erationssur ces ´el´ements sont communes.Une variable d’un langage de programmation repr´esente un ´el´ement d’un type du langage.1.1 Type simplesLes types simples sont les briques de bases qui serviront a` construire les types plus complexes.Selon les langages de programmation, ces types sont plus ou moins nombreux.– type int : les entiers repr´esent´essur 32 bits. Les op´erations sont les op´erationsarithm´etiquesusuelles.– type long : les entiers de longueur quelconque (jusqu’`a limite de la m´emoire allou´ee).– type float : les flottants rep´esent´es sur 64 bits selon la norme IEEE. Les op´erations sont lesop´erations arithm´etiques usuelles.Dans des langages comme C, existent le type char (entiers sur 1 octet, codant les caract`eresde0 a` 255), double (repr´esentation des flottants sur 128 bits). Le type long correspond aux entierssur 64 bits.Surchargedesop´erations: le mˆemesymbole+ estutilis´epour additionner deux entiersoudeuxflottants alors que les op´erations utilis´ees sont totalement diff´erentes. On dit qu’il y a surchargede l’op´eration et que + est une op´eration polymorphes (plusieurs-formes).D´eclaration de type : en python, il n’est pas utile de d´eclarer le type d’une variable. L’in-terpr´eteur trouve `a la vol´ee le type correspondant a` la valeur affect´ee `a ...
1.1 Typesimples Lestypessimplessontlesbriquesdebasesquiservironta`construirelestypespluscomplexes. Selon les langages de programmation, ces types sont plus ou moins nombreux. – typeinthm´eari:tlestiqus.it2br3suest´ense´rpersreitneseionseratsop´ntlesnostaoi´preeLos usuelles. – typelongtienes:lonelsdereuqrueug(euqnocl).eejusqu’`alimitedeal´mmeioerlaol´u – typefloatnossnoitare´poseestlstes46ibssrutne´EE.LmeIEanorlonlle:toflstnatpersese´ op´erationsarithm´etiquesusuelles. DansdeslangagescommeC,existentletypechar(entierssur1octet,codantlescaracte`resde 0`a255),double(repr´esentationdesflottantssur128bits).Letypelongcorrespondauxentiers sur 64 bits. Surchargedesope´rations:lemˆemesymbole+estutilise´pouradditionnerdeuxentiersoudeux flottantsalorsquelesope´rationsutilis´eessonttotalementdiff´erentes.Onditqu’ilyasurcharge del’ope´rationetque+estuneop´erationpolymorphes(plusieursformes). D´eclarationdetype:enpython,iln’estpasutiledererad´eclle type d’une variable. L’in terpre´teurtrouvea`lavol´eeletypecorrespondanta`lavaleuraffect´eea`lavariable.Celan’est paslecasdansdeslangagescompile´scommeJavaouC,leprogrammeurd´eclare(aude´butdu programmeeng´ene´ral)letypedechaquevariable. Il est possible de forcer uneconversionde type : typeforc´e(x)transforme la valeur en une valeur de typetpy´ceferoquand cela est possible (transformerunintenfloatparexemple).Attention,celapeutconduire`auneperted’information (par exempleint(x) sixvaut 3.2). Attention:l’absencedede´clarationtypageexplicitepeutconduire`adeserreurs. moyenne=0 n=1 nb=input("donnernbel`eve",) while n<=nb: note=input("donner note",) moyenne=moyenne+note n=nb+1 print moyenne/nb Donneraunemoyennede10pournb=2etlesnotes1110:touteslesvaleursdonn´ees´etantdes entiers,l’ope´rationutilis´eeestladivisionentie`re. Exercice 1Que se passetil si on remplaceprint moyenne/nbparfloat(print moyenne/nb). Trouverdeuxmani`eresdecorrigerleprogrammepourqu’ildonnelebonre´sultat.
1
1.2Typescompos´es Lestypessimplessontinsuffisantspourde´crireles´ele´mentsquiinterviennentenprogramma tiond`esqu’one´critdesprogrammeunpeucomplexes.Pythonestunlangageobjetquipermet d’utiliser(etaussided´efinir)des´ele´mentsstructure´scommeuntype:repre´sentationetope´rations communes. Uncompteenbanqueestuneentit´esurlaquelleonpeutfairelesope´rationsdebiter,cred iter,soldeluetocsnoprumpteducoolderlesitarpsnoseC.e´pordoiesveeuavntoisnpre´ocdntiqui sp´ecifientquandonpeutleseffectuerparexempledebiterne sera possible que si le solde est positif. Definirainsiuncompteenbanquerevienta`d´efiniruntype:ondonneunnompourletype etlesop´erationsqu’onpeuteffectuer.Onpeuteˆtrepluspre´cisetde´crireleseffetsdesop´erations. Untypede´finiainsiestuntype abstrait. En programmation objet on parlera d’uneclasse abstraite Onpeutvouloirpre´ciserlamanie`redontlecompteenbanquefonctionneenpre´cisantqu’ily aunnum´erodecompte,unsoldeetunnomd’utilisateuretcommentlesope´rationsmodifieces ´ele´ments.Celarevienta`donneruneimpl´ementationdutype. Exemple : Le typeCompte en banqueqnabneetpmocnutifin´edtaue,rnud’utilisue:unnom num´erodecompteetunsoldecourantetdesope´rationsdebiter, crediter, solde. Unclasseestsimplementuntypeetunobjetseraune´l´ementparticulierdecetteclasse.La classeComptenbanpteenecfiodm´ettlmnoitsnuuqeeunmmcoretuuctrasetpmocselsuota`e e´le´mentdecetteclassepourlequellesvaleurstilisatenomd’uoredocpmrun,mue´edlos,etsont pre´cise´es. Lese´l´ementscommedmu’onsatetilium´eur,nedorpmocs,etedlontsopeapesl´attributset les ope´rationssontappel´ees´mteoheds. L’appelatione´sotypecompse´dengiotartyutnopeimnse(plnuboodcnL.seej)tratiop´eons utilise´esserontnote´esf(x1, . . . , xn) qui calcule la valeur defavec les argumentsx1, . . . , xnou o.m(x1, . . . , xn) (avecoun objet de la classeCdehoetm´laqieupalpq)iumde la classeCtejbo’la` odeatobl’tjemne(fiidoltnate´’o). Dans un premier temps nous n’utiliserons que les fonctions classiques qui s’invoquent avec l’expressionf(exp1, . . . , expn) qui retourne la valeur de la fonction (ou font un effet de bord).
1.3Acc´edera`lavaleurd’une´le´ment Un´ele´mentd’untypesimpleaunevaleurquiestunentier,flottant,...Cettevaleuraunetaille standardfix´eea`l’avance(32bits,64bitsparexemple).Unevariabledecetypeauradoncune valeurquiluiestdirectementassoci´ee. Une´l´ementd’untypecompose´estpluscomplexe:ilpeutcorrespondre`aplusieursattributs etplusieursope´rationsde´finies`apartirdecesattributs.L’emplacementm´emoirecorrespondant est donc de taille plus important que celui d’un type simple (en principe).
2 Chaines Letypechaineestuntypecompos´e.Unechaineestunesuiteordonn´eedecaracte`res.Le typecaracte`ren’existepasenpython,uncaracte`reestunechainer´eduitea`uncaracte`re.Une particularite´decetypeestqueson´etatn’estpasmodifiable(nonmutable). Chaine : ’toto’ ”est une chaine” Ope´rationsusuelles: –Concate´nation:note´e+ ch1 +choielrenvinefachaeeedro´m2chea´eent´cvenoacc1ch2 ch1=’un,’ ch2=’deux’ print ch1+ch2 un, deux