Vous êtes sur la page 1sur 24
‘mi carray{1.2,1.3) of imeg ‘m2 carray|1.3,1..4] of integer ; ‘at aray[1.2,1.4] of integer; iJ integer begin ‘Lecture dela premi_ere matrice:} for i= 1102 do for} = 1103 do readin (mi, j)s (Lecture de la deuxi_eme matrice:} foris= 1103 do forj== 1 to4 do readin (m2 i) {Caloul du prod) fori = 1102 do for j=1 t04 do to3do mati} ml fik]*m2Ik {Affichage du r_esultat:} t02.do 91 vies (aves soluons propos es) Begin vee rlind ind:=ind¥1; End: iffind<15 then veer=vee_n, ‘ End; Procedure aflicher(vee:TAB): Var isinteger; Begin Fori=1 To 15 Do Write(veclil "9s End; Begin Tire tableau(T); garder( Ts regrouper( I); afficher(); End. Solution 17 1 Program TRIANGLE: 2 Uses Wincrt; 3 Var 4 cstrings 5) Procedut ie (Var estring); 6 Begin 7 Re Witla (Tape une cha ne Read (ts 9 Until (length (ch) >=3) 10 End; 1 Procedure afficher (chstring): 12 Varinteger 1B Begin 14 Foris= 1 To length (ch) Do Writein (Copy (ch 1, 15 End; 16 Begin 17 ire (oh 18 affcher (ch); 19 End Solution 18 1 Program mate chi While (post Begin pos’ ".ch): copy(ch,L,pt-I}+"" + eh: delete(ch,|. pt); End; chi ch eh renverser:=chl; End; Begin Writeln( Tapez votre phrase’); Readin(phrase); ph:=renverser(supprimer{phrase)); Writeln(ph); End. ch) > 0) Do Solution 16 Program ELEMENTS, DIFFERENTS; Uses WinCrts Type | TAB = Array(1-15] of integer VAR TTAB: Procedure lire tableau (Var ves: TAB); Var isinteger; Begin Fori:= 1 To 15 Do Readin(vecti)s End; Procedure garder (Var vec:TAB); Var Ends Procedure regrouper (Var vee:TAB); If vec{i] 0 Then plkinieger; Begin Writeln( Taper voir Readln(chaine}, WritelnTapez le mot recherche) Readingmot!); Writeln(Taper le mot_aremplacee); Readin(mot2}; ‘:=pos(motl ext) Is-length(mot!); While p > 0 Do Begin Delet(chaine p.); Inser(mor2chaine,p), (mot chain); Ends \Writela¢Chaine apr_es modification: caine}; End, Solution 15 Program RENVERSEE; ‘Uses WinCrt; Var hase phisrings Funeton supprimer(hstrng)string; Var pt Li integer, Begin lenght while (<= H1) do begin it(ehfi]*) and hfe] xhon begin delete 11); Irlength(chs end else iit ends suppeimer-ch end; Funetion renverse (ch:string) string: Var primeger, hissing: Begin Solution 12 Program POSITION 12 Uses WinCrt; Var «char; chstring; pl, p2integer, Begin Writeln(Tapez un caract ere’); Realn(©); ‘Writetn(Tapez. une cha ne de caract_ ere); Readln(ch): slesch) ms senncontchel 41 ength(eh) = pI): Writeln(La premi_ere position de “," dans ‘Writein(La deuxi_eme position de" End. Solution 13 Program EXISTANCEs Uses WinCrt; ‘Type ‘TAB = Amay[1.40] of integers Var i Tfip> max then max:~Tlis itd; i Tli-max then begin oce:=ocet ind:=is end; Writeln(a valeur maximale, WritelnElle existe ove, Writela(Elle se trouve _a Findice: End, Solution 14 1 Program rechercher_remplacer; 2 Uses WinCrt, 3 Var 4 chuinemmotl,mot2:string: OO 10 until (50); 1 end. Solution 9 | PROGRAM somme_pair impair; 2 Uses winert, 3 VAR 4 is is_pr integers 5 Begin 6 forim1 1020 do 7 if imod2)-0 then s pr=s_p+i 8 elses & : 9 writelu¢la samme des nombres pairs compris entre 1 ct 20 est!.s_P)s 10 \write(la somme des nombres impairs compris entre I et 20 sts); 1 end. Solution 10 PROGRAM diviseurs: 7 foris1 0 (n div 2) do 8 f(a mod i}-0 then writl 9 end. Solution 11 1 Program SUCC_PRED; 2 Uses WinCrt; 3 Var 4 espichar; 5S Begin 6 Writeln(Tapez un earact_ere'); 7 Readin(e); 8 sem suce(e): p= pred(e)s 9 Writeln¢ Le suecesseur de "6." est "s,s 10 Writeln( Le pr_ed_ecesseur de". est "py" 1 End, i else if delta then tein ‘riln(slutiondoubl’); writen? solution 3; x= Cbesgntdels))2* 22> (bisgrdea)/2"8; swrte (xt xh! 22°32; end; end Solution 8 1, Fordo: PROGRAM affich_entier Uses winert VAR i: imtegers Begin foris=1 10 500 swritelag i=": end. 2, whiledo: PROGRAM affich enter; Uses winert VAR 3. repea-uni 1 PROGRAM affch_entier 2 Uses wien 3 VAR 4 icimegers 3 VAR Ts. integer; 4 BEGIN 5 write(Enner le temps exp 6 readline; 7 h=T iv 3600; 8 ms=(Tr mod 3600 ) iv 60 ; 9 s=-(7-mod 3600) mod 60; 0 1 een scones ‘write temps est deh, "heures m, ius END. Solution 6 1 PROGRAM moyenne tus 2 Uses winet 3 VAR nl,a2amoy : eal 4 el.e2: integer, Ss BEGIN 6 — writelo(Entrer la premiere note: 20 7 readin(nl) 8 witela( Entre le coefficient du premier module: 9 readin(el) 10 sriteln(Entret Ia deuxi_eme note: 20°) 11 readin(n2): 12 writeln(Entrt le coefficient du deuxi_eme module 5 13 readln(e2) 14 moy:= (al tel nd%e2)(61+e2); 15 ifmoy>=10 then witeln(moyenne 16 cele writeln¢moyenne= 0," 17 end. may, => _ etugiant jou _c) Solution 7 PROGRAM eq 2 des: ‘Uses winerts VAR box x2, delta: roa wwriteing*9* R solution dune _equation da: Write oe ‘Witelnentrer les valeurs de, b ee?) 10 Reade) I) dtte-b) een (0) then f(e~Ohenwrtetout nombre est une solution) 2 ‘se wrt solution impossible’) B else (La solution et, 0) “ else Begin elt” sqrtd}4atcs if delta<0 then write solution impossible) Solution 4 1 PROGRAM produit 2 Uses winert 3° VAR xy.p integer, 4 BEGIN 5. writen Entre deux nombres: 6 readln(sy) 7 pexty: 8 itped then write’produit ma) 9 ese 10" itp then write produit posit?) 0 else write produit n_egatit): 12 END. ‘Autre solution: 3 PROGRAM produit; 2 Uses winert 3 VARxy integer: 4 BEGIN S—writela(nurer deux nombres 6 readin(xy)s 7 8 ° 0 Tandor-0 thea wala) st) Ose dyand(y>0)jor(x-O)and=0) then wasn produit post or tse witli prot egal) END. Solution 5 1 PROGRAM temps: 2 VAR T,smm1,h integers 3. BEGIN “4 ite(Entrer le temps exprim_¢en seconde 5 readin(T); 6 7 8 mod 60; ml = Tdiv 60; Ona transform_e notre temps Ten minutes et seconds » 9 eleatdone ee nombre mt de minutes qu'il faut maintenant transformer 10 cen heures et minutes *) ml mod 60; 12 hemi div 60; 13 writelaCLe temps est de," heures’, m, “minutes et, s,"secondes.); 14 END. ‘Autre solution: T-h*3600+m*60+s PROGRAM temps: Uses wine ) Dans la partie instructions , nous trouvons instruction : 2-3; mais Ia variable Zest plus declar ee. Le programme correct est PROGRAM test; vwrtla() 5 END. 1 2 . 3 6 1 8 9 Solution 3 PROGRAM ealeul: Uses winert; ‘VAR x.cube care val_abs: integers + carereal BEGIN vwritln¢Entrer un nombre); readin); carre=ser0): caesar); cuber-x* eure; fx> O then val fae val_abs =; writen cat de est are) ‘riteln a racine ear cedex estas) writeln(e cube dex et’ cube); ‘rite(La valeur absolue de, x," st vals); end, PROGRAM age; Uses winert; VAR an_naisge : integer, BEGIN ‘writeln( Ener votre ann_ee de naissanee(exemple:1980) readin(an_nais): sge:=2018-an_mais, ‘writeln( Vote “age est" age); ©) (oare-sysqetsyty-3) Solution 2 - 1. if.a= posit); 14 ifletat= true then wrteln('Le nombre, a, est posit’) 15, else wrteln( Le nombre’, a, 'et n_egail) 16 end. Solution 3 solu 1 PROGRAM echange_versiont; 2 Uses Winert; 3 VAR 4 xl,32, xB: intoger; 5 PROCEDURE echange; 6 BEGIN 7 : 8 9 DNIPF BOUAKEILANGAGE PASCAL ANNE ACADEMIQUE 2022-2023 B SHAPTTRE 6 _Lessous px 1's PROCEDURES ET FOS 68 Différences entre fonctions et procédures Fonsons aaa “Les fonts ne pent asi que es “tes pwidues peuvent oie de ie ‘alee teats domes 08 données/résultats. ~ Les etn pent communes sense Lee pegmeme a | ~ Letgrosiic pauvent ome Flam ves ure lec reo eae estas a prosrame 3- fond woven pan) oe wes es pores ta Sodonncorets Une fonction pple a Finder ne . Uneaten ree trac | Lapel dane procter we ie rounds pao. aor cnatememe, On ne pea DSS ‘Sharon procs mien fue > struction 6.9 Exercices d'application Exercice 1 Ecrite un programme pascal qui permet de caleuler ik ~ (nab Exercice 2 Feri un programme Pascal qui content une Fonction qui teste si un nombre est posit ou négatif Exercice 3 Ferire un programme Pascal qui appelle une procédure qui fit 'échange du contenu de deux variables entires. Solutions Solution 1 PROGRAM factorel Uses wincrt VAR ign INTEGER; fact: real _DNZIPE ROUAKE/LANGAGE PASCAL ANNEE ACADEMIQUE 2021-2023 LLappel dune fonction se ft dans une expression, exaetement comme une variable mats suivie par les parametres entre parentheses. séparés par des virgules. Remarques __ On doit préciser dans la définition de la fonction le type du résultat 2 retoures Par [a fonction. On doit affctr le ésutat dela fonetion au nom dele foncion avant afin partie instructions e la fonction. dela Dans une fonetion, le passage de parameires sft par valeur __ Une fonction sans paramétnes n'a aucun intéret. Exomple:, 1 PROGRAM fonetion; 2 Var 3 X:real 4 5 FUNCTION affich(a : REAL):REAL 6 1 8 9 10 n R Leméme exemple peut éte éerit sans utiliser la variable globale x, en appelant la fonction affich( directement dans le write PROGRAM fonction: FUNCTION affich(a : REAL):REAL 5 BEGIN affich == S*sqrt(a)*+2; END; BEGIN writeaffich)); END. DNIPE BOUAKELANGAGE PASCAL -ANNEE ACADEMIQUE 2022-2023 n Over evar quand len faut | esura Penson, Exemple Appel due prosédure Prodi, permet de cau e prot de deux nombres de reavoyerle état au programe principal Laligne duppel est la suivante: Produit (a1, Hd) 1. Sie procedure ext defnt comme suit Jc verz eal: eur la compilation caused paramétre x ou une variable et attend et est ‘une expression qui est passée. 1 PROCEDURE Produit (varx : ray: 2. Sila procédure est init comme suit 1 PROCEDURE Produit (s.y52 ra): Erreur & Tesécuton a cause du var oublie devant le paramdte z dn rot pas de result __Redoolrer un paraméte comme variable locale! ereur la compilation. Exemple 1 PROCEDURE Produit (x,y steak: varz: eal 2 VAR 3x srw (redéelaration du poramére x: ereur) 4 BEGIN 5 nexty: 5 END: 6.7 Les fonetions 674 Definition ‘Une foncion est une séquence instructions de programme laquelle on asoeie un nom spécfiquereprésentée par un deniieateur, un type qui specific fe resulta four par cet fonction et des paramétes. Ans ue fonction peut te voe comme une proeédue qui me retourne gun seul rsulat aa programme appelant. La notion de fonetion en Pascal et ‘assez semblable a celle de fonction en mathématiques 6.72 Syntaxe de déclaration FUNCTION Nom_fonction (Noms param. etre: Type param etre): Type_resulat; VAR’ {Declaration des variables LOCALES (ou constantes via CONST) 3) BEGIN Liste des instractions; ‘Nom _fonetion >» Valeur resultat END; DWvIPF nOUAKEILANGAGE Pascal {AONB ACADENIQUE 20222028 uarry ES SOUS PROGRAMMES: PROCED pONcTiONs 1 PROCEDURE Nom_procedure (VAR Nom_param_etre : Type_param-c Coste var qui dit si le passage se fait par valeur (pas de var) ou par adresse (présence du var). Exemple PROGRAM Passage_par_adresse: PROCEDURE Calcul(var ainteger BEGIN ae 2tatls \wrtela paramésre passé par adresse a="): END; BEGIN x6 . ‘writeln (Valeur dex avant Fappel dela procédure Caleul x= 'x)s Caleul(s); , ‘writeln Valeur dex aprés Pappel de la prosédure Calcul, x=") END. _Aprés exéeution, ce programme aiiche : ‘Valeur de x avant 'appel de la prooédure Cateul, x= 6 pramétre passé par adresse a= 13, Valeur dex aprés Fappel dela procédure Calcul, x= 13. ‘Diapés le resulta, on remarque que Fjout di mot elé var dans Pent de Ia procédure Calcul entrang le changement de la valeur de la variable x. _—Lenassage de parame peut dr sum dans ce petit abla: Passage par valeur Passage par adresse Absence du motelé yar) | Présence du mot elé_¢. var | Quelques erreurs déviter: — Mette un var quand il nfen faut pas! erreur la compilation. DNAPE BOUAKE/LANGAGE PASCAL tres par valeur er aire SoM ap ee en tre ‘oot eSpeee il ene niece Scope nlite er ay ae 1 PROCEDURE Nom_procedure (Nom paras: Type. para.) xemple PROGRAM Passage par valeur Uses wien VaR scintepet PROCEDURE Caleua:inege®): REGIN = Dat; 3 tela paramere passe par valeur a="); END; BEGIN Bo x6 . 13. 8G leur dex avant fapel de laproctiure Cale 15 Caleul(s); . 15 Calle eur dex apts Rapp del procure Cale 3 17 END, _Apr’sexceution, ce programme ache “Valeur de x avant 'appe de a procédure Cal ees paseée par valeur a= 13 “Valeur de + pees Happel dela prosédare Calcul x= 6 tappel dela procédure Caleul na aucun effet sur ‘raped le résula, on remarque que! la variable x. 662. Passage de paramétres par adtesse Cetype de pasage de paratues prmet upogranme apa area cre apple ct viewers. A topple paramere ell at aa une expression oy une constant), Cet fares mmr 6 ance tanamise ans ar. Cte de passage et ioe pou nee o> aa ae ame pringpal u anes modules, ca le transfet de information ca re es dun sens, ctute mification dy paraméte forme! implique at iguenent a modiiation del valeur du paramere eect. {a dclaraion dun paranétre passée par aess etn suivante: DNIPF BOLAREANGAGE PASCAL “NEE ACADENIQUE 20222028 oe

Vous aimerez peut-être aussi