Guia Fundamentos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 24

INGENIERIA ELCTRICA / INGENIERIA DE CONTROL Y AUTOMATIZACION

ACADEMIA DE COMPUTACION

GUIA DE FUNDAMENTOS DE PROGRAMACION (1ER SEMESTRE) 12SEPTIEMBRE2020

1. Introduccion.

1.1 Que es una computadora. Es una máquina de calcular con una secuencia de
operaciones establecidas en un programa almacenado dentro de ella.

1.2 Cuáles son las partes de una computadora. Son el HARDWARE y el SOFTWARE. Similar
al cuerpo de un ser vivo y el estado de no estar muerto.

1.3 HARDWARE. Es la parte física, objetiva, tangible de la computadora. Se divide en


PROCESADOR CENTRAL y PERIFERICOS. Similar al Sol con sus Planetas.

1.3.1 PROCESADOR CENTRAL. CPU (Unidad de procesamiento central UPC). Es el


corazón de la computadora, es donde se realiza todo el trabajo o
procesamiento. Está formada por MEMORIA CENTRAL y REGISTROS
OPERACIONALES. Análogo a una persona que trabaja con la información que se
encuentra en un escritorio.

1.3.1.1 MEMORIA CENTRAL. Es donde se encuentra la información para que operen


los registros operacionales. La información puede ser alfanumérica como un
conjunto de caracteres o numérica. Esta característica es 1 de 3 que
determina la potencia de un equipo de cómputo.

1.3.1.1.1 Bit es la mínima cantidad de información que maneja la


computadora. Puede tener cualquiera de 2 valores ON/OFF
prendido/apagado verdadero/falso T/F 1/0.

1.3.1.1.2 Byte o carácter es cualquiera de los caracteres con los que se opera.
Es un conjunto de 8 bits y según la combinación de ellos, es el
carácter, todo esto de acuerdo a un código, el más usual es el código
ASCII.

1.3.1.1.3 Cuando la información es numérica y en vista que la computadora


opera con bits, esta información se manipula con la aritmética
binaria. Únicamente existen los valores 0 y 1.

1.3.1.1.4 Aritmética octal. Se opera como una representación compacta de


la información en binario, y por su facilidad de conversión, está
constituida por 8 símbolos: 0,1,2,3,4,5,6,7.
1.3.1.1.5 Aritmética hexadecimal. Se opera como una representación
compacta de la información en binario, está constituida por 16
símbolos: 0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,F.

1.3.1.2 REGISTROS OPERACIONALES. Es donde se realizan las operaciones o


acciones tomando la información de la memoria central y regresando el
resultado nuevamente a la memoria central. Existen los registros
A,Q,B1,B2,B3 entre otros y de acuerdo al diseño de la computadora. Esta
característica es 2 de 3 que determina la potencia de un equipo de cómputo.

1.3.2 PERIFERICOS. Son dispositivos que están alrededor de la UPC y son los que
interactúan con la memoria central para proporcionar información o para
recibirla después de haber sido procesada. Son de ENTRADA, SALIDA y
ENTRADA/SALIDA.

1.3.2.1 ENTRADA. Permite que del exterior se proporcione información al equipo.


Ejemplos: teclado, lector de tarjetas, ratón, lector de cinta, etc.

1.3.2.2 SALIDA. Permite que del equipo se proporcione información al exterior.


Ejemplos: monitor, impresora, graficador, perforador de tarjetas, grabador
de cinta, etc.

1.3.2.3 ENTRADA/SALIDA. Tiene las dos funciones. Ejemplos: disco duro. Esta
característica es 3 de 3 que determina la potencia de un equipo de cómputo.

1.4 SOFTWARE. Es la parte abstracta, subobjetiva, intangible de la computadora. Se divide


en SISTEMA OPERATIVO, ENSAMBLADOR, INTERPRETES, COMPILADORES, PAQUETES
(Administrativos, Hoja de cálculo, Manejador de datos, Juegos, Aplicaciones especiales),
SISTEMAS, PROGRAMAS DE USUARIO.

1.4.1 SISTEMA OPERATIVO. Es el programa maestro de la computadora, tiene 2


funciones principales:

- Controla la interacción de los elementos de la computadora.

- Controla la interacción de la computadora con el usuario.

Todas las acciones de la computadora pasan por el S.O. y estas órdenes están
en lenguaje de máquina o binario.

1.4.2 ENSAMBLADOR. Es un lenguaje nemónico cuyo resultado es el lenguaje de


máquina en binario. Existe una relación de 1 instrucción en ensamblador se
transforma en 1 instrucción de lenguaje de máquina.

1.4.3 INTERPRETES. Son lenguajes que operan 1 instrucción en lenguaje fuente hasta
generar la acción correspondiente, pasando por el ensamblador y lenguaje de
máquina, para después operar la siguiente instrucción. Esto hace que, al
encontrar un error, se termine la ejecución del programa. Ejemplos de
intérpretes es el basic, dBase. En posteriores ejecuciones se repite en su
totalidad este procedimiento.

1.4.4 COMPILADORES. Son lenguajes que operan todas las instrucciones del lenguaje
fuente, generan el programa ensamblador y posteriormente el programa en
lenguaje de máquina, para después operar la totalidad de acciones. En el caso
de encontrar errores, se termine la ejecución del programa en el paso que vaya,
reportando la totalidad de ellos. Cuando el proceso es exitoso, el programa
ejecutable en su totalidad se guarda, permitiendo que en posteriores ocasiones
se opere este archivo, sin necesidad de compilarlo nuevamente. Ejemplos de
compiladores son Fortran, Cobol, Pascal, “C”, etc.

1.4.5 LENGUAJES. Son un conjunto de postulados e instrucciones para que el usuario


se comunique con la PC. Existen varios criterios para diferenciar unos de otros.

Intérpretes VS Compiladores: Indicados anteriormente.

De acuerdo con su aplicación:

Lenguaje de aplicaciones técnicas, mucho proceso y poca


información: BASIC, FORTRAN.

Lenguaje de aplicaciones administrativas, poco proceso y mucha


información: COBOL, dBASE, Clipper.

Lenguaje de aplicaciones generales: soportan poco / mucho proceso y


poca / mucha información: Pascal, Lenguaje "C".

De acuerdo con el nivel de operar la información y complejidad de


programación:

Mayor nivel: Ada, Modula-2, Pascal, COBOL, FORTRAN, BASIC. Son


lenguajes con instrucciones mnemónicas y poderosas, es decir que
encierran unidades de proceso en una instrucción.

Nivel medio: Lenguaje "C", FORTH, Lenguaje macro ensamblador. Son


lenguajes con instrucciones seudo-mnemónicas que permiten
procesos a nivel mínimo de información, es decir manipulan bits y
también tienen la posibilidad de procesar como los lenguajes de
Mayor nivel.
Menor nivel: Lenguaje ensamblador. Son lenguajes con instrucciones
mnemónicas a nivel de lenguaje de máquina.

Estructurados VS No-estructurados:

Lenguajes estructurados: Operan con la técnica de ejecución del


proceso UP-DOW por lo que, aunque existe, no es necesario ni
recomendable el uso de la instrucción "go to". De la misma manera
tienen la característica de la "compartimentalización" del código y
datos; esto hace posible operar desde el punto de vista lógico, un
conjunto de instrucciones como si fuera una sola. Tal es el caso de
Pascal, Ada, Lenguaje "C". Lenguajes No-estructurados son BASIC,
FORTRAN, COBOL.

1.4.6 PAQUETES. Son un conjunto de programas que de manera amigable permite a


un usuario neófito en computación realizar diferentes tareas.

- Paquetes para procesar palabras. Permite, similar a una máquina de escribir,


realizar documentos. Ejm. Word.

- Hoja de cálculo. Similar a un anaquel de correos, tiene un conjunto de


casilleros dentro de los cuales se guarda información ya sea numérica,
alfanumérica o formulas. Tiene la característica de que, al modificar alguna
información, se actualizan todos los casilleros que tengan alguna relación.
Ejm. Excel.

- Manejador de datos. Su nombre lo indica, permite administrar una base de


datos. Ejm. dBase, Access.

- Juegos. Muy desarrollado por su capacidad de penetración, operan para la


distracción del ser humano.

- Aplicaciones especiales. Permite resolver problemas de ingeniería o de otra


disciplina sin desarrollar tareas laboriosas de cálculo.

1.4.7 SISTEMAS. Son un conjunto de programas que resuelven un problema genérico.


Ejm. Sistema de contabilidad, sistema de control escolar.

1.4.8 PROGRAMAS DE USUARIO. Es un conjunto de instrucciones de acuerdo con un


lenguaje de programación para resolver un problema específico. Ejm. Programa
para obtener un listado de alumnos de un grupo, imprimir la boleta de un
alumno.
2. Pasos para resolver un problema. La solución de un problema está en función de la
inteligencia y experiencia del que trata de resolverlo. Como una guía se puede establecer lo
siguiente:

2.1 Definición del problema. Se refiere a entender el problema, considerando los datos
significativos para la solución y desechando los datos intrascendentes.

2.2 Análisis del problema. Detectar de los datos significativos cuales son los necesarios
como alimentación de entrada y cuál es el/los datos de salida.

2.3 Algoritmo. Se refiere a la formula(s) que resuelve el problema RESULTADO=f(ENTRADA).


Es la parte fundamental del programa.

2.4 Interfaz de usuario. Es un esquema que muestra lo que deseamos que aparezca en el
periférico de salida (monitor, impresora, etc), cuando se ejecuta el programa.

2.5 Pasos computacionales. Indica con palabras el conjunto de acciones que realizará la
computadora en el proceso. Se distinguen 5 pasos que normalmente constituyen el
proceso de un programa iterativo (repetitivo). Este tipo de programa es el más usual,
constituye como el 99% de los programas. El otro tipo de programas es el directo (datos
de entrada, cálculos, resultado; 3 módulos).

2.5.1 Módulo de inicialización. Inicializa un conjunto de variables para poder realizar


el proceso. Puede ser por: Leer variables, asignar valores dentro del programa
o llamar para su ejecución otro subprograma que proporcione dicha
información.

2.5.2 Módulo de proceso. Se ejecutan diferentes acciones para obtener un resultado


de acuerdo con el algoritmo. Este resultado puede ser el final o un resultado
intermedio.

2.5.3 Criterio de fin. Permite definir si el resultado es el final o es intermedio. En el


1er. caso se manda al módulo 2.5.5.

2.5.4 Módulo de modificación realiza modificaciones para repetir el proceso. Se


manda al módulo 2.5.2. después de ejecutarse.

2.5.5 Módulo de resultados. Se obtiene el resultado como el último dentro de los


módulos de proceso.

2.6 Diagrama de flujo. Es una representación gráfica de los Pasos computacionales. Implica
tener una serie de símbolos con un significado predefinido. (es independiente del
lenguaje).
2.7 Codificación. Es una traducción del diagrama de flujo, (es particular de cada lenguaje) a
instrucciones de un lenguaje en particular.

2.8 Prueba del programa. Con la computadora se checa que no tenga errores de sintaxis, si
los hay se corrigen.

Se checa que no halla errores de lógica comparando el resultado con uno previamente
obtenido y comprobado. Si los hay se corrigen.

2.9 Liberación del programa. Al pasar exitosamente el punto 2.8, se libera el programa para
su explotación.

3. Lenguaje “C”. Tiene 2 características.

- Lenguaje de nivel medio. Tiene propiedades comunes a los de mayor nivel


(instrucciones que realizan tareas complejas y son mnemotécnicas), y a los
lenguajes de menor nivel (opera a nivel bit, byte, palabras y punteros).

- Lenguaje estructurado. Opera con la técnica de proceso UP-DOW por lo que


no requiere de la instrucción “go to”. Adicionalmente realiza la
“compartimentación”, un conjunto de instrucciones las considera como
una, desde el punto de vista lógico.

3.1 Estructura de un programa en “C”.

3.1.1 Comentarios. Para el equipo no es necesario, es una explicación general del


programa para el usuario. Son de dos tipos:

• De un solo renglón o el resto de un renglón, se precede con “//”

• De uno o más renglones, se delimitan con “/*” y “*/”

3.1.2 Directivas al compilador. Precedidas por “#”. Son archivos de cabecera (header
files) que intercalan librerías con seudoinstrucciones para la ejecución; son
definiciones de valores numéricos, letreros o fórmulas. Ejemplos:

#include <stdio.h>

#define PI 3.14159

#define Tit1 “Titulo uno”

#define ATria “base * altura / 2”


3.1.3 Declaración o prototipo de funciones. Ejem:

Int fun1(int x, float y);

3.1.4 Variables globales. Ejem:

Int a; float b; char arr[10]; int aa=5;

Se definen antes de “main” o fuera de la definición de cualquier función.

3.1.5 Función principal.

Int main()

3.1.6 Indicador de inicio de bloque de instrucciones.

3.1.7 Variables locales. Ejm:

Int a; float b; char arr[10]; int aa=5;

3.1.8 Instrucciones ejecutables. Ejm:

A=100; printf(“\nLetrero X Valor: %d”,var);

3.1.9 Indicador de cierre de bloque de instrucciones.

3.1.10 Definición de funciones. Se repite el ciclo de la función principal “main()”.

3.2 Variables. Son identificadores que almacenan diferentes valores dentro del proceso.

3.2.1 Sintaxis. Se definen como XYYYYYYY, con un máximo de 32 caracteres, donde:

- X es un carácter alfabético.

- YYYYYYYYY son caracteres alfanuméricos o el carácter de subrayado.

Ejemplos:

Correctos: con1, prueba23, balance_total

Incorrectos: 1cont, hola!, balance-total

En “C” las minúsculas y las mayúsculas se tratan diferentes.

3.2.2 Tipos de variables:

- char 8bits rango 0-255 (código ASCII).


- Int 16bits rango -32,768 a 32767

- float 32bits rango 3.4E-38 a 3.4E+38

- doublé 64bits rango 1.7E-308 a 1.7E+308

- void 0bits sin valor.

3.2.3 Modificadores de las variables enteras.

- signed es redundante es el valor de default, tiene signo +/-

- unsigned sin signo únicamente son +. El rango se va al doble

- long incrementa el rango

- short utiliza menos bits, decrementa el rango.

3.2.4 Declaración e inicialización de variables. Ejemplos:

char ch=´a´, ch2, ch3;

int a,b,c,primero=0,d;

float balance=123.45;

3.2.5 Tipo de variables de acuerdo con el ámbito.

- Variables locales (auto). Se definen y existen únicamente dentro del block


({}) donde se crearon.

- Variables globales. Se definen fuera de una función y existen durante la


ejecución del proceso, las reconocen todas las funciones del proceso.

- Variables estáticas. Similares a las locales, pero mantienen el ultimo valor


que adquieren en el proceso.

- Variables registro. Se almacenan en los registros del procesador, no en la


memoria central. Permiten una mayor velocidad en su operación.

3.2.6 Parámetros. Se refieren a las variables que se mandan cuando se llama a una
función, para que pueda operar.

3.2.7 Sentencia de asignación.

nombre_de_la_variable = expresión

expresión es un conjunto de identificadores combinados con operadores.


3.2.8 Casting o molde. Permite forzar el tipo de una variable o expresión. Ejm:

char c; int i; float f; double d;

d=(double) (f* (float) (I + (int) c))

3.3 Constantes. Son identificadores que almacenan permanentemente valores dentro del
proceso. Los tipos de constantes son los mismos que las variables. Dentro de las de tipo
char, existen unas constantes especiales con un significado:

\b espacio hacia atrás

\f salto de página

\n salto de línea

\r retorno de carro

\t tabulador horizontal

\” comillas dobles

\’ comillas sencillas

\0 nulo

\\ diagonal inversa

\v tabulador vertical

\a alarma

\o constante octal

\x constante hexadecimal

3.4 Operadores. Son símbolos que realizan una acción con 1 o 2 operandos (variables o
expresiones). Son:

3.4.1 Aritméticos:

ACCIÓN OPERADOR PRECEDENCIA

Resta - 1

Suma + 1

Producto * 2
División / 2

División en modulo % 2

Decremento -- 3

Incremento ++ 3

3.4.2 Lógicos:

A B A&&B A||B ¡A

F F F F V

F V F V V

V F F V F

V V V V F

3.4.3 Relacionales: > >= < <= == ¡=

3.4.4 Otros operadores:

Operador ?: Exp1 ? Exp2 : Exp3

Si Exp1 es verdadera se ejecuta Exp2 de lo contrario se ejecuta Exp3. Es un “if”


compactado.

Operadores de punteros: “&” y “*”

Dirección = &variable

Contenido = *dirección

Operador sizeof

Regresa el tamaño en bytes de la variable o especificador de tipo

Operador “.” y “->”

Hacen referencia a elementos de una estructura, normal o dada como un


puntero.
3.5 Sentencias de control. Instrucciones que controlan el flujo en la operación de un
proceso. Lo realizan por medio de una expresión de control; si es verdadera se realiza
una acción, de lo contrario no.

Se dividen en:

Sentencias de control de flujo: if, if/else, if anidado, switch

Sentencias de control iterativas: while, do/while, for

Sentencias de control auxiliaries: continue, break, exit, return

3.5.1 if

sintaxis:

if(expression) sentencia;

sentencia puede ser un solo postulado, terminado con “;” o un conjunto de


postulados que además de “;” deben estar delimitados con “{}”

3.5.2 if/else

sintaxis:

if(expresión) sentencia1;

else sentencia2;

3.5.3 if anidado

sintaxis:

if(expresión)sentencia1;

else if(expreion2)sentencia3;

else if(expreion3)sentencia4;

………

else sentencian;

3.5.4 switch

sintaxis:

switch(variable){
case constante1:

secuencia de sentencias;

break;

case constante2:

secuencia de sentencias;

break;

case constante3:

secuencia de sentencias;

break;

……………

default:

secuencia de sentencias;

3.5.5 while

sintaxis

while(condicion)sentencia;

3.5.6 do/while

sintaxis

do{

sentencia;

}while(condicion);

3.5.7 for

sintaxis

for(inicialización;condición_final;modificación ) sentencia;

3.5.8 continue
En un bucle (while, do/while, for) permite iniciar una nueva iteración
anticipadamente.

Sintaxis: continue;

3.5.9 break

Se usa en el comando switch para terminar un case.

En un bucle (while, do/while, for) permite terminarlo anticipadamente, saliendo


del bucle.

Sintaxis: break;

3.5.10 exit

Forza la terminación de un proceso, sin importar en que función está

Sintaxis: exit(0);

3.5.11 return

Termina la ejecución de una función y regresa el control de donde fue llamada

Sintaxis: return; return valor; return(valor);

3.6 Funciones.

3.6.1 Definicion: Es un subprograma que realiza una tarea y que es llamado por
“main” u otra función y que opcionalmente regresa un valor
(int,float,doublé,char, etc). Para operar, opcionalmente requiere de datos
(parámetros). Al terminar regresa el control a la siguiente instrucción de donde
fue llamado.

3.6.2 Operación. Se realiza en 3 partes.

3.6.2.1 Prototipo o firma de función. Similar a una caja negra, informa del nombre
de la función, que regresa al terminar y que datos requiere para operar.

3.6.2.2 Llamado de la función. Similar a una instrucción, se encuentra dentro del


cuerpo de “main” o de la función que la llama.

3.6.2.3 Definición de la función. Similar a “main” es el conjunto de instrucciones


que necesita realizar para hacer su tarea.

3.6.3 Sentencia “return”


Termina la ejecución de una función y opcionalmente regresa un valor indicado
entre paréntesis o sin ellos. En “C” todas las funciones están al mismo nivel de
ámbito, es decir, no se puede definir una función dentro de otra.

3.6.4 Parámetros de una función. Cuando son necesarios son los datos que requiere
la función para operar, pueden ser por VALOR o por REFERENCIA.

3.6.4.1 Parámetros por VALOR. Se transfiere una copia de la variable, de tal forma
que en si es otra variable. Los cambios que se realicen dentro de la función
se pierden al regresar al main/otra-función.

3.6.4.2 Parámetros por REFERENCIA. Se transfiere la dirección de la variable, de tal


forma que es la misma variable. Los cambios que se realicen dentro de la
función no se pierden al regresar al main/otra-función.

3.7 Arreglos.

3.7.1 Definición

Es un conjunto de variables contiguas en la memoria con el mismo nombre y del


mismo tipo. Se diferencia una variable de otra por el “índice” que comienza con
cero.

3.7.2 Tipo de arreglos. Similar a las variables. Pueden ser int, float, doublé, char, etc.

3.7.3 Dimensiones de un arreglo. Se refiere a las diferentes direcciones donde varían


los índices. Existen arreglos de 1 dimensión, de 2, de 3, hasta de “n”
dimensiones.

3.7.4 Magnitud de un arreglo. Se refiere a la cantidad de elementos del arreglo, esta


es el producto de todas sus dimensiones.

3.7.5 Operación.

3.7.5.1 Creación de arreglos.

Similar a las variables y opcionalmente se pueden inicializar. Ejm:

char ca[10], cb[20]={“cadena”}, cd[]=”abc123”;

char ce[2][3][4]=

{ {“111”},{“112”},{“113”},{“114”} },
{ {“121”},{“122”},{“123”},{“124”} },

{{“131”},{“132”},{“133”},{“134”}}

{ {“211”},{“212”},{“213”},{“214”} },

{ {“221”},{“222”},{“223”},{“224”} },

{{“231”},{“232”},{“233”},{“234”}}

};

Int ia[10], ib[20]={1,2,3,4,5,6,7,8,9,0}, ic[]={1,2,3,4,5};

Int id[2][3][4]=

{111,112,113,114},

{121,122,123,124},

{131,132,133,134}

},

{211,212,213,214},

{221,222,223,224},

{231,232,233,234}

};

3.7.5.2 Manipulación de arreglos. Similar a las variables

char ca, cb[5], cc[2][3];


ca=’x’; strcpy(cb, “abc”);

strcpy(cc[0], “aa”);

strcpy(cc[1], “bb”);

3.7.5.3 Vector. Se llama así a un arreglo de 1 dimensión

Matriz. Arreglo de 2 dimensiones.

Espacio. Arreglo de 3 dimensiones.

Arreglo de n dimensiones.

3.8 Punteros.

3.8.1 Definición.

Es una variable cuyo contenido es una dirección de memoria.

3.8.2 Tipos de punteros. Los mismos que los tipos de variables.

3.8.3 Operación

3.8.3.1 Creación de punteros. Similar a las variables, pero se le antepone un “*”.

Int a,b[5], *c, *d[6];

3.8.3.2 Manejo de punteros.

3.8.3.2.1 Operadores de punteros *, &

& permite obtener la dirección de una variable.

Para obtener el contenido de la dirección guardada en un puntero,


se opera el operador “*”.

3.8.3.2.2 Operaciones permitidas con punteros. Las operaciones permitidas


con los punteros son la suma y resta únicamente.

3.9 Estructuras.

3.9.1 Definición.

Es un tipo de dato definido por el usuario y que aglutina a varias variables básicas (char, int,
float, doouble), y/o otras estructuras.

3.9.2 Operación

3.9.2.1 Creación de estructuras. De acuerdo con la sintaxis:


struct nomEstructura{ variables básicas y/o otras estructuras};

3.9.2.2 Creación de variables tipo estructura

Similar a las variables:

int a,b;

struct nomEstructura lista-de-variables

3.9.2.3 Manejo de estructuras. Similar a las variables básicas, considerando su


elemento.

3.9.3 Ejemplo:

A) Definición o creación de estructuras

struct Fecha{

int aa,mm,dd;

};

struct Alumno{

char nom[30];

int edad;

float prom;

struct Fecha fNac;

B) Creación variables tipo estructura

struct Alumno A1, *pA2, A3[10], *pA4[5];

C) Manipulación de las estructuras.

strcpy(A1.nom, “nomA1”);

pA2→edad=22;

A3[5].prom=7.8;

pA4[3]→fNac.aa=2016;
A3[4].fNac.mm=12;

A1.fNac.dd=30;

3.10 Uniones.

3.10.1 Definición.

Es un tipo de dato definido por el usuario y se refiere a que un espacio de memoria se puede
manipular con diferente formato. Similar a que al perfil del país, por medio de acetatos, se
observen las entidades federativas, o los ríos, o las cadenas montañosas.

3.10.2 Operación

3.10.2.1 Creación o definición de “uniones”. De acuerdo a la sintaxis:

union nomUnio{ una “vista” o formato, otra “vista”, etc};

3.10.2.2 Creación de variables tipo enum

Similar a las variables:

int a,b;

union nomUnion lista-de-variables;

3.10.2.3 Manejo de uniones (las variables). Similar a las variables básicas,


considerando su elemento dentro de una “vista” determinada. Lo anterior
implica que exista un variable “bandera” que indique que “vista” o formato
se va a operar.

3.10.3 Ejemplo:

A) Definición o creación de uniones

struct X{

char nom[30];

int edad;

// variable bandera, indica que formato o vista

int bandera; // 1, vista a; 2, formato b; etc;

union vistas{
//vista a

struct {

int d1;

char d2[20];

float d3;

}vt1;

//vista b

struct {

int d1;

char d2[20];

float d3;

} vt2;

//vista c

struct {

int da;

char db[40];

} vt3;

//vista d

char x[30];

//vista e

int y;

} unionVistas4;

};

B) Creación variables tipo union definida dentro de la definición de una estructura

struct X var;

C) Manipulación de variables tipo union (dentro de una estructura):


strcpy(var.nom,”nomX”);

var.edad=20:

switch bandera{

case 1:

//vista a

var.unionVista4.vt1.d1=100;

break;

case 2:

//vista b

strcpy(var.unionVista4.vt2.d2, “dato2char”);

var.unionVista4.vt2.d1=-22;

break;

case 3:

//vista c

var.unionVist4.vt3.da=33;

strcpy(var.unionVista4.vt3.db,”XXXXXXX”);

break;

case 4:

//vista 4

strcpy(var.unionVista4.x,”XXXXXXX”);

break;
default:

//vista e

var.unionVist4.y=33;

} //switch

3.11 Enumeraciones.

3.11.1 Definición.

Es un tipo de dato definido por el usuario y se refiere a que a una serie de números enteros
normalmente iniciada con cero se les nombra mnemónicamente con caracteres. Lo anterior
para que dentro del programa se haga referencia a esos nombres en lugar de los valores
numéricos.

3.11.2 Operación

3.11.2.1 Creación o definición de “enumeraciones”. De acuerdo con la


sintaxis:

enum defEnumeracion{ cad1, cad2, etc };

3.11.2.2 Creación de variables tipo enum

Similar a las variables:

int a,b;

enum defEnumeracion lista-de-variables;

3.11.2.3 Manejo de enumeraciones (las variables). Similar a las variables tipo


enteras, en lugar de su valor numérico, se considera su sinónimo. En un
programa se puede utilizar para seleccionar un “proceso” dentro de un
conjunto.

3.11.3 Ejemplo:

A) Definición o creación de enumeraciones. Utilizando el ejm de uniones

enum defEnum {v1=1, v2, v3, v4, v5}; // de lo contrario seria v1=0
struct X{

char nom[30];

int edad;

// variable bandera, indica que formato o vista, es una var tipo enum

// debe definirse ANTES y después se usa

enum defEnum bandera; // v1 (similar a 1), vista a; v2 (similar a 2),etc.

union vistas{

//vista a

struct {

int d1;

char d2[20];

float d3;

}vt1;

//vista b

struct {

int d1;

char d2[20];

float d3;

} vt2;

//vista c

struct {

int da;

char db[40];

} vt3;

//vista d

char x[30];
//vista e

int y;

} unionVistas4;

};

B) Creación variables tipo enum definida para operar una union (varias vistas) dentro de
la definición de una estructura

La creación de la variable tipo enum se hizo dentro de la definición de la estructura.

struct X var;

C) Manipulación de variables tipo enum (dentro de una estructura):

strcpy(var.nom,”nomX”);

var.edad=20:

switch bandera{

case v1: // en lugar de 1

//vista a

var.unionVista4.vt1.d1=100;

break;

case v2:

//vista b

strcpy(var.unionVista4.vt2.d2, “dato2char”);

var.unionVista4.vt2.d1=-22;

break;

case v3:

//vista c
var.unionVist4.vt3.da=33;

strcpy(var.unionVista4.vt3.db,”XXXXXXX”);

break;

case v4:

//vista 4

strcpy(var.unionVista4.x,”XXXXXXX”);

break;

default:

//vista e

var.unionVist4.y=33;

} //switch

También podría gustarte