Lenguaje de programación con C++

C++ es un lenguaje de programación diseñado para extender al lenguaje de programación C mecanismos que permiten la manipulación de objetos.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

domingo, 18 de octubre de 2015

EVAP5

VIGAS EMPOTRADAS


Se refiere a las vigas que además de apoyadas en ambos extremos, son las que se deben fijar con trabes para que no se muevan o se deslicen. Para empotrar ese tipo de vigas, se usan ciertos elementos de soporte, que pueden ser tornillos, o pernos tuercas, arandelas, y remaches  de gran porte, y no uno solo sino seis o cuatro para cada caso en particular. Hay casos en los que este tipo de vigas se encuentran clavadas, de manera muy firme en una pared de extremo a extremo, pero apoyadas en otra viga que esa puede estar solo apoyada. Para colocar las vigas de una estructura se necesitan varios cálculos que quienes son los responsables de ellos son los ingenieros de la obra, es por ello que cada caso es único, y en donde se ponen este tipo de vigas, no se pueden colocar otros. Los ingenieros, mediante los cálculos y ecuaciones, llegan  a la conclusión que los momentos de fuerzas son diferentes en cada caso, es por ello que en las estructuras se hacen necesario contar con ingenieros de obra que son quienes tienen la responsabilidad de hacer las correctas formulas y llevar a cabo los trabajos. Es muy simple la explicación, se trata de las vigas empotradas cuando se encuentran firmemente sujetadas mediante los anclajes correspondientes a otro medio de apoyo que en este caso es vertical, y que sirve de apoyo o sustento.  Se hacen diagramas, planos, y estudios analizando cada detalle, ya que esas constituyen una parte fundamental en las estructuras.

VIGA EMPOTRADA EN AMBOS EXTREMOS CON CARGA UNIFORMEMENTE REPARTIDA

En  el  caso  de  viga  empotrada  en  sus  dos  extremos,  la cantidad   de   reacciones   desconocidas  supera   a  la   de ecuaciones  que la estática  dispone  para  el sistema.  Para resolver las incógnitas es necesario disponer de otras ecuaciones basadas en las deformaciones.
 Considerando que las pendientes de las tangentes trazadas en los dos extremos es nula, se plantean las siguientes ecuaciones

A= 0                       B = 0

Para establecer las ecuaciones se descompone la viga dada en tres  vigas  supuestas  que  en conjunto equivalgan  a la viga inicial.

a.- Viga  simplemente  apoyada  con  carga  uniformemente repartida.
b.- Viga simplemente apoyada con momento aplicado en el extremo izquierdo (Ma).
c.-  Viga simplemente apoyada con momento aplicado en el extremo derecho (Mb).

VIGA   EMPOTRADA   EN   UN   EXTREMO   Y  SIMPLEMENTE APOYADA EN EL OTRO, CON CARGA UNIFORMEMENTE DISTRIBUIDA.

En este caso de viga empotrada en uno de sus extremos, la cantidad  de reacciones  desconocidas  también  supera  a la de ecuaciones  de estática. Para resolver las incógnitas  es necesario disponer de las ecuaciones basadas en las deformaciones.
Considerando que la pendiente de la tangente trazada en el extremo empotrado es nula, se plantea la ecuación:

A= 0

Se descompone la viga inicial en dos vigas supuestas que en conjunto equivalen a la viga inicial.

a.- Viga  simplemente  apoyada  con  carga  uniformemente repartida.

b.- Viga simplemente apoyada con momento aplicado en el extremo izquierdo.


Vectores

En programación, una matriz o vector (llamado en inglés array) es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones).

En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las más fáciles de imaginar son los de una, dos y tres dimensiones.

Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos se realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar ordenados y se va a utilizar acceso secuencial sería más adecuado utilizar una lista, ya que esta estructura puede cambiar de tamaño fácilmente durante la ejecución de un programa.

Índices
Todo vector se compone de un determinado número de elementos. Cada elemento es referenciado por la posición que ocupa dentro del vector. Dichas posiciones son llamadas índice y siempre son correlativos. Existen tres formas de indexar los elementos de una matriz:

Indexación base-cero (0): en este modo el primer elemento del vector será la componente cero ('0') del mismo, es decir, tendrá el índice '0'. En consecuencia, si el vector tiene 'n' componentes la última tendrá como índice el valor 'n-1'. El lenguaje C es un ejemplo típico que utiliza este modo de indexación.
Indexación base-uno (1): en esta forma de indexación, el primer elemento de la matriz tiene el índice '1' y el último tiene el índice 'n' (para una matriz de 'n' componentes).
Indexación base-n (n): este es un modo versátil de indexación en la que el índice del primer elemento puede ser elegido libremente, en algunos lenguajes de programación se permite que los índices puedan ser negativos e incluso de cualquier tipo escalar (también cadenas de caracteres).

Forma de acceso
La forma de acceder a los elementos de la matriz es directa; esto significa que el elemento deseado es obtenido a partir de su índice y no hay que ir buscándolo elemento por elemento (en contraposición, en el caso de una lista, para llegar, por ejemplo, al tercer elemento hay que acceder a los dos anteriores o almacenar un apuntador o puntero que permita acceder de manera rápida a ese elemento).

Para trabajar con vectores muchas veces es preciso recorrerlos. Esto se realiza por medio de bucles. El siguiente pseudocódigo muestra un algoritmo típico para recorrer un vector y aplicar una función 'f(...)' a cada una de las componentes del vector:

i = 0
mientras (i < longitud)
    //Se realiza alguna operación con el vector en la i-ésima posición
    f(v[i])
    i=i+1
fin_mientras
Vectores dinámicos y estáticos
Lo habitual es que un vector tenga una cantidad fija de memoria asignada, aunque dependiendo del tipo de vector y del lenguaje de programación un vector podría tener una cantidad variable de datos. En este caso, se les denomina vectores dinámicos, en oposición, a los vectores con una cantidad fija de memoria asignada se los denomina vectores estáticos.

El uso de vectores dinámicos requiere realizar una apropiada gestión de memoria dinámica. Un uso incorrecto de los vectores dinámicos, o mejor dicho, una mala gestión de la memoria dinámica, puede conducir a una fuga de memoria. Al utilizar vectores dinámicos siempre habrá que liberar la memoria utilizada cuando ésta ya no se vaya a seguir utilizando.

Lenguajes más modernos y de más alto nivel, cuentan con un mecanismo denominado recolector de basura (como es el caso de Java) que permiten que el programa decida si debe liberar el espacio basándose en si se va a utilizar en el futuro o no un determinado objeto.

Ejemplos en C
Declaración en C/C++ de un vector estático.
int main(void)
{
  int i, v[5];  // v[5] es un vector de 5 componentes

  for(i=0; i<5; i++)
  {
    v[i] = 0; // Asignamos un valor
    printf("%d\n", v[i]);
    printf("\n");  // Crea una nueva línea
  }
  return 0
}
Declaración en C/C++ de un vector estático utilizando aritmética de punteros.
Siendo el identificador del vector, un puntero constante que contiene la dirección del comienzo del vector (vector[0], primer elemento)

int main(void)
{
  int i, v[5];  // v[5] es un vector de 5 componentes

  for(i=0; i<5; i++)
  {
    *(v + i) = 0; // Asignamos un valor en la dirección (vector + ((índice * sizeof (int) cantidad de bytes de desplazamiento desde la base.)
    printf("%d\n", *(vector + i));
    printf("\n");  // Crea una nueva línea
  }
  return 0
}
Declaración en C++ de un vector de STL:
#include <vector>

vector<int> v; // Si no se especifica el tamaño inicial es 0

for(int i=0 ;i<5 ;i++)
{
  v.push_back(2*i); // inserta un elemento al final del vector
}
El ejemplo anterior está hecho para el lenguaje C++. En C, para crear vectores dinámicos se tendrían que utilizar las instrucciones malloc y realloc para reservar memoria de forma dinámica (ver biblioteca stdlib.h), y la función free para liberar la memoria utilizada.

Resultado:

0 1 2 3 4
0 2 4 6 8
El resultado de los dos ejemplos es el mismo vector.

Vectores multidimensionales
En Basic, Java y otros lenguajes es posible declarar matrices multidimensionales, entendiéndolas como un vector de x dimensión. En dichos casos en número de elementos del vector es el producto resultante de cada dimensión.

Por ejemplo el vector v(4,1) tiene 10 elementos se calcula del siguiente modo: (0-4) * (0-1). Los elementos de la primera dimensión del vector contiene 5 elementos que van del '0' al '4' y la 2º dimensión tiene 2 elementos que van desde '0' a '1'. Los elementos serían accedidos del siguiente modo:

elemento 1: (0,0)
elemento 2: (0,1)
elemento 3: (1,0)
...
elemento 8: (3,1)
elemento 9: (4,0)
elemento 10: (4,1)

Ejercicios:

1.-

















































2.-








3.-