sábado, 26 de mayo de 2018

Planeación y aplicación de entrevista


Actividad 2: Planeación y aplicación de entrevista
Entrevista:
Entrevistador: Buenas tardes, gracias por brindarme el tiempo para contestar unas breves preguntas sobre el tema de información cartográfica.
Entrevistado: De nada, siempre es un gusto encontrar personas que estén interesadas en esos temas:
Entrevistador: Si, para empezar ¿podría indicarme su nombre?
Entrevistado: Claro, soy el Lic. Mario Pacheco, enlace con las diferentes instancias gubernamentales.
Entrevistador: La entrevista básicamente es para constatar si ¿existe alguna herramienta digital para compartir información geográfica?, y si es así, ¿porque no se utiliza?
Entrevistado: Si, mira, es interesante el tema que mencionas ya que actualmente el INEGI cuenta con diversas herramientas que permiten eso que comentas, lo que sucede es que actualmente no hay interés por parte de las diferentes instancias en concentrar y regularizar para que pueda ser publicada, nosotros contamos con varios métodos de acceso a esa información, ya sea por Servicios WMS, visores web, entre otros.
Entrevistador: ¿Cuál cree que es el problema de la falta de interés?
Entrevistado: Realmente nos hemos topado con diversos factores, entre todos ellos podemos destacar la falta de capacitación encontrada en las instancias, y al momento de ofrecer estas, la mayoría no le da la importancia que debería, y es por eso que no hemos podido solucionar el problema.
Entrevistador: ¿No cree que es una falta de difusión?
Entrevistado: Realmente en la página del INEGI cuenta con todos estos servicios, creo que más que nada es una falta de interés al público en general para consultarlas.

Visita para la Bitácora de Investigación


Actividad: Visita al Instituto Nacional de Estadística, Geografía e Informática (INEGI)
Investigador: Luis Alejandro Canto Mena
Objetivo: Verificar la existencia de una plataforma digital para depositar información Cartográfica Ambiental
Proyecto de Investigación: Servidor Cartográfico del Estado de Quintana Roo, así como la falta de integración de datos geoespaciales generados por las diferentes instancias no gubernamentales así como dependencias gubernamentales en temas medio-ambientales
Lugar: Oficinas Centrales del INEGI en el Estado de Quintana Roo
Técnica aplicada: Diario de Campo, Cuaderno de notas, Estudio Social e Informe
Persona que interviene: Lic. Mario Pacheco
Información recabada: En la actualidad el INEGI cuenta con varias plataformas para la integración de información Geográfica (SNIEG, SIMBA) Por lo que de determina que el problema es la falta de difusión de las plataformas antes señaladas.
Se puede observar un dominio en el Tema, así como disposición a formar técnicas que permitan mitigar la brecha de acceso a la información.

domingo, 20 de mayo de 2018

Marco Teórico



Antecedentes del tema:
En la actualidad el instituto encargado de hacer publica toda la información cartográfica y SIG disponibles es el INSTITUTO NACIONAL DE ESTADISTICA Y GEOGRAFÍA, el cual tiene clasificada la información en diversos rubros, el rubro relevante para el presente es el tema Ambiental, y a fin de complementar e identificar la situación actual con toda la información cartográfica generada por las diferentes instancias en el Estado de Quintana Roo se menciona lo siguiente:
Somos un organismo público autónomo responsable de normar y coordinar el Sistema Nacional de Información Estadística y Geográfica, así como de captar y difundir información de México en cuanto al territorio, los recursos, la población y economía, que permita dar conocer las características de nuestro país y ayudar a la toma de decisiones.

Institución con historia
El 25 de enero de 1983 se creó, por decreto presidencial, el Instituto Nacional de Estadística, Geografía e Informática (INEGI), que integró en su estructura a:
·        La Dirección General de Estadística, en funciones desde 1882, cuando pertenecía a la Secretaría de Fomento, Colonización, Industria y Comercio.
·        La Dirección General de Geografía, establecida en 1968 y que estaba adscrita a la Secretaría de la Presidencia.
·        La Dirección General de Política Informática.
·        La Dirección General de Integración y Análisis de la Información.
Con su creación, el INEGI modernizó la valiosa tradición que tenía nuestro país en materia de captación, procesamiento y difusión de información acerca del territorio, la población y la economía. Conjuntó en una sola institución la responsabilidad de generar la información estadística y geográfica.

Desde 1985, el Instituto se desconcentró para ubicar su sede en la ciudad de Aguascalientes, Aguascalientes.



Actualmente el INEGI cuenta con diversas plataformas en las que se puede hacer pública toda la información relevante en temas medio-ambientales.



sábado, 19 de mayo de 2018

Unidad 2, Sesión 5, Actividad 1

Capturas de pantalla de las fuentes de información Primarías y Secundarias

Citas bibliográficas formato APA

Fuentes Primarias.-
Buscador.- Google.com
                  https://www.google.com.mx/
Tema.- Sistemas de Información Geográfica
Cita APA.-
INSTITUTO NACIONAL DE ESTADÍSTICA Y GEOGRAFÍA. (2014). SISTEMAS DE INFORMACIÓN GEOGRAFICOS. MAYO 18, 2018, de INEGI Sitio web: http://www.inegi.org.mx/inegi/SPC/doc/internet/sistemainformaciongeografica.pdf

Fuente Secundaria. -
Buscador. - redalyc.org
                    http://www.redalyc.org
Tema. - Sistemas de Información Geográfica.
Cita APA. -

Instituto de Investigación de Recursos Biológicos Alexander Von Humboldt ; Geoenseñanza (2006). MAYO 18, 2018, de redalyc Sitio Web:
http://www.redalyc.org/articulo.oa?id=36012424010

Capturas de pantalla






domingo, 13 de mayo de 2018

Investigación a Realizar.

Aquí les dejo el trabajo de la Actividad 2 de la sesión 4, la cual consiste en generar una organización para hacer una investigación.


Tema: Servidor Cartográfico del Estado de Quintana Roo, así como la falta de integración de datos geoespaciales generados por las diferentes instancias no gubernamentales así como dependencias gubernamentales en temas medio-ambientales.
Preguntas para Delimitar:
¿Qué quiero investigar? Comprobar si existe algún servidor Cartográfico que proporcione información relacionada con la información ambiental
¿Con relación a qué? Carencia de información del Medio Ambiente
¿A quiénes voy a investigar? Diferentes instancias de Gobierno así como instancias no Gubernamentales para obtener las razones por las que aún no se ha integrado la información a pro de la población del Estado de Quintana Roo
¿Qué características deben tener a quienes voy a investigar? Deben manejar información cartográfica. Y ser los responsables de difundirla
¿Dónde voy a hacer la investigación? En el Estado de Quintana Roo

Delimitar el tema:
Se pretende realizar una investigación para obtener el motivo y por ende proponer una solución al mismo, se deberá tomar en cuenta las instancias que manejen información medio-ambiental, y la razón por la que no se integra en una plataforma.
La investigación se pretende que sea de propósito aplicado, es decir encontrar las razones y a su vez proponer los métodos para solucionarlas.
Nivel de Profundidad: Explicativa: Identificar los elementos que no permiten una integración adecuada de la información cartográfica.
Naturaleza de los Datos y la Información: Cuantitativa: Datos Directos, encuestas para recabar la información de las diferentes instancias de Gobierno del Estado de Quintana Roo.
Medios de obtención de Datos: Campo.
Mayor o Menos manipulación de variables: No experimental
Tipos de Inferencia: Método Inductivo
Periodo Temporal en que se realiza: Transversal
Tiempo en que se efectúa: Diacrónicas



Objetivos Generales: Verificar si existe una plataforma que integre toda la información medio-ambiental del Estado de Quintana Roo.

Objetivos específicos: Obtener las razones por la que aún no se cuenta con un Servidor Cartográfico en el Estado de Quintana Roo, así como la falta de integración de datos geoespaciales generados por las diferentes dependencias gubernamentales en temas medio-ambientales y a su vez hacer las diferentes propuestas para solucionarlos.

Plan de trabajo:

  1. Realizar una investigación de los diferentes repositorios de información ambiental disponibles para el público en general enfocado al Estado de Quintana Roo
  2. Verificar la integridad de los Servidores así como comparar la información contenida para comprobar si existen coincidencias de los mismos, verificar los metadatos e identificar la información que no cumpla con los criterios para ser válida (Contar con metadatos, información actualizada, información correctamente georreferenciada al WGS 86 Z 16N (EPSG:32616)
  3. Realizar una investigación de las Instancias Estatales que generen información Ambiental y que no cuenten con plataformas para publicarla. (Entrevistas, Encuestas, Observación, etc.)
  4. Identificar los motivos por los que no se hace las publicaciones
  5. Hacer una conclusión y hacerla llegar a los que participaron en la investigación



Crono grama (del 13 de mayo de 2018 al 16 de junio de 2018)

Actividad
Semana 1
Semana 2
Semana 3
Semana 4
Semana 5
Plan de Trabajo 1





Plan de Trabajo 2





Plan de Trabajo 3





Plan de Trabajo 4





Plan de Trabajo 5






Saludos.

sábado, 12 de mayo de 2018

Tipos de Investigación

Buenas noches, aquí les comparto el Mapa Mental que elaboré.



Así como también (aun que no lo pida los productos para la actividad) les dejo un pequeño esquema sobre los pasos que siguió Sherlock Holmespara llegar a las conclusiones que expuso.


Gracias.

viernes, 4 de mayo de 2018

Diapositivas de la campaña Publicitaria

Buenas tardes, aquí les dejo las diapositivas de la campaña publicitaria que realice. espero sea de su agrado:
Diapositiva 1
Diapositiva 2

Diapositiva 3

Diapositiva 4

Diapositiva 5





Espero sea de su agrado. Gracias

Introducción a la Campaña Publicitaria

Una de las actividades que nos dejaron  es la de crear una campaña publicitaria, y para poder realizarlo debemos tener armado lo que es un texto con los argumentos necesarios para fundamentar la campaña, dichos argumentos los acabo de terminar y se los comparto.

Saludos

jueves, 3 de mayo de 2018

Mapa Conceptual

Buenas tardes, este post es solo para comentar que nos dejaron como una actividad realizar un Mapa Conceptual y así mismo publicarlo en nuestro Blog.

Es por ese motivo que les comparto el Mapa Conceptual que he realizado
Saludos

sábado, 28 de abril de 2018

Subrayado de las ideas mas relevantes en el texto “Ser estudiante en ambientes virtuales de aprendizaje”

Buenas noches compañeros, en cumplimiento a la actividad les comparto una captura de pantalla en donde se puede apreciar el documento y a su vez los comentarios que se colocaron:



Así mismo quisiera comentar que estoy de acuerdo con el método de enseñanza que proponen, tanto así que estoy aplicándolo en varios aspectos de mi vida.

Es genial que exista la posibilidad de aprender y estudiar a las personas que quieran superarse utilizando las tecnologías de la información.

Siempre he pensado que si tenemos la capacidad de enfocar nuestras ideas al cumplimiento de nuestros objetivos y añadimos la constancia en la formula podemos alcanzar el éxito.

Saludos a todos.

martes, 24 de abril de 2018

NUBE DE PALABRAS

Dentro de las actividades que nos piden en la UNAD  se encuentra la elaboración de una nube de palabras, esta consiste en hacer una imagen con palabras "aparentemente" desordenadas, lo que resulta llamativo a la vista, pero las palabras son descripciones sustantivas de lo que es la UNAD y del modelo educativo. Es interesante como una imagen que aparentemente no dice nada si se le presta la debida atención es muy clara en lo que se pretende proyectar.

Aquí dejo la nube de palabras que elaboré. 

Saludos.

viernes, 20 de abril de 2018

EDICIÓN DEL PERFIL DE LA UNAD

Aprovecho para comentar que acabo de actualizar mi perfil de la UNAD a fin de dar cumplimiento a una actividad, espero tener la capacidad para lograr culminar esta nueva etapa que inicia, les dejo la captura de pantalla.

También he tratado de leer todos los comentarios del foro de presentación pero hay muchos comentarios, e invite a algunos compañeros al azar a visitar mi Blog, veremos que sucede al respecto.




Saludos.

jueves, 19 de abril de 2018

UNAD


Buenas tardes compañeros, mi nombre es Alejandro Canto Mena, a partir de ahora me referiré a mi persona como "Alejandro", quisiera comentar un par de cosas antes de continuar con esta actividad.

  1. La continuación de esta Blog es derivado a que es parte de un proceso de admisión de la Universidad en línea a la que estoy ingresando, esta es conocida como la UNAD, por lo que aquí publicaré las actividades que se me asignen, (Aunque debo confesar que me dan ganas de publicar más cosas (actividades del trabajo, novedades tecnológicas, temas de interés, etc)
  2. Esta Blog existe desde el 2009, que fue cuando tenía el tiempo para hacer publica varios proyectos que tenía, por eso esta no es la primera entrada, debo añadir que elimine varias entradas ya que consideré que no son apropiadas para el giro que toma este Blog
Actualmente estoy como aspirante a la carrera de Tecnologías Ambientales, esta carrera me intereso ya que actualmente trabajo en la Secretaría de Ecología y Medio Ambiente en el área de Informática como desarrollador, y tengo el interés de mejorar los procesos a fin de aumentar la eficiencia y la calidad de los entregables.

Elegí la UNAD por que tiene la modalidad en línea, de esta forma puedo dedicarme a mi trabajo y a superarme académicamente. 

Esperando tener éxito en todo lo que nos propongamos, me despido cordialmente.

Saludos

viernes, 4 de diciembre de 2009

Filosofos !

Hola, esta entrada es para hablarles de un trabajo que tenemos en clase! (UNID), la verdad no es nada del otro mundo pero cabe mencionar que para ayudar a personas y que se basen a como realizar su programa, por eso pondré el mio para que se "basen", bueno cabe mencionar que yo lo hice en el DS, y tengo que admitir que me gusto mucho, pero sabemos que podemos sacar provecho de ese programa ya que como fue escrito en C se puede adaptar fácilmente a una PC.

Primero empecemos por el de DS, ese fue un reto el codigo fuente es este:

#include
#include "all_gfx.h"

int TIEMPO_ESPERA =0;
int salida = 4; // 0 = tiempos, 1 = estatus , 2 = comen, 3 = pausa
int imprimir = 1;
int salx = 8;
int saly = 6;
struct filosofo{
int tiempo;
int espera;
int estatus; //0 = asignar tiempo, 1 = quiero comer , 2 = comiendo, 3 = termine de comer
};
struct filosofo filo[5];


void salida_debug(){
switch (salida){
int x =0;

case 0: //tiempos
for (x=0;x<=750;x++){
PA_OutputText(0,x,0," ");
}
for(x=0;x<=4;x++){
PA_OutputText(0,8,x+6,"Tiempo falta: %d ",filo[x].espera );
}
saly = 6;
imprimir = 1;
break;
case 1: //estatus
imprimir = 1;
saly = 6;
for (x=0;x<=750;x++){
PA_OutputText(0,x,0," ");
}
for(x=0;x<=4;x++){
PA_OutputText(0,8,x+6,"Estatus: Filo[%d] %d ",x,filo[x].estatus );
}
PA_OutputText(0,8,12,"Estatus del Semaforo");
PA_OutputText(0,8,14,"0 = Asig. de Tiempo");
PA_OutputText(0,8,15,"1 = Quiero comer");
PA_OutputText(0,8,16,"2 = Comiendo");
PA_OutputText(0,8,17,"3 = Soltare ");


break;
case 2: //comen
salx = 8;
if (saly > 19){
saly = 6;
for (x=0;x<=750;x++){
PA_OutputText(0,x,0," ");
}
}
imprimir = 0;
break;
case 3: //pausa
break;
}
}



void iniciar_sprites(){
PA_EasyBgLoad(1, 0, mesa);
PA_EasyBgLoad(0, 1, menu);
PA_LoadSpritePal(1,0,(void*)mole_Pal);
PA_LoadSpritePal(1,1,(void*)conte_Pal);
PA_LoadSpritePal(1,2,(void*)tene_Pal);
PA_LoadSpritePal(0,1,(void*)flecha_Pal);



PA_CreateSprite(1,0,(void*)mole_Sprite,OBJ_SIZE_64X64,1,0,96, 0); // mole 0
PA_CreateSprite(1,1,(void*)mole_Sprite,OBJ_SIZE_64X64,1,0,183, 43); // mole 1
PA_CreateSprite(1,2,(void*)mole_Sprite,OBJ_SIZE_64X64,1,0,185, 123); // mole 2
PA_CreateSprite(1,3,(void*)mole_Sprite,OBJ_SIZE_64X64,1,0,7, 123); // mole 3
PA_CreateSprite(1,4,(void*)mole_Sprite,OBJ_SIZE_64X64,1,0,7, 30); // mole 4

PA_CreateSprite(1,5,(void*)conte_Sprite,OBJ_SIZE_64X64,1,1,300, 300); // conte 0
PA_CreateSprite(1,6,(void*)conte_Sprite,OBJ_SIZE_64X64,1,1,300, 300); // conte 1
PA_CreateSprite(1,7,(void*)conte_Sprite,OBJ_SIZE_64X64,1,1,300, 300); // conte 2
PA_CreateSprite(1,8,(void*)conte_Sprite,OBJ_SIZE_64X64,1,1,300, 300); // conte 3
PA_CreateSprite(1,9,(void*)conte_Sprite,OBJ_SIZE_64X64,1,1,300, 300); // conte 4


PA_CreateSprite(1,11,(void*)tene_Sprite,OBJ_SIZE_32X32,1,2,75, 45); //tene1

PA_CreateSprite(1,12,(void*)tene_Sprite,OBJ_SIZE_32X32,1,2,150, 45); //tene1
PA_SetSpriteRotEnable(1,12,0); //rotacion
PA_SetRotsetNoZoom(1,0,430);
PA_CreateSprite(1,13,(void*)tene_Sprite,OBJ_SIZE_32X32,1,2,190, 100); //tene1
PA_SetSpriteRotEnable(1,13,1); //rotacion
PA_SetRotsetNoZoom(1,1,360);

PA_CreateSprite(1,14,(void*)tene_Sprite,OBJ_SIZE_32X32,1,2,110, 130); //tene1

PA_CreateSprite(1,15,(void*)tene_Sprite,OBJ_SIZE_32X32,1,2,30, 90); //tene1
PA_SetSpriteRotEnable(1,15,3); //rotacion
PA_SetRotsetNoZoom(1,3,90);
PA_CreateSprite(0,1,(void*)flecha_Sprite,OBJ_SIZE_32X32,1,1,20, 33);

}



void poner_blanca (){
int x = 0;
for (x=(-31);x<=0;x++){
PA_WaitForVBL();
PA_SetBrightness(1,x);
PA_SetBrightness(0,x);
}
}

void poner_negra (){
int x = 0;
for (x=0;x<=31;x++){
PA_WaitForVBL();
PA_SetBrightness(1,0 -x);
PA_SetBrightness(0,0 -x);
}
}
int main(int argc, char ** argv)
{
PA_Init();
PA_InitVBL();
 PA_UpdateRTC();
//declaracion de procesos filosofos
//id,time,esperar RND();,estatus


//inicializar los filosofos con numeros aleatoreos
PA_InitRand();
//cargar sprites
//iniciar carga de






// Initialise the text system on the top screen
PA_InitText(0,0);
PA_SetTextCol(0,0,0,0);
PA_SetBrightness(0,-31);
PA_SetBrightness(1,-31);
PA_EasyBgLoad(1, 0, intro);
PA_EasyBgLoad(0, 1, intro0);
poner_blanca();


PA_WaitForVBL();
while(1){
PA_WaitForVBL();
if (Stylus.Newpress){
break;
}

}
poner_negra();

iniciar_sprites();
PA_OutputText(0,8,6,"Iniciando Filosofos..");
iniciar_filosofos();
PA_OutputText(0,8,7,"Asig. tiempos RND().");
asignar_tiempo_espera();
PA_OutputText(0,8,8,"Iniciar Algoritmo...");
poner_blanca();
int x =0;
while (1){
salida_debug();
if (Stylus.Newpress)
{
//PA_SetSpriteXY(screen, sprite, Stylus.X, Stylus.Y);
if (((Stylus.X>41)&&(Stylus.X<105 amp="" stylus.y="">4)&&(Stylus.Y<26 div="">
salida = 0;
}
if (((Stylus.X>106)&&(Stylus.X<153 amp="" stylus.y="">4)&&(Stylus.Y<26 div="">
salida = 1;
}
if (((Stylus.X>154)&&(Stylus.X<226 amp="" stylus.y="">4)&&(Stylus.Y<26 div="">
salida = 2;
}
}
if ((Stylus.X > 51)&&(Stylus.X<>41)&&(Stylus.Y<165 div="">
//pausa !

while(1){
PA_WaitForVBL();
if (!Stylus.Held){
break;
}
}
}
if (Stylus.Held){
if ( PA_SpriteTouched(1)){

if ((Stylus.Y > 30)&&(Stylus.Y<>
PA_SetSpriteXY (0,1,20,Stylus.Y - 8);
TIEMPO_ESPERA = (Stylus.Y / 16);
if ( TIEMPO_ESPERA < tiempo_espera =" 0;
}

}
}

for (x=0;x<= TIEMPO_ESPERA ;x++){
PA_WaitForVBL();
}

//PA_OutputText(0,0,y,"Tiempo: %d",PA_Rand());
//y++;
for (x=0;x<=4;x++){
filo[x].espera--;
if (filo[x].espera <= 0){
evaluar_Acciones(x);
}
}
}

return 0;
} // End of main()

void iniciar_filosofos(){
int x=0;
for (x=0;x<=4;x++){
filo[x].estatus = 0;
filo[x].tiempo = 0;
filo[x].espera = 0;
}
}

void asignar_tiempo_espera(){
int x;
for (x=0;x<=4;x++){
if (filo[x].estatus == 0){
filo[x].espera = (PA_Rand() / PA_Rand());
if (filo[x].espera > 100 ) {
filo[x].espera = 60;
}
}
}
}

void evaluar_Acciones(int id){
asignar_tiempo_filo(id);
switch(filo[id].estatus){
case 0:
filo[id].estatus = 1;
break;//asignar tiempo
case 1: //1= quiero comer
switch(id){ //evaluar si puede comer
case 0:
if ((filo[1].estatus == 1 )&&(filo[4].estatus == 1 )){
//si COME !!!
//PA_OutputText(0,0,y,"COME %d...",id);
come_sprite(id);
filo[1].estatus = 0;
filo[4].estatus = 0;
filo[id].estatus = 2;
}else{
//no come !! :(
}
break;
case 1:
if ((filo[0].estatus == 1 )&&(filo[2].estatus == 1 )){
//si COME !!!
come_sprite(id);
// PA_OutputText(0,0,y,"COME %d...",id);
filo[0].estatus = 0;
filo[2].estatus = 0;
filo[id].estatus = 2;
}else{
//no come !! :(
}
break;
case 2:
if ((filo[1].estatus == 1 )&&(filo[3].estatus == 1 )){
//si COME !!!
come_sprite(id);
//PA_OutputText(0,0,y,"COME %d...",id);
filo[1].estatus = 0;
filo[3].estatus = 0;
filo[id].estatus = 2;
}else{
//no come !! :(
}
break;
case 3:
if ((filo[4].estatus == 1 )&&(filo[2].estatus == 1 )){
//si COME !!!
come_sprite(id);
//PA_OutputText(0,0,y,"COME %d...",id);
filo[2].estatus = 0;
filo[4].estatus = 0;
filo[id].estatus = 2;
}else{
//no come !! :(
}
break;
case 4:
if ((filo[3].estatus == 1 )&&(filo[0].estatus == 1 )){
//si COME !!!
come_sprite(id);
//PA_OutputText(0,0,y,"COME %d...",id);
filo[3].estatus = 0;
filo[0].estatus = 0;
filo[id].estatus = 2;
}else{
//no come !! :(
}
break;
}

break;//quiero comer
case 2:
filo[id].estatus = 3;
break;//comiendo
case 3:
termine_sprite(id);
filo[id].estatus = 0;
break;//termine de comer
}

}

void asignar_tiempo_filo(int id){
//PA_InitRand();
filo[id].espera = (PA_Rand() / PA_Rand() ) ;
if (filo[id].espera > 100 ) {
filo[id].espera = 60;
}
}

void come_sprite(int id){
int x = 0;
int y = 0;
switch (id){
case 0:
x = 96;
y = 0;
break;

case 1:
x = 183;
y = 43;
break;

case 2:
x = 185;
y = 123;
break;

case 3:
x = 7;
y = 123;
break;

case 4:
x = 7;
y = 30;
break;
}
PA_SetSpriteXY(1,id,300,300);
PA_SetSpriteXY(1,id+5,x,y);
//mover tenedores correspondientes
int ten1 = 0;
int ten2 =0;
int x1 = 0;
int y1 = 0;
int x2 = 0;
int y2 = 0;
switch (id){
case 0:
ten1 = 1;
ten2 = 2;
x1 = 75;
y1 = 25;
x2 = 170;
y2 = 25;
break;
case 1:
ten1 = 2;
ten2 = 3;
x1 = 170;
y1 = 25;
x2 = 210;
y2 = 100;
break;
case 2:
ten1 = 3;
ten2 = 4;
x1 = 210;
y1 = 100;
x2 = 110;
y2 = 150;
break;
case 3:
ten1 = 4;
ten2 = 5;
x1 = 110;
y1 = 150;
x2 = 10;
y2 = 90;
break;
case 4:
ten1 = 1;
ten2 = 5;
x1 = 75;
y1 = 25;
x2 = 10;
y2 = 90;
break;

}
PA_SetSpriteXY(1,ten1 + 10,x1,y1);
PA_SetSpriteXY(1,ten2 + 10,x2,y2);
if (imprimir ==0){
PA_OutputText(0,salx,saly,"COMI FILO[%d]....." , id );
salx++;
saly++;
}
}
void termine_sprite(int id){
int x = 0;
int y = 0;
switch (id){
case 0:
x = 96;
y = 0;
break;

case 1:
x = 183;
y = 43;
break;

case 2:
x = 185;
y = 123;
break;

case 3:
x = 7;
y = 123;
break;

case 4:
x = 7;
y = 30;
break;
}
PA_SetSpriteXY(1,id + 5,300,300);
PA_SetSpriteXY(1,id,x,y);
int ten1 = 0;
int ten2 =0;
int x1 = 0;
int y1 = 0;
int x2 = 0;
int y2 = 0;
switch (id){
case 0:
ten1 = 1;
ten2 = 2;
x1 = 75;
y1 = 45;
x2 = 150;
y2 = 45;
break;
case 1:
ten1 = 2;
ten2 = 3;
x1 = 150;
y1 = 45;
x2 = 190;
y2 = 100;
break;
case 2:
ten1 = 3;
ten2 = 4;
x1 = 190;
y1 = 100;
x2 = 110;
y2 = 130;
break;
case 3:
ten1 = 4;
ten2 = 5;
x1 = 110;
y1 = 130;
x2 = 30;
y2 = 90;
break;
case 4:
ten1 = 1;
ten2 = 5;
x1 = 75;
y1 = 45;
x2 = 30;
y2 = 90;
break;

}
PA_SetSpriteXY(1,ten1 + 10,x1,y1);
PA_SetSpriteXY(1,ten2 + 10,x2,y2);
if (imprimir ==0){
PA_OutputText(0,salx,saly,"Solte FILO[%d]....." , id );
salx++;
saly++;
}
}

como pueden ver es un poco extenso, esto es por que tiene integrado la interfas grafica del DS, por la animacion de los filosofos !

pero analizando el código podríamos concluir .... DEBE DE TENER UNA FORMA DE ANALIZIS DE LOS FILÓSOFOS, por lo tanto si analizamos el código podríamos ser capaces de extraer el motor que utiliza para los procesos de los filósofos, para fines mas prácticos y para ayudarlos a ahorrar tiempo aquí les entrego el código listo, ahí solo esta el motor de los filósofos, por lo tanto de esta manera seria mas fácil su entendimiento.

MOTOR DE LOS FILÓSOFOS:

#include //librerias para manejar el E/S
#include //libreria para imprimir
#include

int TIEMPO_ESPERA =0; //espera de los filosofos
int salida = 4; // 0 = tiempos, 1 = estatus , 2 = comen, 3 = pausa // estatus de ellos cada numero representa algo

struct filosofo{ //estructura de filosofos
int tiempo; //tiempo correspondiente
int espera; // cuanto tiempo tiene que esperar
int estatus; //0 = asignar tiempo, 1 = quiero comer , 2 = comiendo, 3 = termine de comer
};
struct filosofo filo[5]; //declaro 5 filosofos


int main(int argc, char ** argv)
{

iniciar_filosofos(); //inicialiso a los filosofos llamando a esta funcion
printf("Asig. tiempos RND().\n"); //imprimo este texto
asignar_tiempo_espera(); //aqui le asigno el tiempo aleatorio y el estatus a los filosofos int x =0; //declaro X
while (1){ //ciclo infinito por que se supone que nunca terminara
for (x=0;x<=4;x++){ //verifico los 5 filosofos (del 0 al 4 )
//la x representa cada filosofo por eso esta en un for
filo[x].espera--; //a cada uno le resto 1 en el tiempo que debe de esparar
if (filo[x].espera <= 0){ //en caso de que espera sea 0, ocea que ya debe de evaluar lo que debe hacer
evaluar_Acciones(x); //evaluo al filosofo
}
}
}

return 0;
} // termina el main

void iniciar_filosofos(){ //inicializa los filosofos
int x=0;
for (x=0;x<=4;x++){ //por cada filosofo se le asigna a 0 todo, es por eso que esta en un for, y x representa cada filosofo
filo[x].estatus = 0;
filo[x].tiempo = 0;
filo[x].espera = 0;
}
}

void asignar_tiempo_espera(){ //esta funcion asigna un tiempo aleatorio a cada filosofo
int x;
for (x=0;x<=4;x++){
if (filo[x].estatus == 0){ //en caso de que su estatus sea 0, verifica en la declaracion de filosofos el estatus
filo[x].espera = (rand() / rand()); //se le asigna un tiempo aleatorio

}
}
}


void evaluar_Acciones(int id){ //esta funcion evalua lo que debe hacer cada filosofo cuando tu espera termino, depende del estatus en que se encuentre es lo que hara es por eso que esta en un case !
asignar_tiempo_filo(id); //se le asigna un nuevo tiempo, el id es el id del filosofo
switch(filo[id].estatus){
case 0: //en caso de que sea asignar tiempo se le pone en 1 el estatus, por que ya se le asigno antes
filo[id].estatus = 1;
break;//asignar tiempo
case 1: //1= quiero comer
switch(id){ //evaluar si puede comer
case 0: si es el filosofo 0 entonces verifica al 1 y al 4, debes de hacer un diagrama para entenderlo mejor
if ((filo[1].estatus == 1 )&&(filo[4].estatus == 1 )){
//si COME !!!
printf("COME %d...\n",id); //imprime el texto COME con su ID

filo[1].estatus = 0;
filo[4].estatus = 0;
filo[id].estatus = 2;
}else{
//no come !! :(
}
break;
case 1:
if ((filo[0].estatus == 1 )&&(filo[2].estatus == 1 )){
//si COME !!!

printf("COME %d...\n",id);
filo[0].estatus = 0;
filo[2].estatus = 0;
filo[id].estatus = 2;
}else{
//no come !! :(
}
break;
case 2:
if ((filo[1].estatus == 1 )&&(filo[3].estatus == 1 )){
//si COME !!!
printf("COME %d...\n",id);
filo[1].estatus = 0;
filo[3].estatus = 0;
filo[id].estatus = 2;
}else{
//no come !! :(
}
break;
case 3:
if ((filo[4].estatus == 1 )&&(filo[2].estatus == 1 )){
//si COME !!!
printf("COME %d...\n",id);
filo[2].estatus = 0;
filo[4].estatus = 0;
filo[id].estatus = 2;
}else{
//no come !! :(
}
break;
case 4:
if ((filo[3].estatus == 1 )&&(filo[0].estatus == 1 )){
//si COME !!!
printf("COME %d...\n",id);
filo[3].estatus = 0;
filo[0].estatus = 0;
filo[id].estatus = 2;
}else{
//no come !! :(
}
break;
}

break;//quiero comer
case 2:
filo[id].estatus = 3;
break;//comiendo
case 3:
printf("Termine %d...\n",id);
filo[id].estatus = 0;
break;//termine de comer
}

}

void asignar_tiempo_filo(int id){
filo[id].espera = (rand() / rand() ) ;
}


WAAAA ! podemos ver que es mucho mas pequeño que el primero, esto es por que ahora ya no esta la interfaz gráfica del DS, cabe mencionar que el codigo creo que tiene un error logico, mas bien creo que le falta inicializar el RAND, pero eso es fácil de hacer, ahora bien aun falta algo...

Este código solamente es el motor, por lo tanto se requiere modificar y personalizar para que podamos entregar algo mas original :P, pero bueno SUERTE EN SU AVENTURA DE DESARROLLO !

Aqui les dejo los archivos:
Filosofos solo motor : DESCARGAR
Filosofos con interfaz DS : DESCARGAR

la próxima entrada sera de como codificarlo ! para adaptarlo como quieras ! :P

Agradecer no cuesta nada ! :P


SALUDOS !