SlideShare una empresa de Scribd logo
Universidad Fermín Toro
Departamento de Ingeniería Eléctrica
Cabudare, Estado Lara
Integrante :
Daniela Camacho
Diego Torres
.
Marzo 2018
Computación para
Ingenieros: ARREGLOS
DE REGISTROS
ARREGLOS DE REGISTROS
 Un arreglo de registro es una estructura de datos
homogénea y estática, que se almacena en
memoria RAM y cuyos elementos son
heterogéneos. Esta definición hace explicito al
arreglo de registro como una estructura que
contiene varios Registros, siendo un arreglo una
vector, una matriz, un cubo, entre otros.
DECLARACIÓN DE VARIABLES
La escritura de un programa no sólo implica la formulación
de un algoritmo adecuado; también debe sustentarse en una
estructura de datos apropiada a la solución que se tiene en
mente. Un algoritmo se define como una secuencia finita de
instrucciones, cada una de las cuales tiene un significado
claro y puede realizarse con una cantidad finita de esfuerzo
en una longitud finita de tiempo. Matemáticamente, una
estructura de datos es una función que a cada elemento de un
conjunto determinado le asocia una nupla ordenada de
elementos de otros conjuntos. Teniéndose además una
colección de operaciones definidas sobre dicho modelo. Por
ejemplo al conjunto de empleados de una fábrica podemos
asociarle una estructura de datos con información como:
Nombre del empleado, sueldo devengado, cargo, años de
servicio, etc. En la medida en que un programa conjuge estos
dos elementos Algoritmos y Estructuras de datos - de una
manera coherente se obtendrán mejores resultados.
DECLARACIÓN DE VARIABLES
 TIPOS ENUMERADOS
Un tipo enumerado es una secuencia ordenada de
identificadores, donde cada identificador se interpreta como dato
individual. Estos datos individuales, tomados colectivamente, se
asocian a un nombre que sirve para identificar el tipo. En la
definición de un tipo enumerado se deben especificar sus
elementos en el ORDEN en que se desean.
Ejemplo:
Type
Operacion = (suma, resta, mult, div);
Dia = (lun, mar, mie, jue, vie, sab, dom);
Una variable del tipo Dia puede asumir cualquiera de los 7
valores mencionados.
DECLARACIÓN DE VARIABLES
TIPO CADENA DE CARACTERES (STRING).
En Object Pascal una cadena de caracteres se
considera como un ARREGLO o vector de
caracteres. Es por ésto que mediante el subíndice
adecuado se puede acceder a caracteres
individuales en una cadena. Al declarar una
variable de cadena como un tipo -o directamente en
la declaración de variables- se puede indicar su
longitud (número máximo de caracteres que puede
contener) entre paréntesis cuadrados. Si esta
longitud no se especifica, Object Pascal asume un
máximo de 255 caracteres.
DECLARACIÓN DE VARIABLES
 TIPO ARREGLO (ARRAY).
El arreglo (array) es un tipo estructurado que consta de un número fijo
de componentes que tienen asociado un identificador común a pesar de
representar múltiples elementos. Cada componente de un arreglo se
referencia mediante el nombre del arreglo seguido de un subíndice
encerrado entre paréntesis cuadrados. Los elementos del arreglo pueden
ser de cualquier clase, siempre y cuando todos pertenezcan al mismo
tipo.
Declaración de arreglos.
La declaración o definición consta de la palabra ARRAY seguida por el
tipo de índice encerrado entre paréntesis cuadrados [], la palabra OF y el
tipo de los elementos. El tipo de índice puede ser un ordinal de tipo
simple o un subrango. El arreglo puede ser de cualquier tipo, incluyendo
tipos estructurados.
Suponiendo que un programa necesita una lista de cien elementos de
tipo real, la declaración del arreglo se puede escribir así:
Var
lista : array [1..100] of real;
DECLARACIÓN DE VARIABLES
 TIPO REGISTRO (RECORD)
Un registro es una estructura que consta de varios elementos constitutivos
llamados campos. Los campos pueden ser de diferentes tipos, incluyendo
escalares, arreglos, registros, etc.
Declaración de Registros.
La declaración de un registro se hace con la palabra record seguida de una lista
de campos (con el tipo de cada uno), y termina con la palabra end.
LA SENTENCIA WITH.
Si observamos las líneas anteriores, nos damos cuenta de que la referencia a
registros se hace un poco complicada y monótona porque tenemos que repetir los
nombres del registro cada vez que se hace referencia a un campo del mismo. En
tales casos se ofrece la instrucción WITH, la cual permite omitir el nombre de los
registros en los designadores de campo.
La instrucción WITH consta de la palabra with seguida por una lista de variables
del tipo registro separadas por comas y terminada con la palabra DO (hacer).
Enseguida deberán ir las instrucciones sobre las que actúa.
DECLARACIÓN DE VARIABLES
 Registros Variantes.
La sintaxis del tipo registro permite una parte
variante, dando la posibilidad de que un campo del
registro pueda variar a lo largo del programa entre
algunos tipos predefinidos dependiendo del valor
que se asigne a un campo particular dentro del
registro (el campo de marca).
DECLARACIÓN DE VARIABLES
 TIPO CONJUNTO (SET)
En general, un conjunto es una colección ordenada de datos
simples (todos del mismo tipo), llamados elementos.
Con el fin de utilizar el concepto de conjunto, primero se debe
definir un tipo conjunto, con el que se podrán declarar variables
de tipo conjunto, cuyos valores individuales sean elementos de
este tipo de conjunto. De hecho, una variable conjunto puede
representar cualquier número de elementos del conjunto,
incluído ninguno. Esta característica nos ofrece una manera
sencilla de determinar si una entidad o evento está dentro de
una o más categorias predefinidas.
En Object Pascal, los elementos son datos de algún tipo
previamente declarado. Ejemplos de Conjuntos son:
 Los números enteros de 1 a 100.
 Las letras del alfabeto = ['a'..'z','A'..'Z'].
 Las vocales = [a,e,i,o,u].
 B = [i,o,a,u,e].
EJEMPLOS
Ejemplo:
Se necesita almacenar la información de cada estudiante de
métodos 1, sabiendo que son 63, los datos que se deben
almacenar son: nombre, apellido, edad, sexo, cantidad de
materias y cum o promedio.
 Ident_Registro = Información Alumno
 Id_Nombre: String
 Id_Apellido: String
 Id_Edad: entero
 Id_sexo: String
 d_Cantidad Mat: entero
Id_cum: real
Fin declaración registro
DIFERENCIA CON LOS ARREGLOS
UNIDIMENSIONALES Y
MULTIDIMENSIONALES.
Un arreglo unidimensional es un tipo de datos
estructurado que está formado de una colección
finita y ordenada de datos del mismo tipo. Es la
estructura natural para modelar listas de
elementos iguales.
Los arreglos multidimensionales tienen más de una
dimensión. En C#, las dimensiones se manejan por
medio de un par de corchetes, dentro de los que se
escriben los valores de cada dimensión, separados
por comas
DIFERENCIA CON LOS ARREGLOS
UNIDIMENSIONALES Y
MULTIDIMENSIONALES.
Ejemplo:
Se necesita almacenar la información de cada estudiante de
métodos 1, sabiendo que son 63, los datos que se deben
almacenar son: nombre, apellido, edad, sexo, cantidad de
materias y cum o promedio.
 Ident_Registro = Información Alumno
 Id_Nombre: String
 Id_Apellido: String
 Id_Edad: entero
 Id_sexo: String
 d_Cantidad Mat: entero
Id_cum: real
Fin declaración registro
DECLARACIÓN CON TYPEDEF.
Una declaración typedef es una declaración con
typedef como clase de almacenamiento. El
declarador se convierte en un nuevo tipo. Puede
utilizar declaraciones typedef para construir
nombres más cortos o más significativos para tipos
ya definidos por C o para tipos que haya declarado.
Los nombres de typedef permiten encapsular
detalles de la implementación que pueden cambiar.
Una declaración typedef se interpreta igual que
una declaración de variable o de función, pero el
identificador, en lugar de suponer el tipo
especificado por la declaración, se convierte en un
sinónimo del tipo.
DECLARACIÓN CON TYPEDEF.
Sintaxis
declaration:
declaration-specifiers init-declarator-list opt ;
declaration-specifiers:
storage-class-specifier declaration-specifiers opt
type-specifier declaration-specifiers opt
type-qualifier declaration-specifiers opt
storage-class-specifier:
typedef
type-specifier:
void
char
short
int
long
float
double
signed
unsigned
struct-or-union-specifier
enum-specifier
typedef-name
typedef-name:
identifier

Más contenido relacionado

DOCX
Programacion
PPTX
Julio evies computacion
PPTX
Estructuras en C
PPT
Clase III Estructura de Datos IUTE - Mérida
PDF
Arrays
DOCX
Segundo trabajo
PPT
Ambiente
PPT
Ambiente de programación en pascal
Programacion
Julio evies computacion
Estructuras en C
Clase III Estructura de Datos IUTE - Mérida
Arrays
Segundo trabajo
Ambiente
Ambiente de programación en pascal

La actualidad más candente (17)

PPT
Ambiente de programacin en pascal
PDF
AlgoríTmica Y ProgramacióN
PPS
Identificadores, variables y constantes
PDF
Tema 5 arreglos y cadenas por gio
PPTX
Cetis 109 jen_ax
PPTX
Constante y variable
PDF
Clase 10_ programacion
PDF
Tema 11 expresiones regulares en java por gio
PPSX
Tema 1-2 identificadores - variable y constante
PPTX
Presentacion C++
PPTX
Visaul
PPTX
INFODELPHI
DOCX
Arreglos en c++2020
PDF
Pseudocodigo-funciones y operaciones
PPT
Logica taller de tipo de datos
PPTX
Algebra discreta
DOC
SeúDocodigo
Ambiente de programacin en pascal
AlgoríTmica Y ProgramacióN
Identificadores, variables y constantes
Tema 5 arreglos y cadenas por gio
Cetis 109 jen_ax
Constante y variable
Clase 10_ programacion
Tema 11 expresiones regulares en java por gio
Tema 1-2 identificadores - variable y constante
Presentacion C++
Visaul
INFODELPHI
Arreglos en c++2020
Pseudocodigo-funciones y operaciones
Logica taller de tipo de datos
Algebra discreta
SeúDocodigo
Publicidad

Similar a Daniela camacho arreglos (20)

PPTX
Datos y algoritmos
PPTX
Arreglos de registros
PPTX
Estructura de datos y algortimos
PPS
2011 clase17
PPS
2011 clase17
PPT
Manejo de memoria
PPT
Manejo De Memoria
DOCX
5ta Evaluación de Progamación.docx
PDF
Apuntes
PDF
Apuntes
PPT
Ambiente de programación en pascal
PPT
Ambientedeprogramacinenpascal 111015091809-phpapp02
PPTX
Programación 2
PPTX
c++_ECCI.pptx
DOCX
Bryan gordillo ensayo_arreglos
PPTX
Estructuras basicas
DOCX
Manual laboratorio de programación i
PDF
PPT
Clase 10 Estructuras De Datos Y Arreglos
PPTX
Estructuras de datos y algoritmos
Datos y algoritmos
Arreglos de registros
Estructura de datos y algortimos
2011 clase17
2011 clase17
Manejo de memoria
Manejo De Memoria
5ta Evaluación de Progamación.docx
Apuntes
Apuntes
Ambiente de programación en pascal
Ambientedeprogramacinenpascal 111015091809-phpapp02
Programación 2
c++_ECCI.pptx
Bryan gordillo ensayo_arreglos
Estructuras basicas
Manual laboratorio de programación i
Clase 10 Estructuras De Datos Y Arreglos
Estructuras de datos y algoritmos
Publicidad

Más de WhitneyPeralta (20)

PPTX
Proceso de Endurecimiento Mecanizado de Metales
PDF
9 joselyn adriana carmona aldana
PDF
8 joselyn adriana carmona aldana
PDF
7 joselyn adriana carmona aldana
PDF
6 joselyn adriana carmona aldana
PDF
5 joselyn adriana carmona aldana
PDF
joselyn adriana carmona aldana
PDF
3 joselyn adriana carmona aldana
PDF
2 joselyn adriana carmona aldana
PDF
1 joselyn adriana carmona aldana
PDF
Ensayo 1 jheickson romario noguera torin
PDF
Erasmig querales antecedentes
PDF
Plan de negocios de erasmig querales
PDF
Katherine mariana figueroa flores act8
PDF
Daneila camacho
PDF
Kathy plan de nego
PDF
Mapa concptual
PDF
Calculo numerico erasmig querales barrio
PDF
Practica7 katherine mariana figueroa flores
PDF
Glosario de terminos pereira
Proceso de Endurecimiento Mecanizado de Metales
9 joselyn adriana carmona aldana
8 joselyn adriana carmona aldana
7 joselyn adriana carmona aldana
6 joselyn adriana carmona aldana
5 joselyn adriana carmona aldana
joselyn adriana carmona aldana
3 joselyn adriana carmona aldana
2 joselyn adriana carmona aldana
1 joselyn adriana carmona aldana
Ensayo 1 jheickson romario noguera torin
Erasmig querales antecedentes
Plan de negocios de erasmig querales
Katherine mariana figueroa flores act8
Daneila camacho
Kathy plan de nego
Mapa concptual
Calculo numerico erasmig querales barrio
Practica7 katherine mariana figueroa flores
Glosario de terminos pereira

Último (20)

DOCX
PLAN DE AREA DE CIENCIAS SOCIALES TODOS LOS GRUPOS
PDF
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
PDF
LIBRO 2-SALUD Y AMBIENTE-4TO CEBA avanzado.pdf
PDF
La Formacion Universitaria en Nuevos Escenarios Ccesa007.pdf
PDF
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf
PDF
ACERTIJO EL CONJURO DEL CAZAFANTASMAS MATEMÁTICO. Por JAVIER SOLIS NOYOLA
PDF
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
DOCX
PLAN DE CASTELLANO 2021 actualizado a la normativa
PDF
Introducción a la historia de la filosofía
DOCX
PLANES DE área ciencias naturales y aplicadas
PDF
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
PDF
IPERC...................................
PPTX
Clase 3 del silabo-gestion y control financiero
PDF
RM2025 - FUNDAMENTOS TEÓRICOS - PEDIATRÍA.pdf
PDF
La lluvia sabe por qué: una historia sobre amistad, resiliencia y esperanza e...
PPTX
TEMA 1ORGANIZACIÓN FUNCIONAL DEL CUERPO, MEDIO INTERNO Y HOMEOSTASIS (3) [Aut...
PDF
informe tipos de Informatica perfiles profesionales _pdf
PDF
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
PDF
Introduccion a la Investigacion Cualitativa FLICK Ccesa007.pdf
PDF
Como Potenciar las Emociones Positivas y Afrontar las Negativas Ccesa007.pdf
PLAN DE AREA DE CIENCIAS SOCIALES TODOS LOS GRUPOS
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
LIBRO 2-SALUD Y AMBIENTE-4TO CEBA avanzado.pdf
La Formacion Universitaria en Nuevos Escenarios Ccesa007.pdf
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf
ACERTIJO EL CONJURO DEL CAZAFANTASMAS MATEMÁTICO. Por JAVIER SOLIS NOYOLA
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
PLAN DE CASTELLANO 2021 actualizado a la normativa
Introducción a la historia de la filosofía
PLANES DE área ciencias naturales y aplicadas
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
IPERC...................................
Clase 3 del silabo-gestion y control financiero
RM2025 - FUNDAMENTOS TEÓRICOS - PEDIATRÍA.pdf
La lluvia sabe por qué: una historia sobre amistad, resiliencia y esperanza e...
TEMA 1ORGANIZACIÓN FUNCIONAL DEL CUERPO, MEDIO INTERNO Y HOMEOSTASIS (3) [Aut...
informe tipos de Informatica perfiles profesionales _pdf
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
Introduccion a la Investigacion Cualitativa FLICK Ccesa007.pdf
Como Potenciar las Emociones Positivas y Afrontar las Negativas Ccesa007.pdf

Daniela camacho arreglos

  • 1. Universidad Fermín Toro Departamento de Ingeniería Eléctrica Cabudare, Estado Lara Integrante : Daniela Camacho Diego Torres . Marzo 2018 Computación para Ingenieros: ARREGLOS DE REGISTROS
  • 2. ARREGLOS DE REGISTROS  Un arreglo de registro es una estructura de datos homogénea y estática, que se almacena en memoria RAM y cuyos elementos son heterogéneos. Esta definición hace explicito al arreglo de registro como una estructura que contiene varios Registros, siendo un arreglo una vector, una matriz, un cubo, entre otros.
  • 3. DECLARACIÓN DE VARIABLES La escritura de un programa no sólo implica la formulación de un algoritmo adecuado; también debe sustentarse en una estructura de datos apropiada a la solución que se tiene en mente. Un algoritmo se define como una secuencia finita de instrucciones, cada una de las cuales tiene un significado claro y puede realizarse con una cantidad finita de esfuerzo en una longitud finita de tiempo. Matemáticamente, una estructura de datos es una función que a cada elemento de un conjunto determinado le asocia una nupla ordenada de elementos de otros conjuntos. Teniéndose además una colección de operaciones definidas sobre dicho modelo. Por ejemplo al conjunto de empleados de una fábrica podemos asociarle una estructura de datos con información como: Nombre del empleado, sueldo devengado, cargo, años de servicio, etc. En la medida en que un programa conjuge estos dos elementos Algoritmos y Estructuras de datos - de una manera coherente se obtendrán mejores resultados.
  • 4. DECLARACIÓN DE VARIABLES  TIPOS ENUMERADOS Un tipo enumerado es una secuencia ordenada de identificadores, donde cada identificador se interpreta como dato individual. Estos datos individuales, tomados colectivamente, se asocian a un nombre que sirve para identificar el tipo. En la definición de un tipo enumerado se deben especificar sus elementos en el ORDEN en que se desean. Ejemplo: Type Operacion = (suma, resta, mult, div); Dia = (lun, mar, mie, jue, vie, sab, dom); Una variable del tipo Dia puede asumir cualquiera de los 7 valores mencionados.
  • 5. DECLARACIÓN DE VARIABLES TIPO CADENA DE CARACTERES (STRING). En Object Pascal una cadena de caracteres se considera como un ARREGLO o vector de caracteres. Es por ésto que mediante el subíndice adecuado se puede acceder a caracteres individuales en una cadena. Al declarar una variable de cadena como un tipo -o directamente en la declaración de variables- se puede indicar su longitud (número máximo de caracteres que puede contener) entre paréntesis cuadrados. Si esta longitud no se especifica, Object Pascal asume un máximo de 255 caracteres.
  • 6. DECLARACIÓN DE VARIABLES  TIPO ARREGLO (ARRAY). El arreglo (array) es un tipo estructurado que consta de un número fijo de componentes que tienen asociado un identificador común a pesar de representar múltiples elementos. Cada componente de un arreglo se referencia mediante el nombre del arreglo seguido de un subíndice encerrado entre paréntesis cuadrados. Los elementos del arreglo pueden ser de cualquier clase, siempre y cuando todos pertenezcan al mismo tipo. Declaración de arreglos. La declaración o definición consta de la palabra ARRAY seguida por el tipo de índice encerrado entre paréntesis cuadrados [], la palabra OF y el tipo de los elementos. El tipo de índice puede ser un ordinal de tipo simple o un subrango. El arreglo puede ser de cualquier tipo, incluyendo tipos estructurados. Suponiendo que un programa necesita una lista de cien elementos de tipo real, la declaración del arreglo se puede escribir así: Var lista : array [1..100] of real;
  • 7. DECLARACIÓN DE VARIABLES  TIPO REGISTRO (RECORD) Un registro es una estructura que consta de varios elementos constitutivos llamados campos. Los campos pueden ser de diferentes tipos, incluyendo escalares, arreglos, registros, etc. Declaración de Registros. La declaración de un registro se hace con la palabra record seguida de una lista de campos (con el tipo de cada uno), y termina con la palabra end. LA SENTENCIA WITH. Si observamos las líneas anteriores, nos damos cuenta de que la referencia a registros se hace un poco complicada y monótona porque tenemos que repetir los nombres del registro cada vez que se hace referencia a un campo del mismo. En tales casos se ofrece la instrucción WITH, la cual permite omitir el nombre de los registros en los designadores de campo. La instrucción WITH consta de la palabra with seguida por una lista de variables del tipo registro separadas por comas y terminada con la palabra DO (hacer). Enseguida deberán ir las instrucciones sobre las que actúa.
  • 8. DECLARACIÓN DE VARIABLES  Registros Variantes. La sintaxis del tipo registro permite una parte variante, dando la posibilidad de que un campo del registro pueda variar a lo largo del programa entre algunos tipos predefinidos dependiendo del valor que se asigne a un campo particular dentro del registro (el campo de marca).
  • 9. DECLARACIÓN DE VARIABLES  TIPO CONJUNTO (SET) En general, un conjunto es una colección ordenada de datos simples (todos del mismo tipo), llamados elementos. Con el fin de utilizar el concepto de conjunto, primero se debe definir un tipo conjunto, con el que se podrán declarar variables de tipo conjunto, cuyos valores individuales sean elementos de este tipo de conjunto. De hecho, una variable conjunto puede representar cualquier número de elementos del conjunto, incluído ninguno. Esta característica nos ofrece una manera sencilla de determinar si una entidad o evento está dentro de una o más categorias predefinidas. En Object Pascal, los elementos son datos de algún tipo previamente declarado. Ejemplos de Conjuntos son:  Los números enteros de 1 a 100.  Las letras del alfabeto = ['a'..'z','A'..'Z'].  Las vocales = [a,e,i,o,u].  B = [i,o,a,u,e].
  • 10. EJEMPLOS Ejemplo: Se necesita almacenar la información de cada estudiante de métodos 1, sabiendo que son 63, los datos que se deben almacenar son: nombre, apellido, edad, sexo, cantidad de materias y cum o promedio.  Ident_Registro = Información Alumno  Id_Nombre: String  Id_Apellido: String  Id_Edad: entero  Id_sexo: String  d_Cantidad Mat: entero Id_cum: real Fin declaración registro
  • 11. DIFERENCIA CON LOS ARREGLOS UNIDIMENSIONALES Y MULTIDIMENSIONALES. Un arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. Los arreglos multidimensionales tienen más de una dimensión. En C#, las dimensiones se manejan por medio de un par de corchetes, dentro de los que se escriben los valores de cada dimensión, separados por comas
  • 12. DIFERENCIA CON LOS ARREGLOS UNIDIMENSIONALES Y MULTIDIMENSIONALES. Ejemplo: Se necesita almacenar la información de cada estudiante de métodos 1, sabiendo que son 63, los datos que se deben almacenar son: nombre, apellido, edad, sexo, cantidad de materias y cum o promedio.  Ident_Registro = Información Alumno  Id_Nombre: String  Id_Apellido: String  Id_Edad: entero  Id_sexo: String  d_Cantidad Mat: entero Id_cum: real Fin declaración registro
  • 13. DECLARACIÓN CON TYPEDEF. Una declaración typedef es una declaración con typedef como clase de almacenamiento. El declarador se convierte en un nuevo tipo. Puede utilizar declaraciones typedef para construir nombres más cortos o más significativos para tipos ya definidos por C o para tipos que haya declarado. Los nombres de typedef permiten encapsular detalles de la implementación que pueden cambiar. Una declaración typedef se interpreta igual que una declaración de variable o de función, pero el identificador, en lugar de suponer el tipo especificado por la declaración, se convierte en un sinónimo del tipo.
  • 14. DECLARACIÓN CON TYPEDEF. Sintaxis declaration: declaration-specifiers init-declarator-list opt ; declaration-specifiers: storage-class-specifier declaration-specifiers opt type-specifier declaration-specifiers opt type-qualifier declaration-specifiers opt storage-class-specifier: typedef type-specifier: void char short int long float double signed unsigned struct-or-union-specifier enum-specifier typedef-name typedef-name: identifier