jueves, 29 de octubre de 2015

Resumen Capitulo 1, Sistemas operativo: Diseño e implementación Andrew Tanembaum

Autor: José Medina.
Competencia: Competencia oral y escrita.
Asignatura: Mantención y administración de Sistemas.

En este capítulo se nos habla un poco de los diferentes lenguajes en los que trabaja un computador y las relaciones que se dan entre ellos ya que estos se ubican en diferentes niveles, los cuales pueden ser interpretados de varias manera; la cuales son: 

  1. la traducción (cuando los programas pasan de un lenguaje a otro para ser procesados de manera completa) .
  2. Interpretación (se procesa el programa de un lenguaje a otro en pequeñas instrucciones).

Cada uno de estos métodos es útil, y se usan dependiendo del lenguaje al que queramos acceder, ya que en algunos casos puede ser de mas utilidad alguno de estos procesos en particular. También se habla que para cada lenguaje usado por la el computador existe una maquina virtual que se encarga de ejecutarlo. Estos lenguajes al estar relacionados en niveles, cada lenguaje se encarga de mandar instrucciones a algún lenguaje de nivel menor, hasta que estas instrucciones lleguen al lenguaje del dispositivo el cual está por debajo del nivel 0, el cual se encarga de interactuar con los componentes físicos de este; además se habla de que cada nivel tiene un enfoque, como por ejemplo en una computadora de seis niveles los enfoque de estos serian: 

nivel 0- Lógica digital, 
nivel 1- Micro arquitectura, 
nivel 2- Instrucciones de la Arquitectura, 
nivel 3- Sistema Operativo, 
nivel 4-Lenguaje ensamblador, 
nivel 5- Lenguaje orientado a problemas; 

Con este ejemplo podemos decir que cada uno de los niveles se relaciona con los niveles mas bajos, una característica de estos es que hasta el nivel 3, solamente se trabaja en datos numéricos, y es hasta el nivel 4 que se comienzan a usar las letras.

También se habla sobre las dos partes fundamentales de un computador, los cuales son el hardware y el software, los cuales son básicamente equivalentes y son capaces de realizar las mismas acciones y dependen el uno del otro.

Además nos cuenta sobre la evolución que ha tenido la arquitectura de computadores a lo largo de la historia, desde la época en la que se usaban solo dos niveles de arquitectura, lo cual era ineficiente, lo cual provoco que se crearan maquinas con mas niveles para reducir el tamaño de estas y mejorar su rendimiento. Otra de las cosas que se comentan es la evolución que se hadado en la manipulación de las maquinas a lo largo de los años, donde se puede ver que años atrás la simple acción de crear y revisar un programa podía tomar mucho tiempo y generar mucha tensión, lo cual creo la necesidad de implementar programas que simplificaran estos proceso, a estos programas se les llamo sistemas operativos, el primero de estos programas se llamo FORTRAN, el cual funcionaba mediante la lectura de tarjetas para cada trabajo.

También podemos ver que el principal causa de la evolución de las computadoras son las necesidades de la personas la cuales cambian de gran manera, un ejemplo de esto es la eliminación de la microprogramación, la cual consistía en dividir los programas en pequeños segmentos de información para que fueran procesados gradualmente, lo cual tiene tanto ventajas como desventajas.

Otro tema que se abarca en este capítulo es la influencia que han tenido la primeras computadoras con el avance gradual y de cómo ha evolucionado la tecnología para realizar más eficientemente las tareas que se necesitan en el área de la computación y aquí podemos ver las generaciones en la que podemos encontrar estas computadoras según cómo funcionaban y se clasificaban de la siguiente manera:

•Generación Cero: Fueron las primeras maquinas las cuales se podían clasificar como computadoras, esta generación se caracterizo por que usaba mayoritariamente una tecnología de engranajes y ejes, y los principales ejemplos de esta generación son maquinas como la pascalina, la de Charles Babbage, entre otras, además podemos encontrar más personajes con aportes relevantes en esta generación como Ada Lovelace, Zuse, etc.

•Primera Generación: En esta generación los computadores funcionaban y procesaban datos a partir de tubos al vació o válvulas electrónicas, los cuales regulaban el flujo de energía, entre los principales personajes de esta generación encontramos a Alan Touring, John Mauchley, Von Neumann, etc.

•Segunda Generación: En esta generación encontramos que los computadores funcionaban a a bases de transistores y en esta hubo mucha influencia de compañías como IBM la cual estaba muy interesada en el desarrollo de computadores.

•Tercera Generación: En esta generación se mejoro el rendimiento y se redujo el tamaño de los computadores mediante es uso de circuitos integrados, también se da una gran influencia de IBM.

•Cuarta Generación: Durante esta generación de da el uso innovador del microprocesador el cual logro el avance de la computación en diversas áreas y permitió el reducir aun más el tamaño de las maquinas.

•Quinta Generación: Esta es una generación existente pero habla de planes futuros sobre computadores definidos como invisibles los cuales estarían basados en inteligencia artificial.

Reflexión

El Blog muestra el uso del lenguaje Español para la interpretación de un libro traducido en dicho idioma respetando puntuación y acentos permitiendo decodificar el mensaje o la información que el autor nos quiso traducir.  

Autor: José Medina.
Competencia: Creatividad e innovación, Competencia oral y escrita.
Asignatura: Interfaces Gráficas de usuario.


El siguiente Blog presentara una serie de ejercicios con los cuales se busca dar a conocer como funciona el Wiimote en una interfaz de programación de aplicaciones básicas traqueando las posiciones x e y de un Led Infrarojo con el wiimote y graficando dichos datos por pantalla para demostrar su funcionamiento en juegos y en la estructura básica de diseño de un Paint, ademas de dar una pequeña reseña sobre su funcionamiento y características.

El Wii Remote (Japonés: Wiiリモコン), también conocido coloquial mente como "El Wiimote", es el controlador principal de la consola Wii. Una característica principal de Wii Remote es su sensor de movimiento, el cual permite a los usuarios interactuar y manipular objetos en la pantalla vía reconocimiento de gestos y señalización mediante el uso del acelerómetro y tecnología de sensores ópticos. Otra característica es su expansión mediante el uso de accesorios. El accesorio principal es el Nunchuk, que complementa al Wii Remote con 2 botones (C y Z) y un joystic. Es necesario para juegos que necesiten una gran cantidad de movimientos, como por ejemplo Super Mario Galaxy.

El WiiMote cuenta con 12 botones.


  • Botón Power = Enciende y apaga la consola.
  • Botón A = Generalmente aceptar, elegir.
  • Botón B = Generalmente retroceder, cancelar.
  • Cruceta = Botones Arriba, abajo, izquierda y derecha
  • Botón Menos (-) = Equivalente al botón Select)
  • Botón Más (+) = Equivalente al botón Start)
  • Botón Home = Abre el Menú HOME
  • Botón 1 = Equivalente al Botón X
  • Botón 2 = Equivalente al Botón Y




Actividad


1.- Programe una interfaz con PyGame y WiiMote, utilizando la librería cwiid, que detecte una Led IR y mueva una imagen de 64x64 por pantalla según el movimiento del Led IR

2.- Programe un Video Juego con PyGame y WiiMote, utilizando la librería cwiid, que detecte un Led IR y mueva una Nave por pantalla de manera horizontal (Izquierda/Derecha) según el movimiento del Led IR. La Nave debe dispar de manera automática 5 rondas de balas cada 1 segundo. 

3.- Igual que el anterior, pero la Nave debe dispar 5 rondas de balas cada vez que se encienda el segundo Led IR. 

4.-Programe una interfaz gráfica que implemente un Escritorio Virtual. Se deben utilizar los siguientes elementos: {cartón de 50x40 cm, una tabla de 50x2cm, 1 listón de 70x2 cm, WiiMote}. Deberá construir la siguiente plataforma. Con la plataforma construida programa un scrip que simule el movimiento del puntero de un Paint y grafiquelo por pantalla.





Reflexión
La presente actividad permite dar una introducción a la librería Cwiid de Python para la programación de aplicaciones analógico digital con Wiimote. La actividad nos permite demostrar la creatividad del programador para afrontar el uso del Wiimote y diseñar una aplicación con una interfaz entretenida e innovadora para afrontar una nueva forma de programación de juegos manejando un sprite y sus funciones con periférico tan conocido como lo es el Wiimote.




















jueves, 22 de octubre de 2015

Presentación Oral en Ingles sobre Google

Autor: Jose Medina.
Competencia: Ingles.
Asignatura: Ingles I.

Actividad


La actividad presentada a continuación consistió en una pequeña presentación oral en ingles describiendo  las características principales de un sitio web reconocido. El sitio web elegido fue el motor de búsqueda Google el cual en un futuro dominara el mundo ...

Spanish:

Individualmente, hay que describir un sitio web de su elección.
Algunos aspectos importantes a considerar al analizar y describir una página web:

  • ¿Cuál es el propósito de su sitio web?
  •  ¿El autor es mencionado?
  • ¿Puedes encontrar la información de contacto del autor?
  • ¿Es fácil de navegar?
  • ¿Es el sitio actualizado con frecuentemente? ¿Aparece la fecha en el sitio?
  • ¿Cuáles son las actividades que el usuario puede hacer en la página web?
  • ¿Cuáles son las principales aplicaciones del sitio web?
  • ¿Quiénes son los usuarios primarios y secundarios de la página web? (edad, profesión, etc.).
  • ¿Cuánto tiempo se necesita para acceder al sitio? ¿Tiene que esperar por mucho tiempo?
  • ¿Cuántas personas (aproximadamente), visitan la página de forma regular (diario, semanal, mensual)?
  • ¿Cuál es la percepción cuando accedes al sitio web? Adjetivos para describir la página web.
  • ¿Son los colores apropiados para el sitio?
  • ¿Utiliza gráficos e imágenes adecuadas?
  • ¿Existen deficiencias? Describir
  • ¿Cómo es este sitio web diferente a otros sitios web del mismo tipo?
  • ¿Por qué sugiere el sitio web?


Presentación oral

- Preparar una presentación oral en Power Point o Prezi.
- Escribir sólo palabras o números en las diapositivas.
- Compruebe la ortografía de las diapositivas.
- Comprobar pronunciación antes de la presentación.
- Hablar en oraciones completas (sujeto + verbo + complemento).
- Utilizar la gramática del: 

  • verbo en Presente Simple (afirmativa y negativa)
  • Verbo ser o estar
  • tener
  • aquí
  • adjetivos


- Usted no puede utilizar notas en la presentación.

English:

Individually, you have to describe a website of your choice.
Some important aspects to consider when analyzing and describing a web page:

  • What is the purpose of your website?
  • Is the author mentioned?
  • Can you find the author contact information?
  • Is it easy-to-navigate?
  • Is the site updated frequently? Does the date appear in the site?
  • What are the main activities user do in the website?
  • What are the main applications of your website?
  • Who are the primary and secondary users to the website? (age, profession, etc.) .
  • How long does it take to access the site? Do you have to wait for long?
  • How many people (approximately) visit the page on a regular basis (daily, weekley, monthly)?
  • What is the perception when you access the website? Adjectives to describe the webpage.
  • Are the colors appropriate for the site?
  • Does it use appropriate graphics and pictures?
  • Are there any shortcomings? Describe them
  • How is this website different to other websites of the same type?
  • Why do you suggest the website?

Oral Presentation

  • - Prepare an oral presentation in power point or prezi.
  • - Write only words or numbers in the slides.
  • - Check spelling in the slides.
  • - Check pronunciation before the presentation.
  • - Speak in complete sentences (subject + verb + complement).
  • - Use grammar from the course 
    • Verb to be 
    • Present Simple (affirmative and negative) 
    • Have 
    • has There is 
    • there are 
    • Adjectives 
    • Numbers.
  • - You cannot use notes when presenting.



Presentación / Presentation:






Reflexión


La presentación o la actividad buscaba que los alumnos aplicaran los conocimientos adquiridos durante el semestre sobre presente simple y verbos regulares al realizar una presentación oral demostrando los conocimientos aplicándola a la descripción de un sitio web popular priorizando la pronunciación y fluidez que se dio en la exposición. Como requisito extra la presentación posee poca información ya que todo se debió mencionar en ingles.





Programacion Lego

Autor: Jose Medina.
Competencia: Trabajo en equipo.
Asignatura: Programación de Robot.

Descripción de la Actividad

La actividad tiene como objetivo el repasar conceptos e incorporar el uso de sub tareas con paso de parámetros junto con el uso de nuevas instrucciones del lenguaje NXC para mejorar la calidad del código fuente y del recorrido del robot. 

El robot deberá desplazarse por una pista de obstáculos rectangular con una superficie blanca con puntos negros, donde al chocar con una pared debe de retroceder, realizar un giro de 180° a la izquierda o derecha, disminuir su potencia en 10, contar el choque y seguir su recorrido. Al detectar un punto negro este será contado, se realizara un  giro en un ángulo aleatorio menor a 180° a la izquierda o derecha, aumentar su potencia en 10 y  seguirá su recorrido, en caso de detectar un ruido sobre 80 DB el robot se detendrá y mostrara por un pantalla el detalle del numero de choques y puntos negros.   


Cargos: 

*Jefe de grupo (Jorge Arias): Esta persona fue el encargado de dirigir, solucionar problemas y dar las indicaciones pertinentes a los todos los integrantes del equipo, esto con el fin de guiar al equipo hacia un trabajo óptimo y más ordenado junto con ser participe en cada una de las actividades desarrolladas por cada integrante. 

*Secretario (José Medina): Encargado de tomar los apuntes correspondientes de la activad con el fin de desarrollar un informe detallado de todo lo realizado en los “laboratorios de robótica”. 

*Productor Multimedia (Ignacio León): Responsable de grabar y editar el material audio visual. Gracias a lo que fue esta recolección de material audio visual, se pudo encontrar diversos errores que se cometían con el robot los cuales posteriormente fueron reparados, además de cumplir con la función de testificar lo realizado en clases y la aplicación del código NXC.


Solución: 


En el presente trabajo, la  estrategia adoptada por el grupo fue la de implementar los contenidos aprendidos durante las clases de cátedra de proyecto robótica para poder lograr que nuestro robot y código funcionasen correctamente implementando el uso de multi-tareas donde las tareas creadas para la aplicación corren en paralelo para poder ejecutarse simultáneamente las cuales funcionaran de esta manera al ser implementadas en la tarea principal. Pese a que se utilizan varias tareas que permiten que el robot por ejemplo detecte choques y puntos negros mientras avanza se necesita del mutex para poder lograr que el robot realiza los movimientos de motores pertinentes mientras este en funcionamiento y no se ejecuten dos órdenes de movimiento de motores a la vez.


Pese a que el robot realiza su recorrido con multi tareas era necesario que el robot recolectara datos durante su trayectoria y los almacenar y los mostrara en pantalla sin mencionar que con estos datos se calculaba el puntaje por lo tanto se utilizo un arreglo   para poder almacenar cada dato obtenido durante el recorrido, es decir, el Array maneja la cantidad de puntos negros encontrados.
 Pseudocódigo 
Declarar variables;
Task Sound(){
Crear Musica;
}
Task Anotacion(){
Crear musica;
}
Task Circulo(){
Si(sensor detecta negro){
Iniciar tarea anotación;
Incrementar potencia en 10;
Calcular diferencia de tiempo entre cada punto negro;
Si (diferencia de tiempo >10 segundos){
Puntaje =0;
}else{
Mostrar puntaje de la ecuación;
Guardar puntaje en array;
}
Retroceder;
Girar por tiempo aleatorio;
Volver timer a 0;
For(i<8){
Limpiar pantalla;
Mostrar puntaje;
If(i==8){
Limpiar pantalla;
I==0;
}
}
Subir un peldaño en la pantalla;
}
Task aplauso(){
If(detecta sonido){
Retroceder;
Girar;
}
}
Task parada(){
If(choca){
Apaga todo;
}
}
Task main(){
Dar prioridad tareas;
Setear sensores;
Avanzar;
}

Codigo NXC

#define UMBRAL 40
#define MIC 80
int ArrayPunt[];
int Puntaje=0, potencia=20, i=0,p=0, giro, Puntos=0;
int TiempoAnt, TiempoAct, DiferenciaTiemp;
mutex paso;    

//tarea sonido durante el recorrido
task Sound(){
while(true){
Acquire(paso);//adquiere el mutex
PlayTone(587,3000); Wait(50);
PlayTone(392,3000); Wait(50);
PlayTone(440,3000); Wait(50);
PlayTone(392,3000); Wait(50);
PlayTone(415,3000); Wait(50);
PlayTone(392,3000); Wait(50);
PlayTone(440,3000); Wait(50);
Release(paso);//deja el mutex
}
}
//tarea anotacion musica de deteccion de puntaje
task anotacion(){
while(true){
Acquire(paso);//adquiere el mutex
PlayTone(500,160);
Wait(100) ;
PlayTone(299,50);
Wait(100);
PlayTone(10000,500);
Wait(100);
Release(paso);//deja el mutex
}
}
//tarea deteccion de puntos negros
task circulo(){
while(i<10){
if(SENSOR_1<UMBRAL){//en caso de detectar un punto negro
potencia = potencia+10; //aumenta la potencia
StartTask( anotacion);
//calcular puntaje
TiempoAct = CurrentTick();
DiferenciaTiemp = (TiempoAct – TiempoAnt) / 1000;
TiempoAnt= TiempoAct;
if(DiferenciaTiemp < 10){
Puntaje = -5* DiferenciaTiemp+50;
ArrayPunt[p]= Puntaje;
p++ ;
Puntos= Puntos+Puntaje;
}
if(DiferenciaTiemp>10){
Puntaje =0;
}
giro = Random(500)+1500;
Acquire(paso);//adquiere el mutex
//retroceder y crear giro random
OnRev(OUT_AC,potencia);
Wait(500);
OnRev(OUT_C,potencia);
OnFwd(OUT_A,potencia);
Wait(giro);
OnFwd(OUT_AC,potencia);
Release(paso);//deja el mutex
StartTask(Sound);//inicia nuevamente la tarea sound
DiferenciaTiemp=0; //se cambia el valor a 0
NumOut(10,i,Puntaje);
if(i==8){
ClearScreen(); // se limpia la pantalla y se inicia nuevamente la cuenta
i=0;
}
i++ ;
}
}
}
//tarea aplauso donde se evaden obstaculos mediantew una seña auditiva
task Aplauso(){
while(true){
if(SENSOR_2>MIC){
Acquire(paso);//adquiere mutex
//se retrocede y realiza un giro
OnRev(OUT_AC,potencia);
Wait(1000);
OnRev(OUT_A,potencia);
OnFwd(OUT_C,potencia);
giro= Random(500)+1500;
Wait(giro) ;
OnFwd(OUT_AC,potencia);
Release(paso);//deja el mutex
}
}
}

//tarea donde se detendrán motores al activarse el sensor touch y se mostraran los resultados
task parada(){
while(true){
if( SENSOR_3==1){
//si se activa el sensor touch
Off(OUT_AC); // se apaga los motes a y c
NumOut(10,7,Puntos);
TextOut(10,8,”Puntaje ” );
StopSound();
for(int x=0;x<30;x++){
TextOut(10,6,”Array” );
NumOut(x+3,5, ArrayPunt[p]);
}
}
}

//tarea principal con la inicialización de motores
task main() {
Precedes(circulo,Aplauso,parada,anotacion);  // dar inicio a las tareas
SetSensorLight(IN_1); // inicializacion sensores
SetSensorSound(IN_2);
SetSensorTouch(IN_3);
OnFwd(OUT_AC,potencia);
StartTask(Sound);   // inicio tarea sonido
TiempoAnt = CurrentTick();
if( SENSOR_3==1){//apagar motores y detener tareas
Off(OUT_AC);
Wait(30000);//esperar durante 30 segundos
StopSound();//detener tarea sonido
StopAllTasks();// detener todas las tareas
}
}


Vídeo Actividad Finalizada




Reflexión 

La actividad presentada demuestra como con trabajo en equipo podemos dar solución a la problemática planteada al inicio del blogg, en donde al  asignar cargos y delegar funciones se logro como resultado final que el robot NXC realizara el recorrido de forma exitosa. Cada participante del grupo aporto con una cuota de trabajo para el diseño del robot, producción multimedia , entre otras cosas y un trabajo conjunto para el diseño del código final.



jueves, 15 de octubre de 2015

Guía Introductoria SDL


Autor: José Medina.
Competencia: Aprendizaje Autónomo.
Asignatura: Interfaces Gráficas.


Para poder comenzar a programar en algún lenguaje es necesario tener el conocimiento previo de como funciona, un poco de historia, como es visto por otros programadores, es decir, conocer la parte teórica de un lenguaje o biblioteca que se desee aprender a utilizar por eso realizaremos una pequeña guía introductoria sobre conceptos y funciones que implica buscar en la documentación oficial y de Internet sobre SDL para obtener el conocimiento base de esta librería antes de comenzar a programar con el.

1.    Explique con detalle:

a)    ¿Qué es SDL?
    Simple DirectMedia Layer (SDL) es un conjunto de bibliotecas desarrolladas en el lenguaje de programación C que proporcionan funciones básicas para realizar operaciones de dibujo en dos dimensiones, gestión de efectos de sonido y música, además de carga y gestión de imágenes.

b)    ¿Que hace SDL_Init()?
       Permite inicializar las características de SDL.

c)    ¿Cómo inicializar con SDL una superficie de 1280x900 pixeles con 16 millones de colores?
        Screen = SDL_SetVideoMode(1280,900,24)
        24 bits es igual a 16 millones de colores.

d)    ¿Qué es una superficie en SDL y como se define?
    Una superficie es un bloque de memoria utilizado para almacenar una región rectangular de píxeles. En esta área de memoria podemos almacenar dibujar sobre ella, cargar imágenes, etc.

e)    ¿Qué hace la función SDL_BlitSurface?
       Permite mostrar una gráfico por pantalla, copiando el gráfico anteriormente cargado y copiandolo en la superficie visible.

f)     ¿Qué hace la función SDL_SetClipRect?
       Permite decirle a SDl que cualquier operación gráfica que se realice se quedara dentro del rectángulo del surface. En caso que el recurso gráfico sea mayor que el surface, se recorta. 


2.    Manejo de eventos en SDL:

a)    ¿Que son los eventos en SDL?
       Los eventos son las acciones realizadas por el usuario para interactuar con el software, como el uso de mouse, uso de teclado, etc.

b)    Nombre al menos 4 eventos detectados por SDL.
       -Eventos teclado.
       -Eventos Movimiento ratón.
       -Eventos Joystick.
       -Eventos cierre de ventana.

c)    ¿Cuáles son las 3 formas de manejar eventos en SDL?
       Detectar el evento, capturar el evento y sondeo o almacenamiento de eventos.

d)    ¿Qué hacen las siguientes funciones:
d.1) SDL_PollEvent( )
       Permite comprobar los eventos pendientes en cola.
d.2) SDL_KeyboardEvent( )
       Almacena los eventos relacionados con el teclado.
d.3) SDL_GetKeyState( )
       Devuelve el estado actual del teclado, 0 no presionado, 1 presionado.
d.4) SDL_MouseMotionEvent( )
       Captura el movimiento del mouse.
d.5) SDL_JoyAxisEvent( )
        Captura los movimientos del eje del joystick.
d.6) SDL_Quitevent( )
       Evento de cierre.
d.7) SDL_resizeEvent( )
       Evento de redimensionado de ventana.

3.    Manejo de tiempos en SDL:
a)    ¿Por qué es importante manejar el tiempo en SDL?
       Permite evitar que nuestra aplicación se ejecute excesivamente rápida en ordenadores de ultima generación, normalizando los tiempos de ejecución.

b)    ¿Qué hace la función SDL_GetTicks( )?
       Devuelve el número de mili segundos desde que se inicializo la librería SDL.

c)    ¿Qué hace la función SDL_Delay( )?
       Ordena a la aplicación que se detenga un determinado tiempo de segundos antes de continuar con la ejecución.

4.    Analice y explique que hace el siguiente ejemplo:
#include 
#include 
#include 

int main (int argc, char *argv[])
{
    SDL_Surface *image, *screen;
    SDL_Event event;
    SDL_Rect dest;
    int i, done = 0;

    atexit(SDL_Quit);

       if(SDL_Init(SDL_INIT_VIDEO)<0)
        {
            printf("Error de video");
            exit(1);
        }
    screen = SDL_SetVideoMode(800,500,24,SDL_HWSURFACE);
    if(screen == NULL)
    {
        printf("Error Modeo Grafico");
        exit(1);
    }
    image=SDL_LoadBMP("r2.bmp");
    SDL_SetColorKey(image, SDL_SRCCOLORKEY | SDL_RLEACCEL, SDL_MapRGB(image->format,255,0,0));

    for(i=1;i<=5;i++)
    {
        SDL_SetAlpha(image, SDL_SRCALPHA|SDL_RLEACCEL, rand()%255);
        dest.x = rand()%800;
        dest.y = rand()%500;
        dest.w = image->w;
        dest.h = image->h;
        SDL_BlitSurface(image,NULL,screen,&dest);
    }
    SDL_Flip(screen);
    SDL_FreeSurface(image);
    while(done==0)
    {
        while(SDL_PollEvent(&event))
        {
            if(event.type == SDL_KEYDOWN)
                done = 1;
        }
    }
    return 0;
}

La apliacion es bastante sencilla ya que lo que hace es inicializar SDL en modo video y el surface visible con sus resperctivas exepciones en caso de error. Luego carga una imagen la posiciona de forma random en la pantalla un total de cinco veces y en cada ocacion degrada los colores de la la imagen. 



Reflexión:

     La actividad anterior permite tener el conocimiento básico del funcionamiento de SDL indagando en el uso de sus funciones, la inicialización de pantalla, la captura de eventos, entre otras permitiéndonos adquirir conocimientos de forma autónoma al indagar en la documentación existente de SDL sobre los conceptos teóricos de su funcionamiento.

miércoles, 14 de octubre de 2015

Proyecto Bodega

Autor: José Medina.
Competencia: Orientación a la Calidad.
Asignatura: Introducción al desarrollo de aplicaciones empresariales.

Para la actividad principal del siguiente blog se describirá el proceso de modelado de software de una aplicación del tipo empresarial en este caso en especifico el modelado de una aplicación para la gestión de bodega en donde describiremos y realizaremos los procesos de diseño de una aplicación mediante el uso del lenguaje UML para el diseño de clases, el diseño de la base de datos y el diagrama de análisis.

Para poder entender lo realizado a continuación sera necesario conocer que es UML.

¿Que es UML?

UML es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad; está respaldado por el OMG (Object Management Group).


Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio, funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y compuestos reciclados.

TIPOS DE DIAGRAMAS EN UML

Usando UML se pueden construir numerosos tipos de diagramas. Vamos a citar algunos:
  • Diagramas de casos de uso: representan a los actores y casos de uso (procesos principales) que intervienen en un desarrollo de software.
  • Diagramas de clases: para UML una clase es una entidad, no una clase software. Un diagrama de clases UML puede ser un diagrama del dominio o representación de conceptos que intervienen en un problema, o también un diagrama de clases software. El sentido de un diagrama UML se lo da la persona que lo construye.
  • Diagramas de secuencia: suelen usarse para representar objetos software y el intercambio de mensajes entre ellos, representando la aparición de nuevos objetos de izquierda a derecha.
  • Diagramas de colaboración: suelen usarse para representar objetos o clases y la forma en que se transmiten mensajes y colaboran entre ellos para cumplir un objetivo.
  • Diagramas de estados: suelen usarse para representar cómo evoluciona un sistema (cómo va cambiando de estado) a medida que se producen determinados eventos.
  • Otros diagramas: diagramas de actividad, diagramas de paquetes, diagramas de arquitectura software, etc.

Actividad:

Se requiere desarrollar un sistema informático para una empresa que se dedica al almacenaje de mercancías de otras empresas, es decir, arrienda espacio en sus bodegas. Dicha empresa necesita que el sistema facilite la gestión de las bodegas, controlando la entrada y salida de artículos, verificando que estos movimientos los realice cada cliente, únicamente con los productos que le corresponden. La apliacion llevara a cabo las tareas de:

  • Registro y modificación de la información de los clientes con sus respectivos transportistas, proveedores y destinatarios.
  • Administración de bodegas y ubicaciones de la empresa con la posibilidad de eliminar o ingresar dependencias.
  •  Mantención de ubicaciones disponibles, no disponibles y próximas para arrendar.
  •  Manejo del ingreso de mercadería junto con el envió a destinatarios. 

-------------------------------





 Reflexión:

La actividad nos permite mostrar el proceso sistemático realizado para obtener una aplicación de calidad mediante el análisis de los múltiples procesos previos requeridos para analizar el funcionamiento que se desea tenga nuestra aplicación y así lograr programar de manera efectiva y sencilla una aplicación del tipo empresarial obteniendo un producto de calidad y bien elaborado.