Documente Academic
Documente Profesional
Documente Cultură
Remarque : jusqu'en 2018, les conventions du langage algorithmique étaient un peu différentes
– les tableaux sont dynamiques (la taille n'est pas forcément fixée à la déclaration) et l'opération redim
permet de fixer la taille d'un tableau.
– les tableaux et enregistrements sont supposés être toujours passés par référence, les autres
paramètres par valeur.
1- Écrire la déclaration d'un type enregistrement permettant de représenter une date avec un jour, un
mois et une année.
On suppose que tous les événements épidémiologiques sont stockés dans un tableau
d'enregistrements. On suppose qu'on dispose d'une fonction egalDate qui prend en entrée deux dates et renvoie
vrai si les dates sont les mêmes et faux sinon, et d'une fonction distDate qui prend en entrée deux dates et
renvoie la distance entre les deux dates sous forme d'un entier positif qui représente le nombre de jours
séparant les deux dates.
3- Écrire une fonction qui prend en entrée un tableau d'enregistrements d'événements épidémiologiques
et une date et renvoie le nombre de décès ayant eu lieu à cette date.
4- Les épidémiologistes veulent pouvoir identifier les contaminations proches dans le temps. Écrire une
fonction qui prend en entrée un tableau d'enregistrements d'événements épidémiologiques et une date et qui
renvoie, parmi les événements du tableau qui sont de type contamination, celui dont la date est la plus proche
de celle passée en paramètre (sans qu'elle soit forcément égales).
3- Écrire une fonction qui prend en entrée un tableau d'actifs et un entier n supposé positif et renvoie le
nombre de fonctionnaires qui ont fini leurs études depuis plus de n années.
4- Le ministère veut savoir si, pour un diplôme donné, ceux qui en sont titulaires sont plus nombreux à
être fonctionnaires qu'à travailler dans le secteur concurrentiel (salarié du privé ou profession libérale). Écrire
une fonction qui prend en entrée un tableau d'actifs et un diplôme et renvoie vrai si, parmi les personnes
possédant ce diplôme, il y a plus de fonctionnaires que de non fonctionnaires.
2- Écrire une fonction récursive qui prend en paramètre un tableau de vols et un numéro de vol et
décrémente de 1 le nombre de places disponibles sur le vol correspondant au numéro.
3- Écrire une fonction qui prend en paramètres un tableau de vols, une ville de départ, une ville d'arrivée
et une date et renvoie le prochain vol reliant les deux villes sur lequel il reste au moins une place disponible (ce
vol doit avoir lieu le plus tôt possible, mais à une date postérieure à celle donnée en paramètre). Si aucun vol du
tableau ne vérifie ces conditions, on peut retourner la valeur null qui correspond à un "enregistrement vide".
1- Écrire les 3 déclarations de type permettant de représenter l'état d'une entreprise, une entreprise et
un paquet d'actions.
2- On veut trouver parmi les paquets d'actions détenus par la banque celui qu'il est préférable de
vendre. Écrire une fonction qui prend en paramètre un tableau de paquets d'actions et renvoie le paquet d'action
qu'il est préférable de vendre, c'est-à-dire le paquet pour lequel le bénéfice est le plus élevé. Ce bénéfice est
égal au prix de vente (nombre d'actions du paquet fois le prix courant de l'action) moins le prix d'achat (nombre
d'actions du paquet fois le prix d'achat de l'action). Seuls les paquets d'actions d'entreprises qui sont dans l'état
C sont à prendre en compte, les actions des entreprises dans les états A+, A ou B pouvant encore voir leur prix
augmenter. Si aucun paquet ne correspond à ces critères, on peut renvoyer la valeur null qui correspond à un
"enregistrement vide".
3- Écrire une fonction qui prend en paramètres un tableau de paquets d'actions et un nom de trader et
renvoie le bonus que la banque verse au trader. Ce bonus dépend de la valeur courante des actions achetées
par le trader et de leur valeur d'achat. La valeur d'achat (respectivement courante) des actions achetées par le
trader est égale à la somme des valeurs d'achat (respectivement courantes) des paquets d'actions qu'il a
achetés, chaque paquet valant le prix d'achat (respectivement courant) de l'action fois le nombre d'actions du
paquet. Si la valeur courante des actions achetées par le trader est inférieure à la valeur d'achat, le bonus est
nul, sinon il est égal à 20% de la différence entre la valeur courante et la valeur d'achat.
1- Écrire la déclaration d'un type Hobby pour pouvoir représenter les passe-temps possibles, puis la
déclaration d'un type Client, chaque client ayant un identifiant entier, une adresse mail et plusieurs passe-temps.
On suppose que chaque client a au moins un passe-temps.
2- Écrire une fonction sameHobbies qui prend en paramètres deux Client et retourne vrai s'ils ont
exactement les mêmes passe-temps, et faux sinon.
3- Écrire une fonction soulmates qui prend en paramètres un Client c, un tableau de Client tab, et
renvoie tous les Client contenus dans tab qui ont les mêmes passe-temps que c. On suppose que c n'est pas
dans le tableau tab.
6- Analyse de réseau social (60 mn)
On veut écrire un programme pour analyser les pages web d'un réseau social. Une page est
représentée par le nom de son propriétaire, sa date de création et le nombre d'internautes qui visitent la page
chaque jour. On suppose qu'il existe un type de données Date, qui représente une date, et une fonction avec
retour Date creerDate(int a, int m, int j) qui prend en paramètres les année, mois et jour d'une date et renvoie la
Date correspondante.
1- Proposer une structure de données pour représenter les pages du réseau social. Écrire un
programme qui initialise les données relatives à la page de Toto, créée le 13 juin 2010 et visitées tous les jours
par 234 internautes.
2- Écrire une fonction qui prend en entrée un tableau de pages et renvoie le nombre moyen
d'internautes qui visitent les pages du tableau.
3- Écrire une fonction qui prend en entrée un tableau de pages et renvoie vrai s'il existe au moins deux
pages ayant le même propriétaire et faux sinon.
On veut maintenant représenter les liens entre les pages du réseau social. Chaque propriétaire de page
peut en effet lier à sa page les pages de ses amis.
4- Améliorer la structure de données pour pouvoir représenter, pour chaque page, les pages qui lui sont
liées.
5- Écrire une fonction qui prend en entrée un tableau de pages, deux noms d'internautes, et renvoie vrai
s'il existe des pages des deux internautes qui sont liées, et faux sinon. Il est possible que les internautes
possèdent plusieurs pages dans le réseau, ou aucune.
1- Écrire la déclaration d'un type Candidat pour pouvoir représenter les candidats possibles qui sont, par
ordre alphabétique : Bayrou, Hollande, Joly, Lepage, Lepen, Melanchon, Morin, Nihous, Sarkozy, Villepin.
2- Écrire la déclaration d'un type Categorie qui représente les données d'une catégorie socio-
professionnelle avec un nom, un nombre de citoyens, et un revenu moyen. Par exemple la catégorie des agents
de la fonction publique d'état a pour nom "agent de l'état", comprend 3681370 personnes et a pour revenu
annuel net moyen 26362 euros (source INSEE).
3- Écrire la déclaration d'un type Vote qui représente les intentions de vote des catégories socio-
professionnelles. Chaque vote associe une catégorie, un candidat, et le pourcentage de personnes de la
catégorie qui déclarent voter pour le candidat en question. Par exemple 0,01\% des agents de l'état ont
l'intention de voter pour Villepin.
4- Écrire une fonction qui prend en paramètres un tableau de Vote et une Categorie et renvoie le
Candidat préféré de la catégorie, c'est-à-dire celui qui recueille le plus d'intentions de vote dans cette catégorie.
5- Écrire une fonction qui prend en paramètres un Candidat et un tableau de Vote et renvoie le revenu
moyen des citoyens qui ont l'intention de voter pour ce candidat. Pour calculer le revenu moyen, il faut calculer
la somme des revenus de tous ceux qui déclarent voter pour le candidat, et diviser ce revenu total par le nombre
de citoyens déclarant voter pour le candidat.
8- Jeu, set et match (45 mn)
On veut écrire un programme pour gérer les résultats des matchs de tennis dans les tournois officiels.
Un match est constitué de sets, eux-mêmes constitués de jeux. Un match est décrit par le nom du tournoi dans
le cadre duquel il s'est déroulé, les deux noms des joueurs qui ont disputé le match, et le score. Le score
regroupe les résultat des différents sets (il peut y avoir entre 3 et 5 sets dans un match). Chaque set est décrit
par deux entiers qui donnent le nombre de jeux remportés par chaque joueur (le set le plus disputé de l'histoire
du tennis s'est terminé à 70-68).
Par exemple, le match entre Rafael Nadal et Roger Federer, joué lors de l'Open d'Australie 2012, a eu
pour score 6-7, 6-2, 7-6, 6-4 (cela signifie que dans le premier set Nadal a remporté 6 jeux et Federer en a
remporté 7, dans le deuxième set Nadal a remporté 6 jeux et Federer 2 et ainsi de suite).
2- Écrire un programme qui initialise les données relatives au match entre Nadal et Federer.
3- Écrire une fonction qui prend en entrée un tableau de matchs (tableau au sens informatique) et le
nom d'un tennisman et renvoie le nombre de jeux perdus par le tennisman durant ses matchs (par exemple,
dans le match décrit plus haut, Nadal a perdu 7+2+6+4=19 jeux et Federer en a perdu 6+6+7+6=25).
1- Écrire la déclaration d'un type Viande ayant pour valeurs : cheval, boeuf, canard, poulet, mouton,
porc. Écrire la déclaration d'un type Site représentant les types d'entreprises agroalimentaires : élevage, abattoir,
usine de transformation, usine de conditionnement.
2- Écrire la déclaration d'un type représentant les entreprises agroalimentaires, décrites par un nom, un
type et un pays. On suppose qu'il existe un type énuméré Pays dont les valeurs sont les différents pays.
3- Écrire la déclaration d'un type Lot qui représente les lots de viande. Un lot possède un identifiant
(entier), un type de viande, un poids et la liste des entreprises par lesquelles il est passé. Exemple de lot :
537,45kg de viande de cheval, portant l'identifiant 12345 et passé par les trois entreprises suivantes : l'élevage
Ferma Satu Mare situé en Roumanie, l'abattoir Slachthuis van Maastricht situé aux Pays-Bas et l'usine de
transformation Spanghero située en France.}.
4- On veut pouvoir trouver les lots d'un type donné. Écrire une fonction qui prend en paramètres un
tableau de Lot et un type de viande et retourne un tableau de Lot contenant uniquement les lots du type spécifié.
5- On veut pouvoir trouver tous les lots qui sont passés par une entreprise donnée. Écrire une fonction
qui prend en paramètres un tableau de Lot et le nom d'une entreprise et affiche à l'écran les identifiants des lots
qui sont passés par l'entreprise. La fonction doit également retourner le poids total de viande traitée dans
l'entreprise. On suppose que le tableau ne contient pas deux fois le même lot.
1- Proposer des types de données permettant de représenter ces données de façon structurée.
2- Écrire une fonction qui prend en entrée un tableau d'opérations bancaires et une opération o et, s'il
existe dans le tableau une opération réalisée à la même date que o et d'un montant inverse, renvoie l'indice de
cette opération dans le tableau. Si plusieurs opérations de ce type existent, on renvoie l'indice de la première
opération rencontrée. La fonction renvoie -1 si une telle opération n'existe pas. Par exemple, si l'opération o a
pour montant -5000 euros (il s'agit donc d'un retrait) réalisé le 27 mai 2012, il faut trouver une opération de 5000
euros réalisée le 27 mai 2012.
3- Écrire une fonction qui prend en entrée un tableau de banques et une opération o et vérifie s'il existe
dans une banque suspectée de faciliter la fraude une opération du montant inverse du montant de o et réalisée
à la même date. La fonction renvoie l'identifiant de la première banque trouvée et qui a réalisée une telle
opération, et renvoie une chaine vide ("") si aucune banque n'est trouvée.
1- On veut représenter le niveau de cryptage des appels. Écrire la déclaration d'un type Cryptage avec
pour valeurs possibles : haut, moyen et bas.
2- Écrire la déclaration d'un type Appel représentant les appels téléphoniques décrits par deux
personnes (l'appelant et l'appelé) dont on connait le nom, une date de début, une durée (en secondes), un
niveau de cryptage et un ensemble de mots-clés qui apparaissent dans la conversation téléphonique. Exemple
d'appel (fictif) : A. Merkel a téléphoné à F. Hollande le 23/03/2014 à 15h57 durant 234 secondes sur une ligne
hautement sécurisée pour parler de "Ukraine", "Kiev", "Ianoukovitch", "Poutine", "Sotchi", "médaille d'or".
3- On veut savoir combien de temps une personne donnée a passé au téléphone durant une certaine
période. Écrire une fonction qui prend en entrée un tableau d'Appel, un nom n, deux Date d1 et d2 et renvoie la
somme des durées des appels reçus ou passés par la personne de nom n entre les dates d1 et d2.
4- On veut savoir si une personne parle au téléphone de sujets sensibles (comme par exemple
"bombe", "attentat", "aéroport Notre-Dame des Landes"). Écrire une fonction qui prend en entrée un tableau
d'Appel, un nom n et un tableau de Chaine contenant des mot-clés et renvoie vrai si la personne de nom n a
reçu ou passé au moins un appel dans lequel apparait un des mots-clés du tableau de Chaine.
1- Proposer un ou des types de données structurés permettant de représenter les données concernant
les matchs de la coupe du monde football.
2- Écrire une fonction qui prend en entrée un tableau des matchs de la coupe du monde et le nom d'une
équipe et renvoie le nombre total de buts marqués par cette équipe au cours de la compétition.
3- Écrire une fonction qui prend en entrée un tableau des matchs de la coupe du monde et renvoie un
tableau de matchs ne contenant que les matchs nuls (matchs où les deux équipes ont marqué le même nombre
de buts).
1- On veut créer une échelle de niveau d'alerte épidémique correspondant à différents types
d'événements épidémiologiques : la détection d'un virus chez les animaux, l'infection d'humains sans
transmission, la transmission inter-humaine, la propagation incontrôlée du virus. Ecrire la déclaration d'un type
NiveauEpidémique avec pour valeurs possibles : détection, infections, transmissions, pandémie.
2- On veut, pour chaque ville, connaitre le nombre de personnes infectées et le nombre de morts pour
chaque semaine de l'épidémie. Ecrire la déclaration d'un type Ville représentant les villes avec un nom, un
nombre d'habitants, un niveau d'alerte épidémique, le nombre de personnes infectées pour chaque semaine, et
le nombre de morts pour chaque semaine. Exemple : dans la ville d'Amiens, 134381 habitants, le niveau d'alerte
est actuellement à "transmissions" et, la première semaine il y a eu 3 personnes infectées et aucune de
décédée, la deuxième semaine 8 infections et 1 décès, et la troisième semaine 7 infections et 5 décès.
3- On veut pouvoir connaitre, pour une ville donnée, le nombre total de personnes ayant survécu à
l'infection, c'est-à-dire qui ont été infectées durant l'épidémie mais qui n'en sont pas (encore) mortes. Exemple :
cette fonction appelée sur la ville exemple de la question 2 renverra 18-6 = 12 survivants. Ecrire une fonction qui
prend en entrée une Ville et renvoie le nombre total de survivants.
4- On veut savoir dans quelle ville il y a eu le plus de morts par rapport à la population de la ville. Ecrire
une fonction qui prend en entrée un tableau de Ville et renvoie le nom de la ville où le rapport [nombre total de
morts / population] est le plus élevé
1- Proposer un ou des types de données structurés permettant de représenter les données concernant
les tremblements de terre.
2- Écrire une fonction qui prend en entrée un tableau de tremblements de terre et le nom d'un lieu et
renvoie la durée totale des séismes ayant eu lieu à cet endroit (c'est-à-dire la somme des durée des séismes
ayant eu lieu à cet endroit).
3- Écrire une fonction qui prend en entrée un tableau de tremblements de terre et renvoie un tableau ne
contenant que les séismes de magnitude supérieure ou égale à 8.
1- On veut représenter explicitement les différents types de production électrique. Ecrire la déclaration
d'un type TypeProduction avec pour valeurs possibles : charbon, gaz, nucléaire, hydraulique, eolien, solaire,
biomasse, geothermie.
2- On veut représenter chaque producteur d'électricité. Ecrire la déclaration d'un type Producteur
représentant les producteurs avec pour chacun un nom, un type de production électrique et une production
annuelle en GWh (gigawatt-heure, la production est un nombre entier). On veut représenter également les
régions. Ecrire la déclaration d'un type Region avec un nom, une consommation électrique annuelle en GWh et
l'ensemble des producteurs d'électricité de la région. Exemple : en région Nord-Picardie, la consommation est
de 46847GWh, les producteurs sont : parc de Bougainville – éolien - 25,8GWh, centrale de Gravelines –
nucléaire – 38400GWh, ... .
3- On veut connaitre pour une région donnée, la part de l'éolien dans sa production totale d'électricité.
Ecrire une fonction qui prend en entrée une Région et renvoie le rapport entre la somme des productions de ses
producteurs d'électricité éolienne et la somme des productions de tous les producteurs. Exemple : en Nord-
Picardie, la part de l'éolien est de 2916GWh / 44576GWh = 6,5%.
4- On veut récupérer les données de tous les producteurs d'électricité éolienne de toutes les régions.
Ecrire une fonction qui prend en entrée un tableau de Region et renvoie un tableau contenant les données de
tous les producteurs d'électricité éolienne.
1- Proposer un ou des types de données structurés permettant de représenter les données concernant
les migrants.
2- Écrire une fonction qui prend en entrée un tableau de migrants (de statuts quelconques) et retourne
l'âge moyen des migrants économiques (et uniquement de ceux-là).
3- Écrire une fonction qui prend en entrée un tableau de migrants et renvoie un tableau ne contenant
que les migrants majeurs (c'est-à-dire ayant plus de 18 ans).
1- On veut représenter explicitement les différentes affiliations politiques des députés. Ecrire la
déclaration d'un type Parti avec pour valeurs possibles : FG, EELV, PS, LR, FN, SE. (SE veut dire sans
étiquette).
2- On veut représenter les députés et les assistants parlementaires. Ecrire la déclaration d'un type
Assistant qui comporte un nom, un salaire mensuel, et indique si l'assistant est membre de la même famille que
son député. Ecrire également la déclaration d'un type Député avec un nom, un parti et les assistants qu'il
emploie. Exemple : le député Machin, sans étiquette, emploie Bidule et Truc. Bidule touche 2000 euros par mois
et n'a pas de lien de parenté avec Machin. Truc touche 1900 euros par mois et a un lien de parenté avec
Machin.
3- Chaque député dispose d'une dotation de 9561 euros par mois pour rémunérer ses assistants. On
veut savoir si les salaires versés par les députés ne dépassent pas cette dotation. Ecrire une fonction qui prend
en entrée un Député et renvoie vrai si la somme des salaires qu'il verse à ses assistants est supérieure
strictement à 9561, faux sinon.
4- On veut savoir quel député emploie un membre de sa famille. Ecrire une fonction qui prend en entrée
un tableau de Député et renvoie un tableau contenant uniquement les Député qui emploient un membre de leur
famille.
1- Proposez un ou des types de données structurés permettant de représenter les données concernant
les trains.
2- Écrivez une fonction qui prend en entrée un tableau de trains, et deux gares G1 et G2 et retourne vrai
s'il existe dans le tableau un train qui part de G1 et qui dessert G2.
3- Écrivez une fonction qui prend en entrée un tableau de train et renvoie un tableau ne contenant que
les trains de type TER.
1- Écrire la déclaration d'un type Avis avec pour valeurs possibles : OUI, OUI_MAIS, ATTENTE et
REFUS.
2- On veut représenter les bacheliers et leurs demandes d'inscription. Écrire la déclaration d'un type
Demande qui comporte le nom de la formation demandée et l'avis rendu. Écrire la déclaration d'un type
Bachelier avec un nom, un type de bac (chaine de caractère), un âge et les demandes d'inscription qu'il a faites.
Exemple : le bachelier Tartempion, 17 ans, bac ES a demandé une inscription en Licence Economie et Gestion
qui a reçue l'avis OUI, une inscription en Licence Chimie qui a reçue l'avis ATTENTE et une inscription en
Licence Arts du Spectacle qui a reçue l'avis OUI_MAIS.
3- On veut savoir si chaque bachelier a été accepté dans au moins une formation. Écrire une fonction
qui prend en entrée un Bachelier et renvoie vrai s'il a reçu au moins un avis OUI ou un avis OUI_MAIS, et faux
sinon.
4- On veut savoir quels bacheliers n'ont reçu que des avis ATTENTE ou REFUS. Écrire une fonction qui
prend en entrée un tableau de Bachelier et renvoie un tableau contenant uniquement les Bacheliers qui n'ont
reçu que des avis ATTENTE ou REFUS.
5- On veut pouvoir connaitre le taux d'avis positifs. Pour un bachelier, ce taux est égal au nombre de
demandes qu'il a faites ayant reçu un avis positif (OUI ou OUI_MAIS), divisé par le nombre total de demandes
qu'il a faites. Écrire une fonction qui prend en entrée un tableau de Bachelier et renvoie la moyenne des taux
d'avis positifs des bacheliers.
20- Sécurité routière (45 mn)
Le gouvernement veut un logiciel pour analyser la mortalité sur les routes. Une route a un type
(départementale, nationale ou autoroute), un numéro, et une vitesse maximum autorisée. Un accident de la
route est décrit par la route où a eu lieu l’accident, une date (on suppose qu’il existe un type Date), le nombre de
morts et le nombre de blessés.
1- Proposez un ou des types de données structurés permettant de représenter les données concernant
les routes et les accidents de la route.
2- Écrivez une fonction qui prend en entrée un tableau d’accidents et une route et renvoie le nombre de
morts sur cette route.
3- Écrivez une fonction qui prend en entrée un tableau d’accidents et renvoie un tableau ne contenant
que les accidents ayant eu lieu sur des routes limitées à 80km/h.
2- Écrire un programme qui crée et initialise le modèle météorologique, en mettant dans chaque cube de
coordonnées (a,b) le nom zone_a_b, une température aléatoire, une pression moyenne (1013,25 hPa) et une
hygrométrie faible (1%).
3- Écrire une fonction qui prend en entrée un modèle météorologiques et renvoie le nom de la zone où
la pression atmosphérique est la plus élevée.
On affine maintenant le modèle en découpant chaque zone verticalement. Le modèle devient donc
tridimensionnel (lattitude, longitude et altitude), mais chaque cube reste décrit de la même façon (les cubes
empilés au-dessus d'une zone portent le même nom de zone).
4- Écrire une fonction qui prend en entrée le modèle météorologique et un nom de zone et renvoie la
température dans cette zone à l'altitude la plus basse.
5- Écrire une fonction qui prend en entrée le modèle météorologique et des couples d'indices en lattitude
et longitude et renvoie la température moyenne dans le volume d'atmosphère délimité par ces indices. Exemple
de couples d'indices : 3 et 10 en lattitude et 1 et 9 en longitude indiquent qu'il faut calculer la température sur les
blocs de coordonnées (i,j,k) avec 3 ≤ i ≤ 10, 1 ≤ j ≤ 9 et k non limité.
1- L'informatique au service de la santé - CORRECTION
enregistrement Date
entier jour;
entier mois;
entier annee;
finenregistrement
enregistrement EvtEpidemio
entier num_secu;
Date date;
Type_evt type;
finenregistrement
enregistrement Activite
Type_activite type;
entier revenu;
finenregistrement
enregistrement Actif
chaine diplome;
Activite acti;
entier nb_annees;
finenregistrement
enregistrement Vol
entier num;
Ville depart;
Ville arrivee;
Date d;
entier places;
finenregistrement
fonction avec retour Vol prochain(Vol[] t, Ville v1, Ville v2, Date d)
Vol resultat;
int i, attente, temp;
début
resultat <- null;
attente <- -1;
pour(i allant de 0 à t.longueur-1 pas de 1) faire
si(t[i].depart == v1 ET t[i].arrivee == v2 ET t[i].places > 0) alors
temp <- distance(d,t[i].d);
si(attente == -1 OU (temp > 0 ET temp < attente)) alors
attente <- temp;
resultat <- t[i];
finsi
finsi
finpour
retourne resultat;
fin
enregistrement Entreprise
chaine nom;
Etat_Entreprise etat;
reel prix_action;
entier nb_actions;
finenregistrement
enregistrement Paquet_Actions
Entreprise e;
reel prix_achat;
entier nb_actions;
chaine trader;
finenregistrement
enregistrement Client
Hobby[] hobbies;
entier id;
chaine mail;
finenregistrement
enregistrement Page
chaine nom;
Date creation;
entier visiteurs;
Page[] liens;
finenregistrement
Page p;
p.nom <- Toto";
p.creation <- creerDate(2010,6,13);
p.visiteurs <- 234;
enregistrement Categorie
chaine nom;
entier nombre;
chaine revenu;
finenregistrement
enregistrement Vote
Categorie cat;
Candidat can;
reel pourcent;
finenregistrement
enregistrement Set
entier a,b;
finenregistrement
enregistrement Match
chaine tournoi, joueur1, joueur2;
Set[] sets;
finenregistrement
programme initialisation
Match m;
m.tournoi <- "Open d'Australie 2012";
m.joueur1 <- "Rafael Nadal";
m.joueur2 <- "Roger Federer";
Set s1, s2, s3, s4;
s1.a <- 6; s1.b <- 7;
s2.a <- 6; s2.b <- 2;
s3.a <- 7; s3.b <- 6;
s4.a <- 6; s4.b <- 4;
m.sets <- {s1,s2,s3,s4};
finprogramme
enregistrement Entreprise
chaine nom;
Pays pays;
Site site;
finenregistrement
enregistrement Lot
entier id;
Viande type;
réel poids;
Entreprise[] sites;
finenregistrement
enregistrement Opération
chaine compte;
entier somme;
Date d;
finenregistrement
enregistrement Banque
chaine id, pays;
booléen suspecte;
Opération[] opés;
finenregistrement
enum Cryptage{haut,moyen,bas};
enregistrement Appel
Chaine appelant, appelé;
Date début;
int durée;
Chaine[] motsClés;
Cryptage niveau;
finenregistrement
fonction avec retour entier tempsPassé(Chaine n, Date d1, Date d2, Appel[] t)
entier i, total;
début
total <- 0;
pour (i allant de 0 à t.longueur-1 pas de 1) faire
si ((t[i].appelé = n OU t[i].appelant = n) ET
t[i].début>=d1 ET t[i].début<=d2) alors
total <- total+t[i].durée;
finsi
finpour
retourne total;
fin
enregistrement Match
chaine equipe1, equipe2;
entier buts1, buts2;
finenregistrement
enregistrement Séisme
Lieu endroit;
réel magnitude;
entier durée;
finenregistrement
enregistrement Lieu
chaine nom;
réel longitude, latitude;
finenregistrement
enregistrement Producteur
chaine nom;
TypeProduction type;
entier production;
finenregistrement
enregistrement Region
chaine nom;
entier consommation;
Producteur[] prods;
finenregistrement
enregistrement Migrant
chaîne nom, pays, traversés[];
entier âge;
Statut st;
finenregistrement
enregistrement Assistant
chaine nom;
entier salaire;
booleen famille;
finenregistrement
enregistrement Depute
chaine nom;
Parti part;
Assistant[] assist;
finenregistrement
enregistrement Train
chaîne départ, arrêts[];
entier numéro;
TypeTrain t;
finenregistrement
enregistrement Bachelier
chaine nom, prenom, bac;
entier age;
Demande[] demandes;
finenregistrement
enregistrement Route
entier numéro, vitesseMax;
TypeRoute t;
finenregistrement
enregistrement Accident
Date d;
Route r;
entier morts, blessés;
finenregistrement
enregistrement Cube
chaine nom;
réel temp, press, hygro;
finenregistrement
programme Initialisation
entier i,j, larg, long;
Cube[][] mod;
début
écrire "Donnez la largeur et la longueur du modèle";
lire larg;
lire long;
redim mod[larg][long];
pour (i allant de 0 à mod.longueur-1 pas 1) faire
pour (j allant de 0 à mod[i].longueur-1 pas 1) faire
mod.nom ← "zone\_"+i+"\_"+j;
mod.temp ← random()*40;
mod.press ← 1013.25;
mod.hygro ← 1.0;
finpour
finpour
fin
// On suppose que les indices en paramètre sont dans les limites du tableau
// et que t[0][0].longueur = t[i][j].longueur pour tout i et j valides
fonction avec retour réel tempVolume(Cube[][][] t, int xMin, int xMax, int yMin,
int yMax)
entier i,j,k;
réel temp;
début
temp ← 0;
pour (i allant de xMin à xMax pas 1) faire
pour (j allant de yMin à yMax pas 1) faire
pour (k allant de 0 à t[i][j].longueur-1 pas 1) faire
temp ← temp + t[i][j][k].temp;
finpour
finpour
finpour
retourne temp/((xMax-xMin+1)*(yMax-yMin+1)*t[0][0].longueur);
fin