viernes, 28 de junio de 2013

Telematica

sábado, 15 de junio de 2013

LLENADO DE VASO CON AGUA APRENDIENDO EN VENSIM PLE

1.- Usar la herramienta "Box Variable"  para crear una variable de nivel con el titulo 
"AGUA EN EL VASO". ver figura 1.




Figura 1



2.- Usar la herramienta "Rate"para crear una variable de flujo con el título "INGRESO
DE AGUA". ver figura 2.





Figura 2



3.- Usar la herramienta "Variable" para crear una variable auxiliar con el título
"VOLUMEN VACIO". ver figura 3.






Figura 3




4.- Usar la herramienta "Variable" para crear una variable auxiliar con el título "CAPACIDAD DEL VASO". ver figura 4. 






Figura 4



5.- Usar la herramienta "Arrow" para crear las relaciones causales de c/u de las variables. ver figura 5. 




Figura 5





6.- Ingresar las ecuaciones de modelo, hacer clic en la herramienta "Equations" , el
diagrama se verá como en la figura 6. Seleccionados.




Figura 6


7.- Hacer clic sobre la variable de flujo "INGRESOS DE AGUA". y se mostrara la ventana para 
editar la variables: Figura 7 


Figura 7


En esta ventana hacer clic sobre la variable VOLUMEN VACIO que se encuentra en el área de
variables causales. Esta variable aparecerá en el área de ecuación y sumarle 10 Litros (valor
ejemplo) y quedara de la siguiente forma: Figura 8





Figura 8


Luego clic en el botón "Check Sintax", y en la etiqueta Error: se mostrara el mensaje "Equation
OK", que indica que la ecuación no posee errores. Figura 9


Figura 9

Luego hacer clic en el botón "OK"



8.- Hacer clic sobre la variable constante "CAPACIDAD DEL VASO". he ingresar el valor de 350
litros. Figura 10




Figura 11

10.- Hacer clic sobre la variable nivel "AGUA EN EL VASO". he ingresar el valor inicial de 0. y la
ecuación AGUA EN EL VASO + INGRESO DE AGUA. Figura 12




Figura 12







11. Hacer Clic en el botón "Simulate"






sábado, 25 de mayo de 2013

Codigo de fifo en Linux mediante el g++


#include<iostream>
#include<stdlib.h>

using namespace std;

struct nodo
{
     char proceso;
     int tllegada;
     int tejecucion;
     int tfinal;
     int tretorno;
     int tespera;
     int tmuerto;
     struct  nodo *sgte;
};

struct cola
{
   struct  nodo *delante;
   struct  nodo *atras;
};

void inicializa(struct cola&);
void encola(struct cola&,struct nodo);
void vercola(struct cola);

int main()
{
   system("/usr/bin/clear");
    int  opc,n;
 
    struct nodo cte;
    struct  cola q;
    inicializa(q);
 
   do
   {

      cout<<"*** MENU ***\n";
      cout<<"1. Encolar\n";
      cout<<"2. Visualizar cola\n";
      cout<<"3. Salir";
      cout<<"\n  INGRESE OPCION: ";cin>>opc;

      switch(opc)

      {
      case 1:
                cout<<"ingrese numero de paquetes de la cola:";cin>>n;
                cte.tfinal=0;
                cte.tmuerto=0;
                for(int i=1;i<=n;i++)
                  {
                   cout<<"Ingrese proceso "<<i<<":"; cin>>cte.proceso;
                   cout<<"Tiempo de llegada:";cin>>cte.tllegada;
                   cout<<"Tiempo de ejecucion:";cin>>cte.tejecucion;
               
                   cte.tfinal=(cte.tejecucion)+(cte.tfinal);
                   cte.tretorno=cte.tfinal-cte.tllegada;
                   cte.tespera=cte.tretorno-cte.tejecucion;
                   cte.tmuerto=cte.tespera+cte.tmuerto;
                   
                   encola(q,cte);

                  }
                   system("/usr/bin/clear");

                 break;
        case 2:
                 system("/usr/bin/clear");
                 cout<<"\nLOS ELEMENTOS DE LA COLA:\n";
                 cout<<"proc.\tt.lleg.\tt.ejec.\tt.fin.\tt.ret.\tt.esp."<<endl;
                 vercola(q);
                cout<<"El tiempo muerto es:"<<cte.tmuerto<<endl;
                cout<<endl;
                 break;

      }


   }while(opc!=3);

}

void inicializa(struct cola&q)
{
  q.delante=NULL;
  q.atras=NULL;
}

void vercola(struct cola q)
{
 struct nodo*p;
 p=q.delante;
 while(p!=NULL)
   {
    cout<<p->proceso<<"\t"<<p->tllegada<<"\t"<<p->tejecucion<<"\t"<<p->tfinal<<"\t"<<p->tretorno<<"\t"<<p->tespera<<endl;
    p=p->sgte;
   }
   cout<<endl;

}

void encola(struct cola &q,struct nodo cte)
{
 struct nodo*p;
 p=new(struct nodo);
 *p=cte;//asignacion de estructuras
 p->sgte=NULL;
 if(q.delante==NULL)
    q.delante=p;
 else
   (q.atras)->sgte=p;
 q.atras=p;
}

miércoles, 24 de abril de 2013

Hilo en linux (Es como si si te estuviera saliendo en doble hilo)

#include <stdio.h>
#include <unistd.h>
using namespace std;
 int  main()
 {
 pid_t pid;
 pid=fork();
 if(pid==-1){
printf("error");
}
if(pid) { printf("padre %d",pid);
}else{
printf("hijito de mama");
}
}

viernes, 5 de abril de 2013

PROCEDIMIENTO EXPERIMENTAL:


Parte 1. Codificar y analizar el siguiente programa en el sistema operativo Windows
#include<conio.h>
#include<dos.h>
#include<iostream.h>
#include<fstream.h>
main()
{

clrscr();
char caracter;
fstream imp;
cout<<"\n Programa para imprimir un carácter utilizando puerto paralelo";
cout<<"\n Ingresar el caracter";
cin>>caracter;
imp.open("LPT1",1,1);
if(!imp) {cout<<"\n Impresora desconectada";}
else{
cout<<"\n Enviando el carácter por el puerto";
imp<<caracter;
imp << '\r' // Retorno de carro (ENTER)

<< '\f' ; // Expulsa la última hoja de la impresora
imp.close();
cout<<"\n impresora cerrada";
}
getch();
}
Cual es la línea que abre el Puerto de datos

Parte 2. Verifica usando el debug del código anterior

Usando el debug del DOS podemos verificar la línea de puertos de entrada y de
salida con las interrupciones :
D040:08l8
Escriba y arme en octetos los puertos encontrados


Parte 3. Codificar y analizar el siguiente programa en el sistema operativo windows
#include <stdio.h>
#include <dos.h>
#include<conio.h>
int main()
{
clrscr();
unsigned int _far *puntero_a_direccion;

int i;
puntero_a_direccion=(unsigned int _far *)0x00000408;
for (i=0; i<3; i++)
{
if (*puntero_a_direccion == 0)
printf("No se encontro puerto asignado a LPT%d \n", i+1);
else
printf("La direccion asignada a LPT%d es 0x%Xh\n\n", i+1,
puntero_a_direccion);
puntero_a_direccion++;
}
getch();
return 0;
}
Identifique ud la dirección asignada al puerto de salida


Parte 3. Modificar el código anterior donde busque con los puertos y muestre el tiempo
que los encontró usando la siguiente función.
Void espera (int segundos)
{
clock_t fin;
fin=clock()*segundos*CLK_TCK;
while (clock()<fin) { }
}







domingo, 9 de diciembre de 2012

COMO LLAMAR DATOS A UN COMBO


Tenemos la tabla Alumnos con los datos siguientes:



















Vamos a jalar los datos de los campos IdAlumno y Nombre en un combobox:
PASO 1:  Realizamos un método llamado  getConexion() utilizado en clase para la conexión, no olvidar cambiar el server, nombre de base de datos,usuario y contraseña.
public SqlConnection getConexion
        {
            try
            {
                string Server = "DASISTEMAS2\\SQLEXPRESS";
                string User = "sa";
                string Password = "10109091";
                SqlConnection con = new SqlConnection("SERVER=" + Server + ";Initial Catalog=SisMatricula;USER ID=" + User + ";PWD=" + Password + ";");
                return con;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }

        }

PASO 2:  Realizamos un método donde se llamen los datos para el combobox, solo necesitamos los datos de los campos IdAlumno y Nombre, utilizamos en comando sql "select IdAlumno,Nombre from dbo.Alumno", no se olviden de cambiar este query :

        public DataSet TraerAlumnos()
        {
            SqlConnection con = new SqlConnection();
            DataSet ds = new DataSet();
            try
            {
                con = getConexion();
                con.Open();
                SqlCommand cmd = new SqlCommand("select IdAlumno,Nombre from dbo.Alumno", con);
                //cmd.CommandType = CommandType.StoredProcedure; //CASO PROCEDIMIENTOS ALMACENADOS
                cmd.CommandType = CommandType.Text;
                cmd.ExecuteNonQuery();
                SqlDataAdapter ad = new SqlDataAdapter(cmd);
                ad.Fill(ds);
                con.Close();

                return ds;
            }
            catch (Exception e)
            {
                throw new Exception("Error tabla " + e.Message);
            }
        }

PASO 3:  Llamamos los datos del DataSet al Combobox:
private void frmCombo_Load(object sender, EventArgs e)
        {
            comboBox1.DataSource = TraerAlumnos().Tables[0];
        }
Para que llamen los datos es necesario configurar el combobox con los campos llamados, para eso cambiamos las propiedades ValueMember (campo IdAlumno) y Display Member(Nombre)  del combobox:





EJECUCIÓN:




COMO TOMAMOS EL VALOR SELECCIONADO DEL COMBOBOX:
Al pulsar el botón Mostrar código elegido:
comboBox1.SelectedValue.ToString()  Es el valor IdAlumno elegido (valor que se guardará en la otra Tabla), lo mostramos en una ventana de mensajes:
private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(comboBox1.SelectedValue.ToString());

        }





miércoles, 28 de noviembre de 2012

qwerty en C++


#include<conio.h>
#include <stdlib.h>
#include<stdio.h>
#include<string.h>
#include <graphics.h>
#include<iostream.h>
#include"ventanas.h"
#include"esctexto.h"
int final[20], N;
int vec3[20],numero;
void Flecha1(int x, int y){
    int i, j;
    int bitmap[5][9]={
    15,15,15,15,1,15,15,15,15,
    15,15,15,1,15,1,15,15,15,
    15,15,1,15,15,15,1,15,15,
    15,1,15,15,15,15,15,1,15,
    1,15,15,15,15,15,15,15,1
    };
    for(i=0;i<5;i++)
      for(j=0;j<9;j++)
       putpixel(y+j,x+i,bitmap[i][j]);
}
void Flecha2(int x, int y){
    int i, j;
    int bitmap[9][5]={
    1,15,15,15,15,
    15,1,15,15,15,
    15,15,1,15,15,
    15,15,15,1,15,
    15,15,15,15,1,
    15,15,15,1,15,
    15,15,1,15,15,
    15,1,15,15,15,
    1,15,15,15,15
    };
    for(i=0;i<9;i++)
      for(j=0;j<5;j++)
       putpixel(y+j,x+i,bitmap[i][j]);
}
void EjeXY(){
  int i, j;
  char num[3];
  setfillstyle(8,15);
  bar(0,0,639,479);
  VentanaBarraTitulo("Gr fico de SSTF",4,4,632,472,7,1,15);
  Contenedor(7,32,630,470);
  VentanaTexto(11,36,628,468);
  Comentario("Para salir de la ventana digite cualquier tecla...!",150,454,0);
  setcolor(1);
  Flecha1(47,66);
  Flecha2(416,599);
  line(70,440,70,50);
  line(50,420,600,420);
  settextstyle(8,1,2);
  outtextxy(15,160,"Procesos");
  settextstyle(8,0,2);
  outtextxy(250,435,"tiempo");
  j=400;
  settextstyle(2,0,2);
  for(i=1;i<=18;i++){
      itoa(i,num,10);
      outtextxy(55,j,num);
      j-=20;
  }
  j=70;
  settextstyle(2,0,2);
  for(i=numero;i<=34+numero;i++){          //------
      itoa(i,num,10);
      outtextxy(j,425,num);
      j+=15;
  }
}
void puntos(){
 //    n=5;
    int i,j,indice[10];
    for(i=1;i<=N;i++)
    {  for(j=1;j<=N;j++)
      { if(final[i]==vec3[j])
    {  indice[i]=j;
    }
      }

    }
    //printf("hola %d",N);
    setcolor(RED);
    setlinestyle(0,0xffff,3);
    line(70,400,70+(final[1]-numero)*15,400);
    for(i=2;i<=N;i++){
      line(70+(final[i-1]-numero)*15,420-indice[i]*20,70+(final[i]-numero)*15,420-indice[i]*20);
    }
  setlinestyle(0,0xffff,1);
}

int menor(float vec[],int n)
{  int c,i; c=1;
float menor;
      menor=vec[1];
    for(i=2;i<=n;i++)
    {
      if(vec[i]<menor)
      {  c=i;
      }

    }
return(c);

}
void intro()
{
  int mat[20][10];
  int i,j=1,n,x, posy, posx;
  char n_[6],i_[5],proceso[10];

  VentanaBarraTitulo("Algoritmo de HRN",49,49,589,429,7,1,15);
  Contenedor(54,79,584,424);
  Comentario("Digite el Numero de Procesos",110,90,7);
  BarraTexto(400,90,424);
  EscribeTextoBarra(n_,400,90,424);
  n=atoi(n_);
  N=n;
    for(i=1;i<=n;i++)
    {
      mat[i][j]=i;
    }
  Comentario("Tiempos Iniciales",70,110,7);
   j=2;
   posy=140;

  for(i=1;i<=n;i++)
  {
    itoa(i,i_,10);
    strcpy(proceso,"Proceso ");
    strcat(proceso,i_);
    Comentario(proceso,70,posy,0);
    BarraTexto(150,posy,190);
    EscribeTextoBarra(n_,150,posy,190);
    mat[i][j]=atoi(n_);
    if(posy<420)posy+=20;
  }
  j++;
  Comentario("Tiempos  Requiridos",290,110,7);
  posy=140;
  for(i=1;i<=n;i++)
  {
    itoa(i,i_,10);
    strcpy(proceso,"Proceso");
    strcat(proceso,i_);
    Comentario(proceso,290,posy,0);
    BarraTexto(370,posy,410);
    EscribeTextoBarra(n_,370,posy,410);
    mat[i][j]=atoi(n_);
    if(posy<420)posy+=20;
  }
    /*for(i=1;i<=n;i++)
    {
   for(j=1;j<=3;j++)
   {  gotoxy(j*j+4,i+2);
     printf("%d",mat[i][j]);

   }
    } */
  float vec[20];
  int f,k,m,c=1,pivote,nuevomat[20][10];
  final[1]=mat[1][2]+mat[1][3];
  pivote=final[1];
    m=n;
  mat[1][4]=pivote;
 for(f=1;f<=n;f++)
 {  for(j=1;j<=3;j++)
    {

    nuevomat[f][j]=mat[f][j];

    }
 }


 for(f=c;f<=m-1;f++)
 {  for(j=1;j<=3;j++)
    {

    nuevomat[f][j]=nuevomat[f+1][j];
      }
  }
  m--;    //------------------



 int w=2;
 //-----------------------------------------
for(k=1;k<=n-1;k++)
{
     for(i=1;i<=m;i++)
     {
       vec[i]=( ( pivote-nuevomat[i][2] ) + nuevomat[i][3] ) / nuevomat[i][3];

     }
      c=menor(vec,m);
      x=nuevomat[c][1];
      final[w]=pivote+nuevomat[c][3];
      pivote=0;
      pivote=final[w];  // printf("\t \tfinal %d \n",pivote);
      mat[x][4]=final[w];
      w++;
    for(f=c;f<=m-1;f++)
    {    for(j=1;j<=3;j++)
     {
       nuevomat[f][j]=nuevomat[f+1][j];
     }
      }
      m=m-1;
}


    /*for(i=1;i<=n;i++)
    {
      printf(" \n %d \n",final[i]);
    } */
     for(i=1;i<=n;i++)
     {
         vec3[i]=mat[i][4];
     }
     numero=mat[1][2];
      //   puntos(final,vec3);

      getch();
      VentanaBarraTitulo("",400,250,600,430,3,3,3);
      Contenedor(405,255,595,425);
      posy=260;
    for(i=1;i<=n;i++)
    {  posx=423;
   for(j=1;j<=4;j++)
   {
     itoa(mat[i][j],n_,10);
     Comentario(n_,posx,posy,0);
     posx+=32;

   }
   posy+=10;
    }
    Comentario("Digite una tecla para salir de la ventana..!",200,410,0);
    getch();
    getch();
}
void main(){

    int a=0,b=0;
    getch();
    initgraph(&a,&b,"c:\\tc\\bgi");
    setfillstyle(8,15);
    bar(0,0,639,479);
    intro();
    EjeXY();
    puntos();
    getch();
    closegraph();
}