La première règle de visibilité est : un objet (constante, variable, type, etc) ne peut être utilisé que dans le bloc (programme ou sous-programme) dans lequel il est déclaré.
Des déclarations peuvent également apparaître en dehors de tous les blocs d'instructions, on dit alors qu'elles sont globales. Les objets ainsi définis peuvent être utilisés partout après leur définition. On peut donc considérer qu'il existe un bloc ``global'' qui inclut tous les autres.
Attention : dans le cas où un objet global et un objet local portent exactement le même nom, c'est la définition la plus locale qui prime.
Les définitions globales de constantes ou de types peuvent se révéler indispensables lorsque des paramètres de sous-programmes utilisent ces définitions. L'exemple suivant illustre la nécessité d'un type global, nous rencontrerons plus loin des constantes dont le caractère global est impératif.
Dans le cas de variables, il est fortement déconseillé --sauf cas très particuliers, exceptionnels-- de profiter de cet effet de visibilité. Les variables globales doivent dans la mesure du possible être bannies.
Remarque : il n'est pas possible (contrairement à des langages comme Pascal ou Ada) d'imbriquer les sous-programmes, c'est-à-dire de définir un sous-programme localement à un autre sous-programme.