Archive for 19 agosto 2017

Diferencia entre un contador y un acumulador

agosto 19, 2017

En programación es común el uso de contadores y acumuladores, en este post explico la diferencia porque frecuentemente quienes están aprendiendo a programar confunden unos con otros.

Un contador es una variable que se utiliza para contar algo. Normalmente usamos un contador dentro de un ciclo y cambiamos su valor sumándole o restándole una constante, es decir, siempre se le suma o resta la misma cantidad. El caso más utilizado es incrementar la variable en uno.

En el siguiente programa en C se tiene un arreglo de 10 números enteros y se utiliza un ciclo con un contador para ver cuántas veces aparece el número 3.

Programa contador.c
#include <stdio.h>

int main()
{
 int numero = 3;
 int x=0, contador=0;
 int arreglo[10]={3,7,1,2,7,3,5,6,-2,7};
 
 // Recorre el arreglo y cuenta cuántas veces aparece el valor que contiene la variable numero 
 for (x=0; x<10; ++x)
     {
      if (arreglo[x] == numero)
          /* El nuevo valor de la variable contador va a ser igual a su valor actual más uno
             Se puede escribir como preincremento ( ++contador ) o como postincremento ( contador++ )
             pero para que sea bastante evidente, lo escribí de forma explícita ( contador = contador+1 )
          */
          contador = contador+1; 
     }
 
 printf("\n");
 printf("El número %d aparece %d veces en el arreglo\n", numero, contador);
 
 return 0;
}

El siguiente programa en C es un ejemplo de un contador que se va decrementando en uno; simula una cuenta regresiva.

Programa cuenta_regresiva.c
#include <stdio.h>

int main()
{
 int contador=10;
 
 // Imprime los números del 10 al cero
 while (contador >= 0)
       {
        printf("Despegue en %d\n", contador);
        contador = contador-1;
       }
 
 return 0;
}

Un acumulador es una variable que se utiliza para sumar valores. Al igual que el contador, se utiliza normalmente dentro de un ciclo pero cambiamos su valor sumándole una variable, es decir, no siempre se le suma la misma cantidad.

En el siguiente programa, utilizamos el mismo arreglo del programa contador.c, pero ahora no vamos a contar cuántas veces aparece un número x, sino que vamos a sumar todos los valores que aparezcan en el arreglo y que sean mayores a un número determinado.

Programa acumulador.c
#include <stdio.h>

int main()
{
 int mayores_que = 3;
 int x=0, suma=0;
 int arreglo[10]={3,7,1,2,7,3,5,6,-2,7};
 
 // Recorre el arreglo y suma todos los números mayores al valor que contiene la variable mayores_que 
 for (x=0; x<10; ++x)
     {
      if (arreglo[x] > mayores_que)
          /* El nuevo valor de la variable suma va a ser igual a su valor actual más el número 
             que se encuentra en la posición actual del arreglo
          */
          suma = suma+arreglo[x]; 
     }
 
 printf("Todos los números mayores a %d en el arreglo suman %d\n", mayores_que, suma);
 
 return 0;
}
Anuncios

¿Usas software libre (conscientemente)?

agosto 17, 2017

Muchas personas no saben qué es el software libre (piensan que significa software grátis), otros no han escuchado ese término y algunos lo han escuchado pero dicen que no usan software libre.

Sin importar en cuál de los grupos anteriores te encuentras, lo más probable es que si hayas usado software libre alguna vez, o incluso actualmente lo estés usando sin saberlo. Por ejemplo, si usas algún dispositivo (tablet, smartphone, etc.) que funciona con sistema operativo Android, entonces estás usando software libre ya que el sistema operativo Android se distribuye bajo la licencia Apache versión 2.0 y algunas otras partes del código bajo licencia LGPL, GPL versión 2.0 o algunas otras licencias de software libre.

A los escépticos les dejo este enlace https://www.android.com/everyone/facts/ en donde pueden verificar el Android Fact #18 que dice:

“The Android Open-Source Project (AOSP) is the core software stack behind the Android OS and consists of the operating system, middleware, and open-source apps like a phone dialer, email, and messaging. Mobile operators, device makers, and developers can use this to build devices and apps.”

Y este otro https://source.android.com/source/licenses en donde pueden ver la licencia del Android Open-Source Project (AOSP)

Me propuse hacer una encuesta para saber cuántas de las personas que leen mi blog saben lo que es el software libre, si lo usan o no y ¿por qué?.

Si usas software libre, no importa si es todo un sistema operativo como alguna distribución GNU/Linux, o algún otro software libre funcionando sobre un sistema operativo privativo, puede ser una suite de oficina como LibreOffice o sólo una aplicación como el VLC media player por favor deja tus comentarios. Y si no usas software libre, también me interesa mucho escuchar las razones, puede ser simplemente por desconocimiento, de cualquier forma agradezco el tiempo que te tomes para contestar la encuesta, sobra decir que puedes expresar libremente tu opinión siempre que lo hagas de manera respetuosa.

¿Cómo identificar un sistema de videovigilancia confiable?

agosto 15, 2017

Últimamente la demanda por los sistemas de videovigilancia ha crecido y cada vez es más frecuente ver personas y/o empresas que venden e instalan estos equipos. Hay una gran variedad de marcas y la clave para elegir el sistema de videovigilancia con el que obtengamos el mejor costo-beneficio es tomar en cuenta los siguientes puntos:

  1. Determinar cuál es la información que más me interesa obtener de las imágenes que capture el sistema de videovigilancia que quiero instalar, ya que de esto dependerá el sistema de grabación y el tipo de cámaras. ¿Me interesa únicamente poder determinar cuántas personas o vehículos hay en el área de cobertura de la cámara?, ¿Es importante para mi poder identificar a las personas cuando están a cierta distancia de la cámara?, etc.
  2. Lo barato puede salir caro. No tiene caso comprar el sistema de videovigilancia más económico que encuentre en el mercado si no va ser el que satisfaga mis necesidades, que falle después de unos cuantos meses, que la calidad del video sea mala, etc. Por eso debe considerar lo siguiente:
  • Aunque los equipos de grabación utilizados en los sistemas de videovigilancia (ya sea DVR o NVR) utilizan un disco duro como medio de almacenamiento, se debe utilizar un disco duro especialmente diseñado para ser utilizado en un sistema de videovigilancia. Estos discos duros son idénticos en apariencia a los discos duros utilizados en las computadoras de escritorio, la diferencia radica en que los discos duros especiales para videovigilancia están diseñados para funcioanr 24/7 (las 24 horas los 7 días de la semana) y alcanzar altas temperaturas. Desde luego un disco duro diseñado específicamente para ser utilizado en un sistema de videovigilancia es más caro que un disco duro estándar, aún cuando ambos sean de la misma capacidad.
  • Que el cable que van a utilizar para la instalación sea 100% cobre, no es recomendable usar cable CCA (Copper Clad Aluminum) ya que aunque es mucho más barato, se corre el riesgo de que el video no sea de la mejor calidad que los equipos (el DVR o NVR y las cámaras) pueden alcanzar debido a que la red experimentará una mayor pérdida de paquetes (entre otras cosas). Si están interesados en más de los detalles técnicos vayan a este enlace What CCA Wire Can Do To Your Network
  • Debe utilizarse cable especialmente diseñado para intemperie cuando se instalan cámaras en el exterior (obviamente la cámara también debe estar diseñada para poder instalarse en exteriores). He visto infinidad de instalaciones en las que se instalaron cámaras en exteriores y a pesar de que la cámara si es para exteriores, se utilizó cable que no es para exteriores. Recién instalado funciona bien, pero eso puede durar unos meses o poco más de un año dependiendo de las condiciones ambientales del lugar de la instalación, ya que el cable que no está diseñado para exterior no soporta el sol y la lluvia por mucho tiempo. Personalmente he hecho instalaciones ya sea de enlaces punto a punto, punto-multipunto o de sistemas de videovigilancia que llevan más de 5 años y el cable para exteriores instalado no ha causado problema alguno. Al igual que en el caso de los discos duros especiales para videovigilancia y el cable 100% cobre vs cable CCA, el cable para exteriores cuesta más que el cable que no es para exteriores, pero se debe considerar que es más caro volver a cablear cada año (además del costo del nuevo cable, hay que tomar en cuenta el costo de la mano de obra) que invertir al principio de la instalación para no tener problemas después.
  • Cuando compare el costo de las cámaras, no sólo tome en cuenta la resolución de las mismas, sino además la tecnología y funciones extra que incorporan, como DNR (Digital Noise Reduction), WDR (Wide Dynamic Range), etc. ¿Por qué esto es importante?, vea la diferencia de la imágen en una cámara con el WDR encendido y apagado https://www.youtube.com/watch?v=sYLc6U4X8PU

No se deje engañar con el argumento que le dan los vendedores de los tianguis en donde comercializan tecnología “es lo mismo pero más barato” y también tome en cuenta lo aquí expuesto antes de comprar su sistema de videovigilancia en el club de precios en donde compra su despensa.

Les dejo otros enlaces de interés:

http://www.topsystems.com.mx/Videovigilancia/

https://www.facebook.com/Top-Systems-570057519841810