Entrada destacada

Me mudo...

He cambiado de servidor. Ahora puedes seguirme en: http://asanchezdiaz.com Todavía está en desarrollo, pero a partir de ahora se...

miércoles, 26 de septiembre de 2012

Manual C# - Capítulo 1.4. Operadores II

Seguimos con el Manual de C#, en este capítulo, veremos los operadores lógicos de C#.

Sistema decimal y sistema binario

      Antes de empezar, quizás sea conveniente tener una noción básica (muy básica) del sistema binario.

      En nuestra vida cotidiana usamos el sistema decimal, un sistema de numeración compuesto de 10 símbolos ( 0,1,2,3,4,5,6,7,8 y 9 ). Se trata de un sistema de numeración posicional, donde el valor de cada dígito depende de su localización dentro del número, y se calcula usando potencias de 10. Por ejemplo:

El número 542 en notación decimal se puede obtener mediante la operación:

5 x 102 + 4 x 101 + 2 x 100

      Es decir, el 2 que ocupa la primera posición se multiplica por la potencia  100 = 1, el 4 que ocupa el segundo lugar se multiplica por su correspondiente potencia 101 = 10 y el 5 que ocupa el tercer lugar se multiplica por 102 = 100. La suma de los tres términos 500 + 40 + 2 es representada por el número o cantidad 542.

      En el sistema binario, tenemos sólo dos símbolos en lugar de los 10 del sistema decimal. Estos símbolos son el 0 y el 1. Es el sistema usado por los ordenadores, ya que se corresponde mejor con la realidad del funcionamiento de un ordenador, que trabaja con dos niveles de voltaje, representados con los números 0 y 1.

      En el sistema binario, el número 0 se representa por 0, cómo era de suponer, el  1 se representa con el símbolo 1, el 2 se representa en la forma 10, el 3 se representa 11...

      No nos vamos a extender mucho definiendo en más profundidad el sistema binario, aunque si podemos realizar una conversión de un número decimal a binario y de binario a decimal:

martes, 25 de septiembre de 2012

Cómo contar los registros de una tabla en SqlServer

A menudo, cuándo usamos una base de datos SqlServer en nuestras aplicaciones, nos surge la necesidad de saber únicamente cuántos registros tenemos almacenados en una tabla.

Por ejemplo, si estamos desarrollando una aplicación que gestione usuarios, podemos necesitar saber cuántos usuarios hay registrados para indicarlo en algún punto de la web, algo así como

"Tenemos x usuarios registrados"

En estos casos no necesitamos saber cual es el nombre o el email de los usuarios, sólo la cantidad.

En nuestra tabla "usuarios" debería haber una columna, llamada por ejemplo "id", con autoincremento (se autoincrementa en una unidad especificada en cada registro nuevo).

Podemos ejecutar la sentencia:

SELECT COUNT(id) FROM usuarios 

miércoles, 19 de septiembre de 2012

Manual C# - Capítulo 1.3. Operadores I

En este capítulo vamos a hablar de los operadores. Los operadores son símbolos que determinan qué tipo de operación hay que realizar entre variables en una expresión.

Operadores aritméticos

Realizan operaciones aritméticas (suma, resta, multiplicación y división) entre dos parámetros:

      Suma ( + )


            La operación es interpretada de distinta forma dependiendo de si los sumandos son de tipo numérico o se trata de cadenas de texto. Por ejemplo, si tenemos dos variables de tipo int la operación dará como resultado la suma de las dos variables:

int sumando1 = 2;

int sumando2 = 3;


int resultado=sumando1+sumando2;

La variable resultado debe ser del tipo int, ya que ambos sumandos lo son, y su valor es 5           Si se trata de dos variables de tipo string, el resultado es la concatenación de las dos cadenas de texto:


string cadena1 = "primera";
string cadena2 = "segunda";

string resultado = cadena1 + cadena2;

            El resultado en este caso es "primerasegunda".

            Fíjate que en las dos operaciones anteriores (y en las demás) el resultado sería el mismo si en lugar de sumar las variables hubiésemos sumado su valor:

int resultado = 2 + 3;
string resultado = "primera" + "segunda";

            Y esto es porque la variable almacena en memoria un valor, que es referenciado al usar la variable.

domingo, 16 de septiembre de 2012

Manual C# - Anexo I - Software que necesitaremos

Para hacer algo más ameno el Manual de C# he pensado en publicar un anexo con el software necesario para seguir el manual, y es el siguiente:

  1. Un IDE de C#. Un IDE (Integrated Development Environment o Entorno de Desarrollo Integrado) es una herramienta que nos proporciona un entorno completo para programar. Contiene todas las herramientas necesarias, cómo el editor, compilador, depurador o la interfaz gráfica. Microsoft proporciona Visual Studio, actualmente en su versión 2012, cuyas versiones comerciales valen, en el momento de escribir esta entrada, unos 636 euros. Las versiones Express son gratuitas, aunque bastante limitadas. Yo os aconsejo un IDE de código abierto como SharpDevelop, totalmente gratutito y con una interfaz muy parecida a Visual Studio. Es el IDE que seguiremos en este manual.

  2. Sistema Operativo Windows XP SP2 o posterior. Yo uso habitualmente Linux, pero para programar en C# uso Windows XP SP2. En Linux existe la plataforma Mono y MonoDevelop para programar en .NET, pero por ahora nos centraremos en Windows.

  3. Framework 4.0 y 3.5 SP1 de .NET. Lo más probable es que, en función de tu sistema operativo tengas ya instalados los frameworks de .NET. Podéis saber qué versiones tenéis instaladas siguiendo este enlace
Empezamos.

Manual C# - Capítulo 1.2. Variables

En el capítulo anterior vimos lo que son los namespaces en C#, en este nos centraremos en las variables.

Una variable es un espacio en memoría que almacena un valor con el que se puede trabajar. Imaginemos que queremos programar una calculadora que realice una suma. Necesitaremos al menos tres variables, una que almacene el primer sumando, otra el segundo sumando y otra el resultado. El valor que se indique para la primera variable será sumado al valor que se indique para la segunda variable y el resultado se almacenar´ka en la tercera.

a = 1;
b = 2;
c = a + b;

Para declarar una variable en C#, la sintaxis es la siguiente:

<visibilidad> <tipo> <nombre>;

Opcionalmente podemos inicializar la variable asignándole ya un valor, o hacerlo posteriormente:

<visibilidad> <tipo> <nombre> = <valor>;

Por ejemplo:

private int numero = 1;

Hemos declarado una variable, indicando que su visibilidad es private, o sea, sólo visible desde el ámbito en el que se declara, es del tipo int (integer, número entero), su nombre es numero y le hemos asignado el valor 1.

sábado, 15 de septiembre de 2012

Manual C# - Capítulo 1.1. Espacios de nombres

Una característica de .NET son los espacios de nombres o namespaces.

Los espacios de nombres (en adelante namespaces) son una forma de ordenar las diferentes clases que creemos en nuestra aplicación. Para que te hagas una idea, vamos a establecer una analogía con la vida real. Supongamos que el código fuente que escribimos para nuestra aplicación sea un archivador.

namespaces
En cada carpeta del archivador guardaremos las clases que creemos en función de la clase, de forma que una clase de un namespace es visible para el resto de clases de ese namespace.

Yo, personalmente, guardo todos los archivos de un mismo namespace en una misma carpeta en el código fuente, aunque no es imprescindible, a mi me ayuda a tener el código más organizado.

Para definir un namespace se usa la sintaxis:

namespace <nombre>
{
        //Clases que corresponden al namespace
}

Por ejemplo, supongamos que estamos desarrollando un programa que llamaremos "MiPrograma". El namespace principal lo llamaremos MiPrograma y lo declaramos:

namespace MiPrograma
{
          //Clases que corresponden al namespace MiPrograma
}

jueves, 13 de septiembre de 2012

Manual C# - Capítulo 1. Introducción. ¿Qué es un lenguaje de programación?

Comenzamos este "humilde manual de programación" definiendo que es un lenguaje de programación.
Según la Wikipedia:

"Un lenguaje de programación es un idioma artificial diseñado para expresar procesos que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana. Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación."

Muy simplificadamente podría decirse que el microprocesador de un ordenador es un circuito microprogramable, sistemas digitales que "entienden" sólo de unos (1) y ceros (0)... lo que se conoce como sistema binario, que representan dos niveles de tensión de los sistemas digitales.

El lenguaje máquina

Es el lenguaje que la máquina puede interpretar directamente. Es específico de cada ordenador (según su arquitectura). Es un lenguaje complejo, dado que las instrucciones han de escribirse en binario... con unos y ceros.

Los lenguajes de programación, como C#,  simplifican la programación, al ser su sintaxis mucho más intuitiva y equiparable al lenguaje cotidiano de una persona, sustituyendo complejas cadenas de unos y ceros por palabras más fácilmente manejables.

Aprendiendo C# y ASP.NET

Bueno, me he propuesto hacer un muy humilde Manual de Programación en C# y ASP.NET.

Muy humilde porque creo que no tengo los conocimientos necesarios como para profundizar mucho en la arquitectura de .NET, pero espero que pueda servir para que alguien sin conocimiento alguno pueda empezar, por lo que obviamente no está destinado a gente muy experta, que deberán perdonar la simpleza con la que me pueda expresar. 

Por supuesto, se admitiran sugerencias y mejoras, así aprendemos todos. Pretendo hacerlo por capítulos para que tenga un fácil seguimiento. 

A medida que vaya añadiendo contenido iré actualizando el índice.


Indice

Capítulo 1. Introducción. ¿Qué es un lenguaje de programación?
Capítulo 1.1 - Espacios de Nombres
Capítulo 1.2 - Variables
Capítulo 1.3 - Operadores I
Capítulo 1.4 - Operadores II

Anexo I - Software que necesitaremos



martes, 11 de septiembre de 2012

Problema con DataList y UpdatePanel en ASP.NET

Error
CS1061: 'System.Web.UI.Control' does not contain a definition for 'DataItem' and no extension method 'DataItem' accepting a first argument of type 'System.Web.UI.Control' could be found (are you missing a using directive or an assembly reference?)

Desarrollo

Me encontré este mensaje de error el otro día, usando un UpdatePanel dentro de un control DataList.

Normalmente para cargar los datos en el DataList, uso:

<%# DataBinder.Eval(Container.DataItem, "Valor") %>


 donde "Valor" es la propiedad de la clase que quiero introducir. Asumo que tenéis conocimiento de los controles DataList y UpdatePanel.

Pues bien, el error se producía al usar un control DataList dentro de un UpdatePanel:

<asp:UpdatePanel ID="panel"runat="server">
    <ContentTemplate>
      <asp:Button ID="btnResponder" runat="server" Text="Enviar" CommandArgument='<%#DataBinder.Eval(Container.DataItem,"Id")%>'/>
    </ContentTemplate>
</asp:UpdatePanel>



Marco en negrita el origen del error.

Solución

Usar Eval() del siguiente modo:
  
<asp:UpdatePanel ID="panel"runat="server">
    <ContentTemplate>
      <asp:Button ID="btnResponder" runat="server" Text="Enviar" CommandArgument='<%#Eval("Id")%>'/>
    </ContentTemplate>
</asp:UpdatePanel>


Esto resuelve el error. Espero que pueda ayudar a alguien.

Autoaprendiendo...

Esa es mi única intención, autoaprender.

En este blog pretendo crear una especie de base de datos que me sirva de ayuda en el futuro.

A menudo me enfrento a problemas a la hora de programar... cosa lógica... estoy autoaprendiendo. Son problemas en forma de errores de compilación y mensajes de error, problemas con css o con SQL...

En muchas ocasiones he encontrado la forma de salvar el obstáculo a base de buscar y buscar en google... otras veces ha sido mi perseverancia lo que me ha hecho encontrar la solución.

Todos esos problemas, con su solución, los iré publicando en el blog, a medida que surjan.

Creo que de esta forma, me ayudo a mi mismo y a todos los que, como yo, disfrutan programando.

Espero que sirva de algo.