miércoles, 16 de enero de 2019

Funciones de usuario

Una función de usuario, así como las funciones propias del lenguaje C++, son rutinas con parámetros establecidos, esta vez por el programador, que nos permiten realizar acciones y pueden o no devolver el resultado de esa acción. El valor que devuelve puede ser de tipo carácter, entero o flotante.

Estructura de una función de usuario

Declaración:

Tipo Nombre(Argumentos);

Nota: La declaración debe hacerse antes de la función principal main. Se debe especificar el tipo de cada argumento y una coma entre cada argumento.

Elaboración de la función

Tipo Nombre(Argumentos)
{
   Acciones.
  Operaciones.
  etc.
}

El tipo de la función nos indica que tipo de valor retornará
.
Nota: Se debe especificar el tipo de cada argumento y una coma entre cada argumento.

Llamando la función de usuario desde la función principal

int main()
{
  Nombre(valores o variables que se asignará a cada argumento);
}

Nota: En los argumentos se coloca el valor de cada uno, respetando la tipología con la que se declararon.

Ejemplo

#include <cstdlib>
#include <iostream>

using namespace std;
int suma(int a,int b);    //Declaración de función
int main()
{
    int x,y,R;
    cout<<"Suma de dos numeros enteros"<<endl;
    cout<<"Dame el valor de los numeros a sumar"<<endl;
    cout<<"x= ";cin>>x;
    cout<<"y= ";cin>>y;
    R=suma(x,y);           //Llamado de la función
    cout<<"Resultado: "<<R<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
int suma(int a,int b)     //Estructura de la función
{
    int suma;
    suma=a+b;
    return suma;
}

Clasificación de funciones

Función vacía:

Este tipo de función no requiere de ningún parámetro para ejecutarse. Puede retornar algún valor o no hacerlo según se desee, por ejemplo la función clrscr(); en lenguaje C es una función vacía que no retorna ningún valor y la función getch(); de igual modo es una función vacía pero que nos retorna el valor de la ultima tecla oprimida.

Ejemplo:

Mismo ejemplo, solo que esta vez usando una función vacía sin retorno. Como vemos la función no retorna ningún valor ya que dentro de la misma función se publica el resultado. En este caso habría un inconveniente si quisiéramos usar el resultado dentro de la función principal, puesto que las variables locales de la función suma solo se pueden ocupar dentro de esta misma, mientras esté en ejecución.

#include <cstdlib>
#include <iostream>

using namespace std;
void suma();                             //Declaración de la función
int main()
{
    cout<<"Suma de dos numeros enteros"<<endl;
    suma();                                                           //Llamando a la función
    system("PAUSE");
    return EXIT_SUCCESS;
}
void suma()                              //Estructura de la función
{
     int x,y,R;
    cout<<"Dame el valor de los numeros a sumar"<<endl;
    cout<<"x= ";cin>>x;
    cout<<"y= ";cin>>y;
    R=x+y;
    cout<<"Resultado: "<<R<<endl;
    return;                           //No retorna ningún valor
}

******************************************************************************

Esta vez al usar la función vacía con retorno podremos hacer uso del valor que nos retorna la función suma dentro de la función main. Para esto, dentro de la función main, debemos asignarle a una variable el valor que nos retornará la función suma de la siguiente manera: R=suma(); El tipo de la variable a retornar y el tipo de la variable a la que le asignará ese valor deben ser iguales.

#include <cstdlib>
#include <iostream>

using namespace std;
int suma();                         //Declaración de la función
int main()
{
    int R;
    cout<<"Suma de dos numeros enteros"<<endl;
    R=suma();                     //Llamada de la función asignando el valor retornado a la variable R 
    cout<<"Resultado: "<<R<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
int suma()                             //Estructura de la función
{
     int x,y,Res;
    cout<<"Dame el valor de los numeros a sumar"<<endl;
    cout<<"x= ";cin>>x;
    cout<<"y= ";cin>>y;
    Res=x+y;
    return Res;      //Retornar el valor de la variable Res
}

Función paso por valor

En esta función se definen los parámetros necesarios para que ésta se ejecute de la manera correcta, al igual que las funciones anteriores puede retornar un valor o no hacerlo.
El hacerlo con o sin retorno representa exactamente lo antes mencionado en los ejemplos anteriores, solo que esta vez, al ser paso por valor, los parámetros se requieren introducir desde la función principal, o en su caso desde otra función de ser necesario. 

Sin retorno:

#include <cstdlib>
#include <iostream>

using namespace std;
void suma(int a,int b);    //Declaración de función con sus parámetros
int main()
{
    int x,y;
    cout<<"Suma de dos numeros enteros"<<endl;
    cout<<"Dame el valor de los numeros a sumar"<<endl;
    cout<<"x= ";cin>>x;
    cout<<"y= ";cin>>y;
    suma(x,y);                          //Llamado de la función proporcionando los valores ingresados por el usuario
    system("PAUSE");
    return EXIT_SUCCESS;
}
void suma(int a,int b)     //Estructura de la función
{
    int R;
    R=a+b;
    cout<<"Resultado: "<<R<<endl;
    return;                      //no retorna ningún valor
}

******************************************************************************

Al hacer la función con retorno nos queda de la siguiente manera:

#include <cstdlib>
#include <iostream>

using namespace std;
int suma(int a,int b);    //Declaración de función
int main()
{
    int x,y,R;
    cout<<"Suma de dos numeros enteros"<<endl;
    cout<<"Dame el valor de los numeros a sumar"<<endl;
    cout<<"x= ";cin>>x;
    cout<<"y= ";cin>>y;
    R=suma(x,y);                            //Llamada de la función asignando el valor retornado a la variable R
    cout<<"Resultado: "<<R<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
int suma(int a,int b)     //Estructura de la función
{
    int suma;
    suma=a+b;
    return suma;
}

En este tipo de funciones se debe tener cuidado para no confundirse con las variables de la función suma (a.b) y las que el usuario ingresa (x,y). Al mandar llamar la función suma(x,y); lo que hacemos es lo siguiente: 
Le proporcionamos a la función los valores de x,y los cuales son copiados a las variables a y b que son los parámetros con los que se declaro la función, por lo tanto a=x, b=y por lo tanto al hacer las operaciones con a y b sería lo mismo que usar x, y.
En cada uno de los ejemplos se puede verificar que los resultados obtenidos son exactamente los mismos, solo queda decir que dependerá del programador y del objetivo del programa el tipo de funciones que se emplearán.

Paso por dirección o referencia, es otra clasificación de las funciones, el cual será explicado en otra publicación.

martes, 15 de enero de 2019

Funciones trigonométricas Dev C , C++

A continuación se presentan las funciones trigonométricas, que nos ayudan a realizar ciertas operaciones de una manera mas sencilla, evitando procesos innecesarios, ya que son muy fáciles de usar.

Función                                        Descripción
                         
pow(w,y);                   x^y (x elevado a la y potencia)

sqrt(x);                       Raíz cuadrada de x

sin(x);                        sen (x). Seno de x

cos(x);                       cos (x). Coseno de x

tan(x);                        tan (x). Tangente de x

asin(x);                      sen^-1(x). Seno a la -1 de x

acos(x);                     cos^-1(x). Coseno a la -1 de x

atan(x);                     tan^-1 (x). Tangente a la -1 de x

log(x);                       log(x);. Logaritmo de x

exp(x);                      e^x.

Cabe mencionar que es necesario incorporar una librería: #include <math.h>  para poder hacer uso de estas funciones.

ejemplo:
Realice un programa que calcule la hipotenusa mediante el teorema de Pitagoras y funciones 
trigonométricas.






Programa realizado en lenguaje C.





Programa realizado en lenguaje C++.




lunes, 14 de enero de 2019

Nanorrobótica

Hoy en día la tecnología ha formado parte de nuestra vida diaria. ¿Hasta dónde puede llegar tal conocimiento científico y tecnológico?... puesto que ya se investiga y planea su uso para fines médicos a una escala nanométrica, siendo esta la parte que más nos podría interesar, es decir que tan dispuestos estaríamos los humanos de aceptar el hecho de que robots muy pequeños cumplan funciones dentro de nuestro organismo, como podrían convencernos de que es un tipo de tecnología confiable a prueba de errores. Lo que se busca con este artículo es conocer un poco más a fondo lo que es esta nueva tecnología, que usos o aplicaciones se desean llevar a cabo y que posibles desventajas puede presentar.


¿Qué es la nanorrobótica?
 La nanorrobótica se refiere a la ingeniería nanotecnológica del diseño y construcción de nanorrobots, teniendo estos dispositivos un tamaño de alrededor de 0,1 a 10 micrómetros, están construidos con componentes de nano-escala o moleculares. También han sido usadas las denominaciones de nanobots, nanoides, nanites, nanomáquinas o nanomites para describir a estos dispositivos, los cuales actualmente siguen en investigación y desarrollo.

  De acuerdo a Richard Feynman, fue su ex estudiante graduado y colaborador Albert Hibbs quien le sugirió originalmente cerca de 1959 la idea de un uso médico para las micromáquinas teóricas de Feynman. Hibbs sugirió que cierto tipo de máquinas de reparación algún día podrían ser miniaturizadas al punto de que en teoría podría ser como "tragarse al doctor", tal como lo dijo Feynman.



La idea fue incorporada en el ensayo de Feynman publicado en 1959 There's Plenty of Room at the Bottom (en castellano: Hay mucho espacio en el fondo).


Dado que los nanorrobots serían de tamaño microscópico, probablemente sería necesario que trabajaran juntos una cantidad muy grande de dichos aparatos para poder llevar a cabo tareas microscópicas y macroscópicas. Estos enjambres de nanorrobots, tanto aquellos incapaces de auto replicarse (como en una niebla útil) y aquellos capaces de auto replicarse sin restricciones en el ambiente natural (como en una plaga, con la posibilidad de adoptar formas humanas).
  Aunque esta parte pueda sonar muy ficticia, partidarios de esta tecnología aseguran que si en un futuro se llega a desarrollar la autoreplicación, podría ser diseñado para ser inherentemente seguro.
  Las discusiones teóricas más detalladas acerca de nanorobótica, que incluyen diseños específicos en temas como sensores, transporte de comunicación, navegación, manipulación, locomoción y computación integrada, han sido presentadas en el contexto médico de la nanomedicina por Robert Freitas. Algunas de estas discusiones permanecen al nivel de generalidades sin posibilidad de fabricarlas y no se aproximan al nivel de ingeniería de detalle.


Posibles nanorrobots de acuerdo a su composición

Biochip

  El uso simultáneo de la nanoelectrónica, la fotolitografía y nuevos biomateriales proporcionan una posible aproximación para fabricar nanorrobots para aplicaciones médicas comunes, tales como para instrumentos quirúrgicos, diagnóstico y dosificación de drogas. Actualmente este método para la fabricación de nanotecnología es usado en la industria electrónica. De esta forma, nanorrobots prácticos podrían ser integrados como dispositivos nanoelectrónicos, lo que permitiría la tele-operación y capacidades avanzadas a los instrumentos médicos.

Nubots (Máquina ADN)

  Nubot es una abreviatura para "nucleic acid robot" (en castellano: Robot de Ácido Nucleico). Los nubots son máquinas orgánicas moleculares de tamaño nanométrico. La estructura del ADN puede proporcionar los medios para ensamblar dispositivos nanomecánicos bidimensionales y tridimensionales. Las máquinas basadas en ADN pueden ser activadas usando pequeñas moléculas, proteínas y otras moléculas de ADN. Puertas de circuitos biológicas basadas en materiales de ADN han sido fabricadas como máquinas moleculares que permiten insertar drogas in-vitro para problemas específicos de salud. Tales sistemas basados en materiales funcionarían más semejantes a sistemas bio-materiales inteligentes de dosificación de drogas, pero no permiten la tele-operación en vivo precisa de tales sistemas prototipos.

Basado en bacterias

  Este enfoque propone el uso de microorganismos biológicos, como la bacteria Escherichia coli. Así este modelo usa un flagelo como método de propulsión, utilizándose normalmente campos electromagnéticos para controlar el movimiento de esta clase de dispositivos biológicos integrados.

 Las aplicaciones potenciales para la nanorobótica en medicina incluyen diagnósticos preliminares y dosificación de drogas para atacar el cáncer, instrumentación biomédica, cirugíafarmacocinética, el monitoreo de la diabetes, y el cuidado de la salud.

  Se espera que la futura nanotecnología médica empleé nanorrobots inyectados en el paciente para que funcionen a nivel celular. Los nanorrobots de uso médico deberían ser no replicantes, ya que la replicación aumentaría de forma indeseable su complejidad e interferiría con su misión médica.

  La nanotecnología abarca un amplio rango de nuevas tecnologías para el desarrollo de soluciones personalizadas que optimizan la administración de productos farmacéuticos. Actualmente, los efectos colaterales dañinos de tratamientos tales como la quimioterapia comúnmente son el resultado de métodos de administración de drogas que no son precisos para identificar las células blanco. Investigaores en la Universidad de Harvard y el Instituto Tecnológico de Massachusetts, sin embargo, han sido capaces de pegar hebras de ARN especiales, de un tamaño de cerca de 10 nm de diámetro, a nanopartículas, rellenándolas con drogas utilizadas en quimioterapia. Estas hebras de ARN son atraídas a las células cancerígenas. Cuando la nanopartícula encuentra una célula cancerígena, se adhiere a ella, y suelta la droga al interior de dicha célula. Este método directo de administración de drogas tiene gran potencial para el tratamiento de pacientes de cáncer evitando los efectos negativos, asociados comúnmente a la administración incorrecta de las drogas.
  Otra aplicación útil de los nanorrobots es asistir en la reparación de células de tejido a lo largo de los glóbulos blancos. El reclutamiento de células inflamatorias o de glóbulos blancos (que incluyen neutrófiloslinfocitosmonocitos y mastocitos) hacia el área afectada es la primera respuesta al daño de los tejidos. Debido al pequeño tamaño de los nanorrobots estos se podrían pegar a la superficie de las células blancas reclutadas, para infiltrarse a través de las paredes de los vasos sanguíneos y llegar al sitio de la herida, donde ellos pueden asistir al proceso de reparación del tejido, posiblemente usando ciertas substancias para acelerar la recuperación.
  Definitivamente esta tecnología implementada a través de ingeniería, bilogía y física, en un futuro, al poder desarrollarse completamente significará un gran adelanto en la tecnología y una gran ayuda en la conservación de la salud humana es el mejor uso que podemos hacer de esta y prácticamente la finalidad con la que  se generó, solo hay que dejar esto a su debido tiempo, pues, al ser una tecnología muy avanzada y detallada faltan investigaciones por realizarse, ya que debemos  asegurarnos de eliminar posibles fallas y errores existentes y por existir.