viernes, 20 de noviembre de 2015

Pilas y Colas

PILAS Y COLAS

PILAS

DEFINICIÓN DE PILA: UNA PILA ES UN TIPO ESPECIAL DE LISTA ABIERTA EN LA QUE SÓLO SE PUEDEN INSERTAR Y ELIMINAR NODOS EN UNO DE LOS EXTREMOS DE LA LISTA. ESTAS OPERACIONES SE CONOCEN COMO "PUSH" Y "POP", RESPECTIVAMENTE "EMPUJAR" Y "TIRAR". ADEMÁS, LAS ESCRITURAS DE DATOS SIEMPRE SON INSERCIONES DE NODOS, Y LAS LECTURAS SIEMPRE ELIMINAN EL NODO LEÍDO. 

ESTAS CARACTERÍSTICAS IMPLICAN UN COMPORTAMIENTO DE LISTA LIFO (LAST IN FIRST OUT), EL ÚLTIMO EN ENTRAR ES EL PRIMERO EN SALIR. 

El símil del que deriva el nombre de la estructura es una pila de platos. Sólo es posible añadir platos en la parte superior de la pila, y sólo pueden tomarse del mismo extremo.


typedef struct _nodo {
 int dato; struct _nodo *siguiente; } tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *Pila; 


TIPONODO ES EL TIPO PARA DECLARAR NODOS, EVIDENTEMENTE.

PNODO ES EL TIPO PARA DECLARAR PUNTEROS A UN NODO. 

PILA ES EL TIPO PARA DECLARAR PILAS. 
ES EVIDENTE, QUE UNA PILA ES UNA LISTA ABIERTA. ASÍ QUE SIGUE SIENDO MUY IMPORTANTE QUE NUESTRO PROGRAMA NUNCA PIERDA EL VALOR DEL PUNTERO AL PRIMER ELEMENTO, IGUAL QUE PASA CON LAS LISTAS ABIERTAS. TENIENDO EN CUENTA QUE LAS INSERCIONES Y BORRADOS EN UNA PILA SE HACEN SIEMPRE EN UN EXTREMO, LO QUE CONSIDERAMOS COMO EL PRIMER ELEMENTO DE LA LISTA ES EN REALIDAD EL ÚLTIMO ELEMENTO DE LA PILA. 

LAS PILAS TIENEN UN CONJUNTO DE OPERACIONES MUY LIMITADO, SÓLO PERMITEN LAS OPERACIONES DE "PUSH" Y "POP": PUSH: AÑADIR UN ELEMENTO AL FINAL DE LA PILA. POP: LEER Y ELIMINAR UN ELEMENTO DEL FINAL DE LA PILA. 
 



COLAS


Una cola es un tipo especial de lista enalazada en la que sólo se pueden insertar nodos en uno de los extremos de la lista y sólo se pueden eliminar nodos en el otro. Además, como sucede con las pilas, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre eliminan el nodo leído. Este tipo de lista es conocido como lista FIFO (First In First Out), el primero en entrar es el primero en salir.

El símil cotidiano es una cola para comprar, por ejemplo, las entradas del cine. Los nuevos compradores sólo pueden colocarse al final de la cola, y sólo el primero de la cola puede comprar la entrada. 


typedef struct _nodo { 
 int dato; struct _nodo *siguiente;
 } tipoNodo;

typedef tipoNodo *pNodo; 
typedef tipoNodo *Cola;


Es evidente, que una cola es una lista abierta. Así que sigue siendo muy importante que nuestro programa nunca pierda el valor del puntero al primer elemento, igual que pasa con las listas abiertas. Además, debido al funcionamiento de las colas, también deberemos mantener un puntero para el último elemento de la cola, que será el punto donde insertemos nuevos nodos. Teniendo en cuenta que las lecturas y escrituras en una cola se hacen siempre en extremos distintos, lo más fácil será insertar nodos por el final, a continuación del nodo que no tiene nodo siguiente, y leerlos desde el principio, hay que recordar que leer un nodo implica eliminarlo de la cola.

Kodu

KODU



KODU

Kodu, originalmente llamado Boku, es una programacion entorno de desarrollo integrado (IDE) de Microsoft 's FUSE Labs de. Se ejecuta enXbox 360 y Microsoft Windows XP, Windows Vista, Windows 7, Windows 8 y Windows 10. Fue lanzado en el Bazar de Xbox Live el 30 de junio de 2009. [2] Una versión de Windows está disponible para el público en general para su descarga desde el portal FUSE web de Microsoft.


DESCRIPCION

KODU ES UNA PROGRAMACIÓN VISUAL HERRAMIENTA QUE SE BASA EN LAS IDEAS INICIADAS CON LOGO EN LOS AÑOS 1960 Y OTROS PROYECTOS ACTUALES COMO AGENTSHEETS, SQUEAK Y ALICE. ESTÁ DISEÑADO PARA SER ACCESIBLE POR LOS NIÑOS Y AGRADABLE POR CUALQUIER PERSONA.
KODU ESTÁ DISPONIBLE PARA DESCARGA COMO UNA XBOX 360 INDIE GAME. TAMBIÉN HAY UNA VERSIÓN PARA PC EN UNA BETA ABIERTA QUE ESTÁ DISPONIBLE PARA CUALQUIER PERSONA EN SU PÁGINA WEB.
KODU ES DIFERENTE DE LOS OTROS PROYECTOS EN VARIOS ASPECTOS CLAVE:
  • EVITA CÓDIGO A ESCRIBIR HACIENDO QUE LOS USUARIOS CONSTRUYEN LOS PROGRAMAS QUE UTILIZAN ELEMENTOS VISUALES A TRAVÉS DE UN DISPOSITIVO DE JUEGO
  • EN LUGAR DE UNA PANTALLA DE MAPA DE BITS O 2D, LOS PROGRAMAS SE EJECUTAN EN UN ENTORNO DE SIMULACIÓN 3D, SIMILAR A ALICE

KODU GAME LAB TAMBIÉN HA SIDO UTILIZADO COMO UNA HERRAMIENTA DE APRENDIZAJE DE LA EDUCACIÓN EN LAS ESCUELAS SELECCIONADAS Y CENTROS DE APRENDIZAJE.

Aqui abajo esta el link para que puedan descargar kodu

es la pagina ofiacial solo deben presionar en  "GET KODU" y se empeara a descargar la aplicacion



También les dejo EL LINK de un manual para aprender a manejar kodu

Estructuras en C

ESTRUCTURAS EN C



ESTRUCTURAS

Una estructura contiene varios datos. La forma de definir una estructura es haciendo uso de la palabra clave struct


struct  Punto;
struct  Punt2 {int x; int y; int z; };


un ejemplo aquí de estructuras


ejercicio:

realizar un programa que solicite los datos personales de una persona donde y despliegue los datos con sus respectiva dirección de memoria


1. creación del programa

PROGRAMA DATOS PERSONALES





































2. corrida de escritorio
pide los datos informativos




















3. despliega los datos pedidos con su respectivo espacio de memoria.

Correcion de la Prueba

ACTIVIDAD:trabajo en Clase 
NOMBRE: David Guanoluisa 
F.INICIO:15-11-19

OBJETIVO: Realizar La correcion de la pruba mediante los conocimientos ya acquiridos en la clase para poder ver en lo q nos equvocamos y de eso no volverlos a cometer


1.-Determinar el valor que tendrán las variables después de cada operación de asignación
int A;
A=5;
A=A+7;
A=A-10;
A=A2;
A=4
int A;
int B;
A=1;
B=2;
A=A+B;
A=3
int X;
Int y;
X=3;
Y=X;
Y=X+3;
Variable mal declarada
int A;
int B;
B=12;
A=B+1;
A=B-7;
B=A+5
A=A*A
A=25
int X;
int Y;
X=2;
Y=X+6;
X=X+1;
Y=X-5
Y=-2
int HOLA;
int NO_SE;
int OTRA;
HOLA=2;
NO_SE=12;
OTRA=HOLA+NO_SE;
NO_SE=HOLA+NO_SE;
HOLA=NO_SE+OTRA;
HOLA=28
int A;
int B;
A=0;
B=5;
B=a+b;
B=A;
Variable mal declarada
int A;
int B;
int C;
A=1;
B=A-1;
B=C-B;
Basura


2.-Definir cual seria la salida de pantalla del siguiente código de C++

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
char ced[9];
char *ptrced;
main (){
     printf ("Ingrese su num de ced");
     gets(ced);
     printf ("%s\n",ced);
     for (int i=0;i<10;i++){
         ptrced=&ced[i];
     //printf ("\n%p\n",&ptrced);
     printf ("%d\n",*ptrced);
     }
     getch ();
     }

Ingrese número de ced

è 1,2,3,4,5,6,7,8,9,0

49
50
51
52
53
54
55
56
57
48
"Realiza un casting"

    
3.-Subraye la respuesta correcta
¿Qué es una matriz?
a)      Es una zona de almacenamiento contiguo
b)      Es un tipo de dato que asigna valor de memoria de un solo tipo char
c)       Es una estructura dinámica
d)      Ninguna de las anteriores
¿Qué es un puntero?
a)      Es una matriz que hacer referencia a una región de memoria
b)      Es un valor entero que da referencia a una región de memoria
c)       Ninguna de las anteriores
d)      Es una variable independiente de memoria que sirve para apuntar a un puntero
¿Qué es una estructura dinámica?
a)      Son estructuras cuya dimensión puede crecer o disminuir durante la creación de un un programa
b)      Son estructuras que cuya dimensión puede crecer o disminuir durante el diseño del programa
c)       Son estructuras cuya dimensión puede crecer o disminuir durante la ejecución del programa
d)      Ninguna de las anteriores
¿Qué es una lista?
a)      Es un puntero de datos que nos permite agrupar elementos de una manera organizada
b)      Es un dominio de datos que nos permite agrupar elementos de una manera organizada
c)       Es una estructura de datos que nos permite agrupar elementos de una manera organizada
d)      Ninguna de las anteriores
¿Qué es una pila?
a)      Es un tipo de lista en la que solo se pueden insertar y eliminar nodos en uno de sus extremos
b)      Es un tipo de punteros en la que solo se pueden insertar y eliminar nodos en uno de los extremos
c)       Es un tipo de dato int que solo se puede insertar y eliminar nodos en uno de los extremos de la lista


4.-Realizar el siguiente ejercicio en C++ en el computador
a)      Dado por el usuario un valor de numero de tipo int que corresponda al año de nacimiento, calcular el número de la suerte que será la sumatoria del mismo , utilizar punteros
b)      Ingresando valores a una matriz de cuatro elementos de tipo flotante calcular el mayor de os elementos utilizar punteros

Librerias

TU PROPIA LIBRERÍA



SEGUNDO PASO

El fichero creado anteriormente, guárdalo con extensión .h  por ejemplo milibreria.h (importante no ejecutarlo para que no le pueda cambiar sola la extensión).


Se deberá guardar en la carpeta include del compilador. Esta carpeta se puede encontrar facilmente en la misma carpeta del compilador., accediendo a Mi PC (Equipo) y en la carpeta donde se guardan todos los programas.

TERCER PASO

Llamar a la biblioteca en el programa. Deberemos colocar en la cabecera del programa, junto a los llamamiento de otras bibliotecas:




CUARTO PASO

mandamos a correr el programa y listo eso es todo.


NET GRAFIA
http://cypascal.blogspot.com/2012/11/crea-tu-propia-biblioteca-en-cc.html

Graficos en C++

graficos en C++

ICOMO HACERLO:

Para realizar gráficos en C++ necesitamos poner el sistema en modo gráfico. Para ello debemos incluir a nuestro programa la biblioteca de gráficos GRAPHICS.H 
#include <graphics.h>

Para inicializar el modo gráfico se utiliza la función initgraph() y para detenerlo la función closegraph(). A la función initgraph se le deben pasar 3 argumentos que permitirán detectar de forma automática la placa de video y fijar el modo de video más alto posible: int driver=DETECT, 
modo; initgraph(&driver,&modo,”C:\\TC\\BGI”); 

El primer parámetro (&driver) es asignado a DETECT, por la tanto la función detectgraph() es llamada, y un dispositivo y modo gráfico (segundo parámetro) apropiados serán seleccionados. 

El tercer parámetro especifica el directorio donde los dispositivos gráficos están localizados. 
Si la función initgraph() falla, puede interceptarse un código de error e informar al usuario de dicho problema: if (graphresult()!= grOk) { cout << “Error al iniciar el modo gráfico, el programa finalizará”; getch(); exit (1); } De ahora en adelante es posible utilizar cualquier función gráfica en nuestro programa. Para finalizar el modo gráfico ejecutamos la siguiente instrucción: closegraph(); Generalmente al iniciar el modo gráfico se dispone de una resolución de 640x480. 

Es decir disponemos de 640 pixeles en el eje x y 480 pixeles en el eje y. 

Para comprobar esto, podemos hacer uso de la funciones getmaxx() y getmaxy() que devuelven el máximo píxel del eje x e y respectivamente. cout<<”Resolución: “ << getmaxx() << “x” << getmaxy(); En caso de contar con una resolución de 640x480, la línea de código anterior mostraría en pantalla lo siguiente: Resolución: 639x479 Esto se debe a que el último píxel de eje x es 639, y el último píxel del eje y es 479, ya que ambos ejes comienzan en el píxel 0.

COMO ESTABLECER COLORES:

Para seleccionar el color de fondo en modo grafico debemos utilizar la función setbkcolor() y para establecer el color de dibujo setcolor(). Para limpiar la pantalla en modo gráfico se utiliza la función cleardevice() que dejará la pantalla con el color establecido en setbkcolor().

FUNCIONES QUE PODEMOS UTILIZAR:

rectangle (int X1, int Y1, int X2, int Y2); 
Dibuja un rectángulo sin relleno en la pantalla marcado por los puntos (X1, Y1) y (X2, Y2), donde X1 es el extremo izquierdo del rectángulo, Y1 es el extremo superior, X2 es el extremo derecho e Y2 el extremo inferior del rectángulo. rectangle (100, 200, 300, 400); 

circle (int X, int Y, int radio); Dibuja un circulo (cuyo tamaño de radio está dado por la variable radio) en la pantalla con centro en los puntos (X, Y). circle (100, 100, 10);

line (int X1, int Y1, int X2, int Y2); Dibuja una línea recta iniciando en los puntos X1, Y1; concluyendo en X2, Y2. line (100, 200, 300, 400); 

ellipse (int X, int Y, int stangle, int endangle, int xradius, int yradius); Dibuja un elipse con centro en los puntos X, Y. stangle y endangle indican el ángulo inicial y final del arco elíptico a dibujar. Para ello se toma como referencia la siguiente figura: C++ Guía Práctica: Modo Gráfico. Desarrollo de Aplicaciones y Manipulación de Datos. Prof: Mileti 100 200 400 300 100 100 100 200 400 300 0 grados 90 grados 180 grados 270 grados 360 grados

ESTRUCTURA DEL PROGRAMA

#include <graphics.h>  
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
   VARIABLES PARA INICIALIZAR MODO GRAFICO
   int gdriver = DETECT, gmode, errorcode;

   INICIALIZAR MODO GRAFICO
   initgraph(&gdriver, &gmode, "");

  DETECTA SI HAY ALGUN ERROR PARA USAR MODO GRAFICO
   errorcode = graphresult();
  
   if (errorcode != grOk)
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1);
   }

   line(0, 0, 50,50 ); DIBUJA UNA LINEA

   getch();
   closegraph(); CERRAR MODO GRAFICO
   return 0;
}

FUNCIONES PARA DIBUJAR

cleardevice(void); LIMPIA LA PANTALLA

setcolor(int color); COLOR DE LINEA

setbkcolor(int color); COLOR DE FONDO (PANTALLA)

CREAR ANIMACIONES:

#include <graphics.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 
#include <math.h> 

void main(){ 
int driver=DETECT, modo, i; 
clrscr(); 
initgraph(&driver,&modo,"C:\\TC\\BGI"); 
if (graphresult()!=grOk)
cout<<"Error al iniciar modo gráfico."; 
getch(); 
 exit(1); 
setfillstyle(SOLID_FILL,BLUE); 
for(i=300;i>1;i--)
{
setcolor(RED); 
line(getmaxx()/2,getmaxy()/2,0, getmaxy()); 
line(getmaxx()/2,getmaxy()/2,getmaxx(),getmaxy()); 
 setcolor(BLACK); 
 fillellipse(getmaxx()/2,getmaxy()/2,i,i); 
 delay(50); 
 //cleardevice();
 } 
closegraph(); 

OTRO PROGRAMA:

#include <graphics.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 
#include <math.h> 

int main(void) 

/* request auto detection */ 
int gdriver = DETECT, gmode, errorcode; 
int x; 
float pi=3.1416; 
float grados,y; 
grados=(2*pi)/360; 

/* initialize graphics and local variables */ 
initgraph(&gdriver, &gmode, ""); 

/* read result of initialization */ 
errorcode = graphresult(); 
if (errorcode != grOk) /* an error occurred */ 

printf("Graphics error: %s\n", grapherrormsg(errorcode)); 
printf("Press any key to halt:"); 
getch(); 
exit(1); /* terminate with an error code */ 


for(x=0;x<360;x++){ 

y=sin(x*grados); 
y=y*100; 

putpixel(x+100,y+100,5); 


/* clean up */ 
getch(); 
closegraph(); 
return 0; 

CONCLUCIONES:

* La manera de crear gráficas sirven como un metodo de ayuda para falicitarnos hacer planos y varias figras con o sin movimiento ademas nos ayudan a mejorar nuestra precicion en el plano cartesiano. 

WEBGRAFIA:

http://www.mileti.com.ar/apuntes/modo_grafico_c.pdf
http://www.tonahtiu.com/notas/metodos/Graficos_C.htm