Curso de C++ v2.0
Consultas, lista de correo 'C++ Con Clase' 'C++ Con Clase' página de entrada Librerías estándar C Tabla de contenido Contactar con Webmaster
*Introducción
*1 Toma de contacto
*2 Variables I
*3 Funciones I: Declaración y definición
*4 Operadores I
*5 Sentencias
*6 Declaración de variables
*7 Normas para la notación
*8 Cadenas de caracteres
*9 Conversión de tipos
*10 Variables II: Arrays
*11 Variables III: Estructuras
*12 Variables IV: Punteros 1
*13 Operadores II: Más operadores
*14 Operadores III: Precedencia
*15 Funciones II: Parámetros por valor y referencia
*16 Variables V: Uniones
*17 Variables VI: Punteros 2
*18 Operadores IV: De bits y condicional
*19 Definición de tipos
*20 Funciones III
*21 Funciones IV: Sobrecarga
*22 Operadores V: Sobrecarga
*23 El preprocesador
*24 Funciones V: Recursividad
*25 Variables VII: Modificadores
*26 Espacios con nombre
*27 Clases I: Definiciones
*28 Declaración de clases
*29 Constructores
*30 Destructores
*31 El puntero this
*32 Sistema de protección
*33 Modificadores para miembros
*34 Más sobre funciones
*35 Operadores sobrecargados
*36 Herencia
*37 Funciones virtuales
*38 Derivación múltiple
*39 Trabajar con ficheros
*40 Plantillas
*41 Punteros a miembros
*42 Castings
*43 Excepciones
*Ejemplos capítulos 1 a 6
*Ejemplos capítulos 8 y 9
*A Palabras reservadas C/C++
*B Trigrafos y símbolos alternativos
 . Trigrafos
 . Símbolos alternativos
*C Librerías estándar
*D Streams
<< < > >>

Apéndice B: Trigrafos y símbolos alternativos

Trigrafos.  

La primera tarea del compilador, antes de ninguna otra, consiste en buscar y sustituir secuencias de trigrafos, conjuntos de tres caracteres que empiezan por ??. Esta capacidad existe para solventar el problema con teclados que no dispongan de ciertos caracteres muy usados en C++, como la ~, o en ciertos países , [ o ].

Los trigrafos son en esos casos de gran utilidad. Pero aunque no los necesitemos, es bueno conocerlos, ya que podemos ver listados de programas C++ con extraños símbolos, y debemos ser capaces de interpretarlos.

Sólo existen nueve de esos trigrafos, así que tampoco es tan complicado:

Trigrafo Sustitución
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~

Por ejemplo:

??=include <iostream>
using namespace std;

class clase ??<
  public:
   clase();
   ??-clase();
  private:
   char *s;
??>;

int main()
??<
   char cad??(10??) = "hola";
   
   if(cad??(0??) == 'h' ??!??! cad??(1??) == 'o') 
      cout << cad << endl;
   cin.get();
   return 0;
??>

Se convierte en:

#include <iostream>
using namespace std;

class clase {
  public:
   clase();
   ~clase();
  private:
   char *s;
};

int main()
{
   char cad[10] = "hola";
   
   if(cad[0] == 'h' || cad[1] == 'o') 
      cout << cad << endl;
   cin.get();
   return 0;
}

No todos los compiladores disponen de este mecanismo, por ejemplo, el compilador GCC incluido en las últimas versiones de Dev-C++ no lo tiene.

Símbolos alternativos.  

La utilidad de estos símbolos es parecida a la de los trigrafos: proporcionar alternativas para incluir ciertos caracteres que pueden no estar presentes en ciertos teclados.

Existen más de estos símbolos que de los trigrafos, y en general son más manejables y legibles, veamos la lista:

Alternativo Primario
<% {
%> }
<: [
:> ]
%: #
%:%: ##
and &&
bitor |
or ||
xor ^
compl ~
bitand &
and_eq &=
or_eq |=
xor_eq ^=
not !
not_eq !=

Veamos el mismo ejemplo anterior:

%:include <iostream>
using namespace std;

class clase <%
  public:
   clase();
   compl clase();
  private:
   char *s;
%>;

int main()
<%
   char cad<:10:> = "hola";
   
   if(cad<:0:> == 'h' or cad<:1:> == 'o') cout << cad << endl;
   cin.get();
   return 0;
%>

Se convierte en:

#include <iostream>
using namespace std;

class clase {
  public:
   clase();
   ~clase();
  private:
   char *s;
};

int main()
{
   char cad[10] = "hola";
   
   if(cad[0] == 'h' || cad[1] == 'o') cout << cad << endl;
   cin.get();
   return 0;
}

En este caso, Dev-C++ sí dispone de estos símbolos, y algunos pueden añadir claridad al código, como usar or ó and, pero no deberían usarse para entorpecer la lectura del programa, por muy tentador que esto sea. ;-)

<< < > >>
Free Web Hosting