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 |