Este documento describe diferentes tipos de datos definidos por el programador en C, incluyendo typedef, estructuras, uniones, enumeraciones y campos de bits. Explica cómo declarar y acceder a estas variables, así como inicializar estructuras y uniones. También cubre temas como padding, comparación de estructuras, arrays de estructuras y uniones, y funciones que devuelven múltiples valores.
Diseñe un algoritmo que califique el puntaje obtenido en el lanzamiento de
tres dados en función a la cantidad seis obtenidos, de acuerdo a lo
siguiente:
a) Seis en los tres dados, excelente.
b) Seis en dos dados, muy bien.
c) Seis en un dado, regular.
d) Ningún seis, pésimo
Diseñe un algoritmo que califique el puntaje obtenido en el lanzamiento de
tres dados en función a la cantidad seis obtenidos, de acuerdo a lo
siguiente:
a) Seis en los tres dados, excelente.
b) Seis en dos dados, muy bien.
c) Seis en un dado, regular.
d) Ningún seis, pésimo
2nd puc computer science chapter 8 function overloading ,types of function overloading ,syntax function overloading ,example function overloading
inline function, friend function ,
Si quiere descargar la presentación y los códigos fuente, dirijase a:
http://programaciondecomputadoresunalmzl.wikispaces.com/codigos_y_diapositivas
Le agradecería si me reporta los errores que encuentre en la diapositiva (daalvarez arroba unal punto edu punto co)
Si quiere descargar la presentación y los códigos fuente, dirijase a:
http://programaciondecomputadoresunalmzl.wikispaces.com/codigos_y_diapositivas
Le agradecería si me reporta los errores que encuentre en la diapositiva (daalvarez arroba unal punto edu punto co)
2nd puc computer science chapter 8 function overloading ,types of function overloading ,syntax function overloading ,example function overloading
inline function, friend function ,
Si quiere descargar la presentación y los códigos fuente, dirijase a:
http://programaciondecomputadoresunalmzl.wikispaces.com/codigos_y_diapositivas
Le agradecería si me reporta los errores que encuentre en la diapositiva (daalvarez arroba unal punto edu punto co)
Si quiere descargar la presentación y los códigos fuente, dirijase a:
http://programaciondecomputadoresunalmzl.wikispaces.com/codigos_y_diapositivas
Le agradecería si me reporta los errores que encuentre en la diapositiva (daalvarez arroba unal punto edu punto co)
Qué es la estadística?
Qué es la teoría de probabilidades?
Qué es la estadística descriptiva?
Qué es la estadística inferencial
------------------------------------------------------------
Definiciones básicas
Medidas de tendencia no central
Medidas de tendencia central
Medidas de dispersión
Momentos
Representación gráfica de la información
Histogramas
Descripción de como usar los punteros a funciones en el lenguaje de programación C.
El guión de esta presentación se encuentra en:
http://www.slideshare.net/AnesGy/script-de-punteros-a-funciones
Investigación clínica
Metodología de la investigación
Método científico
Estadística
Medicina
Investigación en Medicina
Chi Cuadrada
Universidad Autónoma de Ciudad Juárez
Instituto de Ciencias Biomédicas
Artículos científicos
¿Como escribir?
Investigación clínica
Universidad Autónoma de Ciudad Juárez
Instituto de Ciencias Biomédicas
Metodología de la Investigación
IMRYD
Estudios médicos
Divulgación científica
Introducción
Material y métodos
Resultados
Discusión
Conclusiones
Referencias
Si quiere descargar la presentación y los códigos fuente, dirijase a:
http://programaciondecomputadoresunalmzl.wikispaces.com/codigos_y_diapositivas
Le agradecería si me reporta los errores que encuentre en la diapositiva (daalvarez arroba unal punto edu punto co)
Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...Diego Andrés Alvarez Marín
https://repositorio.unal.edu.co/handle/unal/84682
Este libro acerca la teoría de la elasticidad al estudiante de pregrado de Ingeniería Civil o Mecánica, mediante la introspección física-matemática y la deducción paso a paso de cada una de las ecuaciones fundamentales de la elasticidad. De hecho, lo que el libro clásico de Timoshenko y Goodier trata en sesenta páginas aquí se desglosa en cerca de trescientas. Todo esto con miras a dar al estudiante una fundamentación sólida para posteriores cursos sobre el método de los elementos finitos, la mecánica computacional o la plasticidad. La presente obra recoge la experiencia docente de más de doce años del autor; su escritura se llevó a cabo con la retroalimentación permanente de los estudiantes. El texto hace uso del programa libre de álgebra simbólica Maxima, para deducir la mayoría de las ecuaciones complejas, y presenta códigos de Matlab que sirven para ilustrar numéricamente los ejemplos. La traducción de estos códigos a Python se encuentra en la página web del autor, en formato Jupyter Notebooks. Asimismo, el contenido se complementa con videos de su autoría, disponibles en YouTube.
04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, ...Diego Andrés Alvarez Marín
Si quiere descargar la presentación y los códigos fuente, dirijase a:
http://programaciondecomputadoresunalmzl.wikispaces.com/codigos_y_diapositivas
Le agradecería si me reporta los errores que encuentre en la diapositiva (daalvarez arroba unal punto edu punto co)
Si quiere descargar la presentación y los códigos fuente, dirijase a:
http://programaciondecomputadoresunalmzl.wikispaces.com/codigos_y_diapositivas
Le agradecería si me reporta los errores que encuentre en la diapositiva (daalvarez arroba unal punto edu punto co)
Si quiere descargar la presentación y los códigos fuente, dirijase a:
http://programaciondecomputadoresunalmzl.wikispaces.com/codigos_y_diapositivas
Le agradecería si me reporta los errores que encuentre en la diapositiva (daalvarez arroba unal punto edu punto co)
Si quiere descargar la presentación y los códigos fuente, dirijase a:
http://programaciondecomputadoresunalmzl.wikispaces.com/codigos_y_diapositivas
Le agradecería si me reporta los errores que encuentre en la diapositiva (daalvarez arroba unal punto edu punto co)
Si quiere descargar la presentación, dirijase a:
http://probestunalmzl.wikispaces.com/temario
Le agradecería si me reporta los errores que encuentre en la diapositiva (daalvarez arroba unal punto edu punto co)
Si quiere descargar la presentación, dirijase a:
http://probestunalmzl.wikispaces.com/temario
Le agradecería si me reporta los errores que encuentre en la diapositiva (daalvarez arroba unal punto edu punto co)
Repaso de teoría de conjuntos
Fenómenos determinísticos vs. fenómenos aleatorios
Definición de probabilidad
Interpretación frecuentista y Bayesiana de la probabilidad
Espacio muestral, eventos
Sigma-álgebra
Medida de probabilidad, definición, propiedades
Axiomas de Kolmogorov
Probabilidad conjunta, marginal, condicional
Eventos independientes
Teorema de las probabilidades totales, teorema de Bayes
Técnicas de conteo: factorial, permutación, combinatoria
3. 3
typedef
Se utiliza para asignar nombres (alternos) a los
tipos de datos. La forma general de uso de este
comando es:
Ejemplo:
El standard POSIX (http://en.wikipedia.org/wiki/POSIX)
solicita que el nombre de un typedef no termine en
_t, ya que ellos lo usan en sus declaraciones
(recuerde a clock_t, size_t).
4. 4
Enumeraciones
Es un tipo de dato especial que sirve para
guardar constantes enteras y asignarles un
nombre.
0 1 2
3 4 5 6
6 7 8 14
-5 -4 -3
13. 13
Accediendo a los miembros de una
estructura
Usando el
operador punto “.”
Utilizando
punteros: el
operador flecha
“->”
(NOTA: ver definiciones de struct punto y struct circulo en las diapositivas anteriores)
15. 15
Compound literals
Note que p1 y p2 no se inicializaron; en la líneas 15
y 16 se está separando y a la vez asignando el
espacio de memoria para p1 y p2 respectivamente.
Esta asignación sólo es válida en el bloque { } en el
cual se utilizó el compound literal.
a los campos
no
inicializados
se les asigna
ceros
16. 16
Structures get copied, arrays get aliased
Aliasing: <programming> Two names (identifiers), usually of
local or global variables, that refer to the same resource
(memory location) are said to be aliased. Although names
introduced in programming languages are typically mapped to
different memory locations, aliasing can be introduced by the
use of address arithmetic and pointers or language-specific
features, like C/C++ references.
d1.x and d2.x are aliased.
17. 17
El tamaño de una estructura
Es igual o mayor al tamaño de la suma de sus
miembros; esto puede ser debido a que el
computador agrega bytes de más a la estructura
(padding) para acelerar el acceso del computador a
la memoria. Varía con respecto al computador y al
sistema operativo.
En el gcc se puede desactivar el padding con opción
del compilador -fpack-struct Tenga en cuenta que
esto disminuye la velocidad de acceso a la memoria
19. 19
Padding
Padding hace un alineamiento de los miembros
de la estructura de modo que las direcciones de
memoria se alineen a 4 bytes o a 8 bytes,
dependiendo si se tiene un sistema operativo de
32 o de 64 bits. Observe que las direcciones de
memoria asignadas son divisibles entre 4 u 8
dependiendo del sistema operativo: ej:
0x80496ac == 134518444, el cual es un número
divisible entre cuatro (ejecutado en GNU/Linux de
32 bits).
21. 21
Packing
Empaqueta todo sin dejar espacios. El packing se
debe hacer en los siguientes casos:
1) Cuando se debe sacrificar la velocidad del
código a cambio de utilizar mejor la memoria
RAM, en el caso que la memoria esté escasa.
2) Cuando se estén grabando estructuras a un
archivo. En este caso el PADDING se debe
desactivar y utilizar PACKING ya que si el archivo
se lee en un computador con un sistema
operativo diferente al sistema operativo que
escribió el archivo podrían haber errores en la
lectura de la estructura.
23. 23
Offset de un elemento: offsetof()
offsetof(tipo,miembro)
Este macro, definido en stddef.h, retorna el
desplazamiento (“offset”) en bytes del elemento
miembro de una struct, o union tipo, contado a
partir del principio de la estructura.
24. 24
Los operadores
== y != no
funcionan con
estructuras. Si se
quieren comparar
dos estructuras, la
comparación debe
hacerse miembro
a miembro.
Comparación de estructuras
25. 25
No compare estructuras con
memcmp()
Algunos programadores incorrectamente
comparan estructuras utilizando:
memcmp(&struct1, &struct2, sizeof(struct1));
Esto es incorrecto, ya que no se está teniendo
encuenta que el padding entre los campos de las
estructuras tiene un valor indeterminado. De otro,
lado, en el caso que existan estructuras sin el
padding, habrían problemas comparando
punteros, doubles, floats, valores NAN, etc.
Por esta razón es preferible crear una función que
compare dos estructuras miembro a miembro.
26. 26
Como hacer una función que
devuelva más de dos variables?
1. Pasando punteros
27. 27
Como hacer una función que
devuelva más de dos variables?
2. Retornando una estructura que contiene los
valores deseados:
28. 28
Como hacer una función que
devuelva más de dos variables?
3. Utilizar un híbrido: pasar un puntero a una
estructura, que posteriormente es llenada:
void
29. 29
Arrays de estructuras
struct punto
{
int x, y;
};
struct punto p[3];
Los elementos se pueden inicializar así:
struct punto p[3] = { {2, 3}, {4, 5}, {6, 7} };
Para acceder a los elementos se hace lo
siguiente:
struct punto p[3];
p[0].x = 2;
p[0].y = 3;
30. 30
Funciones
que retornan
vectores
Si se utiliza esta técnica
se debe tener en cuenta
que “vector” se está
creando en la memoria
de pila y el tamaño de
esta es limitada.
31. 31
Uniones (union)
● Se utilizan para guardar varias variables de
diferentes tipos en el mismo espacio de
memoria, por lo tanto si se asigna un valor a una
variable, se sobreescribe el valor en las otras.
● Su tamaño es igual al tamaño de su elemento
más grande: sizeof(mi_union) = sizeof(double)
● El compilador no verifica si los datos se están
leyendo de la forma correcta.
33. 33
Inicialización de uniones
Se puede inicializar la
primera variable de la
unión cuando se
declara:
En este ejemplo el primer elemento (u1.c) se
inicializa a 'm', pero union.x se deja "quieto".
También se puede inicializar cualquier otro
miembro de la unión:
34. 34
Accediendo a los miembros de una
unión
Se hace utilizando el operador punto "."
Aquí u1.x sobreescribe u1.c
35. 35
En este caso la unión nos permite
crear un truco que permite
devolver cualquier tipo de dato
unión
anónima
36. 36
Ejemplo uniones para entender la
representación interna de un
número float
Ver un buen ejemplo de uniones en:
http://tipsparaisc.blogspot.com/2012/12/representacion-interna-de-un-flotante.html
37. 37
Arrays de uniones
union u
{
int i;
float f;
};
union u x[3];
Los tres primeros miembros de x se pueden
inicializar como:
union u x[3] = { {3}, {4}, {5} };
(los brackets internos son opcionales)
Los elementos se acceden así:
x[0].i = 2;
38. 38
Campos de bits
Son estructuras cuyos miembros son paquetes de
bits. Se utilizan para representar enteros de
tamaño conocido. Se utilizan especialmente para
"comprimir datos", o para representar series de
bits en paquetes llamados "banderas" (flags). Se
pueden crear utilizando unsigned int, signed int o
_Bool.