viernes, diciembre 25, 2009

Resolución de la Evaluación de Laboratorio II y Programación II de Diciembre

En el enunciado se destacaban las condiciones a cumplir, dando los casos base para la formación de una lista simplemente encadenada que representa un nivel de la triángulo de Tartaglia (o Pascal, o Binomio de Newton) para obtener algo como lo representado en la figura siguiente:



Para poder resolver el problema, primero definí la estructura que iba a soportar los datos en la lista:
Luego separé el problema en cuatro partes (se puede mejorar...):
- agregarNodo() será la función encargada de ir sumando un nodo por cada nivel, desde el primer hasta el nivel ingresado por el usuario.
- borrarLista() se encargará de eliminar la lista completa, para cuando queramos ver un triángulo de otro nivel.
- muestraLista() nos permitirá ver en pantalla toda la lista.
- calculaNivel() es la función que realizará las sumas sobre cada nodo.

En el programa principal, armé un menú con dos opciones:
1) Crear Triángulo.
2) Salir.

La opción 1) nos va a pedir el nivel del triángulo a formar, verifica que no exista una lista anterior, y en caso contrario, la elimina, para luego en una estructura de repetición que va desde el valor ingresado por el usuario hasta 0, realizando los sucesivos llamados a agregarNodo() y muestraLista().



Básicamente la función agregarNodo() inserta un nodo delante del primero existente, donde el dato almacenado es un uno (1), de esa manera cumple con la condición que habla de que empieza la lista siempre con un uno. Luego verifica que si no es el primer nodo o el segundo, entonces llama a la función encargada de realizar las sumas necesarias:


La función calculaNivel(), es la función recursiva que solicita el enunciado, y actúa de la siguiente manera:
- para cada ejecución de la función, crea una variable auxiliar que almacenará la dirección del siguiente a la dirección del parámetro. Haciendo esto siempre y cuando esa dirección sea distinta de NULL, y luego sumando los valores almacenados en el campo de dato. Y finalmente hace el llamado recursivo, pasando ahora como parámetro de la función, la dirección almacenada en el campo sig del parámetro recibido.


En el video se puede ver un seguimiento para nivel 4:


Para completar el código nos quendan las funciones borrarLista() y muestraLista().


Espero que les pueda ser de ayuda, para entender la forma de resolver el ejercicio.
Les dejo a Uds. la adaptación a Objetos de este código.

Salu2...///

lunes, noviembre 23, 2009

Configurando wxWidgets para Code::Blocks en Windows

Luego de instalar el wxPack, en la carpeta que sugiere el instalador, comenzamos con un proyecto wxWidgets:
 
seguimos los pasos acostumbrados para la puesta en marcha de un nuevo proyecto:

 

  
  
  
  
y en esta parte hay que seleccionar la carpeta donde se encuentran las librerías de wxWidgets:

 

  
  
  
  
  
  
  
  
Bien, espero que ayude a configurar todo.


jueves, noviembre 19, 2009

Laboratorio II: Modificación de Fechas de la última Evaluación

Grupo A y B: 23/11/2009

Grupo C    : 24/11/2009

viernes, octubre 16, 2009

jueves, octubre 15, 2009

Vocación IT

Es una publicación de una empresa de capacitaciones en IT que muestra las diferentes categorías que se pueden obtener en trabajos IT, tiempos y estadísticas.

Vocación IT

Laboratorio III - J2ME

Este manual está muy bien escrito a mi criterio, y da una explicación muy clara sobre los elementos a implementar en esta última etapa del año.


domingo, agosto 16, 2009

Laboratorio III - NetBeans - Jdbc - mysql

Solucionado el problema de conexión con el driver de mysql tanto en windows como en linux:

- El primer paso es agregar la librería de MySQL JDBC Driver en la IDE de desarrollo.
- Y luego en el código, debemos reemplazar "com.jdbc.mysql" por "org.gjt.mm.mysql.Driver"

Programación II - Pistas para el TP

La idea de esta entrada es aportar una orientación sobre el trabajo con una lista que apunta a otra, tomando de base el ejemplo del trabajo práctico. Por supuesto que no es la resolución del mismo.

viernes, agosto 07, 2009

Laboratorio III - MySQL-JDBC-JAVA (parte 1)

En éste apunte les dejo una reseña sobre los orígenes de los motores de bases de datos.

martes, julio 28, 2009

Vuelta al cole...

IMPORTANTE!!!

La rectora de la escuela, me comunicó hoy que las clases comienzan el lunes 3 de agosto, pasando las mesas de examen del 3 y 4 de agosto al 10 y 11 de agosto.

Así que nos vemos en clase...

miércoles, julio 22, 2009

Tarjeta de referencia de ANSI C

Encontré un buen machete de funciones y complementos para ANSI C.

Laboratorio II - Archivos

En esta entrada voy a explicar una forma posible de resolver parte de la evaluación, que en general fué similar para todos los grupos.

En principio, se trataba de leer datos desde un archivo de texto plano, donde cada línea representa los datos de un cliente, indicado por:

NOMBRE; DOMICILIO; TELÉFONO; LOCALIDAD


Para poder realizar esta operación es necesario abrir el archivo para lectura, y utilizar una función para la adquisición de los datos que me asegure leer la línea completa, dado que me voy a encontrar con muchos elementos que actúan de separador o limitador de campo. Entonces lo que más práctico me parece utilizar es la función FGETS(), que me permite leer de un archivo la cantidad de caracteres que le indique.

...

FILE *pfTxt;
char *linea;

pfTxt = fopen("demo.txt", "r");
linea = malloc(sizeof(char) * 100);


while(!feof(pfTxt)) {

memset(linea, '\0', 100);
fgets(linea, 100, pfTxt);


...
}


Estas líneas de código nos permite ir leyendo línea a línea el archivo hasta el final.

Luego que tenemos en una variable, la cadena de caracteres que corresponde a los datos de un cliente, se nos pide separar los mismos en un registro. Para este ejemplo, solo voy a separarlos por las datos principales, Nombre, Domicilio, Teléfono y Localidad.

Se debe entonces crear un nuevo tipo de datos al que voy a llamar ABONADO

typedef struct {
char ayn[30];
char dom[30];
char tel[20];
char loc[30];
} ABONADO;

Y la rutina que va a separar los datos es la siguiente:


Donde "lin" es una variable puntero a caracter que contiene la línea de datos leída del archivo.

Ahora solo resta almacenar el contenido de nuestra variable de registro "cliente" en un archivo binario...

fseek(pfBin, 0L, SEEK_END);
fwrite(&cliente, sizeof(ABONADO), 1, pfBin);

... donde "pfBin" es una variable puntero a FILE, que debió asignarse de la siguiente forma:

FILE *pfBin = fopen("demo.dat","wb");


Uniendo todo esto en dos funciones "void pasaTxtBin()", encargada de leer el archivo de texto y generar el archivo binario y la función "ABONADO separaLineaEnCampos(char *)" que recibe una cadena de caracteres que contiene la línea leída del archivo de texto y devuelve un registro...


En este link dejo el código con el ejemplo completo.

domingo, junio 14, 2009

Bolsa de Trabajo - Junio 2009

Técnico de Mantenimiento

Empresa joven y dinámica dedicada al desarrollo y mantenimiento de Hardware y Software de gestión, seleccionará un Técnico recibido en electrónica/informática/redes de comunicación y/o estudiante de Ing./Lic. en Sistemas o afín, de sexo masculino (excluyente), de entre 18 y 25 años, para desarrollarse como Técnico de Mantenimiento.

Sus principales responsabilidades serán brindar soporte y mantenimiento de:

- Equipos a nivel de Hardware, Firmware y Sistemas Operativos.
- Configuración de enlaces como ser VPN, VPN inalámbrico, equipos XDSL, ADSL, DSLAM , servers, redes, routers, smitchs, switches

Requisitos:

- Manejo avanzado de Microsoft, Windows, Outlook, DOS, Server / Server Enterprise, NTFS, FAT, Básico Linux, SME, Ruteo, Capas OSI, Smitching, FTP, TTY, HTTP, PPTP, Terminal.
- Manejo de Inglés técnico
- Conocimiento de cableado estructurado y técnicas de tecnología convergente (no excluyente)

Se valorará la responsabilidad, buen trato personal y predisposición para el trabajo en equipo.

Se ofrece capacitación, certificaciones y posibilidades de desarrollo en el marco de un excelente clima laboral.
Zona de trabajo: Olivos.
Horario de trabajo: lunes a viernes de 9 a 18 hs.

Los interesados deberán enviar CV por mail a
busquedasbl@gmail.com sin omitir disponibilidad y remuneración pretendida, indicando Ref: TM

martes, junio 02, 2009

Laboratorio II - Trabajos Prácticos del 1er. Trimestre

Los trabajos prácticos que se van a corregir, son los siguientes:

  • TP01
  • TP02
  • TP03
  • TP04
  • TP05
  • TP08
Los prácticos 6 y 7 no serán requeridos dado que no dí la teoría de Backtracking a todas las rotaciones. Esos trabajos prácticos pasan al próximo trimestre.

martes, mayo 19, 2009

Mitos y Leyendas de las Carreras Informáticas

Este es el video de la charla que se dió en 2008 en la Facultad de Ciencias Exáctas y Naturales de la Universidad de Buenos Aires.

martes, febrero 24, 2009

Sun is shining...



La popularidad de NetBeans

Hace unos días, en uno de los alias de ambassadors, alguien citó un estudio bastante interesante (realizado en el sitio Java By Example) sobre la eterna rivalidad entre Eclipse y NetBeans. De hecho, me pareció un enfoque suficientemente interesante como para repetirlo y compartirlo.

El experimento en cuestión fue utilizar Google Trends para medir la popularidad de ambos IDEs en los últimos años. Trends es una herramienta de Google Labs que permite comparar el nivel de interés alrededor del mundo de los tópicos indicados (en base a la cantidad de búsquedas realizadas en Google y a la frecuencia en la que los términos han aparecido en las historias de Google News).

Nota completa - Sun is shining...

viernes, febrero 06, 2009

Richard Stallman en Argentina (conferencia)

Conferencia realizada en la Cámara de Diputados de la Nación, Buenos Aires, Argentina, el 3/11/2008.

Parte I
Parte II
Parte III

jueves, febrero 05, 2009

Richard Stallman en Argentina

Richard Stallman es uno de los fundadores del Software Libre, y en 2008 estuvo de  visita en argentina y entre otras actividades, la periodista Rosario Lufrano realizó una entrevista para canal 7.


Parte I



Parte II

viernes, enero 16, 2009

Asociación Club de Programadores - Charlas Gratuitas

Bueno, en el primer posteo del año 2009, encontré en este club, cursos, charlas y seminarios gatuitos que se dictan en febrero.

CHARLAS GRATUITAS DE VERANO EN EL CLUB
Dictadas una vez por semana durante todo Febrero y principios de Marzo, las charlas apuntan a introducir a los participantes en alguas temáticas a desarrollarse durante el año en nuestro Club de Programadores.


Asociación Club de Programadores - Club de Programadores

Algunas Fotitos