Sujet 3:13/05/2005 :14 h

Documents pareils
Examen Médian - 1 heure 30

Corrigé des TD 1 à 5

Programmation structurée et algorithmes de base en Pascal

Algorithmes et programmation en Pascal. Cours

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Licence Sciences et Technologies Examen janvier 2010

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Enseignement secondaire technique

Recherche dans un tableau

0 si a=b. Si a^ et b^ sont deux éléments différents du même anneau, alors le résultat de

Représentation d un entier en base b

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

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

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

L ALGORITHMIQUE. Algorithme

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

1) Information sur le logiciel et la notice 2) Le tableau de bord 3) Les devis 4) Les factures 5) Les factures d acompte 6) Les avoirs sur facture

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

Algorithmique & programmation

Algorithmique et Programmation, IMA

1. Structure d'un programme FORTRAN 95

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

STAGE IREM 0- Premiers pas en Python

V- Manipulations de nombres en binaire

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Activateur à clavier et moniteur HC/HS/HD/L/N/NT4608 Notice d emploi

Les opérations binaires

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)

Découverte du tableur CellSheet

Architecture des ordinateurs Introduction à l informatique

Système d alarme Guide Utilisateur

MINISTERE DE L ENSEIGNEMENT TECHNIQUE ET DE LA FORMATION PROFESSIONNELLE. (Pour l obtention du diplôme d analyste programmeur)


Compléments de documentation Scilab : affichage de texte et formatage de nombres

Cours Informatique Master STEP

Conversion d un entier. Méthode par soustraction

INSTALLEZ VOTRE DISQUE DUR CANAL

Chapitre 1 I:\ Soyez courageux!

Compilation (INF 564)

TD3: tableaux avancées, première classe et chaînes

Algorithmique et programmation : les bases (VBA) Corrigé

Plan du cours Cours théoriques. 29 septembre 2014

Représentation des Nombres

GUIDE D INSTALLATION RAPIDE S2-FIXE-RTC

Application 1- VBA : Test de comportements d'investissements

Utilisation d objets : String et ArrayList

Organigramme / Algorigramme Dossier élève 1 SI

Initiation à la programmation en Python

Programme Compte bancaire (code)

Utilitaires méconnus de StrataFrame

Java Licence Professionnelle CISII,

Bases de programmation. Cours 5. Structurer les données

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Rappels Entrées -Sorties

Codage d information. Codage d information : -Définition-

FORD C-MAX + FORD GRAND C-MAX CMAX_Main_Cover_2013_V3.indd /08/ :12

EES : Engineering Equation Solver Fiche récapitulative - Marie-Sophie Cabot

Solutions du chapitre 4

Manuel de l utilisateur Dialog Téléphone système pour MD110, version BC11

Le langage C. Séance n 4

IV- Comment fonctionne un ordinateur?

TP5 VOIP résidentiel étendu Page 1 sur 7 Lp Ampere CLAVAUD

Téléphones IP 712 et IP 706 ADTRAN Téléphones IP 650, IP 601, IP 501 et IP 430 ADTRAN Polycom

CLB FR/ANG 7/05/04 14:52 Page 1. Clavier de commande radio CLB800HF NOTICE D'UTILISATION EKZ B

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

a) b)

Puissances d un nombre relatif

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

CORRECTION EXERCICES ALGORITHME 1

Plan du cours. Historique du langage Nouveautés de Java 7

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Date : Note /20 : EVALUATION Nom : Prénom : Classe : Traitement sur mots

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

Séance 0 : Linux + Octave : le compromis idéal

DM 1 : Montre Autoquartz ETA

I. Introduction aux fonctions : les fonctions standards

Présentation du langage et premières fonctions

Logiciel de Base. I. Représentation des nombres

Le prototype de la fonction main()

Cours d algorithmique pour la classe de 2nde

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

Rappels d architecture

IFT2880 Organisation des ordinateurs et systèmes

Programmation sous Delphi

Manipulations du laboratoire

Procédure de sauvegarde pour AB Magique

Architecture des ordinateurs

Introduction à l algorithmique et à la programmation (Info 2)

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Feuille TD n 1 Exercices d algorithmique éléments de correction

Manuel d utilisation XENTA. innovation. cubed

Fonctions de deux variables. Mai 2011

Transcription:

Sujet 3:13/05/2005 :14 h Ecrire un programme Pascal intitulé Predsucc permettant de remplir un tableau T par N chiffres compris entre 0 et 9 et d'afficher les éléments de T qui sont encadrés par leurs prédécesseurs et leurs successeurs. (1=<N<=20) N. B : Le premier élément sera affiché s'il est seulement succédé par son successeur. Le dernier élément sera affiché s'il est précédé par son prédécesseur. Exemple : Pour le tableau T suivant : T 2 3 3 5 6 7 2 8 9 8 7 0 1 2 3 4 5 6 7 8 9 10 12 13 Le programme affiche les valeurs 2, 6 Corrigé : PROGRAM SUJET3; {Vendredi : 13/05/05 : Après midi : Séance 1} USES WINCRT; TYPE TAB=ARRAY [1...20] OF INTEGER; VAR N:INTEGER;T:TAB; PROCEDURE LECTURE (VAR D: INTEGER; VAR V: TAB); VAR I:INTEGER; WRITELN ('Donner la dimension du tableau'); READLN (D); UNTIL D IN [1...20]; FOR I: =1 TO D DO WRITELN ('T[',I,']='); READLN (V[I]); UNTIL V[I] IN [0..9]; PROCEDURE AFFICHE (D:INTEGER; V:TAB); VAR K:INTEGER; WRITELN('Les entiers sont : '); IF V[1]=V[2]-1 WRITE(V[1]:4); FOR K:=2 TO D-1 DO IF (V[K-1]+1=V[K]) AND (V[K+1]-1=V[K]) 1

WRITE(V[K]:4); IF V[D]=V[D-1]+1 WRITE(V[D]:4); {Le corps du programme principal} LECTURE(N,T); AFFICHE(N,T); END. Sujet 3:14/05/2005 :14 h Écrire un programme Pascal intitulé Minimum qui permet d'effectuer sur un tableau T de N éléments de type entier (5<N<20) les opérations suivantes : Saisir deux entiers positifs Ind_i et Ind_j avec (0 < Ind_i < Ind_j N) Déterminer et afficher la valeur minimale (Min) de la partie du tableau T comprise entre les indices Ind_i et Ind_j. Déterminer et afficher tous les multiples de la valeur Min sauf lui-même dans le tableau T. Exemple : T 23 11 72 80 15 24 2 48 16 1 2 3 4 5 6 7 8 9 Ind_i Ind_j Pour Ind_i = 2, Ind_j = 7 Le programme affichera : - La valeur Min est : 2 Les multiples de Min sont : 72 80 24 PROGRAM SUJET7; {Samedi 14/05/2005: Après midi :Séance 1} USES WINCRT; TYPE TAB =ARRAY[1..19] OF INTEGER; VAR T :TAB; IND_I,N,IND_J:INTEGER ; PROCEDURE LECTURE (VAR D,D1,D2:INTEGER;VAR V :TAB); VAR I:INTEGER; WRITELN('Donner votre dimension '); READLN(D); UNTIL D in [5..19] ; WRITELN('Donner vos entiers'); FOR I:= 1 TO D DO 2

READLN (V[I]); WRITELN('Donner vos positions '); READLN(D1,D2); UNTIL (0<D1) AND (D1<D2) AND (D2<D); FUNCTION MIN (V:TAB; D1,D2:INTEGER):INTEGER; VAR M,K:INTEGER; M:=D1; FOR K:=D1+1 TO D2 DO IF V[M]>V[K] M:=K; MIN:=M; PROCEDURE AFFICHE(V:TAB;D1,D2:INTEGER); VAR K,M :INTEGER; M:=MIN(V,D1,D2); WRITELN('LA valeur Min est : ',V[M]); WRITELN('Les multiples sont '); FOR K:= D1 TO D2 DO IF (V[K]<>V[M]) AND (V[K] MOD V[M]= 0) WRITE(V[K]:4); {Le corps du programme principal} LECTURE (N,IND_I,IND_J,T); AFFICHE(T,IND_I,IND_J); END. Sujet n 18(19 mai 2004 10h30) Soit T un tableau de N caractères (2<N<20). On veut écrire un programme Pascal permettant de crypter les données figurant dans le tableau T comme suit : 1. Saisir un entier X (0< X <8) 2. Convertir chaque élément de T( code ASCII) en une chaîne correspondante à sa représentation binaire sur 8 bits 3. Effectuer une rotation des chiffres binaires à droite, obtenus dans l'étape N 2, de X position(s). 4. Stocker chaque valeur obtenue suite au cryptage dans l'étape N 3 dans un tableau Tcr. 5. Afficher le contenu du tableau Tcr. On propose d'utiliser la fonction Convert permettant de convertir une valeur décimale en une valeur binaire représentée sous forme de chaîne de 8 caractères. Function convert( d:integer);string, I:integer; ch,chc: string, 3

ch:=" For i:=l to 8 do Str(d MOD 2, chc) d:=d DIV 2, ch:= chc + ch; end, convert:=ch; Exemple : Le caractère "A" a une représentation binaire égale à "0100000l". Si X==2, Alors la représentation binaire de "A" après une rotation de deux positions à droite sera : "01010000", cette valeur sera stockée dans le tableau Ter. Corrigé : {Sujet18 19 mai 2004 à 10h30} Program Cryptage; Uses Wincrt; Type Tab=Array[1..19] Of Char; Vect=Array[1..19] Of String; n,x:integer; T:Tab; Tcr:vect; Procedure Lecture( n:integer); Repeat Write('Entrer n '); Readln(n); Until n in [3..19]; Procedure Saisie(n:Integer; T:Tab); i:integer; For i:=1 To n Do Write('Entrer T[',i,'] '); Readln(T[i]); Procedure Lire_rot( X:Integer); Repeat Write('Entrer X '); Readln(X); Until X in [1..7]; Function Convert(d:Integer):String; i:integer; Ch,Chc:String; Ch:=''; For i:=1 To 8 Do 4

Str(d Mod 2,Chc); d:=d Div 2; Ch:=Chc+Ch; Convert:=Ch; Procedure Crypter(n,x:Integer;T:tab; Tcr:Vect); i:integer; Ch,Ch1:String; For i:=1 To n Do Ch:=Convert(Ord(T[i])); Ch1:=Copy(Ch,Length(Ch)-x+1,x); Delete(Ch,Length(Ch)-x+1,x); Tcr[i]:=Concat(ch1,ch); Procedure Affichage(n:Integer;T:Tab;Tcr:Vect); i:integer; For i:=1 To n Do Writeln('le caractère ',T[i],' sera crypté en ',Tcr[i]); Lecture(n); Saisie(n,T); Lire_rot(X); Crypter(n,x,T,Tcr); Affichage(n,T,Tcr); End. DATE : Lundi 16 mai 2005 (Heure : 15h30) Sur les touches (2, 3, 4, 5, 6, 7, 8 et 9) du clavier d'un téléphone portable, sont inscrites des lettres pour écrire des messages en plus des chiffres. Par exemple, sur la touche 5 sont inscrites les lettres J, K et L. - Pour taper la lettre J on appuie une seule fois. - Pour taper la lettre K on appuie deux fois. - Pour taper la lettre L on appuie trois fois. Ecrire un programme Pascal permettant de déterminer et d'afficher le nombre total d'appuies sur les touches du clavier d'un téléphone portable pour saisir un mot donné de N lettres, supposées non accentuées, (4 N 9). Indication : La figure suivante donne la répartition des lettres sur les touches du clavier d'un téléphone portable. 5

1 2 3 ABC DEF 4 5 6 GHI JKL MNO 7 8 9 PQRS TUV WXYZ 0 * + # Corrigé ; PROGRAM SUJET12; {Lundi 16/05/2005 : Après midi : Séance 2 } USES WINCRT ; VAR N:INTEGER; CH:STRING; FUNCTION VERIF (MOT:STRING):BOOLEAN; VAR S:REAL;I:INTEGER; R:BOOLEAN; R:=TRUE; I:=I+1; UNTIL NOT(UPCASE(MOT[I]) IN['A'..'Z']) OR (I=LENGTH(MOT)) ; IF NOT(UPCASE(MOT[I]) IN['A'..'Z']) R:=FALSE; VERIF:=R; PROCEDURE SAISIE(VAR MOT:STRING); WRITELN('Donner votre Mot'); READLN(MOT); UNTIL (VERIF(MOT) AND (LENGTH(MOT) IN [4..9])); PROCEDURE COMPTE (MOT:STRING; VAR NB:INTEGER); VAR K: INTEGER; NB: =0; FOR K:=1 TO LENGTH(MOT) DO CASE UPCASE (MOT [K]) OF 6

'A','D','G','J','M','P','T','W' : NB:=NB+1; 'B','E','H','K','N','Q','U', X : NB: =NB+2; 'C','F','I','L','O','R','V', Y : NB: =NB+3; 'S','Z': NB: =NB+4; SAISIE(CH); COMPTE(CH,N); WRITELN(CH); WRITELN('Somme :', N); END. Sujet n 2(14 mai 2004 10h30) Ecrire un programme Pascal permettant de saisir deux entiers X et Y (0 < X 9 et 0 < Y 9) et d afficher le tableau de multiplication selon le modèle suivant : Exemples : X=4 et Y=5, le programme affiche : 1 2 3 4 5 1 1 2 3 4 5 2 2 4 6 8 10 3 3 6 9 12 15 4 4 8 12 16 20 Corrigé : {Sujet2 14 mai 2004 à 10h30} Program Insertion; Uses wincrt; a,b:integer; Procedure Saisie_int( a,b:integer); Repeat Write('Entrer a '); Readln(a); Write('Entrer b '); Readln(b); Until (a in [11..b-1]) and (b<200); 7

Function Div_chif(x:Integer):Boolean; C,D,U:Integer; C:=x Div 100; D:=x Mod 100 Div 10; U:=x Mod 10; If C<>0 If (D<>0) And (U<>0) If (x Mod C =0) And (x Mod D=0) And (x Mod U=0) Div_chif:=True Else Div_chif:=False Else Div_chif:=False Else If U<>0 If (x Mod D=0) and (x Mod U=0) Div_chif:=True Else Div_chif:=False Else Div_chif:=False; Procedure Affichage(a,b:Integer); i:integer; For i:=a To b Do If Div_chif(i) Writeln(i); Saisie_int(a,b); Affichage(a,b); End. 8

Sujet n 16(18 mai 2004 15h30) CAS 1 : On propose par la suite, l'une des méthodes de la conversion d'un entier décimai (X) en son équivalent binaire (base 2) 1. On divise (division entière) le nombre X par 2 2. On sauvegarde le reste de la division 3. On refait les deux étapes précédentes avec le quotient de la division, jusqu'à avoir un quotient nul. 4. Le regroupement des restes en sens inverse de leurs apparitions donne la valeur du nombre X en binaire. Exemple : Si X = 13 alors - La division entière de 13 par 2 donne un quotient = 6 et un reste = 1 - La division entière de 6 par 2 donne un quotient = 3 et un reste = 0 - La division entière de 3 par 2 donne un quotient = 1 et un reste = 1 - La division entière de 1 par 2 donne un quotient = 0 et un reste = 1 Donc le nombre décimal 13 vaut 1101 en Binaire Question : Sens de lecture des restes Ecrire un programme Pascal permettant de saisir un entier naturel X 100, de déterminer et d'afficher sa valeur en Binaire, selon le format suivant : Le nombre décimal X vaut... En binaire. N.B: La solution doit comporter au moins une procédure et une fonction. CAS 2 : Conversion de la base 2 à la base 10 Exemple Si n =111 alors l entier résultat est 7 Voici la methode il suffit de donner a chaque chiffr Un poid de droite à gauche allant de 0 à Nb-chiff-1 PUIS multiplier chaque chiffre par 2 a la puissance poid et fair la somme Voici le Pascal : program convb2b10; uses wincrt; var n:integer; ch,ch1,ch2:string; procedure saisie(var n:integer); function verif(ch1:string):boolean; var i:integer; test:boolean; test:=true; i:=1; while(i<=length(ch1))and(test) do if(ch1[i]in['0','1']) then i:=i+1 else test:=false; verif:=test; 9

repeat write('n='); readln(n); str(n,ch2); until(verif(ch2)); function puiss2(z:integer):integer; var y,i:integer; y:=1; for i:=1 to z do y:=y*2; puiss2:=y; function conv(n:integer):integer; var e,x,a,i:integer; sh:string; str(n,sh); a:=0; for i:=length(sh) downto 1 do val(sh[i],x,e); a:=a+x*puiss2(length(sh)-i); conv:=a; saisie(n); write(conv(n)); end. BON COURAGE 10