Travaux dirigés 1
|
Langage C |
Equivalent Pascal |
Déclarations / affectations
|
|
#define NOMBRE 1 #define CHAINE "ALPHA" |
CONST NOMBRE = 1; CONST CHAINE = 'ALPHA'; |
|
|
int i,j; int k,l=0; char c; float r; |
VAR i,j:INTEGER; VAR k,l:INTEGER; ...l:=0; VAR c:CHAR; VAR r:REAL; |
|
|
int tab1[50]; int tab2[50][10]; Exemple : ...tab2[i][j]=6; |
VAR tab1:ARRAY [0..49] OF INTEGER; VAR tab2:ARRAY [0..49,0..9] OF INTEGER; Exemple : ...tab2[i,j]:=6; |
Comparateurs / Opérateurs logiques / Opérateurs arithmétiques |
|
==, !=, >, >=, <, <= &&, ||, ! +, -, *, /, % |
=, <>, >, >=, <, <= AND, OR, NOT +, -, *, / (ou DIV), MOD |
Instructions |
|
= (affectation) c=getchar(); printf("Message %d : \n",j); |
:= read(c); writeln('Message ',j,' : '); |
Structures de contrôle |
|
{ } /* Commentaires */ |
BEGIN END; (* Commentaires *) |
if (condition1) action1; else action2; |
IF condition1 THEN action1 ELSE action2; |
while ((! condition2) || (condition3)) action; for (i=1;i<=10;i++) action; |
WHILE (NOT condition2) OR (condition3) DO action; FOR i:=1 TO 10 DO action; |
Exemple de programme |
|
#include "stdio.h" #define CHAINE "ALPHA" int a; int paire(int b) {
|
PROGRAM prgm; USES CRT; CONST CHAINE = 'ALPHA'; VAR a:INTEGER; VAR d:INTEGER; (* Pas de variable locale au programme principal en Pascal *) FUNCTION paire(b:INTEGER):INTEGER; VAR c:INTEGER; BEGIN
|
L'instruction :
for (expr1;expr2;expr3) action;
est équivalente à
expr1;
while(expr2)
{ action; expr3;
}
Les quatre instructions suivantes produisent le même résultat après leur exécution :
Exemples :
j=1;
a=j++; /* a vaut 1 et j vaut 2 */
Au contraire :
j=1;
a=++j; /* a vaut 2 et j vaut 2 */
Le sous-programme getchar() renvoie le caractère le plus ancien se trouvant
dans le "buffer d'entrée". Lors de la lecture d'un texte caractère par
caractère, ce buffer n'est rempli qu'au moment d'un retour-chariot.
L'instruction fflush(stdin); permet de vider le buffer de l'entrée standard.
Le sous-programme printf permet d'afficher à l'écran du texte et des valeurs
de variables. La syntaxe de l'appel à ce sous-programme est :
printf("chaîne de caractères",variable1,variable2,variable3,...);
Cet appel est interprété de la manière suivante :
- La chaîne de caractères est affichée jusqu'au premier caractère % qui peut
y figurer.
- Les caractères % et le (ou les) caractères qui suivent sont des
spécificateurs de formats. Ils sont remplacés par la valeur des variables situées
après la chaîne de caractères.
Exemple :
i = 5;
c = 'a';
printf("nombre : %d - caractère : %c\n",i,c);
provoque à l'écran l'affichage suivant :
nombre : 5 - caractère : a
Remarque : le caractère \n équivaut au caractère
"retour-chariot". De même, le caractère %\t indique la présence
d'une tabulation.
La fonction printf envoie la chaîne de caractères interprétée sur le
"buffer de sortie". Pour forcer l'affichage du contenu de ce buffer, on utilise fflush(stdout);
#include "stdio.h"
#define NOMBRE 5
int lire()
{
int s=0;
char c;
fflush(stdin);
c=getchar();
while(c != '#')
{
if ((c == 'a') ||
(c == 'e') ||
(c == 'i') ||
(c == 'o') ||
(c == 'u') ||
(c == 'y')) s++;
c=getchar();
}
return(s);
}
main()
{
int a;
printf("Entrez votre texte (non-accentué, terminé par un caractère #) :\n");
fflush(stdout);
a = lire();
if (a != 0) printf("Il y avait %d voyelles.\n",a);
fflush(stdout);
}
Ecrire un programme C qui calcule le nombre de consonnes ou de voyelles (au choix de
l'utilisateur) dans un texte non-accentué, terminé par un caractère # et tapé par un
utilisateur.
On utilisera pour cela un sous-programme qui testera si une lettre entrée au clavier est
une consonne ou une voyelle.
On suppose que le texte n'est composé que de minuscules non-accentuées, que les mots ne
sont séparés que par des espaces, qu'il n'y a aucune ponctuation et qu'il n'y a pas de
"retour-chariot".
Ecrire un programme C qui lit un texte contenant au plus 1000 caractères, se terminant par un caractère $ et qui le réaffiche.
Réaliser un programme en langage C permettant de rechercher dans une suite de
caractères donnée, le nombre de fois qu'apparaît une séquence particulière.
La suite de caractères à tester sera entrée la première, dans un tableau de taille
égale à 1000.
Le texte de l'utilisateur se termine par le caractère $.
Le texte de la séquence à rechercher se termine par un caractère $ et contient au plus
10 caractères.
On suppose que ni le texte, ni la séquence ne sont vides.
Déterminer si une phrase entrée au clavier, d'au plus 100 caractères, terminée par
un "retour-chariot", est un palindrome. On suppose que le texte n'est composé
que de minuscules non-accentuées, que les mots ne sont séparés que par des espaces, et
qu'il n'y a aucune ponctuation.
Un palindrome est un mot ou une phrase qui n'est pas modifié lorsqu'on inverse l'ordre
des lettres qui le compose.
Exemples :
Ces pages ont été adaptées à partir de celles réalisées par J.D. Durou et Ph. Joly avec leur aimable autorisation.