Documente Academic
Documente Profesional
Documente Cultură
Nombre:
Emmanuel
Garca
Ramrez
Matricula:
08-E|S6-1-118
Materia:
Compiladores e Intrprete
Tema:
Comprobacin de tipos
Aula:
Laboratorio
Profesor:
frantz
Saint
Germain
Sistemas
de tipos
de un comprobador
de tipos sencillo
Integer
Error_Tipo
Tipos complejos
Array[n] of T es de tipo array (T, 1..n)
"T es de tipo pointer (T)
Equivalencia
de expresiones
de tipos
tres modalidades
de equivalencia
entre tipos:
type
tipovector=array[0..9]ofinteger;
tipomatriz = array [0..9] of array [0..9] of integer;
var
vector:array[0..9]ofinteger;
arreglo : array [0..9,0..9] of integer;
matriz
: tipomatriz;
vecvec1
vecvec2
Los tipos asociados a las variables arreglo, matriz, vecvec1 y vecvec2 son
estructuralmente
array(0-9,array(0-9,int))
Sin embargo, Ia variable vector, no es estructuralmente
porque Ia expresin de tipos que le corresponde es:
Equivalencia nominal: Se dice que dos tipos son nominalmente equivalentes cuando
son estructuralmente equivalentes considerando como tipos bsicos e indivisibles a los
identificadores de tipos. Es decir, Ia equivalencia nominal funciona igual que Ia
equivalencia estructural siempre y cuando no existan tipos definidos por el
programador, o bien, si interpretamos que en este caso los tipos del usuario pasan a
formar parte del repertorio de tipos bsicos.
Ejemplo : En el ejemplo anterior los tipos correspondientes a las variables vecvec1 y
vecvec2 son nominalmente equivalentes, porque en ambos casos podemos considerar
Ia expresin de tipos:
array(0-9,tipovector)
Sin embargo, Ia expresin de tipos de Ia variable arreglo es:
array(0-9,array(0-9,int))
equivalente a las anteriores.
} ordena (mat_chica,10);
ordena (mat_grande,40);
conversiones
de tipos
funciones
y operadores.
La sobrecarga es uno de los mecanismos ms utilizados del C++ pues reporta una
gran cantidad de beneficios a la hora de disear las prestaciones de nuestras
funciones de miembro. Existen dos tipos fundamentales de sobrecarga: la sobrecarga
de funciones y la sobrecarga de operadores.
sobrecarga
de funciones
(char *texto);
Como podis observar, se llaman igual pero tienen argumentos distintos. Mientras
que Ia primera no est preparada para recibir ningn tipo de datos, Ia segunda s
que Io est y esperar recibir una cadena de caracteres. Si ahora implementamos
las
funciones
de esta
forma:
void NombreCIase::ImprimirMensaje(void)
{
cout << "\n Esta es Ia funcin sin argumentos";
void NombreCIase::ImprimeMensaje(char
*texto)
{
cout << "\ n Esta es Ia funcin con argumentos
y ha recibido el mensaje " <<
texto;
sobrecarga
de operadores
C#
publicstaticCompIexNumberoper
ator+
(CompIexNua,CompIexNumb)
Todas las sobrecargas de operador son mtodos estticos de Ia clase. Tambin
tenga en cuenta que si sobrecarga el operador de igualdad (==), tambin debe
sobrecargar el operador de desigualdad (!=). Los operadores < y >, y los operadores