Revision Ada

Fermé
Adil le vrais - 11 août 2004 à 01:27
 ledjlale - 18 août 2004 à 10:55
Structure de Contrôle
if Faim then

Manger;
end if;

if Faim then

preparer;
Manger;
Vaisselle;
end if;
if auhur_d'hui=Dim then
Demain:=Lun;
else
Demain:=jour'suss(aujour_d_Hui);
end if;

If A=0.0 then
-- Cas linéaire
else
if b**2-4.0*A*C>0.0 then
--Racines réelles
else
-- Racines complexes
end if;
end if;
Mot reseve elsif
if A=.0 then
-- Cas liéaire
elsif
B**2-4.0*A*C>=0.0 then
-- Racines réelles
else
-- Racines comlexes
end if;

pour appeler les programmes:
if ordre =gauche then
tourner_a_gauche;
else
if ordre =droite then
tourner_a_droite;
else
if ordre =demi_tour then
faire_demi_tour;
end if;
end if;
end if;


if j>0 then
if i/j> k then
Action;
end if;
end if;
ou

if j>0 and then i/j>k then
action;
and if;

instuction case

case ordre is
when gauche => tourner_a_gauche; { =>:alors}
when droite => tourner_a_droite;
when demi_tour =>faire _demi_tour;
when marche => null;
end case;

case aujour_d_hui is
When Lun|Mar|Mer|jeu => Travailler; {lun or mar}
when ven => travailler;faire_la_fete; {app.2.proc;}
when others => null;
end case;

lun..jeu
jour range lun..jeu
jour_ouvrable range lun..jeu

case ajour_d_hui is
when jour_ouvrable =>
travailler;
if aujour_d_hui =ven then
faire_la_fete;
end if;
when others => null;
end case ;


Reprendre l'exercice 5.1 (1) en utilisantune instruction case pour
positionner une valeur fin_de_mois à la valeur correcte.
2- jardinier laboure en hiver,sème au printemps,soigne les plantes
en été ,et récolte en autome.Ecrire une instruction case pour appeler,
le sous programme convenable labourer,semer,soigner ou recolter,selon
la valeur du mois M.Déclarer les sous-types appropriés si necessaire.
3-Un homme peu avisé est payé le premier de chaque mois.Les dix
premiers jours il se gave ,les dix suivants il subsiste et il meurt
de faim pendant le reste du mois.
Appeler les sous programmes gavages ,Minimum et Disette selon le
jour D. Supposer que fin_de_mois a été positionné et que D est déclaré
comme suit:
D:Integer range 1.. Fin_De_mois;
Reponses:
declare
fin_du_mois:integer;
begin
case mois is
when sept|avr|juin|nov=>
Fin_du_mois:=30;
when fevr=>
if annee mod 4=0 then
fin_du_mois:=29;
else
fin_du_mois:=28;
end if;
when others=>
fin_du_mois:=31;
end case;
--- puis comme avant
...
end;

subtype hiver is nom_du_mois range janv..mar;
subtype printemps is nom_du_mois range avr..juin;
subtype ete is nom_du_mois range juil..sept;
subtype automne is nom_du_mois oct..dec;
...
case m is { selon var nom_du_mois}
when hiver =>Labourer;
when printemps=>semer;
when ete => soigner;
when automne => recolter;
end case;


case j is
when 1..10 => ripaille;
when 11..20=> subsistance;
when others => disette;
end case;
Instuctions loop
loop
suite_d_instructions
end loop;
loop
Travailler;
manger;
dormir;
end loop;
comme exemple plus concret,consdérons le probleme consistant la
base e des logarithmes népériens à partir de la srie:
e=1+1/1!+1/2!+1/3!+1/4!+...
ou:
n!=n*(n-1)*(n-2)...3*2*1
une solution possible est:
decalre
e:reel :=1.0;
i:integer:=0;
terme:reel:=1.0;
begin
loop

i:=i+1;
terme:=terme/reel(i);
e:=e+terme;
end loop;
...
loop
if I=N then exit; end if; {arreton jusqu'a i=n}
i:=i+1;
terme :=terme/reel (i);
e:=e+terme;
end loop;
exit when condition;
loop
exit when i=n
i:=i+1;
terme:=terme/reel(i);
e:=e+terme;
end loop;


while i/=n loop {tant i !=n }
i:=i+1;
terme:=terme/reel(i); {i integer n trasforme reel}
e:=e+terme;
end loop;

for i in 1..n loop
terme :=terme/reel (i);
e:=e+terme;
end loop;


for l in 1..n loop
for j in 1..m loop
- si les valeurs de i et j satisfont la condition,
- quitter la boucle emboîtée
end loop;
end loop;

exploration:

for i in 1..n loop
for j in 1..m loop
if condition_satisfaite then
valeur_i:=i;
valeur_j:=j;
exit exploration;
end if;
end loop;
end loop exploration;

exercice 5.3
1 Linstruction get(i):lit la valeur suivante
dans le fichier d'entrée
et la place dans la variable entiére i.ecrire les
instructions
pour lire et ajouter une série de nombres.la fin de
la série est indiquée
par une valeur négative.
2 ecrire les instructions pour déterminer la puissance de 2
dans la factorisation de N.placer le resultat dans
secompte sans modifier n.
3 Calculer:
g=somme de p=1 jusqu'a n (1/p ) -log n
(g--->gama=0.577215665...quand n----> l'infinie)


1 declare
somme:integer:=0;
i: integer;
begin
loop
get (i);
exit when i<0;
some:=somme+i;
end loop;
end;

2 declare
copie:integer:=n;
decompte:integer:=0;
begin
while copie mod 2=0 loop
copie:=copie/2; {je je n'ai pas compris le 2 ex.}
decompte:=decompte+1;
end loop;
...
end;

3 declare

G:reel:=-ln(reel(n));
begin
for p in 1..n loop
g:=g+1.0/reel(p);
end loop;
end;
exercice 5.4
1 Réecrire la boucle emboîtée de la section 5.3
en utilisant une etiquette <<exploration>>au lieu
d'un nommage de la boucle extérieure.pourquoi
n'est ce pas une bonne solution ?
exercice 5.4

1 for i in 1..n loop
for j in 1..m loop
if condition_ok then
valeur_i:=i;
valeur_j:=j;
goto recheche;
end if;
end loop;
end loop;
A voir également:

4 réponses

teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
11 août 2004 à 09:10
Ha...

.  .  Ce post a été écrit entièrement
\_/  avec des molécules recyclées
0
Jolkdarr Messages postés 10 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 11 août 2004 1
11 août 2004 à 12:41
Hello !

Ce sont nos devoirs ? C'est ça ?

En début :
Ce n'est pas :
Demain:=jour'suss(aujour_d_Hui);
Mais :
Demain:=jour'succ(aujour_d_Hui);

Tu devais avoir autre chose en tête ;)
0
salut chère frère,
voici un site ou vous pourriez télécharger des cours ADA
http://ada.developpez.com/cours/iut/
Bon courage.
Merci.
0
hum...........
quelle idée d'apprendre un langage aussi nul....
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
17 août 2004 à 17:14
Ada est encore pas mal utilise dans certains domaines de l'info, et c'est loin d'etre nul pour apprendre non plus. Quand tu es en formation, il faut toucher au plus de langage possible pour pouvoir maitriser les futurs langages (a la vitesse ou ils paraissent...)

.  .  Ce post a été écrit entièrement
\_/  avec des molécules recyclées
0
hum > teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011
17 août 2004 à 17:28
hum..........
ada? oui, ptet bien qu'on l'utilise pour l'aerospacial. Mais ils se dirigent vers le C.. ada s'abandonne. Ceux qui ne savent pas programmer l'utilise car il est tellement contraint, que tu peux pas faire c"e que tu veux, et que ca tevite des erreurs.
Bref, bien sur qu'y en a qui l'utilise encore, on est pas tous des lumieres ;), et je sui daccor avec toi pour ce qui est d'un premier apprentissage. (fo bien commencer par kekchose de simple!) mais il faut pas exagerer, qd c trop simple, c trop simple.
j'exaghere parceque je me le sui coltiné pendant un an, alors qu'il aurai fallut 2 mois pour le connaitre. moi, ki avai commencé par du c....

ensuite, tu d: fo toucher au plus de langage? boffure: si tu na pas la reflexion algorithmique, tu ne sers a rien. apprendre un langage, c que dalle. Construire un algo, c carrement autrechose.
abandonnez ada, et passez en java ou en c, c dans ces langages qu'on apprends le plus de chose
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793 > teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011
18 août 2004 à 08:44
Pas parce que on change de langage qu'il faut jetter tous les anciens prog a la poubelles, il faut encore les maintenir et les patches (voir l'exemple Prolog / 2000)

Ada est bien pour debuter, mais je suis d'accord que ce qu'il faut c'est l'algo avant tout :) mais apres je persiste a penser qu'il ne faut pas travailler que sur un langage au risque de se retrouver inadapte apres un certain temps a toute autre forme...

C pour debuter :-( Voir mon article dans la base des connaissances sur les langages pour debuter mais je suis contre...

.  .  Ce post a été écrit entièrement
\_/  avec des molécules recyclées
0
ledjlale > teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011
18 août 2004 à 10:34
bien sur, C c pas terrible pour debuter. Mais il vaut mieux commencer par C que par cpp, il y a pas 36 fonctions pour un meme truc, et on reste un peu plus avec les problemes machines (je pense ). Une foi qu'on maitrise c, le cpp est pareil avec plus de fonctionnalite.
ada, ca va pour apprendre les rudiments de la programmation, mais apres faut passer a autre chose: java et c par exemple. et une fois qu'on les connait, je pense qu'on sait manier la majorite des langages (il faut juste apprendre les termes et je parle pas des sript, html et autre).
mais la, on parle de ada, pas d'autres langages. bien sur qu'il faut voir les autres: ils ont chacubn leur particularité. pour ma part, le langage qui est le plus interressant est la C, qui conserve un dialogue machine sans etre trop complique (ref: assembleur :))
moi, g commencé du basic sur amiga. ensuite ce fut le C. ce fut difficile au depard. Maios justeau depard parceque j'était tout seul a resoudre mes problemes. Mais une fois cet obstacle surmonté, ca allé tout seul. alors je pense qu'il suffit d'un "petit" langage pour debuter (ada?) mais qu'il ne faut pas s'attarder sur celui la.

g pas lu ton article, mais je vai y faire un tour par curiosite.
0
hum > ledjlale
18 août 2004 à 10:37
hum.........
ada, c de la merdde, sauf pour debuter
0