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. 

jueves, 28 de junio de 2018

Elementos que integran un programa C++

  1. Librerías o directivas de cabecera: Empleadas para indicar al compilador que incluya un archivo. El compilador, al encontrarse con esta librería la sustituye por el archivo indicado (archivo de cabecera); cada archivo tiene incluidas sus propias funciones de ejecución, por ejemplo: la librería cstdlib, contiene una función muy utilizada como es la función system, la cual nos es útil para llamar un comando (pausar, limpiar pantalla, crear etc).                                                      Declaración: Las directivas de cabecera se declaran fuera de la función principal main, es decir, al inicio del código fuente, de a cuerdo a la siguiente estructura:  #include <Nombre de la directiva>                                                              #include <cstdlib>
  2. Función principal: Todos los programas en lenguaje C y C++ deben contener una función principal main, como su nombre lo indica es la primera función en ejecutarse y sirve también para indicar cuando el programa ha terminado.      Declaración: int main(), void main().
  3. Variables: Se emplean para ejecutar operaciones aritméticas entre ellas, a las cuales se les da un nombre para distinguirlas y que sirven para almacenar valores de tipo entero, flotante, caracteres, entre otros. hay dos formas de declarar una variable:                                                                                                                Variable local - la cual se declara dentro de la función principal o dentro de funciones secundarias, variable que solo será útil dentro de la función en la cual fue declarada.                                                                                                Variable global - se declara fuera de la función principal y de cualquier función secundaria, la ventaja de esta es, que puede ser usada y modificada dentro de cualquier función.                                                                                              Formatos: Tipo Nombre; o inicializando la variable con un determinado valor: Tipo Nombre=Asignación;
  4. Instrucciones o funciones: Es la parte del programa que dirige las acciones para conseguir el objetivo principal del mismo. es importante señalar que cada instrucción finaliza normalmente con ";".
  5. Operadores: Símbolo que indica al compilador realizar una manipulación, matemática, lógica o especial. Los más ocupados en C++ son los operadores aritméticos, relacionales y lógicos.

                 Aritméticos
Operador                     Acción

       +                         Suma

       -                          Resta

       *                         Multiplicación

       /                          División

      %                        Módulo (No es calculador porcentual)         

      =                         Asignación

     ++                       Incrementos (1 unidad)

      --                        Decrementos (1 unidad) 

                 Relacionales
Operador                      Acción

      >                          Mayor que

      <                          Menor que

     >=                        Mayor o igual que

     <=                        Menor o igual que

      ==                       Igual que

      !=                        Diferente que

                    Lógicos
Operador                       Acción

     &&                       AND (y)

       ||                         OR (O)

       !                          NOT (Negación)


Estructura:

Librerías
Declaración de variables globales
int main()
{
            declaración de variables locales
            funciones (leer, imprimir, etc.)
            operaciones (=, +, -, *, /)
           funciones (leer, imprimir, etc.)
           fin
}

miércoles, 27 de junio de 2018

Compilador

Es la herramienta encargada de convertir el código fuente desarrollado por el programador, en un archivo ejecutable, es decir; convierte el lenguaje que resulta fácil de entender para una persona al lenguaje de la máquina, lenguaje que consta de ceros y unos (0,1), mejor conocido como Binario.

Como en cualquier lenguaje de programación, es posible modificar el código fuente tantas veces como sea necesario y volver a compilar para obtener la nueva versión del ejecutable con los cambios realizados, sin embargo no es posible modificar un ejecutable sin tener el código fuente.

Cabe mencionar que existen pequeñas diferencias entre compiladores, aún cuando el lenguaje empleado sea el mismo.

lunes, 25 de junio de 2018

Pseudocódigo

Es una herramienta algorítmica que permite escribir una imitación de un programa real utilizando un lenguaje similar a los lenguajes de alto nivel. Así mismo un pseudocódigo es una combinación de símbolos (+, -, *, /, <, >, <=, !=, &, etc.) y términos (declarar, mientras, comparar, leer, imprimir. Entres otros.) comúnmente utilizados en uno o mas lenguajes de alto nivel. No existe en sí una regla que determine si es o no un pseudocódigo, pues esto virará de un programador a otro.
El objetivo particular del pseudocódigo es permitir al programador centrarse en los aspectos lógicos de la solución del problema, evitando las reglas de sintaxis requeridos en cada lenguaje de programación.

Ejemplo:

Realizar un Pseudocódigo para el cálculo de "x" de la siguiente ecuación:  Ax+B=C

  1. inicio (librerías, int main).
  2. Declaración (A, B, C, x).
  3. Leer o almacenar valores para cada variable(A, B, C, x).
  4. Proceso: x = ( C - B ) / A.
  5. imprimir: x.
  6. Fin.
En la realización de este procedimiento se debe tener en cuenta el sistema de procesamiento de la información, el cual nos ayuda en el tratamiento, organización y administración de los recursos y procesos necesarios para llevar a cabo la solución con la mayor eficiencia posible.

Sistema de procesamiento de la información

lunes, 19 de junio de 2017

Contaminación

¿Que es la contaminación?

Es la alteración no deseada de un medio, ya sea del aire, del suelo, del agua o de los alimentos, la cual causa estragos o perjudica la salud de los humanos o de cualquier ser vivo. Normalmente los principales contaminantes son químicos; ya sean sólidos líquidos o gases. También existen otros tipos de contaminación como la visual, auditiva o la radiación.
Proceso de la contaminación
Este comienza desde la extracción de recursos naturales (primarios), ya que de este modo se perturba la estabilidad natural de un ecosistema. Después pasa por un proceso para la fabricación de un producto en el cual muy seguramente pasan por un proceso químico o por una remodelación que genera algún tipo de contaminante. El producto está listo para usarse, sin embargo algunos de estos productos, al usarlos pueden o no producir algún tipo de contaminante. Finalmente cuando ya no es funcional el producto pasa a ser basura la cual puede o no ser reciclada.

Contaminante primario: Es aquel emitido por un foco contaminante ya sea por actividad humana o natural. Como ejemplo puede ser el monóxido de carbono (CO), el dióxido de carbono (CO2), o el metano (CH4).



Contaminantes secundarios: Son aquellos que se originan en el aire, a través de reacciones químicas o fotoquímicas, dadas por la interacción entre los contaminantes primarios. Como sucede con el dióxido de nitrógeno (NO2), que se forma cuando se combina monóxido de nitrógeno (NO) con el oxígeno del aire.

Contaminación atmosférica

Consiste en la liberación de sustancias químicas en la atmósfera alterando su composición. Los principales focos contaminantes son las industrias y la combustión de automóviles, ya que liberan grandes cantidades de monóxido de carbono, dióxido de azufre, clorofluorocarbonos y los óxidos de nitrógeno.

Contaminación del suelo
Consiste en el derramamiento de sustancias químicas líquidas al suelo filtrándose en ella o sobre ella alterando su composición. El petróleo y sus derivados, materiales pesados, herbicidas y plaguicidas son los mayores contaminantes del suelo, cabe mencionar que herbicidas y plaguicidas también afectan nuestros alimentos vegetales, considerando también la basura como un  contaminante del suelo.

Chatarra electrónica.
Los desechos de tecnología electrónica es una de las más difíciles de tratar, pues sus componentes en la mayoría de los casos no se pueden reutilizar o reciclar, quedando prácticamente inservibles.

Basura espacial.
Esta basura se encuentra orbitando alrededor de nuestro planeta, se compone por restos de satélites viejos y de cohetes. Los cuales pueden ocasionar más basura al chocar con satélites en funcionamiento, produciendo un proceso llamado el síndrome de Kessler.

Contaminación radiactiva.
Es resultado de investigaciones en física atómica desde el siglo XX, generando graves resultados en plantas nucleares investigando bombas nucleares o por la creación y uso de materiales radiactivos.
Contaminación electromagnética
Producida por el espectro electromagnético que generan los equipos electrónicos producidos por actividad humana, como los electrodomésticos, transformadores, torres de alta tensión, etc… Que pueden causar estragos.


Contaminación auditiva
Consiste en la propagación excesiva de sonidos  a diferentes decibeles creando ruido, el cual llega a las personas o seres vivos sacándolos de su estado de confort, ocasionando dolores de cabeza entre otras enfermedades graves.
Producida por principalmente por el ruido de transportes en grandes avenidas, fabricas e industrias.
También puede asociarse al uso de palabras anti-sonantes u ofensivas dentro de un entorno inadecuado.

Contaminación visual
Se trata de la perturbación de un paisaje bello y, o natural con grandes edificios, anuncios etc... que afectan el atractivo visual de las cosas, que pueden dañar la vista de las personas provocando accidentes, como son los anuncios deslumbrantes en puentes y avenidas. Incluso pervertir a niños con imágenes inadecuadas para su edad como muy frecuentemente puede observarse en Internet.