Jean-Jacques BOURDIN
A variable is a tuple of three elements: <name, type, address>
One needs to declare the variables ASAP in the function. Then they can
be set by the operator = (pronounce "receive").
Une variable est un triplet : (nom, type, espace mémoire).
La taille de l'espace mémoire est définie par le type voir
ci-dessous. On peut modifier le contenu de l'espace mémoire par
l'opération d'affectation = Qu'on doit prononcer "reçoit".
/* les autres fonctions ne sont pas encore citées */
int main () {
int max; /* sert plusieurs fois */
max = 10;
printf("%d \t=> \t %d\n",max, serie(max));
max = 50;
printf("%d \t=> \t %d\n",max, serie(max));
max = 100;
printf("%d \t=> \t %d\n",max, serie(max));
max = 500;
printf("%d \t=> \t %d\n",max, serie(max));
max = 1000;
printf("%d \t=> \t %d\n",max, serie(max));
}
|
#include <stdio.h>
void voir (int a, int b) {
printf("a est en %p ", &a);
printf("et a cette adresse on trouve %d\n", *(&a));
printf("b est en %p ", &b);
printf("et a cette adresse on trouve %d\n", *(&b));
}
int main () {
voir (5,9);
return 0;
}
|
Blanc14.local: a.out a est en 0x16fc674fc et a cette adresse on trouve 5 b est en 0x16fc674f8 et a cette adresse on trouve 9 |
Hereafter you'll find examples of expressions:
On parlera d'expression pour décrire un ensemble de formules que l'on peut évaluer à base
d'opérateurs "bien construits" et exécutables. Exemples :
3 + 5 * 6 (3 + 5) * 6 6 * 9 / 5 |
3 + 3 + * 6 6 9 5 |
| type | taille | genre |
| void | 0 | vide |
| char | ≥1 | caractère |
| short | ≥2 | entier " court " |
| long (ou int) | ≥4 | entier "long" |
| float | ≥4 | nombre à virgule |
| double | ≥8 | nombre à virgule, plus précis |
| long long int | ≥8 | entier "très long " |
| long double | ≥16 | nombre à virgule précis |
3/2 donne 1 ( 3 * 2.0 ) / 5 donne 1.2 |
float inverse (int n) {
if (n == 0.0) {
return 0.0;
}
else {
return (1.0 / (float) n);
}
}
int serie (int n) {
if (n == 0) {
return 0;
}
else {
return inverse(n) + serie (n-1);
}
}
int main () {
printf("%d \t=> \t %d\n",10, serie(10));
printf("%d \t=> \t %d\n",50, serie(50));
printf("%d \t=> \t %d\n",100, serie(100));
printf("%d \t=> \t %d\n",1000, serie(1000));
}
/* ------------------ Essai -----------------
otake: a.out
10 => 1
50 => 1
100 => 1
500 => 1
1000 => 1
---------------------------------------------*/
|
Donnez la sous forme récursive terminale.
A statement is a ";", or an expression followed by an
instruction (therefore with a ";" at
the end).
Une instruction est soit ";", soit une expression suivie
d’une instruction (donc aussi de
";")
A statement may also be presented as a { followed by a } and
containing only valable statements. It is called a block
Une instruction peut aussi être présentée comme un ensemble
d’instructions entourées par des accolades. On parle alors de bloc.
| Operator | Associativity | Arity |
| () [] -> . | GD | - |
| ! ~ ++ -- + - | DG | 1 |
| * & (type) sizeof | DG | 1 |
| * / % | GD | 2 |
| + - | GD | 2 |
| << >> | GD | 2 |
| < <= > >= | GD | 2 |
| == != | GD | 2 |
| & | GD | 2 |
| ^ | GD | 2 |
| | | GD | 2 |
| && | GD | 2 |
| || | GD | 2 |
| ? : | DG | 3 |
| = += -= *= /= %= <<= >>= &= ^= |= | DG | 2 |
| , | GD | 2 |